@dixy-ui/themes 0.0.0-stage → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +104 -2
  3. package/dist/ansi/ornament.d.ts +3 -0
  4. package/dist/ansi/ornament.js +8 -0
  5. package/dist/ansi-panes.css +929 -0
  6. package/dist/art-deco.css +850 -0
  7. package/dist/atelier/ornament.d.ts +4 -0
  8. package/dist/atelier/ornament.js +9 -0
  9. package/dist/atomic/ornament.d.ts +3 -0
  10. package/dist/atomic/ornament.js +8 -0
  11. package/dist/atomic-lounge.css +946 -0
  12. package/dist/authoring.d.ts +142 -0
  13. package/dist/authoring.js +83 -0
  14. package/dist/azulejo/ornament.d.ts +3 -0
  15. package/dist/azulejo/ornament.js +8 -0
  16. package/dist/azulejo-tile.css +962 -0
  17. package/dist/blueprint/ornament.d.ts +3 -0
  18. package/dist/blueprint/ornament.js +8 -0
  19. package/dist/blueprint.css +897 -0
  20. package/dist/brutalist/ornament.d.ts +3 -0
  21. package/dist/brutalist/ornament.js +8 -0
  22. package/dist/brutalist-concrete.css +936 -0
  23. package/dist/bytes.json +162 -0
  24. package/dist/candy-clay.css +778 -0
  25. package/dist/catalog.d.ts +1346 -0
  26. package/dist/catalog.js +1379 -0
  27. package/dist/character.d.ts +103 -0
  28. package/dist/character.js +477 -0
  29. package/dist/chrome.d.ts +114 -0
  30. package/dist/chrome.js +247 -0
  31. package/dist/clay/ornament.d.ts +3 -0
  32. package/dist/clay/ornament.js +8 -0
  33. package/dist/compile-css.d.ts +3 -0
  34. package/dist/compile-css.js +133 -0
  35. package/dist/deco/ornament.d.ts +3 -0
  36. package/dist/deco/ornament.js +8 -0
  37. package/dist/diwali/ornament.d.ts +3 -0
  38. package/dist/diwali/ornament.js +8 -0
  39. package/dist/diwali-lights.css +894 -0
  40. package/dist/documents.d.ts +104 -0
  41. package/dist/documents.js +1411 -0
  42. package/dist/forest/ornament.d.ts +3 -0
  43. package/dist/forest/ornament.js +12 -0
  44. package/dist/foundations.d.ts +105 -0
  45. package/dist/foundations.js +140 -0
  46. package/dist/frame-corners.d.ts +5 -0
  47. package/dist/frame-corners.js +5 -0
  48. package/dist/frame-styles.d.ts +36 -0
  49. package/dist/frame-styles.js +146 -0
  50. package/dist/freeze.d.ts +2 -0
  51. package/dist/freeze.js +9 -0
  52. package/dist/freighter/ornament.d.ts +3 -0
  53. package/dist/freighter/ornament.js +8 -0
  54. package/dist/freighter.css +942 -0
  55. package/dist/glass/ornament.d.ts +3 -0
  56. package/dist/glass/ornament.js +8 -0
  57. package/dist/glass-ui.css +923 -0
  58. package/dist/hardware/ornament.d.ts +4 -0
  59. package/dist/hardware/ornament.js +10 -0
  60. package/dist/holi/ornament.d.ts +3 -0
  61. package/dist/holi/ornament.js +8 -0
  62. package/dist/holi-colours.css +887 -0
  63. package/dist/hud/ornament.d.ts +3 -0
  64. package/dist/hud/ornament.js +8 -0
  65. package/dist/light/ornament.d.ts +3 -0
  66. package/dist/light/ornament.js +10 -0
  67. package/dist/living-forest.css +917 -0
  68. package/dist/lunar/ornament.d.ts +3 -0
  69. package/dist/lunar/ornament.js +8 -0
  70. package/dist/lunar-new-year.css +811 -0
  71. package/dist/manifests.d.ts +2485 -0
  72. package/dist/manifests.js +264 -0
  73. package/dist/material-light.css +880 -0
  74. package/dist/neon/ornament.d.ts +3 -0
  75. package/dist/neon/ornament.js +8 -0
  76. package/dist/neon-night-market.css +944 -0
  77. package/dist/ocean/ornament.d.ts +3 -0
  78. package/dist/ocean/ornament.js +8 -0
  79. package/dist/ocean-depths.css +825 -0
  80. package/dist/orbital-hud.css +973 -0
  81. package/dist/organic-css.d.ts +3 -0
  82. package/dist/organic-css.js +23 -0
  83. package/dist/organic-geometry.d.ts +20 -0
  84. package/dist/organic-geometry.js +74 -0
  85. package/dist/organic-ornament.d.ts +9 -0
  86. package/dist/organic-ornament.js +28 -0
  87. package/dist/organic-paint-launch.d.ts +43 -0
  88. package/dist/organic-paint-launch.js +1156 -0
  89. package/dist/organic-paint-world.d.ts +24 -0
  90. package/dist/organic-paint-world.js +676 -0
  91. package/dist/organic-paint.d.ts +50 -0
  92. package/dist/organic-paint.js +695 -0
  93. package/dist/organic-runtime.d.ts +4 -0
  94. package/dist/organic-runtime.js +231 -0
  95. package/dist/organic-settings.d.ts +680 -0
  96. package/dist/organic-settings.js +433 -0
  97. package/dist/ornament-parts.d.ts +20 -0
  98. package/dist/ornament-parts.js +15 -0
  99. package/dist/papel-picado.css +904 -0
  100. package/dist/phosphor/ornament.d.ts +3 -0
  101. package/dist/phosphor/ornament.js +8 -0
  102. package/dist/phosphor-terminal.css +1011 -0
  103. package/dist/picado/ornament.d.ts +3 -0
  104. package/dist/picado/ornament.js +8 -0
  105. package/dist/prism/ornament.d.ts +4 -0
  106. package/dist/prism/ornament.js +9 -0
  107. package/dist/prism-glass.css +970 -0
  108. package/dist/recipes.d.ts +938 -0
  109. package/dist/recipes.js +939 -0
  110. package/dist/resolve.d.ts +40 -0
  111. package/dist/resolve.js +24 -0
  112. package/dist/retro/ornament.d.ts +5 -0
  113. package/dist/retro/ornament.js +10 -0
  114. package/dist/retro-os.css +867 -0
  115. package/dist/riso/ornament.d.ts +3 -0
  116. package/dist/riso/ornament.js +8 -0
  117. package/dist/riso-zine.css +786 -0
  118. package/dist/sail/ornament.d.ts +3 -0
  119. package/dist/sail/ornament.js +8 -0
  120. package/dist/scrapbook.css +685 -0
  121. package/dist/signal/ornament.d.ts +4 -0
  122. package/dist/signal/ornament.js +11 -0
  123. package/dist/skins/ansi-panes.d.ts +68 -0
  124. package/dist/skins/ansi-panes.js +68 -0
  125. package/dist/skins/art-deco.d.ts +68 -0
  126. package/dist/skins/art-deco.js +68 -0
  127. package/dist/skins/atomic-lounge.d.ts +68 -0
  128. package/dist/skins/atomic-lounge.js +68 -0
  129. package/dist/skins/azulejo-tile.d.ts +68 -0
  130. package/dist/skins/azulejo-tile.js +68 -0
  131. package/dist/skins/blueprint.d.ts +68 -0
  132. package/dist/skins/blueprint.js +68 -0
  133. package/dist/skins/brutalist-concrete.d.ts +68 -0
  134. package/dist/skins/brutalist-concrete.js +68 -0
  135. package/dist/skins/candy-clay.d.ts +57 -0
  136. package/dist/skins/candy-clay.js +57 -0
  137. package/dist/skins/diwali-lights.d.ts +68 -0
  138. package/dist/skins/diwali-lights.js +68 -0
  139. package/dist/skins/freighter.d.ts +68 -0
  140. package/dist/skins/freighter.js +68 -0
  141. package/dist/skins/glass-ui.d.ts +68 -0
  142. package/dist/skins/glass-ui.js +68 -0
  143. package/dist/skins/holi-colours.d.ts +68 -0
  144. package/dist/skins/holi-colours.js +68 -0
  145. package/dist/skins/living-forest.d.ts +68 -0
  146. package/dist/skins/living-forest.js +68 -0
  147. package/dist/skins/lunar-new-year.d.ts +68 -0
  148. package/dist/skins/lunar-new-year.js +68 -0
  149. package/dist/skins/material-light.d.ts +57 -0
  150. package/dist/skins/material-light.js +57 -0
  151. package/dist/skins/neon-night-market.d.ts +68 -0
  152. package/dist/skins/neon-night-market.js +68 -0
  153. package/dist/skins/ocean-depths.d.ts +57 -0
  154. package/dist/skins/ocean-depths.js +57 -0
  155. package/dist/skins/orbital-hud.d.ts +68 -0
  156. package/dist/skins/orbital-hud.js +68 -0
  157. package/dist/skins/papel-picado.d.ts +68 -0
  158. package/dist/skins/papel-picado.js +68 -0
  159. package/dist/skins/phosphor-terminal.d.ts +68 -0
  160. package/dist/skins/phosphor-terminal.js +68 -0
  161. package/dist/skins/prism-glass.d.ts +57 -0
  162. package/dist/skins/prism-glass.js +57 -0
  163. package/dist/skins/retro-os.d.ts +57 -0
  164. package/dist/skins/retro-os.js +57 -0
  165. package/dist/skins/riso-zine.d.ts +68 -0
  166. package/dist/skins/riso-zine.js +68 -0
  167. package/dist/skins/scrapbook.d.ts +57 -0
  168. package/dist/skins/scrapbook.js +57 -0
  169. package/dist/skins/solar-sail.d.ts +68 -0
  170. package/dist/skins/solar-sail.js +68 -0
  171. package/dist/skins/studio-hardware.d.ts +57 -0
  172. package/dist/skins/studio-hardware.js +57 -0
  173. package/dist/skins/sumi-ink.d.ts +68 -0
  174. package/dist/skins/sumi-ink.js +68 -0
  175. package/dist/skins/swiss-poster.d.ts +68 -0
  176. package/dist/skins/swiss-poster.js +68 -0
  177. package/dist/skins/tactile-atelier.d.ts +57 -0
  178. package/dist/skins/tactile-atelier.js +57 -0
  179. package/dist/skins/tokyo-transit.d.ts +68 -0
  180. package/dist/skins/tokyo-transit.js +68 -0
  181. package/dist/skins/winamp-signal.d.ts +57 -0
  182. package/dist/skins/winamp-signal.js +57 -0
  183. package/dist/skins/y2k-titanium.d.ts +57 -0
  184. package/dist/skins/y2k-titanium.js +57 -0
  185. package/dist/skins/yule-knit.d.ts +68 -0
  186. package/dist/skins/yule-knit.js +68 -0
  187. package/dist/solar-sail.css +901 -0
  188. package/dist/starters-launch.d.ts +361 -0
  189. package/dist/starters-launch.js +808 -0
  190. package/dist/studio-hardware.css +867 -0
  191. package/dist/sumi/ornament.d.ts +3 -0
  192. package/dist/sumi/ornament.js +8 -0
  193. package/dist/sumi-ink.css +733 -0
  194. package/dist/swiss/ornament.d.ts +3 -0
  195. package/dist/swiss/ornament.js +8 -0
  196. package/dist/swiss-poster.css +727 -0
  197. package/dist/tactile-atelier.css +922 -0
  198. package/dist/theme-document.schema.json +790 -0
  199. package/dist/theme-schema.d.ts +453 -0
  200. package/dist/theme-schema.js +416 -0
  201. package/dist/titanium/ornament.d.ts +3 -0
  202. package/dist/titanium/ornament.js +11 -0
  203. package/dist/tokyo-transit.css +756 -0
  204. package/dist/transit/ornament.d.ts +3 -0
  205. package/dist/transit/ornament.js +8 -0
  206. package/dist/winamp-signal.css +1048 -0
  207. package/dist/y2k-titanium.css +979 -0
  208. package/dist/yule/ornament.d.ts +3 -0
  209. package/dist/yule/ornament.js +8 -0
  210. package/dist/yule-knit.css +850 -0
  211. package/package.json +351 -3
@@ -0,0 +1,808 @@
1
+ import { frameRecipes } from "./recipes.js";
2
+ const mat = (surfaceMix, darkSurfaceMix, cushion, inkTint, sheen, textureScale = 1, lightAngle = 180) => ({
3
+ surfaceMix,
4
+ darkSurfaceMix,
5
+ cushion,
6
+ inkTint,
7
+ sheen,
8
+ textureScale,
9
+ lightAngle,
10
+ });
11
+ export const launchStarters = [
12
+ {
13
+ slug: "phosphor-terminal",
14
+ symbol: "phosphorTerminal",
15
+ name: "Phosphor Terminal",
16
+ description: "Ready when you are.",
17
+ detail: "Green phosphor, scanlines and a blinking block cursor.",
18
+ swatches: ["#3dff6e", "#040b06", "#ffb000"],
19
+ voice: {
20
+ eyebrow: "READY. · 64K RAM SYSTEM",
21
+ headline: "> hello, operator",
22
+ body: "Type a command. The screen glows back.",
23
+ primary: "Run",
24
+ secondary: "Abort",
25
+ },
26
+ foundations: {
27
+ accentColor: "green",
28
+ neutralColor: "olive",
29
+ radius: "none",
30
+ shape: "square",
31
+ appearance: "dark",
32
+ bodyFont: "terminal",
33
+ headingFont: "terminal",
34
+ border: 1,
35
+ depth: "none",
36
+ material: "matte",
37
+ },
38
+ material: { id: "phosphor-glass", parameters: mat(30, 20, 0, 0.55, 0) },
39
+ frame: "crt",
40
+ character: {
41
+ controls: "pixel",
42
+ motion: { style: "stepped", press: 1, tempo: 0.8 },
43
+ type: {
44
+ headingCase: "uppercase",
45
+ headingTracking: 0.04,
46
+ headingWeight: 400,
47
+ numerals: "tabular",
48
+ },
49
+ states: "glow",
50
+ details: {
51
+ focus: "double",
52
+ divider: "dashed",
53
+ selection: "inverse",
54
+ scrollbar: "thin",
55
+ iconStroke: 1.5,
56
+ },
57
+ backdrop: { pattern: "scanlines", intensity: 0.3, scale: 1 },
58
+ },
59
+ chrome: { edge: "double", well: "lcd", corners: "inherit" },
60
+ },
61
+ {
62
+ slug: "ansi-panes",
63
+ symbol: "ansiPanes",
64
+ name: "ANSI Panes",
65
+ description: "Everything in its pane.",
66
+ detail: "ANSI colours, box-drawn panes and keyboard hints.",
67
+ swatches: ["#268bd2", "#859900", "#d33682"],
68
+ voice: {
69
+ eyebrow: "$ git status",
70
+ headline: "Everything in its pane.",
71
+ body: "Arrow keys to move, enter to open, q to quit.",
72
+ primary: "Commit",
73
+ secondary: "Discard",
74
+ },
75
+ foundations: {
76
+ accentColor: "blue",
77
+ neutralColor: "slate",
78
+ radius: "none",
79
+ shape: "square",
80
+ appearance: "light",
81
+ bodyFont: "jetbrains",
82
+ headingFont: "jetbrains",
83
+ border: 1,
84
+ depth: "none",
85
+ material: "matte",
86
+ },
87
+ material: { id: "ansi-term", parameters: mat(20, 15, 0, 0.2, 0) },
88
+ frame: "panes",
89
+ character: {
90
+ controls: "instrument",
91
+ motion: { style: "stepped", press: 0.5, tempo: 0.7 },
92
+ type: {
93
+ headingCase: "none",
94
+ headingTracking: 0,
95
+ headingWeight: 700,
96
+ numerals: "tabular",
97
+ },
98
+ states: "led",
99
+ details: {
100
+ focus: "dashed",
101
+ divider: "dotted",
102
+ selection: "inverse",
103
+ scrollbar: "thin",
104
+ iconStroke: 1.5,
105
+ },
106
+ backdrop: { pattern: "grid", intensity: 0.2, scale: 0.6 },
107
+ },
108
+ chrome: { edge: "line", well: "tinted", corners: "pixel" },
109
+ },
110
+ {
111
+ slug: "swiss-poster",
112
+ symbol: "swissPoster",
113
+ name: "Swiss Poster",
114
+ description: "Form follows grid.",
115
+ detail: "Red, black and white on a strict six-column grid.",
116
+ swatches: ["#e30613", "#0d0d0d", "#ffffff"],
117
+ voice: {
118
+ eyebrow: "AUSSTELLUNG 26",
119
+ headline: "Form follows grid.",
120
+ body: "Flush left, ragged right, nothing extra.",
121
+ primary: "Print",
122
+ secondary: "Proof",
123
+ },
124
+ foundations: {
125
+ accentColor: "red",
126
+ neutralColor: "neutral",
127
+ radius: "none",
128
+ shape: "square",
129
+ appearance: "light",
130
+ bodyFont: "inter",
131
+ headingFont: "archivo",
132
+ border: 2,
133
+ depth: "none",
134
+ material: "paper",
135
+ },
136
+ material: { id: "poster-stock", parameters: mat(10, 10, 0, 0, 0) },
137
+ frame: "swiss",
138
+ character: {
139
+ controls: "standard",
140
+ motion: { style: "weighted", press: 0.5, tempo: 1 },
141
+ type: {
142
+ headingCase: "none",
143
+ headingTracking: -0.03,
144
+ headingWeight: 400,
145
+ numerals: "proportional",
146
+ },
147
+ states: "standard",
148
+ details: {
149
+ focus: "offset",
150
+ divider: "line",
151
+ selection: "accent",
152
+ scrollbar: "native",
153
+ iconStroke: 2.25,
154
+ },
155
+ backdrop: { pattern: "grid", intensity: 0.15, scale: 2 },
156
+ },
157
+ chrome: { edge: "line", well: "none", corners: "notched" },
158
+ },
159
+ {
160
+ slug: "azulejo-tile",
161
+ symbol: "azulejoTile",
162
+ name: "Azulejo Tile",
163
+ description: "Fired in cobalt.",
164
+ detail: "Hand-glazed tiles, cobalt on white, with a ceramic sheen.",
165
+ swatches: ["#1f4fa0", "#fbfaf6", "#d79a2b"],
166
+ voice: {
167
+ eyebrow: "LISBOA · HAND GLAZED",
168
+ headline: "Fired in cobalt.",
169
+ body: "Pattern by pattern, a wall becomes a story.",
170
+ primary: "Lay tile",
171
+ secondary: "Sample",
172
+ },
173
+ foundations: {
174
+ accentColor: "blue",
175
+ neutralColor: "slate",
176
+ radius: "lg",
177
+ shape: "rounded",
178
+ appearance: "light",
179
+ bodyFont: "inter",
180
+ headingFont: "playfair",
181
+ border: 2,
182
+ depth: "raised",
183
+ material: "glossy",
184
+ },
185
+ material: {
186
+ id: "glazed-tile",
187
+ parameters: mat(30, 35, 0.2, 0.3, 0.6, 1, 135),
188
+ },
189
+ frame: "azulejo",
190
+ character: {
191
+ controls: "pearl",
192
+ motion: { style: "weighted", press: 1, tempo: 1.1 },
193
+ type: {
194
+ headingCase: "none",
195
+ headingTracking: -0.01,
196
+ headingWeight: 500,
197
+ numerals: "oldstyle",
198
+ },
199
+ states: "inlay",
200
+ details: {
201
+ focus: "double",
202
+ divider: "double",
203
+ selection: "accent",
204
+ scrollbar: "accent",
205
+ iconStroke: 1.75,
206
+ },
207
+ backdrop: { pattern: "dots", intensity: 0.25, scale: 1.2 },
208
+ },
209
+ chrome: { edge: "double", well: "glass", corners: "round" },
210
+ },
211
+ {
212
+ slug: "brutalist-concrete",
213
+ symbol: "brutalistConcrete",
214
+ name: "Brutalist Concrete",
215
+ description: "Raw. Honest. Load-bearing.",
216
+ detail: "Board-formed concrete, tie holes and stencilled levels.",
217
+ swatches: ["#bdbab3", "#1c1c1b", "#d9961a"],
218
+ voice: {
219
+ eyebrow: "BLOCK C · LEVEL 04",
220
+ headline: "Raw. Honest. Load-bearing.",
221
+ body: "No veneer. Every joint shows how it was made.",
222
+ primary: "Pour",
223
+ secondary: "Cure",
224
+ },
225
+ foundations: {
226
+ accentColor: "amber",
227
+ neutralColor: "stone",
228
+ radius: "none",
229
+ shape: "square",
230
+ appearance: "light",
231
+ bodyFont: "inter",
232
+ headingFont: "archivo",
233
+ border: 2,
234
+ depth: "none",
235
+ material: "matte",
236
+ },
237
+ material: { id: "concrete", parameters: mat(25, 30, 0, 0.2, 0, 1.5) },
238
+ frame: "formwork",
239
+ character: {
240
+ controls: "hardware",
241
+ motion: { style: "weighted", press: 2, tempo: 1.2 },
242
+ type: {
243
+ headingCase: "uppercase",
244
+ headingTracking: 0.02,
245
+ headingWeight: 400,
246
+ numerals: "tabular",
247
+ },
248
+ states: "stamp",
249
+ details: {
250
+ focus: "offset",
251
+ divider: "groove",
252
+ selection: "inverse",
253
+ scrollbar: "thin",
254
+ iconStroke: 2.5,
255
+ },
256
+ backdrop: { pattern: "halftone", intensity: 0.2, scale: 2 },
257
+ },
258
+ chrome: { edge: "stepped", well: "recessed", corners: "pixel" },
259
+ },
260
+ {
261
+ slug: "atomic-lounge",
262
+ symbol: "atomicLounge",
263
+ name: "Atomic Lounge",
264
+ description: "Tomorrow, today!",
265
+ detail: "Teal and tangerine, boomerangs and starbursts.",
266
+ swatches: ["#2a9d8f", "#f4a261", "#f6ecd6"],
267
+ voice: {
268
+ eyebrow: "SPACE-AGE LIVING",
269
+ headline: "Tomorrow, today!",
270
+ body: "Everything sleek, sunny and a little bit atomic.",
271
+ primary: "Swing by",
272
+ secondary: "Later",
273
+ },
274
+ foundations: {
275
+ accentColor: "teal",
276
+ neutralColor: "sand",
277
+ radius: "lg",
278
+ shape: "pill",
279
+ appearance: "light",
280
+ bodyFont: "rounded",
281
+ headingFont: "rounded",
282
+ border: 1,
283
+ depth: "raised",
284
+ material: "soft",
285
+ },
286
+ material: {
287
+ id: "atomic-laminate",
288
+ parameters: mat(30, 35, 0.3, 0.2, 0.3, 1, 160),
289
+ },
290
+ frame: "atomic",
291
+ character: {
292
+ controls: "clay",
293
+ motion: { style: "springy", press: 1.5, tempo: 1 },
294
+ type: {
295
+ headingCase: "none",
296
+ headingTracking: 0,
297
+ headingWeight: 600,
298
+ numerals: "proportional",
299
+ },
300
+ states: "glow",
301
+ details: {
302
+ focus: "offset",
303
+ divider: "dotted",
304
+ selection: "highlighter",
305
+ scrollbar: "accent",
306
+ iconStroke: 2,
307
+ },
308
+ backdrop: { pattern: "sunburst", intensity: 0.3, scale: 1 },
309
+ },
310
+ chrome: { edge: "pill", well: "sunken", corners: "inherit" },
311
+ },
312
+ {
313
+ slug: "orbital-hud",
314
+ symbol: "orbitalHud",
315
+ name: "Orbital HUD",
316
+ description: "Target acquired.",
317
+ detail: "Holographic lines, bracket corners and live telemetry.",
318
+ swatches: ["#5ff3ff", "#04121a", "#ff8a4c"],
319
+ voice: {
320
+ eyebrow: "ORBIT 412 · Δv 3.2 KM/S",
321
+ headline: "Target acquired.",
322
+ body: "Every system nominal. Every vector plotted.",
323
+ primary: "Engage",
324
+ secondary: "Hold",
325
+ },
326
+ foundations: {
327
+ accentColor: "cyan",
328
+ neutralColor: "slate",
329
+ radius: "sm",
330
+ shape: "square",
331
+ appearance: "dark",
332
+ bodyFont: "grotesk",
333
+ headingFont: "techno",
334
+ border: 1,
335
+ depth: "none",
336
+ material: "glossy",
337
+ },
338
+ material: { id: "hologram", parameters: mat(20, 15, 0, 0.35, 0.2) },
339
+ frame: "hud",
340
+ character: {
341
+ controls: "chrome",
342
+ motion: { style: "snappy", press: 0.8, tempo: 0.8 },
343
+ type: {
344
+ headingCase: "uppercase",
345
+ headingTracking: 0.12,
346
+ headingWeight: 500,
347
+ numerals: "tabular",
348
+ },
349
+ states: "led",
350
+ details: {
351
+ focus: "glow",
352
+ divider: "dashed",
353
+ selection: "accent",
354
+ scrollbar: "thin",
355
+ iconStroke: 1.25,
356
+ },
357
+ backdrop: { pattern: "grid", intensity: 0.3, scale: 1 },
358
+ },
359
+ chrome: { edge: "double", well: "tinted", corners: "notched" },
360
+ },
361
+ {
362
+ slug: "freighter",
363
+ symbol: "freighter",
364
+ name: "Freighter",
365
+ description: "Haul it home.",
366
+ detail: "Hazard stripes, rivets and worn cargo stencils.",
367
+ swatches: ["#e09a00", "#2b2e30", "#c0392b"],
368
+ voice: {
369
+ eyebrow: "CARGO BAY 02",
370
+ headline: "Haul it home.",
371
+ body: "Mag-locks engaged. Manifest checked. Burn when ready.",
372
+ primary: "Load",
373
+ secondary: "Jettison",
374
+ },
375
+ foundations: {
376
+ accentColor: "amber",
377
+ neutralColor: "zinc",
378
+ radius: "sm",
379
+ shape: "rounded",
380
+ appearance: "light",
381
+ bodyFont: "lcd",
382
+ headingFont: "archivo",
383
+ border: 2,
384
+ depth: "raised",
385
+ material: "metal",
386
+ },
387
+ material: {
388
+ id: "painted-steel",
389
+ parameters: mat(30, 35, 0, 0.15, 0.25, 1.2),
390
+ },
391
+ frame: "hazard",
392
+ character: {
393
+ controls: "hardware",
394
+ motion: { style: "snappy", press: 1.5, tempo: 0.9 },
395
+ type: {
396
+ headingCase: "uppercase",
397
+ headingTracking: 0.04,
398
+ headingWeight: 400,
399
+ numerals: "tabular",
400
+ },
401
+ states: "marching",
402
+ details: {
403
+ focus: "offset",
404
+ divider: "groove",
405
+ selection: "inverse",
406
+ scrollbar: "accent",
407
+ iconStroke: 2.25,
408
+ },
409
+ backdrop: { pattern: "dots", intensity: 0.2, scale: 1.4 },
410
+ },
411
+ chrome: { edge: "bevel", well: "recessed", corners: "notched" },
412
+ },
413
+ {
414
+ slug: "solar-sail",
415
+ symbol: "solarSail",
416
+ name: "Solar Sail",
417
+ description: "Catch the light.",
418
+ detail: "Clean white, gold foil and thin orbital rings.",
419
+ swatches: ["#b8892b", "#fbfbf8", "#1d2033"],
420
+ voice: {
421
+ eyebrow: "MISSION 01 · HELIOCENTRIC",
422
+ headline: "Catch the light.",
423
+ body: "Ride the sunlight out to the edge of the map.",
424
+ primary: "Launch",
425
+ secondary: "Drift",
426
+ },
427
+ foundations: {
428
+ accentColor: "gold",
429
+ neutralColor: "mist",
430
+ radius: "lg",
431
+ shape: "pill",
432
+ appearance: "light",
433
+ bodyFont: "grotesk",
434
+ headingFont: "grotesk",
435
+ border: 1,
436
+ depth: "floating",
437
+ material: "glossy",
438
+ },
439
+ material: { id: "gold-foil", parameters: mat(20, 25, 0, 0.1, 0.5, 1, 120) },
440
+ frame: "orbit",
441
+ character: {
442
+ controls: "halo",
443
+ motion: { style: "drift", press: 0.6, tempo: 1.3 },
444
+ type: {
445
+ headingCase: "none",
446
+ headingTracking: -0.02,
447
+ headingWeight: 300,
448
+ numerals: "proportional",
449
+ },
450
+ states: "glow",
451
+ details: {
452
+ focus: "ring",
453
+ divider: "line",
454
+ selection: "accent",
455
+ scrollbar: "thin",
456
+ iconStroke: 1.25,
457
+ },
458
+ backdrop: { pattern: "topo", intensity: 0.2, scale: 1.5 },
459
+ },
460
+ chrome: { edge: "pill", well: "glass", corners: "round" },
461
+ },
462
+ {
463
+ slug: "diwali-lights",
464
+ symbol: "diwaliLights",
465
+ name: "Diwali Lights",
466
+ description: "Light every corner.",
467
+ detail: "Rangoli corners, glowing diyas, marigold and magenta.",
468
+ swatches: ["#c2185b", "#f08c00", "#fff7ea"],
469
+ voice: {
470
+ eyebrow: "FESTIVAL OF LIGHTS",
471
+ headline: "Light every corner.",
472
+ body: "Clean the house, light the lamps, share the sweets.",
473
+ primary: "Celebrate",
474
+ secondary: "Share sweets",
475
+ },
476
+ foundations: {
477
+ accentColor: "ruby",
478
+ neutralColor: "sand",
479
+ radius: "lg",
480
+ shape: "rounded",
481
+ appearance: "light",
482
+ bodyFont: "inter",
483
+ headingFont: "fraunces",
484
+ border: 1,
485
+ depth: "raised",
486
+ material: "soft",
487
+ },
488
+ material: {
489
+ id: "marigold-silk",
490
+ parameters: mat(25, 35, 0.2, 0.25, 0.4, 1, 135),
491
+ },
492
+ frame: "rangoli",
493
+ character: {
494
+ controls: "brass",
495
+ motion: { style: "drift", press: 1, tempo: 1.2 },
496
+ type: {
497
+ headingCase: "none",
498
+ headingTracking: 0,
499
+ headingWeight: 600,
500
+ numerals: "oldstyle",
501
+ },
502
+ states: "glow",
503
+ details: {
504
+ focus: "glow",
505
+ divider: "dotted",
506
+ selection: "highlighter",
507
+ scrollbar: "accent",
508
+ iconStroke: 1.75,
509
+ },
510
+ backdrop: { pattern: "dots", intensity: 0.3, scale: 1 },
511
+ },
512
+ chrome: { edge: "stepped", well: "tinted", corners: "round" },
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
+ {
564
+ slug: "papel-picado",
565
+ symbol: "papelPicado",
566
+ name: "Papel Picado",
567
+ description: "String up the colour.",
568
+ detail: "Cut-paper bunting, marigold, pink and violet.",
569
+ swatches: ["#e8590c", "#d6336c", "#7048e8"],
570
+ voice: {
571
+ eyebrow: "FIESTA · HECHO A MANO",
572
+ headline: "String up the colour.",
573
+ body: "Every flag cut by hand, every colour turned up.",
574
+ primary: "Join in",
575
+ secondary: "Save a spot",
576
+ },
577
+ foundations: {
578
+ accentColor: "orange",
579
+ neutralColor: "sand",
580
+ radius: "md",
581
+ shape: "rounded",
582
+ appearance: "light",
583
+ bodyFont: "bricolage",
584
+ headingFont: "bricolage",
585
+ border: 1,
586
+ depth: "raised",
587
+ material: "paper",
588
+ },
589
+ material: {
590
+ id: "fiesta-paper",
591
+ parameters: mat(25, 35, 0, 0.25, 0.2, 1, 170),
592
+ },
593
+ frame: "picado",
594
+ character: {
595
+ controls: "standard",
596
+ motion: { style: "springy", press: 1.5, tempo: 1 },
597
+ type: {
598
+ headingCase: "none",
599
+ headingTracking: -0.01,
600
+ headingWeight: 700,
601
+ numerals: "proportional",
602
+ },
603
+ states: "stamp",
604
+ details: {
605
+ focus: "offset",
606
+ divider: "dashed",
607
+ selection: "highlighter",
608
+ scrollbar: "accent",
609
+ iconStroke: 2.25,
610
+ },
611
+ backdrop: { pattern: "halftone", intensity: 0.2, scale: 1.2 },
612
+ },
613
+ chrome: { edge: "stepped", well: "paper", corners: "round" },
614
+ },
615
+ {
616
+ slug: "holi-colours",
617
+ symbol: "holiColours",
618
+ name: "Holi Colours",
619
+ description: "Throw some colour.",
620
+ detail: "Clouds of coloured powder drifting in from the corners.",
621
+ swatches: ["#ff4d9a", "#f5b800", "#20c997"],
622
+ voice: {
623
+ eyebrow: "SPRING · COLOUR PLAY",
624
+ headline: "Throw some colour.",
625
+ body: "Bright, messy and shared. Wash it off tomorrow.",
626
+ primary: "Play",
627
+ secondary: "Watch",
628
+ },
629
+ foundations: {
630
+ accentColor: "pink",
631
+ neutralColor: "mauve",
632
+ radius: "lg",
633
+ shape: "pill",
634
+ appearance: "light",
635
+ bodyFont: "rounded",
636
+ headingFont: "rounded",
637
+ border: 1,
638
+ depth: "floating",
639
+ material: "soft",
640
+ },
641
+ material: {
642
+ id: "powder-wash",
643
+ parameters: mat(15, 25, 0.3, 0.15, 0.3, 1, 150),
644
+ },
645
+ frame: "gulal",
646
+ character: {
647
+ controls: "clay",
648
+ motion: { style: "drift", press: 1.5, tempo: 1.2 },
649
+ type: {
650
+ headingCase: "none",
651
+ headingTracking: 0,
652
+ headingWeight: 600,
653
+ numerals: "proportional",
654
+ },
655
+ states: "glow",
656
+ details: {
657
+ focus: "offset",
658
+ divider: "dotted",
659
+ selection: "highlighter",
660
+ scrollbar: "accent",
661
+ iconStroke: 2,
662
+ },
663
+ backdrop: { pattern: "caustics", intensity: 0.25, scale: 1.5 },
664
+ },
665
+ chrome: { edge: "pill", well: "none", corners: "inherit" },
666
+ },
667
+ {
668
+ slug: "yule-knit",
669
+ symbol: "yuleKnit",
670
+ name: "Yule Knit",
671
+ description: "Cosy by design.",
672
+ detail: "Sweater knit, pine green, cranberry and cream wool.",
673
+ swatches: ["#1f5e3a", "#b3261e", "#fbf6ee"],
674
+ voice: {
675
+ eyebrow: "WINTER · FIRESIDE",
676
+ headline: "Cosy by design.",
677
+ body: "Pull up a chair. The cider is still warm.",
678
+ primary: "Warm up",
679
+ secondary: "Stay in",
680
+ },
681
+ foundations: {
682
+ accentColor: "crimson",
683
+ neutralColor: "sage",
684
+ radius: "md",
685
+ shape: "rounded",
686
+ appearance: "light",
687
+ bodyFont: "inter",
688
+ headingFont: "fraunces",
689
+ border: 1,
690
+ depth: "raised",
691
+ material: "soft",
692
+ },
693
+ material: { id: "wool", parameters: mat(25, 35, 0.2, 0.25, 0.1, 1.5) },
694
+ frame: "knit",
695
+ character: {
696
+ controls: "stitched",
697
+ motion: { style: "drift", press: 1, tempo: 1.3 },
698
+ type: {
699
+ headingCase: "none",
700
+ headingTracking: 0,
701
+ headingWeight: 600,
702
+ numerals: "oldstyle",
703
+ },
704
+ states: "inlay",
705
+ details: {
706
+ focus: "double",
707
+ divider: "dashed",
708
+ selection: "highlighter",
709
+ scrollbar: "accent",
710
+ iconStroke: 1.75,
711
+ },
712
+ backdrop: { pattern: "fibre", intensity: 0.3, scale: 1.4 },
713
+ },
714
+ chrome: { edge: "line", well: "paper", corners: "round" },
715
+ },
716
+ {
717
+ slug: "glass-ui",
718
+ symbol: "glassUI",
719
+ name: "Glass UI",
720
+ description: "Light, through glass.",
721
+ detail: "Translucent layers, specular rims and soft refraction.",
722
+ swatches: ["#ffffff", "#7ab8ff", "#ff9ad0"],
723
+ voice: {
724
+ eyebrow: "LAYERS · DEPTH · LIGHT",
725
+ headline: "Light, through glass.",
726
+ body: "Content first. The interface floats just above it.",
727
+ primary: "Continue",
728
+ secondary: "Not now",
729
+ },
730
+ foundations: {
731
+ accentColor: "blue",
732
+ neutralColor: "slate",
733
+ radius: "lg",
734
+ shape: "pill",
735
+ appearance: "light",
736
+ bodyFont: "system",
737
+ headingFont: "system",
738
+ border: 1,
739
+ depth: "floating",
740
+ material: "glossy",
741
+ },
742
+ material: { id: "liquid-glass", parameters: mat(0, 0, 0.25, 0, 0.9) },
743
+ frame: "liquid",
744
+ character: {
745
+ controls: "glass",
746
+ motion: { style: "springy", press: 1, tempo: 1 },
747
+ type: {
748
+ headingCase: "none",
749
+ headingTracking: -0.02,
750
+ headingWeight: 600,
751
+ numerals: "proportional",
752
+ },
753
+ states: "glow",
754
+ details: {
755
+ focus: "glow",
756
+ divider: "line",
757
+ selection: "accent",
758
+ scrollbar: "thin",
759
+ iconStroke: 1.5,
760
+ },
761
+ backdrop: { pattern: "none", intensity: 0, scale: 1 },
762
+ },
763
+ chrome: { edge: "pill", well: "glass", corners: "inherit" },
764
+ },
765
+ ];
766
+ const id = (s) => "dixy/" + s.slug;
767
+ /** v2 source documents, migrated by documents.ts like every other starter. */
768
+ export const launchDocuments = launchStarters.map((s) => ({
769
+ schemaVersion: 2,
770
+ id: id(s),
771
+ name: s.name,
772
+ revision: 1,
773
+ foundations: {
774
+ componentFinish: "inherit",
775
+ customAccent: false,
776
+ lightness: 0.54,
777
+ chroma: 0.2,
778
+ hue: 305,
779
+ density: "default",
780
+ ornament: "balanced",
781
+ relief: 1,
782
+ effects: "static",
783
+ ...s.foundations,
784
+ },
785
+ recipes: {
786
+ material: {
787
+ id: s.material.id,
788
+ version: 1,
789
+ parameters: s.material.parameters,
790
+ },
791
+ frame: {
792
+ id: s.frame,
793
+ version: 1,
794
+ parameters: { ...frameRecipes[s.frame].defaults },
795
+ },
796
+ },
797
+ }));
798
+ export const launchCharacters = Object.fromEntries(launchStarters.map((s) => [id(s), s.character]));
799
+ export const launchChrome = Object.fromEntries(launchStarters.map((s) => [id(s), s.chrome]));
800
+ export const launchMetadata = launchStarters.map(({ slug, symbol, name, description, detail, swatches, voice }) => ({
801
+ slug,
802
+ symbol,
803
+ name,
804
+ description,
805
+ detail,
806
+ swatches,
807
+ voice,
808
+ }));