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

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 (92) hide show
  1. package/README.md +3 -3
  2. package/dist/ansi-panes.css +75 -8
  3. package/dist/arcade/ornament.d.ts +3 -0
  4. package/dist/arcade/ornament.js +8 -0
  5. package/dist/arcade-cabinet.css +1084 -0
  6. package/dist/art-deco.css +75 -8
  7. package/dist/atomic-lounge.css +79 -8
  8. package/dist/authoring.d.ts +8 -8
  9. package/dist/azulejo-tile.css +79 -8
  10. package/dist/blueprint.css +75 -8
  11. package/dist/brutalist-concrete.css +80 -9
  12. package/dist/bytes.json +97 -62
  13. package/dist/candy-clay.css +81 -8
  14. package/dist/catalog.d.ts +294 -0
  15. package/dist/catalog.js +301 -0
  16. package/dist/character.d.ts +1 -1
  17. package/dist/character.js +6 -0
  18. package/dist/chrome.js +13 -3
  19. package/dist/compile-css.js +27 -7
  20. package/dist/dispatch.css +729 -0
  21. package/dist/diwali-lights.css +79 -8
  22. package/dist/documents.d.ts +115 -7
  23. package/dist/documents.js +10 -2
  24. package/dist/foundations.d.ts +8 -0
  25. package/dist/foundations.js +10 -0
  26. package/dist/frame-styles.d.ts +3 -0
  27. package/dist/frame-styles.js +6 -0
  28. package/dist/freighter.css +141 -18
  29. package/dist/glass-ui.css +75 -8
  30. package/dist/holi-colours.css +79 -8
  31. package/dist/ledger.css +564 -0
  32. package/dist/living-forest.css +81 -8
  33. package/dist/mainframe.css +762 -0
  34. package/dist/manifests.d.ts +144 -144
  35. package/dist/material-light.css +79 -8
  36. package/dist/neon-night-market.css +79 -8
  37. package/dist/ocean-depths.css +81 -8
  38. package/dist/orbital-hud.css +141 -18
  39. package/dist/organic-paint-launch.d.ts +9 -0
  40. package/dist/organic-paint-launch.js +121 -46
  41. package/dist/organic-paint.d.ts +1 -1
  42. package/dist/organic-settings.d.ts +109 -25
  43. package/dist/organic-settings.js +49 -0
  44. package/dist/papel-picado.css +79 -8
  45. package/dist/phosphor-terminal.css +79 -8
  46. package/dist/prism-glass.css +75 -8
  47. package/dist/recipes.d.ts +162 -0
  48. package/dist/recipes.js +164 -0
  49. package/dist/resolve.d.ts +18 -2
  50. package/dist/retro-os.css +75 -8
  51. package/dist/riso-zine.css +75 -8
  52. package/dist/save-point.css +946 -0
  53. package/dist/savepoint/ornament.d.ts +3 -0
  54. package/dist/savepoint/ornament.js +8 -0
  55. package/dist/scrapbook.css +75 -8
  56. package/dist/signal.css +561 -0
  57. package/dist/skins/arcade-cabinet.d.ts +68 -0
  58. package/dist/skins/arcade-cabinet.js +68 -0
  59. package/dist/skins/dispatch.d.ts +57 -0
  60. package/dist/skins/dispatch.js +57 -0
  61. package/dist/skins/ledger.d.ts +57 -0
  62. package/dist/skins/ledger.js +57 -0
  63. package/dist/skins/mainframe.d.ts +57 -0
  64. package/dist/skins/mainframe.js +57 -0
  65. package/dist/skins/save-point.d.ts +68 -0
  66. package/dist/skins/save-point.js +68 -0
  67. package/dist/skins/signal.d.ts +57 -0
  68. package/dist/skins/signal.js +57 -0
  69. package/dist/skins/sunset-drive.d.ts +68 -0
  70. package/dist/skins/sunset-drive.js +68 -0
  71. package/dist/solar-sail.css +75 -8
  72. package/dist/starters-launch.d.ts +24 -0
  73. package/dist/starters-launch.js +343 -0
  74. package/dist/studio-hardware.css +79 -8
  75. package/dist/sumi-ink.css +75 -8
  76. package/dist/sunset/ornament.d.ts +3 -0
  77. package/dist/sunset/ornament.js +8 -0
  78. package/dist/sunset-drive.css +1022 -0
  79. package/dist/swiss-poster.css +145 -18
  80. package/dist/tactile-atelier.css +81 -8
  81. package/dist/theme-document.schema.json +34 -6
  82. package/dist/theme-fix.d.ts +11 -0
  83. package/dist/theme-fix.js +32 -0
  84. package/dist/theme-fixes.d.ts +2 -0
  85. package/dist/theme-fixes.js +1 -0
  86. package/dist/theme-schema.d.ts +6 -6
  87. package/dist/theme-schema.js +2 -0
  88. package/dist/tokyo-transit.css +79 -8
  89. package/dist/winamp-signal.css +79 -8
  90. package/dist/y2k-titanium.css +147 -18
  91. package/dist/yule-knit.css +75 -8
  92. package/package.json +50 -3
@@ -27,6 +27,11 @@
27
27
  --dixy-font-title-sm-family:
28
28
  "VT323", "Share Tech Mono", ui-monospace, monospace;
29
29
  --dixy-skin-edge: #7fae88;
30
+ --dixy-skin-field-edge: color-mix(
31
+ in oklab,
32
+ var(--dixy-color-base-9) 50%,
33
+ var(--dixy-color-base-8)
34
+ );
30
35
  --dixy-organic-density: 55;
31
36
  --dixy-organic-cornerDensity: 70;
32
37
  --dixy-organic-canopyDepth: 30;
@@ -120,7 +125,6 @@
120
125
  --dixy-organic-b: #1f9e44;
121
126
  --dixy-organic-c: #ffb000;
122
127
  --dixy-organic-d: #7dffa0;
123
- --dixy-skin-selected: var(--dixy-skin-finish);
124
128
  --dixy-color-text-primary: color-mix(
125
129
  in srgb,
126
130
  var(--dixy-color-base-12) 44.99999999999999%,
@@ -138,6 +142,7 @@
138
142
  #040b06
139
143
  );
140
144
  }
145
+
141
146
  .dixy-theme[data-dixy-skin="dixy/phosphor-terminal"][data-relief="2"] {
142
147
  --dixy-skin-shadow:
143
148
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -163,11 +168,9 @@
163
168
  }
164
169
  }
165
170
  @layer dixy.components {
166
- .dixy-theme[data-dixy-skin="dixy/phosphor-terminal"] {
171
+ .dixy-theme[data-dixy-skin="dixy/phosphor-terminal"]:not(.dixy-portal-scope) {
167
172
  position: relative;
168
173
  isolation: isolate;
169
- }
170
- .dixy-theme[data-dixy-skin="dixy/phosphor-terminal"]:not(.dixy-portal-scope) {
171
174
  background-color: var(--dixy-skin-ground);
172
175
  background-image: var(--dixy-skin-canvas);
173
176
  }
@@ -273,6 +276,30 @@
273
276
  ):not([data-variant="soft"]) {
274
277
  background-color: var(--dixy-skin-surface);
275
278
  }
279
+ :is(
280
+ .dixy-dialog-popup,
281
+ .dixy-alert-dialog-popup,
282
+ .dixy-drawer-popup,
283
+ .dixy-popover-popup,
284
+ .dixy-preview-card-popup,
285
+ .dixy-tooltip-popup,
286
+ .dixy-select-popup,
287
+ .dixy-combobox-popup,
288
+ .dixy-autocomplete-popup,
289
+ .dixy-menu-popup,
290
+ .dixy-context-menu-popup,
291
+ .dixy-navigation-menu-popup
292
+ )[data-dixy-skin="dixy/phosphor-terminal"]:not(
293
+ [data-dixy-material-override]
294
+ ):not(:where([data-dixy-material-override]) *):not(
295
+ [data-variant="solid"]
296
+ ):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
  [data-dixy-material-override]
306
333
  ):not(:where([data-dixy-material-override]) *) {
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,45 @@
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/phosphor-terminal"]:not(
378
+ [data-dixy-material-override]
379
+ ):not(
380
+ :where([data-dixy-material-override]) *
381
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
382
+ background-image: var(--dixy-skin-paint);
383
+ }
318
384
  :is(.dixy-button)[data-dixy-skin="dixy/phosphor-terminal"]:not(
319
385
  [data-dixy-material-override]
320
386
  ):not(:where([data-dixy-material-override]) *):is(
@@ -345,14 +411,19 @@
345
411
  border: 1px solid var(--dixy-skin-edge);
346
412
  box-shadow: var(--dixy-skin-inset);
347
413
  }
414
+ /* 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
415
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/phosphor-terminal"]:not(
349
416
  [data-dixy-material-override]
350
417
  ):not(:where([data-dixy-material-override]) *) {
351
- background-image: var(--dixy-skin-finish);
352
418
  box-shadow: var(--dixy-skin-control-relief);
353
419
  border: 1px solid var(--dixy-skin-edge);
354
420
  }
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). */
421
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/phosphor-terminal"]:not(
422
+ [data-dixy-material-override]
423
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
424
+ background-image: none;
425
+ }
426
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
356
427
  .dixy-theme[data-dixy-skin="dixy/phosphor-terminal"]
357
428
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
358
429
  [data-dixy-material-override]
@@ -367,7 +438,7 @@
367
438
  [data-variant="solid"]
368
439
  )[data-pressed]:not([data-disabled]) {
369
440
  background-color: var(--dixy-color-background-surface-raised);
370
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
441
+ background-image: none;
371
442
  box-shadow: var(--dixy-skin-control-relief);
372
443
  border-color: var(--dixy-skin-edge);
373
444
  color: var(--dixy-color-text-primary);
@@ -33,6 +33,11 @@
33
33
  --dixy-font-title-sm-family:
34
34
  "Manrope Variable", "Manrope", ui-sans-serif, system-ui, sans-serif;
35
35
  --dixy-skin-edge: rgb(255 255 255 / 0.75);
36
+ --dixy-skin-field-edge: color-mix(
37
+ in oklab,
38
+ var(--dixy-color-base-9) 50%,
39
+ var(--dixy-color-base-8)
40
+ );
36
41
 
37
42
  --dixy-skin-surface: color-mix(
38
43
  in srgb,
@@ -127,7 +132,6 @@
127
132
  --dixy-font-title-sm-letter-spacing: -0.03em;
128
133
  }
129
134
  .dixy-theme[data-dixy-skin="dixy/prism-glass"][data-appearance="dark"] {
130
- --dixy-skin-selected: var(--dixy-skin-finish);
131
135
  --dixy-skin-edge: rgb(255 255 255 / 0.16);
132
136
  --dixy-skin-canvas:
133
137
  radial-gradient(
@@ -156,6 +160,7 @@
156
160
  #1c1b33a6
157
161
  );
158
162
  }
163
+
159
164
  .dixy-theme[data-dixy-skin="dixy/prism-glass"][data-relief="2"] {
160
165
  --dixy-skin-shadow:
161
166
  var(--dixy-skin-depth-shadow, var(--dixy-skin-authored-shadow)),
@@ -181,11 +186,9 @@
181
186
  }
182
187
  }
183
188
  @layer dixy.components {
184
- .dixy-theme[data-dixy-skin="dixy/prism-glass"] {
189
+ .dixy-theme[data-dixy-skin="dixy/prism-glass"]:not(.dixy-portal-scope) {
185
190
  position: relative;
186
191
  isolation: isolate;
187
- }
188
- .dixy-theme[data-dixy-skin="dixy/prism-glass"]:not(.dixy-portal-scope) {
189
192
  background-color: var(--dixy-skin-ground);
190
193
  background-image: var(--dixy-skin-canvas);
191
194
  }
@@ -289,6 +292,28 @@
289
292
  ):not([data-variant="solid"]):not([data-variant="soft"]) {
290
293
  background-color: var(--dixy-skin-surface);
291
294
  }
295
+ :is(
296
+ .dixy-dialog-popup,
297
+ .dixy-alert-dialog-popup,
298
+ .dixy-drawer-popup,
299
+ .dixy-popover-popup,
300
+ .dixy-preview-card-popup,
301
+ .dixy-tooltip-popup,
302
+ .dixy-select-popup,
303
+ .dixy-combobox-popup,
304
+ .dixy-autocomplete-popup,
305
+ .dixy-menu-popup,
306
+ .dixy-context-menu-popup,
307
+ .dixy-navigation-menu-popup
308
+ )[data-dixy-skin="dixy/prism-glass"]:not([data-dixy-material-override]):not(
309
+ :where([data-dixy-material-override]) *
310
+ ):not([data-variant="solid"]):not([data-variant="soft"]) {
311
+ background-color: color-mix(
312
+ in srgb,
313
+ var(--dixy-color-background-surface-raised) 72%,
314
+ var(--dixy-skin-surface)
315
+ );
316
+ }
292
317
  :is(
293
318
  .dixy-input,
294
319
  .dixy-textarea,
@@ -321,7 +346,7 @@
321
346
  :where([data-dixy-material-override]) *
322
347
  ) {
323
348
  border-width: var(--dixy-input-border-width);
324
- border-color: var(--dixy-skin-edge);
349
+ border-color: var(--dixy-skin-field-edge);
325
350
  background-image: var(--dixy-skin-paint);
326
351
  background-color: var(--dixy-color-background-canvas);
327
352
  background-size:
@@ -331,6 +356,43 @@
331
356
  100% 100%;
332
357
  box-shadow: var(--dixy-skin-inset);
333
358
  }
359
+ /* materials.css styles [data-dixy-visual] surfaces at 0,5,0. Match the
360
+ skin's paint to that so its image and grain size always land together;
361
+ otherwise the material image is tiled at the grain size (stripes). */
362
+ :is(
363
+ .dixy-card,
364
+ .dixy-box,
365
+ .dixy-dialog-popup,
366
+ .dixy-alert-dialog-popup,
367
+ .dixy-drawer-popup,
368
+ .dixy-popover-popup,
369
+ .dixy-preview-card-popup,
370
+ .dixy-tooltip-popup,
371
+ .dixy-select-popup,
372
+ .dixy-combobox-popup,
373
+ .dixy-autocomplete-popup,
374
+ .dixy-menu-popup,
375
+ .dixy-context-menu-popup,
376
+ .dixy-navigation-menu-popup,
377
+ .dixy-toast-root,
378
+ .dixy-alert,
379
+ .dixy-list-box,
380
+ .dixy-calendar,
381
+ .dixy-range-calendar,
382
+ .dixy-input,
383
+ .dixy-textarea,
384
+ .dixy-native-select,
385
+ .dixy-select-trigger,
386
+ .dixy-input-group,
387
+ .dixy-combobox-input-group,
388
+ .dixy-autocomplete-input-group,
389
+ .dixy-number-field-group,
390
+ .dixy-otp-field-input
391
+ )[data-dixy-skin="dixy/prism-glass"]:not([data-dixy-material-override]):not(
392
+ :where([data-dixy-material-override]) *
393
+ )[data-dixy-visual][data-material]:not([data-disabled]) {
394
+ background-image: var(--dixy-skin-paint);
395
+ }
334
396
  :is(.dixy-button)[data-dixy-skin="dixy/prism-glass"]:not(
335
397
  [data-dixy-material-override]
336
398
  ):not(:where([data-dixy-material-override]) *):is(
@@ -361,14 +423,19 @@
361
423
  border: 1px solid var(--dixy-skin-edge);
362
424
  box-shadow: var(--dixy-skin-inset);
363
425
  }
426
+ /* 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). */
364
427
  :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/prism-glass"]:not(
365
428
  [data-dixy-material-override]
366
429
  ):not(:where([data-dixy-material-override]) *) {
367
- background-image: var(--dixy-skin-finish);
368
430
  box-shadow: var(--dixy-skin-control-relief);
369
431
  border: 1px solid var(--dixy-skin-edge);
370
432
  }
371
- /* 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). */
433
+ :is(.dixy-tabs-indicator)[data-dixy-skin="dixy/prism-glass"]:not(
434
+ [data-dixy-material-override]
435
+ ):not(:where([data-dixy-material-override]) *):not([data-variant="line"]) {
436
+ background-image: none;
437
+ }
438
+ /* Toggle groups read like tabs: a sunken track, the selected toggle a raised, flat thumb. */
372
439
  .dixy-theme[data-dixy-skin="dixy/prism-glass"]
373
440
  .dixy-toggle-group:is([data-attached], [data-segmented]):not(
374
441
  [data-dixy-material-override]
@@ -383,7 +450,7 @@
383
450
  [data-variant="solid"]
384
451
  )[data-pressed]:not([data-disabled]) {
385
452
  background-color: var(--dixy-color-background-surface-raised);
386
- background-image: var(--dixy-skin-selected, var(--dixy-skin-thumb));
453
+ background-image: none;
387
454
  box-shadow: var(--dixy-skin-control-relief);
388
455
  border-color: var(--dixy-skin-edge);
389
456
  color: var(--dixy-color-text-primary);
package/dist/recipes.d.ts CHANGED
@@ -107,6 +107,8 @@ export declare const materialRecipes: {
107
107
  readonly darkEdge: "#4a3150";
108
108
  readonly 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)";
109
109
  readonly 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)";
110
+ readonly 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)";
111
+ readonly darkInset: "inset 3px 3px 6px rgb(0 0 0 / .35), inset -3px -3px 6px rgb(255 255 255 / .05)";
110
112
  readonly 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%)";
111
113
  readonly tint: readonly ["#fff6f2", "#36233c", "#ffe9ef"];
112
114
  readonly label: "Candy clay";
@@ -451,6 +453,121 @@ export declare const materialRecipes: {
451
453
  readonly thumb: "radial-gradient(circle at 35% 25%,#ffffff,#ffffffb3 40%,#cfe2ff80 70%,#ffffff4d)";
452
454
  readonly tintActions: false;
453
455
  };
456
+ readonly "sunset-neon": {
457
+ readonly label: "Sunset neon";
458
+ readonly baseMaterial: "glossy";
459
+ readonly finish: "linear-gradient(180deg,#ffffff14,transparent 35%,#ff4fa30d)";
460
+ readonly edge: "#f2b8d6";
461
+ readonly darkEdge: "#6e3570";
462
+ readonly shadow: "inset 0 1px 0 #ffffff40,0 14px 30px -16px #ff4fa366";
463
+ readonly darkShadow: "0 0 0 1px #ff4fa31a,0 18px 36px -18px #ff4fa366";
464
+ readonly inset: "inset 0 2px 4px #1b0b3022";
465
+ readonly darkInset: "inset 0 2px 5px #00000066";
466
+ readonly canvas: "linear-gradient(180deg,#fff3f8 0%,#ffe2ee 55%,#ffd9c2 100%)";
467
+ readonly darkCanvas: "radial-gradient(70% 45% at 50% 100%,#ff7a5938,transparent 70%),linear-gradient(180deg,#1b0b30 0%,#26103f 60%,#38134c 100%)";
468
+ readonly tint: readonly ["#fff8fb", "#24103a", "#ffe6f0"];
469
+ readonly grain: "radial-gradient(circle at 1px 1px,#ffffff06 .5px,transparent .8px)";
470
+ readonly thumb: "linear-gradient(180deg,#ffd56b,#ff7a59 50%,#ff4fa3)";
471
+ readonly tintActions: false;
472
+ };
473
+ readonly "ledger-ruled": {
474
+ readonly label: "Ledger ruled";
475
+ readonly baseMaterial: "matte";
476
+ readonly finish: "linear-gradient(transparent,transparent)";
477
+ readonly edge: "#d3d6db";
478
+ readonly darkEdge: "#2c3138";
479
+ readonly shadow: "0 1px 2px #1018280f";
480
+ readonly darkShadow: "0 1px 2px #00000066";
481
+ readonly inset: "inset 0 1px 1px #1018280d";
482
+ readonly darkInset: "inset 0 1px 1px #00000059";
483
+ readonly canvas: "repeating-linear-gradient(90deg,transparent 0 119px,#0b6e4f0d 119px 120px)";
484
+ readonly darkCanvas: "repeating-linear-gradient(90deg,transparent 0 119px,#3ecf8e12 119px 120px)";
485
+ readonly tint: readonly ["#fbfbf9", "#111317", "#eef0ec"];
486
+ readonly grain: "linear-gradient(transparent,transparent)";
487
+ readonly thumb: "linear-gradient(#ffffff,#ffffff)";
488
+ readonly tintActions: false;
489
+ };
490
+ readonly "layer-grid": {
491
+ readonly label: "Layer grid";
492
+ readonly baseMaterial: "matte";
493
+ readonly finish: "linear-gradient(transparent,transparent)";
494
+ readonly edge: "#c6c6c6";
495
+ readonly darkEdge: "#393939";
496
+ readonly shadow: "0 0 #0000";
497
+ readonly inset: "0 0 #0000";
498
+ readonly canvas: "linear-gradient(#f4f4f4,#f4f4f4)";
499
+ readonly darkCanvas: "linear-gradient(#161616,#161616)";
500
+ readonly tint: readonly ["#ffffff", "#262626", "#e0e0e0"];
501
+ readonly grain: "linear-gradient(transparent,transparent)";
502
+ readonly thumb: "linear-gradient(#ffffff,#ffffff)";
503
+ readonly tintActions: false;
504
+ };
505
+ readonly "mono-ink": {
506
+ readonly label: "Mono ink";
507
+ readonly baseMaterial: "matte";
508
+ readonly finish: "linear-gradient(transparent,transparent)";
509
+ readonly edge: "#e2e2e2";
510
+ readonly darkEdge: "#2a2a2a";
511
+ readonly shadow: "0 1px 2px #0000000f,0 10px 24px -14px #00000029";
512
+ readonly darkShadow: "0 0 0 1px #ffffff0d";
513
+ readonly inset: "0 0 #0000";
514
+ readonly canvas: "linear-gradient(#ffffff,#ffffff)";
515
+ readonly darkCanvas: "linear-gradient(#000000,#000000)";
516
+ readonly tint: readonly ["#ffffff", "#000000", "#f3f3f3"];
517
+ readonly grain: "linear-gradient(transparent,transparent)";
518
+ readonly thumb: "linear-gradient(#ffffff,#ffffff)";
519
+ readonly tintActions: false;
520
+ readonly monoAccent: true;
521
+ };
522
+ readonly "signal-contrast": {
523
+ readonly label: "Signal contrast";
524
+ readonly baseMaterial: "matte";
525
+ readonly finish: "linear-gradient(transparent,transparent)";
526
+ readonly edge: "#000000";
527
+ readonly darkEdge: "#ffffff";
528
+ readonly shadow: "0 0 #0000";
529
+ readonly inset: "0 0 #0000";
530
+ readonly canvas: "linear-gradient(#ffffff,#ffffff)";
531
+ readonly darkCanvas: "linear-gradient(#000000,#000000)";
532
+ readonly tint: readonly ["#ffffff", "#000000", "#ffffff"];
533
+ readonly grain: "linear-gradient(transparent,transparent)";
534
+ readonly thumb: "linear-gradient(#ffffff,#ffffff)";
535
+ readonly tintActions: false;
536
+ readonly controlHeights: readonly ["44px", "48px", "56px"];
537
+ readonly deepSolid: true;
538
+ };
539
+ readonly "menu-window": {
540
+ readonly label: "Menu window";
541
+ readonly baseMaterial: "matte";
542
+ readonly finish: "linear-gradient(180deg,#ffffff14,transparent 55%)";
543
+ readonly edge: "#3a4aa8";
544
+ readonly darkEdge: "#e9edff";
545
+ readonly shadow: "0 4px 0 #0b165833";
546
+ readonly darkShadow: "inset 0 0 0 2px #0b1658,0 6px 0 #00000059";
547
+ readonly inset: "inset 0 2px 0 #0b165822";
548
+ readonly darkInset: "inset 0 2px 0 #00000040";
549
+ readonly canvas: "radial-gradient(90% 70% at 50% 120%,#c9d3ff,transparent 70%)";
550
+ readonly darkCanvas: "radial-gradient(90% 70% at 50% 120%,#1b2a7a,#05081c 75%)";
551
+ readonly tint: readonly ["#f4f6ff", "#16237e", "#e4e9ff"];
552
+ readonly grain: "linear-gradient(transparent,transparent)";
553
+ readonly thumb: "linear-gradient(180deg,#ffe066,#e0b400)";
554
+ readonly tintActions: false;
555
+ };
556
+ readonly "arcade-bezel": {
557
+ readonly label: "Arcade bezel";
558
+ readonly baseMaterial: "matte";
559
+ readonly finish: "repeating-linear-gradient(180deg,transparent 0 2px,#0000000d 2px 3px)";
560
+ readonly edge: "#1a1a1a";
561
+ readonly darkEdge: "#f4f4f4";
562
+ readonly shadow: "4px 4px 0 #e2141f";
563
+ readonly inset: "inset 0 0 0 1px #00000033";
564
+ readonly canvas: "repeating-linear-gradient(180deg,#00000008 0 1px,transparent 1px 3px)";
565
+ readonly darkCanvas: "radial-gradient(70% 60% at 50% 40%,#17172a,#050505 80%)";
566
+ readonly tint: readonly ["#fbf8ef", "#0e0e14", "#ece6d6"];
567
+ readonly grain: "linear-gradient(transparent,transparent)";
568
+ readonly thumb: "linear-gradient(#ffd400,#ffd400)";
569
+ readonly tintActions: false;
570
+ };
454
571
  };
455
572
  export declare const frameRecipes: {
456
573
  readonly none: {
@@ -933,6 +1050,51 @@ export declare const frameRecipes: {
933
1050
  readonly cornerVariation: 0;
934
1051
  };
935
1052
  };
1053
+ readonly sunset: {
1054
+ readonly label: "Sunset grid";
1055
+ readonly version: 1;
1056
+ readonly renderer: "SunsetOrnament";
1057
+ readonly rendererEntry: "sunset-drive/react";
1058
+ readonly defaults: {
1059
+ readonly width: 1;
1060
+ readonly paddingTop: 34;
1061
+ readonly paddingInline: 30;
1062
+ readonly paddingBottom: 32;
1063
+ readonly inset: 10;
1064
+ readonly cornerScale: 1;
1065
+ readonly cornerVariation: 0;
1066
+ };
1067
+ };
1068
+ readonly menu: {
1069
+ readonly label: "Menu window";
1070
+ readonly version: 1;
1071
+ readonly renderer: "SavePointOrnament";
1072
+ readonly rendererEntry: "save-point/react";
1073
+ readonly defaults: {
1074
+ readonly width: 2;
1075
+ readonly paddingTop: 30;
1076
+ readonly paddingInline: 28;
1077
+ readonly paddingBottom: 28;
1078
+ readonly inset: 6;
1079
+ readonly cornerScale: 1;
1080
+ readonly cornerVariation: 0;
1081
+ };
1082
+ };
1083
+ readonly marquee: {
1084
+ readonly label: "Arcade marquee";
1085
+ readonly version: 1;
1086
+ readonly renderer: "ArcadeOrnament";
1087
+ readonly rendererEntry: "arcade-cabinet/react";
1088
+ readonly defaults: {
1089
+ readonly width: 3;
1090
+ readonly paddingTop: 32;
1091
+ readonly paddingInline: 28;
1092
+ readonly paddingBottom: 30;
1093
+ readonly inset: 8;
1094
+ readonly cornerScale: 1;
1095
+ readonly cornerVariation: 0;
1096
+ };
1097
+ };
936
1098
  };
937
1099
  export type MaterialRecipeId = keyof typeof materialRecipes;
938
1100
  export type FrameRecipeId = keyof typeof frameRecipes;
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
  });