@repobit/dex-system-design 0.23.32 → 0.23.33

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 (38) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +4 -4
  3. package/src/components/accordion/accordion-bg.css.js +12 -6
  4. package/src/components/accordion/accordion-bg.js +108 -28
  5. package/src/components/accordion/accordion-bg.stories.js +123 -3
  6. package/src/components/accordion/accordion.css.js +25 -15
  7. package/src/components/accordion/accordion.js +38 -29
  8. package/src/components/awards/awards-icon.js +4 -4
  9. package/src/components/awards/awards.css.js +4 -3
  10. package/src/components/awards/awards.js +88 -148
  11. package/src/components/awards/awards.stories.js +11 -51
  12. package/src/components/badge/badge.css.js +0 -17
  13. package/src/components/badge/badge.js +5 -2
  14. package/src/components/footer/footer.css.js +0 -17
  15. package/src/components/footer/footer.js +23 -17
  16. package/src/components/icons/analysis-icon.js +25 -0
  17. package/src/components/icons/arrow-down-icon.js +28 -0
  18. package/src/components/icons/arrow-up-icon.js +28 -0
  19. package/src/components/icons/av-comparatives-icon.js +34 -0
  20. package/src/components/icons/best-brands-icon.js +36 -0
  21. package/src/components/icons/close-icon.js +28 -0
  22. package/src/components/icons/family-icon.js +31 -0
  23. package/src/components/icons/globe-icon.js +28 -0
  24. package/src/components/icons/guide-icon.js +28 -0
  25. package/src/components/icons/icons.stories.js +226 -0
  26. package/src/components/icons/individual-icon.js +29 -0
  27. package/src/components/icons/laurel-icon.js +39 -0
  28. package/src/components/icons/machine-learning-icon.js +26 -0
  29. package/src/components/icons/minus-icon.js +6 -4
  30. package/src/components/icons/pc-mag-2024-icon.js +35 -0
  31. package/src/components/icons/pc-mag-business-icon.js +35 -0
  32. package/src/components/icons/pc-mag-icon.js +35 -0
  33. package/src/components/icons/pc-mag-readers-icon.js +34 -0
  34. package/src/components/icons/plus-icon.js +6 -4
  35. package/src/components/icons/top-product-icon.js +35 -0
  36. package/src/components/light-carousel/light-carousel.stories.js +523 -76
  37. package/src/components/paragraph/paragraph.css.js +1 -0
  38. package/src/components/paragraph/paragraph.js +34 -2
@@ -1,85 +1,532 @@
1
- import { html } from "lit";
2
- import "./light-carousel-simple.js";
3
- import "./light-carousel.js";
4
-
5
- import "../badge/badge.js";
1
+ import { html } from 'lit';
2
+ import '../badge/badge.js';
3
+ import './light-carousel-simple.js';
4
+ import './light-carousel.js';
6
5
 
7
6
  export default {
8
- title : "Components/Light Carousel",
9
- tags : ["autodocs"],
7
+ title : 'Components/LightCarousel',
8
+ tags : ['autodocs'],
9
+ parameters: {
10
+ docs: {
11
+ description: {
12
+ component: `
13
+ Two light carousel variants are available:
14
+
15
+ - \`<bd-light-carousel-section>\` — carousel with icon, title, optional badge, and slotted \`<bd-p>\` content
16
+ - \`<bd-light-carousel-simple-section>\` — simplified carousel with icon, title, and slotted content, no badge support
17
+
18
+ Both use corresponding item components:
19
+ - \`<bd-light-carousel-item>\` — for the standard variant
20
+ - \`<bd-light-carousel-simple-item>\` — for the simple variant
21
+
22
+ ### Usage
23
+ \`\`\`html
24
+ <bd-light-carousel-section title="Need help? We've got answers!">
25
+ <bd-light-carousel-item
26
+ title="How does Bitdefender protect me?"
27
+ icon="/assets/icon.png"
28
+ badge="FAQ"
29
+ >
30
+ <bd-p kind="small">Protection details here.</bd-p>
31
+ </bd-light-carousel-item>
32
+ </bd-light-carousel-section>
33
+ \`\`\`
34
+
35
+ ### Standard vs Simple
36
+ | Feature | bd-light-carousel-section | bd-light-carousel-simple-section |
37
+ |---|---|---|
38
+ | Badge support | Yes | No |
39
+ | Icon | Yes | Yes |
40
+ | Title | Yes | Yes |
41
+ | Slotted content | Yes | Yes |
42
+
43
+ ### Notes
44
+ - Both carousels are static layout — no scroll arrows, no drag behavior
45
+ - Items are displayed in a horizontal flex track
46
+ - \`badge\` on \`bd-light-carousel-item\` renders a \`<bd-badge>\` next to the title
47
+ `
48
+ }
49
+ }
50
+ },
10
51
  argTypes: {
11
- title: { control: "text" }
52
+ title: {
53
+ control : 'text',
54
+ description: 'Section title rendered as `<h1>` above the carousel track',
55
+ table : {
56
+ type : { summary: 'string' },
57
+ defaultValue: { summary: '' },
58
+ category : 'Content'
59
+ }
60
+ },
61
+ itemTitle: {
62
+ control : 'text',
63
+ description: 'Title for an individual carousel item',
64
+ table : {
65
+ type : { summary: 'string' },
66
+ defaultValue: { summary: '' },
67
+ category : 'Item'
68
+ }
69
+ },
70
+ badge: {
71
+ control : 'text',
72
+ description: '(Standard only) Badge text rendered as `<bd-badge>` next to the item title',
73
+ table : {
74
+ type : { summary: 'string' },
75
+ defaultValue: { summary: '' },
76
+ category : 'Item'
77
+ }
78
+ },
79
+ icon: {
80
+ control : 'text',
81
+ description: 'Path to the icon image shown at the top of the item card',
82
+ table : {
83
+ type : { summary: 'string' },
84
+ defaultValue: { summary: '' },
85
+ category : 'Item'
86
+ }
87
+ }
88
+ }
89
+ };
90
+
91
+ // ─── Standard Carousel Stories ─────────────────────────────────────────────
92
+
93
+ export const Default = {
94
+ name: 'Standard — Default',
95
+ args: {
96
+ title: "Need help? We've got answers!"
97
+ },
98
+ render: (args) => html`
99
+ <bd-light-carousel-section title="${args.title}">
100
+ <bd-light-carousel-item
101
+ title="How does Bitdefender Internet Security protect me?"
102
+ icon="/assets/light-carousel-img1.png"
103
+ badge="FAQ"
104
+ >
105
+ <bd-p kind="small">Bitdefender Internet Security provides the best protection...</bd-p>
106
+ <bd-p kind="small">Advanced AI and behavior-based detection ensure safety online and offline.</bd-p>
107
+ </bd-light-carousel-item>
108
+
109
+ <bd-light-carousel-item
110
+ title="How to install Bitdefender on another device?"
111
+ icon="/assets/light-carousel-img1.png"
112
+ >
113
+ <bd-p kind="small">You can install Bitdefender on other devices by logging into your Central account and using the 'My Devices' tab.</bd-p>
114
+ </bd-light-carousel-item>
115
+
116
+ <bd-light-carousel-item
117
+ title="Can I transfer my license to a new computer?"
118
+ icon="/assets/light-carousel-img1.png"
119
+ badge="How To"
120
+ >
121
+ <bd-p kind="small">Yes, just remove the license from the old device via Central and activate it on the new one.</bd-p>
122
+ </bd-light-carousel-item>
123
+ </bd-light-carousel-section>
124
+ `,
125
+ parameters: {
126
+ docs: {
127
+ description: {
128
+ story: 'Standard light carousel with three FAQ/How-To items. Two items have `badge` set, one does not.'
129
+ }
130
+ }
131
+ }
132
+ };
133
+
134
+ export const StandardNoTitle = {
135
+ name : 'Standard — No Title',
136
+ render: () => html`
137
+ <bd-light-carousel-section>
138
+ <bd-light-carousel-item
139
+ title="How does Bitdefender protect me?"
140
+ icon="/assets/light-carousel-img1.png"
141
+ badge="FAQ"
142
+ >
143
+ <bd-p kind="small">Bitdefender uses AI-powered threat detection to keep you safe.</bd-p>
144
+ </bd-light-carousel-item>
145
+ <bd-light-carousel-item
146
+ title="Can I use one license on multiple devices?"
147
+ icon="/assets/light-carousel-img1.png"
148
+ badge="Licensing"
149
+ >
150
+ <bd-p kind="small">Yes, depending on your plan you can protect multiple devices.</bd-p>
151
+ </bd-light-carousel-item>
152
+ </bd-light-carousel-section>
153
+ `,
154
+ parameters: {
155
+ docs: {
156
+ description: {
157
+ story: 'Standard carousel without a section `title` — the `<h1>` header is conditionally omitted.'
158
+ }
159
+ }
12
160
  }
13
161
  };
14
162
 
15
- const Template = (args) => html`
16
- <bd-light-carousel-section title="${args.title}">
17
- <bd-light-carousel-item
18
- title="How does Bitdefender Internet Security protect me?"
19
- icon="/assets/light-carousel-img1.png"
20
- badge="FAQ"
21
- >
22
- <bd-p kind="small">Bitdefender Internet Security provides the best protection...</bd-p>
23
- <bd-p kind="small">Advanced AI and behavior-based detection ensure safety online and offline.</bd-p>
24
- </bd-light-carousel-item>
25
-
26
- <bd-light-carousel-item
27
- title="How to install Bitdefender on another device?"
28
- icon="/assets/light-carousel-img1.png"
29
- >
30
- <bd-p kind="small">You can install Bitdefender on other devices by logging into your Central account and using the 'My Devices' tab.</bd-p>
31
- </bd-light-carousel-item>
32
-
33
- <bd-light-carousel-item
34
- title="Can I transfer my license to a new computer?"
35
- icon="/assets/light-carousel-img1.png"
36
- badge="How To"
37
- >
38
- <bd-p kind="small">Yes, just remove the license from the old device via Central and activate it on the new one.</bd-p>
39
- </bd-light-carousel-item>
40
- </bd-light-carousel-section>
41
- `;
42
-
43
- export const Default = Template.bind({});
44
- Default.args = {
45
- title: "Need help? We've got answers!"
163
+ export const StandardNoBadges = {
164
+ name : 'Standard — No Badges',
165
+ render: () => html`
166
+ <bd-light-carousel-section title="Frequently Asked Questions">
167
+ <bd-light-carousel-item
168
+ title="What is included in my plan?"
169
+ icon="/assets/light-carousel-img1.png"
170
+ >
171
+ <bd-p kind="small">All core features are included in every Bitdefender plan.</bd-p>
172
+ </bd-light-carousel-item>
173
+ <bd-light-carousel-item
174
+ title="How do I renew my subscription?"
175
+ icon="/assets/light-carousel-img1.png"
176
+ >
177
+ <bd-p kind="small">You can renew from your Bitdefender Central account at any time.</bd-p>
178
+ </bd-light-carousel-item>
179
+ <bd-light-carousel-item
180
+ title="Is there a free trial available?"
181
+ icon="/assets/light-carousel-img1.png"
182
+ >
183
+ <bd-p kind="small">Yes, a 30-day free trial is available for most Bitdefender products.</bd-p>
184
+ </bd-light-carousel-item>
185
+ </bd-light-carousel-section>
186
+ `,
187
+ parameters: {
188
+ docs: {
189
+ description: {
190
+ story: 'Standard carousel items with no `badge` prop set — only icons and titles are shown in the header.'
191
+ }
192
+ }
193
+ }
46
194
  };
47
195
 
48
- const TemplateSimple = (args) => html`
49
- <bd-light-carousel-simple-section title="${args.title}">
50
- <bd-light-carousel-simple-item
51
- title="Scam Copilot Chatbot"
52
- icon="/assets/light-carousel-img1.png"
53
- >
54
- <bd-p kind="small">
55
- Specialized AI chatbot that helps you identify suspicious online
56
- interactions so you don't become a victim.
57
- </bd-p>
58
- </bd-light-carousel-simple-item>
59
-
60
- <bd-light-carousel-simple-item
61
- title="Scam Wave Alerts"
62
- icon="/assets/light-carousel-img1.png"
63
- >
64
- <bd-p kind="small">
65
- Stay informed with real-time alerts about ongoing scam outbreaks
66
- detected in your area automatically.
67
- </bd-p>
68
- </bd-light-carousel-simple-item>
69
-
70
- <bd-light-carousel-simple-item
71
- title="Online Scam Protection"
72
- icon="/assets/light-carousel-img1.png"
73
- >
74
- <bd-p kind="small">
75
- Focused on browsing activities, it specializes in detecting the newest
76
- scam patterns and tactics.
77
- </bd-p>
78
- </bd-light-carousel-simple-item>
79
- </bd-light-carousel-simple-section>
80
- `;
81
-
82
- export const Simple = TemplateSimple.bind({});
83
- Simple.args = {
84
- title: "Our AI-powered platform that detects and fights scams. In real time."
196
+ export const StandardNoIcons = {
197
+ name : 'Standard — No Icons',
198
+ render: () => html`
199
+ <bd-light-carousel-section title="Help Topics">
200
+ <bd-light-carousel-item title="Installation Guide" badge="Guide">
201
+ <bd-p kind="small">Step-by-step installation instructions for all platforms.</bd-p>
202
+ </bd-light-carousel-item>
203
+ <bd-light-carousel-item title="Billing & Payments" badge="Account">
204
+ <bd-p kind="small">Everything you need to know about your subscription billing.</bd-p>
205
+ </bd-light-carousel-item>
206
+ <bd-light-carousel-item title="Technical Support" badge="Support">
207
+ <bd-p kind="small">Contact our support team for technical issues.</bd-p>
208
+ </bd-light-carousel-item>
209
+ </bd-light-carousel-section>
210
+ `,
211
+ parameters: {
212
+ docs: {
213
+ description: {
214
+ story: 'Standard items without `icon` prop — the `<img>` is conditionally omitted from each item header.'
215
+ }
216
+ }
217
+ }
218
+ };
219
+
220
+ export const StandardSingleItem = {
221
+ name : 'Standard — Single Item (edge case)',
222
+ render: () => html`
223
+ <bd-light-carousel-section title="Quick Answer">
224
+ <bd-light-carousel-item
225
+ title="How do I contact support?"
226
+ icon="/assets/light-carousel-img1.png"
227
+ badge="Support"
228
+ >
229
+ <bd-p kind="small">You can reach our support team 24/7 via live chat or email from your Central account.</bd-p>
230
+ </bd-light-carousel-item>
231
+ </bd-light-carousel-section>
232
+ `,
233
+ parameters: {
234
+ docs: {
235
+ description: {
236
+ story: 'Edge case: only one item in the standard carousel section.'
237
+ }
238
+ }
239
+ }
240
+ };
241
+
242
+ export const StandardRichContent = {
243
+ name : 'Standard — Rich Slotted Content',
244
+ render: () => html`
245
+ <bd-light-carousel-section title="Plan Details">
246
+ <bd-light-carousel-item
247
+ title="What's included in Total Security?"
248
+ icon="/assets/light-carousel-img1.png"
249
+ badge="Features"
250
+ >
251
+ <bd-p kind="small">Total Security includes:</bd-p>
252
+ <ul style="font-size:13px; padding-left:16px; margin:4px 0;">
253
+ <li>Antivirus & anti-malware</li>
254
+ <li>Unlimited VPN</li>
255
+ <li>Password Manager</li>
256
+ <li>Parental Controls</li>
257
+ </ul>
258
+ </bd-light-carousel-item>
259
+ <bd-light-carousel-item
260
+ title="Supported platforms"
261
+ icon="/assets/light-carousel-img1.png"
262
+ badge="Compatibility"
263
+ >
264
+ <bd-p kind="small">Available on Windows, macOS, Android, and iOS.</bd-p>
265
+ <bd-p kind="small">Visit <a href="#">our compatibility page</a> for full details.</bd-p>
266
+ </bd-light-carousel-item>
267
+ </bd-light-carousel-section>
268
+ `,
269
+ parameters: {
270
+ docs: {
271
+ description: {
272
+ story: 'Items with rich slotted content: lists, multiple paragraphs, and anchor links.'
273
+ }
274
+ }
275
+ }
276
+ };
277
+
278
+ // ─── Simple Carousel Stories ───────────────────────────────────────────────
279
+
280
+ export const Simple = {
281
+ name: 'Simple — Default',
282
+ args: {
283
+ title: "Our AI-powered platform that detects and fights scams. In real time."
284
+ },
285
+ render: (args) => html`
286
+ <bd-light-carousel-simple-section title="${args.title}">
287
+ <bd-light-carousel-simple-item
288
+ title="Scam Copilot Chatbot"
289
+ icon="/assets/light-carousel-img1.png"
290
+ >
291
+ <bd-p kind="small">
292
+ Specialized AI chatbot that helps you identify suspicious online
293
+ interactions so you don't become a victim.
294
+ </bd-p>
295
+ </bd-light-carousel-simple-item>
296
+
297
+ <bd-light-carousel-simple-item
298
+ title="Scam Wave Alerts"
299
+ icon="/assets/light-carousel-img1.png"
300
+ >
301
+ <bd-p kind="small">
302
+ Stay informed with real-time alerts about ongoing scam outbreaks
303
+ detected in your area automatically.
304
+ </bd-p>
305
+ </bd-light-carousel-simple-item>
306
+
307
+ <bd-light-carousel-simple-item
308
+ title="Online Scam Protection"
309
+ icon="/assets/light-carousel-img1.png"
310
+ >
311
+ <bd-p kind="small">
312
+ Focused on browsing activities, it specializes in detecting the newest
313
+ scam patterns and tactics.
314
+ </bd-p>
315
+ </bd-light-carousel-simple-item>
316
+ </bd-light-carousel-simple-section>
317
+ `,
318
+ parameters: {
319
+ docs: {
320
+ description: {
321
+ story: 'Simple light carousel with three scam protection feature items. No badge support in this variant.'
322
+ }
323
+ }
324
+ }
325
+ };
326
+
327
+ export const SimpleNoTitle = {
328
+ name : 'Simple — No Title',
329
+ render: () => html`
330
+ <bd-light-carousel-simple-section>
331
+ <bd-light-carousel-simple-item
332
+ title="Scam Copilot Chatbot"
333
+ icon="/assets/light-carousel-img1.png"
334
+ >
335
+ <bd-p kind="small">AI chatbot that helps you identify suspicious online interactions.</bd-p>
336
+ </bd-light-carousel-simple-item>
337
+ <bd-light-carousel-simple-item
338
+ title="Real-time Alerts"
339
+ icon="/assets/light-carousel-img1.png"
340
+ >
341
+ <bd-p kind="small">Get notified instantly about scam outbreaks in your area.</bd-p>
342
+ </bd-light-carousel-simple-item>
343
+ </bd-light-carousel-simple-section>
344
+ `,
345
+ parameters: {
346
+ docs: {
347
+ description: {
348
+ story: 'Simple carousel without a section title — header omitted.'
349
+ }
350
+ }
351
+ }
352
+ };
353
+
354
+ export const SimpleNoIcons = {
355
+ name : 'Simple — No Icons',
356
+ render: () => html`
357
+ <bd-light-carousel-simple-section title="Protection Features">
358
+ <bd-light-carousel-simple-item title="Scam Detection">
359
+ <bd-p kind="small">AI-powered scam detection across all browsing activities.</bd-p>
360
+ </bd-light-carousel-simple-item>
361
+ <bd-light-carousel-simple-item title="Wave Alerts">
362
+ <bd-p kind="small">Real-time alerts about scam outbreaks in your area.</bd-p>
363
+ </bd-light-carousel-simple-item>
364
+ <bd-light-carousel-simple-item title="Online Protection">
365
+ <bd-p kind="small">Continuous protection against the latest scam patterns.</bd-p>
366
+ </bd-light-carousel-simple-item>
367
+ </bd-light-carousel-simple-section>
368
+ `,
369
+ parameters: {
370
+ docs: {
371
+ description: {
372
+ story: 'Simple items without `icon` prop — only titles and slotted content are rendered.'
373
+ }
374
+ }
375
+ }
376
+ };
377
+
378
+ export const SimpleSingleItem = {
379
+ name : 'Simple — Single Item (edge case)',
380
+ render: () => html`
381
+ <bd-light-carousel-simple-section title="Key Feature">
382
+ <bd-light-carousel-simple-item
383
+ title="Scam Copilot Chatbot"
384
+ icon="/assets/light-carousel-img1.png"
385
+ >
386
+ <bd-p kind="small">AI chatbot specialized in identifying suspicious online interactions.</bd-p>
387
+ </bd-light-carousel-simple-item>
388
+ </bd-light-carousel-simple-section>
389
+ `,
390
+ parameters: {
391
+ docs: {
392
+ description: {
393
+ story: 'Edge case: only one item in the simple carousel.'
394
+ }
395
+ }
396
+ }
397
+ };
398
+
399
+ // ─── Side-by-Side Comparison ───────────────────────────────────────────────
400
+
401
+ export const BothVariants = {
402
+ name : 'Both Variants Side by Side',
403
+ render: () => html`
404
+ <div style="display:flex; flex-direction:column; gap:48px;">
405
+ <div>
406
+ <p style="font-weight:600; font-size:14px; margin-bottom:8px; color:#026DFF;">Standard (with badge support)</p>
407
+ <bd-light-carousel-section title="Help & FAQ">
408
+ <bd-light-carousel-item title="How do I install?" icon="/assets/light-carousel-img1.png" badge="FAQ">
409
+ <bd-p kind="small">Download from Central and follow the setup wizard.</bd-p>
410
+ </bd-light-carousel-item>
411
+ <bd-light-carousel-item title="How do I renew?" icon="/assets/light-carousel-img1.png" badge="Account">
412
+ <bd-p kind="small">Renew anytime from your Bitdefender Central account.</bd-p>
413
+ </bd-light-carousel-item>
414
+ </bd-light-carousel-section>
415
+ </div>
416
+ <div>
417
+ <p style="font-weight:600; font-size:14px; margin-bottom:8px; color:#026DFF;">Simple (no badge)</p>
418
+ <bd-light-carousel-simple-section title="AI Features">
419
+ <bd-light-carousel-simple-item title="Scam Copilot" icon="/assets/light-carousel-img1.png">
420
+ <bd-p kind="small">AI chatbot that detects suspicious interactions.</bd-p>
421
+ </bd-light-carousel-simple-item>
422
+ <bd-light-carousel-simple-item title="Wave Alerts" icon="/assets/light-carousel-img1.png">
423
+ <bd-p kind="small">Real-time scam outbreak notifications.</bd-p>
424
+ </bd-light-carousel-simple-item>
425
+ </bd-light-carousel-simple-section>
426
+ </div>
427
+ </div>
428
+ `,
429
+ parameters: {
430
+ docs: {
431
+ description: {
432
+ story: 'Both carousel variants rendered side by side. The standard variant supports badges; the simple variant does not.'
433
+ }
434
+ }
435
+ }
436
+ };
437
+
438
+ export const MobileView = {
439
+ name : 'Mobile View (375px)',
440
+ render: () => html`
441
+ <bd-light-carousel-section title="Need help? We've got answers!">
442
+ <bd-light-carousel-item
443
+ title="How does Bitdefender protect me?"
444
+ icon="/assets/light-carousel-img1.png"
445
+ badge="FAQ"
446
+ >
447
+ <bd-p kind="small">AI and behavior-based detection keep you safe online and offline.</bd-p>
448
+ </bd-light-carousel-item>
449
+ <bd-light-carousel-item
450
+ title="How to install on another device?"
451
+ icon="/assets/light-carousel-img1.png"
452
+ badge="How To"
453
+ >
454
+ <bd-p kind="small">Log into Central and use the My Devices tab to install on more devices.</bd-p>
455
+ </bd-light-carousel-item>
456
+ </bd-light-carousel-section>
457
+ `,
458
+ parameters: {
459
+ viewport: { defaultViewport: 'mobile1' },
460
+ docs : {
461
+ description: {
462
+ story: 'Standard carousel at 375px. Tests item sizing, icon scaling, and track overflow on mobile.'
463
+ }
464
+ }
465
+ }
466
+ };
467
+
468
+ export const PlaygroundStandard = {
469
+ name: '🛝 Playground — Standard',
470
+ args: {
471
+ title : "Need help? We've got answers!",
472
+ itemTitle: 'How does Bitdefender protect me?',
473
+ badge : 'FAQ',
474
+ icon : '/assets/light-carousel-img1.png'
475
+ },
476
+ render: (args) => html`
477
+ <bd-light-carousel-section title="${args.title}">
478
+ <bd-light-carousel-item
479
+ title="${args.itemTitle}"
480
+ icon="${args.icon}"
481
+ badge="${args.badge}"
482
+ >
483
+ <bd-p kind="small">Bitdefender uses AI-powered detection to keep you safe online and offline.</bd-p>
484
+ </bd-light-carousel-item>
485
+ <bd-light-carousel-item
486
+ title="How do I renew my subscription?"
487
+ icon="${args.icon}"
488
+ >
489
+ <bd-p kind="small">You can renew from your Bitdefender Central account at any time.</bd-p>
490
+ </bd-light-carousel-item>
491
+ </bd-light-carousel-section>
492
+ `,
493
+ parameters: {
494
+ docs: {
495
+ description: {
496
+ story: 'Interactive playground for the standard carousel. Adjust section title, item title, badge, and icon via Controls.'
497
+ }
498
+ }
499
+ }
500
+ };
501
+
502
+ export const PlaygroundSimple = {
503
+ name: '🛝 Playground — Simple',
504
+ args: {
505
+ title : 'Our AI-powered platform that detects and fights scams. In real time.',
506
+ itemTitle: 'Scam Copilot Chatbot',
507
+ icon : '/assets/light-carousel-img1.png'
508
+ },
509
+ render: (args) => html`
510
+ <bd-light-carousel-simple-section title="${args.title}">
511
+ <bd-light-carousel-simple-item
512
+ title="${args.itemTitle}"
513
+ icon="${args.icon}"
514
+ >
515
+ <bd-p kind="small">Specialized AI chatbot that helps you identify suspicious online interactions.</bd-p>
516
+ </bd-light-carousel-simple-item>
517
+ <bd-light-carousel-simple-item
518
+ title="Scam Wave Alerts"
519
+ icon="${args.icon}"
520
+ >
521
+ <bd-p kind="small">Real-time alerts about ongoing scam outbreaks detected in your area.</bd-p>
522
+ </bd-light-carousel-simple-item>
523
+ </bd-light-carousel-simple-section>
524
+ `,
525
+ parameters: {
526
+ docs: {
527
+ description: {
528
+ story: 'Interactive playground for the simple carousel. Adjust section title, item title, and icon via Controls.'
529
+ }
530
+ }
531
+ }
85
532
  };
@@ -3,6 +3,7 @@ import { css } from "lit";
3
3
  export default css`
4
4
  :host {
5
5
  display: block;
6
+ color: var(--color-neutral-1000);
6
7
  }
7
8
 
8
9
  p {
@@ -4,16 +4,48 @@ import paragraphCSS from "./paragraph.css.js";
4
4
 
5
5
  export class BdP extends LitElement {
6
6
  static properties = {
7
- kind: { type: String, reflect: true }
7
+ kind : { type: String, reflect: true },
8
+ padding : { type: String },
9
+ paddingBottom: { type: String },
10
+ paddingTop : { type: String }
11
+
8
12
  };
9
13
 
10
14
  constructor() {
11
15
  super();
12
16
  this.kind = "regular";
17
+ this.padding = "";
18
+ this.paddingBottom = "";
19
+ this.paddingTop = "";
20
+
21
+ }
22
+
23
+ _getKindClass() {
24
+ switch (this.kind) {
25
+ case "small":
26
+ return "bd-paragraph--small";
27
+ case "regular":
28
+ return "bd-paragraph--regular";
29
+ case "large":
30
+ return "bd-paragraph--large";
31
+ default:
32
+ return "bd-paragraph--regular";
33
+ }
13
34
  }
14
35
 
15
36
  render() {
16
- return html`<p><slot></slot></p>`;
37
+ const styles = [];
38
+ if (this.padding) styles.push(`padding: ${this.padding};`);
39
+ if (this.paddingBottom) styles.push(`padding-bottom: ${this.paddingBottom};`);
40
+ if (this.paddingTop) styles.push(`padding-top: ${this.paddingTop};`);
41
+
42
+ const kindClass = this._getKindClass();
43
+
44
+ return html`
45
+ <p class="bd-paragraph ${kindClass}" style="${styles.join(' ')}">
46
+ <slot></slot>
47
+ </p>
48
+ `;
17
49
  }
18
50
 
19
51
  static styles = [tokens, paragraphCSS];