@pure-ds/storybook 0.4.16 → 0.4.19
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/html-preview/Panel.jsx +80 -29
- package/.storybook/addons/html-preview/preview.js +4 -5
- package/.storybook/manager.js +337 -49
- package/.storybook/preview-head.html +2 -2
- package/.storybook/preview.js +2 -2
- package/README.md +2 -2
- package/dist/pds-reference.json +1916 -267
- package/package.json +2 -2
- package/public/assets/css/app.css +2 -2
- package/public/assets/js/app.js +645 -10574
- package/public/assets/js/lit.js +3 -1048
- package/public/assets/js/pds.js +429 -7368
- package/public/assets/pds/components/pds-calendar.js +1 -1
- package/public/assets/pds/components/{pds-jsonform.js → pds-form.js} +536 -45
- package/public/assets/pds/custom-elements.json +271 -26
- package/public/assets/pds/pds-runtime-config.json +1 -1
- package/public/assets/pds/styles/pds-components.css +83 -221
- package/public/assets/pds/styles/pds-components.css.js +166 -442
- package/public/assets/pds/styles/pds-styles.css +240 -437
- package/public/assets/pds/styles/pds-styles.css.js +479 -881
- package/public/assets/pds/styles/pds-utilities.css +151 -214
- package/public/assets/pds/styles/pds-utilities.css.js +302 -428
- package/public/assets/pds/vscode-custom-data.json +63 -63
- package/scripts/build-pds-reference.mjs +112 -38
- package/scripts/generate-stories.js +2 -2
- package/src/js/common/ask.js +48 -21
- package/src/js/pds-configurator/pds-config-form.js +9 -9
- package/src/js/pds-configurator/pds-demo.js +2 -2
- package/src/js/pds-core/pds-config.js +14 -14
- package/src/js/pds-core/pds-generator.js +113 -50
- package/src/js/pds-core/pds-ontology.js +6 -6
- package/src/js/pds.d.ts +2 -2
- package/stories/GettingStarted.stories.js +3 -0
- package/stories/WhatIsPDS.stories.js +3 -0
- package/stories/components/PdsCalendar.stories.js +2 -2
- package/stories/components/PdsDrawer.stories.js +15 -15
- package/stories/components/PdsForm.stories.js +4356 -0
- package/stories/components/{PdsJsonformUiSchema.md → PdsFormUiSchema.md} +2 -2
- package/stories/components/PdsRichtext.stories.js +4 -17
- package/stories/components/PdsScrollrow.stories.js +224 -72
- package/stories/components/PdsSplitpanel.stories.js +63 -28
- package/stories/components/PdsTabstrip.stories.js +7 -7
- package/stories/enhancements/Accordion.stories.js +2 -2
- package/stories/enhancements/Dropdowns.stories.js +13 -10
- package/stories/enhancements/RangeSliders.stories.js +9 -9
- package/stories/enhancements/RequiredFields.stories.js +8 -8
- package/stories/enhancements/Toggles.stories.js +45 -36
- package/stories/enhancements/_enhancement-header.js +2 -2
- package/stories/foundations/Colors.stories.js +13 -13
- package/stories/foundations/HTMLDefaults.stories.js +4 -4
- package/stories/foundations/Icons.stories.js +123 -288
- package/stories/foundations/MeshGradients.stories.js +161 -250
- package/stories/foundations/SmartSurfaces.stories.js +147 -64
- package/stories/foundations/Spacing.stories.js +30 -30
- package/stories/foundations/Typography.stories.js +352 -723
- package/stories/foundations/ZIndex.stories.js +124 -141
- package/stories/layout/LayoutOverview.stories.js +345 -250
- package/stories/layout/LayoutSystem.stories.js +60 -76
- package/stories/patterns/InteractiveStates.stories.js +29 -29
- package/stories/patterns/Utilities.stories.js +17 -5
- package/stories/primitives/Alerts.stories.js +6 -6
- package/stories/primitives/Cards.stories.js +22 -11
- package/stories/primitives/{Forms.stories.js → FormElements.stories.js} +20 -11
- package/stories/primitives/HtmlFormElements.stories.js +128 -0
- package/stories/primitives/{FormGroups.stories.js → HtmlFormGroups.stories.js} +70 -21
- package/stories/primitives/Media.stories.js +23 -20
- package/stories/utilities/Backdrop.stories.js +68 -27
- package/stories/utils/PdsAsk.stories.js +15 -14
- package/public/assets/js/app.js.map +0 -7
- package/public/assets/js/lit.js.map +0 -7
- package/public/assets/js/pds.js.map +0 -7
- package/stories/components/PdsJsonform.stories.js +0 -1929
- /package/src/{pds-core → node-api}/pds-api.js +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { html } from "lit";
|
|
2
2
|
|
|
3
|
+
const layoutSystemStyles = html`
|
|
4
|
+
<style>
|
|
5
|
+
.story-demo-area { padding: var(--spacing-4); border-radius: var(--radius-md); }
|
|
6
|
+
.story-demo-area-sm { padding: var(--spacing-2); border-radius: var(--radius-md); }
|
|
7
|
+
.story-demo-area-md { padding: var(--spacing-3); border-radius: var(--radius-md); }
|
|
8
|
+
.story-demo-item { padding: var(--spacing-2); }
|
|
9
|
+
.story-demo-item-lg { padding: var(--spacing-4); }
|
|
10
|
+
.story-demo-height { height: 100px; }
|
|
11
|
+
.story-fixed-width { width: 100px; }
|
|
12
|
+
.story-min-width { min-width: 120px; }
|
|
13
|
+
.story-margin-top { margin-block-start: var(--spacing-2); }
|
|
14
|
+
</style>
|
|
15
|
+
`;
|
|
16
|
+
|
|
3
17
|
export default {
|
|
4
18
|
title: "Foundations/Layout",
|
|
5
19
|
tags: ["layout", "flex", "grid", "container", "utilities", "text", "truncate", "spacing", "gap", "alignment"],
|
|
@@ -18,16 +32,14 @@ export default {
|
|
|
18
32
|
// ─────────────────────────────────────────────────────────────
|
|
19
33
|
|
|
20
34
|
export const Container = () => html`
|
|
21
|
-
|
|
35
|
+
${layoutSystemStyles}
|
|
36
|
+
<div class="card surface-subtle story-demo-area-sm">
|
|
22
37
|
<p class="text-muted text-center">
|
|
23
38
|
Gray background shows viewport width. Container centers content with
|
|
24
39
|
max-width.
|
|
25
40
|
</p>
|
|
26
41
|
|
|
27
|
-
<div
|
|
28
|
-
class="container surface-base"
|
|
29
|
-
style="border-radius: var(--radius-md);"
|
|
30
|
-
>
|
|
42
|
+
<div class="container surface-base story-demo-area">
|
|
31
43
|
<h2>Container</h2>
|
|
32
44
|
<p>
|
|
33
45
|
<code>.container</code> centers content with a max-width (default
|
|
@@ -66,6 +78,7 @@ Container.storyName = "Container";
|
|
|
66
78
|
// ─────────────────────────────────────────────────────────────
|
|
67
79
|
|
|
68
80
|
export const GridFixed = () => html`
|
|
81
|
+
${layoutSystemStyles}
|
|
69
82
|
<header>
|
|
70
83
|
<h2>Fixed Column Grids</h2>
|
|
71
84
|
<p class="text-muted">Explicit column counts for predictable layouts.</p>
|
|
@@ -122,6 +135,7 @@ export const GridFixed = () => html`
|
|
|
122
135
|
GridFixed.storyName = "Grid: Fixed Columns";
|
|
123
136
|
|
|
124
137
|
export const GridAuto = () => html`
|
|
138
|
+
${layoutSystemStyles}
|
|
125
139
|
<header class="card">
|
|
126
140
|
<h2>Auto-Fit Responsive Grids</h2>
|
|
127
141
|
<p class="text-muted">
|
|
@@ -185,6 +199,7 @@ GridAuto.storyName = "Grid: Auto-Fit";
|
|
|
185
199
|
// ─────────────────────────────────────────────────────────────
|
|
186
200
|
|
|
187
201
|
export const FlexBasics = () => html`
|
|
202
|
+
${layoutSystemStyles}
|
|
188
203
|
<header class="card">
|
|
189
204
|
<h2>Flexbox Utilities</h2>
|
|
190
205
|
<p class="text-muted">
|
|
@@ -194,10 +209,7 @@ export const FlexBasics = () => html`
|
|
|
194
209
|
|
|
195
210
|
<div class="card">
|
|
196
211
|
<h3>.flex (row by default)</h3>
|
|
197
|
-
<div
|
|
198
|
-
class="flex gap-md surface-subtle"
|
|
199
|
-
style="padding: var(--spacing-4); border-radius: var(--radius-md);"
|
|
200
|
-
>
|
|
212
|
+
<div class="flex gap-md surface-subtle story-demo-area">
|
|
201
213
|
<div class="card">Item 1</div>
|
|
202
214
|
<div class="card">Item 2</div>
|
|
203
215
|
<div class="card">Item 3</div>
|
|
@@ -205,11 +217,8 @@ export const FlexBasics = () => html`
|
|
|
205
217
|
</div>
|
|
206
218
|
|
|
207
219
|
<div class="card">
|
|
208
|
-
<h3>.
|
|
209
|
-
<div
|
|
210
|
-
class="flex flex-col gap-sm surface-subtle"
|
|
211
|
-
style="padding: var(--spacing-4); border-radius: var(--radius-md);"
|
|
212
|
-
>
|
|
220
|
+
<h3>.stack-sm (vertical)</h3>
|
|
221
|
+
<div class="stack-sm surface-subtle story-demo-area">
|
|
213
222
|
<div class="card">Item 1</div>
|
|
214
223
|
<div class="card">Item 2</div>
|
|
215
224
|
<div class="card">Item 3</div>
|
|
@@ -218,14 +227,11 @@ export const FlexBasics = () => html`
|
|
|
218
227
|
|
|
219
228
|
<div class="card">
|
|
220
229
|
<h3>.flex .flex-wrap</h3>
|
|
221
|
-
<div
|
|
222
|
-
class="flex flex-wrap gap-sm surface-subtle"
|
|
223
|
-
style="padding: var(--spacing-4); border-radius: var(--radius-md);"
|
|
224
|
-
>
|
|
230
|
+
<div class="flex flex-wrap gap-sm surface-subtle story-demo-area">
|
|
225
231
|
${Array.from(
|
|
226
232
|
{ length: 8 },
|
|
227
233
|
(_, i) => html`
|
|
228
|
-
<div class="card
|
|
234
|
+
<div class="card story-min-width">Item ${i + 1}</div>
|
|
229
235
|
`
|
|
230
236
|
)}
|
|
231
237
|
</div>
|
|
@@ -233,13 +239,10 @@ export const FlexBasics = () => html`
|
|
|
233
239
|
|
|
234
240
|
<div class="card">
|
|
235
241
|
<h3>.grow (fill remaining space)</h3>
|
|
236
|
-
<div
|
|
237
|
-
class="
|
|
238
|
-
style="padding: var(--spacing-4); border-radius: var(--radius-md);"
|
|
239
|
-
>
|
|
240
|
-
<div class="card" style="width: 100px;">Fixed</div>
|
|
242
|
+
<div class="flex gap-md surface-subtle story-demo-area">
|
|
243
|
+
<div class="card story-fixed-width">Fixed</div>
|
|
241
244
|
<div class="card grow">This item grows to fill available space</div>
|
|
242
|
-
<div class="card
|
|
245
|
+
<div class="card story-fixed-width">Fixed</div>
|
|
243
246
|
</div>
|
|
244
247
|
</div>
|
|
245
248
|
`;
|
|
@@ -247,6 +250,7 @@ export const FlexBasics = () => html`
|
|
|
247
250
|
FlexBasics.storyName = "Flex: Basics";
|
|
248
251
|
|
|
249
252
|
export const FlexAlignment = () => html`
|
|
253
|
+
${layoutSystemStyles}
|
|
250
254
|
<header class="card">
|
|
251
255
|
<h2>Alignment Utilities</h2>
|
|
252
256
|
<p class="text-muted">
|
|
@@ -259,32 +263,23 @@ export const FlexAlignment = () => html`
|
|
|
259
263
|
<div class="grid grid-cols-3 gap-md">
|
|
260
264
|
<div>
|
|
261
265
|
<code>.items-start</code>
|
|
262
|
-
<div
|
|
263
|
-
class="
|
|
264
|
-
|
|
265
|
-
>
|
|
266
|
-
<div class="card" style="padding: var(--spacing-2);">A</div>
|
|
267
|
-
<div class="card" style="padding: var(--spacing-4);">B</div>
|
|
266
|
+
<div class="flex items-start gap-sm surface-subtle story-demo-area-sm story-demo-height">
|
|
267
|
+
<div class="card story-demo-item">A</div>
|
|
268
|
+
<div class="card story-demo-item-lg">B</div>
|
|
268
269
|
</div>
|
|
269
270
|
</div>
|
|
270
271
|
<div>
|
|
271
272
|
<code>.items-center</code>
|
|
272
|
-
<div
|
|
273
|
-
class="
|
|
274
|
-
|
|
275
|
-
>
|
|
276
|
-
<div class="card" style="padding: var(--spacing-2);">A</div>
|
|
277
|
-
<div class="card" style="padding: var(--spacing-4);">B</div>
|
|
273
|
+
<div class="flex items-center gap-sm surface-subtle story-demo-area-sm story-demo-height">
|
|
274
|
+
<div class="card story-demo-item">A</div>
|
|
275
|
+
<div class="card story-demo-item-lg">B</div>
|
|
278
276
|
</div>
|
|
279
277
|
</div>
|
|
280
278
|
<div>
|
|
281
279
|
<code>.items-end</code>
|
|
282
|
-
<div
|
|
283
|
-
class="
|
|
284
|
-
|
|
285
|
-
>
|
|
286
|
-
<div class="card" style="padding: var(--spacing-2);">A</div>
|
|
287
|
-
<div class="card" style="padding: var(--spacing-4);">B</div>
|
|
280
|
+
<div class="flex items-end gap-sm surface-subtle story-demo-area-sm story-demo-height">
|
|
281
|
+
<div class="card story-demo-item">A</div>
|
|
282
|
+
<div class="card story-demo-item-lg">B</div>
|
|
288
283
|
</div>
|
|
289
284
|
</div>
|
|
290
285
|
</div>
|
|
@@ -297,13 +292,10 @@ export const FlexAlignment = () => html`
|
|
|
297
292
|
(justify) => html`
|
|
298
293
|
<div>
|
|
299
294
|
<code>.justify-${justify}</code>
|
|
300
|
-
<div
|
|
301
|
-
class="
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
<div class="card" style="padding: var(--spacing-2);">A</div>
|
|
305
|
-
<div class="card" style="padding: var(--spacing-2);">B</div>
|
|
306
|
-
<div class="card" style="padding: var(--spacing-2);">C</div>
|
|
295
|
+
<div class="flex justify-${justify} gap-sm surface-subtle story-demo-area-sm">
|
|
296
|
+
<div class="card story-demo-item">A</div>
|
|
297
|
+
<div class="card story-demo-item">B</div>
|
|
298
|
+
<div class="card story-demo-item">C</div>
|
|
307
299
|
</div>
|
|
308
300
|
</div>
|
|
309
301
|
`
|
|
@@ -319,6 +311,7 @@ FlexAlignment.storyName = "Flex: Alignment";
|
|
|
319
311
|
// ─────────────────────────────────────────────────────────────
|
|
320
312
|
|
|
321
313
|
export const Stack = () => html`
|
|
314
|
+
${layoutSystemStyles}
|
|
322
315
|
<header>
|
|
323
316
|
<h2>Stack Utilities</h2>
|
|
324
317
|
<p class="text-muted">
|
|
@@ -333,13 +326,10 @@ export const Stack = () => html`
|
|
|
333
326
|
(size) => html`
|
|
334
327
|
<div class="card">
|
|
335
328
|
<h3>.stack-${size}</h3>
|
|
336
|
-
<div
|
|
337
|
-
class="
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
<div class="card" style="padding: var(--spacing-2);">Item 1</div>
|
|
341
|
-
<div class="card" style="padding: var(--spacing-2);">Item 2</div>
|
|
342
|
-
<div class="card" style="padding: var(--spacing-2);">Item 3</div>
|
|
329
|
+
<div class="stack-${size} surface-subtle story-demo-area-md">
|
|
330
|
+
<div class="card story-demo-item">Item 1</div>
|
|
331
|
+
<div class="card story-demo-item">Item 2</div>
|
|
332
|
+
<div class="card story-demo-item">Item 3</div>
|
|
343
333
|
</div>
|
|
344
334
|
</div>
|
|
345
335
|
`
|
|
@@ -350,15 +340,15 @@ export const Stack = () => html`
|
|
|
350
340
|
<h3>Practical: Form Layout</h3>
|
|
351
341
|
<form class="stack-md max-w-md">
|
|
352
342
|
<label>
|
|
353
|
-
<span>Name</span>
|
|
343
|
+
<span data-label>Name</span>
|
|
354
344
|
<input type="text" placeholder="John Doe" />
|
|
355
345
|
</label>
|
|
356
346
|
<label>
|
|
357
|
-
<span>Email</span>
|
|
347
|
+
<span data-label>Email</span>
|
|
358
348
|
<input type="email" placeholder="john@example.com" />
|
|
359
349
|
</label>
|
|
360
350
|
<label>
|
|
361
|
-
<span>Message</span>
|
|
351
|
+
<span data-label>Message</span>
|
|
362
352
|
<textarea rows="3" placeholder="Your message..."></textarea>
|
|
363
353
|
</label>
|
|
364
354
|
<div class="flex gap-sm justify-end">
|
|
@@ -377,6 +367,7 @@ Stack.storyName = "Stack";
|
|
|
377
367
|
// ─────────────────────────────────────────────────────────────
|
|
378
368
|
|
|
379
369
|
export const Gap = () => html`
|
|
370
|
+
${layoutSystemStyles}
|
|
380
371
|
<header>
|
|
381
372
|
<h2>Gap Utilities</h2>
|
|
382
373
|
<p class="text-muted">Control spacing between flex/grid children.</p>
|
|
@@ -394,17 +385,11 @@ export const Gap = () => html`
|
|
|
394
385
|
({ cls, label }) => html`
|
|
395
386
|
<div class="card">
|
|
396
387
|
<code>.${cls}</code> <span class="text-muted">(${label})</span>
|
|
397
|
-
<div
|
|
398
|
-
class="grid grid-cols-4 ${cls}"
|
|
399
|
-
style="margin-top: var(--spacing-2);"
|
|
400
|
-
>
|
|
388
|
+
<div class="grid grid-cols-4 ${cls} story-margin-top">
|
|
401
389
|
${Array.from(
|
|
402
390
|
{ length: 4 },
|
|
403
391
|
(_, i) => html`
|
|
404
|
-
<div
|
|
405
|
-
class="card surface-elevated text-center"
|
|
406
|
-
style="padding: var(--spacing-2);"
|
|
407
|
-
>
|
|
392
|
+
<div class="card surface-elevated text-center story-demo-item">
|
|
408
393
|
${i + 1}
|
|
409
394
|
</div>
|
|
410
395
|
`
|
|
@@ -423,6 +408,7 @@ Gap.storyName = "Gap";
|
|
|
423
408
|
// ─────────────────────────────────────────────────────────────
|
|
424
409
|
|
|
425
410
|
export const MaxWidth = () => html`
|
|
411
|
+
${layoutSystemStyles}
|
|
426
412
|
<header class="card">
|
|
427
413
|
<h2>Max-Width Utilities</h2>
|
|
428
414
|
<p class="text-muted">Constrain content width for readability.</p>
|
|
@@ -438,10 +424,7 @@ export const MaxWidth = () => html`
|
|
|
438
424
|
({ cls, px, use }) => html`
|
|
439
425
|
<div>
|
|
440
426
|
<code>.${cls}</code> <span class="text-muted">(${px}) — ${use}</span>
|
|
441
|
-
<div
|
|
442
|
-
class="${cls} surface-subtle"
|
|
443
|
-
style="padding: var(--spacing-4); border-radius: var(--radius-md); margin-top: var(--spacing-2);"
|
|
444
|
-
>
|
|
427
|
+
<div class="${cls} surface-subtle story-demo-area story-margin-top">
|
|
445
428
|
Content constrained to ${px}
|
|
446
429
|
</div>
|
|
447
430
|
</div>
|
|
@@ -457,6 +440,7 @@ MaxWidth.storyName = "Max-Width";
|
|
|
457
440
|
// ─────────────────────────────────────────────────────────────
|
|
458
441
|
|
|
459
442
|
export const Section = () => html`
|
|
443
|
+
${layoutSystemStyles}
|
|
460
444
|
<header>
|
|
461
445
|
<h2>Section Spacing</h2>
|
|
462
446
|
<p class="text-muted">Vertical padding for major content blocks.</p>
|
|
@@ -484,6 +468,7 @@ Section.storyName = "Section";
|
|
|
484
468
|
// ─────────────────────────────────────────────────────────────
|
|
485
469
|
|
|
486
470
|
export const Responsive = () => html`
|
|
471
|
+
${layoutSystemStyles}
|
|
487
472
|
<div class="card">
|
|
488
473
|
<h2>Responsive Utilities</h2>
|
|
489
474
|
</div>
|
|
@@ -529,6 +514,7 @@ Responsive.storyName = "Responsive";
|
|
|
529
514
|
// ─────────────────────────────────────────────────────────────
|
|
530
515
|
|
|
531
516
|
export const TextUtilities = () => html`
|
|
517
|
+
${layoutSystemStyles}
|
|
532
518
|
<div class="card">
|
|
533
519
|
<h2>Text Utilities</h2>
|
|
534
520
|
</div>
|
|
@@ -554,10 +540,7 @@ export const TextUtilities = () => html`
|
|
|
554
540
|
<div class="card">
|
|
555
541
|
<h3>.truncate</h3>
|
|
556
542
|
<p class="text-muted">Truncates text with ellipsis when overflowing.</p>
|
|
557
|
-
<div
|
|
558
|
-
class="max-w-sm surface-subtle"
|
|
559
|
-
style="padding: var(--spacing-3); border-radius: var(--radius-md);"
|
|
560
|
-
>
|
|
543
|
+
<div class="max-w-sm surface-subtle story-demo-area-md">
|
|
561
544
|
<p class="truncate">
|
|
562
545
|
This is a very long piece of text that will be truncated with an
|
|
563
546
|
ellipsis when it overflows its container because it has the .truncate
|
|
@@ -574,6 +557,7 @@ TextUtilities.storyName = "Text";
|
|
|
574
557
|
// ─────────────────────────────────────────────────────────────
|
|
575
558
|
|
|
576
559
|
export const Reference = () => html`
|
|
560
|
+
${layoutSystemStyles}
|
|
577
561
|
<div class="card">
|
|
578
562
|
<h2>Complete Layout Reference</h2>
|
|
579
563
|
<p class="text-muted">All layout utilities in PDS.</p>
|
|
@@ -2,74 +2,74 @@ import { html } from "lit";
|
|
|
2
2
|
|
|
3
3
|
const interactiveSkeletonStoryStyles = html`
|
|
4
4
|
<style>
|
|
5
|
-
.interactive-skeleton-card {
|
|
5
|
+
.story-interactive-skeleton-card {
|
|
6
6
|
display: grid;
|
|
7
7
|
gap: var(--spacing-3);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.interactive-skeleton-block {
|
|
10
|
+
.story-interactive-skeleton-block {
|
|
11
11
|
display: block;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
.interactive-skeleton-height-24 {
|
|
14
|
+
.story-interactive-skeleton-height-24 {
|
|
15
15
|
height: 1.5rem;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
.interactive-skeleton-height-20 {
|
|
18
|
+
.story-interactive-skeleton-height-20 {
|
|
19
19
|
height: 1.25rem;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
.interactive-skeleton-height-16 {
|
|
22
|
+
.story-interactive-skeleton-height-16 {
|
|
23
23
|
height: 1rem;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
.interactive-skeleton-height-14 {
|
|
26
|
+
.story-interactive-skeleton-height-14 {
|
|
27
27
|
height: 0.875rem;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
.interactive-skeleton-width-60 {
|
|
30
|
+
.story-interactive-skeleton-width-60 {
|
|
31
31
|
width: 60%;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
.interactive-skeleton-width-80 {
|
|
34
|
+
.story-interactive-skeleton-width-80 {
|
|
35
35
|
width: 80%;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.interactive-skeleton-width-70 {
|
|
38
|
+
.story-interactive-skeleton-width-70 {
|
|
39
39
|
width: 70%;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
.interactive-skeleton-width-50 {
|
|
42
|
+
.story-interactive-skeleton-width-50 {
|
|
43
43
|
width: 50%;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
.interactive-skeleton-width-40 {
|
|
46
|
+
.story-interactive-skeleton-width-40 {
|
|
47
47
|
width: 40%;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
.interactive-skeleton-width-85 {
|
|
50
|
+
.story-interactive-skeleton-width-85 {
|
|
51
51
|
width: 85%;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
.interactive-skeleton-margin-lg {
|
|
54
|
+
.story-interactive-skeleton-margin-lg {
|
|
55
55
|
margin-bottom: var(--spacing-3);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
.interactive-skeleton-margin-md {
|
|
58
|
+
.story-interactive-skeleton-margin-md {
|
|
59
59
|
margin-bottom: var(--spacing-2);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
.interactive-skeleton-avatar {
|
|
62
|
+
.story-interactive-skeleton-avatar {
|
|
63
63
|
width: 2.5rem;
|
|
64
64
|
height: 2.5rem;
|
|
65
65
|
border-radius: 50%;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
.interactive-skeleton-list-item {
|
|
68
|
+
.story-interactive-skeleton-list-item {
|
|
69
69
|
padding: var(--spacing-3);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
.interactive-skeleton-details {
|
|
72
|
+
.story-interactive-skeleton-details {
|
|
73
73
|
flex: 1;
|
|
74
74
|
}
|
|
75
75
|
</style>
|
|
@@ -128,12 +128,12 @@ export const FocusStates = () => html`
|
|
|
128
128
|
<h3>Form Controls</h3>
|
|
129
129
|
<div class="max-w-md">
|
|
130
130
|
<label>
|
|
131
|
-
<span>Text Input</span>
|
|
131
|
+
<span data-label>Text Input</span>
|
|
132
132
|
<input type="text" placeholder="Tab to focus" />
|
|
133
133
|
</label>
|
|
134
134
|
|
|
135
135
|
<label>
|
|
136
|
-
<span>Textarea</span>
|
|
136
|
+
<span data-label>Textarea</span>
|
|
137
137
|
<textarea rows="3" placeholder="Tab to focus"></textarea>
|
|
138
138
|
</label>
|
|
139
139
|
|
|
@@ -317,7 +317,7 @@ export const TransitionSpeeds = () => {
|
|
|
317
317
|
<pre
|
|
318
318
|
class="surface-subtle radius-md overflow-auto"
|
|
319
319
|
><code>/* Use transition tokens in your CSS */
|
|
320
|
-
.button {
|
|
320
|
+
.story-button {
|
|
321
321
|
transition: background-color var(--transition-fast);
|
|
322
322
|
}
|
|
323
323
|
|
|
@@ -327,7 +327,7 @@ export const TransitionSpeeds = () => {
|
|
|
327
327
|
box-shadow var(--transition-normal);
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
-
.modal {
|
|
330
|
+
.story-modal {
|
|
331
331
|
transition: opacity var(--transition-slow);
|
|
332
332
|
}</code></pre>
|
|
333
333
|
</div>
|
|
@@ -437,7 +437,7 @@ export const WorkingStates = () => {
|
|
|
437
437
|
<div class="stack-md">
|
|
438
438
|
<header>
|
|
439
439
|
<h3>Different Sizes</h3>
|
|
440
|
-
<small class="text-muted
|
|
440
|
+
<small class="text-muted">Spinner size adapts to button size</small>
|
|
441
441
|
</header>
|
|
442
442
|
<div class="flex flex-wrap gap-sm align-center">
|
|
443
443
|
<button
|
|
@@ -538,7 +538,7 @@ export const SkeletonLoading = () => html`
|
|
|
538
538
|
class="flex gap-sm align-center border-bottom interactive-skeleton-list-item"
|
|
539
539
|
>
|
|
540
540
|
<div class="skeleton interactive-skeleton-avatar"></div>
|
|
541
|
-
<div class="interactive-skeleton-details">
|
|
541
|
+
<div class="story-interactive-skeleton-details">
|
|
542
542
|
<div
|
|
543
543
|
class="skeleton interactive-skeleton-block interactive-skeleton-height-16 interactive-skeleton-width-70 interactive-skeleton-margin-md"
|
|
544
544
|
></div>
|
|
@@ -622,19 +622,19 @@ export const DisabledStates = () => html`
|
|
|
622
622
|
<h3>Form Controls</h3>
|
|
623
623
|
<div class="max-w-md">
|
|
624
624
|
<label>
|
|
625
|
-
<span>Disabled Input</span>
|
|
625
|
+
<span data-label>Disabled Input</span>
|
|
626
626
|
<input type="text" disabled value="Cannot edit" />
|
|
627
627
|
</label>
|
|
628
628
|
|
|
629
629
|
<label>
|
|
630
|
-
<span>Disabled Select</span>
|
|
630
|
+
<span data-label>Disabled Select</span>
|
|
631
631
|
<select disabled>
|
|
632
632
|
<option>Cannot select</option>
|
|
633
633
|
</select>
|
|
634
634
|
</label>
|
|
635
635
|
|
|
636
636
|
<label>
|
|
637
|
-
<span>Disabled Textarea</span>
|
|
637
|
+
<span data-label>Disabled Textarea</span>
|
|
638
638
|
<textarea disabled rows="3">Cannot edit this text</textarea>
|
|
639
639
|
</label>
|
|
640
640
|
|
|
@@ -676,7 +676,7 @@ export const CombinedStates = () => html`
|
|
|
676
676
|
<div>
|
|
677
677
|
<header>
|
|
678
678
|
<h3>Hover State</h3>
|
|
679
|
-
<p class="text-muted
|
|
679
|
+
<p class="text-muted"><small>Hover over buttons to see effect</small></p>
|
|
680
680
|
</header>
|
|
681
681
|
<div class="flex flex-wrap gap-sm">
|
|
682
682
|
<button class="btn-primary">Primary</button>
|
|
@@ -688,7 +688,7 @@ export const CombinedStates = () => html`
|
|
|
688
688
|
<div>
|
|
689
689
|
<header>
|
|
690
690
|
<h3>Active State</h3>
|
|
691
|
-
<p class="text-muted
|
|
691
|
+
<p class="text-muted"><small>Click and hold to see effect</small></p>
|
|
692
692
|
</header>
|
|
693
693
|
<div class="flex flex-wrap gap-sm">
|
|
694
694
|
<button class="btn-primary">Primary</button>
|
|
@@ -700,7 +700,7 @@ export const CombinedStates = () => html`
|
|
|
700
700
|
<div>
|
|
701
701
|
<header>
|
|
702
702
|
<h3>Focus State</h3>
|
|
703
|
-
<p class="text-muted
|
|
703
|
+
<p class="text-muted"><small>Tab to focus on buttons</small></p>
|
|
704
704
|
</header>
|
|
705
705
|
<div class="flex flex-wrap gap-sm">
|
|
706
706
|
<button class="btn-primary">Primary</button>
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { html } from "lit";
|
|
2
2
|
|
|
3
|
+
// Story-specific styles (not PDS classes - demo only)
|
|
4
|
+
const utilitiesStoryStyles = html`
|
|
5
|
+
<style>
|
|
6
|
+
/* Radius demo */
|
|
7
|
+
.story-radius-sm { border-radius: var(--radius-sm); }
|
|
8
|
+
.story-radius-md { border-radius: var(--radius-md); }
|
|
9
|
+
.story-radius-lg { border-radius: var(--radius-lg); }
|
|
10
|
+
.story-radius-full { border-radius: var(--radius-full); }
|
|
11
|
+
</style>
|
|
12
|
+
`;
|
|
13
|
+
|
|
3
14
|
export default {
|
|
4
15
|
title: "Patterns/Utilities",
|
|
5
16
|
tags: ["utilities", "spacing", "layout", "gap"],
|
|
@@ -16,7 +27,7 @@ export default {
|
|
|
16
27
|
};
|
|
17
28
|
|
|
18
29
|
export const SpacingUtilities = () => html`
|
|
19
|
-
<div class="
|
|
30
|
+
<div class="stack-md">
|
|
20
31
|
<div class="gap-xs flex">
|
|
21
32
|
<div class="badge">Gap 1</div>
|
|
22
33
|
<div class="badge">Between</div>
|
|
@@ -64,10 +75,11 @@ export const BorderUtilities = () => html`
|
|
|
64
75
|
`;
|
|
65
76
|
|
|
66
77
|
export const RoundedUtilities = () => html`
|
|
78
|
+
${utilitiesStoryStyles}
|
|
67
79
|
<div class="flex gap-md flex-wrap">
|
|
68
|
-
<div class="card surface-inverse
|
|
69
|
-
<div class="card surface-inverse
|
|
70
|
-
<div class="card surface-inverse
|
|
71
|
-
<div class="card surface-inverse
|
|
80
|
+
<div class="card surface-inverse story-radius-sm">--radius-sm</div>
|
|
81
|
+
<div class="card surface-inverse story-radius-md">--radius-md</div>
|
|
82
|
+
<div class="card surface-inverse story-radius-lg">--radius-lg</div>
|
|
83
|
+
<div class="card surface-inverse story-radius-full">--radius-full</div>
|
|
72
84
|
</div>
|
|
73
85
|
`;
|
|
@@ -21,7 +21,7 @@ export const Default = () => html`
|
|
|
21
21
|
<p class="text-muted">Simple alert messages with semantic color variants.</p>
|
|
22
22
|
</header>
|
|
23
23
|
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="stack-md">
|
|
25
25
|
<div class="alert alert-info">This is an info alert — check it out!</div>
|
|
26
26
|
<div class="alert alert-success">This is a success alert — great job!</div>
|
|
27
27
|
<div class="alert alert-warning">This is a warning alert — be careful!</div>
|
|
@@ -37,7 +37,7 @@ export const AlertsWithIcons = () => html`
|
|
|
37
37
|
<p class="text-muted">Use <code>.alert-icon</code> to add visual context with icons.</p>
|
|
38
38
|
</header>
|
|
39
39
|
|
|
40
|
-
<div class="
|
|
40
|
+
<div class="stack-md">
|
|
41
41
|
<div class="alert alert-info">
|
|
42
42
|
<span class="alert-icon">
|
|
43
43
|
<pds-icon icon="info" size="md"></pds-icon>
|
|
@@ -84,7 +84,7 @@ export const AlertsWithTitles = () => html`
|
|
|
84
84
|
<p class="text-muted">Use <code>.alert-title</code> for prominent headings within alerts.</p>
|
|
85
85
|
</header>
|
|
86
86
|
|
|
87
|
-
<div class="
|
|
87
|
+
<div class="stack-md">
|
|
88
88
|
<div class="alert alert-info">
|
|
89
89
|
<span class="alert-icon">
|
|
90
90
|
<pds-icon icon="info" size="md"></pds-icon>
|
|
@@ -138,7 +138,7 @@ export const DismissibleAlerts = () => html`
|
|
|
138
138
|
</p>
|
|
139
139
|
</header>
|
|
140
140
|
|
|
141
|
-
<div class="
|
|
141
|
+
<div class="stack-md">
|
|
142
142
|
<div class="alert alert-info alert-dismissible">
|
|
143
143
|
<span class="alert-icon">
|
|
144
144
|
<pds-icon icon="info" size="md"></pds-icon>
|
|
@@ -179,7 +179,7 @@ export const SemanticMessages = () => html`
|
|
|
179
179
|
</p>
|
|
180
180
|
</header>
|
|
181
181
|
|
|
182
|
-
<div class="
|
|
182
|
+
<div class="stack-md">
|
|
183
183
|
<div class="semantic-message info">
|
|
184
184
|
<strong>Tip:</strong>
|
|
185
185
|
<p>Use semantic messages for inline feedback within forms or content areas.</p>
|
|
@@ -205,7 +205,7 @@ export const SemanticMessages = () => html`
|
|
|
205
205
|
<h3>In a Form Context</h3>
|
|
206
206
|
<form class="max-w-md stack-sm">
|
|
207
207
|
<label>
|
|
208
|
-
<span>Email Address</span>
|
|
208
|
+
<span data-label>Email Address</span>
|
|
209
209
|
<input type="email" value="invalid-email" />
|
|
210
210
|
</label>
|
|
211
211
|
<div class="semantic-message danger">
|