@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
@@ -2,439 +2,214 @@ import { html } from 'lit';
2
2
  import './footer.js';
3
3
 
4
4
  export default {
5
- title : 'Components/Footer/BdFooter',
6
- component : 'bd-footer',
7
- subcomponents: {
8
- 'bd-footer-nav' : 'bd-footer-nav',
9
- 'bd-footer-links-group': 'bd-footer-links-group'
10
- },
5
+ title : 'Components/Footer',
11
6
  tags : ['autodocs'],
12
7
  parameters: {
13
- layout: 'fullscreen',
14
- docs : {
8
+ docs: {
15
9
  description: {
16
- component: 'A comprehensive footer component with multi-language support, organized link sections, and responsive layout. Perfect for corporate websites with international audiences.'
10
+ component: `
11
+ **BdFooter** is a full Lit footer component with locale detection, country selector, social links, nav slots, and responsive behavior.
12
+
13
+ ### Usage
14
+ \`\`\`html
15
+ <bd-footer current-locale="en">
16
+ <bd-footer-nav-menu slot="nav">...</bd-footer-nav-menu>
17
+ <bd-footer-links-group slot="quick-links" title="Products">
18
+ <bd-link href="/antivirus">Antivirus</bd-link>
19
+ </bd-footer-links-group>
20
+ <div slot="secondary-nav">...</div>
21
+ <div slot="address">123 Main Street, San Antonio, TX</div>
22
+ </bd-footer>
23
+ \`\`\`
24
+
25
+ ### Slots
26
+ | Slot | Description |
27
+ |---|---|
28
+ | \`logo\` | Footer logo (defaults to BD logo asset) |
29
+ | \`top-right\` | Masterbrand image area |
30
+ | \`nav\` | Main footer navigation |
31
+ | \`quick-links\` | Link group columns |
32
+ | \`social-links\` | Social media icon links |
33
+ | \`secondary-nav\` | Legal/policy links, Impressum (shown for de/de-de) |
34
+ | \`address\` | Physical address block |
35
+ | \`copyright\` | Copyright text |
36
+ | \`anpc\` | Romanian ANPC compliance image |
37
+
38
+ ### Responsive Behavior
39
+ | Width | Behavior |
40
+ |---|---|
41
+ | \`≤ 767px\` | Mobile layout, extra dividers, mobile masterbrand image |
42
+ | \`> 767px\` | Desktop layout |
43
+
44
+ ### Country Selector
45
+ - Clicking the country toggle opens a 3-column country grid
46
+ - Selecting a country navigates to \`/{locale}/\`
47
+ - Locale is auto-detected from \`window.location.pathname\`
48
+
49
+ ### Locale-specific Features
50
+ - \`de\` / \`de-de\`: Shows Impressum link in secondary nav
51
+ - \`ro*\`: Shows ANPC compliance image
52
+ `
17
53
  }
18
54
  }
19
55
  },
20
56
  argTypes: {
57
+ currentLocale: {
58
+ control : 'text',
59
+ description: 'Active locale code. Affects nav link paths and locale-specific features.',
60
+ table : { type: { summary: 'string' }, defaultValue: { summary: 'en' }, category: 'Locale' }
61
+ },
21
62
  maxColumnsPerRow: {
22
- control : { type: 'number', min: 1, max: 4 },
23
- description: 'Maximum number of columns per row in the quick links section',
24
- table : {
25
- type : { summary: 'number' },
26
- defaultValue: { summary: '3' }
27
- }
63
+ control : 'number',
64
+ description: 'Max columns per row in the quick-links grid',
65
+ table : { type: { summary: 'number' }, defaultValue: { summary: '2' }, category: 'Layout' }
28
66
  }
29
67
  }
30
68
  };
31
69
 
32
- export const Default = () => html`
33
- <bd-footer maxColumnsPerRow="3">
34
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
35
- <a href="/en/consumer/">For Consumer</a>
36
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
37
- <a href="/en/small-business/">For Small Business</a>
38
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
39
- <a href="/en/business/">For Enterprise</a>
40
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
41
- <a href="/en/partners/">For Partners</a>
42
- </bd-footer-nav>
43
- <bd-footer-links-group slot="quick-links" title="Quick links">
44
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
45
- <a href="https://gravityzone.bitdefender.com/">GravityZone Cloud Control Center</a>
46
- <a href="https://www.bitdefender.com/en-us/cyberpedia/">Bitdefender Cyberpedia</a>
47
- <a href="https://pan.bitdefender.com/partners/save/">Partner Advantage Network Portal</a>
48
- <a href="https://brand.bitdefender.com/point/en/bitdefenderhub/component/default/">Brand Portal</a>
49
- </bd-footer-links-group>
50
-
51
- <bd-footer-links-group slot="quick-links">
52
- <a href="https://www.bitdefender.com/consumer/support/">Support for Home Products</a>
53
- <a href="https://www.bitdefender.com/business/support/">Support for Business Products</a>
54
- <a href="/company/">Investors</a>
55
- <a href="/company/job-opportunities/">Careers</a>
56
- <a href="/business/infozone/">InfoZone</a>
57
- </bd-footer-links-group>
58
-
59
- <bd-footer-nav slot="secondary-nav">
60
- <a href="/legal/">Legal Information</a>
61
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
62
- <a href="/site/view/legal-privacy-policy-for-bitdefender-websites/">Privacy Policy</a>
63
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
64
- <a href="/sitemap/">Site Map</a>
65
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
66
- <a href="/company/">Company</a>
67
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
68
- <a href="https://www.bitdefender.com/consumer/support/">Contact Us</a>
69
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
70
- <a href="#">Privacy Settings</a>
71
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
72
- <a href="#" class="impressum-link">Impressum</a>
73
- </bd-footer-nav>
74
- </bd-footer>
70
+ const quickLinks = html`
71
+ <bd-footer-links-group slot="quick-links" title="Products">
72
+ <bd-link href="/antivirus" kind="light">Antivirus</bd-link>
73
+ <bd-link href="/total-security" kind="light">Total Security</bd-link>
74
+ <bd-link href="/vpn" kind="light">VPN</bd-link>
75
+ </bd-footer-links-group>
76
+ <bd-footer-links-group slot="quick-links" title="Support">
77
+ <bd-link href="/support" kind="light">Help Center</bd-link>
78
+ <bd-link href="/contact" kind="light">Contact Us</bd-link>
79
+ <bd-link href="/community" kind="light">Community</bd-link>
80
+ </bd-footer-links-group>
75
81
  `;
76
- Default.parameters = {
77
- docs: {
78
- description: {
79
- story: 'Default English footer with complete navigation structure. Includes main audience navigation, quick links sections, and secondary legal links with proper vertical dividers.'
80
- }
81
- }
82
- };
83
82
 
84
- export const Romanian = () => html`
85
- <bd-footer maxColumnsPerRow="3">
86
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
87
- <a href="/ro-ro/consumer/">Pentru Consumatori</a>
88
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
89
- <a href="/ro-ro/small-business/">Pentru Afaceri Mici</a>
90
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
91
- <a href="/ro-ro/business/">Pentru Întreprinderi</a>
92
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
93
- <a href="/ro-ro/partners/">Pentru Parteneri</a>
94
- </bd-footer-nav>
95
-
96
- <bd-footer-links-group slot="quick-links" title="Linkuri rapide">
97
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
98
- <a href="https://gravityzone.bitdefender.com/">GravityZone Cloud Control Center</a>
99
- <a href="https://www.bitdefender.com/ro-ro/cyberpedia/">Bitdefender Cyberpedia</a>
100
- <a href="https://pan.bitdefender.com/partners/save/">Partner Advantage Network Portal</a>
101
- <a href="https://brand.bitdefender.com/point/en/bitdefenderhub/component/default/">Brand Portal</a>
102
- </bd-footer-links-group>
83
+ // ─── Stories ───────────────────────────────────────────────────────────────
103
84
 
104
- <bd-footer-links-group slot="quick-links">
105
- <a href="https://www.bitdefender.com/consumer/support/">Suport pentru Produse Casnice</a>
106
- <a href="https://www.bitdefender.com/business/support/">Suport pentru Produse Business</a>
107
- <a href="/company/">Investitori</a>
108
- <a href="/company/job-opportunities/">Cariere</a>
109
- <a href="/business/infozone/">InfoZone</a>
110
- </bd-footer-links-group>
111
-
112
- <bd-footer-nav slot="secondary-nav">
113
- <a href="/legal/">Informații Legale</a>
114
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
115
- <a href="/site/view/legal-privacy-policy-for-bitdefender-websites/">Politica de Confidențialitate</a>
116
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
117
- <a href="/sitemap/">Harta Site</a>
118
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
119
- <a href="/company/">Companie</a>
120
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
121
- <a href="https://www.bitdefender.com/consumer/support/">Contactați-ne</a>
122
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
123
- <a href="#">Setări Confidențialitate</a>
124
- </bd-footer-nav>
125
- </bd-footer>
126
- `;
127
- Romanian.parameters = {
128
- docs: {
129
- description: {
130
- story: 'Romanian language footer with localized content. Demonstrates internationalization support with proper Romanian translations for all navigation items and link groups.'
131
- }
132
- }
85
+ export const Default = {
86
+ name : 'Default (English)',
87
+ render: () => html`
88
+ <bd-footer current-locale="en">
89
+ ${quickLinks}
90
+ </bd-footer>
91
+ `,
92
+ parameters: { docs: { description: { story: 'Default English locale footer with quick links. Social links use default slot values.' } } }
133
93
  };
134
94
 
135
- export const German = () => html`
136
- <bd-footer maxColumnsPerRow="3">
137
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
138
- <a href="/de-de/consumer/">Für Verbraucher</a>
139
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
140
- <a href="/de-de/small-business/">Für Kleinunternehmen</a>
141
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
142
- <a href="/de-de/business/">Für Unternehmen</a>
143
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
144
- <a href="/de-de/partners/">Für Partner</a>
145
- </bd-footer-nav>
146
-
147
- <bd-footer-links-group slot="quick-links" title="Schnelllinks">
148
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
149
- <a href="https://gravityzone.bitdefender.com/">GravityZone Cloud Control Center</a>
150
- <a href="https://www.bitdefender.com/de-de/cyberpedia/">Bitdefender Cyberpedia</a>
151
- <a href="https://pan.bitdefender.com/partners/save/">Partner Advantage Network Portal</a>
152
- <a href="https://brand.bitdefender.com/point/en/bitdefenderhub/component/default/">Brand Portal</a>
153
- </bd-footer-links-group>
154
-
155
- <bd-footer-links-group slot="quick-links">
156
- <a href="https://www.bitdefender.com/consumer/support/">Support für Home-Produkte</a>
157
- <a href="https://www.bitdefender.com/business/support/">Support für Business-Produkte</a>
158
- <a href="/company/">Investoren</a>
159
- <a href="/company/job-opportunities/">Karriere</a>
160
- <a href="/business/infozone/">InfoZone</a>
161
- </bd-footer-links-group>
162
-
163
- <bd-footer-nav slot="secondary-nav">
164
- <a href="/legal/">Rechtliche Informationen</a>
165
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
166
- <a href="/site/view/legal-privacy-policy-for-bitdefender-websites/">Datenschutzrichtlinie</a>
167
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
168
- <a href="/sitemap/">Sitemap</a>
169
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
170
- <a href="/company/">Unternehmen</a>
171
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
172
- <a href="https://www.bitdefender.com/consumer/support/">Kontakt</a>
173
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
174
- <a href="#">Datenschutzeinstellungen</a>
175
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
176
- <a href="#" class="impressum-link">Impressum</a>
177
- </bd-footer-nav>
178
- </bd-footer>
179
- `;
180
- German.parameters = {
181
- docs: {
182
- description: {
183
- story: 'German language footer with complete localization. Includes German-specific legal requirements like Impressum and proper translations for all user-facing text.'
184
- }
185
- }
95
+ export const RomanianLocale = {
96
+ name : 'Romanian Locale (ro)',
97
+ render: () => html`
98
+ <bd-footer current-locale="ro">
99
+ ${quickLinks}
100
+ </bd-footer>
101
+ `,
102
+ parameters: { docs: { description: { story: '`current-locale="ro"` — ANPC compliance image is shown in the footer extras.' } } }
186
103
  };
187
104
 
188
- export const WithDividers = () => html`
189
- <div>
190
- <bd-footer maxColumnsPerRow="3">
191
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
192
- <a href="/en/consumer/">For Consumer</a>
193
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
194
- <a href="/en/small-business/">For Small Business</a>
195
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
196
- <a href="/en/business/">For Enterprise</a>
197
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
198
- <a href="/en/partners/">For Partners</a>
199
- </bd-footer-nav>
200
-
201
- <bd-footer-links-group slot="quick-links" title="Quick links">
202
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
203
- <a href="https://gravityzone.bitdefender.com/">GravityZone Cloud Control Center</a>
204
- </bd-footer-links-group>
205
-
206
- <bd-footer-nav slot="secondary-nav">
207
- <a href="/legal/">Legal Information</a>
208
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
209
- <a href="/privacy/">Privacy Policy</a>
210
- </bd-footer-nav>
105
+ export const GermanLocale = {
106
+ name : 'German Locale (de)',
107
+ render: () => html`
108
+ <bd-footer current-locale="de">
109
+ ${quickLinks}
110
+ <div slot="secondary-nav">
111
+ <bd-link href="/privacy" kind="secondary">Privacy Policy</bd-link>
112
+ <bd-divider-vertical></bd-divider-vertical>
113
+ <bd-link href="/terms" kind="secondary">Terms</bd-link>
114
+ <bd-divider-vertical class="impressum-link"></bd-divider-vertical>
115
+ <bd-link href="/impressum" kind="secondary" class="impressum-link">Impressum</bd-link>
116
+ </div>
211
117
  </bd-footer>
212
-
213
- <bd-divider-horizontal width="95%"></bd-divider-horizontal>
214
- <bd-divider-horizontal width="95%"></bd-divider-horizontal>
215
- <bd-divider-horizontal width="95%"></bd-divider-horizontal>
216
- <bd-divider-horizontal width="95%"></bd-divider-horizontal>
217
- </div>
218
- `;
219
- WithDividers.parameters = {
220
- docs: {
221
- description: {
222
- story: 'Footer demonstration with additional horizontal dividers. Shows how the footer integrates with other divider components to create visual separation in page layouts.'
223
- }
224
- }
118
+ `,
119
+ parameters: { docs: { description: { story: '`current-locale="de"` — Impressum link is visible in the secondary nav.' } } }
225
120
  };
226
121
 
227
- export const MinimalFooter = () => html`
228
- <bd-footer maxColumnsPerRow="2">
229
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
230
- <a href="/en/consumer/">For Consumer</a>
231
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
232
- <a href="/en/business/">For Business</a>
233
- </bd-footer-nav>
234
-
235
- <bd-footer-links-group slot="quick-links" title="Resources">
236
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
237
- <a href="https://www.bitdefender.com/consumer/support/">Support</a>
238
- </bd-footer-links-group>
239
-
240
- <bd-footer-nav slot="secondary-nav">
241
- <a href="/legal/">Legal</a>
242
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
243
- <a href="/privacy/">Privacy</a>
244
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
245
- <a href="/contact/">Contact</a>
246
- </bd-footer-nav>
247
- </bd-footer>
248
- `;
249
- MinimalFooter.parameters = {
250
- docs: {
251
- description: {
252
- story: 'Minimal footer variant with reduced content. Ideal for landing pages or simpler site sections where a full footer is not required.'
253
- }
254
- }
122
+ export const WithCustomLogo = {
123
+ name : 'Custom Logo Slot',
124
+ render: () => html`
125
+ <bd-footer current-locale="en">
126
+ <span slot="logo">
127
+ <img src="/assets/custom-logo.png" alt="Custom Logo" style="height:32px;">
128
+ </span>
129
+ ${quickLinks}
130
+ </bd-footer>
131
+ `,
132
+ parameters: { docs: { description: { story: 'Custom logo injected via the `logo` slot.' } } }
255
133
  };
256
134
 
257
- export const SingleColumnLayout = () => html`
258
- <bd-footer maxColumnsPerRow="1">
259
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
260
- <a href="/en/consumer/">For Consumer</a>
261
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
262
- <a href="/en/small-business/">For Small Business</a>
263
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
264
- <a href="/en/business/">For Enterprise</a>
265
- </bd-footer-nav>
266
-
267
- <bd-footer-links-group slot="quick-links" title="All Links">
268
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
269
- <a href="https://gravityzone.bitdefender.com/">GravityZone</a>
270
- <a href="https://www.bitdefender.com/consumer/support/">Support for Home</a>
271
- <a href="https://www.bitdefender.com/business/support/">Support for Business</a>
272
- <a href="/company/">Company</a>
273
- <a href="/careers/">Careers</a>
274
- </bd-footer-links-group>
275
-
276
- <bd-footer-nav slot="secondary-nav">
277
- <a href="/legal/">Legal Information</a>
278
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
279
- <a href="/privacy/">Privacy Policy</a>
280
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
281
- <a href="/contact/">Contact Us</a>
282
- </bd-footer-nav>
283
- </bd-footer>
284
- `;
285
- SingleColumnLayout.parameters = {
286
- docs: {
287
- description: {
288
- story: 'Single column footer layout. Forces all quick links into one column, useful for narrow layouts or mobile-optimized designs.'
289
- }
290
- }
135
+ export const WithCustomAddress = {
136
+ name : 'Custom Address Slot',
137
+ render: () => html`
138
+ <bd-footer current-locale="en">
139
+ ${quickLinks}
140
+ <div slot="address">
141
+ Bd. Dimitrie Pompeiu 6A, Bucharest, Romania
142
+ </div>
143
+ </bd-footer>
144
+ `,
145
+ parameters: { docs: { description: { story: 'Address slot overridden with a custom Romanian office address.' } } }
291
146
  };
292
147
 
293
- export const FourColumnLayout = () => html`
294
- <bd-footer maxColumnsPerRow="4">
295
- <bd-footer-nav slot="nav" class="footer-nav-main" bold>
296
- <a href="/en/consumer/">For Consumer</a>
297
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
298
- <a href="/en/small-business/">For Small Business</a>
299
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
300
- <a href="/en/business/">For Enterprise</a>
301
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
302
- <a href="/en/partners/">For Partners</a>
303
- </bd-footer-nav>
304
-
305
- <bd-footer-links-group slot="quick-links" title="Platforms">
306
- <a href="https://central.bitdefender.com/">Central</a>
307
- <a href="https://gravityzone.bitdefender.com/">GravityZone</a>
308
- <a href="https://www.bitdefender.com/cyberpedia/">Cyberpedia</a>
309
- </bd-footer-links-group>
310
-
311
- <bd-footer-links-group slot="quick-links" title="Support">
312
- <a href="https://www.bitdefender.com/consumer/support/">Home Products</a>
313
- <a href="https://www.bitdefender.com/business/support/">Business Products</a>
314
- </bd-footer-links-group>
148
+ export const WithCustomCopyright = {
149
+ name : 'Custom Copyright Slot',
150
+ render: () => html`
151
+ <bd-footer current-locale="en">
152
+ ${quickLinks}
153
+ <span slot="copyright" 2025 Bitdefender. All rights reserved.</span>
154
+ </bd-footer>
155
+ `,
156
+ parameters: { docs: { description: { story: 'Copyright text replaced via the `copyright` slot.' } } }
157
+ };
315
158
 
316
- <bd-footer-links-group slot="quick-links" title="Company">
317
- <a href="/company/">About</a>
318
- <a href="/careers/">Careers</a>
319
- <a href="/investors/">Investors</a>
320
- </bd-footer-links-group>
159
+ export const WithCustomSocialLinks = {
160
+ name : 'Custom Social Links',
161
+ render: () => html`
162
+ <bd-footer current-locale="en">
163
+ ${quickLinks}
164
+ <div slot="social-links" style="display:flex; gap:12px;">
165
+ <a href="https://facebook.com/bitdefender" aria-label="Facebook">FB</a>
166
+ <a href="https://twitter.com/bitdefender" aria-label="Twitter">TW</a>
167
+ <a href="https://linkedin.com/company/bitdefender" aria-label="LinkedIn">LI</a>
168
+ </div>
169
+ </bd-footer>
170
+ `,
171
+ parameters: { docs: { description: { story: 'Social links replaced with custom content via the `social-links` slot.' } } }
172
+ };
321
173
 
322
- <bd-footer-links-group slot="quick-links" title="Resources">
323
- <a href="/blog/">Blog</a>
324
- <a href="/news/">News</a>
325
- <a href="/events/">Events</a>
326
- </bd-footer-links-group>
174
+ export const NoQuickLinks = {
175
+ name : 'No Quick Links',
176
+ render: () => html`
177
+ <bd-footer current-locale="en"></bd-footer>
178
+ `,
179
+ parameters: { docs: { description: { story: 'Footer with no `quick-links` slot content — the grid area is empty.' } } }
180
+ };
327
181
 
328
- <bd-footer-nav slot="secondary-nav">
329
- <a href="/legal/">Legal Information</a>
330
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
331
- <a href="/privacy/">Privacy Policy</a>
332
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
333
- <a href="/sitemap/">Site Map</a>
334
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
335
- <a href="/contact/">Contact</a>
336
- </bd-footer-nav>
337
- </bd-footer>
338
- `;
339
- FourColumnLayout.parameters = {
340
- docs: {
341
- description: {
342
- story: 'Four column footer layout. Maximizes horizontal space usage for wide screens with multiple categorized link groups in a dense but organized arrangement.'
343
- }
182
+ export const MobileView = {
183
+ name : 'Mobile View (375px)',
184
+ render: () => html`
185
+ <bd-footer current-locale="en">
186
+ ${quickLinks}
187
+ </bd-footer>
188
+ `,
189
+ parameters: {
190
+ viewport: { defaultViewport: 'mobile1' },
191
+ docs : { description: { story: 'Footer at 375px. Mobile masterbrand image is used, extra dividers are rendered, and layout switches to single-column.' } }
344
192
  }
345
193
  };
346
194
 
347
- export const CustomizableFooter = (args) => html`
348
- <bd-footer maxColumnsPerRow="${args.maxColumnsPerRow}">
349
- <bd-footer-nav slot="nav" class="footer-nav-main" ?bold="${args.boldNav}">
350
- <a href="/en/consumer/">For Consumer</a>
351
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
352
- <a href="/en/small-business/">For Small Business</a>
353
- ${args.showEnterprise
354
- ? html`
355
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
356
- <a href="/en/business/">For Enterprise</a>
357
- `
358
- : ''}
359
- ${args.showPartners
360
- ? html`
361
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
362
- <a href="/en/partners/">For Partners</a>
363
- `
364
- : ''}
365
- </bd-footer-nav>
366
-
367
- ${args.showQuickLinks
368
- ? html`
369
- <bd-footer-links-group slot="quick-links" title="${args.quickLinksTitle}">
370
- <a href="https://central.bitdefender.com/">Bitdefender Central</a>
371
- <a href="https://gravityzone.bitdefender.com/">GravityZone</a>
372
- ${args.showCyberpedia ? html`<a href="https://www.bitdefender.com/cyberpedia/">Cyberpedia</a>` : ''}
373
- </bd-footer-links-group>
374
- `
375
- : ''}
376
-
377
- ${args.showSecondaryNav
378
- ? html`
379
- <bd-footer-nav slot="secondary-nav">
380
- <a href="/legal/">Legal Information</a>
381
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
382
- <a href="/privacy/">Privacy Policy</a>
383
- ${args.showContact
384
- ? html`
385
- <bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
386
- <a href="/contact/">Contact Us</a>
387
- `
388
- : ''}
389
- </bd-footer-nav>
390
- `
391
- : ''}
392
- </bd-footer>
393
- `;
394
- CustomizableFooter.args = {
395
- maxColumnsPerRow: 3,
396
- boldNav : true,
397
- showEnterprise : true,
398
- showPartners : true,
399
- showQuickLinks : true,
400
- quickLinksTitle : 'Quick Links',
401
- showCyberpedia : true,
402
- showSecondaryNav: true,
403
- showContact : true
404
- };
405
- CustomizableFooter.argTypes = {
406
- maxColumnsPerRow: {
407
- control: { type: 'number', min: 1, max: 4 }
408
- },
409
- boldNav: {
410
- control: 'boolean'
411
- },
412
- showEnterprise: {
413
- control: 'boolean'
414
- },
415
- showPartners: {
416
- control: 'boolean'
417
- },
418
- showQuickLinks: {
419
- control: 'boolean'
420
- },
421
- quickLinksTitle: {
422
- control: 'text'
423
- },
424
- showCyberpedia: {
425
- control: 'boolean'
426
- },
427
- showSecondaryNav: {
428
- control: 'boolean'
429
- },
430
- showContact: {
431
- control: 'boolean'
432
- }
195
+ export const CountrySelector = {
196
+ name : 'Country Selector (open state)',
197
+ render: () => html`
198
+ <p style="font-size:14px; margin-bottom:8px;">Click the country toggle button at the bottom of the footer to open the country selector.</p>
199
+ <bd-footer current-locale="en">
200
+ ${quickLinks}
201
+ </bd-footer>
202
+ `,
203
+ parameters: { docs: { description: { story: 'Click the country dropdown toggle to open the 3-column country selector grid. Selecting a country navigates to `/{locale}/`.' } } }
433
204
  };
434
- CustomizableFooter.parameters = {
435
- docs: {
436
- description: {
437
- story: 'Interactive footer with customizable options. Use the controls panel to toggle different sections and adjust the layout to see how the footer adapts to various configurations.'
438
- }
439
- }
205
+
206
+ export const Playground = {
207
+ name : '🛝 Playground',
208
+ args : { currentLocale: 'en', maxColumnsPerRow: 2 },
209
+ render: (args) => html`
210
+ <bd-footer current-locale="${args.currentLocale}" max-columns-per-row="${args.maxColumnsPerRow}">
211
+ ${quickLinks}
212
+ </bd-footer>
213
+ `,
214
+ parameters: { docs: { description: { story: 'Interactive playground. Change `currentLocale` to `ro` or `de` to see locale-specific features.' } } }
440
215
  };