@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,433 @@
1
+ import { freezeData } from "./freeze.js";
2
+ export const canopyShapes = [
3
+ "Scattered trails",
4
+ "Corner cascades",
5
+ "Overhead boughs",
6
+ "Long tendrils",
7
+ "Open crown",
8
+ ];
9
+ export const stemCharacters = [
10
+ "Twining vines",
11
+ "Woody branches",
12
+ "Tender shoots",
13
+ "Mossy roots",
14
+ ];
15
+ export const organicFrameRecipes = freezeData({
16
+ forest: {
17
+ label: "Living grove",
18
+ styles: [
19
+ "Woodland mix",
20
+ "Wild ivy",
21
+ "Fern grove",
22
+ "Willow canopy",
23
+ "Oak & moss",
24
+ "Spring growth",
25
+ "Ginkgo fans",
26
+ "Maple grove",
27
+ "Eucalyptus",
28
+ "Olive branch",
29
+ "Clover meadow",
30
+ "Wildflower hedge",
31
+ ],
32
+ defaults: {
33
+ density: 68,
34
+ cornerDensity: 78,
35
+ canopyDepth: 48,
36
+ variation: 72,
37
+ scale: 22,
38
+ stemWeight: 40,
39
+ motion: 30,
40
+ seed: 17,
41
+ },
42
+ light: ["#2c542f", "#7f9b4e", "#acb76e", "#696b3f"],
43
+ // Deeper, less saturated foliage: bright lime leaves read as confetti on dark ground.
44
+ dark: ["#4a7040", "#7f9f5c", "#a3ad7c", "#857f55"],
45
+ },
46
+ cushion: {
47
+ label: "Soft sculpture",
48
+ styles: ["Piped petals", "Twisted rope", "Candy pebbles", "Ribbon folds"],
49
+ defaults: {
50
+ density: 42,
51
+ cornerDensity: 72,
52
+ canopyDepth: 62,
53
+ variation: 68,
54
+ scale: 22,
55
+ stemWeight: 65,
56
+ motion: 42,
57
+ seed: 31,
58
+ },
59
+ light: ["#ca83a8", "#c5a9e1", "#f1ba9e", "#f8e0c8"],
60
+ dark: ["#bf7ea9", "#c7a5e5", "#ecc29f", "#e5d0b2"],
61
+ },
62
+ coral: {
63
+ label: "Tidal ornament",
64
+ styles: [
65
+ "Tidal ribbons",
66
+ "Seafoam beads",
67
+ "Glass droplets",
68
+ "Quiet currents",
69
+ ],
70
+ defaults: {
71
+ density: 38,
72
+ cornerDensity: 65,
73
+ canopyDepth: 60,
74
+ variation: 60,
75
+ scale: 18,
76
+ stemWeight: 45,
77
+ motion: 45,
78
+ seed: 47,
79
+ },
80
+ light: ["#4d9a92", "#85c8c0", "#b1d2db", "#d2ead6"],
81
+ dark: ["#54a49a", "#9fd9cc", "#88bacb", "#b4d8b9"],
82
+ },
83
+ deco: {
84
+ label: "Crafted inlay",
85
+ styles: ["Fine filigree", "Art deco", "Hammered edge", "Quiet gilding"],
86
+ defaults: {
87
+ density: 45,
88
+ cornerDensity: 76,
89
+ canopyDepth: 30,
90
+ variation: 45,
91
+ scale: 18,
92
+ stemWeight: 38,
93
+ motion: 28,
94
+ seed: 63,
95
+ },
96
+ light: ["#8c723a", "#c3a15b", "#eee0ae", "#67552c"],
97
+ dark: ["#9f8245", "#d8b972", "#f1e4bc", "#77663a"],
98
+ },
99
+ drafting: {
100
+ label: "Drafting marks",
101
+ styles: ["Dimensioned", "Ruler ticks", "Construction lines", "Quiet draft"],
102
+ defaults: {
103
+ density: 55,
104
+ cornerDensity: 100,
105
+ canopyDepth: 40,
106
+ variation: 30,
107
+ scale: 20,
108
+ stemWeight: 30,
109
+ motion: 30,
110
+ seed: 11,
111
+ },
112
+ light: ["#2b5c9e", "#6f93c9", "#c4472f", "#1d3557"],
113
+ dark: ["#eef5ff", "#9cc2f0", "#ffd27a", "#bcd6f5"],
114
+ },
115
+ riso: {
116
+ label: "Riso print",
117
+ styles: ["Misprint", "Halftone", "Taped corners", "Clean stamp"],
118
+ defaults: {
119
+ density: 40,
120
+ cornerDensity: 70,
121
+ canopyDepth: 30,
122
+ variation: 55,
123
+ scale: 22,
124
+ stemWeight: 40,
125
+ motion: 20,
126
+ seed: 29,
127
+ },
128
+ light: ["#ff48b0", "#0078bf", "#ffe14d", "#2a2a2a"],
129
+ dark: ["#ff6ac1", "#3fa9f5", "#e8c93a", "#f2efe6"],
130
+ },
131
+ neon: {
132
+ label: "Neon tubes",
133
+ styles: ["Tube outline", "Broken tubes", "Sign shapes", "Low hum"],
134
+ defaults: {
135
+ density: 45,
136
+ cornerDensity: 60,
137
+ canopyDepth: 55,
138
+ variation: 65,
139
+ scale: 22,
140
+ stemWeight: 40,
141
+ motion: 35,
142
+ seed: 41,
143
+ },
144
+ light: ["#d6338f", "#128aa8", "#d99a1c", "#3b3540"],
145
+ dark: ["#ff4fd8", "#3ff2ff", "#ffd166", "#2a2233"],
146
+ },
147
+ sumi: {
148
+ label: "Ink brush",
149
+ styles: ["Bamboo", "Plum blossom", "Dry brush", "Ensō"],
150
+ defaults: {
151
+ density: 40,
152
+ cornerDensity: 70,
153
+ canopyDepth: 45,
154
+ variation: 45,
155
+ scale: 22,
156
+ stemWeight: 40,
157
+ motion: 20,
158
+ seed: 7,
159
+ },
160
+ light: ["#1c1b19", "#45533f", "#c4505a", "#c8402a"],
161
+ dark: ["#ebe5d8", "#a9b59b", "#e58c94", "#d65a42"],
162
+ },
163
+ transit: {
164
+ label: "Transit lines",
165
+ styles: ["Line map", "Station roundels", "Platform edge", "Quiet line"],
166
+ defaults: {
167
+ density: 50,
168
+ cornerDensity: 60,
169
+ canopyDepth: 40,
170
+ variation: 40,
171
+ scale: 22,
172
+ stemWeight: 40,
173
+ motion: 30,
174
+ seed: 5,
175
+ },
176
+ light: ["#2e9e4f", "#ef7d1a", "#1f6fd1", "#33393f"],
177
+ dark: ["#4cc36f", "#ff9a3d", "#5a9bff", "#d3d8de"],
178
+ },
179
+ // 2026-12 launch frames. Painters live in organic-paint-launch.ts.
180
+ crt: {
181
+ label: "Phosphor CRT",
182
+ styles: ["Box corners", "Status line", "Raster ticks", "Quiet cursor"],
183
+ defaults: {
184
+ density: 55,
185
+ cornerDensity: 70,
186
+ canopyDepth: 30,
187
+ variation: 20,
188
+ scale: 20,
189
+ stemWeight: 30,
190
+ motion: 40,
191
+ seed: 64,
192
+ },
193
+ light: ["#2f7a3d", "#7fb98a", "#b8641c", "#24402a"],
194
+ dark: ["#3dff6e", "#1f9e44", "#ffb000", "#7dffa0"],
195
+ },
196
+ panes: {
197
+ label: "TUI panes",
198
+ styles: ["Pane titles", "Key hints", "Split panes", "Bare panes"],
199
+ defaults: {
200
+ density: 60,
201
+ cornerDensity: 50,
202
+ canopyDepth: 30,
203
+ variation: 30,
204
+ scale: 18,
205
+ stemWeight: 30,
206
+ motion: 30,
207
+ seed: 16,
208
+ },
209
+ light: ["#1f6fb2", "#5f8a00", "#c42d74", "#586e75"],
210
+ dark: ["#5fafff", "#87d75f", "#ff87d7", "#9a9a9a"],
211
+ },
212
+ swiss: {
213
+ label: "Swiss grid",
214
+ styles: ["Crop marks", "Red block", "Grid ticks", "Bare grid"],
215
+ defaults: {
216
+ density: 50,
217
+ cornerDensity: 80,
218
+ canopyDepth: 40,
219
+ variation: 20,
220
+ scale: 20,
221
+ stemWeight: 40,
222
+ motion: 0,
223
+ seed: 26,
224
+ },
225
+ light: ["#e30613", "#0d0d0d", "#9a9a9a", "#0d0d0d"],
226
+ dark: ["#ff2a2a", "#f4f4f4", "#6a6a6a", "#f4f4f4"],
227
+ },
228
+ azulejo: {
229
+ label: "Azulejo tiles",
230
+ styles: ["Corner tiles", "Border run", "Floral rosette", "Single tile"],
231
+ defaults: {
232
+ density: 45,
233
+ cornerDensity: 80,
234
+ canopyDepth: 40,
235
+ variation: 30,
236
+ scale: 20,
237
+ stemWeight: 40,
238
+ motion: 20,
239
+ seed: 14,
240
+ },
241
+ light: ["#1f4fa0", "#5f86c9", "#d79a2b", "#eef3fc"],
242
+ dark: ["#8fb3ff", "#4f74c0", "#e8c06a", "#1a2d57"],
243
+ },
244
+ formwork: {
245
+ label: "Formwork",
246
+ styles: ["Tie holes", "Stencil marks", "Board seams", "Bare concrete"],
247
+ defaults: {
248
+ density: 50,
249
+ cornerDensity: 70,
250
+ canopyDepth: 40,
251
+ variation: 30,
252
+ scale: 20,
253
+ stemWeight: 50,
254
+ motion: 0,
255
+ seed: 4,
256
+ },
257
+ light: ["#5d5a55", "#8e8b84", "#d9961a", "#2a2927"],
258
+ dark: ["#9b968c", "#6b6862", "#e0a020", "#e6e2da"],
259
+ },
260
+ atomic: {
261
+ label: "Atomic age",
262
+ styles: ["Starbursts", "Boomerangs", "Orbit atoms", "Lone star"],
263
+ defaults: {
264
+ density: 50,
265
+ cornerDensity: 70,
266
+ canopyDepth: 40,
267
+ variation: 50,
268
+ scale: 20,
269
+ stemWeight: 40,
270
+ motion: 30,
271
+ seed: 57,
272
+ },
273
+ light: ["#ef8a3c", "#2a9d8f", "#e76f51", "#2c3a3f"],
274
+ dark: ["#f4a261", "#4cc3b3", "#ef8a6f", "#f6ecd6"],
275
+ },
276
+ hud: {
277
+ label: "HUD brackets",
278
+ styles: ["Target brackets", "Telemetry", "Reticle", "Clean brackets"],
279
+ defaults: {
280
+ density: 55,
281
+ cornerDensity: 80,
282
+ canopyDepth: 40,
283
+ variation: 30,
284
+ scale: 20,
285
+ stemWeight: 40,
286
+ motion: 40,
287
+ seed: 412,
288
+ },
289
+ light: ["#0a8aa3", "#3fa6bb", "#e05a2a", "#0b3a47"],
290
+ dark: ["#5ff3ff", "#2bb5c8", "#ff8a4c", "#cdf9ff"],
291
+ },
292
+ hazard: {
293
+ label: "Cargo hazard",
294
+ styles: ["Hazard stripes", "Rivet seams", "Cargo stencils", "Clean plate"],
295
+ defaults: {
296
+ density: 50,
297
+ cornerDensity: 70,
298
+ canopyDepth: 40,
299
+ variation: 30,
300
+ scale: 20,
301
+ stemWeight: 50,
302
+ motion: 30,
303
+ seed: 88,
304
+ },
305
+ light: ["#e09a00", "#1d1f21", "#c0392b", "#4b5156"],
306
+ dark: ["#f2a900", "#0e0f10", "#e5533d", "#a5a59c"],
307
+ },
308
+ orbit: {
309
+ label: "Solar orbits",
310
+ styles: ["Orbit rings", "Gold foil", "Star field", "Single orbit"],
311
+ defaults: {
312
+ density: 45,
313
+ cornerDensity: 70,
314
+ canopyDepth: 50,
315
+ variation: 40,
316
+ scale: 22,
317
+ stemWeight: 30,
318
+ motion: 30,
319
+ seed: 1,
320
+ },
321
+ light: ["#b8892b", "#e7c56a", "#8a8ea6", "#1d2033"],
322
+ dark: ["#e2b85a", "#f3d98c", "#a3a3b8", "#f0ecdf"],
323
+ },
324
+ rangoli: {
325
+ label: "Rangoli & diyas",
326
+ styles: ["Rangoli corners", "Diya row", "Marigold string", "Single diya"],
327
+ defaults: {
328
+ density: 50,
329
+ cornerDensity: 75,
330
+ canopyDepth: 45,
331
+ variation: 40,
332
+ scale: 22,
333
+ stemWeight: 40,
334
+ motion: 35,
335
+ seed: 108,
336
+ },
337
+ light: ["#c2185b", "#f08c00", "#f7c948", "#00897b"],
338
+ dark: ["#ff5c9a", "#ffb627", "#ffe08a", "#26c6b0"],
339
+ },
340
+ papercut: {
341
+ label: "Paper-cut",
342
+ styles: ["Lanterns", "Scallop edge", "Cloud scrolls", "Single lantern"],
343
+ defaults: {
344
+ density: 50,
345
+ cornerDensity: 70,
346
+ canopyDepth: 45,
347
+ variation: 35,
348
+ scale: 22,
349
+ stemWeight: 40,
350
+ motion: 30,
351
+ seed: 8,
352
+ },
353
+ light: ["#c8102e", "#e3ac1f", "#8a1020", "#5a0d12"],
354
+ dark: ["#f5c542", "#ffe7a8", "#ff5a6e", "#ffe7a8"],
355
+ },
356
+ picado: {
357
+ label: "Papel picado",
358
+ styles: ["Bunting", "Marigold garland", "Paper confetti", "Short string"],
359
+ defaults: {
360
+ density: 55,
361
+ cornerDensity: 60,
362
+ canopyDepth: 45,
363
+ variation: 50,
364
+ scale: 20,
365
+ stemWeight: 40,
366
+ motion: 35,
367
+ seed: 31,
368
+ },
369
+ light: ["#e8590c", "#d6336c", "#7048e8", "#12b886"],
370
+ dark: ["#ff922b", "#f06595", "#9775fa", "#38d9a9"],
371
+ },
372
+ gulal: {
373
+ label: "Colour powder",
374
+ styles: ["Powder clouds", "Splashes", "Speckle dust", "Soft haze"],
375
+ defaults: {
376
+ density: 50,
377
+ cornerDensity: 75,
378
+ canopyDepth: 50,
379
+ variation: 60,
380
+ scale: 24,
381
+ stemWeight: 40,
382
+ motion: 25,
383
+ seed: 3,
384
+ },
385
+ light: ["#ff4d9a", "#f5b800", "#20c997", "#4dabf7"],
386
+ dark: ["#ff5fa2", "#ffd43b", "#38d9a9", "#74c0fc"],
387
+ },
388
+ knit: {
389
+ label: "Knit wool",
390
+ styles: ["Fair Isle band", "Snowflakes", "Cable stitch", "Plain rib"],
391
+ defaults: {
392
+ density: 50,
393
+ cornerDensity: 60,
394
+ canopyDepth: 40,
395
+ variation: 30,
396
+ scale: 20,
397
+ stemWeight: 40,
398
+ motion: 25,
399
+ seed: 12,
400
+ },
401
+ light: ["#1f5e3a", "#b3261e", "#f4ecdd", "#2d3b2f"],
402
+ dark: ["#c9b98f", "#e5534b", "#16261c", "#9fb8a4"],
403
+ },
404
+ liquid: {
405
+ label: "Liquid glass",
406
+ styles: ["Specular rim", "Refraction", "Light catch", "Clear"],
407
+ defaults: {
408
+ density: 50,
409
+ cornerDensity: 60,
410
+ canopyDepth: 50,
411
+ variation: 30,
412
+ scale: 22,
413
+ stemWeight: 40,
414
+ motion: 30,
415
+ seed: 26,
416
+ },
417
+ light: ["#ffffff", "#9fc4ff", "#ffc2e2", "#0a1a33"],
418
+ dark: ["#ffffff", "#6ea8ff", "#d68cff", "#e8f0ff"],
419
+ },
420
+ });
421
+ export function isOrganicFrame(frame) {
422
+ return Object.hasOwn(organicFrameRecipes, frame);
423
+ }
424
+ export const organicStyles = Object.values(organicFrameRecipes).flatMap((recipe) => [...recipe.styles]);
425
+ export function defaultOrganicOrnament(frame) {
426
+ const recipe = organicFrameRecipes[isOrganicFrame(frame) ? frame : "forest"];
427
+ return {
428
+ ...recipe.defaults,
429
+ style: recipe.styles[0],
430
+ canopy: canopyShapes[0],
431
+ stem: stemCharacters[0],
432
+ };
433
+ }
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from "react";
2
+ import type { OrnamentLevel, MotionPreference, EffectsPreference } from "@dixy-ui/tokens";
3
+ /** Structural counterpart to core's optional ornament slot; no core runtime dependency. */
4
+ export interface OrnamentProps {
5
+ part: "theme" | "card" | "dialog" | "switch-thumb";
6
+ ornament: OrnamentLevel;
7
+ motion: MotionPreference;
8
+ effects: EffectsPreference;
9
+ animate: boolean;
10
+ }
11
+ export declare function useOrnamentId(prefix: string): string;
12
+ export declare function OrnamentLayer({ skin, children, ...props }: OrnamentProps & {
13
+ skin: string;
14
+ children: ReactNode;
15
+ }): import("react").JSX.Element | null;
16
+ /** Fixed-size hardware never stretches with the surrounding panel. */
17
+ export declare function Fasteners({ id, dark, }: {
18
+ id: string;
19
+ dark?: boolean;
20
+ }): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useId } from "react";
4
+ export function useOrnamentId(prefix) {
5
+ return "dixy-" + prefix + "-" + useId().replace(/[^a-zA-Z0-9_-]/g, "");
6
+ }
7
+ export function OrnamentLayer({ skin, children, ...props }) {
8
+ if (props.effects === "reduced" || props.ornament === "quiet")
9
+ return null;
10
+ return (_jsx("span", { "aria-hidden": "true", className: `dixy-skin-ornament dixy-${skin}-ornament dixy-skin-ornament-${props.part}`, "data-animated": props.animate && props.motion !== "reduced" ? "" : undefined, "data-motion": props.motion, "data-ornament": props.ornament, children: children }));
11
+ }
12
+ /** Fixed-size hardware never stretches with the surrounding panel. */
13
+ export function Fasteners({ id, dark = false, }) {
14
+ return (_jsxs(_Fragment, { children: [_jsx("svg", { width: "0", height: "0", className: "dixy-skin-definitions", children: _jsxs("defs", { children: [_jsxs("radialGradient", { id: id + "-steel", cx: ".32", cy: ".25", children: [_jsx("stop", { stopColor: dark ? "#87918c" : "#fff" }), _jsx("stop", { offset: ".45", stopColor: dark ? "#353d39" : "#b6b8b7" }), _jsx("stop", { offset: "1", stopColor: dark ? "#101713" : "#676d6a" })] }), _jsxs("g", { id: id + "-screw", children: [_jsx("circle", { cx: "7", cy: "7", r: "6", fill: "url(#" + id + "-steel)", stroke: dark ? "#050a07" : "#878c88" }), _jsx("circle", { cx: "7", cy: "7", r: "4.5", fill: "none", stroke: "#ffffff", strokeOpacity: ".24" }), _jsx("path", { d: "m4.5 8.4 5-2.8m-3.8-1 2.6 4.8", stroke: dark ? "#070d09" : "#4c524e", strokeWidth: "1.2", strokeLinecap: "round" })] })] }) }), ["tl", "tr", "bl", "br"].map((corner, i) => (_jsx("svg", { className: "dixy-skin-fastener dixy-skin-fastener-" + corner, viewBox: "0 0 14 14", children: _jsx("use", { href: "#" + id + "-screw", transform: `rotate(${i * 57} 7 7)` }) }, corner)))] }));
15
+ }