@repobit/dex-system-design 0.22.12 → 0.23.2

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 (39) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/package.json +4 -3
  3. package/src/components/Button/button.stories.js +292 -120
  4. package/src/components/accordion/accordion-bg.css.js +7 -2
  5. package/src/components/accordion/accordion-bg.stories.js +268 -449
  6. package/src/components/accordion/accordion.stories.js +259 -265
  7. package/src/components/anchor/anchor.stories.js +160 -159
  8. package/src/components/awards/awards-icon.js +44 -0
  9. package/src/components/awards/awards.css.js +328 -0
  10. package/src/components/awards/awards.js +224 -0
  11. package/src/components/awards/awards.stories.js +447 -0
  12. package/src/components/back/back.stories.js +100 -375
  13. package/src/components/badge/badge.stories.js +241 -129
  14. package/src/components/breadcrumb/breadcrumb.stories.js +218 -219
  15. package/src/components/cards/card.stories.js +174 -622
  16. package/src/components/carousel/carousel.stories.js +196 -225
  17. package/src/components/checkbox/checkbox.stories.js +136 -51
  18. package/src/components/compare/compare.css.js +237 -0
  19. package/src/components/compare/compare.js +253 -0
  20. package/src/components/compare/compare.stories.js +372 -0
  21. package/src/components/display/display.stories.js +91 -297
  22. package/src/components/divider/divider.stories.js +160 -342
  23. package/src/components/footer/footer.stories.js +177 -402
  24. package/src/components/header/header.stories.js +130 -338
  25. package/src/components/heading/heading.js +8 -5
  26. package/src/components/heading/heading.stories.js +162 -471
  27. package/src/components/highlight/highlight.stories.js +153 -38
  28. package/src/components/image/image.stories.js +135 -563
  29. package/src/components/input/custom-form.stories.js +761 -224
  30. package/src/components/link/link.js +29 -12
  31. package/src/components/link/link.stories.js +130 -468
  32. package/src/components/modal/modal.stories.js +174 -28
  33. package/src/components/paragraph/paragraph.css.js +10 -1
  34. package/src/components/paragraph/paragraph.stories.js +85 -410
  35. package/src/components/picture/picture.stories.js +147 -561
  36. package/src/components/radio/radio.stories.js +230 -81
  37. package/src/components/tabs/tabs.stories.js +126 -10
  38. package/src/components/termsOfUse/terms.stories.js +223 -8
  39. package/src/tokens/tokens.js +1 -0
@@ -1,507 +1,169 @@
1
1
  import { html } from 'lit';
2
- import '../heading/heading.js';
3
- import '../paragraph/paragraph.js';
4
2
  import './link.js';
5
3
 
6
4
  export default {
7
- title : 'Atoms/Link',
8
- component: 'bd-link',
9
- tags : ['autodocs'],
10
- argTypes : {
5
+ title : 'Components/Link',
6
+ tags : ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ **BdLink** is a Lit anchor component with kind, underline, disabled, and target support.
12
+
13
+ ### Usage
14
+ \`\`\`html
15
+ <bd-link href="/products" kind="primary">View products</bd-link>
16
+ <bd-link href="/docs" kind="secondary" underline>Documentation</bd-link>
17
+ <bd-link href="/old" disabled>Unavailable</bd-link>
18
+ \`\`\`
19
+
20
+ ### Kind Values
21
+ | Kind | Class |
22
+ |---|---|
23
+ | \`primary\` | \`bd-link--primary\` |
24
+ | \`secondary\` | \`bd-link--secondary\` |
25
+ | \`light\` | \`bd-link--light\` |
26
+
27
+ ### Disabled Behavior
28
+ - When \`disabled\`, renders a \`<span>\` instead of \`<a>\`
29
+ - Click events are prevented via \`e.preventDefault()\` and \`e.stopImmediatePropagation()\`
30
+
31
+ ### Events
32
+ - \`custom-click\` — NOT dispatched by BdLink (click handled natively by the \`<a>\` tag)
33
+ `
34
+ }
35
+ }
36
+ },
37
+ argTypes: {
11
38
  href: {
12
39
  control : 'text',
13
- description: 'URL destination for the link',
14
- table : {
15
- type : { summary: 'string' },
16
- defaultValue: { summary: '#' }
17
- }
40
+ description: 'The anchor href URL',
41
+ table : { type: { summary: 'string' }, defaultValue: { summary: '#' }, category: 'Navigation' }
18
42
  },
19
43
  target: {
20
44
  control : { type: 'select' },
21
45
  options : ['_self', '_blank', '_parent', '_top'],
22
- description: 'Link target attribute for browser behavior',
23
- table : {
24
- type : { summary: 'string' },
25
- defaultValue: { summary: '_self' }
26
- }
46
+ description: 'Browser target for the link',
47
+ table : { type: { summary: 'string' }, defaultValue: { summary: '_self' }, category: 'Navigation' }
27
48
  },
28
49
  kind: {
29
50
  control : { type: 'select' },
30
- options : ['primary', 'secondary', 'danger', 'subtle', 'bold'],
31
- description: 'Visual style variant for the link',
32
- table : {
33
- type : { summary: 'string' },
34
- defaultValue: { summary: 'primary' }
35
- }
51
+ options : ['primary', 'secondary', 'light'],
52
+ description: 'Visual style variant applied as `bd-link--{kind}` class',
53
+ table : { type: { summary: "'primary'|'secondary'|'light'" }, defaultValue: { summary: 'primary' }, category: 'Appearance' }
36
54
  },
37
55
  underline: {
38
56
  control : 'boolean',
39
- description: 'Always show underline regardless of hover state',
40
- table : {
41
- type : { summary: 'boolean' },
42
- defaultValue: { summary: 'false' }
43
- }
57
+ description: 'Adds `bd-link--underline` class for underline decoration',
58
+ table : { type: { summary: 'boolean' }, defaultValue: { summary: 'false' }, category: 'Appearance' }
44
59
  },
45
60
  disabled: {
46
61
  control : 'boolean',
47
- description: 'Disabled state that prevents interaction',
48
- table : {
49
- type : { summary: 'boolean' },
50
- defaultValue: { summary: 'false' }
51
- }
52
- },
53
- content: {
54
- control : 'text',
55
- description: 'Link text content',
56
- table : {
57
- type : { summary: 'string' },
58
- defaultValue: { summary: 'Link Text' }
59
- }
60
- }
61
- },
62
- parameters: {
63
- docs: {
64
- description: {
65
- component: 'A highly customizable link component with multiple visual variants, accessibility features, and interactive states. Supports both internal and external links with proper semantic HTML.'
66
- }
62
+ description: 'Renders a `<span>` instead of `<a>` and prevents click events',
63
+ table : { type: { summary: 'boolean' }, defaultValue: { summary: 'false' }, category: 'State' }
67
64
  }
68
65
  }
69
66
  };
70
67
 
71
- const Template = ({ href, target, kind, underline, disabled, content }) => html`
72
- <bd-link
73
- href="${href}"
74
- target="${target}"
75
- kind="${kind}"
76
- ?underline="${underline}"
77
- ?disabled="${disabled}"
78
- >
79
- ${content}
80
- </bd-link>
81
- `;
68
+ const defaultArgs = { href: '/products', target: '_self', kind: 'primary', underline: false, disabled: false };
82
69
 
83
- // ============ STORIES ============
84
-
85
- export const Default = Template.bind({});
86
- Default.args = {
87
- href : '#',
88
- target : '_self',
89
- kind : 'primary',
90
- underline: false,
91
- disabled : false,
92
- content : 'Default Link'
93
- };
94
- Default.parameters = {
95
- docs: {
96
- description: {
97
- story: 'Default link component with primary styling. This is the most commonly used link variant throughout the application.'
98
- }
99
- }
100
- };
101
-
102
- export const AllVariants = () => html`
103
- <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 800px; margin: 0 auto; padding: 2rem;">
104
- <bd-h as="h2" style="margin-bottom: 1rem;">All Link Variants</bd-h>
105
- <bd-p kind="regular" style="margin-bottom: 2rem;">
106
- Explore all available link variants and their recommended use cases. Each variant is designed for specific contexts and user interactions.
107
- </bd-p>
108
-
109
- <div style="display: flex; flex-direction: column; gap: 1.5rem;">
110
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
111
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="primary">primary link</bd-link> inside the text.</bd-p>
112
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
113
- <strong>Primary:</strong> Main calls-to-action, important navigation, key features
114
- </bd-p>
115
- </div>
116
-
117
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
118
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="secondary">secondary link</bd-link> inside the text.</bd-p>
119
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
120
- <strong>Secondary:</strong> Supporting links, less prominent actions, alternative navigation
121
- </bd-p>
122
- </div>
123
-
124
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
125
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="danger">danger link</bd-link> inside the text.</bd-p>
126
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
127
- <strong>Danger:</strong> Destructive actions, warnings, critical operations, error states
128
- </bd-p>
129
- </div>
130
-
131
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
132
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="subtle">subtle link</bd-link> inside the text.</bd-p>
133
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
134
- <strong>Subtle:</strong> Footer links, legal text, supplementary information, low emphasis
135
- </bd-p>
136
- </div>
137
-
138
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
139
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="bold">bold link</bd-link> inside the text.</bd-p>
140
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
141
- <strong>Bold:</strong> High emphasis, featured content, important references, key highlights
142
- </bd-p>
143
- </div>
144
-
145
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
146
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="primary" underline>underlined link</bd-link> inside the text.</bd-p>
147
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
148
- <strong>Underlined:</strong> Improved accessibility, formal content, academic references
149
- </bd-p>
150
- </div>
151
-
152
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
153
- <bd-p kind="regular">This is a paragraph with a <bd-link href="#" kind="primary" disabled>disabled link</bd-link> inside the text.</bd-p>
154
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
155
- <strong>Disabled:</strong> Unavailable actions, conditional access, permission-based states
156
- </bd-p>
157
- </div>
158
- </div>
159
- </div>
70
+ const render = (args) => html`
71
+ <bd-link
72
+ href="${args.href}"
73
+ target="${args.target}"
74
+ kind="${args.kind}"
75
+ ?underline="${args.underline}"
76
+ ?disabled="${args.disabled}"
77
+ >Click this link</bd-link>
160
78
  `;
161
- AllVariants.parameters = {
162
- docs: {
163
- description: {
164
- story: 'Comprehensive overview of all link variants with detailed usage guidelines and context recommendations for each style option.'
165
- }
166
- }
167
- };
168
-
169
- export const Primary = Template.bind({});
170
- Primary.args = {
171
- href : '#',
172
- target : '_self',
173
- kind : 'primary',
174
- underline: false,
175
- disabled : false,
176
- content : 'Primary Link'
177
- };
178
- Primary.parameters = {
179
- docs: {
180
- description: {
181
- story: 'Primary link variant - Use for main calls-to-action, important navigation items, and key feature links. This is the default and most prominent link style.'
182
- }
183
- }
184
- };
185
-
186
- export const Secondary = Template.bind({});
187
- Secondary.args = {
188
- href : '#',
189
- target : '_self',
190
- kind : 'secondary',
191
- underline: false,
192
- disabled : false,
193
- content : 'Secondary Link'
194
- };
195
- Secondary.parameters = {
196
- docs: {
197
- description: {
198
- story: 'Secondary link variant - Ideal for supporting actions, less prominent navigation, and alternative pathways that don\'t require primary emphasis.'
199
- }
200
- }
201
- };
202
79
 
203
- export const Danger = Template.bind({});
204
- Danger.args = {
205
- href : '#',
206
- target : '_self',
207
- kind : 'danger',
208
- underline: false,
209
- disabled : false,
210
- content : 'Danger Link'
211
- };
212
- Danger.parameters = {
213
- docs: {
214
- description: {
215
- story: 'Danger link variant - Designed for destructive actions, warnings, critical operations, and error-related links. Use sparingly for high-attention scenarios.'
216
- }
217
- }
218
- };
80
+ // ─── Stories ───────────────────────────────────────────────────────────────
219
81
 
220
- export const Subtle = Template.bind({});
221
- Subtle.args = {
222
- href : '#',
223
- target : '_self',
224
- kind : 'subtle',
225
- underline: false,
226
- disabled : false,
227
- content : 'Subtle Link'
228
- };
229
- Subtle.parameters = {
230
- docs: {
231
- description: {
232
- story: 'Subtle link variant - Perfect for low-emphasis contexts like footer links, legal text, supplementary information, and non-critical references.'
233
- }
234
- }
82
+ export const Default = {
83
+ name : 'Default (Primary)',
84
+ render : () => html`<bd-link href="/products" kind="primary">View products</bd-link>`,
85
+ parameters: { docs: { description: { story: 'Default primary link rendered as an `<a>` tag.' } } }
235
86
  };
236
87
 
237
- export const Bold = Template.bind({});
238
- Bold.args = {
239
- href : '#',
240
- target : '_self',
241
- kind : 'bold',
242
- underline: false,
243
- disabled : false,
244
- content : 'Bold Link'
245
- };
246
- Bold.parameters = {
247
- docs: {
248
- description: {
249
- story: 'Bold link variant - Use for high-emphasis scenarios, featured content, important references, and key highlights that need extra visual weight.'
250
- }
251
- }
252
- };
253
-
254
- export const WithUnderline = Template.bind({});
255
- WithUnderline.args = {
256
- href : '#',
257
- target : '_self',
258
- kind : 'primary',
259
- underline: true,
260
- disabled : false,
261
- content : 'Underlined Link'
262
- };
263
- WithUnderline.parameters = {
264
- docs: {
265
- description: {
266
- story: 'Link with forced underline - Improves accessibility and clarity, especially useful in formal content, academic references, and dense text blocks.'
267
- }
268
- }
269
- };
270
-
271
- export const Disabled = Template.bind({});
272
- Disabled.args = {
273
- href : '#',
274
- target : '_self',
275
- kind : 'primary',
276
- underline: false,
277
- disabled : true,
278
- content : 'Disabled Link'
279
- };
280
- Disabled.parameters = {
281
- docs: {
282
- description: {
283
- story: 'Disabled link state - Shows unavailable actions while maintaining visual context. Automatically prevents clicks and maintains semantic structure.'
284
- }
285
- }
286
- };
287
-
288
- export const TargetOptions = () => html`
289
- <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 800px; margin: 0 auto; padding: 2rem;">
290
- <bd-h as="h2" style="margin-bottom: 1rem;">Link Target Options</bd-h>
291
- <bd-p kind="regular" style="margin-bottom: 1rem;">
292
- Different target attributes control how links open in the browser. Choose the appropriate option based on user experience needs.
293
- </bd-p>
294
-
295
- <div style="display: flex; flex-direction: column; gap: 1rem;">
296
- <div>
297
- <bd-link href="https://example.com" target="_self" kind="primary">
298
- _self - Opens in same tab/window
299
- </bd-link>
300
- <bd-p kind="small" style="color: #64748b;">
301
- Default behavior. Use for internal navigation and same-context links.
302
- </bd-p>
303
- </div>
304
-
305
- <div>
306
- <bd-link href="https://example.com" target="_blank" kind="secondary">
307
- _blank - Opens in new tab
308
- </bd-link>
309
- <bd-p kind="small" style="color: #64748b;">
310
- For external links, references, and resources that shouldn\'t interrupt user flow.
311
- </bd-p>
312
- </div>
313
-
314
- <div>
315
- <bd-link href="https://example.com" target="_parent" kind="subtle">
316
- _parent - Opens in parent frame
317
- </bd-link>
318
- <bd-p kind="small" style="color: #64748b;">
319
- Specific to frame-based layouts. Rarely used in modern web applications.
320
- </bd-p>
321
- </div>
322
-
323
- <div>
324
- <bd-link href="https://example.com" target="_top" kind="subtle">
325
- _top - Opens in full window
326
- </bd-link>
327
- <bd-p kind="small" style="color: #64748b;">
328
- Breaks out of frames to full browser window. Useful in embedded contexts.
329
- </bd-p>
330
- </div>
88
+ export const AllKinds = {
89
+ name : 'All Kinds',
90
+ render: () => html`
91
+ <div style="display:flex; gap:16px; flex-wrap:wrap; align-items:center; padding:8px; background:#333;">
92
+ <bd-link href="#" kind="primary">Primary</bd-link>
93
+ <bd-link href="#" kind="secondary">Secondary</bd-link>
94
+ <bd-link href="#" kind="light">Light</bd-link>
331
95
  </div>
332
- </div>
333
- `;
334
- TargetOptions.parameters = {
335
- docs: {
336
- description: {
337
- story: 'Demonstration of different target attributes and their browser behaviors with recommendations for when to use each option based on user experience considerations.'
338
- }
339
- }
96
+ `,
97
+ parameters: { docs: { description: { story: 'All three `kind` values. Light kind is shown on a dark background for visibility.' } } }
340
98
  };
341
99
 
342
- export const ExternalLinks = () => html`
343
- <div style="display: flex; flex-direction; column; gap: 2rem; max-width: 800px; margin: 0 auto; padding: 2rem;">
344
- <bd-h as="h2" style="margin-bottom: 1rem;">External Link Examples</bd-h>
345
- <bd-p kind="regular" style="margin-bottom: 1rem;">
346
- External links typically open in new tabs to prevent users from leaving your application. Here are common patterns for external references.
347
- </bd-p>
348
-
349
- <div style="display: flex; flex-direction: column; gap: 1.5rem;">
350
- <div>
351
- <bd-link href="https://example.com" target="_blank" kind="primary">
352
- External Primary Link with Security
353
- </bd-link>
354
- <bd-p kind="small" style="color: #64748b;">
355
- Opens in new tab with proper security attributes for external resources.
356
- </bd-p>
357
- </div>
358
-
359
- <div>
360
- <bd-link href="https://example.com" target="_blank" kind="secondary" underline>
361
- External Underlined Reference
362
- </bd-link>
363
- <bd-p kind="small" style="color: #64748b;">
364
- Clear visual indication for external academic or reference material.
365
- </bd-p>
366
- </div>
367
-
368
- <div style="border: 2px solid #e2e8f0; padding: 1.5rem; border-radius: 8px;">
369
- <bd-p kind="regular">
370
- This is a paragraph with an <bd-link href="https://example.com" target="_blank" kind="primary">external link</bd-link> that opens in a new tab for better user experience and flow preservation.
371
- </bd-p>
372
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
373
- Best practice: Use target="_blank" for all external links to keep users in your application context.
374
- </bd-p>
375
- </div>
100
+ export const WithUnderline = {
101
+ name : 'With Underline',
102
+ render: () => html`
103
+ <div style="display:flex; gap:16px; flex-wrap:wrap;">
104
+ <bd-link href="#" kind="primary" underline>Primary underlined</bd-link>
105
+ <bd-link href="#" kind="secondary" underline>Secondary underlined</bd-link>
376
106
  </div>
377
- </div>
378
- `;
379
- ExternalLinks.parameters = {
380
- docs: {
381
- description: {
382
- story: 'Examples and best practices for external links, including security considerations, user experience patterns, and visual styling recommendations for outbound navigation.'
383
- }
384
- }
107
+ `,
108
+ parameters: { docs: { description: { story: '`underline` prop adds `bd-link--underline` class.' } } }
385
109
  };
386
110
 
387
- export const AccessibilityExamples = () => html`
388
- <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 800px; margin: 0 auto; padding: 2rem;">
389
- <bd-h as="h2" style="margin-bottom: 1rem;">Accessibility Guidelines</bd-h>
390
-
391
- <div style="border: 2px solid #10b981; padding: 2rem; border-radius: 12px; background: #f0fdf4;">
392
- <bd-h as="h3" style="color: #059669; margin-bottom: 1rem;">✅ Accessible Link Practices</bd-h>
393
-
394
- <div style="display: flex; flex-direction: column; gap: 1rem;">
395
- <div>
396
- <bd-p kind="regular"><strong>Descriptive Text:</strong> Always use meaningful link text that makes sense out of context.</bd-p>
397
- <bd-p kind="small" style="color: #059669;">
398
- ✅ <bd-link href="#" kind="primary">Download security whitepaper</bd-link><br>
399
- ❌ <bd-link href="#" kind="danger">Click here</bd-link>
400
- </bd-p>
401
- </div>
402
-
403
- <div>
404
- <bd-p kind="regular"><strong>Underline for Clarity:</strong> Use underlined links in paragraphs for better visual identification.</bd-p>
405
- <bd-p kind="small" style="color: #059669;">
406
- This <bd-link href="#" kind="primary" underline>underlined link</bd-link> is easier to identify in text blocks.
407
- </bd-p>
408
- </div>
409
-
410
- <div>
411
- <bd-p kind="regular"><strong>Color Contrast:</strong> All link variants maintain WCAG AA contrast ratios.</bd-p>
412
- <bd-p kind="small" style="color: #059669;">
413
- Tested for accessibility: <bd-link href="#" kind="subtle">Subtle</bd-link>, <bd-link href="#" kind="primary">Primary</bd-link>, <bd-link href="#" kind="danger">Danger</bd-link>
414
- </bd-p>
415
- </div>
416
-
417
- <div>
418
- <bd-p kind="regular"><strong>Focus Indicators:</strong> Clear focus rings for keyboard navigation.</bd-p>
419
- <bd-p kind="small" style="color: #059669;">
420
- Try tabbing through these links to see the focus indicators.
421
- </bd-p>
422
- </div>
423
- </div>
424
- </div>
425
-
426
- <div style="border: 2px solid #e2e8f0; padding: 2rem; border-radius: 12px;">
427
- <bd-h as="h3" style="color: #3b82f6; margin-bottom: 1rem;">Screen Reader Considerations</bd-h>
428
- <bd-p kind="regular" style="margin-bottom: 1rem;">
429
- Links provide proper semantic information for assistive technologies:
430
- </bd-p>
431
-
432
- <ul style="color: #374151; margin-left: 1.5rem;">
433
- <li style="margin-bottom: 0.5rem;">Disabled links become <code>&lt;span&gt;</code> elements to prevent interaction</li>
434
- <li style="margin-bottom: 0.5rem;">External links should include visual or textual indicators</li>
435
- <li style="margin-bottom: 0.5rem;">Link text should be unique and descriptive</li>
436
- <li>Focus management works correctly with keyboard navigation</li>
437
- </ul>
438
- </div>
439
- </div>
440
- `;
441
- AccessibilityExamples.parameters = {
442
- docs: {
443
- description: {
444
- story: 'Comprehensive accessibility guidelines and best practices for link components, including screen reader compatibility, keyboard navigation, color contrast, and semantic HTML structure.'
445
- }
446
- }
111
+ export const Disabled = {
112
+ name : 'Disabled',
113
+ render : () => html`<bd-link href="/products" kind="primary" disabled>Unavailable link</bd-link>`,
114
+ parameters: { docs: { description: { story: 'Disabled link renders as `<span>` — not clickable, not navigable.' } } }
447
115
  };
448
116
 
449
- export const InContext = () => html`
450
- <div style="max-width: 800px; margin: 0 auto; padding: 2rem;">
451
- <bd-h as="h2">Cybersecurity Features Documentation</bd-h>
452
-
453
- <bd-p kind="lead">
454
- Protect your digital life with our comprehensive security solutions.
455
- Learn more about <bd-link href="#" kind="primary">advanced threat protection</bd-link>
456
- and <bd-link href="#" kind="bold">real-time monitoring features</bd-link>.
457
- </bd-p>
458
-
459
- <bd-p kind="regular">
460
- Our <bd-link href="#" kind="danger">emergency response team</bd-link> is available 24/7
461
- to handle security incidents. For less urgent matters, check our
462
- <bd-link href="#" kind="subtle">comprehensive knowledge base</bd-link> or
463
- <bd-link href="#" kind="secondary">community support forums</bd-link>.
464
- </bd-p>
465
-
466
- <bd-h as="h3" style="margin-top: 2rem;">Additional Resources</bd-h>
467
-
468
- <bd-p kind="regular">
469
- Download our <bd-link href="#" kind="primary" underline>security best practices guide</bd-link>
470
- or explore <bd-link href="https://example.com" target="_blank" kind="secondary">external security resources</bd-link>
471
- for more in-depth information.
472
- </bd-p>
473
-
474
- <div style="margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #e2e8f0;">
475
- <bd-p kind="small">
476
- <bd-link href="#" kind="subtle" underline>Terms of service</bd-link> •
477
- <bd-link href="#" kind="subtle" underline>Privacy policy</bd-link> •
478
- <bd-link href="#" kind="subtle" underline>Cookie policy</bd-link> •
479
- <bd-link href="#" kind="subtle" underline>Contact support</bd-link>
480
- </bd-p>
117
+ export const DisabledAllKinds = {
118
+ name : 'Disabled All Kinds',
119
+ render: () => html`
120
+ <div style="display:flex; gap:16px; flex-wrap:wrap; align-items:center;">
121
+ <bd-link href="#" kind="primary" disabled>Primary disabled</bd-link>
122
+ <bd-link href="#" kind="secondary" disabled>Secondary disabled</bd-link>
123
+ <bd-link href="#" kind="light" disabled>Light disabled</bd-link>
481
124
  </div>
482
- </div>
483
- `;
484
- InContext.parameters = {
485
- docs: {
486
- description: {
487
- story: 'Real-world example showing links used in various contexts including content paragraphs, feature descriptions, resource references, and footer navigation with appropriate variant selection.'
488
- }
489
- }
490
- };
491
-
492
- export const InteractivePlayground = Template.bind({});
493
- InteractivePlayground.args = {
494
- href : '#',
495
- target : '_self',
496
- kind : 'primary',
497
- underline: false,
498
- disabled : false,
499
- content : 'Customize This Link'
500
- };
501
- InteractivePlayground.parameters = {
502
- docs: {
503
- description: {
504
- story: 'Interactive playground where you can test all link properties in real-time. Use the controls panel to modify the link variant, target, underline, disabled state, and content.'
505
- }
506
- }
125
+ `,
126
+ parameters: { docs: { description: { story: 'Disabled state across all three kind variants.' } } }
127
+ };
128
+
129
+ export const OpenInNewTab = {
130
+ name : 'Opens in New Tab',
131
+ render: () => html`
132
+ <bd-link href="https://bitdefender.com" kind="primary" target="_blank">
133
+ Visit Bitdefender.com
134
+ </bd-link>
135
+ `,
136
+ parameters: { docs: { description: { story: '`target="_blank"` opens the link in a new browser tab.' } } }
137
+ };
138
+
139
+ export const InlineWithText = {
140
+ name : 'Inline Within Text',
141
+ render: () => html`
142
+ <p style="font-size:16px; line-height:1.6;">
143
+ Bitdefender offers award-winning protection.
144
+ <bd-link href="/products" kind="primary" underline>View all products</bd-link>
145
+ to find the right plan for you.
146
+ </p>
147
+ `,
148
+ parameters: { docs: { description: { story: 'Link used inline within a paragraph of text.' } } }
149
+ };
150
+
151
+ export const NavigationLinks = {
152
+ name : 'Navigation Link Row',
153
+ render: () => html`
154
+ <nav style="display:flex; gap:24px; padding:16px; background:#1a1a1a;">
155
+ <bd-link href="/consumer" kind="light">Consumer</bd-link>
156
+ <bd-link href="/small-business" kind="light">Small Business</bd-link>
157
+ <bd-link href="/business" kind="light">Business</bd-link>
158
+ <bd-link href="/partners" kind="light">Partners</bd-link>
159
+ </nav>
160
+ `,
161
+ parameters: { docs: { description: { story: 'Light kind links used as navigation items on a dark background.' } } }
162
+ };
163
+
164
+ export const Playground = {
165
+ name : '🛝 Playground',
166
+ args : { ...defaultArgs },
167
+ render,
168
+ parameters: { docs: { description: { story: 'Interactive playground. Adjust href, target, kind, underline, and disabled via Controls.' } } }
507
169
  };