@repobit/dex-system-design 0.23.31 → 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.
- package/CHANGELOG.md +14 -0
- package/package.json +4 -4
- package/src/components/accordion/accordion-bg.css.js +12 -6
- package/src/components/accordion/accordion-bg.js +108 -28
- package/src/components/accordion/accordion-bg.stories.js +123 -3
- package/src/components/accordion/accordion.css.js +25 -15
- package/src/components/accordion/accordion.js +38 -29
- package/src/components/awards/awards-icon.js +4 -4
- package/src/components/awards/awards.css.js +4 -3
- package/src/components/awards/awards.js +88 -148
- package/src/components/awards/awards.stories.js +11 -51
- package/src/components/badge/badge.css.js +0 -17
- package/src/components/badge/badge.js +5 -2
- package/src/components/footer/footer.css.js +0 -17
- package/src/components/footer/footer.js +23 -17
- package/src/components/icons/analysis-icon.js +25 -0
- package/src/components/icons/arrow-down-icon.js +28 -0
- package/src/components/icons/arrow-up-icon.js +28 -0
- package/src/components/icons/av-comparatives-icon.js +34 -0
- package/src/components/icons/best-brands-icon.js +36 -0
- package/src/components/icons/close-icon.js +28 -0
- package/src/components/icons/family-icon.js +31 -0
- package/src/components/icons/globe-icon.js +28 -0
- package/src/components/icons/guide-icon.js +28 -0
- package/src/components/icons/icons.stories.js +226 -0
- package/src/components/icons/individual-icon.js +29 -0
- package/src/components/icons/laurel-icon.js +39 -0
- package/src/components/icons/machine-learning-icon.js +26 -0
- package/src/components/icons/minus-icon.js +6 -4
- package/src/components/icons/pc-mag-2024-icon.js +35 -0
- package/src/components/icons/pc-mag-business-icon.js +35 -0
- package/src/components/icons/pc-mag-icon.js +35 -0
- package/src/components/icons/pc-mag-readers-icon.js +34 -0
- package/src/components/icons/plus-icon.js +6 -4
- package/src/components/icons/top-product-icon.js +35 -0
- package/src/components/light-carousel/light-carousel.stories.js +523 -76
- package/src/components/paragraph/paragraph.css.js +1 -0
- package/src/components/paragraph/paragraph.js +34 -2
|
@@ -1,85 +1,532 @@
|
|
|
1
|
-
import { html } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
|
9
|
-
tags
|
|
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: {
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
</bd-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
};
|
|
@@ -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
|
-
|
|
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];
|