@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,359 @@
1
+ import { html } from 'lit';
2
+
3
+ export default {
4
+ title: 'Primitives/Accordion',
5
+ tags: ['grouping'],
6
+ parameters: {
7
+ pds: {
8
+ tags: ['grouping', 'navigation']
9
+ },
10
+ docs: {
11
+ description: {
12
+ component: 'Accessible accordion using native HTML details/summary elements with proper ARIA attributes and progressive enhancement.'
13
+ }
14
+ }
15
+ }
16
+ };
17
+
18
+ const accordionStoryStyles = html`
19
+ <style>
20
+ .accordion-container {
21
+ padding: var(--spacing-4);
22
+ max-width: 43.75rem;
23
+ }
24
+ .accordion-container--wide {
25
+ max-width: 50rem;
26
+ }
27
+ .accordion-nested {
28
+ margin-top: var(--spacing-3);
29
+ }
30
+ .accordion-button-spacing-sm {
31
+ margin-top: var(--spacing-2);
32
+ }
33
+ .accordion-button-spacing {
34
+ margin-top: var(--spacing-3);
35
+ }
36
+ .accordion-badge-row {
37
+ display: flex;
38
+ gap: var(--spacing-2);
39
+ margin-top: var(--spacing-3);
40
+ }
41
+ .accordion-text-margin {
42
+ margin-top: var(--spacing-3);
43
+ }
44
+ .accordion-surface-card {
45
+ padding: var(--spacing-4);
46
+ border-radius: var(--radius-md);
47
+ text-align: center;
48
+ }
49
+ .accordion-code-sample {
50
+ background: var(--color-surface-subtle);
51
+ padding: var(--spacing-3);
52
+ border-radius: var(--radius-sm);
53
+ margin-top: var(--spacing-3);
54
+ overflow-x: auto;
55
+ }
56
+ .accordion-helper-text {
57
+ margin-bottom: var(--spacing-4);
58
+ opacity: 0.8;
59
+ }
60
+ .accordion-label-spacing {
61
+ margin-top: var(--spacing-3);
62
+ }
63
+ </style>
64
+ `;
65
+
66
+ export const BasicAccordion = () => html`
67
+ ${accordionStoryStyles}
68
+ <div class="accordion-container">
69
+ <section class="accordion" aria-label="FAQ">
70
+ <details>
71
+ <summary id="q1">How does billing work?</summary>
72
+ <div role="region" aria-labelledby="q1">
73
+ <p>We charge monthly on the 1st of each month. You can cancel anytime before your next billing date.</p>
74
+ </div>
75
+ </details>
76
+
77
+ <details>
78
+ <summary id="q2">What is your refund policy?</summary>
79
+ <div role="region" aria-labelledby="q2">
80
+ <p>You can request a refund within 14 days of purchase. We'll process it within 5-7 business days.</p>
81
+ </div>
82
+ </details>
83
+
84
+ <details>
85
+ <summary id="q3">How do I download invoices?</summary>
86
+ <div role="region" aria-labelledby="q3">
87
+ <p>Download invoices from Settings → Billing → Invoice History. You can export them as PDF.</p>
88
+ </div>
89
+ </details>
90
+ </section>
91
+ </div>
92
+ `;
93
+
94
+ BasicAccordion.storyName = 'Basic Accordion';
95
+
96
+ export const AccordionWithRichContent = () => html`
97
+ ${accordionStoryStyles}
98
+ <div class="accordion-container accordion-container--wide">
99
+ <h2>Feature Documentation</h2>
100
+ <section class="accordion" aria-label="Features">
101
+ <details open>
102
+ <summary id="feature1">Getting Started</summary>
103
+ <div class="card" role="region" aria-labelledby="feature1">
104
+ <h4>Welcome to Pure Design System</h4>
105
+ <p>Pure Design System is a generative design system that creates complete design tokens from just a few base colors.</p>
106
+ <ul>
107
+ <li>Generate 9-step color scales automatically</li>
108
+ <li>Smart surface system with auto-contrast</li>
109
+ <li>Responsive grid utilities</li>
110
+ <li>Mesh gradient backgrounds</li>
111
+ </ul>
112
+ <button class="btn-primary btn-sm accordion-button-spacing-sm">
113
+ <pds-icon icon="download" size="sm"></pds-icon>
114
+ Download
115
+ </button>
116
+ </div>
117
+ </details>
118
+
119
+ <details>
120
+ <summary id="feature2">Color System</summary>
121
+ <div role="region" aria-labelledby="feature2">
122
+ <p>The color system automatically generates semantic colors and full scales from your base palette.</p>
123
+ <div class="accordion-badge-row">
124
+ <span class="badge badge-primary">Primary</span>
125
+ <span class="badge badge-success">Success</span>
126
+ <span class="badge badge-warning">Warning</span>
127
+ <span class="badge badge-danger">Danger</span>
128
+ </div>
129
+ <p class="accordion-text-margin">
130
+ Each color includes a 9-step scale from 50 (lightest) to 800 (darkest).
131
+ </p>
132
+ </div>
133
+ </details>
134
+
135
+ <details>
136
+ <summary id="feature3">Smart Surfaces</summary>
137
+ <div role="region" aria-labelledby="feature3">
138
+ <h4>Automatic Contrast Management</h4>
139
+ <p>Surfaces automatically adjust text, icons, and shadow colors to maintain WCAG AA contrast ratios.</p>
140
+ <div class="accordion-nested grid grid-cols-2 gap-sm">
141
+ <div class="surface-elevated accordion-surface-card">
142
+ <pds-icon icon="sun" size="lg"></pds-icon>
143
+ <p class="accordion-text-margin">Elevated Surface</p>
144
+ </div>
145
+ <div class="surface-overlay accordion-surface-card">
146
+ <pds-icon icon="moon" size="lg"></pds-icon>
147
+ <p class="accordion-text-margin">Overlay Surface</p>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </details>
152
+
153
+ <details>
154
+ <summary id="feature4">Grid System</summary>
155
+ <div role="region" aria-labelledby="feature4">
156
+ <p>Modern CSS Grid-based layout system with fixed and auto-fit responsive options.</p>
157
+ <pre class="accordion-code-sample"><code>/* Fixed columns */
158
+ .grid-cols-3 { ... }
159
+
160
+ /* Auto-fit responsive */
161
+ .grid-auto-sm { ... }
162
+ .grid-auto-md { ... }</code></pre>
163
+ </div>
164
+ </details>
165
+ </section>
166
+ </div>
167
+ `;
168
+
169
+ AccordionWithRichContent.storyName = 'Accordion with Rich Content';
170
+
171
+ export const NestedAccordion = () => html`
172
+ ${accordionStoryStyles}
173
+ <div class="accordion-container">
174
+ <h2>Nested Accordion Example</h2>
175
+ <section class="accordion" aria-label="Product Categories">
176
+ <details>
177
+ <summary id="cat1">Electronics</summary>
178
+ <div role="region" aria-labelledby="cat1">
179
+ <p>Browse our electronics collection:</p>
180
+
181
+ <section class="accordion accordion-nested" aria-label="Electronics Subcategories">
182
+ <details>
183
+ <summary id="cat1-1">Computers</summary>
184
+ <div role="region" aria-labelledby="cat1-1">
185
+ <ul>
186
+ <li>Laptops</li>
187
+ <li>Desktops</li>
188
+ <li>Tablets</li>
189
+ </ul>
190
+ </div>
191
+ </details>
192
+
193
+ <details>
194
+ <summary id="cat1-2">Phones</summary>
195
+ <div role="region" aria-labelledby="cat1-2">
196
+ <ul>
197
+ <li>Smartphones</li>
198
+ <li>Feature Phones</li>
199
+ <li>Accessories</li>
200
+ </ul>
201
+ </div>
202
+ </details>
203
+ </section>
204
+ </div>
205
+ </details>
206
+
207
+ <details>
208
+ <summary id="cat2">Clothing</summary>
209
+ <div role="region" aria-labelledby="cat2">
210
+ <p>Shop our clothing lines:</p>
211
+
212
+ <section class="accordion accordion-nested" aria-label="Clothing Subcategories">
213
+ <details>
214
+ <summary id="cat2-1">Men's</summary>
215
+ <div role="region" aria-labelledby="cat2-1">
216
+ <ul>
217
+ <li>Shirts</li>
218
+ <li>Pants</li>
219
+ <li>Shoes</li>
220
+ </ul>
221
+ </div>
222
+ </details>
223
+
224
+ <details>
225
+ <summary id="cat2-2">Women's</summary>
226
+ <div role="region" aria-labelledby="cat2-2">
227
+ <ul>
228
+ <li>Dresses</li>
229
+ <li>Tops</li>
230
+ <li>Accessories</li>
231
+ </ul>
232
+ </div>
233
+ </details>
234
+ </section>
235
+ </div>
236
+ </details>
237
+
238
+ <details>
239
+ <summary id="cat3">Home & Garden</summary>
240
+ <div role="region" aria-labelledby="cat3">
241
+ <p>Everything for your home:</p>
242
+ <ul>
243
+ <li>Furniture</li>
244
+ <li>Decor</li>
245
+ <li>Kitchen</li>
246
+ <li>Garden Tools</li>
247
+ </ul>
248
+ </div>
249
+ </details>
250
+ </section>
251
+ </div>
252
+ `;
253
+
254
+ NestedAccordion.storyName = 'Nested Accordion';
255
+
256
+ export const SingleExpandAccordion = () => html`
257
+ ${accordionStoryStyles}
258
+ <div class="accordion-container">
259
+ <h2>Settings</h2>
260
+ <p class="accordion-helper-text">
261
+ <em>Note: This example shows standard behavior. For single-expand (only one open at a time), add JavaScript.</em>
262
+ </p>
263
+
264
+ <section class="accordion" aria-label="Settings">
265
+ <details>
266
+ <summary id="set1">
267
+ <pds-icon icon="user" size="sm"></pds-icon>
268
+ <span>Profile Settings</span>
269
+ </summary>
270
+ <div class="card" role="region" aria-labelledby="set1">
271
+ <form method="post" action="#">
272
+ <label>
273
+ <span>Display Name</span>
274
+ <input type="text" value="John Doe" placeholder="Enter your display name" />
275
+ </label>
276
+ <label class="accordion-label-spacing">
277
+ <span>Email</span>
278
+ <div class="input-icon">
279
+ <pds-icon icon="envelope"></pds-icon>
280
+ <input type="email" value="john@example.com" placeholder="your.email@example.com" />
281
+ </div>
282
+ </label>
283
+ <button type="submit" class="btn-primary btn-sm accordion-button-spacing">
284
+ Save Changes
285
+ </button>
286
+ </form>
287
+ </div>
288
+ </details>
289
+
290
+ <details>
291
+ <summary id="set2">
292
+ <pds-icon icon="bell" size="sm"></pds-icon>
293
+ <span>Notifications</span>
294
+ </summary>
295
+ <div role="region" aria-labelledby="set2">
296
+ <label data-toggle>
297
+ <input type="checkbox" checked />
298
+ <span>Email notifications</span>
299
+ </label>
300
+ <label data-toggle>
301
+ <input type="checkbox" checked />
302
+ <span>Push notifications</span>
303
+ </label>
304
+ <label data-toggle>
305
+ <input type="checkbox" />
306
+ <span>SMS notifications</span>
307
+ </label>
308
+ </div>
309
+ </details>
310
+
311
+ <details>
312
+ <summary id="set3">
313
+ <pds-icon icon="lock" size="sm"></pds-icon>
314
+ <span>Privacy & Security</span>
315
+ </summary>
316
+ <div role="region" aria-labelledby="set3">
317
+ <p>Manage your privacy and security settings.</p>
318
+ <label data-toggle class="accordion-label-spacing">
319
+ <input type="checkbox" checked />
320
+ <span>Two-factor authentication</span>
321
+ </label>
322
+ <label data-toggle>
323
+ <input type="checkbox" />
324
+ <span>Login alerts</span>
325
+ </label>
326
+ <button class="btn-secondary btn-sm accordion-button-spacing">
327
+ Change Password
328
+ </button>
329
+ </div>
330
+ </details>
331
+
332
+ <details>
333
+ <summary id="set4">
334
+ <pds-icon icon="palette" size="sm"></pds-icon>
335
+ <span>Appearance</span>
336
+ </summary>
337
+ <div role="region" aria-labelledby="set4">
338
+ <fieldset role="radiogroup">
339
+ <legend>Theme</legend>
340
+ <label>
341
+ <input type="radio" name="theme" value="light" />
342
+ <span>Light</span>
343
+ </label>
344
+ <label>
345
+ <input type="radio" name="theme" value="dark" checked />
346
+ <span>Dark</span>
347
+ </label>
348
+ <label>
349
+ <input type="radio" name="theme" value="auto" />
350
+ <span>Auto</span>
351
+ </label>
352
+ </fieldset>
353
+ </div>
354
+ </details>
355
+ </section>
356
+ </div>
357
+ `;
358
+
359
+ SingleExpandAccordion.storyName = 'Settings Accordion';
@@ -0,0 +1,64 @@
1
+ import { html } from 'lit';
2
+
3
+ export default {
4
+ title: 'Primitives/Alerts',
5
+ parameters: {
6
+ pds: {
7
+ tags: ['colors']
8
+ },
9
+ docs: {
10
+ description: {
11
+ component: 'Basic UI elements - buttons, forms, cards, badges'
12
+ }
13
+ }
14
+ },
15
+ argTypes: {
16
+ preset: {
17
+ control: 'select',
18
+ options: ['default', 'ocean-breeze', 'midnight-steel', 'sunset-vibes', 'forest-calm', 'lavender-dream'],
19
+ description: 'Choose a design preset'
20
+ },
21
+ primaryColor: {
22
+ control: 'color',
23
+ description: 'Override primary color'
24
+ },
25
+ secondaryColor: {
26
+ control: 'color',
27
+ description: 'Override secondary color'
28
+ }
29
+ }
30
+ };
31
+
32
+ const alertsStoryStyles = html`
33
+ <style>
34
+ .alerts-story-container {
35
+ padding: var(--spacing-8);
36
+ }
37
+ .alerts-stack {
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: var(--spacing-4);
41
+ }
42
+ </style>
43
+ `;
44
+
45
+ export const Default = {
46
+ render: (args) => {
47
+ // Preset changes are handled by toolbar in preview.js
48
+
49
+ return html`
50
+ ${alertsStoryStyles}
51
+ <div class="story-container alerts-story-container">
52
+ <div class="alerts-stack">
53
+ <div class="alert alert-info">This is an info alert.</div>
54
+ <div class="alert alert-success">This is a success alert.</div>
55
+ <div class="alert alert-warning">This is a warning alert.</div>
56
+ <div class="alert alert-danger">This is a danger alert.</div>
57
+ </div>
58
+ </div>
59
+ `;
60
+ },
61
+ args: {
62
+ preset: 'default'
63
+ }
64
+ };
@@ -0,0 +1,183 @@
1
+ import { html } from 'lit';
2
+
3
+ export default {
4
+ title: 'Primitives/Badges & Pills',
5
+ parameters: {
6
+ docs: {
7
+ description: {
8
+ component: 'Badges and pills for labels, tags, status indicators, and categorization'
9
+ }
10
+ }
11
+ },
12
+ argTypes: {
13
+ preset: {
14
+ control: 'select',
15
+ options: ['default', 'ocean-breeze', 'midnight-steel', 'sunset-vibes', 'forest-calm', 'lavender-dream'],
16
+ description: 'Choose a design preset'
17
+ },
18
+ primaryColor: {
19
+ control: 'color',
20
+ description: 'Override primary color'
21
+ },
22
+ secondaryColor: {
23
+ control: 'color',
24
+ description: 'Override secondary color'
25
+ }
26
+ }
27
+ };
28
+
29
+ const badgesStoryStyles = html`
30
+ <style>
31
+ .badges-story-container {
32
+ padding: var(--spacing-8);
33
+ }
34
+ .badges-row {
35
+ display: flex;
36
+ gap: var(--spacing-4);
37
+ flex-wrap: wrap;
38
+ align-items: center;
39
+ }
40
+ .badges-row + .badges-row {
41
+ margin-top: var(--spacing-8);
42
+ }
43
+ .badges-section {
44
+ margin-bottom: var(--spacing-8);
45
+ }
46
+ </style>
47
+ `;
48
+
49
+ export const DefaultBadges = {
50
+ render: (args) => {
51
+ return html`
52
+ ${badgesStoryStyles}
53
+ <div class="story-container badges-story-container">
54
+ <h3>Default Badges</h3>
55
+ <div class="flex gap-md flex-wrap items-center">
56
+ <span class="badge">Default</span>
57
+ <span class="badge badge-primary">Primary</span>
58
+ <span class="badge badge-secondary">Secondary</span>
59
+ <span class="badge badge-success">Success</span>
60
+ <span class="badge badge-warning">Warning</span>
61
+ <span class="badge badge-danger">Danger</span>
62
+ <span class="badge badge-info">Info</span>
63
+ </div>
64
+ </div>
65
+ `;
66
+ },
67
+ args: {
68
+ preset: 'default'
69
+ }
70
+ };
71
+
72
+ export const OutlinedBadges = {
73
+ render: (args) => {
74
+ return html`
75
+ ${badgesStoryStyles}
76
+ <div class="story-container badges-story-container">
77
+ <h3>Outlined Badges</h3>
78
+ <div class="badges-row">
79
+ <span class="badge badge-outline badge-primary">Primary</span>
80
+ <span class="badge badge-outline badge-secondary">Secondary</span>
81
+ <span class="badge badge-outline badge-success">Success</span>
82
+ <span class="badge badge-outline badge-info">Info</span>
83
+ <span class="badge badge-outline badge-warning">Warning</span>
84
+ <span class="badge badge-outline badge-danger">Danger</span>
85
+ </div>
86
+ </div>
87
+ `;
88
+ },
89
+ args: {
90
+ preset: 'default'
91
+ }
92
+ };
93
+
94
+ export const BadgeSizes = {
95
+ render: (args) => {
96
+ return html`
97
+ ${badgesStoryStyles}
98
+ <div class="story-container badges-story-container">
99
+ <h3>Badge Sizes</h3>
100
+ <div class="flex gap-md flex-wrap items-center">
101
+ <span class="badge badge-primary badge-sm">Small</span>
102
+ <span class="badge badge-primary">Default</span>
103
+ <span class="badge badge-primary badge-lg">Large</span>
104
+ </div>
105
+ </div>
106
+ `;
107
+ },
108
+ args: {
109
+ preset: 'default'
110
+ }
111
+ };
112
+
113
+ export const Pills = {
114
+ render: (args) => {
115
+ return html`
116
+ ${badgesStoryStyles}
117
+ <div class="story-container badges-story-container">
118
+ <h3>Pills</h3>
119
+ <div class="badges-row">
120
+ <span class="pill badge-primary">React</span>
121
+ <span class="pill badge-secondary">Vue</span>
122
+ <span class="pill badge-success">Node.js</span>
123
+ <span class="pill badge-info">TypeScript</span>
124
+ <span class="pill badge-warning">JavaScript</span>
125
+ <span class="pill badge-danger">Critical</span>
126
+ </div>
127
+ </div>
128
+ `;
129
+ },
130
+ args: {
131
+ preset: 'default'
132
+ }
133
+ };
134
+
135
+ export const AllVariations = {
136
+ render: (args) => {
137
+ return html`
138
+ ${badgesStoryStyles}
139
+ <div class="story-container badges-story-container">
140
+ <h3>Default Badges</h3>
141
+ <div class="badges-row badges-section">
142
+ <span class="badge">Default</span>
143
+ <span class="badge badge-primary">Primary</span>
144
+ <span class="badge badge-secondary">Secondary</span>
145
+ <span class="badge badge-success">Success</span>
146
+ <span class="badge badge-warning">Warning</span>
147
+ <span class="badge badge-danger">Danger</span>
148
+ <span class="badge badge-info">Info</span>
149
+ </div>
150
+
151
+ <h3>Outlined Badges</h3>
152
+ <div class="badges-row badges-section">
153
+ <span class="badge badge-outline badge-primary">Primary</span>
154
+ <span class="badge badge-outline badge-secondary">Secondary</span>
155
+ <span class="badge badge-outline badge-success">Success</span>
156
+ <span class="badge badge-outline badge-info">Info</span>
157
+ <span class="badge badge-outline badge-warning">Warning</span>
158
+ <span class="badge badge-outline badge-danger">Danger</span>
159
+ </div>
160
+
161
+ <h3>Badge Sizes</h3>
162
+ <div class="badges-row badges-section">
163
+ <span class="badge badge-primary badge-sm">Small</span>
164
+ <span class="badge badge-primary">Default</span>
165
+ <span class="badge badge-primary badge-lg">Large</span>
166
+ </div>
167
+
168
+ <h3>Pills</h3>
169
+ <div class="badges-row">
170
+ <span class="pill badge-primary">React</span>
171
+ <span class="pill badge-secondary">Vue</span>
172
+ <span class="pill badge-success">Node.js</span>
173
+ <span class="pill badge-info">TypeScript</span>
174
+ <span class="pill badge-warning">JavaScript</span>
175
+ <span class="pill badge-danger">Critical</span>
176
+ </div>
177
+ </div>
178
+ `;
179
+ },
180
+ args: {
181
+ preset: 'default'
182
+ }
183
+ };