@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,699 @@
1
+ @layer tokens {
2
+ :root {
3
+ /* Colors */
4
+ --color-primary-50: #95dbee;
5
+ --color-primary-100: #65ceeb;
6
+ --color-primary-200: #32c3eb;
7
+ --color-primary-300: #15acd6;
8
+ --color-primary-400: #1087a7;
9
+ --color-primary-500: #0e7490;
10
+ --color-primary-600: #0b5e74;
11
+ --color-primary-700: #094b5d;
12
+ --color-primary-800: #073846;
13
+ --color-primary-900: #05252e;
14
+ --color-secondary-50: #f4f2f1;
15
+ --color-secondary-100: #e9e4e2;
16
+ --color-secondary-200: #ddd7d5;
17
+ --color-secondary-300: #c6bdb9;
18
+ --color-secondary-400: #afa29c;
19
+ --color-secondary-500: #a99b95;
20
+ --color-secondary-600: #928079;
21
+ --color-secondary-700: #776761;
22
+ --color-secondary-800: #5b4f4a;
23
+ --color-secondary-900: #3f3733;
24
+ --color-accent-50: #fbeaef;
25
+ --color-accent-100: #f8d3de;
26
+ --color-accent-200: #f4b2c5;
27
+ --color-accent-300: #ee85a4;
28
+ --color-accent-400: #e85882;
29
+ --color-accent-500: #e54271;
30
+ --color-accent-600: #d61e53;
31
+ --color-accent-700: #aa1742;
32
+ --color-accent-800: #7d1130;
33
+ --color-accent-900: #500b1f;
34
+ --color-success-50: #d3f8d3;
35
+ --color-success-100: #a4f3a4;
36
+ --color-success-200: #73f273;
37
+ --color-success-300: #44ed44;
38
+ --color-success-400: #16e816;
39
+ --color-success-500: #14d114;
40
+ --color-success-600: #10a210;
41
+ --color-success-700: #0b740b;
42
+ --color-success-800: #074607;
43
+ --color-success-900: #042f04;
44
+ --color-warning-50: #fae39f;
45
+ --color-warning-100: #fbd76a;
46
+ --color-warning-200: #ffcc33;
47
+ --color-warning-300: #ffbf00;
48
+ --color-warning-400: #cc9900;
49
+ --color-warning-500: #B38600;
50
+ --color-warning-600: #806000;
51
+ --color-warning-700: #664c00;
52
+ --color-warning-800: #4d3900;
53
+ --color-warning-900: #332600;
54
+ --color-danger-50: #fbe9e9;
55
+ --color-danger-100: #f6bbbb;
56
+ --color-danger-200: #f38b8b;
57
+ --color-danger-300: #ef5d5d;
58
+ --color-danger-400: #ea2e2e;
59
+ --color-danger-500: #e81717;
60
+ --color-danger-600: #ba1212;
61
+ --color-danger-700: #8b0e0e;
62
+ --color-danger-800: #5d0909;
63
+ --color-danger-900: #2e0505;
64
+ --color-info-50: #95dbee;
65
+ --color-info-100: #65ceeb;
66
+ --color-info-200: #32c3eb;
67
+ --color-info-300: #15acd6;
68
+ --color-info-400: #1087a7;
69
+ --color-info-500: #0e7490;
70
+ --color-info-600: #0b5e74;
71
+ --color-info-700: #094b5d;
72
+ --color-info-800: #073846;
73
+ --color-info-900: #05252e;
74
+ --color-gray-50: #fafaf9;
75
+ --color-gray-100: #f4f2f1;
76
+ --color-gray-200: #e3dfdd;
77
+ --color-gray-300: #cdc5c1;
78
+ --color-gray-400: #a3958f;
79
+ --color-gray-500: #a99b95;
80
+ --color-gray-600: #846c62;
81
+ --color-gray-700: #695349;
82
+ --color-gray-800: #3d2f29;
83
+ --color-gray-900: #1f1714;
84
+ --color-surface-base: #e7e6de;
85
+ --color-surface-subtle: #e3e2d8;
86
+ --color-surface-elevated: #deddd2;
87
+ --color-surface-sunken: #dad9cc;
88
+ --color-surface-overlay: #ebeae4;
89
+ --color-surface-inverse: #191810;
90
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
91
+ --color-surface-fieldset-base: #e3e2d8;
92
+ --color-surface-fieldset-subtle: #deddd2;
93
+ --color-surface-fieldset-elevated: #dad9cc;
94
+ --color-surface-fieldset-sunken: #d1d0c0;
95
+ --color-surface-fieldset-overlay: #deddd2;
96
+ /* Smart Surface Tokens (context-aware) */
97
+ --surface-base-bg: #e7e6de;
98
+ --surface-base-text: #000000;
99
+ --surface-base-text-secondary: #000000;
100
+ --surface-base-text-muted: #5c5c59;
101
+ --surface-base-icon: #000000;
102
+ --surface-base-icon-subtle: #5c5c59;
103
+ --surface-base-shadow: rgba(0, 0, 0, 0.1);
104
+ --surface-base-border: rgba(0, 0, 0, 0.1);
105
+ --surface-subtle-bg: #e3e2d8;
106
+ --surface-subtle-text: #000000;
107
+ --surface-subtle-text-secondary: #000000;
108
+ --surface-subtle-text-muted: #5b5a56;
109
+ --surface-subtle-icon: #000000;
110
+ --surface-subtle-icon-subtle: #5b5a56;
111
+ --surface-subtle-shadow: rgba(0, 0, 0, 0.1);
112
+ --surface-subtle-border: rgba(0, 0, 0, 0.1);
113
+ --surface-elevated-bg: #deddd2;
114
+ --surface-elevated-text: #000000;
115
+ --surface-elevated-text-secondary: #000000;
116
+ --surface-elevated-text-muted: #595854;
117
+ --surface-elevated-icon: #000000;
118
+ --surface-elevated-icon-subtle: #595854;
119
+ --surface-elevated-shadow: rgba(0, 0, 0, 0.1);
120
+ --surface-elevated-border: rgba(0, 0, 0, 0.1);
121
+ --surface-sunken-bg: #dad9cc;
122
+ --surface-sunken-text: #000000;
123
+ --surface-sunken-text-secondary: #000000;
124
+ --surface-sunken-text-muted: #575752;
125
+ --surface-sunken-icon: #000000;
126
+ --surface-sunken-icon-subtle: #575752;
127
+ --surface-sunken-shadow: rgba(0, 0, 0, 0.1);
128
+ --surface-sunken-border: rgba(0, 0, 0, 0.1);
129
+ --surface-overlay-bg: #ebeae4;
130
+ --surface-overlay-text: #000000;
131
+ --surface-overlay-text-secondary: #000000;
132
+ --surface-overlay-text-muted: #5e5e5b;
133
+ --surface-overlay-icon: #000000;
134
+ --surface-overlay-icon-subtle: #5e5e5b;
135
+ --surface-overlay-shadow: rgba(0, 0, 0, 0.1);
136
+ --surface-overlay-border: rgba(0, 0, 0, 0.1);
137
+ --surface-inverse-bg: #191810;
138
+ --surface-inverse-text: #ffffff;
139
+ --surface-inverse-text-secondary: #ffffff;
140
+ --surface-inverse-text-muted: #a3a39f;
141
+ --surface-inverse-icon: #ffffff;
142
+ --surface-inverse-icon-subtle: #a3a39f;
143
+ --surface-inverse-shadow: rgba(255, 255, 255, 0.25);
144
+ --surface-inverse-border: rgba(255, 255, 255, 0.15);
145
+
146
+ /* Semantic Text Colors */
147
+ --color-text-primary: var(--color-gray-900);
148
+ --color-text-secondary: var(--color-gray-600);
149
+ --color-text-muted: var(--color-gray-600);
150
+ --color-border: var(--color-gray-300);
151
+ --color-input-bg: var(--color-surface-base);
152
+ --color-input-disabled-bg: var(--color-gray-50);
153
+ --color-input-disabled-text: var(--color-gray-500);
154
+ --color-code-bg: var(--color-gray-100);
155
+ /* Interactive Colors - optimized for specific use cases */
156
+ --color-primary-fill: #0b5e74; /* For button backgrounds with white text */
157
+ --color-primary-text: #0b5e74; /* For links and outline buttons on light surfaces */
158
+ /* Translucent Surface Tokens */
159
+ --color-surface-translucent-25: color-mix(in oklab, var(--color-surface-subtle) 25%, transparent 75%);
160
+ --color-surface-translucent-50: color-mix(in oklab, var(--color-surface-subtle) 50%, transparent 50%);
161
+ --color-surface-translucent-75: color-mix(in oklab, var(--color-surface-subtle) 75%, transparent 25%);
162
+ /* Backdrop tokens - used for modal dialogs, drawers, overlays */
163
+
164
+ --backdrop-bg: linear-gradient(
165
+ 135deg,
166
+ rgba(255, 255, 255, 0.2),
167
+ rgba(255, 255, 255, 0.1)
168
+ );
169
+ --backdrop-blur: 10px;
170
+ --backdrop-saturate: 150%;
171
+ --backdrop-brightness: 0.9;
172
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
173
+ --backdrop-opacity: 1;
174
+
175
+ /* Legacy alias for backwards compatibility */
176
+ --backdrop-background: var(--backdrop-bg);
177
+
178
+ /* Mesh Gradient Backgrounds */
179
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #0e7490 25%, transparent) 0px, transparent 50%),
180
+ radial-gradient(at 97% 21%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
181
+ radial-gradient(at 52% 99%, color-mix(in oklab, #e54271 18%, transparent) 0px, transparent 50%),
182
+ radial-gradient(at 10% 29%, color-mix(in oklab, #0e7490 15%, transparent) 0px, transparent 50%);
183
+
184
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #a99b95 24%, transparent) 0px, transparent 50%),
185
+ radial-gradient(at 80% 0%, color-mix(in oklab, #0e7490 20%, transparent) 0px, transparent 50%),
186
+ radial-gradient(at 0% 50%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
187
+ radial-gradient(at 80% 100%, color-mix(in oklab, #a99b95 15%, transparent) 0px, transparent 50%);
188
+
189
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #e54271 21%, transparent) 0px, transparent 50%),
190
+ radial-gradient(at 85% 30%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
191
+ radial-gradient(at 50% 80%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
192
+ radial-gradient(at 90% 90%, color-mix(in oklab, #e54271 16%, transparent) 0px, transparent 50%);
193
+
194
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #0e7490 19%, transparent) 0px, transparent 50%),
195
+ radial-gradient(at 20% 80%, color-mix(in oklab, #a99b95 22%, transparent) 0px, transparent 50%),
196
+ radial-gradient(at 90% 60%, color-mix(in oklab, #e54271 17%, transparent) 0px, transparent 50%),
197
+ radial-gradient(at 30% 40%, color-mix(in oklab, #0e7490 16%, transparent) 0px, transparent 50%);
198
+
199
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #0e7490 23%, transparent) 0px, transparent 50%),
200
+ radial-gradient(at 10% 10%, color-mix(in oklab, #e54271 20%, transparent) 0px, transparent 50%),
201
+ radial-gradient(at 90% 10%, color-mix(in oklab, #a99b95 18%, transparent) 0px, transparent 50%),
202
+ radial-gradient(at 50% 90%, color-mix(in oklab, #e54271 15%, transparent) 0px, transparent 50%);
203
+
204
+
205
+ /* Spacing */
206
+ --spacing-0: 0;
207
+ --spacing-1: 4px;
208
+ --spacing-2: 8px;
209
+ --spacing-3: 12px;
210
+ --spacing-4: 16px;
211
+ --spacing-5: 20px;
212
+ --spacing-6: 24px;
213
+ --spacing-7: 28px;
214
+ --spacing-8: 32px;
215
+ --spacing-9: 36px;
216
+ --spacing-10: 40px;
217
+ --spacing-11: 44px;
218
+ --spacing-12: 48px;
219
+
220
+
221
+ /* Border Radius */
222
+ --radius-none: 0;
223
+ --radius-xs: 4px;
224
+ --radius-sm: 8px;
225
+ --radius-md: 16px;
226
+ --radius-lg: 24px;
227
+ --radius-xl: 32px;
228
+ --radius-full: 9999px;
229
+
230
+
231
+ /* Border Widths */
232
+ --border-width-hairline: 0.5px;
233
+ --border-width-thin: 1px;
234
+ --border-width-medium: 2px;
235
+ --border-width-thick: 3px;
236
+
237
+
238
+ /* Typography */
239
+ --font-family-headings: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
240
+ --font-family-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
241
+ --font-family-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
242
+ --font-size-xs: 11px;
243
+ --font-size-sm: 13px;
244
+ --font-size-base: 16px;
245
+ --font-size-lg: 19px;
246
+ --font-size-xl: 23px;
247
+ --font-size-2xl: 28px;
248
+ --font-size-3xl: 33px;
249
+ --font-size-4xl: 40px;
250
+ --font-weight-light: 300;
251
+ --font-weight-normal: 400;
252
+ --font-weight-medium: 500;
253
+ --font-weight-semibold: 600;
254
+ --font-weight-bold: 700;
255
+ --font-line-height-tight: 1.25;
256
+ --font-line-height-normal: 1.5;
257
+ --font-line-height-relaxed: 1.75;
258
+
259
+
260
+ /* Shadows */
261
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
262
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.05);
263
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.05);
264
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
265
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.05);
266
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
267
+
268
+
269
+ /* Layout */
270
+ --layout-max-width: 1200px;
271
+ --layout-min-height: 100vh;
272
+ --layout-container-padding: var(--spacing-6)px;
273
+ --layout-page-margin: 120px;
274
+ --layout-section-gap: 160px;
275
+ --layout-container-gap: 200px;
276
+ --layout-hero-spacing: 240px;
277
+ --layout-footer-spacing: 160px;
278
+
279
+
280
+ /* Transitions */
281
+ --transition-fast: 150ms;
282
+ --transition-normal: 250ms;
283
+ --transition-slow: 350ms;
284
+
285
+
286
+ /* Z-Index */
287
+ --z-dropdown: 1000;
288
+ --z-sticky: 1020;
289
+ --z-fixed: 1030;
290
+ --z-modal: 1040;
291
+ --z-drawer: 1050;
292
+ --z-popover: 1060;
293
+ --z-tooltip: 1070;
294
+ --z-notification: 1080;
295
+
296
+
297
+ /* Icon System */
298
+ --icon-set: phosphor;
299
+ --icon-weight: regular;
300
+ --icon-size: 24px;
301
+ --icon-size-xs: 16px;
302
+ --icon-size-sm: 20px;
303
+ --icon-size-md: 24px;
304
+ --icon-size-lg: 32px;
305
+ --icon-size-xl: 48px;
306
+ --icon-size-2xl: 64px;
307
+
308
+
309
+ }
310
+
311
+ html[data-theme="dark"] {
312
+ --color-surface-base: #16171a;
313
+ --color-surface-subtle: #111214;
314
+ --color-surface-elevated: #0d0d0f;
315
+ --color-surface-sunken: #131416;
316
+ --color-surface-overlay: #1b1c20;
317
+ --color-surface-inverse: #f2f2f3;
318
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
319
+ --color-surface-fieldset-base: #0d0d0f;
320
+ --color-surface-fieldset-subtle: #1b1c20;
321
+ --color-surface-fieldset-elevated: #1f1f24;
322
+ --color-surface-fieldset-sunken: #0d0d0f;
323
+ --color-surface-fieldset-overlay: #25272c;
324
+ --color-primary-50: #c5f2fa;
325
+ --color-primary-100: #93eaf9;
326
+ --color-primary-200: #5fe4fa;
327
+ --color-primary-300: #2ddbf9;
328
+ --color-primary-400: #07cbed;
329
+ --color-primary-500: #06b6d4;
330
+ --color-primary-600: #058ba2;
331
+ --color-primary-700: #036171;
332
+ --color-primary-800: #02404a;
333
+ --color-primary-900: #012b32;
334
+ --color-secondary-50: #f1f2f4;
335
+ --color-secondary-100: #e2e5e9;
336
+ --color-secondary-200: #cfd1d5;
337
+ --color-secondary-300: #b4b8bd;
338
+ --color-secondary-400: #999ea5;
339
+ --color-secondary-500: #8b9199;
340
+ --color-secondary-600: #717780;
341
+ --color-secondary-700: #595e65;
342
+ --color-secondary-800: #41454a;
343
+ --color-secondary-900: #292c2f;
344
+ --color-accent-50: #3a0e1b;
345
+ --color-accent-100: #5b162a;
346
+ --color-accent-200: #7c1e3a;
347
+ --color-accent-300: #9c2749;
348
+ --color-accent-400: #ce2d5b;
349
+ --color-accent-500: #d53b68;
350
+ --color-accent-600: #dc5f84;
351
+ --color-accent-700: #e4839f;
352
+ --color-accent-800: #f4c1d0;
353
+ --color-accent-900: #f6d6e0;
354
+ --color-gray-50: #fafafa;
355
+ --color-gray-100: #f1f2f3;
356
+ --color-gray-200: #dee0e2;
357
+ --color-gray-300: #c3c6cb;
358
+ --color-gray-400: #9298a0;
359
+ --color-gray-500: #8b9199;
360
+ --color-gray-600: #667180;
361
+ --color-gray-700: #4c5766;
362
+ --color-gray-800: #2b323b;
363
+ --color-gray-900: #15191e;
364
+ --color-success-50: #072207;
365
+ --color-success-100: #0b330b;
366
+ --color-success-200: #115411;
367
+ --color-success-300: #187618;
368
+ --color-success-400: #1da61d;
369
+ --color-success-500: #20b820;
370
+ --color-success-600: #2ad92a;
371
+ --color-success-700: #4fe14f;
372
+ --color-success-800: #94ee94;
373
+ --color-success-900: #c1f4c1;
374
+ --color-info-50: #071c22;
375
+ --color-info-100: #0b2a33;
376
+ --color-info-200: #0e3844;
377
+ --color-info-300: #114654;
378
+ --color-info-400: #145e72;
379
+ --color-info-500: #176d84;
380
+ --color-info-600: #1e8baa;
381
+ --color-info-700: #24a9ce;
382
+ --color-info-800: #5ac7e5;
383
+ --color-info-900: #87d4e9;
384
+ --color-warning-50: #251c04;
385
+ --color-warning-100: #372b06;
386
+ --color-warning-200: #493908;
387
+ --color-warning-300: #5c480a;
388
+ --color-warning-400: #8d6c0b;
389
+ --color-warning-500: #a07c0d;
390
+ --color-warning-600: #c89a10;
391
+ --color-warning-700: #ecb718;
392
+ --color-warning-800: #f6d05d;
393
+ --color-warning-900: #f6dc8e;
394
+ --color-danger-50: #220707;
395
+ --color-danger-100: #440e0e;
396
+ --color-danger-200: #651515;
397
+ --color-danger-300: #871c1c;
398
+ --color-danger-400: #b82121;
399
+ --color-danger-500: #ca2424;
400
+ --color-danger-600: #dd3e3e;
401
+ --color-danger-700: #e26262;
402
+ --color-danger-800: #f2aaaa;
403
+ --color-danger-900: #f6d5d5;
404
+ /* Smart Surface Tokens (dark mode, context-aware) */
405
+ --surface-base-bg: #16171a;
406
+ --surface-base-text: #ffffff;
407
+ --surface-base-text-secondary: #ffffff;
408
+ --surface-base-text-muted: #a2a2a3;
409
+ --surface-base-icon: #ffffff;
410
+ --surface-base-icon-subtle: #a2a2a3;
411
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
412
+ --surface-base-border: rgba(255, 255, 255, 0.15);
413
+ --surface-subtle-bg: #111214;
414
+ --surface-subtle-text: #ffffff;
415
+ --surface-subtle-text-secondary: #ffffff;
416
+ --surface-subtle-text-muted: #a0a0a1;
417
+ --surface-subtle-icon: #ffffff;
418
+ --surface-subtle-icon-subtle: #a0a0a1;
419
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
420
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
421
+ --surface-elevated-bg: #0d0d0f;
422
+ --surface-elevated-text: #ffffff;
423
+ --surface-elevated-text-secondary: #ffffff;
424
+ --surface-elevated-text-muted: #9e9e9f;
425
+ --surface-elevated-icon: #ffffff;
426
+ --surface-elevated-icon-subtle: #9e9e9f;
427
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
428
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
429
+ --surface-sunken-bg: #131416;
430
+ --surface-sunken-text: #ffffff;
431
+ --surface-sunken-text-secondary: #ffffff;
432
+ --surface-sunken-text-muted: #a1a1a2;
433
+ --surface-sunken-icon: #ffffff;
434
+ --surface-sunken-icon-subtle: #a1a1a2;
435
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
436
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
437
+ --surface-overlay-bg: #1b1c20;
438
+ --surface-overlay-text: #ffffff;
439
+ --surface-overlay-text-secondary: #ffffff;
440
+ --surface-overlay-text-muted: #a4a4a6;
441
+ --surface-overlay-icon: #ffffff;
442
+ --surface-overlay-icon-subtle: #a4a4a6;
443
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
444
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
445
+ --surface-inverse-bg: #f2f2f3;
446
+ --surface-inverse-text: #000000;
447
+ --surface-inverse-text-secondary: #000000;
448
+ --surface-inverse-text-muted: #616161;
449
+ --surface-inverse-icon: #000000;
450
+ --surface-inverse-icon-subtle: #616161;
451
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
452
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
453
+
454
+ --color-text-primary: var(--color-gray-100);
455
+ --color-text-secondary: var(--color-gray-300);
456
+ --color-text-muted: var(--color-gray-400);
457
+ --color-border: var(--color-gray-700);
458
+ --color-input-bg: var(--color-gray-800);
459
+ --color-input-disabled-bg: var(--color-gray-900);
460
+ --color-input-disabled-text: var(--color-gray-600);
461
+ --color-code-bg: var(--color-gray-800);
462
+ /* Interactive Colors - optimized for specific use cases (dark mode) */
463
+ --color-primary-fill: #036171; /* For button backgrounds with white text */
464
+ --color-primary-text: #06b6d4; /* For links and outline buttons on dark surfaces */
465
+ /* Backdrop tokens - dark mode */
466
+ --backdrop-bg: linear-gradient(
467
+ 135deg,
468
+ rgba(0, 0, 0, 0.6),
469
+ rgba(0, 0, 0, 0.4)
470
+ );
471
+ --backdrop-blur: 10px;
472
+ --backdrop-saturate: 120%;
473
+ --backdrop-brightness: 0.7;
474
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
475
+ --backdrop-opacity: 1;
476
+
477
+ /* Legacy alias for backwards compatibility */
478
+ --backdrop-background: var(--backdrop-bg);
479
+ /* Mesh Gradient Variables (Dark Mode) */
480
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
481
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
482
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
483
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
484
+
485
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
486
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
487
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
488
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
489
+
490
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
491
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
492
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
493
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
494
+
495
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
496
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
497
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
498
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
499
+
500
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
501
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
502
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
503
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
504
+ }
505
+
506
+ }
507
+ /* Non-layered dark variables fallback (ensures attribute wins) */
508
+ html[data-theme="dark"] {
509
+ --color-surface-base: #16171a;
510
+ --color-surface-subtle: #111214;
511
+ --color-surface-elevated: #0d0d0f;
512
+ --color-surface-sunken: #131416;
513
+ --color-surface-overlay: #1b1c20;
514
+ --color-surface-inverse: #f2f2f3;
515
+ --color-surface-hover: color-mix(in oklab, var(--color-surface-base) 92%, var(--color-text-primary) 8%);;
516
+ --color-surface-fieldset-base: #0d0d0f;
517
+ --color-surface-fieldset-subtle: #1b1c20;
518
+ --color-surface-fieldset-elevated: #1f1f24;
519
+ --color-surface-fieldset-sunken: #0d0d0f;
520
+ --color-surface-fieldset-overlay: #25272c;
521
+ --color-primary-50: #c5f2fa;
522
+ --color-primary-100: #93eaf9;
523
+ --color-primary-200: #5fe4fa;
524
+ --color-primary-300: #2ddbf9;
525
+ --color-primary-400: #07cbed;
526
+ --color-primary-500: #06b6d4;
527
+ --color-primary-600: #058ba2;
528
+ --color-primary-700: #036171;
529
+ --color-primary-800: #02404a;
530
+ --color-primary-900: #012b32;
531
+ --color-secondary-50: #f1f2f4;
532
+ --color-secondary-100: #e2e5e9;
533
+ --color-secondary-200: #cfd1d5;
534
+ --color-secondary-300: #b4b8bd;
535
+ --color-secondary-400: #999ea5;
536
+ --color-secondary-500: #8b9199;
537
+ --color-secondary-600: #717780;
538
+ --color-secondary-700: #595e65;
539
+ --color-secondary-800: #41454a;
540
+ --color-secondary-900: #292c2f;
541
+ --color-accent-50: #3a0e1b;
542
+ --color-accent-100: #5b162a;
543
+ --color-accent-200: #7c1e3a;
544
+ --color-accent-300: #9c2749;
545
+ --color-accent-400: #ce2d5b;
546
+ --color-accent-500: #d53b68;
547
+ --color-accent-600: #dc5f84;
548
+ --color-accent-700: #e4839f;
549
+ --color-accent-800: #f4c1d0;
550
+ --color-accent-900: #f6d6e0;
551
+ --color-gray-50: #fafafa;
552
+ --color-gray-100: #f1f2f3;
553
+ --color-gray-200: #dee0e2;
554
+ --color-gray-300: #c3c6cb;
555
+ --color-gray-400: #9298a0;
556
+ --color-gray-500: #8b9199;
557
+ --color-gray-600: #667180;
558
+ --color-gray-700: #4c5766;
559
+ --color-gray-800: #2b323b;
560
+ --color-gray-900: #15191e;
561
+ --color-success-50: #072207;
562
+ --color-success-100: #0b330b;
563
+ --color-success-200: #115411;
564
+ --color-success-300: #187618;
565
+ --color-success-400: #1da61d;
566
+ --color-success-500: #20b820;
567
+ --color-success-600: #2ad92a;
568
+ --color-success-700: #4fe14f;
569
+ --color-success-800: #94ee94;
570
+ --color-success-900: #c1f4c1;
571
+ --color-info-50: #071c22;
572
+ --color-info-100: #0b2a33;
573
+ --color-info-200: #0e3844;
574
+ --color-info-300: #114654;
575
+ --color-info-400: #145e72;
576
+ --color-info-500: #176d84;
577
+ --color-info-600: #1e8baa;
578
+ --color-info-700: #24a9ce;
579
+ --color-info-800: #5ac7e5;
580
+ --color-info-900: #87d4e9;
581
+ --color-warning-50: #251c04;
582
+ --color-warning-100: #372b06;
583
+ --color-warning-200: #493908;
584
+ --color-warning-300: #5c480a;
585
+ --color-warning-400: #8d6c0b;
586
+ --color-warning-500: #a07c0d;
587
+ --color-warning-600: #c89a10;
588
+ --color-warning-700: #ecb718;
589
+ --color-warning-800: #f6d05d;
590
+ --color-warning-900: #f6dc8e;
591
+ --color-danger-50: #220707;
592
+ --color-danger-100: #440e0e;
593
+ --color-danger-200: #651515;
594
+ --color-danger-300: #871c1c;
595
+ --color-danger-400: #b82121;
596
+ --color-danger-500: #ca2424;
597
+ --color-danger-600: #dd3e3e;
598
+ --color-danger-700: #e26262;
599
+ --color-danger-800: #f2aaaa;
600
+ --color-danger-900: #f6d5d5;
601
+ /* Smart Surface Tokens (dark mode, context-aware) */
602
+ --surface-base-bg: #16171a;
603
+ --surface-base-text: #ffffff;
604
+ --surface-base-text-secondary: #ffffff;
605
+ --surface-base-text-muted: #a2a2a3;
606
+ --surface-base-icon: #ffffff;
607
+ --surface-base-icon-subtle: #a2a2a3;
608
+ --surface-base-shadow: rgba(255, 255, 255, 0.25);
609
+ --surface-base-border: rgba(255, 255, 255, 0.15);
610
+ --surface-subtle-bg: #111214;
611
+ --surface-subtle-text: #ffffff;
612
+ --surface-subtle-text-secondary: #ffffff;
613
+ --surface-subtle-text-muted: #a0a0a1;
614
+ --surface-subtle-icon: #ffffff;
615
+ --surface-subtle-icon-subtle: #a0a0a1;
616
+ --surface-subtle-shadow: rgba(255, 255, 255, 0.25);
617
+ --surface-subtle-border: rgba(255, 255, 255, 0.15);
618
+ --surface-elevated-bg: #0d0d0f;
619
+ --surface-elevated-text: #ffffff;
620
+ --surface-elevated-text-secondary: #ffffff;
621
+ --surface-elevated-text-muted: #9e9e9f;
622
+ --surface-elevated-icon: #ffffff;
623
+ --surface-elevated-icon-subtle: #9e9e9f;
624
+ --surface-elevated-shadow: rgba(255, 255, 255, 0.25);
625
+ --surface-elevated-border: rgba(255, 255, 255, 0.15);
626
+ --surface-sunken-bg: #131416;
627
+ --surface-sunken-text: #ffffff;
628
+ --surface-sunken-text-secondary: #ffffff;
629
+ --surface-sunken-text-muted: #a1a1a2;
630
+ --surface-sunken-icon: #ffffff;
631
+ --surface-sunken-icon-subtle: #a1a1a2;
632
+ --surface-sunken-shadow: rgba(255, 255, 255, 0.25);
633
+ --surface-sunken-border: rgba(255, 255, 255, 0.15);
634
+ --surface-overlay-bg: #1b1c20;
635
+ --surface-overlay-text: #ffffff;
636
+ --surface-overlay-text-secondary: #ffffff;
637
+ --surface-overlay-text-muted: #a4a4a6;
638
+ --surface-overlay-icon: #ffffff;
639
+ --surface-overlay-icon-subtle: #a4a4a6;
640
+ --surface-overlay-shadow: rgba(255, 255, 255, 0.25);
641
+ --surface-overlay-border: rgba(255, 255, 255, 0.15);
642
+ --surface-inverse-bg: #f2f2f3;
643
+ --surface-inverse-text: #000000;
644
+ --surface-inverse-text-secondary: #000000;
645
+ --surface-inverse-text-muted: #616161;
646
+ --surface-inverse-icon: #000000;
647
+ --surface-inverse-icon-subtle: #616161;
648
+ --surface-inverse-shadow: rgba(0, 0, 0, 0.1);
649
+ --surface-inverse-border: rgba(0, 0, 0, 0.1);
650
+
651
+ --color-text-primary: var(--color-gray-100);
652
+ --color-text-secondary: var(--color-gray-300);
653
+ --color-text-muted: var(--color-gray-400);
654
+ --color-border: var(--color-gray-700);
655
+ --color-input-bg: var(--color-gray-800);
656
+ --color-input-disabled-bg: var(--color-gray-900);
657
+ --color-input-disabled-text: var(--color-gray-600);
658
+ --color-code-bg: var(--color-gray-800);
659
+ /* Backdrop tokens - dark mode */
660
+ --backdrop-bg: linear-gradient(
661
+ 135deg,
662
+ rgba(0, 0, 0, 0.6),
663
+ rgba(0, 0, 0, 0.4)
664
+ );
665
+ --backdrop-blur: 10px;
666
+ --backdrop-saturate: 120%;
667
+ --backdrop-brightness: 0.7;
668
+ --backdrop-filter: blur(var(--backdrop-blur)) saturate(var(--backdrop-saturate)) brightness(var(--backdrop-brightness));
669
+ --backdrop-opacity: 1;
670
+
671
+ /* Legacy alias for backwards compatibility */
672
+ --backdrop-background: var(--backdrop-bg);
673
+
674
+ /* Mesh Gradient Backgrounds (Dark Mode) */
675
+ --background-mesh-01: radial-gradient(at 27% 37%, color-mix(in oklab, #07cbed 20%, transparent) 0px, transparent 50%),
676
+ radial-gradient(at 97% 21%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
677
+ radial-gradient(at 52% 99%, color-mix(in oklab, #ce2d5b 13%, transparent) 0px, transparent 50%),
678
+ radial-gradient(at 10% 29%, color-mix(in oklab, #07cbed 10%, transparent) 0px, transparent 50%);
679
+
680
+ --background-mesh-02: radial-gradient(at 40% 20%, color-mix(in oklab, #999ea5 18%, transparent) 0px, transparent 50%),
681
+ radial-gradient(at 80% 0%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
682
+ radial-gradient(at 0% 50%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
683
+ radial-gradient(at 80% 100%, color-mix(in oklab, #999ea5 10%, transparent) 0px, transparent 50%);
684
+
685
+ --background-mesh-03: radial-gradient(at 15% 50%, color-mix(in oklab, #ce2d5b 15%, transparent) 0px, transparent 50%),
686
+ radial-gradient(at 85% 30%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
687
+ radial-gradient(at 50% 80%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
688
+ radial-gradient(at 90% 90%, color-mix(in oklab, #ce2d5b 11%, transparent) 0px, transparent 50%);
689
+
690
+ --background-mesh-04: radial-gradient(at 70% 15%, color-mix(in oklab, #07cbed 14%, transparent) 0px, transparent 50%),
691
+ radial-gradient(at 20% 80%, color-mix(in oklab, #999ea5 16%, transparent) 0px, transparent 50%),
692
+ radial-gradient(at 90% 60%, color-mix(in oklab, #ce2d5b 12%, transparent) 0px, transparent 50%),
693
+ radial-gradient(at 30% 40%, color-mix(in oklab, #07cbed 11%, transparent) 0px, transparent 50%);
694
+
695
+ --background-mesh-05: radial-gradient(at 50% 50%, color-mix(in oklab, #07cbed 17%, transparent) 0px, transparent 50%),
696
+ radial-gradient(at 10% 10%, color-mix(in oklab, #ce2d5b 14%, transparent) 0px, transparent 50%),
697
+ radial-gradient(at 90% 10%, color-mix(in oklab, #999ea5 13%, transparent) 0px, transparent 50%),
698
+ radial-gradient(at 50% 90%, color-mix(in oklab, #ce2d5b 10%, transparent) 0px, transparent 50%);
699
+ }