@repobit/dex-system-design 0.22.11 → 0.23.1

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,345 +1,339 @@
1
1
  import { html } from 'lit';
2
- import '../paragraph/paragraph.js';
3
2
  import './accordion.js';
4
3
 
5
4
  export default {
6
- title : 'Components/Accordion Simple',
7
- component : 'bd-accordion-section',
8
- tags : ['autodocs'],
9
- subcomponents: {
10
- 'bd-accordion-item' : 'bd-accordion-item',
11
- 'bd-accordion-section': 'bd-accordion-section'
5
+ title : 'Components/Accordion',
6
+ tags : ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ **BdAccordionItem** and **BdAccordionSection** are Lit web components for building structured, collapsible FAQ or guide sections.
12
+
13
+ Two elements are available:
14
+ - \`<bd-accordion-item>\` — a single collapsible item with a +/− toggle
15
+ - \`<bd-accordion-section>\` — a section wrapper with optional title and user guide link
16
+
17
+ ### Usage
18
+ \`\`\`html
19
+ <bd-accordion-section
20
+ title="General Questions"
21
+ guide-label="View User Guide"
22
+ guide-href="/guide"
23
+ >
24
+ <bd-accordion-item title="What is included?">
25
+ <p>All features are included in every plan.</p>
26
+ </bd-accordion-item>
27
+ </bd-accordion-section>
28
+ \`\`\`
29
+
30
+ ### Notes
31
+ - \`bd-accordion-item\` uses \`+\` / \`−\` as toggle indicators
32
+ - \`bd-accordion-section\` renders a guide link only when \`guide-label\` is provided
33
+ - \`title\` on \`bd-accordion-section\` is optional — the \`<h2>\` is omitted when absent
34
+ `
35
+ }
36
+ }
12
37
  },
13
38
  argTypes: {
14
- title: {
39
+ // BdAccordionItem
40
+ itemTitle: {
15
41
  control : 'text',
16
- description: 'Title of the accordion section',
42
+ description: 'Title text displayed in the accordion item header',
17
43
  table : {
18
44
  type : { summary: 'string' },
19
- defaultValue: { summary: '' }
45
+ defaultValue: { summary: '' },
46
+ category : 'BdAccordionItem'
20
47
  }
21
48
  },
22
- guideIcon: {
49
+ open: {
50
+ control : 'boolean',
51
+ description: 'Whether the accordion item is expanded by default',
52
+ table : {
53
+ type : { summary: 'boolean' },
54
+ defaultValue: { summary: 'false' },
55
+ category : 'BdAccordionItem'
56
+ }
57
+ },
58
+ // BdAccordionSection
59
+ sectionTitle: {
23
60
  control : 'text',
24
- description: 'URL for the guide icon image',
61
+ description: 'Section heading rendered as an `<h2>`',
25
62
  table : {
26
63
  type : { summary: 'string' },
27
- defaultValue: { summary: '' }
64
+ defaultValue: { summary: '' },
65
+ category : 'BdAccordionSection'
28
66
  }
29
67
  },
30
68
  guideLabel: {
31
69
  control : 'text',
32
- description: 'Text label for the guide link',
70
+ description: 'Label for the user guide link. If empty, the link is not rendered.',
33
71
  table : {
34
72
  type : { summary: 'string' },
35
- defaultValue: { summary: '' }
73
+ defaultValue: { summary: '' },
74
+ category : 'BdAccordionSection'
36
75
  }
37
76
  },
38
77
  guideHref: {
39
78
  control : 'text',
40
- description: 'URL for the guide link',
79
+ description: 'URL for the user guide link',
41
80
  table : {
42
81
  type : { summary: 'string' },
43
- defaultValue: { summary: '#' }
82
+ defaultValue: { summary: '#' },
83
+ category : 'BdAccordionSection'
44
84
  }
45
- }
46
- },
47
- parameters: {
48
- docs: {
49
- description: {
50
- component: 'A simple, lightweight accordion component with minimal styling. Perfect for basic expandable content sections without complex styling requirements.'
85
+ },
86
+ guideIcon: {
87
+ control : 'text',
88
+ description: 'Path to the icon image shown next to the guide link',
89
+ table : {
90
+ type : { summary: 'string' },
91
+ defaultValue: { summary: '/assets/user_guide.png' },
92
+ category : 'BdAccordionSection'
51
93
  }
52
94
  }
53
95
  }
54
96
  };
55
97
 
56
- const BasicTemplate = ({ title, guideIcon, guideLabel, guideHref }) => html`
57
- <bd-accordion-section
58
- title="${title}"
59
- guide-icon="${guideIcon}"
60
- guide-label="${guideLabel}"
61
- guide-href="${guideHref}"
62
- >
63
- <bd-accordion-item title="What is Bitdefender?">
64
- <bd-p kind="regular">Bitdefender is a leading cybersecurity company delivering robust security solutions to over 500 million users in more than 150 countries.</bd-p>
65
- </bd-accordion-item>
98
+ const defaultItems = [
99
+ { title: 'What is included in my plan?', content: 'All core features are included in every Bitdefender plan.' },
100
+ { title: 'Can I use it on multiple devices?', content: 'Yes, depending on your subscription you can protect up to unlimited devices.' },
101
+ { title: 'How do I renew my subscription?', content: 'You can renew from your Bitdefender Central account at any time.' },
102
+ { title: 'Is there a free trial?', content: 'Yes, a 30-day free trial is available for most products.' }
103
+ ];
66
104
 
67
- <bd-accordion-item title="System Requirements">
68
- <bd-p kind="regular"><strong>Operating Systems:</strong> Windows 10/11, macOS 10.12+, Android 5.0+, iOS 12+</bd-p>
69
- <bd-p kind="regular"><strong>Hardware:</strong> 1GB RAM minimum, 2.5GB free disk space</bd-p>
70
- </bd-accordion-item>
105
+ // ─── BdAccordionItem Stories ────────────────────────────────────────────────
71
106
 
72
- <bd-accordion-item title="Installation Process">
73
- <bd-p kind="regular">Download the installation file, run the installer, and follow on-screen instructions to activate with your product key.</bd-p>
107
+ export const ItemDefault = {
108
+ name : 'Item Default (Collapsed)',
109
+ render: () => html`
110
+ <bd-accordion-item title="What is included in my plan?">
111
+ <p>All core features are included in every Bitdefender plan.</p>
74
112
  </bd-accordion-item>
75
- </bd-accordion-section>
76
- `;
77
-
78
- // ============ STORIES ============
79
-
80
- export const Default = BasicTemplate.bind({});
81
- Default.args = {
82
- title : 'Product Information',
83
- guideIcon : '',
84
- guideLabel: '',
85
- guideHref : '#'
86
- };
87
- Default.parameters = {
88
- docs: {
89
- description: {
90
- story: 'Default simple accordion with clean, minimal design using basic toggle indicators (+/-).'
113
+ `,
114
+ parameters: {
115
+ docs: {
116
+ description: {
117
+ story: 'A single accordion item in its default collapsed state, showing the `+` toggle.'
118
+ }
91
119
  }
92
120
  }
93
121
  };
94
122
 
95
- export const WithUserGuide = BasicTemplate.bind({});
96
- WithUserGuide.args = {
97
- title : 'Installation Guide',
98
- guideIcon : '/assets/guide-icon.svg',
99
- guideLabel: 'View Complete User Guide',
100
- guideHref : '/user-guide'
101
- };
102
- WithUserGuide.parameters = {
103
- docs: {
104
- description: {
105
- story: 'Simple accordion with optional user guide link for additional documentation and help resources.'
123
+ export const ItemOpen = {
124
+ name : 'Item — Open',
125
+ render: () => html`
126
+ <bd-accordion-item title="What is included in my plan?" open>
127
+ <p>All core features are included in every Bitdefender plan.</p>
128
+ </bd-accordion-item>
129
+ `,
130
+ parameters: {
131
+ docs: {
132
+ description: {
133
+ story: 'Accordion item rendered in the open/expanded state using the `open` attribute. Shows the `−` toggle.'
134
+ }
106
135
  }
107
136
  }
108
137
  };
109
138
 
110
- export const WithoutTitle = () => html`
111
- <bd-accordion-section>
112
- <bd-accordion-item title="Frequently Asked Questions">
113
- <bd-p kind="regular">Find answers to common questions about our products and services.</bd-p>
114
- </bd-accordion-item>
115
-
116
- <bd-accordion-item title="Technical Support">
117
- <bd-p kind="regular">Contact our support team for technical assistance and troubleshooting.</bd-p>
139
+ export const ItemRichContent = {
140
+ name : 'Item — Rich Slotted Content',
141
+ render: () => html`
142
+ <bd-accordion-item title="What platforms are supported?" open>
143
+ <ul>
144
+ <li>Windows 10 / 11</li>
145
+ <li>macOS 12+</li>
146
+ <li>Android 8.0+</li>
147
+ <li>iOS 14+</li>
148
+ </ul>
149
+ <p>Visit <a href="#">our compatibility page</a> for full details.</p>
118
150
  </bd-accordion-item>
119
-
120
- <bd-accordion-item title="Product Updates">
121
- <bd-p kind="regular">Stay informed about the latest features and security updates.</bd-p>
122
- </bd-accordion-item>
123
- </bd-accordion-section>
124
- `;
125
- WithoutTitle.parameters = {
126
- docs: {
127
- description: {
128
- story: 'Simple accordion without a section title, useful for standalone expandable content areas.'
151
+ `,
152
+ parameters: {
153
+ docs: {
154
+ description: {
155
+ story: 'Item with rich slotted content: a list, a paragraph, and an anchor link.'
156
+ }
129
157
  }
130
158
  }
131
159
  };
132
160
 
133
- export const SingleAccordionItem = () => html`
134
- <bd-accordion-section title="Security Information">
135
- <bd-accordion-item title="How does real-time protection work?" open>
136
- <bd-p kind="regular">
137
- Bitdefender's real-time protection continuously monitors your system for suspicious activity
138
- and potential threats. It uses advanced behavioral analysis and machine learning to detect
139
- and block malware, ransomware, and other cyber threats before they can cause harm.
140
- </bd-p>
141
- <bd-p kind="regular">
142
- The protection runs in the background with minimal impact on system performance, ensuring
143
- your device remains secure without slowing down your work or entertainment.
144
- </bd-p>
145
- </bd-accordion-item>
146
- </bd-accordion-section>
147
- `;
148
- SingleAccordionItem.parameters = {
149
- docs: {
150
- description: {
151
- story: 'Single accordion item in open state, perfect for highlighting important information that should be immediately visible.'
161
+ // ─── BdAccordionSection Stories ─────────────────────────────────────────────
162
+
163
+ export const SectionDefault = {
164
+ name : 'Section — Default',
165
+ render: () => html`
166
+ <bd-accordion-section title="General Questions">
167
+ ${defaultItems.map(item => html`
168
+ <bd-accordion-item title="${item.title}">
169
+ <p>${item.content}</p>
170
+ </bd-accordion-item>
171
+ `)}
172
+ </bd-accordion-section>
173
+ `,
174
+ parameters: {
175
+ docs: {
176
+ description: {
177
+ story: 'A full accordion section with a title and four collapsed items. No guide link.'
178
+ }
152
179
  }
153
180
  }
154
181
  };
155
182
 
156
- export const MultipleSections = () => html`
157
- <div style="display: flex; flex-direction: column; gap: 2rem;">
158
- <bd-accordion-section title="Getting Started">
159
- <bd-accordion-item title="System Requirements">
160
- <bd-p kind="regular">Check if your device meets the minimum requirements for optimal performance.</bd-p>
161
- </bd-accordion-item>
162
- <bd-accordion-item title="Installation Steps">
163
- <bd-p kind="regular">Follow our simple installation guide to get started quickly.</bd-p>
164
- </bd-accordion-item>
183
+ export const SectionWithGuideLink = {
184
+ name : 'Section With Guide Link',
185
+ render: () => html`
186
+ <bd-accordion-section
187
+ title="Installation Help"
188
+ guide-label="View Installation Guide"
189
+ guide-href="/docs/install"
190
+ guide-icon="/assets/user_guide.png"
191
+ >
192
+ ${defaultItems.map(item => html`
193
+ <bd-accordion-item title="${item.title}">
194
+ <p>${item.content}</p>
195
+ </bd-accordion-item>
196
+ `)}
165
197
  </bd-accordion-section>
198
+ `,
199
+ parameters: {
200
+ docs: {
201
+ description: {
202
+ story: 'Section with all three guide link props set: `guide-label`, `guide-href`, and `guide-icon`. The link and icon are rendered below the items.'
203
+ }
204
+ }
205
+ }
206
+ };
166
207
 
167
- <bd-accordion-section
168
- title="Advanced Features"
169
- guide-label="Explore All Features"
170
- guide-href="/features"
208
+ export const SectionWithGuideLinkNoIcon = {
209
+ name : 'Section — Guide Link Without Icon',
210
+ render: () => html`
211
+ <bd-accordion-section
212
+ title="Billing Questions"
213
+ guide-label="View Billing Guide"
214
+ guide-href="/docs/billing"
215
+ guide-icon=""
171
216
  >
172
- <bd-accordion-item title="VPN Configuration">
173
- <bd-p kind="regular">Set up and customize your VPN for secure browsing.</bd-p>
174
- </bd-accordion-item>
175
- <bd-accordion-item title="Parental Controls">
176
- <bd-p kind="regular">Manage and monitor your family's online safety.</bd-p>
177
- </bd-accordion-item>
217
+ ${defaultItems.map(item => html`
218
+ <bd-accordion-item title="${item.title}">
219
+ <p>${item.content}</p>
220
+ </bd-accordion-item>
221
+ `)}
178
222
  </bd-accordion-section>
179
- </div>
180
- `;
181
- MultipleSections.parameters = {
182
- docs: {
183
- description: {
184
- story: 'Multiple accordion sections grouped together, demonstrating how to organize related content into different categories.'
223
+ `,
224
+ parameters: {
225
+ docs: {
226
+ description: {
227
+ story: '`guide-icon` is set to an empty string — only the text label is rendered inside the guide link, without an icon image.'
228
+ }
185
229
  }
186
230
  }
187
231
  };
188
232
 
189
- export const TechnicalSpecifications = () => html`
190
- <bd-accordion-section title="Technical Specifications">
191
- <bd-accordion-item title="Compatibility">
192
- <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
193
- <div>
194
- <bd-p kind="regular"><strong>Windows</strong></bd-p>
195
- <bd-p kind="small">10/11 (64-bit)</bd-p>
196
- </div>
197
- <div>
198
- <bd-p kind="regular"><strong>macOS</strong></bd-p>
199
- <bd-p kind="small">10.14+</bd-p>
200
- </div>
201
- <div>
202
- <bd-p kind="regular"><strong>Android</strong></bd-p>
203
- <bd-p kind="small">6.0+</bd-p>
204
- </div>
205
- <div>
206
- <bd-p kind="regular"><strong>iOS</strong></bd-p>
207
- <bd-p kind="small">13.0+</bd-p>
208
- </div>
209
- </div>
210
- </bd-accordion-item>
211
-
212
- <bd-accordion-item title="Performance Impact">
213
- <bd-p kind="regular">Bitdefender is designed for minimal system impact:</bd-p>
214
- <div style="display: flex; gap: 1rem; margin-top: 1rem;">
215
- <div style="text-align: center;">
216
- <bd-p kind="large" style="color: #059669; margin: 0;">&lt;2%</bd-p>
217
- <bd-p kind="small" style="color: #64748b;">CPU Usage</bd-p>
218
- </div>
219
- <div style="text-align: center;">
220
- <bd-p kind="large" style="color: #3b82f6; margin: 0;">~150MB</bd-p>
221
- <bd-p kind="small" style="color: #64748b;">Memory</bd-p>
222
- </div>
223
- <div style="text-align: center;">
224
- <bd-p kind="large" style="color: #8b5cf6; margin: 0;">+0.3s</bd-p>
225
- <bd-p kind="small" style="color: #64748b;">Boot Time</bd-p>
226
- </div>
227
- </div>
228
- </bd-accordion-item>
229
-
230
- <bd-accordion-item title="Security Features">
231
- <bd-p kind="regular">Comprehensive protection includes:</bd-p>
232
- <bd-p kind="small" style="color: #64748b; margin-top: 0.5rem;">
233
- • Real-time antivirus • Advanced threat defense • Behavioral analysis • Firewall protection •
234
- Web protection • Anti-phishing • Ransomware remediation • Vulnerability assessment
235
- </bd-p>
236
- </bd-accordion-item>
237
- </bd-accordion-section>
238
- `;
239
- TechnicalSpecifications.parameters = {
240
- docs: {
241
- description: {
242
- story: 'Technical specifications presented in a simple accordion format with grid layouts and performance metrics.'
233
+ export const SectionNoTitle = {
234
+ name : 'Section — No Title',
235
+ render: () => html`
236
+ <bd-accordion-section>
237
+ ${defaultItems.map(item => html`
238
+ <bd-accordion-item title="${item.title}">
239
+ <p>${item.content}</p>
240
+ </bd-accordion-item>
241
+ `)}
242
+ </bd-accordion-section>
243
+ `,
244
+ parameters: {
245
+ docs: {
246
+ description: {
247
+ story: 'Section without a `title` prop. The `<h2>` is conditionally omitted.'
248
+ }
243
249
  }
244
250
  }
245
251
  };
246
252
 
247
- export const FAQExample = () => html`
248
- <bd-accordion-section
249
- title="Frequently Asked Questions"
250
- guide-label="Visit Help Center"
251
- guide-href="/help"
252
- >
253
- <bd-accordion-item title="How do I activate my product?">
254
- <bd-p kind="regular">
255
- After installation, open Bitdefender and click on the activation button. Enter your
256
- product key or sign in to your Bitdefender account to activate your subscription.
257
- </bd-p>
258
- </bd-accordion-item>
259
-
260
- <bd-accordion-item title="Can I use Bitdefender on multiple devices?">
261
- <bd-p kind="regular">
262
- Yes, depending on your subscription plan. Most plans allow protection for multiple
263
- devices simultaneously. Check your specific plan details for the exact number of
264
- devices covered.
265
- </bd-p>
266
- </bd-accordion-item>
267
-
268
- <bd-accordion-item title="How often are virus definitions updated?">
269
- <bd-p kind="regular">
270
- Bitdefender updates its virus definitions multiple times per day to ensure protection
271
- against the latest threats. Updates are automatic and require an internet connection.
272
- </bd-p>
273
- </bd-accordion-item>
274
-
275
- <bd-accordion-item title="What should I do if I find a virus?">
276
- <bd-p kind="regular">
277
- Bitdefender will automatically detect and quarantine most threats. If you suspect an
278
- infection, run a full system scan and follow the recommended actions provided by the software.
279
- </bd-p>
280
- </bd-accordion-item>
281
- </bd-accordion-section>
282
- `;
283
- FAQExample.parameters = {
284
- docs: {
285
- description: {
286
- story: 'Classic FAQ implementation using the simple accordion component with clear, concise answers to common questions.'
253
+ export const SectionWithOpenItem = {
254
+ name : 'Section — First Item Open',
255
+ render: () => html`
256
+ <bd-accordion-section title="FAQ">
257
+ ${defaultItems.map((item, i) => html`
258
+ <bd-accordion-item title="${item.title}" ?open="${i === 0}">
259
+ <p>${item.content}</p>
260
+ </bd-accordion-item>
261
+ `)}
262
+ </bd-accordion-section>
263
+ `,
264
+ parameters: {
265
+ docs: {
266
+ description: {
267
+ story: 'First item is open by default. Remaining items are collapsed.'
268
+ }
287
269
  }
288
270
  }
289
271
  };
290
272
 
291
- export const AccessibilityDemo = () => html`
292
- <div style="max-width: 800px; margin: 0 auto; padding: 2rem;">
293
- <bd-p kind="regular" style="margin-bottom: 2rem;">
294
- The simple accordion includes built-in accessibility features:
295
- </bd-p>
296
-
297
- <bd-accordion-section title="Accessibility Features">
298
- <bd-accordion-item title="Keyboard Navigation">
299
- <bd-p kind="regular">
300
- Use <strong>Tab</strong> to navigate between accordion items and <strong>Enter/Space</strong>
301
- to toggle them open and closed.
302
- </bd-p>
273
+ export const MultipleSections = {
274
+ name : 'Multiple Sections',
275
+ render: () => html`
276
+ <bd-accordion-section title="General Questions">
277
+ <bd-accordion-item title="What is Bitdefender?">
278
+ <p>Bitdefender is a global cybersecurity company founded in 2001.</p>
303
279
  </bd-accordion-item>
304
-
305
- <bd-accordion-item title="Screen Reader Support">
306
- <bd-p kind="regular">
307
- Proper ARIA attributes ensure screen readers can announce the accordion state and
308
- structure correctly.
309
- </bd-p>
280
+ <bd-accordion-item title="Where is Bitdefender based?">
281
+ <p>Bitdefender is headquartered in Bucharest, Romania.</p>
310
282
  </bd-accordion-item>
283
+ </bd-accordion-section>
311
284
 
312
- <bd-accordion-item title="Focus Management">
313
- <bd-p kind="regular">
314
- Clear focus indicators make it easy to track your position when navigating with a keyboard.
315
- </bd-p>
285
+ <bd-accordion-section
286
+ title="Technical Support"
287
+ guide-label="View Support Guide"
288
+ guide-href="/docs/support"
289
+ >
290
+ <bd-accordion-item title="How do I contact support?">
291
+ <p>You can reach support via live chat or email from your Central account.</p>
292
+ </bd-accordion-item>
293
+ <bd-accordion-item title="What are the support hours?">
294
+ <p>Support is available 24/7 for all premium plans.</p>
316
295
  </bd-accordion-item>
317
296
  </bd-accordion-section>
318
-
319
- <bd-p kind="small" style="color: #64748b; margin-top: 2rem;">
320
- Try using keyboard navigation to interact with the accordion above.
321
- </bd-p>
322
- </div>
323
- `;
324
- AccessibilityDemo.parameters = {
325
- docs: {
326
- description: {
327
- story: 'Accessibility demonstration showing keyboard navigation and screen reader support in the simple accordion component.'
297
+ `,
298
+ parameters: {
299
+ docs: {
300
+ description: {
301
+ story: 'Two separate `bd-accordion-section` components rendered sequentially — one without a guide link, one with.'
302
+ }
328
303
  }
329
304
  }
330
305
  };
331
306
 
332
- export const InteractivePlayground = BasicTemplate.bind({});
333
- InteractivePlayground.args = {
334
- title : 'Customize This Accordion',
335
- guideIcon : '',
336
- guideLabel: '',
337
- guideHref : '#'
338
- };
339
- InteractivePlayground.parameters = {
340
- docs: {
341
- description: {
342
- story: 'Interactive playground to test the simple accordion component with different configurations and properties.'
307
+ export const Playground = {
308
+ name: '🛝 Playground',
309
+ args: {
310
+ sectionTitle: 'FAQ Section',
311
+ guideLabel : 'View User Guide',
312
+ guideHref : '/docs/guide',
313
+ guideIcon : '/assets/user_guide.png',
314
+ itemTitle : 'Can I cancel anytime?',
315
+ open : false
316
+ },
317
+ render: (args) => html`
318
+ <bd-accordion-section
319
+ title="${args.sectionTitle}"
320
+ guide-label="${args.guideLabel}"
321
+ guide-href="${args.guideHref}"
322
+ guide-icon="${args.guideIcon}"
323
+ >
324
+ <bd-accordion-item title="${args.itemTitle}" ?open="${args.open}">
325
+ <p>Yes, you can cancel your subscription at any time from your Bitdefender Central account.</p>
326
+ </bd-accordion-item>
327
+ <bd-accordion-item title="Is there a free trial?">
328
+ <p>Yes, a 30-day free trial is available.</p>
329
+ </bd-accordion-item>
330
+ </bd-accordion-section>
331
+ `,
332
+ parameters: {
333
+ docs: {
334
+ description: {
335
+ story: 'Interactive playground. Adjust section title, guide link props, and the first item\'s title and open state via Controls.'
336
+ }
343
337
  }
344
338
  }
345
339
  };