@pure-ds/storybook 0.7.25 → 0.7.26

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 (68) hide show
  1. package/.storybook/preview.js +5 -4
  2. package/dist/pds-reference.json +2266 -1017
  3. package/package.json +2 -2
  4. package/public/assets/js/app.js +1 -1
  5. package/public/assets/js/pds-ask.js +6 -6
  6. package/public/assets/js/pds-manager.js +104 -29
  7. package/public/assets/pds/components/pds-calendar.js +91 -159
  8. package/public/assets/pds/components/pds-daterange.js +683 -0
  9. package/public/assets/pds/components/pds-form.js +123 -21
  10. package/public/assets/pds/components/pds-rating.js +648 -0
  11. package/public/assets/pds/components/pds-tags.js +802 -0
  12. package/public/assets/pds/core/pds-ask.js +6 -6
  13. package/public/assets/pds/core/pds-manager.js +104 -29
  14. package/public/assets/pds/custom-elements.json +1099 -74
  15. package/public/assets/pds/pds-css-complete.json +7 -2
  16. package/public/assets/pds/pds-runtime-config.json +1 -1
  17. package/public/assets/pds/pds.css-data.json +4 -4
  18. package/public/assets/pds/styles/pds-components.css +96 -24
  19. package/public/assets/pds/styles/pds-components.css.js +192 -48
  20. package/public/assets/pds/styles/pds-primitives.css +6 -3
  21. package/public/assets/pds/styles/pds-primitives.css.js +12 -6
  22. package/public/assets/pds/styles/pds-styles.css +104 -29
  23. package/public/assets/pds/styles/pds-styles.css.js +208 -58
  24. package/public/assets/pds/styles/pds-utilities.css +2 -2
  25. package/public/assets/pds/styles/pds-utilities.css.js +4 -4
  26. package/public/assets/pds/vscode-custom-data.json +97 -0
  27. package/src/js/common/ask.js +122 -12
  28. package/src/js/pds-core/pds-generator.js +103 -28
  29. package/src/js/pds-core/pds-ontology.js +2 -2
  30. package/stories/components/PdsCalendar.stories.js +650 -168
  31. package/stories/components/PdsDaterange.stories.js +85 -0
  32. package/stories/components/PdsForm.Basics.stories.js +16 -0
  33. package/stories/components/PdsForm.ConditionalAndCalculated.stories.js +16 -0
  34. package/stories/components/PdsForm.CustomContent.stories.js +10 -0
  35. package/stories/components/PdsForm.Dialogs.stories.js +7 -0
  36. package/stories/components/PdsForm.Layout.stories.js +16 -0
  37. package/stories/components/PdsForm.SelectionAndArrays.stories.js +12 -0
  38. package/stories/components/PdsForm.stories.js +179 -219
  39. package/stories/components/PdsIcon.stories.js +17 -7
  40. package/stories/components/PdsOmnibox.stories.js +1 -60
  41. package/stories/components/PdsRating.stories.js +126 -0
  42. package/stories/components/PdsTags.stories.js +224 -0
  43. package/stories/components/PdsToaster.stories.js +1 -1
  44. package/stories/components/omnibox-countries-api-settings.js +63 -0
  45. package/stories/foundations/Colors.stories.js +6 -1
  46. package/stories/foundations/HTMLDefaults.stories.js +6 -6
  47. package/stories/foundations/Icons.stories.js +4 -4
  48. package/stories/foundations/MeshGradients.stories.js +13 -3
  49. package/stories/foundations/SmartSurfaces.stories.js +43 -31
  50. package/stories/foundations/Typography.stories.js +30 -108
  51. package/stories/foundations/ZIndex.stories.js +3 -3
  52. package/stories/layout/LayoutOverview.stories.js +3 -3
  53. package/stories/layout/LayoutSystem.stories.js +24 -18
  54. package/stories/patterns/BorderEffects.stories.js +28 -16
  55. package/stories/patterns/InteractiveStates.stories.js +39 -24
  56. package/stories/patterns/Utilities.stories.js +45 -23
  57. package/stories/primitives/ArticleLayout.stories.js +176 -0
  58. package/stories/primitives/Badges.stories.js +24 -8
  59. package/stories/primitives/Buttons.stories.js +29 -9
  60. package/stories/primitives/Callouts.stories.js +8 -7
  61. package/stories/primitives/Cards.stories.js +4 -1
  62. package/stories/primitives/FormElements.stories.js +8 -2
  63. package/stories/primitives/HtmlFormElements.stories.js +8 -2
  64. package/stories/primitives/HtmlFormGroups.stories.js +5 -2
  65. package/stories/primitives/Media.stories.js +44 -30
  66. package/stories/primitives/Tables.stories.js +25 -7
  67. package/stories/utils/PdsAsk.stories.js +17 -5
  68. package/stories/utils/PdsObjectApi.stories.js +16 -4
@@ -31,7 +31,12 @@ export default {
31
31
  export const HeadingScale = {
32
32
  name: "Heading Scale",
33
33
  render: () => html`
34
-
34
+ <header>
35
+ <h3>Heading Scale</h3>
36
+ <small class="text-muted">
37
+ Compare semantic heading levels and their default tokenized sizes.
38
+ </small>
39
+ </header>
35
40
  <div class="stack-sm story-heading-container">
36
41
  <h1>Heading Level 1</h1>
37
42
  <p class="text-muted story-heading-description">
@@ -69,7 +74,12 @@ export const HeadingScale = {
69
74
  export const TextStyles = {
70
75
  name: "Text Styles & Weights",
71
76
  render: () => html`
72
-
77
+ <header>
78
+ <h3>Text Styles & Weights</h3>
79
+ <small class="text-muted">
80
+ Review font-weight and inline text semantics for UI copy.
81
+ </small>
82
+ </header>
73
83
  <div class="stack-sm">
74
84
  <h2>Font Weights</h2>
75
85
  <div class="stack-sm story-weights-section">
@@ -102,7 +112,12 @@ export const TextStyles = {
102
112
  export const LineHeights = {
103
113
  name: "Line Heights & Readability",
104
114
  render: () => html`
105
-
115
+ <header>
116
+ <h3>Line Heights & Readability</h3>
117
+ <small class="text-muted">
118
+ See how leading affects scanning and long-form readability.
119
+ </small>
120
+ </header>
106
121
  <div class="stack-lg story-line-height-container">
107
122
  <h2>Tight Line Height (1.25)</h2>
108
123
  <p class="story-leading-tight story-line-height-example">
@@ -143,113 +158,15 @@ export const LineHeights = {
143
158
  `,
144
159
  };
145
160
 
146
- export const ArticleLayout = {
147
- name: "Article Layout",
148
- render: () => html`
149
- <article>
150
- <header>
151
- <div class="text-muted story-article-meta">Design Systems</div>
152
- <h1>Building Scalable Design Systems for Modern Web Applications</h1>
153
- <small class="text-muted"
154
- >By Sarah Chen • November 17, 2025 • 8 min read</small
155
- >
156
- </header>
157
-
158
- <p>
159
- <strong>
160
- A design system is more than a component library—it's a shared language
161
- that bridges design and development, ensuring consistency and quality
162
- across your entire product ecosystem.
163
- </strong>
164
- </p>
165
-
166
- <p>
167
- In today's fast-paced development environment, maintaining visual and
168
- functional consistency across multiple products and teams is
169
- increasingly challenging. Design systems have emerged as the solution,
170
- providing a single source of truth for design decisions, component
171
- patterns, and implementation guidelines.
172
- </p>
173
-
174
- <section>
175
- <h2>Key Components of a Design System</h2>
176
-
177
- <p>
178
- A comprehensive design system consists of several interconnected
179
- layers, each serving a specific purpose in the overall architecture:
180
- </p>
181
-
182
- <ul>
183
- <li>
184
- <strong>Design Tokens:</strong> The foundational layer defining
185
- colors, typography, spacing, and other atomic values
186
- </li>
187
- <li>
188
- <strong>Component Library:</strong> Reusable UI components built
189
- with consistent patterns
190
- </li>
191
- <li>
192
- <strong>Documentation:</strong> Clear guidelines on when and how to
193
- use each component
194
- </li>
195
- <li>
196
- <strong>Tools & Resources:</strong> Figma libraries, code templates,
197
- and development tools
198
- </li>
199
- </ul>
200
-
201
- <blockquote>
202
- <p>
203
- A design system isn't a project. It's a product serving products.
204
- </p>
205
- <cite>Nathan Curtis, Design Systems Expert</cite>
206
- </blockquote>
207
- </section>
208
-
209
- <h3>Getting Started with Design Tokens</h3>
210
-
211
- <p>
212
- Design tokens are the DNA of your design system. These named values
213
- represent design decisions that can be shared across platforms and
214
- technologies. For example, instead of hardcoding
215
- <code>#0066cc</code>, you define <code>--color-primary</code> which can
216
- be updated globally.
217
- </p>
218
-
219
- <section>
220
- <h4 class="story-impl-heading">Implementation Example</h4>
221
- <pre
222
- class="surface-base story-code-block"
223
- ><code>/* Design tokens in CSS */
224
- :root {
225
- --color-primary: #0066cc;
226
- --spacing-unit: 4px;
227
- --font-family-base: system-ui, sans-serif;
228
- --border-radius-md: 8px;
229
- }</code></pre>
230
-
231
- <p>
232
- By adopting this approach, you create a flexible foundation that can
233
- evolve with your product needs while maintaining consistency across
234
- all touchpoints.
235
- </p>
236
- </section>
237
-
238
- <footer>
239
- <div class="flex gap-md flex-wrap">
240
- <span class="badge badge-outline badge-primary">Design Systems</span>
241
- <span class="badge badge-outline badge-primary">Web Components</span>
242
- <span class="badge badge-outline badge-primary">CSS Architecture</span>
243
- </div>
244
- </footer>
245
- </article>
246
- `,
247
- };
248
-
249
161
  export const UIComponents = {
250
162
  name: "UI Component Text",
251
163
  render: () => html`
252
-
164
+ <header>
165
+ <h3>UI Component Text</h3>
166
+ <small class="text-muted">
167
+ Typical microcopy patterns for forms, labels, and status messaging.
168
+ </small>
169
+ </header>
253
170
  <div class="stack-sm">
254
171
  <h2>Form Labels & Help Text</h2>
255
172
  <div class="story-form-wrapper">
@@ -325,7 +242,12 @@ export const UIComponents = {
325
242
  export const DataDisplay = {
326
243
  name: "Data Display & Lists",
327
244
  render: () => html`
328
-
245
+ <header>
246
+ <h3>Data Display & Lists</h3>
247
+ <small class="text-muted">
248
+ Text hierarchy patterns for lists, metrics, and timeline content.
249
+ </small>
250
+ </header>
329
251
  <div class="stack-lg">
330
252
  <h2>User List with Metadata</h2>
331
253
  <div class="card">
@@ -85,7 +85,7 @@ export const ZIndexScale = {
85
85
  ${zIndexStoryStyles}
86
86
  <section class="stack-lg max-w-5xl">
87
87
  <header>
88
- <h2>Z-Index Token Scale</h2>
88
+ <h3>Z-Index Token Scale</h3>
89
89
  <small class="text-muted">
90
90
  Tokens are organized from lowest to highest z-index values, ensuring proper stacking of UI layers.
91
91
  </small>
@@ -161,7 +161,7 @@ export const VisualDemo = {
161
161
  ${zIndexStoryStyles}
162
162
  <section class="stack-lg max-w-5xl">
163
163
  <header>
164
- <h2>Interactive Stacking Example</h2>
164
+ <h3>Interactive Stacking Example</h3>
165
165
  <small class="text-muted">
166
166
  This demo shows how different z-index tokens create proper layering.
167
167
  Lower elements appear behind higher ones.
@@ -227,7 +227,7 @@ export const UsageExamples = {
227
227
  ${zIndexStoryStyles}
228
228
  <section class="stack-lg max-w-5xl">
229
229
  <header>
230
- <h2>Code Examples</h2>
230
+ <h3>Code Examples</h3>
231
231
  <small class="text-muted">
232
232
  How to use z-index tokens in your components and styles.
233
233
  </small>
@@ -100,10 +100,10 @@ export const LayoutIntroduction = () => {
100
100
  </style>
101
101
  ${layoutOverviewStyles.strings[0]}
102
102
  <header>
103
- <h1>Layout in PDS</h1>
104
- <h4 class="text-muted">
103
+ <h3>Layout in PDS</h3>
104
+ <small class="text-muted">
105
105
  Power through composition of high-level concepts, not atomic control.
106
- </h4>
106
+ </small>
107
107
  </header>
108
108
 
109
109
  <article class="card surface-translucent-75">
@@ -38,6 +38,10 @@ export default {
38
38
 
39
39
  export const Container = () => html`
40
40
  ${layoutSystemStyles}
41
+ <header class="card">
42
+ <h3>Container</h3>
43
+ <small class="text-muted">Center content with consistent horizontal padding and max-width constraints.</small>
44
+ </header>
41
45
  <div class="card surface-subtle story-demo-area-sm">
42
46
  <p class="text-muted text-center">
43
47
  Gray background shows viewport width. Container centers content with
@@ -85,7 +89,7 @@ Container.storyName = "Container";
85
89
  export const GridFixed = () => html`
86
90
  ${layoutSystemStyles}
87
91
  <header>
88
- <h2>Fixed Column Grids</h2>
92
+ <h3>Fixed Column Grids</h3>
89
93
  <small class="text-muted">Explicit column counts for predictable layouts.</small>
90
94
  </header>
91
95
 
@@ -142,7 +146,7 @@ GridFixed.storyName = "Grid: Fixed Columns";
142
146
  export const GridAuto = () => html`
143
147
  ${layoutSystemStyles}
144
148
  <header class="card">
145
- <h2>Auto-Fit Responsive Grids</h2>
149
+ <h3>Auto-Fit Responsive Grids</h3>
146
150
  <small class="text-muted">
147
151
  Automatically adjust columns based on available space. Resize the browser
148
152
  to see the effect.
@@ -206,7 +210,7 @@ GridAuto.storyName = "Grid: Auto-Fit";
206
210
  export const FlexBasics = () => html`
207
211
  ${layoutSystemStyles}
208
212
  <header class="card">
209
- <h2>Flexbox Utilities</h2>
213
+ <h3>Flexbox Utilities</h3>
210
214
  <small class="text-muted">
211
215
  Compose layouts with <code>.flex</code> + modifiers.
212
216
  </small>
@@ -257,7 +261,7 @@ FlexBasics.storyName = "Flex: Basics";
257
261
  export const FlexAlignment = () => html`
258
262
  ${layoutSystemStyles}
259
263
  <header class="card">
260
- <h2>Alignment Utilities</h2>
264
+ <h3>Alignment Utilities</h3>
261
265
  <small class="text-muted">
262
266
  Cross-axis: <code>.items-*</code> | Main-axis: <code>.justify-*</code>
263
267
  </small>
@@ -318,7 +322,7 @@ FlexAlignment.storyName = "Flex: Alignment";
318
322
  export const Stack = () => html`
319
323
  ${layoutSystemStyles}
320
324
  <header>
321
- <h2>Stack Utilities</h2>
325
+ <h3>Stack Utilities</h3>
322
326
  <small class="text-muted">
323
327
  Vertical layouts with consistent spacing.
324
328
  <code>.stack-*</code> = <code>.flex .flex-col .gap-*</code> in one class.
@@ -374,7 +378,7 @@ Stack.storyName = "Stack";
374
378
  export const Gap = () => html`
375
379
  ${layoutSystemStyles}
376
380
  <header>
377
- <h2>Gap Utilities</h2>
381
+ <h3>Gap Utilities</h3>
378
382
  <small class="text-muted">Control spacing between flex/grid children.</small>
379
383
  </header>
380
384
 
@@ -415,7 +419,7 @@ Gap.storyName = "Gap";
415
419
  export const MaxWidth = () => html`
416
420
  ${layoutSystemStyles}
417
421
  <header class="card stack-sm">
418
- <h2>Max-Width Utilities</h2>
422
+ <h3>Max-Width Utilities</h3>
419
423
  <small class="text-muted">
420
424
  Each utility maps to a <code>--layout-max-width-*</code> token that is paired with the
421
425
  matching breakpoint token (for example <code>--breakpoint-sm</code>). Updating
@@ -487,7 +491,7 @@ MaxWidth.storyName = "Max-Width";
487
491
  export const Section = () => html`
488
492
  ${layoutSystemStyles}
489
493
  <header>
490
- <h2>Section Spacing</h2>
494
+ <h3>Section Spacing</h3>
491
495
  <small class="text-muted">Vertical padding for major content blocks.</small>
492
496
  </header>
493
497
 
@@ -514,9 +518,10 @@ Section.storyName = "Section";
514
518
 
515
519
  export const Responsive = () => html`
516
520
  ${layoutSystemStyles}
517
- <div class="card">
518
- <h2>Responsive Utilities</h2>
519
- </div>
521
+ <header class="card">
522
+ <h3>Responsive Utilities</h3>
523
+ <small class="text-muted">Responsive helpers that adapt layout behavior across breakpoints.</small>
524
+ </header>
520
525
 
521
526
  <div class="card">
522
527
  <h3>.mobile-stack</h3>
@@ -560,9 +565,10 @@ Responsive.storyName = "Responsive";
560
565
 
561
566
  export const TextUtilities = () => html`
562
567
  ${layoutSystemStyles}
563
- <div class="card">
564
- <h2>Text Utilities</h2>
565
- </div>
568
+ <header class="card">
569
+ <h3>Text Utilities</h3>
570
+ <small class="text-muted">Helpers for alignment and overflow handling in content layouts.</small>
571
+ </header>
566
572
 
567
573
  <div class="card">
568
574
  <h3>Text Alignment</h3>
@@ -603,10 +609,10 @@ TextUtilities.storyName = "Text";
603
609
 
604
610
  export const Reference = () => html`
605
611
  ${layoutSystemStyles}
606
- <div class="card">
607
- <h2>Complete Layout Reference</h2>
608
- <p class="text-muted">All layout utilities in PDS.</p>
609
- </div>
612
+ <header class="card">
613
+ <h3>Complete Layout Reference</h3>
614
+ <small class="text-muted">All layout utilities in PDS.</small>
615
+ </header>
610
616
 
611
617
  <table class="table-bordered table-compact">
612
618
  <thead>
@@ -16,27 +16,39 @@ export default {
16
16
  };
17
17
 
18
18
  export const BorderGradient = () => html`
19
- <div class="grid grid-auto-sm gap-md">
20
- <div class="card border-gradient">
21
- <h3>Gradient Border</h3>
22
- <p>Animated gradient border effect that follows the primary color scheme.</p>
23
- </div>
24
- <div class="card border-gradient" style="--gradient-angle: 45deg;">
25
- <h3>Custom Angle</h3>
26
- <p>Use CSS variables to customize the gradient direction.</p>
19
+ <div class="stack-md">
20
+ <header>
21
+ <h3>Border Gradient</h3>
22
+ <small class="text-muted">Animated gradient border treatments for emphasis and visual hierarchy.</small>
23
+ </header>
24
+ <div class="grid grid-auto-sm gap-md">
25
+ <div class="card border-gradient">
26
+ <h4>Gradient Border</h4>
27
+ <p>Animated gradient border effect that follows the primary color scheme.</p>
28
+ </div>
29
+ <div class="card border-gradient" style="--gradient-angle: 45deg;">
30
+ <h4>Custom Angle</h4>
31
+ <p>Use CSS variables to customize the gradient direction.</p>
32
+ </div>
27
33
  </div>
28
34
  </div>
29
35
  `;
30
36
 
31
37
  export const BorderGlow = () => html`
32
- <div class="grid grid-auto-sm gap-md">
33
- <div class="card border-glow">
34
- <h3>Glowing Border</h3>
35
- <p>Subtle glow effect.</p>
36
- </div>
37
- <div class="card border-glow border-gradient">
38
- <h3>Glow + Gradient</h3>
39
- <p>Combined glow and gradient border effects.</p>
38
+ <div class="stack-md">
39
+ <header>
40
+ <h3>Border Glow</h3>
41
+ <small class="text-muted">Soft glow borders that add depth to highlighted surfaces.</small>
42
+ </header>
43
+ <div class="grid grid-auto-sm gap-md">
44
+ <div class="card border-glow">
45
+ <h4>Glowing Border</h4>
46
+ <p>Subtle glow effect.</p>
47
+ </div>
48
+ <div class="card border-glow border-gradient">
49
+ <h4>Glow + Gradient</h4>
50
+ <p>Combined glow and gradient border effects.</p>
51
+ </div>
40
52
  </div>
41
53
  </div>
42
54
  `;
@@ -84,11 +84,13 @@ export default {
84
84
 
85
85
  export const FocusStates = () => html`
86
86
  <div class="card">
87
- <h2>Focus States</h2>
88
- <p>
87
+ <header>
88
+ <h3>Focus States</h3>
89
+ <small class="text-muted">
89
90
  Press <kbd>Tab</kbd> to navigate and see focus rings on interactive
90
91
  elements
91
- </p>
92
+ </small>
93
+ </header>
92
94
 
93
95
  <div class="flex flex-wrap gap-sm align-center">
94
96
  <button class="btn-primary">Button 1</button>
@@ -148,8 +150,10 @@ FocusStates.storyName = "Focus States";
148
150
 
149
151
  export const HoverStates = () => html`
150
152
  <div class="card">
151
- <h2>Hover States</h2>
152
- <p>Hover over elements to see smooth transitions and state changes</p>
153
+ <header>
154
+ <h3>Hover States</h3>
155
+ <small class="text-muted">Hover over elements to see smooth transitions and state changes.</small>
156
+ </header>
153
157
 
154
158
  <h3>Buttons</h3>
155
159
  <div class="flex flex-wrap gap-sm">
@@ -210,8 +214,10 @@ HoverStates.storyName = "Hover States";
210
214
 
211
215
  export const ActiveStates = () => html`
212
216
  <div class="card">
213
- <h2>Active States</h2>
214
- <p>Click and hold to see active/pressed states</p>
217
+ <header>
218
+ <h3>Active States</h3>
219
+ <small class="text-muted">Click and hold to see active or pressed states.</small>
220
+ </header>
215
221
 
216
222
  <h3>Buttons</h3>
217
223
  <div class="flex flex-wrap gap-sm">
@@ -260,11 +266,13 @@ export const TransitionSpeeds = () => {
260
266
 
261
267
  return html`
262
268
  <div class="card">
263
- <h2>Transition Speeds</h2>
264
- <p>
269
+ <header>
270
+ <h3>Transition Speeds</h3>
271
+ <small class="text-muted">
265
272
  The design system provides three transition speed tokens that can be
266
273
  configured globally.
267
- </p>
274
+ </small>
275
+ </header>
268
276
 
269
277
  <div class="grid gap-lg">
270
278
  ${["fast", "normal", "slow"].map(
@@ -325,12 +333,12 @@ export const WorkingStates = () => {
325
333
  };
326
334
 
327
335
  return html`
328
- <h2>Working/Loading States</h2>
329
- <p>
330
- Click buttons to see the <code>.btn-working</code> state with automatic
331
- spinner animation. The PDS enhancer automatically swaps existing icons to
332
- spinners or adds a spinner if none exists.
333
- </p>
336
+ <header>
337
+ <h3>Working/Loading States</h3>
338
+ <small class="text-muted">
339
+ Click buttons to see the <code>.btn-working</code> state with automatic spinner animation.
340
+ </small>
341
+ </header>
334
342
 
335
343
  <div class="stack-lg">
336
344
  <header>
@@ -483,11 +491,13 @@ WorkingStates.storyName = "Working States";
483
491
  export const SkeletonLoading = () => html`
484
492
  ${interactiveSkeletonStoryStyles}
485
493
  <div class="card">
486
- <h2>Skeleton Loading</h2>
487
- <p>
494
+ <header>
495
+ <h3>Skeleton Loading</h3>
496
+ <small class="text-muted">
488
497
  Use the <code>.skeleton</code> class for content placeholders while
489
498
  loading
490
- </p>
499
+ </small>
500
+ </header>
491
501
 
492
502
  <h3>Card Skeleton</h3>
493
503
 
@@ -538,7 +548,10 @@ SkeletonLoading.storyName = "Skeleton Loading";
538
548
 
539
549
  export const EmptyState = () => html`
540
550
  <div class="card">
541
- <h2>Empty State</h2>
551
+ <header>
552
+ <h3>Empty State</h3>
553
+ <small class="text-muted">Empty-state pattern for onboarding and first-use workflows.</small>
554
+ </header>
542
555
  <section class="empty-state">
543
556
  <header>
544
557
  <h2>Feature X isn’t set up yet</h2>
@@ -565,8 +578,10 @@ EmptyState.storyName = "Empty State";
565
578
 
566
579
  export const DisabledStates = () => html`
567
580
  <div class="card">
568
- <h2>Disabled States</h2>
569
- <p>Disabled elements have reduced opacity and no pointer events</p>
581
+ <header>
582
+ <h3>Disabled States</h3>
583
+ <small class="text-muted">Disabled elements have reduced opacity and no pointer events.</small>
584
+ </header>
570
585
 
571
586
  <h3>Buttons</h3>
572
587
  <div class="flex flex-wrap gap-sm">
@@ -644,8 +659,8 @@ DisabledStates.storyName = "Disabled States";
644
659
 
645
660
  export const CombinedStates = () => html`
646
661
  <header>
647
- <h2>Combined State Examples</h2>
648
- <small
662
+ <h3>Combined State Examples</h3>
663
+ <small class="text-muted"
649
664
  >Comprehensive examples showing all interactive states together</small
650
665
  >
651
666
  </header>
@@ -28,6 +28,10 @@ export default {
28
28
 
29
29
  export const SpacingUtilities = () => html`
30
30
  <div class="stack-md">
31
+ <header>
32
+ <h3>Spacing Utilities</h3>
33
+ <small class="text-muted">Gap utilities for consistent spacing between flex and grid items.</small>
34
+ </header>
31
35
  <div class="gap-xs flex">
32
36
  <div class="badge">Gap 1</div>
33
37
  <div class="badge">Between</div>
@@ -47,39 +51,57 @@ export const SpacingUtilities = () => html`
47
51
  `;
48
52
 
49
53
  export const FlexUtilities = () => html`
50
- <div class="card flex items-center gap-md">
51
- <pds-icon icon="star" size="lg"></pds-icon>
52
- <header class="grow">
53
- <h4>Flex Item</h4>
54
- <small class="text-muted">Vertically centered with gap</small>
54
+ <div class="card">
55
+ <header>
56
+ <h3>Flex Utilities</h3>
57
+ <small class="text-muted">Align and distribute content with composable flex helpers.</small>
55
58
  </header>
56
- <button class="btn-primary">Action</button>
59
+ <div class="flex items-center gap-md">
60
+ <pds-icon icon="star" size="lg"></pds-icon>
61
+ <header class="grow">
62
+ <h4>Flex Item</h4>
63
+ <small class="text-muted">Vertically centered with gap</small>
64
+ </header>
65
+ <button class="btn-primary">Action</button>
66
+ </div>
57
67
  </div>
58
68
  `;
59
69
 
60
70
  export const BorderUtilities = () => html`
61
- <div class="grid grid-auto-sm gap-md">
62
- <div class="card">
63
- <h4>Default Border</h4>
64
- <p>No border specified</p>
65
- </div>
66
- <div class="card border-gradient">
67
- <h4>Gradient Border</h4>
68
- <p>Using .border-gradient</p>
69
- </div>
70
- <div class="card border-glow">
71
- <h4>Glowing Border</h4>
72
- <p>Using .border-glow</p>
71
+ <div class="stack-md">
72
+ <header>
73
+ <h3>Border Utilities</h3>
74
+ <small class="text-muted">Apply border effects for emphasis, depth, and visual accents.</small>
75
+ </header>
76
+ <div class="grid grid-auto-sm gap-md">
77
+ <div class="card">
78
+ <h4>Default Border</h4>
79
+ <p>No border specified</p>
80
+ </div>
81
+ <div class="card border-gradient">
82
+ <h4>Gradient Border</h4>
83
+ <p>Using .border-gradient</p>
84
+ </div>
85
+ <div class="card border-glow">
86
+ <h4>Glowing Border</h4>
87
+ <p>Using .border-glow</p>
88
+ </div>
73
89
  </div>
74
90
  </div>
75
91
  `;
76
92
 
77
93
  export const RoundedUtilities = () => html`
78
94
  ${utilitiesStoryStyles}
79
- <div class="flex gap-md flex-wrap">
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>
95
+ <div class="stack-md">
96
+ <header>
97
+ <h3>Rounded Utilities</h3>
98
+ <small class="text-muted">Border-radius utilities mapped to PDS radius tokens.</small>
99
+ </header>
100
+ <div class="flex gap-md flex-wrap">
101
+ <div class="card surface-inverse story-radius-sm">--radius-sm</div>
102
+ <div class="card surface-inverse story-radius-md">--radius-md</div>
103
+ <div class="card surface-inverse story-radius-lg">--radius-lg</div>
104
+ <div class="card surface-inverse story-radius-full">--radius-full</div>
105
+ </div>
84
106
  </div>
85
107
  `;