@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.
- package/CHANGELOG.md +40 -0
- package/package.json +4 -3
- package/src/components/Button/button.stories.js +292 -120
- package/src/components/accordion/accordion-bg.css.js +7 -2
- package/src/components/accordion/accordion-bg.stories.js +268 -449
- package/src/components/accordion/accordion.stories.js +259 -265
- package/src/components/anchor/anchor.stories.js +160 -159
- package/src/components/awards/awards-icon.js +44 -0
- package/src/components/awards/awards.css.js +328 -0
- package/src/components/awards/awards.js +224 -0
- package/src/components/awards/awards.stories.js +447 -0
- package/src/components/back/back.stories.js +100 -375
- package/src/components/badge/badge.stories.js +241 -129
- package/src/components/breadcrumb/breadcrumb.stories.js +218 -219
- package/src/components/cards/card.stories.js +174 -622
- package/src/components/carousel/carousel.stories.js +196 -225
- package/src/components/checkbox/checkbox.stories.js +136 -51
- package/src/components/compare/compare.css.js +237 -0
- package/src/components/compare/compare.js +253 -0
- package/src/components/compare/compare.stories.js +372 -0
- package/src/components/display/display.stories.js +91 -297
- package/src/components/divider/divider.stories.js +160 -342
- package/src/components/footer/footer.stories.js +177 -402
- package/src/components/header/header.stories.js +130 -338
- package/src/components/heading/heading.js +8 -5
- package/src/components/heading/heading.stories.js +162 -471
- package/src/components/highlight/highlight.stories.js +153 -38
- package/src/components/image/image.stories.js +135 -563
- package/src/components/input/custom-form.stories.js +761 -224
- package/src/components/link/link.js +29 -12
- package/src/components/link/link.stories.js +130 -468
- package/src/components/modal/modal.stories.js +174 -28
- package/src/components/paragraph/paragraph.css.js +10 -1
- package/src/components/paragraph/paragraph.stories.js +85 -410
- package/src/components/picture/picture.stories.js +147 -561
- package/src/components/radio/radio.stories.js +230 -81
- package/src/components/tabs/tabs.stories.js +126 -10
- package/src/components/termsOfUse/terms.stories.js +223 -8
- 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
|
|
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
|
-
|
|
14
|
-
docs : {
|
|
8
|
+
docs: {
|
|
15
9
|
description: {
|
|
16
|
-
component:
|
|
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 :
|
|
23
|
-
description: '
|
|
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
|
-
|
|
33
|
-
<bd-footer
|
|
34
|
-
<bd-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
<
|
|
195
|
-
<bd-divider-vertical
|
|
196
|
-
<
|
|
197
|
-
<bd-divider-vertical
|
|
198
|
-
<
|
|
199
|
-
</
|
|
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
|
-
|
|
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
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
<
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
<
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
</bd-footer
|
|
266
|
-
|
|
267
|
-
|
|
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
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
<
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
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
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
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
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
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
|
};
|