@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
@@ -925,29 +925,7 @@ export const paintPicado = (ctx, _p, w, h, settings, colors, clock, playing, ind
925
925
  });
926
926
  /* ───────────────────────── Holi Colours ───────────────────────── */
927
927
  export const paintGulal = (ctx, _p, w, h, settings, colors, clock, playing, index, limits, shown = settings.density) => framed(ctx, w, h, limits, () => {
928
- const s = paintState(settings), tier = tierOf(w, h), seed = s.seed + index * 41, inks = [colors.a, colors.b, colors.c, colors.d], drift = playing ? clock * (s.motion / 200) : 0, haze = s.style === "Soft haze", corners = cornersOf(w, h), at = choose(index, s.seed, 1, 4), ink = choose(index, s.seed, 2, 4);
929
- // A powder cloud pushed outward from a corner. Its radius stops before the
930
- // content box, so the soft edge is never sliced by the frame clip.
931
- const cloud = (k, color, scale) => {
932
- const [x, y, sx, sy] = corners[k], base = (18 + s.scale * 0.9) * scale, ox = Math.sin(drift + k) * 2, oy = Math.cos(drift * 0.8 + k) * 2;
933
- for (let j = 0; j < 5; j++) {
934
- const jx = x -
935
- sx * (6 + rand(seed + k * 7 + j) * 10) +
936
- ox +
937
- (rand(seed + k + j * 3) - 0.5) * base * 0.6, jy = y - sy * (6 + rand(seed + k * 7 + j + 3) * 10) + oy, r = Math.min(base * (0.6 + rand(seed + j) * 0.4), room(jx, jy, w, h, limits) - 1);
938
- if (r < 4)
939
- continue;
940
- const g = ctx.createRadialGradient(jx, jy, 0, jx, jy, r);
941
- g.addColorStop(0, color);
942
- g.addColorStop(1, "transparent");
943
- ctx.globalAlpha = haze ? 0.28 : 0.5;
944
- ctx.fillStyle = g;
945
- ctx.beginPath();
946
- ctx.arc(jx, jy, r, 0, tau);
947
- ctx.fill();
948
- }
949
- ctx.globalAlpha = 1;
950
- };
928
+ const s = paintState(settings), tier = tierOf(w, h), seed = s.seed + index * 41, inks = [colors.a, colors.b, colors.c, colors.d], haze = s.style === "Soft haze", corners = cornersOf(w, h), at = choose(index, s.seed, 1, 4), ink = choose(index, s.seed, 2, 4);
951
929
  // Dry powder thrown along an edge, thinning away from its corner.
952
930
  const speckle = (k, color, count) => {
953
931
  const [x, y, sx, sy] = corners[k];
@@ -955,35 +933,23 @@ export const paintGulal = (ctx, _p, w, h, settings, colors, clock, playing, inde
955
933
  const along = rand(seed + i + k * 13) ** 1.6 * Math.min(w, h) * 0.6, off = 3 + rand(seed + i + 1) * 18, edge = i % 2, px = edge ? x + sx * along : x - sx * off, py = edge ? y - sy * off : y + sy * along;
956
934
  if (room(px, py, w, h, limits) < 2)
957
935
  continue;
958
- ctx.globalAlpha = 0.5 + rand(seed + i + 2) * 0.45;
936
+ ctx.globalAlpha = (haze ? 0.3 : 0.5) + rand(seed + i + 2) * 0.45;
959
937
  dot(ctx, px, py, 0.6 + rand(seed + i + 3) * (s.style === "Splashes" ? 2.2 : 1.3), color);
960
938
  }
961
939
  ctx.globalAlpha = 1;
962
940
  };
963
- const count = Math.round((shown / 100) * 40);
941
+ // Corner powder clouds were removed: their blur was cut square by the
942
+ // ornament canvas. Every style now throws dry powder; haze is fainter.
943
+ const count = Math.round((shown / 100) * 40) * (haze ? 0.6 : 1);
964
944
  if (tier === "hero") {
965
- if (s.style !== "Speckle dust") {
966
- cloud(at, inks[ink], 1.1);
967
- cloud((at + 2) % 4, inks[(ink + 2) % 4], 0.9);
968
- }
969
- if (!haze) {
970
- speckle(at, inks[ink], count);
971
- speckle((at + 2) % 4, inks[(ink + 2) % 4], count);
972
- speckle((at + 1) % 4, inks[(ink + 1) % 4], count / 3);
973
- }
974
- }
975
- else if (tier === "card") {
976
- if (s.style !== "Speckle dust")
977
- cloud(at, inks[ink], 0.85);
978
- if (!haze)
979
- speckle(at, inks[ink], count * 0.7);
980
- }
981
- else {
982
- if (s.style !== "Speckle dust")
983
- cloud(at, inks[ink], 0.6);
984
- if (!haze)
985
- speckle(at, inks[ink], count * 0.4);
945
+ speckle(at, inks[ink], count);
946
+ speckle((at + 2) % 4, inks[(ink + 2) % 4], count);
947
+ speckle((at + 1) % 4, inks[(ink + 1) % 4], count / 3);
986
948
  }
949
+ else if (tier === "card")
950
+ speckle(at, inks[ink], count * 0.7);
951
+ else
952
+ speckle(at, inks[ink], count * 0.4);
987
953
  });
988
954
  /* ───────────────────────── Yule Knit ───────────────────────── */
989
955
  function snowflake(ctx, x, y, r, color, turn) {
@@ -1137,6 +1103,112 @@ export const paintLiquid = (ctx, p, w, h, settings, colors, clock, playing, _ind
1137
1103
  ctx.stroke();
1138
1104
  ctx.globalAlpha = 1;
1139
1105
  });
1106
+ /* ───────────────────────── Sunset Drive ───────────────────────── */
1107
+ /** A striped sun setting behind the top edge and a horizon grid under the card. */
1108
+ export const paintSunset = (ctx, _p, w, h, settings, colors, clock, playing, index, limits, shown = settings.density) => framed(ctx, w, h, limits, () => {
1109
+ const s = paintState(settings), tier = tierOf(w, h), right = choose(index, s.seed, 1, 2) === 0, t = playing ? clock * (s.motion / 100) : 0, sun = s.style === "Sun and grid" || s.style === "Sun only", grid = s.style === "Sun and grid" || s.style === "Grid only";
1110
+ if (sun) {
1111
+ const r = tier === "hero"
1112
+ ? Math.min(30, 22 + s.scale * 0.35)
1113
+ : tier === "card"
1114
+ ? Math.min(27, 18 + s.scale * 0.3)
1115
+ : 14, cx = right ? w - r - 26 : r + 26, cy = -2;
1116
+ ctx.save();
1117
+ ctx.beginPath();
1118
+ ctx.rect(cx - r - 14, -40, r * 2 + 28, 40 + cy);
1119
+ ctx.clip();
1120
+ const g = ctx.createLinearGradient(0, cy - r, 0, cy);
1121
+ g.addColorStop(0, colors.b);
1122
+ g.addColorStop(1, colors.a);
1123
+ glow(ctx, colors.a, 10);
1124
+ ctx.fillStyle = g;
1125
+ ctx.beginPath();
1126
+ ctx.arc(cx, cy, r, Math.PI, tau);
1127
+ ctx.fill();
1128
+ ctx.shadowBlur = 0;
1129
+ // Gaps widen toward the horizon, the classic sliced sun.
1130
+ for (let i = 1; i <= 4; i++) {
1131
+ const y = cy - (r * i) / 5;
1132
+ ctx.clearRect(cx - r - 1, y - (5 - i) * 0.45 - 0.6, r * 2 + 2, (5 - i) * 0.9 + 0.6);
1133
+ }
1134
+ ctx.restore();
1135
+ }
1136
+ if (grid && tier !== "small") {
1137
+ const half = tier === "card", x0 = half && right ? w * 0.45 : 0, x1 = half && !right ? w * 0.55 : w, depth = 24, top = h + 4, phase = (t * 0.5) % 1, vx = (x0 + x1) / 2;
1138
+ ctx.strokeStyle = colors.a;
1139
+ ctx.lineWidth = 1;
1140
+ for (let i = 0; i < 5; i++) {
1141
+ const k = (i + phase) / 5, y = top + depth * k * k;
1142
+ ctx.globalAlpha = 0.12 + 0.4 * k;
1143
+ ctx.beginPath();
1144
+ ctx.moveTo(x0, y);
1145
+ ctx.lineTo(x1, y);
1146
+ ctx.stroke();
1147
+ }
1148
+ const cols = Math.max(4, Math.round((x1 - x0) / (40 - shown * 0.15)));
1149
+ ctx.globalAlpha = 0.3;
1150
+ for (let i = 0; i <= cols; i++) {
1151
+ const x = x0 + ((x1 - x0) * i) / cols;
1152
+ ctx.beginPath();
1153
+ ctx.moveTo(vx + (x - vx) * 0.6, top);
1154
+ ctx.lineTo(vx + (x - vx) * 1.3, top + depth);
1155
+ ctx.stroke();
1156
+ }
1157
+ ctx.globalAlpha = 1;
1158
+ }
1159
+ });
1160
+ /* ───────────────────────── Save Point ───────────────────────── */
1161
+ const pixelFont = (size) => `400 ${size}px "Silkscreen", "VT323", ui-monospace, monospace`;
1162
+ /** A blinking menu cursor beside the window and a sparkle on one corner. */
1163
+ export const paintMenuCursor = (ctx, _p, w, h, settings, colors, clock, playing, index, limits) => framed(ctx, w, h, limits, () => {
1164
+ const s = paintState(settings), tier = tierOf(w, h), at = choose(index, s.seed, 1, 4), cursor = s.style === "Cursor and stars" || s.style === "Cursor only", stars = s.style === "Cursor and stars" || s.style === "Stars only", blink = !playing || s.motion === 0 || clock % 1 < 0.6;
1165
+ if (cursor && blink && tier !== "small") {
1166
+ const y = Math.min(h - 14, limits.top + 12), x = -6, size = 6 + s.scale * 0.12;
1167
+ ctx.beginPath();
1168
+ ctx.moveTo(x - size * 1.6, y - size);
1169
+ ctx.lineTo(x, y);
1170
+ ctx.lineTo(x - size * 1.6, y + size);
1171
+ ctx.closePath();
1172
+ ctx.fillStyle = colors.b;
1173
+ ctx.fill();
1174
+ ctx.strokeStyle = colors.d;
1175
+ ctx.lineWidth = 1;
1176
+ ctx.stroke();
1177
+ }
1178
+ if (stars) {
1179
+ const corners = cornersOf(w, h), picks = tier === "hero" ? [at, (at + 2) % 4] : [at];
1180
+ for (const [n, k] of picks.entries()) {
1181
+ const [x, y, sx, sy] = corners[k], twinkle = playing ? 0.55 + 0.45 * Math.sin(clock * 3 + n * 2) : 1, r = (tier === "small" ? 4 : 5) + s.scale * 0.12;
1182
+ ctx.globalAlpha = twinkle;
1183
+ ctx.fillStyle = colors.c;
1184
+ star(ctx, x - sx * 9, y - sy * 9, r, r * 0.28, 4);
1185
+ ctx.fill();
1186
+ }
1187
+ ctx.globalAlpha = 1;
1188
+ }
1189
+ if (tier === "hero" && s.style !== "Plain window")
1190
+ label(ctx, "FILE 1", w - 4, -12, pixelFont(9), colors.d, "right");
1191
+ });
1192
+ /* ───────────────────────── Arcade Cabinet ───────────────────────── */
1193
+ /** Chasing marquee bulbs over the top edge and credits under the card. */
1194
+ export const paintMarquee = (ctx, _p, w, h, settings, colors, clock, playing, _index, limits, shown = settings.density) => framed(ctx, w, h, limits, () => {
1195
+ const s = paintState(settings), tier = tierOf(w, h), bulbs = s.style === "Bulbs and credits" || s.style === "Bulbs only", credits = s.style === "Bulbs and credits" || s.style === "Credits only";
1196
+ if (bulbs) {
1197
+ const gap = 18 - shown * 0.05, n = Math.max(3, Math.floor((w - 16) / gap)), step = playing && s.motion > 0 ? Math.floor(clock * (2 + s.motion / 25)) : 0;
1198
+ for (let i = 0; i <= n; i++) {
1199
+ const x = 8 + ((w - 16) * i) / n, lit = (i + step) % 3 === 0;
1200
+ if (lit)
1201
+ glow(ctx, colors.b, 6);
1202
+ dot(ctx, x, -8, lit ? 2.4 : 1.8, lit ? colors.b : colors.d);
1203
+ ctx.shadowBlur = 0;
1204
+ }
1205
+ }
1206
+ if (credits && tier !== "small") {
1207
+ label(ctx, "1UP 004200", 0, h + 15, pixelFont(9), colors.a);
1208
+ if (tier === "hero" && (!playing || s.motion === 0 || clock % 1.2 < 0.8))
1209
+ label(ctx, "INSERT COIN", w, h + 15, pixelFont(9), colors.b, "right");
1210
+ }
1211
+ });
1140
1212
  export const launchPainters = {
1141
1213
  crt: paintPhosphor,
1142
1214
  panes: paintPanes,
@@ -1153,4 +1225,7 @@ export const launchPainters = {
1153
1225
  gulal: paintGulal,
1154
1226
  knit: paintKnit,
1155
1227
  liquid: paintLiquid,
1228
+ sunset: paintSunset,
1229
+ menu: paintMenuCursor,
1230
+ marquee: paintMarquee,
1156
1231
  };
@@ -35,7 +35,7 @@ declare function paintState(settings: OrganicSettings): {
35
35
  weight: number;
36
36
  motion: number;
37
37
  seed: number;
38
- style: "Woodland mix" | "Wild ivy" | "Fern grove" | "Willow canopy" | "Oak & moss" | "Spring growth" | "Ginkgo fans" | "Maple grove" | "Eucalyptus" | "Olive branch" | "Clover meadow" | "Wildflower hedge" | "Piped petals" | "Twisted rope" | "Candy pebbles" | "Ribbon folds" | "Tidal ribbons" | "Seafoam beads" | "Glass droplets" | "Quiet currents" | "Fine filigree" | "Art deco" | "Hammered edge" | "Quiet gilding" | "Dimensioned" | "Ruler ticks" | "Construction lines" | "Quiet draft" | "Misprint" | "Halftone" | "Taped corners" | "Clean stamp" | "Tube outline" | "Broken tubes" | "Sign shapes" | "Low hum" | "Bamboo" | "Plum blossom" | "Dry brush" | "Ensō" | "Line map" | "Station roundels" | "Platform edge" | "Quiet line" | "Box corners" | "Status line" | "Raster ticks" | "Quiet cursor" | "Pane titles" | "Key hints" | "Split panes" | "Bare panes" | "Crop marks" | "Red block" | "Grid ticks" | "Bare grid" | "Corner tiles" | "Border run" | "Floral rosette" | "Single tile" | "Tie holes" | "Stencil marks" | "Board seams" | "Bare concrete" | "Starbursts" | "Boomerangs" | "Orbit atoms" | "Lone star" | "Target brackets" | "Telemetry" | "Reticle" | "Clean brackets" | "Hazard stripes" | "Rivet seams" | "Cargo stencils" | "Clean plate" | "Orbit rings" | "Gold foil" | "Star field" | "Single orbit" | "Rangoli corners" | "Diya row" | "Marigold string" | "Single diya" | "Lanterns" | "Scallop edge" | "Cloud scrolls" | "Single lantern" | "Bunting" | "Marigold garland" | "Paper confetti" | "Short string" | "Powder clouds" | "Splashes" | "Speckle dust" | "Soft haze" | "Fair Isle band" | "Snowflakes" | "Cable stitch" | "Plain rib" | "Specular rim" | "Refraction" | "Light catch" | "Clear";
38
+ style: "Woodland mix" | "Wild ivy" | "Fern grove" | "Willow canopy" | "Oak & moss" | "Spring growth" | "Ginkgo fans" | "Maple grove" | "Eucalyptus" | "Olive branch" | "Clover meadow" | "Wildflower hedge" | "Piped petals" | "Twisted rope" | "Candy pebbles" | "Ribbon folds" | "Tidal ribbons" | "Seafoam beads" | "Glass droplets" | "Quiet currents" | "Fine filigree" | "Art deco" | "Hammered edge" | "Quiet gilding" | "Dimensioned" | "Ruler ticks" | "Construction lines" | "Quiet draft" | "Misprint" | "Halftone" | "Taped corners" | "Clean stamp" | "Tube outline" | "Broken tubes" | "Sign shapes" | "Low hum" | "Bamboo" | "Plum blossom" | "Dry brush" | "Ensō" | "Line map" | "Station roundels" | "Platform edge" | "Quiet line" | "Box corners" | "Status line" | "Raster ticks" | "Quiet cursor" | "Pane titles" | "Key hints" | "Split panes" | "Bare panes" | "Crop marks" | "Red block" | "Grid ticks" | "Bare grid" | "Corner tiles" | "Border run" | "Floral rosette" | "Single tile" | "Tie holes" | "Stencil marks" | "Board seams" | "Bare concrete" | "Starbursts" | "Boomerangs" | "Orbit atoms" | "Lone star" | "Target brackets" | "Telemetry" | "Reticle" | "Clean brackets" | "Hazard stripes" | "Rivet seams" | "Cargo stencils" | "Clean plate" | "Orbit rings" | "Gold foil" | "Star field" | "Single orbit" | "Rangoli corners" | "Diya row" | "Marigold string" | "Single diya" | "Lanterns" | "Scallop edge" | "Cloud scrolls" | "Single lantern" | "Bunting" | "Marigold garland" | "Paper confetti" | "Short string" | "Powder clouds" | "Splashes" | "Speckle dust" | "Soft haze" | "Fair Isle band" | "Snowflakes" | "Cable stitch" | "Plain rib" | "Specular rim" | "Refraction" | "Light catch" | "Clear" | "Sun and grid" | "Sun only" | "Grid only" | "Bare coast" | "Cursor and stars" | "Cursor only" | "Stars only" | "Plain window" | "Bulbs and credits" | "Bulbs only" | "Credits only" | "Dark cabinet";
39
39
  canopy: "Scattered trails" | "Corner cascades" | "Overhead boughs" | "Long tendrils" | "Open crown";
40
40
  stem: "Twining vines" | "Woody branches" | "Tender shoots" | "Mossy roots";
41
41
  };
@@ -385,12 +385,60 @@ export declare const organicFrameRecipes: {
385
385
  readonly light: readonly ["#ffffff", "#9fc4ff", "#ffc2e2", "#0a1a33"];
386
386
  readonly dark: readonly ["#ffffff", "#6ea8ff", "#d68cff", "#e8f0ff"];
387
387
  };
388
+ readonly sunset: {
389
+ readonly label: "Sunset grid";
390
+ readonly styles: readonly ["Sun and grid", "Sun only", "Grid only", "Bare coast"];
391
+ readonly defaults: {
392
+ readonly density: 55;
393
+ readonly cornerDensity: 50;
394
+ readonly canopyDepth: 40;
395
+ readonly variation: 30;
396
+ readonly scale: 22;
397
+ readonly stemWeight: 30;
398
+ readonly motion: 45;
399
+ readonly seed: 86;
400
+ };
401
+ readonly light: readonly ["#e63d8f", "#ff8a3d", "#7a3fd1", "#3a1452"];
402
+ readonly dark: readonly ["#ff4fa3", "#ffb347", "#b06bff", "#fff3f8"];
403
+ };
404
+ readonly menu: {
405
+ readonly label: "Menu window";
406
+ readonly styles: readonly ["Cursor and stars", "Cursor only", "Stars only", "Plain window"];
407
+ readonly defaults: {
408
+ readonly density: 50;
409
+ readonly cornerDensity: 50;
410
+ readonly canopyDepth: 30;
411
+ readonly variation: 20;
412
+ readonly scale: 18;
413
+ readonly stemWeight: 30;
414
+ readonly motion: 40;
415
+ readonly seed: 94;
416
+ };
417
+ readonly light: readonly ["#2b44b8", "#d9a400", "#7d8fe0", "#16237e"];
418
+ readonly dark: readonly ["#fff3a8", "#ffe066", "#9fb2ff", "#e9edff"];
419
+ };
420
+ readonly marquee: {
421
+ readonly label: "Arcade marquee";
422
+ readonly styles: readonly ["Bulbs and credits", "Bulbs only", "Credits only", "Dark cabinet"];
423
+ readonly defaults: {
424
+ readonly density: 55;
425
+ readonly cornerDensity: 50;
426
+ readonly canopyDepth: 30;
427
+ readonly variation: 20;
428
+ readonly scale: 18;
429
+ readonly stemWeight: 30;
430
+ readonly motion: 50;
431
+ readonly seed: 81;
432
+ };
433
+ readonly light: readonly ["#d0121c", "#d9a400", "#1a1a1a", "#8a8a9a"];
434
+ readonly dark: readonly ["#ff3b3b", "#ffd400", "#f4f4f4", "#4a4a5e"];
435
+ };
388
436
  };
389
437
  export type OrganicFrame = keyof typeof organicFrameRecipes;
390
438
  export declare function isOrganicFrame(frame: string): frame is OrganicFrame;
391
- export declare const organicStyles: ("Woodland mix" | "Wild ivy" | "Fern grove" | "Willow canopy" | "Oak & moss" | "Spring growth" | "Ginkgo fans" | "Maple grove" | "Eucalyptus" | "Olive branch" | "Clover meadow" | "Wildflower hedge" | "Piped petals" | "Twisted rope" | "Candy pebbles" | "Ribbon folds" | "Tidal ribbons" | "Seafoam beads" | "Glass droplets" | "Quiet currents" | "Fine filigree" | "Art deco" | "Hammered edge" | "Quiet gilding" | "Dimensioned" | "Ruler ticks" | "Construction lines" | "Quiet draft" | "Misprint" | "Halftone" | "Taped corners" | "Clean stamp" | "Tube outline" | "Broken tubes" | "Sign shapes" | "Low hum" | "Bamboo" | "Plum blossom" | "Dry brush" | "Ensō" | "Line map" | "Station roundels" | "Platform edge" | "Quiet line" | "Box corners" | "Status line" | "Raster ticks" | "Quiet cursor" | "Pane titles" | "Key hints" | "Split panes" | "Bare panes" | "Crop marks" | "Red block" | "Grid ticks" | "Bare grid" | "Corner tiles" | "Border run" | "Floral rosette" | "Single tile" | "Tie holes" | "Stencil marks" | "Board seams" | "Bare concrete" | "Starbursts" | "Boomerangs" | "Orbit atoms" | "Lone star" | "Target brackets" | "Telemetry" | "Reticle" | "Clean brackets" | "Hazard stripes" | "Rivet seams" | "Cargo stencils" | "Clean plate" | "Orbit rings" | "Gold foil" | "Star field" | "Single orbit" | "Rangoli corners" | "Diya row" | "Marigold string" | "Single diya" | "Lanterns" | "Scallop edge" | "Cloud scrolls" | "Single lantern" | "Bunting" | "Marigold garland" | "Paper confetti" | "Short string" | "Powder clouds" | "Splashes" | "Speckle dust" | "Soft haze" | "Fair Isle band" | "Snowflakes" | "Cable stitch" | "Plain rib" | "Specular rim" | "Refraction" | "Light catch" | "Clear")[];
439
+ export declare const organicStyles: ("Woodland mix" | "Wild ivy" | "Fern grove" | "Willow canopy" | "Oak & moss" | "Spring growth" | "Ginkgo fans" | "Maple grove" | "Eucalyptus" | "Olive branch" | "Clover meadow" | "Wildflower hedge" | "Piped petals" | "Twisted rope" | "Candy pebbles" | "Ribbon folds" | "Tidal ribbons" | "Seafoam beads" | "Glass droplets" | "Quiet currents" | "Fine filigree" | "Art deco" | "Hammered edge" | "Quiet gilding" | "Dimensioned" | "Ruler ticks" | "Construction lines" | "Quiet draft" | "Misprint" | "Halftone" | "Taped corners" | "Clean stamp" | "Tube outline" | "Broken tubes" | "Sign shapes" | "Low hum" | "Bamboo" | "Plum blossom" | "Dry brush" | "Ensō" | "Line map" | "Station roundels" | "Platform edge" | "Quiet line" | "Box corners" | "Status line" | "Raster ticks" | "Quiet cursor" | "Pane titles" | "Key hints" | "Split panes" | "Bare panes" | "Crop marks" | "Red block" | "Grid ticks" | "Bare grid" | "Corner tiles" | "Border run" | "Floral rosette" | "Single tile" | "Tie holes" | "Stencil marks" | "Board seams" | "Bare concrete" | "Starbursts" | "Boomerangs" | "Orbit atoms" | "Lone star" | "Target brackets" | "Telemetry" | "Reticle" | "Clean brackets" | "Hazard stripes" | "Rivet seams" | "Cargo stencils" | "Clean plate" | "Orbit rings" | "Gold foil" | "Star field" | "Single orbit" | "Rangoli corners" | "Diya row" | "Marigold string" | "Single diya" | "Lanterns" | "Scallop edge" | "Cloud scrolls" | "Single lantern" | "Bunting" | "Marigold garland" | "Paper confetti" | "Short string" | "Powder clouds" | "Splashes" | "Speckle dust" | "Soft haze" | "Fair Isle band" | "Snowflakes" | "Cable stitch" | "Plain rib" | "Specular rim" | "Refraction" | "Light catch" | "Clear" | "Sun and grid" | "Sun only" | "Grid only" | "Bare coast" | "Cursor and stars" | "Cursor only" | "Stars only" | "Plain window" | "Bulbs and credits" | "Bulbs only" | "Credits only" | "Dark cabinet")[];
392
440
  export declare function defaultOrganicOrnament(frame: string): {
393
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
441
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
394
442
  canopy: "Scattered trails";
395
443
  stem: "Twining vines";
396
444
  density: 68;
@@ -402,7 +450,7 @@ export declare function defaultOrganicOrnament(frame: string): {
402
450
  motion: 30;
403
451
  seed: 17;
404
452
  } | {
405
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
453
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
406
454
  canopy: "Scattered trails";
407
455
  stem: "Twining vines";
408
456
  density: 42;
@@ -414,7 +462,7 @@ export declare function defaultOrganicOrnament(frame: string): {
414
462
  motion: 42;
415
463
  seed: 31;
416
464
  } | {
417
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
465
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
418
466
  canopy: "Scattered trails";
419
467
  stem: "Twining vines";
420
468
  density: 38;
@@ -426,7 +474,7 @@ export declare function defaultOrganicOrnament(frame: string): {
426
474
  motion: 45;
427
475
  seed: 47;
428
476
  } | {
429
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
477
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
430
478
  canopy: "Scattered trails";
431
479
  stem: "Twining vines";
432
480
  density: 45;
@@ -438,7 +486,7 @@ export declare function defaultOrganicOrnament(frame: string): {
438
486
  motion: 28;
439
487
  seed: 63;
440
488
  } | {
441
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
489
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
442
490
  canopy: "Scattered trails";
443
491
  stem: "Twining vines";
444
492
  density: 55;
@@ -450,7 +498,7 @@ export declare function defaultOrganicOrnament(frame: string): {
450
498
  motion: 30;
451
499
  seed: 11;
452
500
  } | {
453
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
501
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
454
502
  canopy: "Scattered trails";
455
503
  stem: "Twining vines";
456
504
  density: 40;
@@ -462,7 +510,7 @@ export declare function defaultOrganicOrnament(frame: string): {
462
510
  motion: 20;
463
511
  seed: 29;
464
512
  } | {
465
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
513
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
466
514
  canopy: "Scattered trails";
467
515
  stem: "Twining vines";
468
516
  density: 45;
@@ -474,7 +522,7 @@ export declare function defaultOrganicOrnament(frame: string): {
474
522
  motion: 35;
475
523
  seed: 41;
476
524
  } | {
477
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
525
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
478
526
  canopy: "Scattered trails";
479
527
  stem: "Twining vines";
480
528
  density: 40;
@@ -486,7 +534,7 @@ export declare function defaultOrganicOrnament(frame: string): {
486
534
  motion: 20;
487
535
  seed: 7;
488
536
  } | {
489
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
537
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
490
538
  canopy: "Scattered trails";
491
539
  stem: "Twining vines";
492
540
  density: 50;
@@ -498,7 +546,7 @@ export declare function defaultOrganicOrnament(frame: string): {
498
546
  motion: 30;
499
547
  seed: 5;
500
548
  } | {
501
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
549
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
502
550
  canopy: "Scattered trails";
503
551
  stem: "Twining vines";
504
552
  density: 55;
@@ -510,7 +558,7 @@ export declare function defaultOrganicOrnament(frame: string): {
510
558
  motion: 40;
511
559
  seed: 64;
512
560
  } | {
513
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
561
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
514
562
  canopy: "Scattered trails";
515
563
  stem: "Twining vines";
516
564
  density: 60;
@@ -522,7 +570,7 @@ export declare function defaultOrganicOrnament(frame: string): {
522
570
  motion: 30;
523
571
  seed: 16;
524
572
  } | {
525
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
573
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
526
574
  canopy: "Scattered trails";
527
575
  stem: "Twining vines";
528
576
  density: 50;
@@ -534,7 +582,7 @@ export declare function defaultOrganicOrnament(frame: string): {
534
582
  motion: 0;
535
583
  seed: 26;
536
584
  } | {
537
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
585
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
538
586
  canopy: "Scattered trails";
539
587
  stem: "Twining vines";
540
588
  density: 45;
@@ -546,7 +594,7 @@ export declare function defaultOrganicOrnament(frame: string): {
546
594
  motion: 20;
547
595
  seed: 14;
548
596
  } | {
549
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
597
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
550
598
  canopy: "Scattered trails";
551
599
  stem: "Twining vines";
552
600
  density: 50;
@@ -558,7 +606,7 @@ export declare function defaultOrganicOrnament(frame: string): {
558
606
  motion: 0;
559
607
  seed: 4;
560
608
  } | {
561
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
609
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
562
610
  canopy: "Scattered trails";
563
611
  stem: "Twining vines";
564
612
  density: 50;
@@ -570,7 +618,7 @@ export declare function defaultOrganicOrnament(frame: string): {
570
618
  motion: 30;
571
619
  seed: 57;
572
620
  } | {
573
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
621
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
574
622
  canopy: "Scattered trails";
575
623
  stem: "Twining vines";
576
624
  density: 55;
@@ -582,7 +630,7 @@ export declare function defaultOrganicOrnament(frame: string): {
582
630
  motion: 40;
583
631
  seed: 412;
584
632
  } | {
585
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
633
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
586
634
  canopy: "Scattered trails";
587
635
  stem: "Twining vines";
588
636
  density: 50;
@@ -594,7 +642,7 @@ export declare function defaultOrganicOrnament(frame: string): {
594
642
  motion: 30;
595
643
  seed: 88;
596
644
  } | {
597
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
645
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
598
646
  canopy: "Scattered trails";
599
647
  stem: "Twining vines";
600
648
  density: 45;
@@ -606,7 +654,7 @@ export declare function defaultOrganicOrnament(frame: string): {
606
654
  motion: 30;
607
655
  seed: 1;
608
656
  } | {
609
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
657
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
610
658
  canopy: "Scattered trails";
611
659
  stem: "Twining vines";
612
660
  density: 50;
@@ -618,7 +666,7 @@ export declare function defaultOrganicOrnament(frame: string): {
618
666
  motion: 35;
619
667
  seed: 108;
620
668
  } | {
621
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
669
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
622
670
  canopy: "Scattered trails";
623
671
  stem: "Twining vines";
624
672
  density: 50;
@@ -630,7 +678,7 @@ export declare function defaultOrganicOrnament(frame: string): {
630
678
  motion: 30;
631
679
  seed: 8;
632
680
  } | {
633
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
681
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
634
682
  canopy: "Scattered trails";
635
683
  stem: "Twining vines";
636
684
  density: 55;
@@ -642,7 +690,7 @@ export declare function defaultOrganicOrnament(frame: string): {
642
690
  motion: 35;
643
691
  seed: 31;
644
692
  } | {
645
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
693
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
646
694
  canopy: "Scattered trails";
647
695
  stem: "Twining vines";
648
696
  density: 50;
@@ -654,7 +702,7 @@ export declare function defaultOrganicOrnament(frame: string): {
654
702
  motion: 25;
655
703
  seed: 3;
656
704
  } | {
657
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
705
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
658
706
  canopy: "Scattered trails";
659
707
  stem: "Twining vines";
660
708
  density: 50;
@@ -666,7 +714,7 @@ export declare function defaultOrganicOrnament(frame: string): {
666
714
  motion: 25;
667
715
  seed: 12;
668
716
  } | {
669
- style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim";
717
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
670
718
  canopy: "Scattered trails";
671
719
  stem: "Twining vines";
672
720
  density: 50;
@@ -677,4 +725,40 @@ export declare function defaultOrganicOrnament(frame: string): {
677
725
  stemWeight: 40;
678
726
  motion: 30;
679
727
  seed: 26;
728
+ } | {
729
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
730
+ canopy: "Scattered trails";
731
+ stem: "Twining vines";
732
+ density: 55;
733
+ cornerDensity: 50;
734
+ canopyDepth: 40;
735
+ variation: 30;
736
+ scale: 22;
737
+ stemWeight: 30;
738
+ motion: 45;
739
+ seed: 86;
740
+ } | {
741
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
742
+ canopy: "Scattered trails";
743
+ stem: "Twining vines";
744
+ density: 50;
745
+ cornerDensity: 50;
746
+ canopyDepth: 30;
747
+ variation: 20;
748
+ scale: 18;
749
+ stemWeight: 30;
750
+ motion: 40;
751
+ seed: 94;
752
+ } | {
753
+ style: "Woodland mix" | "Piped petals" | "Tidal ribbons" | "Fine filigree" | "Dimensioned" | "Misprint" | "Tube outline" | "Bamboo" | "Line map" | "Box corners" | "Pane titles" | "Crop marks" | "Corner tiles" | "Tie holes" | "Starbursts" | "Target brackets" | "Hazard stripes" | "Orbit rings" | "Rangoli corners" | "Lanterns" | "Bunting" | "Powder clouds" | "Fair Isle band" | "Specular rim" | "Sun and grid" | "Cursor and stars" | "Bulbs and credits";
754
+ canopy: "Scattered trails";
755
+ stem: "Twining vines";
756
+ density: 55;
757
+ cornerDensity: 50;
758
+ canopyDepth: 30;
759
+ variation: 20;
760
+ scale: 18;
761
+ stemWeight: 30;
762
+ motion: 50;
763
+ seed: 81;
680
764
  };
@@ -417,6 +417,55 @@ export const organicFrameRecipes = freezeData({
417
417
  light: ["#ffffff", "#9fc4ff", "#ffc2e2", "#0a1a33"],
418
418
  dark: ["#ffffff", "#6ea8ff", "#d68cff", "#e8f0ff"],
419
419
  },
420
+ // 2027 game frames. Painters live in organic-paint-launch.ts.
421
+ sunset: {
422
+ label: "Sunset grid",
423
+ styles: ["Sun and grid", "Sun only", "Grid only", "Bare coast"],
424
+ defaults: {
425
+ density: 55,
426
+ cornerDensity: 50,
427
+ canopyDepth: 40,
428
+ variation: 30,
429
+ scale: 22,
430
+ stemWeight: 30,
431
+ motion: 45,
432
+ seed: 86,
433
+ },
434
+ light: ["#e63d8f", "#ff8a3d", "#7a3fd1", "#3a1452"],
435
+ dark: ["#ff4fa3", "#ffb347", "#b06bff", "#fff3f8"],
436
+ },
437
+ menu: {
438
+ label: "Menu window",
439
+ styles: ["Cursor and stars", "Cursor only", "Stars only", "Plain window"],
440
+ defaults: {
441
+ density: 50,
442
+ cornerDensity: 50,
443
+ canopyDepth: 30,
444
+ variation: 20,
445
+ scale: 18,
446
+ stemWeight: 30,
447
+ motion: 40,
448
+ seed: 94,
449
+ },
450
+ light: ["#2b44b8", "#d9a400", "#7d8fe0", "#16237e"],
451
+ dark: ["#fff3a8", "#ffe066", "#9fb2ff", "#e9edff"],
452
+ },
453
+ marquee: {
454
+ label: "Arcade marquee",
455
+ styles: ["Bulbs and credits", "Bulbs only", "Credits only", "Dark cabinet"],
456
+ defaults: {
457
+ density: 55,
458
+ cornerDensity: 50,
459
+ canopyDepth: 30,
460
+ variation: 20,
461
+ scale: 18,
462
+ stemWeight: 30,
463
+ motion: 50,
464
+ seed: 81,
465
+ },
466
+ light: ["#d0121c", "#d9a400", "#1a1a1a", "#8a8a9a"],
467
+ dark: ["#ff3b3b", "#ffd400", "#f4f4f4", "#4a4a5e"],
468
+ },
420
469
  });
421
470
  export function isOrganicFrame(frame) {
422
471
  return Object.hasOwn(organicFrameRecipes, frame);