@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,352 @@
1
+ @layer primitives {
2
+ /* Base HTML reset */
3
+ *, *::before, *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :where(html) {
8
+ interpolate-size: allow-keywords;
9
+ font-family: var(--font-family-body);
10
+ font-size: var(--font-size-base);
11
+ line-height: var(--font-line-height-normal);
12
+ color: var(--color-text-primary);
13
+ background-color: var(--color-surface-base);
14
+ -webkit-text-size-adjust: 100%;
15
+ -webkit-font-smoothing: antialiased;
16
+ -moz-osx-font-smoothing: grayscale;
17
+ tab-size: 4;
18
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
19
+ }
20
+
21
+ :where(dialog){
22
+ background-color: transparent;
23
+ min-width: 320px;
24
+ border: none;
25
+ }
26
+
27
+ :where(body) {
28
+ margin: 0;
29
+ padding: 0;
30
+ scroll-behavior: smooth;
31
+ min-height: 100vh;
32
+ min-height: var(--layout-min-height, 100vh);
33
+ overflow-x: hidden;
34
+ -webkit-overflow-scrolling: touch;
35
+ }
36
+
37
+ :where(body.drawer-open) {
38
+ /* overflow: hidden; */
39
+ /* scrollbar-gutter: stable; */
40
+ }
41
+
42
+ /* Button primitives */
43
+ :where(button) {
44
+ all: unset;
45
+ box-sizing: border-box;
46
+ font: inherit;
47
+ color: var(--color-primary-contrast, white);
48
+ background: var(--color-primary-600);
49
+ padding: var(--spacing-2) var(--spacing-4);
50
+ border: 0;
51
+ border-radius: var(--radius-md);
52
+ cursor: pointer;
53
+ transition: opacity var(--transition-fast), background-color var(--transition-fast);
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ gap: var(--spacing-2);
58
+ font-weight: var(--font-weight-medium);
59
+ line-height: 1.5;
60
+ min-height: 44px;
61
+ touch-action: manipulation;
62
+ user-select: none;
63
+ }
64
+
65
+ :where(button):hover:not(:disabled) {
66
+ opacity: 0.9;
67
+ background-color: var(--color-primary-700);
68
+ }
69
+
70
+ :where(button):focus-visible {
71
+ outline: 2px solid var(--color-primary-500);
72
+ outline-offset: 2px;
73
+ }
74
+
75
+ :where(button):disabled {
76
+ opacity: 0.5;
77
+ cursor: not-allowed;
78
+ }
79
+
80
+ :where(button):active:not(:disabled) {
81
+ transform: scale(0.98);
82
+ }
83
+
84
+ /* Input primitives */
85
+ :where(input:not([type="radio"]):not([type="checkbox"]):not([type="range"]):not([type="color"])),
86
+ :where(select),
87
+ :where(textarea) {
88
+ font: inherit;
89
+ color: var(--color-text-primary);
90
+ background: var(--color-input-bg);
91
+ border: 1px solid var(--color-border);
92
+ border-radius: var(--radius-md);
93
+ padding: var(--spacing-2) var(--spacing-3);
94
+ min-height: 40px;
95
+ width: 100%;
96
+ transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
97
+ appearance: none;
98
+ }
99
+
100
+ :where(input):focus-visible,
101
+ :where(select):focus-visible,
102
+ :where(textarea):focus-visible {
103
+ outline: none;
104
+ border-color: var(--color-primary-500);
105
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary-500) 30%, transparent);
106
+ }
107
+
108
+ :where(input):disabled,
109
+ :where(select):disabled,
110
+ :where(textarea):disabled {
111
+ opacity: 0.6;
112
+ cursor: not-allowed;
113
+ background-color: var(--color-input-disabled-bg);
114
+ }
115
+
116
+ /* Harmonized placeholder styling */
117
+ :where(input)::placeholder,
118
+ :where(textarea)::placeholder,
119
+ :where(pds-richtext)::placeholder {
120
+ color: var(--color-text-muted);
121
+ opacity: 1;
122
+ font-weight: var(--font-weight-normal);
123
+ }
124
+
125
+ :where(textarea) {
126
+ min-height: 80px;
127
+ resize: vertical;
128
+ }
129
+
130
+ /* Link primitives */
131
+ :where(a) {
132
+ color: var(--color-primary-600);
133
+ text-decoration: underline;
134
+ text-underline-offset: 0.2em;
135
+ transition: opacity var(--transition-fast);
136
+ }
137
+
138
+ :where(a):hover {
139
+ opacity: 0.8;
140
+ }
141
+
142
+ :where(a):focus-visible {
143
+ outline: 2px solid var(--color-primary-500);
144
+ outline-offset: 2px;
145
+ border-radius: var(--radius-sm);
146
+ }
147
+
148
+ /* Form primitives */
149
+ :where(label) {
150
+ display: block;
151
+ font-weight: var(--font-weight-medium);
152
+ margin-bottom: var(--spacing-2);
153
+ color: var(--color-text-primary);
154
+ font-size: var(--font-size-sm);
155
+ }
156
+
157
+ /* Checkbox enhancement - visually hide native input but keep accessible
158
+ Excludes button-style checkboxes in fieldsets and special containers */
159
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]) input[type="checkbox"]) {
160
+ position: absolute;
161
+ opacity: 0;
162
+ width: 1px;
163
+ height: 1px;
164
+ }
165
+
166
+ /* Style label container for checkbox */
167
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"])) {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ gap: var(--spacing-2);
171
+ cursor: pointer;
172
+ user-select: none;
173
+ position: relative;
174
+ padding-left: calc(var(--spacing-5) + var(--spacing-3));
175
+ }
176
+
177
+ /* Custom checkbox box using PDS tokens - works with or without span wrapper */
178
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"])::before) {
179
+ content: "";
180
+ position: absolute;
181
+ left: 0;
182
+ top: 50%;
183
+ transform: translateY(-50%);
184
+ width: var(--spacing-5);
185
+ height: var(--spacing-5);
186
+ border: var(--border-width-md) solid var(--color-border);
187
+ border-radius: var(--radius-sm);
188
+ background: var(--color-surface-base);
189
+ transition: all var(--transition-fast);
190
+ flex-shrink: 0;
191
+ }
192
+
193
+ /* Checkmark */
194
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:checked)::after) {
195
+ content: "";
196
+ position: absolute;
197
+ left: var(--spacing-2);
198
+ top: 50%;
199
+ transform: translateY(-60%) rotate(45deg);
200
+ width: var(--spacing-1-5);
201
+ height: var(--spacing-3);
202
+ border: solid var(--color-primary-contrast, white);
203
+ border-width: 0 2px 2px 0;
204
+ }
205
+
206
+ /* Checked state */
207
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:checked)::before) {
208
+ background: var(--color-primary-600);
209
+ border-color: var(--color-primary-600);
210
+ }
211
+
212
+ /* Focus styles for accessibility */
213
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:focus)::before) {
214
+ outline: 2px solid var(--color-primary-500);
215
+ outline-offset: 2px;
216
+ }
217
+
218
+ /* Hover effects */
219
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:not(:disabled)):hover::before) {
220
+ border-color: var(--color-primary-600);
221
+ background: var(--color-surface-subtle);
222
+ }
223
+
224
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:checked:not(:disabled)):hover::before) {
225
+ background: var(--color-primary-700);
226
+ border-color: var(--color-primary-700);
227
+ }
228
+
229
+ /* Disabled state */
230
+ :where(label:not(fieldset label, .checkbox-container label, [data-toggle]):has(input[type="checkbox"]:disabled)) {
231
+ opacity: 0.5;
232
+ cursor: not-allowed;
233
+ }
234
+
235
+ :where(fieldset) {
236
+ border: none;
237
+ padding: var(--spacing-4);
238
+ margin: 0 0 var(--spacing-4) 0;
239
+ background-color: var(--color-surface-subtle);
240
+ }
241
+
242
+ :where(legend) {
243
+ display: block;
244
+ font-weight: var(--font-weight-semibold);
245
+ padding: 0;
246
+ color: var(--color-text-primary);
247
+ font-weight: var(--font-weight-semibold);
248
+ color: var(--color-text-primary);
249
+ margin: 0 0 var(--spacing-3) 0;
250
+ border: none;
251
+ line-height: var(--font-line-height-tight);
252
+ font-size: var(--font-size-lg);
253
+ background: transparent; /* avoid browser default notch behavior */
254
+ width: auto;
255
+ box-sizing: border-box;
256
+ }
257
+
258
+
259
+ /* List primitives */
260
+ :where(ul, ol) {
261
+ padding-left: var(--spacing-6);
262
+ margin: var(--spacing-3) 0;
263
+ }
264
+
265
+ :where(li) {
266
+ margin: var(--spacing-1) 0;
267
+ }
268
+
269
+ /* Typography primitives */
270
+ :where(h1, h2, h3, h4, h5, h6) {
271
+ font-family: var(--font-family-headings);
272
+ font-weight: var(--font-weight-bold);
273
+ line-height: var(--font-line-height-tight);
274
+ margin: var(--spacing-4) 0 var(--spacing-3) 0;
275
+ color: var(--color-text-primary);
276
+ word-wrap: break-word;
277
+ hyphens: auto;
278
+ overflow-wrap: break-word;
279
+ }
280
+
281
+ /* Mobile-first heading sizes */
282
+ :where(h1) { font-size: var(--font-size-2xl); }
283
+ :where(h2) { font-size: var(--font-size-xl); }
284
+ :where(h3) { font-size: var(--font-size-lg); }
285
+ :where(h4) { font-size: var(--font-size-base); }
286
+ :where(h5) { font-size: var(--font-size-sm); }
287
+ :where(h6) { font-size: var(--font-size-xs); }
288
+
289
+ /* Scale up on larger screens */
290
+ @media (min-width: 640px) {
291
+ :where(h1) { font-size: var(--font-size-3xl); }
292
+ :where(h2) { font-size: var(--font-size-2xl); }
293
+ :where(h3) { font-size: var(--font-size-xl); }
294
+ :where(h4) { font-size: var(--font-size-lg); }
295
+ :where(h5) { font-size: var(--font-size-base); }
296
+ :where(h6) { font-size: var(--font-size-sm); }
297
+ }
298
+
299
+ :where(p) {
300
+ margin: var(--spacing-3) 0;
301
+ line-height: var(--font-line-height-relaxed);
302
+ color: var(--color-text-primary);
303
+ }
304
+
305
+ /* Code primitives */
306
+ :where(code) {
307
+ font-family: var(--font-family-mono, monospace);
308
+ font-size: 0.9em;
309
+ background: var(--color-surface-muted);
310
+ padding: 0.2em 0.4em;
311
+ border-radius: var(--radius-sm);
312
+ color: var(--color-text-primary);
313
+ }
314
+
315
+ :where(pre) {
316
+ font-family: var(--font-family-mono, monospace);
317
+ background: var(--color-surface-muted);
318
+ padding: var(--spacing-4);
319
+ border-radius: var(--radius-md);
320
+ overflow-x: auto;
321
+ margin: var(--spacing-4) 0;
322
+ }
323
+
324
+ :where(pre code) {
325
+ background: none;
326
+ padding: 0;
327
+ }
328
+
329
+ /* Media primitives */
330
+ :where(img, video) {
331
+ max-width: 100%;
332
+ height: auto;
333
+ border-radius: var(--radius-sm);
334
+ }
335
+
336
+ :where(figure) {
337
+ margin: 0 0 var(--spacing-6) 0;
338
+ }
339
+
340
+ :where(figcaption) {
341
+ margin-top: var(--spacing-3);
342
+ font-size: var(--font-size-sm);
343
+ color: var(--color-text-secondary);
344
+ line-height: var(--font-line-height-relaxed);
345
+ }
346
+
347
+
348
+ :where([hidden]) {
349
+ display: none !important;
350
+ }
351
+ }
352
+