@pure-ds/storybook 0.1.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.
- package/.storybook/addons/description/preview.js +15 -0
- package/.storybook/addons/description/register.js +60 -0
- package/.storybook/addons/html-preview/Panel.jsx +327 -0
- package/.storybook/addons/html-preview/constants.js +6 -0
- package/.storybook/addons/html-preview/preview.js +178 -0
- package/.storybook/addons/html-preview/register.js +16 -0
- package/.storybook/addons/pds-configurator/SearchTool.js +44 -0
- package/.storybook/addons/pds-configurator/Tool.js +30 -0
- package/.storybook/addons/pds-configurator/constants.js +9 -0
- package/.storybook/addons/pds-configurator/preview.js +159 -0
- package/.storybook/addons/pds-configurator/register.js +24 -0
- package/.storybook/docs.css +35 -0
- package/.storybook/htmlPreview.css +103 -0
- package/.storybook/htmlPreview.js +271 -0
- package/.storybook/main.js +160 -0
- package/.storybook/preview-body.html +48 -0
- package/.storybook/preview-head.html +11 -0
- package/.storybook/preview.js +1563 -0
- package/README.md +266 -0
- package/bin/index.js +40 -0
- package/dist/pds-reference.json +2101 -0
- package/package.json +45 -0
- package/pds.config.js +6 -0
- package/public/assets/css/app.css +1216 -0
- package/public/assets/data/auto-design-advanced.json +704 -0
- package/public/assets/data/auto-design-simple.json +123 -0
- package/public/assets/img/icon-512x512.png +0 -0
- package/public/assets/img/logo-trans.png +0 -0
- package/public/assets/img/logo.png +0 -0
- package/public/assets/js/app.js +15088 -0
- package/public/assets/js/app.js.map +7 -0
- package/public/assets/js/lit.js +1176 -0
- package/public/assets/js/lit.js.map +7 -0
- package/public/assets/js/pds.js +9801 -0
- package/public/assets/js/pds.js.map +7 -0
- package/public/assets/pds/components/pds-calendar.js +837 -0
- package/public/assets/pds/components/pds-drawer.js +857 -0
- package/public/assets/pds/components/pds-icon.js +338 -0
- package/public/assets/pds/components/pds-jsonform.js +1775 -0
- package/public/assets/pds/components/pds-richtext.js +1035 -0
- package/public/assets/pds/components/pds-scrollrow.js +331 -0
- package/public/assets/pds/components/pds-splitpanel.js +401 -0
- package/public/assets/pds/components/pds-tabstrip.js +251 -0
- package/public/assets/pds/components/pds-toaster.js +446 -0
- package/public/assets/pds/components/pds-upload.js +657 -0
- package/public/assets/pds/custom-elements.json +2003 -0
- package/public/assets/pds/icons/pds-icons.svg +498 -0
- package/public/assets/pds/pds-css-complete.json +1861 -0
- package/public/assets/pds/pds-runtime-config.json +11 -0
- package/public/assets/pds/pds.css-data.json +2152 -0
- package/public/assets/pds/styles/pds-components.css +1944 -0
- package/public/assets/pds/styles/pds-components.css.js +3895 -0
- package/public/assets/pds/styles/pds-primitives.css +352 -0
- package/public/assets/pds/styles/pds-primitives.css.js +711 -0
- package/public/assets/pds/styles/pds-styles.css +3761 -0
- package/public/assets/pds/styles/pds-styles.css.js +7529 -0
- package/public/assets/pds/styles/pds-tokens.css +699 -0
- package/public/assets/pds/styles/pds-tokens.css.js +1405 -0
- package/public/assets/pds/styles/pds-utilities.css +763 -0
- package/public/assets/pds/styles/pds-utilities.css.js +1533 -0
- package/public/assets/pds/vscode-custom-data.json +824 -0
- package/scripts/build-pds-reference.mjs +807 -0
- package/scripts/generate-stories.js +542 -0
- package/scripts/package-build.js +86 -0
- package/src/js/app.js +17 -0
- package/src/js/common/ask.js +208 -0
- package/src/js/common/common.js +20 -0
- package/src/js/common/font-loader.js +200 -0
- package/src/js/common/msg.js +90 -0
- package/src/js/lit.js +40 -0
- package/src/js/pds-core/pds-config.js +1162 -0
- package/src/js/pds-core/pds-enhancer-metadata.js +75 -0
- package/src/js/pds-core/pds-enhancers.js +357 -0
- package/src/js/pds-core/pds-enums.js +86 -0
- package/src/js/pds-core/pds-generator.js +5317 -0
- package/src/js/pds-core/pds-ontology.js +256 -0
- package/src/js/pds-core/pds-paths.js +109 -0
- package/src/js/pds-core/pds-query.js +571 -0
- package/src/js/pds-core/pds-registry.js +129 -0
- package/src/js/pds-core/pds.d.ts +129 -0
- package/src/js/pds.d.ts +408 -0
- package/src/js/pds.js +1579 -0
- package/src/pds-core/pds-api.js +105 -0
- package/stories/GettingStarted.md +96 -0
- package/stories/GettingStarted.stories.js +144 -0
- package/stories/WhatIsPDS.md +194 -0
- package/stories/WhatIsPDS.stories.js +144 -0
- package/stories/components/PdsCalendar.stories.js +263 -0
- package/stories/components/PdsDrawer.stories.js +623 -0
- package/stories/components/PdsIcon.stories.js +78 -0
- package/stories/components/PdsJsonform.stories.js +1444 -0
- package/stories/components/PdsRichtext.stories.js +367 -0
- package/stories/components/PdsScrollrow.stories.js +140 -0
- package/stories/components/PdsSplitpanel.stories.js +502 -0
- package/stories/components/PdsTabstrip.stories.js +442 -0
- package/stories/components/PdsToaster.stories.js +186 -0
- package/stories/components/PdsUpload.stories.js +66 -0
- package/stories/enhancements/Dropdowns.stories.js +185 -0
- package/stories/enhancements/InteractiveStates.stories.js +625 -0
- package/stories/enhancements/MeshGradients.stories.js +320 -0
- package/stories/enhancements/OpenGroups.stories.js +227 -0
- package/stories/enhancements/RangeSliders.stories.js +232 -0
- package/stories/enhancements/RequiredFields.stories.js +189 -0
- package/stories/enhancements/Toggles.stories.js +167 -0
- package/stories/foundations/Colors.stories.js +283 -0
- package/stories/foundations/Icons.stories.js +305 -0
- package/stories/foundations/SmartSurfaces.stories.js +367 -0
- package/stories/foundations/Spacing.stories.js +175 -0
- package/stories/foundations/Typography.stories.js +960 -0
- package/stories/foundations/ZIndex.stories.js +325 -0
- package/stories/patterns/BorderEffects.stories.js +72 -0
- package/stories/patterns/Layout.stories.js +99 -0
- package/stories/patterns/Utilities.stories.js +107 -0
- package/stories/primitives/Accordion.stories.js +359 -0
- package/stories/primitives/Alerts.stories.js +64 -0
- package/stories/primitives/Badges.stories.js +183 -0
- package/stories/primitives/Buttons.stories.js +229 -0
- package/stories/primitives/Cards.stories.js +353 -0
- package/stories/primitives/FormGroups.stories.js +569 -0
- package/stories/primitives/Forms.stories.js +131 -0
- package/stories/primitives/Media.stories.js +203 -0
- package/stories/primitives/Tables.stories.js +232 -0
- package/stories/reference/ReferenceCatalog.stories.js +28 -0
- package/stories/reference/reference-catalog.js +413 -0
- package/stories/reference/reference-docs.js +302 -0
- package/stories/reference/reference-helpers.js +310 -0
- package/stories/utilities/GridSystem.stories.js +208 -0
- package/stories/utils/PdsAsk.stories.js +420 -0
- package/stories/utils/toast-utils.js +148 -0
|
@@ -0,0 +1,1162 @@
|
|
|
1
|
+
import { enums } from "./pds-enums.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Design system presets - pre-configured themes for quick starts.
|
|
5
|
+
* Expose as an object keyed by preset id.
|
|
6
|
+
*/
|
|
7
|
+
export const presets = {
|
|
8
|
+
"ocean-breeze": {
|
|
9
|
+
id: "ocean-breeze",
|
|
10
|
+
name: "Ocean Breeze",
|
|
11
|
+
tags: ["playful"],
|
|
12
|
+
description:
|
|
13
|
+
"Fresh and calming ocean-inspired palette with professional undertones",
|
|
14
|
+
options: {
|
|
15
|
+
liquidGlassEffects: true,
|
|
16
|
+
backgroundMesh: 3,
|
|
17
|
+
},
|
|
18
|
+
colors: {
|
|
19
|
+
primary: "#0891b2",
|
|
20
|
+
secondary: "#64748b",
|
|
21
|
+
accent: "#06b6d4",
|
|
22
|
+
background: "#f0f9ff",
|
|
23
|
+
darkMode: {
|
|
24
|
+
background: "#0c1821",
|
|
25
|
+
secondary: "#94a3b8",
|
|
26
|
+
primary: "#0891b2", // Tailwind cyan-600 as base - generates darker 600 shade
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
typography: {
|
|
30
|
+
baseFontSize: 17,
|
|
31
|
+
fontScale: 1.5, // More dramatic scale for breathing room
|
|
32
|
+
fontFamilyHeadings:
|
|
33
|
+
'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
|
|
34
|
+
fontFamilyBody:
|
|
35
|
+
'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
|
|
36
|
+
},
|
|
37
|
+
spatialRhythm: {
|
|
38
|
+
baseUnit: 6, // More spacious
|
|
39
|
+
scaleRatio: 1.2,
|
|
40
|
+
},
|
|
41
|
+
shape: {
|
|
42
|
+
radiusSize: enums.RadiusSizes.xxlarge, // Soft, flowing
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
"midnight-steel": {
|
|
46
|
+
id: "midnight-steel",
|
|
47
|
+
name: "Midnight Steel",
|
|
48
|
+
description:
|
|
49
|
+
"Bold industrial aesthetic with sharp contrasts and urban edge",
|
|
50
|
+
colors: {
|
|
51
|
+
primary: "#3b82f6",
|
|
52
|
+
secondary: "#52525b",
|
|
53
|
+
accent: "#f59e0b",
|
|
54
|
+
background: "#fafaf9",
|
|
55
|
+
darkMode: {
|
|
56
|
+
background: "#18181b",
|
|
57
|
+
secondary: "#71717a",
|
|
58
|
+
primary: "#3b82f6", // Tailwind blue-500 - optimized mid-tone
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
typography: {
|
|
62
|
+
baseFontSize: 16,
|
|
63
|
+
fontScale: 1.333,
|
|
64
|
+
fontFamilyHeadings:
|
|
65
|
+
"'IBM Plex Sans', system-ui, -apple-system, sans-serif",
|
|
66
|
+
fontFamilyBody: "'Inter', system-ui, -apple-system, sans-serif",
|
|
67
|
+
fontWeightSemibold: 600,
|
|
68
|
+
},
|
|
69
|
+
spatialRhythm: {
|
|
70
|
+
baseUnit: 4,
|
|
71
|
+
scaleRatio: 1.25,
|
|
72
|
+
},
|
|
73
|
+
shape: {
|
|
74
|
+
radiusSize: enums.RadiusSizes.small, // Crisp corporate edges
|
|
75
|
+
borderWidth: enums.BorderWidths.thin,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
"neural-glow": {
|
|
79
|
+
id: "neural-glow",
|
|
80
|
+
name: "Neural Glow",
|
|
81
|
+
description:
|
|
82
|
+
"AI-inspired with vibrant purple-blue gradients and futuristic vibes",
|
|
83
|
+
colors: {
|
|
84
|
+
primary: "#8b5cf6",
|
|
85
|
+
secondary: "#6366f1",
|
|
86
|
+
accent: "#ec4899",
|
|
87
|
+
background: "#faf5ff",
|
|
88
|
+
darkMode: {
|
|
89
|
+
background: "#0f0a1a",
|
|
90
|
+
secondary: "#818cf8",
|
|
91
|
+
primary: "#8b5cf6", // Tailwind violet-500 - optimized mid-tone
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
typography: {
|
|
95
|
+
baseFontSize: 16,
|
|
96
|
+
fontScale: 1.618, // Golden ratio for futuristic feel
|
|
97
|
+
fontFamilyHeadings: "'Space Grotesk', system-ui, sans-serif",
|
|
98
|
+
fontFamilyBody: "'Space Grotesk', system-ui, sans-serif",
|
|
99
|
+
},
|
|
100
|
+
spatialRhythm: {
|
|
101
|
+
baseUnit: 4,
|
|
102
|
+
scaleRatio: 1.5,
|
|
103
|
+
},
|
|
104
|
+
shape: {
|
|
105
|
+
radiusSize: enums.RadiusSizes.xlarge, // Smooth, modern
|
|
106
|
+
borderWidth: enums.BorderWidths.medium,
|
|
107
|
+
},
|
|
108
|
+
behavior: {
|
|
109
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
"paper-and-ink": {
|
|
113
|
+
id: "paper-and-ink",
|
|
114
|
+
name: "Paper & Ink",
|
|
115
|
+
tags: ["app", "featured"],
|
|
116
|
+
description: "Ultra-minimal design with focus on typography and whitespace",
|
|
117
|
+
colors: {
|
|
118
|
+
primary: "#171717",
|
|
119
|
+
secondary: "#737373",
|
|
120
|
+
accent: "#525252",
|
|
121
|
+
background: "#ffffff",
|
|
122
|
+
darkMode: {
|
|
123
|
+
background: "#0a0a0a",
|
|
124
|
+
secondary: "#a3a3a3",
|
|
125
|
+
primary: "#737373", // Tailwind gray-500 - optimized mid-tone
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
typography: {
|
|
129
|
+
baseFontSize: 18, // Readable, print-like
|
|
130
|
+
fontScale: 1.333, // Perfect fourth
|
|
131
|
+
fontFamilyHeadings: "'Helvetica Neue', 'Arial', sans-serif",
|
|
132
|
+
fontFamilyBody: "'Georgia', 'Times New Roman', serif",
|
|
133
|
+
fontWeightNormal: 400,
|
|
134
|
+
fontWeightBold: 700,
|
|
135
|
+
},
|
|
136
|
+
spatialRhythm: {
|
|
137
|
+
baseUnit: 4, // Tight, compact
|
|
138
|
+
scaleRatio: 1.2,
|
|
139
|
+
},
|
|
140
|
+
shape: {
|
|
141
|
+
radiusSize: enums.RadiusSizes.none, // Sharp editorial
|
|
142
|
+
borderWidth: enums.BorderWidths.thin,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
"sunset-paradise": {
|
|
146
|
+
id: "sunset-paradise",
|
|
147
|
+
name: "Sunset Paradise",
|
|
148
|
+
description: "Warm tropical colors evoking golden hour by the beach",
|
|
149
|
+
options: {
|
|
150
|
+
liquidGlassEffects: true,
|
|
151
|
+
backgroundMesh: 2,
|
|
152
|
+
},
|
|
153
|
+
colors: {
|
|
154
|
+
primary: "#ea580c", // Darker orange for better light mode contrast
|
|
155
|
+
secondary: "#d4a373",
|
|
156
|
+
accent: "#fb923c",
|
|
157
|
+
background: "#fffbeb",
|
|
158
|
+
darkMode: {
|
|
159
|
+
background: "#1a0f0a",
|
|
160
|
+
secondary: "#c9a482",
|
|
161
|
+
// Ensure sufficient contrast for primary-filled components with white text in dark mode
|
|
162
|
+
primary: "#f97316", // Tailwind orange-500 - optimized mid-tone
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
typography: {
|
|
166
|
+
baseFontSize: 16,
|
|
167
|
+
fontScale: 1.5,
|
|
168
|
+
fontFamilyHeadings: "'Quicksand', 'Comfortaa', sans-serif",
|
|
169
|
+
fontFamilyBody: "'Quicksand', 'Comfortaa', sans-serif",
|
|
170
|
+
},
|
|
171
|
+
spatialRhythm: {
|
|
172
|
+
baseUnit: 6, // Relaxed, vacation vibes
|
|
173
|
+
scaleRatio: 1.5,
|
|
174
|
+
},
|
|
175
|
+
shape: {
|
|
176
|
+
radiusSize: enums.RadiusSizes.xxlarge, // Playful, rounded
|
|
177
|
+
borderWidth: enums.BorderWidths.medium,
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
"retro-wave": {
|
|
181
|
+
id: "retro-wave",
|
|
182
|
+
name: "Retro Wave",
|
|
183
|
+
description: "Nostalgic 80s-inspired palette with neon undertones",
|
|
184
|
+
colors: {
|
|
185
|
+
primary: "#c026d3", // Darker fuchsia for better light mode contrast
|
|
186
|
+
secondary: "#a78bfa",
|
|
187
|
+
accent: "#22d3ee",
|
|
188
|
+
background: "#fef3ff",
|
|
189
|
+
darkMode: {
|
|
190
|
+
background: "#1a0a1f",
|
|
191
|
+
secondary: "#c4b5fd",
|
|
192
|
+
// Deepen primary for dark mode to meet AA contrast with white text
|
|
193
|
+
primary: "#d946ef", // Tailwind fuchsia-500 - optimized mid-tone
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
typography: {
|
|
197
|
+
baseFontSize: 15,
|
|
198
|
+
fontScale: 1.5,
|
|
199
|
+
fontFamilyHeadings: "'Orbitron', 'Impact', monospace",
|
|
200
|
+
fontFamilyBody: "'Courier New', 'Courier', monospace",
|
|
201
|
+
fontWeightBold: 700,
|
|
202
|
+
},
|
|
203
|
+
spatialRhythm: {
|
|
204
|
+
baseUnit: 4,
|
|
205
|
+
scaleRatio: 1.25,
|
|
206
|
+
},
|
|
207
|
+
shape: {
|
|
208
|
+
radiusSize: enums.RadiusSizes.none, // Sharp geometric 80s
|
|
209
|
+
borderWidth: enums.BorderWidths.thick, // Bold borders
|
|
210
|
+
},
|
|
211
|
+
behavior: {
|
|
212
|
+
transitionSpeed: enums.TransitionSpeeds.instant, // Snappy retro feel
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
"forest-canopy": {
|
|
216
|
+
id: "forest-canopy",
|
|
217
|
+
name: "Forest Canopy",
|
|
218
|
+
description: "Natural earth tones with organic, calming green hues",
|
|
219
|
+
colors: {
|
|
220
|
+
primary: "#059669",
|
|
221
|
+
secondary: "#78716c",
|
|
222
|
+
accent: "#84cc16",
|
|
223
|
+
background: "#f0fdf4",
|
|
224
|
+
darkMode: {
|
|
225
|
+
background: "#0a1410",
|
|
226
|
+
secondary: "#a8a29e",
|
|
227
|
+
primary: "#10b981", // Tailwind emerald-500 - optimized mid-tone
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
typography: {
|
|
231
|
+
baseFontSize: 16,
|
|
232
|
+
fontScale: 1.414, // Square root of 2, organic growth
|
|
233
|
+
fontFamilyHeadings: "'Merriweather Sans', 'Arial', sans-serif",
|
|
234
|
+
fontFamilyBody: "'Merriweather', 'Georgia', serif",
|
|
235
|
+
},
|
|
236
|
+
spatialRhythm: {
|
|
237
|
+
baseUnit: 6,
|
|
238
|
+
scaleRatio: 1.3,
|
|
239
|
+
},
|
|
240
|
+
shape: {
|
|
241
|
+
radiusSize: enums.RadiusSizes.medium, // Natural, organic curves
|
|
242
|
+
borderWidth: enums.BorderWidths.thin,
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
"ruby-elegance": {
|
|
246
|
+
id: "ruby-elegance",
|
|
247
|
+
name: "Ruby Elegance",
|
|
248
|
+
description: "Sophisticated palette with rich ruby reds and warm accents",
|
|
249
|
+
colors: {
|
|
250
|
+
primary: "#dc2626",
|
|
251
|
+
secondary: "#9ca3af",
|
|
252
|
+
accent: "#be123c",
|
|
253
|
+
background: "#fef2f2",
|
|
254
|
+
darkMode: {
|
|
255
|
+
background: "#1b0808",
|
|
256
|
+
secondary: "#d1d5db",
|
|
257
|
+
primary: "#ef4444", // Tailwind red-500 - optimized mid-tone
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
typography: {
|
|
261
|
+
baseFontSize: 17,
|
|
262
|
+
fontScale: 1.5,
|
|
263
|
+
fontFamilyHeadings: "'Playfair Display', 'Georgia', serif",
|
|
264
|
+
fontFamilyBody: "'Crimson Text', 'Garamond', serif",
|
|
265
|
+
fontWeightNormal: 400,
|
|
266
|
+
fontWeightSemibold: 600,
|
|
267
|
+
},
|
|
268
|
+
spatialRhythm: {
|
|
269
|
+
baseUnit: 4,
|
|
270
|
+
scaleRatio: 1.333,
|
|
271
|
+
},
|
|
272
|
+
shape: {
|
|
273
|
+
radiusSize: enums.RadiusSizes.small, // Subtle elegance
|
|
274
|
+
borderWidth: enums.BorderWidths.thin,
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
"desert-dawn": {
|
|
278
|
+
id: "desert-dawn",
|
|
279
|
+
name: "Desert Dawn",
|
|
280
|
+
description:
|
|
281
|
+
"Sun-baked neutrals with grounded terracotta and cool oasis accents",
|
|
282
|
+
colors: {
|
|
283
|
+
primary: "#b45309", // terracotta
|
|
284
|
+
secondary: "#a8a29e", // warm gray
|
|
285
|
+
accent: "#0ea5a8", // oasis teal
|
|
286
|
+
background: "#fcf6ef",
|
|
287
|
+
darkMode: {
|
|
288
|
+
background: "#12100e",
|
|
289
|
+
secondary: "#d1d5db",
|
|
290
|
+
// Deepen primary in dark to keep white text AA-compliant
|
|
291
|
+
primary: "#f59e0b", // Tailwind amber-500 - optimized mid-tone
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
typography: {
|
|
295
|
+
baseFontSize: 16,
|
|
296
|
+
fontScale: 1.414,
|
|
297
|
+
fontFamilyHeadings:
|
|
298
|
+
"'Source Sans Pro', system-ui, -apple-system, sans-serif",
|
|
299
|
+
fontFamilyBody: "'Source Serif Pro', Georgia, serif",
|
|
300
|
+
},
|
|
301
|
+
spatialRhythm: {
|
|
302
|
+
baseUnit: 6,
|
|
303
|
+
scaleRatio: 1.3,
|
|
304
|
+
},
|
|
305
|
+
shape: {
|
|
306
|
+
radiusSize: enums.RadiusSizes.medium,
|
|
307
|
+
borderWidth: enums.BorderWidths.medium,
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
"contrast-pro": {
|
|
311
|
+
id: "contrast-pro",
|
|
312
|
+
name: "Contrast Pro",
|
|
313
|
+
description: "Accessibility-first, high-contrast UI with assertive clarity",
|
|
314
|
+
colors: {
|
|
315
|
+
primary: "#1f2937", // slate-800
|
|
316
|
+
secondary: "#111827", // gray-900
|
|
317
|
+
accent: "#eab308", // amber-500
|
|
318
|
+
background: "#ffffff",
|
|
319
|
+
darkMode: {
|
|
320
|
+
background: "#0b0f14",
|
|
321
|
+
secondary: "#9ca3af",
|
|
322
|
+
// Use a lighter primary in dark mode to ensure outline/link text
|
|
323
|
+
// has strong contrast against the very-dark surface. The generator
|
|
324
|
+
// will still pick appropriate darker fill shades for buttons so
|
|
325
|
+
// white-on-fill contrast is preserved.
|
|
326
|
+
primary: "#9ca3af", // Tailwind gray-400 - optimized mid-tone
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
typography: {
|
|
330
|
+
baseFontSize: 17,
|
|
331
|
+
fontScale: 1.2,
|
|
332
|
+
fontFamilyHeadings:
|
|
333
|
+
"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
334
|
+
fontFamilyBody:
|
|
335
|
+
"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
336
|
+
fontWeightBold: 700,
|
|
337
|
+
},
|
|
338
|
+
spatialRhythm: {
|
|
339
|
+
baseUnit: 3, // compact, data-dense
|
|
340
|
+
scaleRatio: 1.2,
|
|
341
|
+
},
|
|
342
|
+
shape: {
|
|
343
|
+
radiusSize: enums.RadiusSizes.small,
|
|
344
|
+
borderWidth: enums.BorderWidths.thick,
|
|
345
|
+
},
|
|
346
|
+
behavior: {
|
|
347
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
348
|
+
focusRingWidth: 4,
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
"pastel-play": {
|
|
352
|
+
id: "pastel-play",
|
|
353
|
+
name: "Pastel Play",
|
|
354
|
+
description:
|
|
355
|
+
"Playful pastels with soft surfaces and friendly rounded shapes",
|
|
356
|
+
colors: {
|
|
357
|
+
primary: "#db2777", // raspberry
|
|
358
|
+
secondary: "#a78bfa", // lavender
|
|
359
|
+
accent: "#34d399", // mint
|
|
360
|
+
background: "#fff7fa",
|
|
361
|
+
darkMode: {
|
|
362
|
+
background: "#1a1016",
|
|
363
|
+
secondary: "#c4b5fd",
|
|
364
|
+
primary: "#ec4899", // Tailwind pink-500 - optimized mid-tone
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
typography: {
|
|
368
|
+
baseFontSize: 16,
|
|
369
|
+
fontScale: 1.333,
|
|
370
|
+
fontFamilyHeadings: "'Nunito', system-ui, -apple-system, sans-serif",
|
|
371
|
+
fontFamilyBody: "'Nunito', system-ui, -apple-system, sans-serif",
|
|
372
|
+
lineHeightRelaxed: enums.LineHeights.relaxed,
|
|
373
|
+
},
|
|
374
|
+
spatialRhythm: {
|
|
375
|
+
baseUnit: 6, // comfy
|
|
376
|
+
scaleRatio: 1.4,
|
|
377
|
+
},
|
|
378
|
+
shape: {
|
|
379
|
+
radiusSize: enums.RadiusSizes.xxlarge,
|
|
380
|
+
borderWidth: enums.BorderWidths.thin,
|
|
381
|
+
},
|
|
382
|
+
behavior: {
|
|
383
|
+
transitionSpeed: enums.TransitionSpeeds.slow,
|
|
384
|
+
animationEasing: enums.AnimationEasings["ease-out"],
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
"brutalist-tech": {
|
|
388
|
+
id: "brutalist-tech",
|
|
389
|
+
name: "Brutalist Tech",
|
|
390
|
+
description:
|
|
391
|
+
"Stark grayscale with engineered accents and unapologetically bold structure",
|
|
392
|
+
colors: {
|
|
393
|
+
primary: "#111111",
|
|
394
|
+
secondary: "#4b5563",
|
|
395
|
+
accent: "#06b6d4", // cyan signal
|
|
396
|
+
background: "#f8fafc",
|
|
397
|
+
darkMode: {
|
|
398
|
+
background: "#0b0b0b",
|
|
399
|
+
secondary: "#9ca3af",
|
|
400
|
+
// Set a chromatic primary in dark mode to ensure both:
|
|
401
|
+
// - outline/link contrast on dark surface, and
|
|
402
|
+
// - sufficient button fill contrast against white text.
|
|
403
|
+
// Cyan signal aligns with preset accent and produces high-contrast dark fills.
|
|
404
|
+
primary: "#06b6d4", // Tailwind cyan-500 - optimized mid-tone
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
typography: {
|
|
408
|
+
baseFontSize: 15,
|
|
409
|
+
fontScale: 1.25,
|
|
410
|
+
fontFamilyHeadings:
|
|
411
|
+
"'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
412
|
+
fontFamilyBody: "'Inter', system-ui, -apple-system, sans-serif",
|
|
413
|
+
letterSpacingTight: -0.02,
|
|
414
|
+
},
|
|
415
|
+
spatialRhythm: {
|
|
416
|
+
baseUnit: 4,
|
|
417
|
+
scaleRatio: 1.25,
|
|
418
|
+
},
|
|
419
|
+
shape: {
|
|
420
|
+
radiusSize: enums.RadiusSizes.none,
|
|
421
|
+
borderWidth: enums.BorderWidths.thick,
|
|
422
|
+
},
|
|
423
|
+
behavior: {
|
|
424
|
+
transitionSpeed: enums.TransitionSpeeds.instant,
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
"zen-garden": {
|
|
428
|
+
id: "zen-garden",
|
|
429
|
+
name: "Zen Garden",
|
|
430
|
+
description:
|
|
431
|
+
"Soft botanicals with contemplative spacing and balanced motion",
|
|
432
|
+
colors: {
|
|
433
|
+
primary: "#3f6212", // deep olive
|
|
434
|
+
secondary: "#6b7280", // neutral leaf shadow
|
|
435
|
+
accent: "#7c3aed", // iris bloom
|
|
436
|
+
background: "#f7fbef",
|
|
437
|
+
darkMode: {
|
|
438
|
+
background: "#0d130a",
|
|
439
|
+
secondary: "#a3a3a3",
|
|
440
|
+
primary: "#84cc16", // Tailwind lime-500 - optimized mid-tone
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
typography: {
|
|
444
|
+
baseFontSize: 17,
|
|
445
|
+
fontScale: 1.414,
|
|
446
|
+
fontFamilyHeadings: "'Merriweather', Georgia, serif",
|
|
447
|
+
fontFamilyBody: "'Noto Sans', system-ui, -apple-system, sans-serif",
|
|
448
|
+
},
|
|
449
|
+
spatialRhythm: {
|
|
450
|
+
baseUnit: 6, // airy
|
|
451
|
+
scaleRatio: 1.35,
|
|
452
|
+
},
|
|
453
|
+
shape: {
|
|
454
|
+
radiusSize: enums.RadiusSizes.large,
|
|
455
|
+
borderWidth: enums.BorderWidths.medium,
|
|
456
|
+
},
|
|
457
|
+
behavior: {
|
|
458
|
+
transitionSpeed: enums.TransitionSpeeds.normal,
|
|
459
|
+
animationEasing: enums.AnimationEasings.ease,
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
"fitness-pro": {
|
|
463
|
+
id: "fitness-pro",
|
|
464
|
+
name: "Fitness Pro",
|
|
465
|
+
tags: ["app", "featured"],
|
|
466
|
+
description:
|
|
467
|
+
"Health and fitness tracking aesthetic with data-driven dark surfaces and vibrant accent rings",
|
|
468
|
+
options: {
|
|
469
|
+
liquidGlassEffects: true,
|
|
470
|
+
backgroundMesh: 2,
|
|
471
|
+
},
|
|
472
|
+
colors: {
|
|
473
|
+
primary: "#e91e63", // vibrant pink-magenta for data highlights
|
|
474
|
+
secondary: "#78909c", // cool gray for secondary data
|
|
475
|
+
accent: "#ab47bc", // purple accent for premium features
|
|
476
|
+
background: "#fafafa",
|
|
477
|
+
darkMode: {
|
|
478
|
+
background: "#1a1d21", // deep charcoal like WHOOP
|
|
479
|
+
secondary: "#78909c",
|
|
480
|
+
primary: "#0a4ca4",
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
typography: {
|
|
484
|
+
baseFontSize: 15,
|
|
485
|
+
fontScale: 1.25,
|
|
486
|
+
fontFamilyHeadings:
|
|
487
|
+
"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
488
|
+
fontFamilyBody:
|
|
489
|
+
"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
490
|
+
fontWeightNormal: 400,
|
|
491
|
+
fontWeightMedium: 500,
|
|
492
|
+
fontWeightSemibold: 600,
|
|
493
|
+
fontWeightBold: 700,
|
|
494
|
+
lineHeightNormal: enums.LineHeights.tight,
|
|
495
|
+
},
|
|
496
|
+
spatialRhythm: {
|
|
497
|
+
baseUnit: 4,
|
|
498
|
+
scaleRatio: 1.25,
|
|
499
|
+
containerPadding: 1.25,
|
|
500
|
+
sectionSpacing: 2.5,
|
|
501
|
+
},
|
|
502
|
+
shape: {
|
|
503
|
+
radiusSize: enums.RadiusSizes.large, // smooth cards and buttons
|
|
504
|
+
borderWidth: enums.BorderWidths.thin,
|
|
505
|
+
},
|
|
506
|
+
layers: {
|
|
507
|
+
shadowDepth: "medium",
|
|
508
|
+
blurMedium: 12,
|
|
509
|
+
},
|
|
510
|
+
behavior: {
|
|
511
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
512
|
+
animationEasing: enums.AnimationEasings["ease-out"],
|
|
513
|
+
focusRingWidth: 2,
|
|
514
|
+
},
|
|
515
|
+
},
|
|
516
|
+
"travel-market": {
|
|
517
|
+
id: "travel-market",
|
|
518
|
+
name: "Travel Market",
|
|
519
|
+
description:
|
|
520
|
+
"Hospitality marketplace design with clean cards, subtle shadows, and trust-building neutrals",
|
|
521
|
+
options: {
|
|
522
|
+
liquidGlassEffects: true,
|
|
523
|
+
backgroundMesh: 3,
|
|
524
|
+
},
|
|
525
|
+
colors: {
|
|
526
|
+
primary: "#d93251", // Darker coral red for better contrast (was #ff385c)
|
|
527
|
+
secondary: "#717171", // neutral gray for text
|
|
528
|
+
accent: "#144990", // teal for experiences/verified
|
|
529
|
+
background: "#ffffff",
|
|
530
|
+
darkMode: {
|
|
531
|
+
background: "#222222",
|
|
532
|
+
secondary: "#b0b0b0",
|
|
533
|
+
primary: "#ff5a7a", // Lighter for dark mode
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
typography: {
|
|
537
|
+
baseFontSize: 16,
|
|
538
|
+
fontScale: 1.2,
|
|
539
|
+
fontFamilyHeadings:
|
|
540
|
+
"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
541
|
+
fontFamilyBody:
|
|
542
|
+
"'Circular', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
543
|
+
fontWeightNormal: 400,
|
|
544
|
+
fontWeightMedium: 500,
|
|
545
|
+
fontWeightSemibold: 600,
|
|
546
|
+
fontWeightBold: 700,
|
|
547
|
+
lineHeightRelaxed: enums.LineHeights.relaxed,
|
|
548
|
+
},
|
|
549
|
+
spatialRhythm: {
|
|
550
|
+
baseUnit: 4,
|
|
551
|
+
scaleRatio: 1.25,
|
|
552
|
+
containerMaxWidth: 1440,
|
|
553
|
+
containerPadding: 1.5,
|
|
554
|
+
sectionSpacing: 3.0,
|
|
555
|
+
},
|
|
556
|
+
shape: {
|
|
557
|
+
radiusSize: enums.RadiusSizes.medium,
|
|
558
|
+
borderWidth: enums.BorderWidths.thin,
|
|
559
|
+
},
|
|
560
|
+
layers: {
|
|
561
|
+
shadowDepth: "light",
|
|
562
|
+
blurLight: 8,
|
|
563
|
+
},
|
|
564
|
+
behavior: {
|
|
565
|
+
transitionSpeed: enums.TransitionSpeeds.normal,
|
|
566
|
+
animationEasing: enums.AnimationEasings["ease-in-out"],
|
|
567
|
+
hoverOpacity: 0.9,
|
|
568
|
+
},
|
|
569
|
+
},
|
|
570
|
+
"mobility-app": {
|
|
571
|
+
id: "mobility-app",
|
|
572
|
+
name: "Mobility App",
|
|
573
|
+
tags: ["app", "featured"],
|
|
574
|
+
description:
|
|
575
|
+
"On-demand service platform with bold typography, map-ready colors, and action-driven UI",
|
|
576
|
+
options: {
|
|
577
|
+
liquidGlassEffects: true,
|
|
578
|
+
backgroundMesh: 0,
|
|
579
|
+
},
|
|
580
|
+
colors: {
|
|
581
|
+
primary: "#000000", // Uber-inspired black for trust and sophistication
|
|
582
|
+
secondary: "#545454", // mid-gray for secondary elements
|
|
583
|
+
accent: "#06c167", // green for success/confirmation
|
|
584
|
+
background: "#f6f6f6",
|
|
585
|
+
darkMode: {
|
|
586
|
+
background: "#0f0f0f",
|
|
587
|
+
secondary: "#8a8a8a",
|
|
588
|
+
primary: "#06c167", // Use bright green for dark mode buttons (was white)
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
typography: {
|
|
592
|
+
baseFontSize: 16,
|
|
593
|
+
fontScale: 1.3,
|
|
594
|
+
fontFamilyHeadings:
|
|
595
|
+
"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
596
|
+
fontFamilyBody:
|
|
597
|
+
"'UberMove', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
598
|
+
fontWeightNormal: 400,
|
|
599
|
+
fontWeightMedium: 500,
|
|
600
|
+
fontWeightSemibold: 600,
|
|
601
|
+
fontWeightBold: 700,
|
|
602
|
+
},
|
|
603
|
+
spatialRhythm: {
|
|
604
|
+
baseUnit: 4,
|
|
605
|
+
scaleRatio: 1.25,
|
|
606
|
+
buttonPadding: 1.25,
|
|
607
|
+
inputPadding: 1.0,
|
|
608
|
+
},
|
|
609
|
+
shape: {
|
|
610
|
+
radiusSize: enums.RadiusSizes.small, // subtle, professional
|
|
611
|
+
borderWidth: enums.BorderWidths.medium,
|
|
612
|
+
},
|
|
613
|
+
behavior: {
|
|
614
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
615
|
+
animationEasing: enums.AnimationEasings["ease-out"],
|
|
616
|
+
focusRingWidth: 3,
|
|
617
|
+
},
|
|
618
|
+
a11y: {
|
|
619
|
+
minTouchTarget: enums.TouchTargetSizes.comfortable,
|
|
620
|
+
focusStyle: enums.FocusStyles.ring,
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
"fintech-secure": {
|
|
624
|
+
id: "fintech-secure",
|
|
625
|
+
name: "Fintech Secure",
|
|
626
|
+
description:
|
|
627
|
+
"Financial services app UI with trust-building blues, precise spacing, and security-first design",
|
|
628
|
+
options: {
|
|
629
|
+
liquidGlassEffects: false,
|
|
630
|
+
backgroundMesh: 0,
|
|
631
|
+
},
|
|
632
|
+
colors: {
|
|
633
|
+
primary: "#0a2540", // deep navy for trust and security
|
|
634
|
+
secondary: "#425466", // slate for secondary content
|
|
635
|
+
accent: "#00d4ff", // bright cyan for CTAs
|
|
636
|
+
background: "#f7fafc",
|
|
637
|
+
darkMode: {
|
|
638
|
+
background: "#0a1929",
|
|
639
|
+
secondary: "#8796a5",
|
|
640
|
+
primary: "#00d4ff",
|
|
641
|
+
},
|
|
642
|
+
},
|
|
643
|
+
typography: {
|
|
644
|
+
baseFontSize: 16,
|
|
645
|
+
fontScale: 1.25,
|
|
646
|
+
fontFamilyHeadings:
|
|
647
|
+
"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
648
|
+
fontFamilyBody:
|
|
649
|
+
"'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
650
|
+
fontFamilyMono:
|
|
651
|
+
"'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace",
|
|
652
|
+
fontWeightNormal: 400,
|
|
653
|
+
fontWeightMedium: 500,
|
|
654
|
+
fontWeightSemibold: 600,
|
|
655
|
+
fontWeightBold: 700,
|
|
656
|
+
},
|
|
657
|
+
spatialRhythm: {
|
|
658
|
+
baseUnit: 4,
|
|
659
|
+
scaleRatio: 1.25,
|
|
660
|
+
containerMaxWidth: 1280,
|
|
661
|
+
sectionSpacing: 2.5,
|
|
662
|
+
},
|
|
663
|
+
shape: {
|
|
664
|
+
radiusSize: enums.RadiusSizes.medium,
|
|
665
|
+
borderWidth: enums.BorderWidths.thin,
|
|
666
|
+
},
|
|
667
|
+
layers: {
|
|
668
|
+
shadowDepth: "light",
|
|
669
|
+
blurLight: 6,
|
|
670
|
+
},
|
|
671
|
+
behavior: {
|
|
672
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
673
|
+
animationEasing: enums.AnimationEasings["ease-in-out"],
|
|
674
|
+
focusRingWidth: 3,
|
|
675
|
+
focusRingOpacity: 0.4,
|
|
676
|
+
},
|
|
677
|
+
a11y: {
|
|
678
|
+
minTouchTarget: enums.TouchTargetSizes.standard,
|
|
679
|
+
focusStyle: enums.FocusStyles.ring,
|
|
680
|
+
},
|
|
681
|
+
},
|
|
682
|
+
"social-feed": {
|
|
683
|
+
id: "social-feed",
|
|
684
|
+
name: "Social Feed",
|
|
685
|
+
tags: ["app", "featured"],
|
|
686
|
+
description:
|
|
687
|
+
"Content-first social platform with minimal chrome, bold actions, and vibrant media presentation",
|
|
688
|
+
options: {
|
|
689
|
+
liquidGlassEffects: true,
|
|
690
|
+
backgroundMesh: 4,
|
|
691
|
+
},
|
|
692
|
+
colors: {
|
|
693
|
+
primary: "#1877f2", // social blue for links and primary actions
|
|
694
|
+
secondary: "#65676b", // neutral gray for secondary text
|
|
695
|
+
accent: "#fe2c55", // vibrant pink-red for likes/hearts
|
|
696
|
+
background: "#ffffff",
|
|
697
|
+
darkMode: {
|
|
698
|
+
background: "#18191a",
|
|
699
|
+
secondary: "#b0b3b8",
|
|
700
|
+
primary: "#2d88ff",
|
|
701
|
+
},
|
|
702
|
+
},
|
|
703
|
+
typography: {
|
|
704
|
+
baseFontSize: 15,
|
|
705
|
+
fontScale: 1.2,
|
|
706
|
+
fontFamilyHeadings:
|
|
707
|
+
"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
708
|
+
fontFamilyBody:
|
|
709
|
+
"system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
710
|
+
fontWeightNormal: 400,
|
|
711
|
+
fontWeightMedium: 500,
|
|
712
|
+
fontWeightSemibold: 600,
|
|
713
|
+
fontWeightBold: 700,
|
|
714
|
+
lineHeightNormal: enums.LineHeights.relaxed,
|
|
715
|
+
},
|
|
716
|
+
spatialRhythm: {
|
|
717
|
+
baseUnit: 4,
|
|
718
|
+
scaleRatio: 1.25,
|
|
719
|
+
containerMaxWidth: 680,
|
|
720
|
+
sectionSpacing: 1.5,
|
|
721
|
+
},
|
|
722
|
+
shape: {
|
|
723
|
+
radiusSize: enums.RadiusSizes.medium,
|
|
724
|
+
borderWidth: enums.BorderWidths.thin,
|
|
725
|
+
},
|
|
726
|
+
behavior: {
|
|
727
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
728
|
+
animationEasing: enums.AnimationEasings["ease-out"],
|
|
729
|
+
hoverOpacity: 0.85,
|
|
730
|
+
},
|
|
731
|
+
},
|
|
732
|
+
"enterprise-dash": {
|
|
733
|
+
id: "enterprise-dash",
|
|
734
|
+
tags: ["app", "featured"],
|
|
735
|
+
name: "Enterprise Dashboard",
|
|
736
|
+
description:
|
|
737
|
+
"Data-dense business intelligence app interface with organized hierarchy and professional polish",
|
|
738
|
+
options: {
|
|
739
|
+
liquidGlassEffects: false,
|
|
740
|
+
backgroundMesh: 2,
|
|
741
|
+
},
|
|
742
|
+
colors: {
|
|
743
|
+
primary: "#0066cc", // corporate blue for primary actions
|
|
744
|
+
secondary: "#5f6368", // neutral gray for text and chrome
|
|
745
|
+
accent: "#1a73e8", // bright blue for highlights
|
|
746
|
+
background: "#ffffff",
|
|
747
|
+
success: "#34a853",
|
|
748
|
+
warning: "#fbbc04",
|
|
749
|
+
danger: "#ea4335",
|
|
750
|
+
darkMode: {
|
|
751
|
+
background: "#202124",
|
|
752
|
+
secondary: "#9aa0a6",
|
|
753
|
+
primary: "#8ab4f8",
|
|
754
|
+
},
|
|
755
|
+
},
|
|
756
|
+
typography: {
|
|
757
|
+
baseFontSize: 14,
|
|
758
|
+
fontScale: 1.2,
|
|
759
|
+
fontFamilyHeadings:
|
|
760
|
+
"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
761
|
+
fontFamilyBody:
|
|
762
|
+
"'Roboto', system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
763
|
+
fontFamilyMono: "'Roboto Mono', ui-monospace, Consolas, monospace",
|
|
764
|
+
fontWeightNormal: 400,
|
|
765
|
+
fontWeightMedium: 500,
|
|
766
|
+
fontWeightSemibold: 600,
|
|
767
|
+
fontWeightBold: 700,
|
|
768
|
+
lineHeightNormal: enums.LineHeights.tight,
|
|
769
|
+
},
|
|
770
|
+
spatialRhythm: {
|
|
771
|
+
baseUnit: 4,
|
|
772
|
+
scaleRatio: 1.2,
|
|
773
|
+
containerMaxWidth: 1600,
|
|
774
|
+
containerPadding: 1.5,
|
|
775
|
+
sectionSpacing: 2.0,
|
|
776
|
+
},
|
|
777
|
+
shape: {
|
|
778
|
+
radiusSize: enums.RadiusSizes.small,
|
|
779
|
+
borderWidth: enums.BorderWidths.thin,
|
|
780
|
+
},
|
|
781
|
+
layers: {
|
|
782
|
+
shadowDepth: "light",
|
|
783
|
+
blurLight: 4,
|
|
784
|
+
},
|
|
785
|
+
behavior: {
|
|
786
|
+
transitionSpeed: enums.TransitionSpeeds.fast,
|
|
787
|
+
animationEasing: enums.AnimationEasings["ease-in-out"],
|
|
788
|
+
focusRingWidth: 2,
|
|
789
|
+
},
|
|
790
|
+
layout: {
|
|
791
|
+
densityCompact: 0.85,
|
|
792
|
+
gridColumns: 12,
|
|
793
|
+
},
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
};
|
|
797
|
+
|
|
798
|
+
/**
|
|
799
|
+
* Default configuration for the Pure Design System.
|
|
800
|
+
* This file defines the default settings for colors, typography,
|
|
801
|
+
* spatial rhythm, layers, shape, behavior, layout, advanced options,
|
|
802
|
+
* accessibility, components, and icons.
|
|
803
|
+
*/
|
|
804
|
+
// Default configuration moved into presets as the canonical "default" entry
|
|
805
|
+
presets.default = {
|
|
806
|
+
id: "default",
|
|
807
|
+
name: "Default",
|
|
808
|
+
tags: ["app", "featured"],
|
|
809
|
+
description: "Fresh and modern design system with balanced aesthetics and usability",
|
|
810
|
+
options: {
|
|
811
|
+
liquidGlassEffects: true,
|
|
812
|
+
backgroundMesh: 4,
|
|
813
|
+
},
|
|
814
|
+
|
|
815
|
+
form: {
|
|
816
|
+
options: {
|
|
817
|
+
widgets: {
|
|
818
|
+
booleans: "toggle", // 'toggle' | 'checkbox'
|
|
819
|
+
numbers: "input", // 'input' | 'range'
|
|
820
|
+
selects: "standard", // 'standard' | 'dropdown'
|
|
821
|
+
},
|
|
822
|
+
layouts: {
|
|
823
|
+
fieldsets: "default", // 'default' | 'flex' | 'grid' | 'accordion' | 'tabs' | 'card'
|
|
824
|
+
arrays: "default", // 'default' | 'compact'
|
|
825
|
+
},
|
|
826
|
+
enhancements: {
|
|
827
|
+
icons: true, // Enable icon-enhanced inputs
|
|
828
|
+
datalists: true, // Enable datalist autocomplete
|
|
829
|
+
rangeOutput: true, // Use .range-output for ranges
|
|
830
|
+
},
|
|
831
|
+
validation: {
|
|
832
|
+
showErrors: true, // Show validation errors inline
|
|
833
|
+
validateOnChange: false, // Validate on every change vs on submit
|
|
834
|
+
},
|
|
835
|
+
}
|
|
836
|
+
},
|
|
837
|
+
colors: {
|
|
838
|
+
// Palette - base colors that generate entire color palettes
|
|
839
|
+
primary: "#0e7490", // Darker cyan for better contrast
|
|
840
|
+
secondary: "#a99b95", // REQUIRED: Secondary/neutral color for gray scale generation
|
|
841
|
+
accent: "#e54271", // Accent color (pink red)
|
|
842
|
+
background: "#e7e6de", // Base background color for light mode
|
|
843
|
+
|
|
844
|
+
// Dark mode overrides - specify custom dark theme colors
|
|
845
|
+
darkMode: {
|
|
846
|
+
background: "#16171a", // Custom dark mode background (cool blue-gray)
|
|
847
|
+
secondary: "#8b9199", // Optional: custom dark grays (uses light secondary if omitted)
|
|
848
|
+
primary: "#06b6d4", // Tailwind cyan-500 - optimized mid-tone
|
|
849
|
+
// accent: null, // Optional: override accent color for dark mode
|
|
850
|
+
},
|
|
851
|
+
|
|
852
|
+
// Semantic colors (auto-generated from primary if not specified)
|
|
853
|
+
success: null, // Auto-generated green from primary if null
|
|
854
|
+
warning: "#B38600", // Warning color (defaults to accent if null)
|
|
855
|
+
danger: null, // Auto-generated red from primary if null
|
|
856
|
+
info: null, // Defaults to primary color if null
|
|
857
|
+
|
|
858
|
+
// Advanced color options
|
|
859
|
+
gradientStops: 3,
|
|
860
|
+
elevationOpacity: 0.05,
|
|
861
|
+
},
|
|
862
|
+
|
|
863
|
+
typography: {
|
|
864
|
+
// Essential typography settings (exposed in simple form)
|
|
865
|
+
baseFontSize: 16,
|
|
866
|
+
fontScale: 1.2, // Multiplier for heading size generation (1.2 = minor third)
|
|
867
|
+
fontFamilyHeadings:
|
|
868
|
+
'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
|
|
869
|
+
fontFamilyBody: 'system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
|
|
870
|
+
fontFamilyMono:
|
|
871
|
+
'ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace',
|
|
872
|
+
|
|
873
|
+
// Advanced typography options (exposed in advanced form)
|
|
874
|
+
fontWeightLight: enums.FontWeights.light,
|
|
875
|
+
fontWeightNormal: enums.FontWeights.normal,
|
|
876
|
+
fontWeightMedium: enums.FontWeights.medium,
|
|
877
|
+
fontWeightSemibold: enums.FontWeights.semibold,
|
|
878
|
+
fontWeightBold: enums.FontWeights.bold,
|
|
879
|
+
lineHeightTight: enums.LineHeights.tight,
|
|
880
|
+
lineHeightNormal: enums.LineHeights.normal,
|
|
881
|
+
lineHeightRelaxed: enums.LineHeights.relaxed,
|
|
882
|
+
letterSpacingTight: -0.025,
|
|
883
|
+
letterSpacingNormal: 0,
|
|
884
|
+
letterSpacingWide: 0.025,
|
|
885
|
+
},
|
|
886
|
+
|
|
887
|
+
spatialRhythm: {
|
|
888
|
+
// Essential spacing setting (exposed in simple form)
|
|
889
|
+
baseUnit: 4, // Base spacing unit in pixels (typically 16 = 1rem)
|
|
890
|
+
|
|
891
|
+
// Advanced spacing options
|
|
892
|
+
scaleRatio: 1.25,
|
|
893
|
+
maxSpacingSteps: 32,
|
|
894
|
+
containerMaxWidth: 1200,
|
|
895
|
+
containerPadding: 1.0,
|
|
896
|
+
inputPadding: 0.75,
|
|
897
|
+
buttonPadding: 1.0,
|
|
898
|
+
sectionSpacing: 2.0,
|
|
899
|
+
},
|
|
900
|
+
|
|
901
|
+
layers: {
|
|
902
|
+
shadowDepth: "medium",
|
|
903
|
+
blurLight: 4,
|
|
904
|
+
blurMedium: 8,
|
|
905
|
+
blurHeavy: 16,
|
|
906
|
+
zIndexBase: 0,
|
|
907
|
+
zIndexDropdown: 1000,
|
|
908
|
+
zIndexSticky: 1020,
|
|
909
|
+
zIndexFixed: 1030,
|
|
910
|
+
zIndexModal: 1040,
|
|
911
|
+
zIndexPopover: 1050,
|
|
912
|
+
zIndexTooltip: 1060,
|
|
913
|
+
zIndexNotification: 1070,
|
|
914
|
+
},
|
|
915
|
+
|
|
916
|
+
shape: {
|
|
917
|
+
radiusSize: enums.RadiusSizes.large,
|
|
918
|
+
borderWidth: enums.BorderWidths.medium,
|
|
919
|
+
customRadius: null,
|
|
920
|
+
},
|
|
921
|
+
|
|
922
|
+
behavior: {
|
|
923
|
+
transitionSpeed: enums.TransitionSpeeds.normal,
|
|
924
|
+
animationEasing: enums.AnimationEasings["ease-out"],
|
|
925
|
+
customTransitionSpeed: null,
|
|
926
|
+
customEasing: null,
|
|
927
|
+
focusRingWidth: 3,
|
|
928
|
+
focusRingOpacity: 0.3,
|
|
929
|
+
hoverOpacity: 0.8,
|
|
930
|
+
},
|
|
931
|
+
|
|
932
|
+
layout: {
|
|
933
|
+
gridColumns: 12,
|
|
934
|
+
gridGutter: 1.0,
|
|
935
|
+
breakpoints: {
|
|
936
|
+
sm: 640,
|
|
937
|
+
md: 768,
|
|
938
|
+
lg: 1024,
|
|
939
|
+
xl: 1280,
|
|
940
|
+
},
|
|
941
|
+
densityCompact: 0.8,
|
|
942
|
+
densityNormal: 1.0,
|
|
943
|
+
densityComfortable: 1.2,
|
|
944
|
+
buttonMinHeight: enums.TouchTargetSizes.standard,
|
|
945
|
+
inputMinHeight: 40,
|
|
946
|
+
|
|
947
|
+
// Layout utility system
|
|
948
|
+
utilities: {
|
|
949
|
+
grid: true,
|
|
950
|
+
flex: true,
|
|
951
|
+
spacing: true,
|
|
952
|
+
container: true,
|
|
953
|
+
},
|
|
954
|
+
|
|
955
|
+
gridSystem: {
|
|
956
|
+
columns: [1, 2, 3, 4, 6],
|
|
957
|
+
autoFitBreakpoints: {
|
|
958
|
+
sm: "150px",
|
|
959
|
+
md: "250px",
|
|
960
|
+
lg: "350px",
|
|
961
|
+
xl: "450px",
|
|
962
|
+
},
|
|
963
|
+
enableGapUtilities: true,
|
|
964
|
+
},
|
|
965
|
+
|
|
966
|
+
containerMaxWidth: "1400px",
|
|
967
|
+
containerPadding: "var(--spacing-6)",
|
|
968
|
+
},
|
|
969
|
+
|
|
970
|
+
advanced: {
|
|
971
|
+
linkStyle: enums.LinkStyles.inline,
|
|
972
|
+
colorDerivation: "hsl",
|
|
973
|
+
},
|
|
974
|
+
|
|
975
|
+
a11y: {
|
|
976
|
+
minTouchTarget: enums.TouchTargetSizes.standard,
|
|
977
|
+
prefersReducedMotion: true,
|
|
978
|
+
focusStyle: enums.FocusStyles.ring,
|
|
979
|
+
},
|
|
980
|
+
|
|
981
|
+
icons: {
|
|
982
|
+
set: "phosphor", // https://phosphoricons.com/
|
|
983
|
+
weight: "regular",
|
|
984
|
+
defaultSize: 24,
|
|
985
|
+
sizes: {
|
|
986
|
+
xs: 16,
|
|
987
|
+
sm: 20,
|
|
988
|
+
md: 24,
|
|
989
|
+
lg: 32,
|
|
990
|
+
xl: 48,
|
|
991
|
+
"2xl": 64,
|
|
992
|
+
},
|
|
993
|
+
include: {
|
|
994
|
+
navigation: [
|
|
995
|
+
"arrow-left",
|
|
996
|
+
"arrow-right",
|
|
997
|
+
"arrow-up",
|
|
998
|
+
"arrow-down",
|
|
999
|
+
"arrow-counter-clockwise",
|
|
1000
|
+
"caret-left",
|
|
1001
|
+
"caret-right",
|
|
1002
|
+
"caret-down",
|
|
1003
|
+
"caret-up",
|
|
1004
|
+
"x",
|
|
1005
|
+
"list",
|
|
1006
|
+
"list-dashes",
|
|
1007
|
+
"dots-three-vertical",
|
|
1008
|
+
"dots-three",
|
|
1009
|
+
"house",
|
|
1010
|
+
"gear",
|
|
1011
|
+
"magnifying-glass",
|
|
1012
|
+
"funnel",
|
|
1013
|
+
"tabs",
|
|
1014
|
+
"sidebar",
|
|
1015
|
+
],
|
|
1016
|
+
actions: [
|
|
1017
|
+
"plus",
|
|
1018
|
+
"minus",
|
|
1019
|
+
"check",
|
|
1020
|
+
"trash",
|
|
1021
|
+
"pencil",
|
|
1022
|
+
"floppy-disk",
|
|
1023
|
+
"copy",
|
|
1024
|
+
"download",
|
|
1025
|
+
"upload",
|
|
1026
|
+
"share",
|
|
1027
|
+
"link",
|
|
1028
|
+
"eye",
|
|
1029
|
+
"eye-slash",
|
|
1030
|
+
"heart",
|
|
1031
|
+
"star",
|
|
1032
|
+
"bookmark",
|
|
1033
|
+
"note-pencil",
|
|
1034
|
+
"cursor-click",
|
|
1035
|
+
"clipboard",
|
|
1036
|
+
"magic-wand",
|
|
1037
|
+
"sparkle",
|
|
1038
|
+
],
|
|
1039
|
+
communication: [
|
|
1040
|
+
"envelope",
|
|
1041
|
+
"bell",
|
|
1042
|
+
"bell-ringing",
|
|
1043
|
+
"bell-simple",
|
|
1044
|
+
"chat-circle",
|
|
1045
|
+
"phone",
|
|
1046
|
+
"paper-plane-tilt",
|
|
1047
|
+
"user",
|
|
1048
|
+
"users",
|
|
1049
|
+
"user-gear",
|
|
1050
|
+
"at",
|
|
1051
|
+
],
|
|
1052
|
+
content: [
|
|
1053
|
+
"image",
|
|
1054
|
+
"file",
|
|
1055
|
+
"file-text",
|
|
1056
|
+
"file-css",
|
|
1057
|
+
"file-js",
|
|
1058
|
+
"folder",
|
|
1059
|
+
"folder-open",
|
|
1060
|
+
"book-open",
|
|
1061
|
+
"camera",
|
|
1062
|
+
"video-camera",
|
|
1063
|
+
"play",
|
|
1064
|
+
"pause",
|
|
1065
|
+
"microphone",
|
|
1066
|
+
"brackets-curly",
|
|
1067
|
+
"code",
|
|
1068
|
+
"folder-simple",
|
|
1069
|
+
"grid-four",
|
|
1070
|
+
"briefcase",
|
|
1071
|
+
"chart-line",
|
|
1072
|
+
"chart-bar",
|
|
1073
|
+
"database",
|
|
1074
|
+
"map-pin"
|
|
1075
|
+
],
|
|
1076
|
+
status: [
|
|
1077
|
+
"info",
|
|
1078
|
+
"warning",
|
|
1079
|
+
"check-circle",
|
|
1080
|
+
"x-circle",
|
|
1081
|
+
"question",
|
|
1082
|
+
"shield",
|
|
1083
|
+
"shield-check",
|
|
1084
|
+
"shield-warning",
|
|
1085
|
+
"lock",
|
|
1086
|
+
"lock-open",
|
|
1087
|
+
"fingerprint",
|
|
1088
|
+
"circle-notch"
|
|
1089
|
+
],
|
|
1090
|
+
time: ["calendar", "clock", "timer", "hourglass"],
|
|
1091
|
+
commerce: [
|
|
1092
|
+
"shopping-cart",
|
|
1093
|
+
"credit-card",
|
|
1094
|
+
"currency-dollar",
|
|
1095
|
+
"tag",
|
|
1096
|
+
"receipt",
|
|
1097
|
+
"storefront",
|
|
1098
|
+
],
|
|
1099
|
+
formatting: [
|
|
1100
|
+
"text-align-left",
|
|
1101
|
+
"text-align-center",
|
|
1102
|
+
"text-align-right",
|
|
1103
|
+
"text-b",
|
|
1104
|
+
"text-italic",
|
|
1105
|
+
"text-underline",
|
|
1106
|
+
"list-bullets",
|
|
1107
|
+
"list-numbers",
|
|
1108
|
+
"text-aa",
|
|
1109
|
+
],
|
|
1110
|
+
system: [
|
|
1111
|
+
"cloud",
|
|
1112
|
+
"cloud-arrow-up",
|
|
1113
|
+
"cloud-arrow-down",
|
|
1114
|
+
"desktop",
|
|
1115
|
+
"device-mobile",
|
|
1116
|
+
"globe",
|
|
1117
|
+
"wifi-high",
|
|
1118
|
+
"battery-charging",
|
|
1119
|
+
"sun",
|
|
1120
|
+
"moon",
|
|
1121
|
+
"moon-stars",
|
|
1122
|
+
"palette",
|
|
1123
|
+
"rocket",
|
|
1124
|
+
"feather",
|
|
1125
|
+
"square",
|
|
1126
|
+
"circle",
|
|
1127
|
+
"squares-four",
|
|
1128
|
+
"lightning",
|
|
1129
|
+
"wrench",
|
|
1130
|
+
],
|
|
1131
|
+
},
|
|
1132
|
+
// Default sprite path for internal/dev use. For consumer apps, icons are exported to
|
|
1133
|
+
// [config.static.root]/icons/pds-icons.svg and components should consume from there.
|
|
1134
|
+
spritePath: "public/assets/pds/icons/pds-icons.svg",
|
|
1135
|
+
},
|
|
1136
|
+
|
|
1137
|
+
gap: 4,
|
|
1138
|
+
|
|
1139
|
+
debug: false,
|
|
1140
|
+
};
|
|
1141
|
+
// Note: presets is now a stable object keyed by id
|
|
1142
|
+
|
|
1143
|
+
/**
|
|
1144
|
+
* Default logging method - can be overridden at config root level
|
|
1145
|
+
* This is exported separately so it can be added to the root config object
|
|
1146
|
+
* @param {string} level - log level: 'log', 'warn', 'error', 'debug', 'info'
|
|
1147
|
+
* @param {string} message - primary message to log
|
|
1148
|
+
* @param {...any} data - additional data to log
|
|
1149
|
+
*/
|
|
1150
|
+
export function defaultLog(level = "log", message, ...data) {
|
|
1151
|
+
// Access debug from 'this' context when called as method, or check for common locations
|
|
1152
|
+
const debug = this?.debug || this?.design?.debug || false;
|
|
1153
|
+
|
|
1154
|
+
if (debug || level === "error" || level === "warn") {
|
|
1155
|
+
const method = console[level] || console.log;
|
|
1156
|
+
if (data.length > 0) {
|
|
1157
|
+
method(message, ...data);
|
|
1158
|
+
} else {
|
|
1159
|
+
method(message);
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
}
|