@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.
Files changed (129) hide show
  1. package/.storybook/addons/description/preview.js +15 -0
  2. package/.storybook/addons/description/register.js +60 -0
  3. package/.storybook/addons/html-preview/Panel.jsx +327 -0
  4. package/.storybook/addons/html-preview/constants.js +6 -0
  5. package/.storybook/addons/html-preview/preview.js +178 -0
  6. package/.storybook/addons/html-preview/register.js +16 -0
  7. package/.storybook/addons/pds-configurator/SearchTool.js +44 -0
  8. package/.storybook/addons/pds-configurator/Tool.js +30 -0
  9. package/.storybook/addons/pds-configurator/constants.js +9 -0
  10. package/.storybook/addons/pds-configurator/preview.js +159 -0
  11. package/.storybook/addons/pds-configurator/register.js +24 -0
  12. package/.storybook/docs.css +35 -0
  13. package/.storybook/htmlPreview.css +103 -0
  14. package/.storybook/htmlPreview.js +271 -0
  15. package/.storybook/main.js +160 -0
  16. package/.storybook/preview-body.html +48 -0
  17. package/.storybook/preview-head.html +11 -0
  18. package/.storybook/preview.js +1563 -0
  19. package/README.md +266 -0
  20. package/bin/index.js +40 -0
  21. package/dist/pds-reference.json +2101 -0
  22. package/package.json +45 -0
  23. package/pds.config.js +6 -0
  24. package/public/assets/css/app.css +1216 -0
  25. package/public/assets/data/auto-design-advanced.json +704 -0
  26. package/public/assets/data/auto-design-simple.json +123 -0
  27. package/public/assets/img/icon-512x512.png +0 -0
  28. package/public/assets/img/logo-trans.png +0 -0
  29. package/public/assets/img/logo.png +0 -0
  30. package/public/assets/js/app.js +15088 -0
  31. package/public/assets/js/app.js.map +7 -0
  32. package/public/assets/js/lit.js +1176 -0
  33. package/public/assets/js/lit.js.map +7 -0
  34. package/public/assets/js/pds.js +9801 -0
  35. package/public/assets/js/pds.js.map +7 -0
  36. package/public/assets/pds/components/pds-calendar.js +837 -0
  37. package/public/assets/pds/components/pds-drawer.js +857 -0
  38. package/public/assets/pds/components/pds-icon.js +338 -0
  39. package/public/assets/pds/components/pds-jsonform.js +1775 -0
  40. package/public/assets/pds/components/pds-richtext.js +1035 -0
  41. package/public/assets/pds/components/pds-scrollrow.js +331 -0
  42. package/public/assets/pds/components/pds-splitpanel.js +401 -0
  43. package/public/assets/pds/components/pds-tabstrip.js +251 -0
  44. package/public/assets/pds/components/pds-toaster.js +446 -0
  45. package/public/assets/pds/components/pds-upload.js +657 -0
  46. package/public/assets/pds/custom-elements.json +2003 -0
  47. package/public/assets/pds/icons/pds-icons.svg +498 -0
  48. package/public/assets/pds/pds-css-complete.json +1861 -0
  49. package/public/assets/pds/pds-runtime-config.json +11 -0
  50. package/public/assets/pds/pds.css-data.json +2152 -0
  51. package/public/assets/pds/styles/pds-components.css +1944 -0
  52. package/public/assets/pds/styles/pds-components.css.js +3895 -0
  53. package/public/assets/pds/styles/pds-primitives.css +352 -0
  54. package/public/assets/pds/styles/pds-primitives.css.js +711 -0
  55. package/public/assets/pds/styles/pds-styles.css +3761 -0
  56. package/public/assets/pds/styles/pds-styles.css.js +7529 -0
  57. package/public/assets/pds/styles/pds-tokens.css +699 -0
  58. package/public/assets/pds/styles/pds-tokens.css.js +1405 -0
  59. package/public/assets/pds/styles/pds-utilities.css +763 -0
  60. package/public/assets/pds/styles/pds-utilities.css.js +1533 -0
  61. package/public/assets/pds/vscode-custom-data.json +824 -0
  62. package/scripts/build-pds-reference.mjs +807 -0
  63. package/scripts/generate-stories.js +542 -0
  64. package/scripts/package-build.js +86 -0
  65. package/src/js/app.js +17 -0
  66. package/src/js/common/ask.js +208 -0
  67. package/src/js/common/common.js +20 -0
  68. package/src/js/common/font-loader.js +200 -0
  69. package/src/js/common/msg.js +90 -0
  70. package/src/js/lit.js +40 -0
  71. package/src/js/pds-core/pds-config.js +1162 -0
  72. package/src/js/pds-core/pds-enhancer-metadata.js +75 -0
  73. package/src/js/pds-core/pds-enhancers.js +357 -0
  74. package/src/js/pds-core/pds-enums.js +86 -0
  75. package/src/js/pds-core/pds-generator.js +5317 -0
  76. package/src/js/pds-core/pds-ontology.js +256 -0
  77. package/src/js/pds-core/pds-paths.js +109 -0
  78. package/src/js/pds-core/pds-query.js +571 -0
  79. package/src/js/pds-core/pds-registry.js +129 -0
  80. package/src/js/pds-core/pds.d.ts +129 -0
  81. package/src/js/pds.d.ts +408 -0
  82. package/src/js/pds.js +1579 -0
  83. package/src/pds-core/pds-api.js +105 -0
  84. package/stories/GettingStarted.md +96 -0
  85. package/stories/GettingStarted.stories.js +144 -0
  86. package/stories/WhatIsPDS.md +194 -0
  87. package/stories/WhatIsPDS.stories.js +144 -0
  88. package/stories/components/PdsCalendar.stories.js +263 -0
  89. package/stories/components/PdsDrawer.stories.js +623 -0
  90. package/stories/components/PdsIcon.stories.js +78 -0
  91. package/stories/components/PdsJsonform.stories.js +1444 -0
  92. package/stories/components/PdsRichtext.stories.js +367 -0
  93. package/stories/components/PdsScrollrow.stories.js +140 -0
  94. package/stories/components/PdsSplitpanel.stories.js +502 -0
  95. package/stories/components/PdsTabstrip.stories.js +442 -0
  96. package/stories/components/PdsToaster.stories.js +186 -0
  97. package/stories/components/PdsUpload.stories.js +66 -0
  98. package/stories/enhancements/Dropdowns.stories.js +185 -0
  99. package/stories/enhancements/InteractiveStates.stories.js +625 -0
  100. package/stories/enhancements/MeshGradients.stories.js +320 -0
  101. package/stories/enhancements/OpenGroups.stories.js +227 -0
  102. package/stories/enhancements/RangeSliders.stories.js +232 -0
  103. package/stories/enhancements/RequiredFields.stories.js +189 -0
  104. package/stories/enhancements/Toggles.stories.js +167 -0
  105. package/stories/foundations/Colors.stories.js +283 -0
  106. package/stories/foundations/Icons.stories.js +305 -0
  107. package/stories/foundations/SmartSurfaces.stories.js +367 -0
  108. package/stories/foundations/Spacing.stories.js +175 -0
  109. package/stories/foundations/Typography.stories.js +960 -0
  110. package/stories/foundations/ZIndex.stories.js +325 -0
  111. package/stories/patterns/BorderEffects.stories.js +72 -0
  112. package/stories/patterns/Layout.stories.js +99 -0
  113. package/stories/patterns/Utilities.stories.js +107 -0
  114. package/stories/primitives/Accordion.stories.js +359 -0
  115. package/stories/primitives/Alerts.stories.js +64 -0
  116. package/stories/primitives/Badges.stories.js +183 -0
  117. package/stories/primitives/Buttons.stories.js +229 -0
  118. package/stories/primitives/Cards.stories.js +353 -0
  119. package/stories/primitives/FormGroups.stories.js +569 -0
  120. package/stories/primitives/Forms.stories.js +131 -0
  121. package/stories/primitives/Media.stories.js +203 -0
  122. package/stories/primitives/Tables.stories.js +232 -0
  123. package/stories/reference/ReferenceCatalog.stories.js +28 -0
  124. package/stories/reference/reference-catalog.js +413 -0
  125. package/stories/reference/reference-docs.js +302 -0
  126. package/stories/reference/reference-helpers.js +310 -0
  127. package/stories/utilities/GridSystem.stories.js +208 -0
  128. package/stories/utils/PdsAsk.stories.js +420 -0
  129. package/stories/utils/toast-utils.js +148 -0
@@ -0,0 +1,704 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Advanced Configuration",
4
+ "description": "Configuration for the design system including theme colors, typography, spacing, etc. This drives generation of CSS variables and styling.",
5
+ "type": "object",
6
+ "properties": {
7
+ "colors": {
8
+ "type": "object",
9
+ "title": "Colors",
10
+ "description": "Base theme colors and semantic color overrides.",
11
+ "properties": {
12
+ "primary": {
13
+ "type": "string",
14
+ "title": "Primary",
15
+ "description": "Primary brand color (hex code). Used as the main accent and to derive related colors.",
16
+ "format": "color",
17
+ "default": "#2d9dc9"
18
+ },
19
+ "secondary": {
20
+ "type": "string",
21
+ "title": "Secondary",
22
+ "description": "Secondary or neutral color (hex code). Used for secondary accents, grayscales, etc.",
23
+ "format": "color",
24
+ "default": "#a99b95"
25
+ },
26
+ "accent": {
27
+ "type": "string",
28
+ "title": "Accent",
29
+ "description": "Accent color (hex code) for highlights or contrast (e.g., a vibrant color like pink or red).",
30
+ "format": "color",
31
+ "default": "#e54271"
32
+ },
33
+ "background": {
34
+ "type": "string",
35
+ "title": "Background",
36
+ "description": "Base background color for light mode (hex code). Used as the default page background.",
37
+ "format": "color",
38
+ "default": "#e7e6de"
39
+ },
40
+ "darkMode": {
41
+ "type": "object",
42
+ "title": "Dark Mode Overrides",
43
+ "description": "Custom color overrides for dark mode. If not provided, dark mode colors are auto-generated from light mode values.",
44
+ "properties": {
45
+ "background": {
46
+ "type": "string",
47
+ "title": "Background",
48
+ "description": "Background color for dark mode (hex code). Overrides the light mode background with a darker color.",
49
+ "format": "color",
50
+ "default": "#16171a"
51
+ },
52
+ "secondary": {
53
+ "type": "string",
54
+ "title": "Secondary",
55
+ "description": "Secondary color for dark mode (hex code), e.g. for dark mode borders or inputs. Provides a neutral gray in dark theme.",
56
+ "format": "color",
57
+ "default": "#8b9199"
58
+ }
59
+ },
60
+ "required": []
61
+ },
62
+ "success": {
63
+ "type": ["string", "null"],
64
+ "title": "Success",
65
+ "description": "Semantic success color (hex code). If null, a green-toned color will be derived automatically from the primary color.",
66
+ "format": "color",
67
+ "placeholder": "#28a745",
68
+ "default": null
69
+ },
70
+ "warning": {
71
+ "type": ["string", "null"],
72
+ "title": "Warning",
73
+ "description": "Semantic warning color (hex code). If null, defaults to the accent color.",
74
+ "format": "color",
75
+ "default": null
76
+ },
77
+ "danger": {
78
+ "type": ["string", "null"],
79
+ "title": "Danger",
80
+ "description": "Semantic danger/error color (hex code). If null, a red-toned color will be derived from the primary color.",
81
+ "format": "color",
82
+ "default": null
83
+ },
84
+ "info": {
85
+ "type": ["string", "null"],
86
+ "title": "Info",
87
+ "description": "Semantic info color (hex code). If null, defaults to the primary color.",
88
+ "format": "color",
89
+ "default": null
90
+ },
91
+ "gradientStops": {
92
+ "type": "integer",
93
+ "title": "Gradient Stops",
94
+ "description": "Number of color stops to generate in gradients. Controls how many shades are produced for color gradients.",
95
+ "default": 3,
96
+ "minimum": 2
97
+ },
98
+ "elevationOpacity": {
99
+ "type": "number",
100
+ "title": "Elevation Opacity",
101
+ "description": "Opacity for elevated surfaces/shadows (0 to 1). A low number gives subtle shadows for elevation.",
102
+ "default": 0.05,
103
+ "minimum": 0,
104
+ "maximum": 1,
105
+ "multipleOf": 0.05
106
+ }
107
+ },
108
+ "required": []
109
+ },
110
+ "typography": {
111
+ "type": "object",
112
+ "title": "Typography",
113
+ "description": "Font families, sizes, and text spacing settings.",
114
+ "properties": {
115
+ "fontFamilyHeadings": {
116
+ "type": "string",
117
+ "title": "Headings Font Family",
118
+ "description": "Font family stack for headings (e.g., page titles). Use a CSS font-family string.",
119
+ "default": "system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif"
120
+ },
121
+ "fontFamilyBody": {
122
+ "type": "string",
123
+ "title": "Body Font Family",
124
+ "description": "Font family stack for body text. Use a CSS font-family string.",
125
+ "default": "system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif"
126
+ },
127
+ "fontFamilyMono": {
128
+ "type": "string",
129
+ "title": "Monospace Font Family",
130
+ "description": "Font family for monospaced text (e.g., code blocks). Use a CSS font-family string.",
131
+ "default": "ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, monospace"
132
+ },
133
+ "baseFontSize": {
134
+ "type": "integer",
135
+ "title": "Base Font Size",
136
+ "description": "Base font size in pixels. This is the root text size for the design (e.g., 16px).",
137
+ "default": 16,
138
+ "minimum": 8,
139
+ "maximum": 32
140
+ },
141
+ "fontWeightLight": {
142
+ "type": "string",
143
+ "title": "Font Weight (Light)",
144
+ "description": "Label for light font weight. Choose from preset weight options (light, normal, medium, semibold, bold).",
145
+ "default": "light",
146
+ "enum": ["light", "normal", "medium", "semibold", "bold"]
147
+ },
148
+ "fontWeightNormal": {
149
+ "type": "string",
150
+ "title": "Font Weight (Normal)",
151
+ "description": "Label for normal font weight. Choose from preset weight options (light, normal, medium, semibold, bold).",
152
+ "default": "normal",
153
+ "enum": ["light", "normal", "medium", "semibold", "bold"]
154
+ },
155
+ "fontWeightMedium": {
156
+ "type": "string",
157
+ "title": "Font Weight (Medium)",
158
+ "description": "Label for medium font weight. Choose from preset weight options (light, normal, medium, semibold, bold).",
159
+ "default": "medium",
160
+ "enum": ["light", "normal", "medium", "semibold", "bold"]
161
+ },
162
+ "fontWeightSemibold": {
163
+ "type": "string",
164
+ "title": "Font Weight (Semibold)",
165
+ "description": "Label for semibold font weight. Choose from preset weight options (light, normal, medium, semibold, bold).",
166
+ "default": "semibold",
167
+ "enum": ["light", "normal", "medium", "semibold", "bold"]
168
+ },
169
+ "fontWeightBold": {
170
+ "type": "string",
171
+ "title": "Font Weight (Bold)",
172
+ "description": "Label for bold font weight. Choose from preset weight options (light, normal, medium, semibold, bold).",
173
+ "default": "bold",
174
+ "enum": ["light", "normal", "medium", "semibold", "bold"]
175
+ },
176
+ "lineHeightTight": {
177
+ "type": "string",
178
+ "title": "Line Height (Tight)",
179
+ "description": "Label for tight line height. Options: tight, normal, relaxed.",
180
+ "default": "tight",
181
+ "enum": ["tight", "normal", "relaxed"]
182
+ },
183
+ "lineHeightNormal": {
184
+ "type": "string",
185
+ "title": "Line Height (Normal)",
186
+ "description": "Label for normal line height. Options: tight, normal, relaxed.",
187
+ "default": "normal",
188
+ "enum": ["tight", "normal", "relaxed"]
189
+ },
190
+ "lineHeightRelaxed": {
191
+ "type": "string",
192
+ "title": "Line Height (Relaxed)",
193
+ "description": "Label for relaxed line height. Options: tight, normal, relaxed.",
194
+ "default": "relaxed",
195
+ "enum": ["tight", "normal", "relaxed"]
196
+ },
197
+ "letterSpacingTight": {
198
+ "type": "number",
199
+ "title": "Letter Spacing (Tight)",
200
+ "description": "Tight letter-spacing (tracking) for text. A negative value reduces spacing (e.g., -0.025 for -2.5%).",
201
+ "default": -0.025,
202
+ "minimum": -0.1,
203
+ "maximum": 0.1,
204
+ "multipleOf": 0.005
205
+ },
206
+ "letterSpacingNormal": {
207
+ "type": "number",
208
+ "title": "Letter Spacing (Normal)",
209
+ "description": "Normal letter-spacing (tracking) for text. 0 means no extra spacing.",
210
+ "default": 0,
211
+ "minimum": -0.1,
212
+ "maximum": 0.1,
213
+ "multipleOf": 0.005
214
+ },
215
+ "letterSpacingWide": {
216
+ "type": "number",
217
+ "title": "Letter Spacing (Wide)",
218
+ "description": "Wide letter-spacing (tracking) for text. A positive value increases spacing (e.g., 0.025 for +2.5%).",
219
+ "default": 0.025,
220
+ "minimum": -0.1,
221
+ "maximum": 0.1,
222
+ "multipleOf": 0.005
223
+ }
224
+ },
225
+ "required": []
226
+ },
227
+ "spatialRhythm": {
228
+ "type": "object",
229
+ "title": "Spatial Rhythm",
230
+ "description": "Spacing system settings for consistent layout rhythm.",
231
+ "properties": {
232
+ "baseUnit": {
233
+ "type": "integer",
234
+ "title": "Base Spacing Unit",
235
+ "description": "Base spatial unit in pixels for spacing (e.g., margin/padding).",
236
+ "default": 16,
237
+ "minimum": 1
238
+ },
239
+ "scaleRatio": {
240
+ "type": "number",
241
+ "title": "Scale Ratio",
242
+ "description": "Scale factor for spacing increments. Each subsequent spacing size is this multiple of the previous one.",
243
+ "default": 1.25,
244
+ "minimum": 1,
245
+ "maximum": 3
246
+ },
247
+ "maxSpacingSteps": {
248
+ "type": "integer",
249
+ "title": "Max Spacing Steps",
250
+ "description": "Maximum number of spacing increments to generate (defines the largest spacing scale).",
251
+ "default": 32,
252
+ "minimum": 1,
253
+ "maximum": 100
254
+ },
255
+ "containerMaxWidth": {
256
+ "type": "integer",
257
+ "title": "Container Max Width",
258
+ "description": "Maximum content container width in pixels. Defines the max width for layout containers.",
259
+ "default": 1200,
260
+ "minimum": 0
261
+ },
262
+ "containerPadding": {
263
+ "type": "number",
264
+ "title": "Container Padding (units)",
265
+ "description": "Padding inside containers, as a multiple of the base unit.",
266
+ "default": 1.0,
267
+ "minimum": 0
268
+ },
269
+ "inputPadding": {
270
+ "type": "number",
271
+ "title": "Input Padding (units)",
272
+ "description": "Padding inside input fields, as a multiple of the base unit.",
273
+ "default": 0.75,
274
+ "minimum": 0
275
+ },
276
+ "buttonPadding": {
277
+ "type": "number",
278
+ "title": "Button Padding (units)",
279
+ "description": "Padding inside buttons, as a multiple of the base unit.",
280
+ "default": 1.0,
281
+ "minimum": 0
282
+ },
283
+ "sectionSpacing": {
284
+ "type": "number",
285
+ "title": "Section Spacing (units)",
286
+ "description": "Spacing between sections/components, in multiples of the base unit.",
287
+ "default": 2.0,
288
+ "minimum": 0
289
+ }
290
+ },
291
+ "required": []
292
+ },
293
+ "layers": {
294
+ "type": "object",
295
+ "title": "Layers & Elevation",
296
+ "description": "Shadow depth, blur effects, and z-index layering.",
297
+ "properties": {
298
+ "shadowDepth": {
299
+ "type": "string",
300
+ "title": "Shadow Depth",
301
+ "description": "Default shadow depth level for components. Options: none, light, medium, deep, extreme.",
302
+ "default": "medium",
303
+ "enum": ["none", "light", "medium", "deep", "extreme"]
304
+ },
305
+ "blurLight": {
306
+ "type": "number",
307
+ "title": "Light Blur Radius",
308
+ "description": "Blur radius for light blur effects (px). Used for subtle background blurring or small shadow blur.",
309
+ "default": 4,
310
+ "minimum": 0
311
+ },
312
+ "blurMedium": {
313
+ "type": "number",
314
+ "title": "Medium Blur Radius",
315
+ "description": "Blur radius for medium blur effects (px).",
316
+ "default": 8,
317
+ "minimum": 0
318
+ },
319
+ "blurHeavy": {
320
+ "type": "number",
321
+ "title": "Heavy Blur Radius",
322
+ "description": "Blur radius for heavy blur effects (px).",
323
+ "default": 16,
324
+ "minimum": 0
325
+ },
326
+ "zIndexBase": {
327
+ "type": "integer",
328
+ "title": "z-index Base",
329
+ "description": "Base z-index for default layer (usually 0).",
330
+ "default": 0
331
+ },
332
+ "zIndexDropdown": {
333
+ "type": "integer",
334
+ "title": "z-index Dropdown",
335
+ "description": "z-index for dropdown menus and similar overlays.",
336
+ "default": 1000
337
+ },
338
+ "zIndexSticky": {
339
+ "type": "integer",
340
+ "title": "z-index Sticky",
341
+ "description": "z-index for sticky (fixed-in-scroll) elements.",
342
+ "default": 1020
343
+ },
344
+ "zIndexFixed": {
345
+ "type": "integer",
346
+ "title": "z-index Fixed",
347
+ "description": "z-index for fixed-position elements.",
348
+ "default": 1030
349
+ },
350
+ "zIndexModal": {
351
+ "type": "integer",
352
+ "title": "z-index Modal",
353
+ "description": "z-index for modal dialogs.",
354
+ "default": 1040
355
+ },
356
+ "zIndexPopover": {
357
+ "type": "integer",
358
+ "title": "z-index Popover",
359
+ "description": "z-index for popovers (small overlay elements).",
360
+ "default": 1050
361
+ },
362
+ "zIndexTooltip": {
363
+ "type": "integer",
364
+ "title": "z-index Tooltip",
365
+ "description": "z-index for tooltips.",
366
+ "default": 1060
367
+ },
368
+ "zIndexNotification": {
369
+ "type": "integer",
370
+ "title": "z-index Notification",
371
+ "description": "z-index for notifications (toasts).",
372
+ "default": 1070
373
+ }
374
+ },
375
+ "required": []
376
+ },
377
+ "shape": {
378
+ "type": "object",
379
+ "title": "Shape & Corners",
380
+ "description": "Border radius and related shape settings.",
381
+ "properties": {
382
+ "radiusSize": {
383
+ "type": "string",
384
+ "title": "Base Border Radius",
385
+ "description": "Base border radius size for components. Options: none (0px), small (4px), medium (8px), large (16px), full (9999px for pill shape).",
386
+ "default": "large",
387
+ "enum": ["none", "small", "medium", "large", "full"]
388
+ },
389
+ "borderWidth": {
390
+ "type": "string",
391
+ "title": "Base Border Width",
392
+ "description": "Base border width for components. Options: hairline (0.5px), thin (1px), medium (2px), thick (3px).",
393
+ "default": "thin",
394
+ "enum": ["hairline", "thin", "medium", "thick"]
395
+ },
396
+ "customRadius": {
397
+ "type": ["string", "null"],
398
+ "title": "Custom Border Radius",
399
+ "description": "Custom border radius value (CSS length, e.g., '10px' or '50%'). Overrides radiusSize if set. Null means use standard radius.",
400
+ "default": null
401
+ }
402
+ },
403
+ "required": []
404
+ },
405
+ "behavior": {
406
+ "type": "object",
407
+ "title": "Behavior & Animations",
408
+ "description": "Global behavior settings like transitions and hover effects.",
409
+ "properties": {
410
+ "transitionSpeed": {
411
+ "type": "string",
412
+ "title": "Transition Speed",
413
+ "description": "Standard transition animation speed. Options: fast (~150ms), normal (~250ms), slow (~350ms).",
414
+ "default": "normal",
415
+ "enum": ["fast", "normal", "slow"]
416
+ },
417
+ "animationEasing": {
418
+ "type": "string",
419
+ "title": "Animation Easing",
420
+ "description": "Default easing function for animations. Options: linear, ease, ease-in, ease-out, ease-in-out, bounce.",
421
+ "default": "ease-out",
422
+ "enum": ["linear", "ease", "ease-in", "ease-out", "ease-in-out", "bounce"]
423
+ },
424
+ "customTransitionSpeed": {
425
+ "type": ["number", "null"],
426
+ "title": "Custom Transition Speed",
427
+ "description": "Custom transition duration in milliseconds. If provided, overrides the preset transitionSpeed.",
428
+ "default": null,
429
+ "minimum": 0
430
+ },
431
+ "customEasing": {
432
+ "type": ["string", "null"],
433
+ "title": "Custom Easing Function",
434
+ "description": "Custom CSS easing function (e.g., a cubic-bezier string). Overrides the preset animationEasing if set.",
435
+ "default": null
436
+ },
437
+ "focusRingWidth": {
438
+ "type": "integer",
439
+ "title": "Focus Ring Width",
440
+ "description": "Width of the focus outline/ring in pixels.",
441
+ "default": 3,
442
+ "minimum": 0
443
+ },
444
+ "focusRingOpacity": {
445
+ "type": "number",
446
+ "title": "Focus Ring Opacity",
447
+ "description": "Opacity of the focus ring (0 to 1). Controls transparency of the focus highlight.",
448
+ "default": 0.3,
449
+ "minimum": 0,
450
+ "maximum": 1,
451
+ "multipleOf": 0.05
452
+ },
453
+ "hoverOpacity": {
454
+ "type": "number",
455
+ "title": "Hover Opacity",
456
+ "description": "Opacity of hover state overlay (0 to 1). A semi-transparent overlay applied on hover.",
457
+ "default": 0.8,
458
+ "minimum": 0,
459
+ "maximum": 1,
460
+ "multipleOf": 0.05
461
+ }
462
+ },
463
+ "required": []
464
+ },
465
+ "layout": {
466
+ "type": "object",
467
+ "title": "Layout & Grid",
468
+ "description": "Grid system and layout density settings.",
469
+ "properties": {
470
+ "gridColumns": {
471
+ "type": "integer",
472
+ "title": "Grid Columns",
473
+ "description": "Number of columns in the grid system.",
474
+ "default": 12,
475
+ "minimum": 1,
476
+ "maximum": 24
477
+ },
478
+ "gridGutter": {
479
+ "type": "number",
480
+ "title": "Grid Gutter Width",
481
+ "description": "Gutter width between grid columns, as a multiple of the base unit.",
482
+ "default": 1.0,
483
+ "minimum": 0
484
+ },
485
+ "breakpoints": {
486
+ "type": "object",
487
+ "title": "Breakpoints",
488
+ "description": "Responsive breakpoints (min-width in pixels for various screen sizes).",
489
+ "properties": {
490
+ "sm": {
491
+ "type": "integer",
492
+ "title": "Small (sm) Breakpoint",
493
+ "description": "Minimum width (px) for small screens (e.g., mobile).",
494
+ "default": 640,
495
+ "minimum": 0
496
+ },
497
+ "md": {
498
+ "type": "integer",
499
+ "title": "Medium (md) Breakpoint",
500
+ "description": "Minimum width (px) for medium screens (e.g., tablets).",
501
+ "default": 768,
502
+ "minimum": 0
503
+ },
504
+ "lg": {
505
+ "type": "integer",
506
+ "title": "Large (lg) Breakpoint",
507
+ "description": "Minimum width (px) for large screens (e.g., laptops).",
508
+ "default": 1024,
509
+ "minimum": 0
510
+ },
511
+ "xl": {
512
+ "type": "integer",
513
+ "title": "Extra Large (xl) Breakpoint",
514
+ "description": "Minimum width (px) for extra-large screens (e.g., desktops).",
515
+ "default": 1280,
516
+ "minimum": 0
517
+ }
518
+ },
519
+ "required": []
520
+ },
521
+ "densityCompact": {
522
+ "type": "number",
523
+ "title": "Density - Compact",
524
+ "description": "UI density scale factor for compact mode. A multiplier less than 1 for tighter spacing (e.g., 0.8).",
525
+ "default": 0.8,
526
+ "minimum": 0.5,
527
+ "maximum": 2
528
+ },
529
+ "densityNormal": {
530
+ "type": "number",
531
+ "title": "Density - Normal",
532
+ "description": "UI density scale factor for normal mode (default 1.0).",
533
+ "default": 1.0,
534
+ "minimum": 0.5,
535
+ "maximum": 2
536
+ },
537
+ "densityComfortable": {
538
+ "type": "number",
539
+ "title": "Density - Comfortable",
540
+ "description": "UI density scale factor for comfortable mode. A multiplier greater than 1 for more spacing (e.g., 1.2).",
541
+ "default": 1.2,
542
+ "minimum": 0.5,
543
+ "maximum": 2
544
+ },
545
+ "buttonMinHeight": {
546
+ "type": "integer",
547
+ "title": "Button Min Height",
548
+ "description": "Minimum height for buttons in pixels. Ensures touch targets meet accessibility guidelines (e.g., 44px).",
549
+ "default": 44,
550
+ "minimum": 1
551
+ },
552
+ "inputMinHeight": {
553
+ "type": "integer",
554
+ "title": "Input Min Height",
555
+ "description": "Minimum height for input fields in pixels.",
556
+ "default": 40,
557
+ "minimum": 1
558
+ }
559
+ },
560
+ "required": []
561
+ },
562
+ "advanced": {
563
+ "type": "object",
564
+ "title": "Advanced Settings",
565
+ "description": "Advanced design options.",
566
+ "properties": {
567
+ "linkStyle": {
568
+ "type": "string",
569
+ "title": "Link Style",
570
+ "description": "Default display style for hyperlinks. Options: inline (standard inline text link), block (block-level link), button (styled like a button).",
571
+ "default": "inline",
572
+ "enum": ["inline", "block", "button"]
573
+ },
574
+ "colorDerivation": {
575
+ "type": "string",
576
+ "title": "Color Derivation Method",
577
+ "description": "Method for deriving color variations (success/warning/etc) from base colors. e.g., 'hsl' uses HSL color shifts.",
578
+ "default": "hsl"
579
+ }
580
+ },
581
+ "required": []
582
+ },
583
+ "a11y": {
584
+ "type": "object",
585
+ "title": "Accessibility (A11y)",
586
+ "description": "Accessibility-related settings.",
587
+ "properties": {
588
+ "minTouchTarget": {
589
+ "type": "integer",
590
+ "title": "Min Touch Target",
591
+ "description": "Minimum touch target size in pixels. Ensures interactive elements are at least this size (44px is standard).",
592
+ "default": 44,
593
+ "minimum": 1
594
+ },
595
+ "prefersReducedMotion": {
596
+ "type": "boolean",
597
+ "title": "Prefers Reduced Motion",
598
+ "description": "Whether to respect users' reduced motion preference. If true, reduces or disables non-essential animations.",
599
+ "default": true
600
+ },
601
+ "focusStyle": {
602
+ "type": "string",
603
+ "title": "Focus Style",
604
+ "description": "Style for focus outlines. Options: ring (default outline ring), outline (browser default outline), border (change border style), glow (subtle glow).",
605
+ "default": "ring",
606
+ "enum": ["ring", "outline", "border", "glow"]
607
+ }
608
+ },
609
+ "required": []
610
+ },
611
+ "icons": {
612
+ "type": "object",
613
+ "title": "Icons",
614
+ "description": "Icon library configuration and selection.",
615
+ "properties": {
616
+ "set": {
617
+ "type": "string",
618
+ "title": "Icon Set",
619
+ "description": "Icon set or library to use (e.g., 'phosphor'). Ensure the icon set is available in the project.",
620
+ "default": "phosphor"
621
+ },
622
+ "weight": {
623
+ "type": "string",
624
+ "title": "Icon Weight",
625
+ "description": "Default icon weight/style (if applicable for the icon set). For Phosphor icons: thin, light, regular, bold, fill, duotone.",
626
+ "default": "regular",
627
+ "enum": ["thin", "light", "regular", "bold", "fill", "duotone"]
628
+ },
629
+ "defaultSize": {
630
+ "type": "integer",
631
+ "title": "Default Icon Size",
632
+ "description": "Default icon size in pixels.",
633
+ "default": 24,
634
+ "minimum": 1
635
+ },
636
+ "sizes": {
637
+ "type": "object",
638
+ "title": "Icon Sizes",
639
+ "description": "Named icon sizes (in pixels) for various contexts.",
640
+ "properties": {
641
+ "xs": {
642
+ "type": "integer",
643
+ "title": "Extra Small Icon (xs)",
644
+ "description": "Pixel size for extra small icons.",
645
+ "default": 16,
646
+ "minimum": 1
647
+ },
648
+ "sm": {
649
+ "type": "integer",
650
+ "title": "Small Icon (sm)",
651
+ "description": "Pixel size for small icons.",
652
+ "default": 20,
653
+ "minimum": 1
654
+ },
655
+ "md": {
656
+ "type": "integer",
657
+ "title": "Medium Icon (md)",
658
+ "description": "Pixel size for medium icons.",
659
+ "default": 24,
660
+ "minimum": 1
661
+ },
662
+ "lg": {
663
+ "type": "integer",
664
+ "title": "Large Icon (lg)",
665
+ "description": "Pixel size for large icons.",
666
+ "default": 32,
667
+ "minimum": 1
668
+ },
669
+ "xl": {
670
+ "type": "integer",
671
+ "title": "Extra Large Icon (xl)",
672
+ "description": "Pixel size for extra large icons.",
673
+ "default": 48,
674
+ "minimum": 1
675
+ },
676
+ "2xl": {
677
+ "type": "integer",
678
+ "title": "2x Large Icon (2xl)",
679
+ "description": "Pixel size for double extra large icons.",
680
+ "default": 64,
681
+ "minimum": 1
682
+ }
683
+ },
684
+ "required": []
685
+ },
686
+
687
+ "spritePath": {
688
+ "type": "string",
689
+ "title": "Sprite Path",
690
+ "description": "File path or URL to the icon sprite (if using an SVG sprite sheet).",
691
+ "default": "public/assets/img/icons.svg"
692
+ }
693
+ },
694
+ "required": []
695
+ },
696
+ "debug": {
697
+ "type": "boolean",
698
+ "title": "Debug Mode",
699
+ "description": "Enable debug mode. If true, the design system will log verbose debug information to the console.",
700
+ "default": false
701
+ }
702
+ },
703
+ "required": []
704
+ }