@repobit/dex-system-design 0.21.2 → 0.22.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 +19 -0
- package/package.json +4 -2
- package/src/components/Button/Button.js +7 -2
- package/src/components/Button/button.css.js +30 -0
- package/src/components/accordion/accordion-bg.stories.js +341 -171
- package/src/components/accordion/accordion.stories.js +345 -0
- package/src/components/anchor/anchor.stories.js +134 -76
- package/src/components/back/back.css.js +1 -1
- package/src/components/back/back.stories.js +301 -63
- package/src/components/badge/badge.js +4 -7
- package/src/components/badge/badge.stories.js +89 -96
- package/src/components/breadcrumb/breadcrumb.stories.js +167 -3
- package/src/components/cards/card.stories.js +153 -3
- package/src/components/display/display.css.js +7 -10
- package/src/components/display/display.js +14 -2
- package/src/components/display/display.stories.js +213 -219
- package/src/components/divider/divider.stories.js +337 -30
- package/src/components/footer/footer-lp.stories.js +346 -3
- package/src/components/footer/footer.js +0 -3
- package/src/components/footer/footer.stories.js +267 -4
- package/src/components/header/header.css.js +1 -1
- package/src/components/header/header.js +77 -56
- package/src/components/header/header.stories.js +298 -22
- package/src/components/heading/heading.css.js +1 -1
- package/src/components/heading/heading.stories.js +355 -113
- package/src/components/image/image.css.js +146 -98
- package/src/components/image/image.js +13 -2
- package/src/components/image/image.stories.js +546 -160
- package/src/components/input/custom-form.stories.js +209 -12
- package/src/components/link/link.css.js +2 -2
- package/src/components/link/link.stories.js +383 -53
- package/src/components/paragraph/paragraph.css.js +1 -1
- package/src/components/paragraph/paragraph.stories.js +365 -157
- package/src/components/picture/picture.css.js +209 -0
- package/src/components/picture/picture.js +16 -2
- package/src/components/picture/picture.stories.js +525 -180
- package/src/components/pricing-cards/new-pricing-card.js +19 -4
- package/src/components/pricing-cards/new-pricing-card.stories.js +422 -0
- package/src/components/pricing-cards/new-pricing.css.js +8 -0
- package/src/components/pricing-cards/pricing-card-actions.js +49 -9
- package/src/components/pricing-cards/pricing-card-container.css.js +1 -1
- package/src/components/pricing-cards/pricing-card-header.css.js +73 -63
- package/src/components/pricing-cards/pricing-card-header.js +44 -10
- package/src/components/pricing-cards/pricing-card-pricing.js +63 -64
- package/src/components/pricing-cards/pricing-card.css.js +7 -15
- package/src/components/pricing-cards/pricing-card.js +353 -270
- package/src/components/pricing-cards/pricing-card.stories.js +3 -3
- package/src/tokens/fonts.stories.js +335 -8
- package/src/tokens/spacing.stories.js +701 -34
- package/src/tokens/tokens-grid.stories.js +897 -48
- package/src/tokens/typography.stories.js +980 -38
- package/src/components/accordion/accordion-light.stories.js +0 -241
|
@@ -5,10 +5,31 @@ import '../footer/footer-nav-menu.js';
|
|
|
5
5
|
import './footer-lp.js';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
|
-
title
|
|
9
|
-
component
|
|
8
|
+
title : 'Components/Footer/BdFooterLP',
|
|
9
|
+
component : 'bd-footer-lp',
|
|
10
|
+
subcomponents: {
|
|
11
|
+
'bd-footer-nav' : 'bd-footer-nav',
|
|
12
|
+
'bd-divider-vertical' : 'bd-divider-vertical',
|
|
13
|
+
'bd-divider-horizontal': 'bd-divider-horizontal'
|
|
14
|
+
},
|
|
15
|
+
tags : ['autodocs'],
|
|
10
16
|
parameters: {
|
|
11
|
-
layout: 'fullscreen'
|
|
17
|
+
layout: 'fullscreen',
|
|
18
|
+
docs : {
|
|
19
|
+
description: {
|
|
20
|
+
component: 'A lightweight footer component designed specifically for landing pages. Features minimal content with essential legal links and privacy information in a compact layout.'
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
argTypes: {
|
|
25
|
+
maxColumnsPerRow: {
|
|
26
|
+
control : { type: 'number', min: 1, max: 4 },
|
|
27
|
+
description: 'Maximum number of columns for link organization',
|
|
28
|
+
table : {
|
|
29
|
+
type : { summary: 'number' },
|
|
30
|
+
defaultValue: { summary: '3' }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
12
33
|
}
|
|
13
34
|
};
|
|
14
35
|
|
|
@@ -31,4 +52,326 @@ export const Default = () => html`
|
|
|
31
52
|
</bd-footer-nav>
|
|
32
53
|
</bd-footer-lp>
|
|
33
54
|
`;
|
|
55
|
+
Default.parameters = {
|
|
56
|
+
docs: {
|
|
57
|
+
description: {
|
|
58
|
+
story: 'Default landing page footer with essential legal and navigation links. Includes vertical dividers for clear separation between link items in a compact layout.'
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export const MinimalLinks = () => html`
|
|
64
|
+
<bd-footer-lp maxColumnsPerRow="2">
|
|
65
|
+
<bd-footer-nav slot="secondary-nav">
|
|
66
|
+
<a href="/legal/">Legal</a>
|
|
67
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
68
|
+
<a href="/privacy/">Privacy</a>
|
|
69
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
70
|
+
<a href="/contact/">Contact</a>
|
|
71
|
+
</bd-footer-nav>
|
|
72
|
+
</bd-footer-lp>
|
|
73
|
+
`;
|
|
74
|
+
MinimalLinks.parameters = {
|
|
75
|
+
docs: {
|
|
76
|
+
description: {
|
|
77
|
+
story: 'Minimal link version with only the most essential legal links. Perfect for simple landing pages where space is limited and only basic legal information is required.'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const WithHorizontalDividers = () => html`
|
|
83
|
+
<div>
|
|
84
|
+
<bd-divider-horizontal width="95%"></bd-divider-horizontal>
|
|
85
|
+
<bd-footer-lp maxColumnsPerRow="3">
|
|
86
|
+
<bd-footer-nav slot="secondary-nav">
|
|
87
|
+
<a href="/legal/">Legal Information</a>
|
|
88
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
89
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
90
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
91
|
+
<a href="/sitemap/">Site Map</a>
|
|
92
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
93
|
+
<a href="/company/">Company</a>
|
|
94
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
95
|
+
<a href="/contact/">Contact Us</a>
|
|
96
|
+
</bd-footer-nav>
|
|
97
|
+
</bd-footer-lp>
|
|
98
|
+
</div>
|
|
99
|
+
`;
|
|
100
|
+
WithHorizontalDividers.parameters = {
|
|
101
|
+
docs: {
|
|
102
|
+
description: {
|
|
103
|
+
story: 'Footer with horizontal divider above. Creates visual separation from the main content while maintaining the lightweight design suitable for landing pages.'
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const SingleColumnLayout = () => html`
|
|
109
|
+
<bd-footer-lp maxColumnsPerRow="1">
|
|
110
|
+
<bd-footer-nav slot="secondary-nav">
|
|
111
|
+
<a href="/legal/">Legal Information</a>
|
|
112
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
113
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
114
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
115
|
+
<a href="/sitemap/">Site Map</a>
|
|
116
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
117
|
+
<a href="/company/">Company</a>
|
|
118
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
119
|
+
<a href="/contact/">Contact Us</a>
|
|
120
|
+
</bd-footer-nav>
|
|
121
|
+
</bd-footer-lp>
|
|
122
|
+
`;
|
|
123
|
+
SingleColumnLayout.parameters = {
|
|
124
|
+
docs: {
|
|
125
|
+
description: {
|
|
126
|
+
story: 'Single column layout forcing all links into one line. Useful for very narrow layouts or mobile-first designs where horizontal space is limited.'
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export const InternationalCompliance = () => html`
|
|
132
|
+
<bd-footer-lp maxColumnsPerRow="4">
|
|
133
|
+
<bd-footer-nav slot="secondary-nav">
|
|
134
|
+
<a href="/legal/">Legal Information</a>
|
|
135
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
136
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
137
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
138
|
+
<a href="/cookies/">Cookie Policy</a>
|
|
139
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
140
|
+
<a href="/terms/">Terms of Service</a>
|
|
141
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
142
|
+
<a href="/gdpr/">GDPR</a>
|
|
143
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
144
|
+
<a href="/ccpa/">CCPA</a>
|
|
145
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
146
|
+
<a href="#" class="impressum-link">Impressum</a>
|
|
147
|
+
</bd-footer-nav>
|
|
148
|
+
</bd-footer-lp>
|
|
149
|
+
`;
|
|
150
|
+
InternationalCompliance.parameters = {
|
|
151
|
+
docs: {
|
|
152
|
+
description: {
|
|
153
|
+
story: 'International compliance footer with expanded legal links. Includes GDPR, CCPA, and other regional compliance requirements for global landing pages.'
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
export const GermanLegal = () => html`
|
|
159
|
+
<bd-footer-lp maxColumnsPerRow="3">
|
|
160
|
+
<bd-footer-nav slot="secondary-nav">
|
|
161
|
+
<a href="/legal/">Rechtliche Informationen</a>
|
|
162
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
163
|
+
<a href="/privacy/">Datenschutzrichtlinie</a>
|
|
164
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
165
|
+
<a href="/sitemap/">Sitemap</a>
|
|
166
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
167
|
+
<a href="/company/">Unternehmen</a>
|
|
168
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
169
|
+
<a href="/contact/">Kontakt</a>
|
|
170
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
171
|
+
<a href="#">Datenschutzeinstellungen</a>
|
|
172
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
173
|
+
<a href="#" class="impressum-link">Impressum</a>
|
|
174
|
+
</bd-footer-nav>
|
|
175
|
+
</bd-footer-lp>
|
|
176
|
+
`;
|
|
177
|
+
GermanLegal.parameters = {
|
|
178
|
+
docs: {
|
|
179
|
+
description: {
|
|
180
|
+
story: 'German language footer with legal requirements. Includes mandatory Impressum link and proper German translations for all legal and privacy terms.'
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
34
184
|
|
|
185
|
+
export const FrenchLegal = () => html`
|
|
186
|
+
<bd-footer-lp maxColumnsPerRow="3">
|
|
187
|
+
<bd-footer-nav slot="secondary-nav">
|
|
188
|
+
<a href="/legal/">Informations légales</a>
|
|
189
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
190
|
+
<a href="/privacy/">Politique de confidentialité</a>
|
|
191
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
192
|
+
<a href="/sitemap/">Plan du site</a>
|
|
193
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
194
|
+
<a href="/company/">Entreprise</a>
|
|
195
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
196
|
+
<a href="/contact/">Contactez-nous</a>
|
|
197
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
198
|
+
<a href="#">Paramètres de confidentialité</a>
|
|
199
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
200
|
+
<a href="/cookies/">Gestion des cookies</a>
|
|
201
|
+
</bd-footer-nav>
|
|
202
|
+
</bd-footer-lp>
|
|
203
|
+
`;
|
|
204
|
+
FrenchLegal.parameters = {
|
|
205
|
+
docs: {
|
|
206
|
+
description: {
|
|
207
|
+
story: 'French language footer with proper translations. Includes cookie management link as commonly required for French and EU audiences.'
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
export const WithCopyright = () => html`
|
|
213
|
+
<bd-footer-lp maxColumnsPerRow="3">
|
|
214
|
+
<bd-footer-nav slot="secondary-nav">
|
|
215
|
+
<a href="/legal/">Legal Information</a>
|
|
216
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
217
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
218
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
219
|
+
<a href="/sitemap/">Site Map</a>
|
|
220
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
221
|
+
<a href="/company/">Company</a>
|
|
222
|
+
</bd-footer-nav>
|
|
223
|
+
<div slot="copyright" style="text-align: center; padding-top: 1rem; color: white; font-size: 0.875rem;">
|
|
224
|
+
© 2024 Bitdefender. All rights reserved.
|
|
225
|
+
</div>
|
|
226
|
+
</bd-footer-lp>
|
|
227
|
+
`;
|
|
228
|
+
WithCopyright.parameters = {
|
|
229
|
+
docs: {
|
|
230
|
+
description: {
|
|
231
|
+
story: 'Footer with copyright notice. Uses the copyright slot to display copyright information below the main navigation links while maintaining the lightweight design.'
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
export const CompactMobile = () => html`
|
|
237
|
+
<bd-footer-lp maxColumnsPerRow="1">
|
|
238
|
+
<bd-footer-nav slot="secondary-nav">
|
|
239
|
+
<a href="/legal/">Legal</a>
|
|
240
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
241
|
+
<a href="/privacy/">Privacy</a>
|
|
242
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
243
|
+
<a href="/contact/">Contact</a>
|
|
244
|
+
</bd-footer-nav>
|
|
245
|
+
<div slot="copyright" style="text-align: center; padding-top: 0.5rem; color: white; font-size: 0.75rem;">
|
|
246
|
+
© 2024 Bitdefender
|
|
247
|
+
</div>
|
|
248
|
+
</bd-footer-lp>
|
|
249
|
+
`;
|
|
250
|
+
CompactMobile.parameters = {
|
|
251
|
+
docs: {
|
|
252
|
+
description: {
|
|
253
|
+
story: 'Ultra-compact mobile-optimized footer. Uses single column layout with minimal links and smaller font sizes, perfect for mobile landing pages with limited space.'
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export const CustomizableFooterLP = (args) => html`
|
|
259
|
+
<bd-footer-lp maxColumnsPerRow="${args.maxColumnsPerRow}">
|
|
260
|
+
<bd-footer-nav slot="secondary-nav">
|
|
261
|
+
${args.showLegal
|
|
262
|
+
? html`
|
|
263
|
+
<a href="/legal/">Legal Information</a>
|
|
264
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
265
|
+
`
|
|
266
|
+
: ''}
|
|
267
|
+
${args.showPrivacy
|
|
268
|
+
? html`
|
|
269
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
270
|
+
${args.showSitemap || args.showCompany || args.showContact
|
|
271
|
+
? html`
|
|
272
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
273
|
+
`
|
|
274
|
+
: ''}
|
|
275
|
+
`
|
|
276
|
+
: ''}
|
|
277
|
+
${args.showSitemap
|
|
278
|
+
? html`
|
|
279
|
+
<a href="/sitemap/">Site Map</a>
|
|
280
|
+
${args.showCompany || args.showContact
|
|
281
|
+
? html`
|
|
282
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
283
|
+
`
|
|
284
|
+
: ''}
|
|
285
|
+
`
|
|
286
|
+
: ''}
|
|
287
|
+
${args.showCompany
|
|
288
|
+
? html`
|
|
289
|
+
<a href="/company/">Company</a>
|
|
290
|
+
${args.showContact
|
|
291
|
+
? html`
|
|
292
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
293
|
+
`
|
|
294
|
+
: ''}
|
|
295
|
+
`
|
|
296
|
+
: ''}
|
|
297
|
+
${args.showContact
|
|
298
|
+
? html`
|
|
299
|
+
<a href="/contact/">Contact Us</a>
|
|
300
|
+
`
|
|
301
|
+
: ''}
|
|
302
|
+
</bd-footer-nav>
|
|
303
|
+
${args.showCopyright
|
|
304
|
+
? html`
|
|
305
|
+
<div slot="copyright" style="text-align: center; padding-top: 1rem; color: white; font-size: 0.875rem;">
|
|
306
|
+
© 2024 Bitdefender. All rights reserved.
|
|
307
|
+
</div>
|
|
308
|
+
`
|
|
309
|
+
: ''}
|
|
310
|
+
</bd-footer-lp>
|
|
311
|
+
`;
|
|
312
|
+
CustomizableFooterLP.args = {
|
|
313
|
+
maxColumnsPerRow: 3,
|
|
314
|
+
showLegal : true,
|
|
315
|
+
showPrivacy : true,
|
|
316
|
+
showSitemap : true,
|
|
317
|
+
showCompany : true,
|
|
318
|
+
showContact : true,
|
|
319
|
+
showCopyright : false
|
|
320
|
+
};
|
|
321
|
+
CustomizableFooterLP.argTypes = {
|
|
322
|
+
maxColumnsPerRow: {
|
|
323
|
+
control: { type: 'number', min: 1, max: 4 }
|
|
324
|
+
},
|
|
325
|
+
showLegal: {
|
|
326
|
+
control : 'boolean',
|
|
327
|
+
description: 'Show Legal Information link'
|
|
328
|
+
},
|
|
329
|
+
showPrivacy: {
|
|
330
|
+
control : 'boolean',
|
|
331
|
+
description: 'Show Privacy Policy link'
|
|
332
|
+
},
|
|
333
|
+
showSitemap: {
|
|
334
|
+
control : 'boolean',
|
|
335
|
+
description: 'Show Site Map link'
|
|
336
|
+
},
|
|
337
|
+
showCompany: {
|
|
338
|
+
control : 'boolean',
|
|
339
|
+
description: 'Show Company link'
|
|
340
|
+
},
|
|
341
|
+
showContact: {
|
|
342
|
+
control : 'boolean',
|
|
343
|
+
description: 'Show Contact Us link'
|
|
344
|
+
},
|
|
345
|
+
showCopyright: {
|
|
346
|
+
control : 'boolean',
|
|
347
|
+
description: 'Show copyright notice'
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
CustomizableFooterLP.parameters = {
|
|
351
|
+
docs: {
|
|
352
|
+
description: {
|
|
353
|
+
story: 'Interactive landing page footer with customizable options. Use the controls panel to toggle different links and adjust the layout to create the perfect footer for your landing page needs.'
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
export const PrivacyFocused = () => html`
|
|
359
|
+
<bd-footer-lp maxColumnsPerRow="2">
|
|
360
|
+
<bd-footer-nav slot="secondary-nav">
|
|
361
|
+
<a href="/privacy/">Privacy Policy</a>
|
|
362
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
363
|
+
<a href="/cookies/">Cookie Preferences</a>
|
|
364
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
365
|
+
<a href="/legal/">Legal</a>
|
|
366
|
+
<bd-divider-vertical color="white" height="18px"></bd-divider-vertical>
|
|
367
|
+
<a href="#" onclick="window.__tcfapi('showUi', null); return false;">Privacy Settings</a>
|
|
368
|
+
</bd-footer-nav>
|
|
369
|
+
</bd-footer-lp>
|
|
370
|
+
`;
|
|
371
|
+
PrivacyFocused.parameters = {
|
|
372
|
+
docs: {
|
|
373
|
+
description: {
|
|
374
|
+
story: 'Privacy-focused footer with enhanced cookie and privacy controls. Includes interactive privacy settings link and emphasizes data protection compliance for privacy-conscious audiences.'
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
};
|
|
@@ -33,7 +33,6 @@ export class BdFooter extends LitElement {
|
|
|
33
33
|
super.connectedCallback();
|
|
34
34
|
this._initLocaleFromUrl();
|
|
35
35
|
window.addEventListener('resize', this._handleResize.bind(this));
|
|
36
|
-
console.log('Connected - isMobile:', this._isMobile);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
disconnectedCallback() {
|
|
@@ -100,11 +99,9 @@ export class BdFooter extends LitElement {
|
|
|
100
99
|
_handleResize() {
|
|
101
100
|
this._isMobile = window.innerWidth <= 767;
|
|
102
101
|
const newIsMobile = window.innerWidth <= 767;
|
|
103
|
-
console.log('Resize - Old isMobile:', this._isMobile, 'New isMobile:', newIsMobile, 'Window width:', window.innerWidth);
|
|
104
102
|
|
|
105
103
|
if (this._isMobile !== newIsMobile) {
|
|
106
104
|
this._isMobile = newIsMobile;
|
|
107
|
-
console.log('isMobile changed to:', this._isMobile);
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
|
|
@@ -2,10 +2,30 @@ import { html } from 'lit';
|
|
|
2
2
|
import './footer.js';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
title
|
|
6
|
-
component
|
|
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
|
+
},
|
|
11
|
+
tags : ['autodocs'],
|
|
7
12
|
parameters: {
|
|
8
|
-
layout: 'fullscreen'
|
|
13
|
+
layout: 'fullscreen',
|
|
14
|
+
docs : {
|
|
15
|
+
description: {
|
|
16
|
+
component: 'A comprehensive footer component with multi-language support, organized link sections, and responsive layout. Perfect for corporate websites with international audiences.'
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
argTypes: {
|
|
21
|
+
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
|
+
}
|
|
28
|
+
}
|
|
9
29
|
}
|
|
10
30
|
};
|
|
11
31
|
|
|
@@ -53,6 +73,13 @@ export const Default = () => html`
|
|
|
53
73
|
</bd-footer-nav>
|
|
54
74
|
</bd-footer>
|
|
55
75
|
`;
|
|
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
|
+
};
|
|
56
83
|
|
|
57
84
|
export const Romanian = () => html`
|
|
58
85
|
<bd-footer maxColumnsPerRow="3">
|
|
@@ -97,6 +124,13 @@ export const Romanian = () => html`
|
|
|
97
124
|
</bd-footer-nav>
|
|
98
125
|
</bd-footer>
|
|
99
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
|
+
}
|
|
133
|
+
};
|
|
100
134
|
|
|
101
135
|
export const German = () => html`
|
|
102
136
|
<bd-footer maxColumnsPerRow="3">
|
|
@@ -143,6 +177,13 @@ export const German = () => html`
|
|
|
143
177
|
</bd-footer-nav>
|
|
144
178
|
</bd-footer>
|
|
145
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
|
+
}
|
|
186
|
+
};
|
|
146
187
|
|
|
147
188
|
export const WithDividers = () => html`
|
|
148
189
|
<div>
|
|
@@ -174,4 +215,226 @@ export const WithDividers = () => html`
|
|
|
174
215
|
<bd-divider-horizontal width="95%"></bd-divider-horizontal>
|
|
175
216
|
<bd-divider-horizontal width="95%"></bd-divider-horizontal>
|
|
176
217
|
</div>
|
|
177
|
-
`;
|
|
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
|
+
}
|
|
225
|
+
};
|
|
226
|
+
|
|
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
|
+
}
|
|
255
|
+
};
|
|
256
|
+
|
|
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
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
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>
|
|
315
|
+
|
|
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>
|
|
321
|
+
|
|
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>
|
|
327
|
+
|
|
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
|
+
}
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
|
|
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
|
+
}
|
|
433
|
+
};
|
|
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
|
+
}
|
|
440
|
+
};
|