@repobit/dex-system-design 0.21.1 → 0.22.0
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 +20 -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-nav.js +1 -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 +81 -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 +50 -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 +354 -271
- 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
|
@@ -1,84 +1,109 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
2
|
import { tokens } from "../../tokens/tokens.js";
|
|
3
|
+
import "../Button/Button.js";
|
|
3
4
|
import headerCSS from "../header/header.css.js";
|
|
4
5
|
import "../heading/heading.js";
|
|
5
6
|
import "../paragraph/paragraph.js";
|
|
6
7
|
|
|
7
8
|
class Header extends LitElement {
|
|
8
9
|
static properties = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
description: { type: String },
|
|
12
|
-
fullPrice
|
|
13
|
-
discount
|
|
14
|
-
finalPrice
|
|
10
|
+
title : { type: String },
|
|
11
|
+
subtitle : { type: String },
|
|
12
|
+
description : { type: String },
|
|
13
|
+
fullPrice : { type: String },
|
|
14
|
+
discount : { type: String },
|
|
15
|
+
finalPrice : { type: String },
|
|
16
|
+
productId : { type: String },
|
|
17
|
+
devices : { type: String },
|
|
18
|
+
subscription : { type: String },
|
|
19
|
+
shadow : { type: Boolean, reflect: true },
|
|
20
|
+
dataLayerEvent: { type: String }
|
|
15
21
|
};
|
|
16
22
|
|
|
17
23
|
constructor() {
|
|
18
24
|
super();
|
|
25
|
+
this.title = "";
|
|
26
|
+
this.subtitle = "";
|
|
27
|
+
this.description = "";
|
|
28
|
+
this.productId = "vsb";
|
|
29
|
+
this.devices = "5";
|
|
30
|
+
this.subscription = "1";
|
|
31
|
+
this.shadow = true;
|
|
32
|
+
this.dataLayerEvent = "info";
|
|
19
33
|
}
|
|
20
34
|
|
|
21
|
-
attributeChangedCallback(name, oldVal, newVal) {
|
|
22
|
-
|
|
23
|
-
}
|
|
35
|
+
// attributeChangedCallback(name, oldVal, newVal) {
|
|
36
|
+
// super.attributeChangedCallback(name, oldVal, newVal);
|
|
37
|
+
// }
|
|
24
38
|
|
|
25
39
|
render() {
|
|
26
40
|
return html`
|
|
27
|
-
<
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
<bd-context ignore-events-parent>
|
|
42
|
+
<bd-product product-id="${this.productId}">
|
|
43
|
+
<bd-option
|
|
44
|
+
devices="${this.devices}"
|
|
45
|
+
subscription="${this.subscription}"
|
|
46
|
+
data-layer-event="${this.dataLayerEvent}">
|
|
32
47
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<
|
|
36
|
-
|
|
48
|
+
<div class="bd-container">
|
|
49
|
+
<div class="bd-header-left">
|
|
50
|
+
<bd-h as="h2" class="bd-product-name">${this.title}</bd-h>
|
|
51
|
+
<bd-h as="h4" class="bd-value-prop">${this.subtitle}</bd-h>
|
|
52
|
+
<bd-p kind="regular" class="bd-description">${this.description}</bd-p>
|
|
37
53
|
|
|
38
|
-
|
|
54
|
+
<div class="bd-price-zone-top" data-store-hide="!it.option.price.discounted">
|
|
55
|
+
<span class="bd-full-price" data-store-render data-store-price="full"></span>
|
|
56
|
+
<span class="bd-discount" data-store-render data-store-discount="percentage"></span>
|
|
57
|
+
</div>
|
|
39
58
|
|
|
40
|
-
|
|
41
|
-
<bd-button
|
|
42
|
-
label="Buy now"
|
|
43
|
-
kind="danger"
|
|
44
|
-
size="md"
|
|
45
|
-
part="buy-button"
|
|
46
|
-
font-size="18px"
|
|
47
|
-
font-weight="600"
|
|
48
|
-
>Buy now</bd-button
|
|
49
|
-
>
|
|
50
|
-
<bd-button
|
|
51
|
-
label="View more plans"
|
|
52
|
-
kind="primary-outline"
|
|
53
|
-
size="md"
|
|
54
|
-
font-size="18px"
|
|
55
|
-
font-weight="600"
|
|
56
|
-
>
|
|
57
|
-
View more plans
|
|
58
|
-
</bd-button>
|
|
59
|
-
</div>
|
|
59
|
+
<span class="bd-price-zone-final" data-store-render data-store-price="discounted||full"></span>
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
<div class="bd-cta">
|
|
62
|
+
<bd-button-link
|
|
63
|
+
label="Buy now"
|
|
64
|
+
kind="danger"
|
|
65
|
+
size="md"
|
|
66
|
+
part="buy-button"
|
|
67
|
+
font-size="18px"
|
|
68
|
+
font-weight="600"
|
|
69
|
+
buyLink
|
|
70
|
+
>Buy now</bd-button-link
|
|
71
|
+
>
|
|
72
|
+
<bd-button-link
|
|
73
|
+
label="View more plans"
|
|
74
|
+
kind="primary-outline"
|
|
75
|
+
size="md"
|
|
76
|
+
font-size="18px"
|
|
77
|
+
font-weight="600"
|
|
78
|
+
>
|
|
79
|
+
View more plans
|
|
80
|
+
</bd-button-link>
|
|
81
|
+
</div>
|
|
67
82
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
<bd-p kind="small" class="bd-disclaimer-top">
|
|
84
|
+
<slot name="disclaimer-top">
|
|
85
|
+
Protection for 1 account & 5 PCs, Macs, tablets, or smartphones.
|
|
86
|
+
Windows® | macOS® | Android™ | iOS®
|
|
87
|
+
</slot>
|
|
88
|
+
</bd-p>
|
|
89
|
+
|
|
90
|
+
<bd-p kind="small" class="bd-disclaimer-bottom">
|
|
91
|
+
<slot name="disclaimer-bottom-text-start"></slot>
|
|
92
|
+
<slot name="disclaimer-bottom-link"></slot>
|
|
93
|
+
<slot name="disclaimer-bottom-text-end"></slot>
|
|
94
|
+
</bd-p>
|
|
95
|
+
</div>
|
|
74
96
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
97
|
+
<div class="bd-header-right">
|
|
98
|
+
<div class="bd-header-image-wrapper">
|
|
99
|
+
<slot name="header-picture"></slot>
|
|
100
|
+
<div class="bd-header-watermark"><span>Trusted. Always.</span></div>
|
|
101
|
+
</div>
|
|
79
102
|
</div>
|
|
80
103
|
</div>
|
|
81
|
-
|
|
104
|
+
</bd-option>
|
|
105
|
+
</bd-product>
|
|
106
|
+
</bd-context>
|
|
82
107
|
`;
|
|
83
108
|
}
|
|
84
109
|
}
|
|
@@ -5,29 +5,150 @@ import './header.js';
|
|
|
5
5
|
export default {
|
|
6
6
|
title : 'Sections/Header',
|
|
7
7
|
component: 'bd-header',
|
|
8
|
+
tags : ['autodocs'],
|
|
8
9
|
argTypes : {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
title: {
|
|
11
|
+
control : 'text',
|
|
12
|
+
description: 'Main product title',
|
|
13
|
+
table : {
|
|
14
|
+
type : { summary: 'string' },
|
|
15
|
+
defaultValue: { summary: '' }
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
subtitle: {
|
|
19
|
+
control : 'text',
|
|
20
|
+
description: 'Product subtitle or value proposition',
|
|
21
|
+
table : {
|
|
22
|
+
type : { summary: 'string' },
|
|
23
|
+
defaultValue: { summary: '' }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
description: {
|
|
27
|
+
control : 'text',
|
|
28
|
+
description: 'Product description',
|
|
29
|
+
table : {
|
|
30
|
+
type : { summary: 'string' },
|
|
31
|
+
defaultValue: { summary: '' }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
fullPrice: {
|
|
35
|
+
control : 'text',
|
|
36
|
+
description: 'Original price before discount',
|
|
37
|
+
table : {
|
|
38
|
+
type : { summary: 'string' },
|
|
39
|
+
defaultValue: { summary: '' }
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
discount: {
|
|
43
|
+
control : 'text',
|
|
44
|
+
description: 'Discount text or percentage',
|
|
45
|
+
table : {
|
|
46
|
+
type : { summary: 'string' },
|
|
47
|
+
defaultValue: { summary: '' }
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
finalPrice: {
|
|
51
|
+
control : 'text',
|
|
52
|
+
description: 'Final price after discount',
|
|
53
|
+
table : {
|
|
54
|
+
type : { summary: 'string' },
|
|
55
|
+
defaultValue: { summary: '' }
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
productId: {
|
|
59
|
+
control : 'text',
|
|
60
|
+
description: 'Product ID for bd-product component',
|
|
61
|
+
table : {
|
|
62
|
+
type : { summary: 'string' },
|
|
63
|
+
defaultValue: { summary: 'vsb' }
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
devices: {
|
|
67
|
+
control : 'text',
|
|
68
|
+
description: 'Number of devices for bd-option component',
|
|
69
|
+
table : {
|
|
70
|
+
type : { summary: 'string' },
|
|
71
|
+
defaultValue: { summary: '5' }
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
subscription: {
|
|
75
|
+
control : 'text',
|
|
76
|
+
description: 'Subscription duration for bd-option component',
|
|
77
|
+
table : {
|
|
78
|
+
type : { summary: 'string' },
|
|
79
|
+
defaultValue: { summary: '1' }
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
dataLayerEvent: {
|
|
83
|
+
control : 'text',
|
|
84
|
+
description: 'Data layer event name for analytics',
|
|
85
|
+
table : {
|
|
86
|
+
type : { summary: 'string' },
|
|
87
|
+
defaultValue: { summary: 'info' }
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
headerImage: {
|
|
91
|
+
control : 'text',
|
|
92
|
+
description: 'URL for the header image',
|
|
93
|
+
table : {
|
|
94
|
+
type : { summary: 'string' },
|
|
95
|
+
defaultValue: { summary: '' }
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
disclaimerTop: {
|
|
99
|
+
control : 'text',
|
|
100
|
+
description: 'Top disclaimer text',
|
|
101
|
+
table : {
|
|
102
|
+
type : { summary: 'string' },
|
|
103
|
+
defaultValue: { summary: 'Protection for 1 account & 5 PCs, Macs, tablets, or smartphones. Windows® | macOS® | Android™ | iOS®' }
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
disclaimerBottomStart: {
|
|
107
|
+
control : 'text',
|
|
108
|
+
description: 'Start text for bottom disclaimer',
|
|
109
|
+
table : {
|
|
110
|
+
type : { summary: 'string' },
|
|
111
|
+
defaultValue: { summary: '' }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
disclaimerBottomLink: {
|
|
115
|
+
control : 'text',
|
|
116
|
+
description: 'Link text for bottom disclaimer',
|
|
117
|
+
table : {
|
|
118
|
+
type : { summary: 'string' },
|
|
119
|
+
defaultValue: { summary: '' }
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
disclaimerBottomEnd: {
|
|
123
|
+
control : 'text',
|
|
124
|
+
description: 'End text for bottom disclaimer',
|
|
125
|
+
table : {
|
|
126
|
+
type : { summary: 'string' },
|
|
127
|
+
defaultValue: { summary: '' }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
parameters: {
|
|
132
|
+
docs: {
|
|
133
|
+
description: {
|
|
134
|
+
component: 'A comprehensive header section for product pages featuring product information, pricing, call-to-action buttons, and visual elements. Perfect for security product landing pages and e-commerce sections.'
|
|
135
|
+
}
|
|
136
|
+
}
|
|
20
137
|
}
|
|
21
138
|
};
|
|
22
139
|
|
|
23
140
|
const Template = (args) => html`
|
|
24
141
|
<bd-header
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
142
|
+
title="${args.title}"
|
|
143
|
+
subtitle="${args.subtitle}"
|
|
144
|
+
description="${args.description}"
|
|
145
|
+
fullPrice="${args.fullPrice}"
|
|
146
|
+
discount="${args.discount}"
|
|
147
|
+
finalPrice="${args.finalPrice}"
|
|
148
|
+
productId="${args.productId}"
|
|
149
|
+
devices="${args.devices}"
|
|
150
|
+
subscription="${args.subscription}"
|
|
151
|
+
dataLayerEvent="${args.dataLayerEvent}"
|
|
31
152
|
>
|
|
32
153
|
${args.headerImage
|
|
33
154
|
? html`
|
|
@@ -74,42 +195,197 @@ const Template = (args) => html`
|
|
|
74
195
|
|
|
75
196
|
export const Default = Template.bind({});
|
|
76
197
|
Default.args = {
|
|
77
|
-
|
|
78
|
-
|
|
198
|
+
title : 'Bitdefender Ultimate Security',
|
|
199
|
+
subtitle : 'Complete Security, Advanced Privacy, and Identity Protection',
|
|
79
200
|
description : 'All in one plan to incorporate multi-awarded device protection, solid password management, unlimited VPN traffic & personalized protection for your online identity.',
|
|
80
201
|
fullPrice : '$139.99',
|
|
81
202
|
discount : 'Save 44%',
|
|
82
203
|
finalPrice : '$79.99*',
|
|
204
|
+
productId : 'vsb',
|
|
205
|
+
devices : '5',
|
|
206
|
+
subscription : '1',
|
|
207
|
+
dataLayerEvent : 'info',
|
|
83
208
|
headerImage : 'https://picsum.photos/750/500',
|
|
84
209
|
disclaimerTop : 'Protection for 1 account & 5 PCs, Macs, tablets, or smartphones. Windows® | macOS® | Android™ | iOS®',
|
|
85
210
|
disclaimerBottomStart: 'Learn more about',
|
|
86
211
|
disclaimerBottomLink : 'Terms & Conditions',
|
|
87
212
|
disclaimerBottomEnd : 'before purchasing.'
|
|
88
213
|
};
|
|
214
|
+
Default.parameters = {
|
|
215
|
+
docs: {
|
|
216
|
+
description: {
|
|
217
|
+
story: 'Default header section for security products. Features product information, pricing with discount, call-to-action buttons, and device compatibility disclaimers. Includes bd-product and bd-option components.'
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
};
|
|
89
221
|
|
|
90
222
|
export const WithCustomImage = Template.bind({});
|
|
91
223
|
WithCustomImage.args = {
|
|
92
224
|
...Default.args,
|
|
93
225
|
headerImage: 'https://picsum.photos/750/500?random=1'
|
|
94
226
|
};
|
|
227
|
+
WithCustomImage.parameters = {
|
|
228
|
+
docs: {
|
|
229
|
+
description: {
|
|
230
|
+
story: 'Header with custom product image. Demonstrates how to integrate different visual assets while maintaining the same layout structure and content organization.'
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
95
234
|
|
|
96
235
|
export const WithDiscountedPrice = Template.bind({});
|
|
97
236
|
WithDiscountedPrice.args = {
|
|
98
|
-
|
|
99
|
-
|
|
237
|
+
title : 'Bitdefender Premium Security',
|
|
238
|
+
subtitle : 'Advanced Security, Privacy & Identity Protection',
|
|
100
239
|
description : 'Comprehensive security for all your devices with enhanced features and privacy options.',
|
|
101
240
|
fullPrice : '$199.99',
|
|
102
241
|
discount : 'Save 35%',
|
|
103
242
|
finalPrice : '$129.99*',
|
|
243
|
+
productId : 'ps_i',
|
|
244
|
+
devices : '5',
|
|
245
|
+
subscription : '1',
|
|
246
|
+
dataLayerEvent : 'info',
|
|
104
247
|
headerImage : 'https://picsum.photos/750/500?random=2',
|
|
105
248
|
disclaimerTop : 'Protection for 1 account & 5 devices.',
|
|
106
249
|
disclaimerBottomStart: 'See',
|
|
107
250
|
disclaimerBottomLink : 'Details',
|
|
108
|
-
disclaimerBottomEnd : 'for more info.'
|
|
251
|
+
disclaimerBottomEnd : 'for more info.',
|
|
252
|
+
shadow : true
|
|
253
|
+
};
|
|
254
|
+
WithDiscountedPrice.parameters = {
|
|
255
|
+
docs: {
|
|
256
|
+
description: {
|
|
257
|
+
story: 'Header showcasing a different pricing structure with significant discount. Highlights how the component handles various discount scenarios and pricing strategies.'
|
|
258
|
+
}
|
|
259
|
+
}
|
|
109
260
|
};
|
|
110
261
|
|
|
111
262
|
export const WithLocalImage = Template.bind({});
|
|
112
263
|
WithLocalImage.args = {
|
|
113
264
|
...Default.args,
|
|
114
265
|
headerImage: '/assets/bd-header-us.jpg'
|
|
266
|
+
};
|
|
267
|
+
WithLocalImage.parameters = {
|
|
268
|
+
docs: {
|
|
269
|
+
description: {
|
|
270
|
+
story: 'Header using local image assets. Demonstrates integration with project-specific images and optimized loading with responsive picture element.'
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
export const MinimalHeader = Template.bind({});
|
|
276
|
+
MinimalHeader.args = {
|
|
277
|
+
title : 'Bitdefender Basic Security',
|
|
278
|
+
subtitle : 'Essential Protection for Your Devices',
|
|
279
|
+
description : 'Core security features to keep your devices safe from threats with minimal system impact.',
|
|
280
|
+
finalPrice : '$49.99/year',
|
|
281
|
+
productId : 'ts_i',
|
|
282
|
+
devices : '5',
|
|
283
|
+
subscription : '1',
|
|
284
|
+
dataLayerEvent: 'info',
|
|
285
|
+
headerImage : 'https://picsum.photos/750/500?random=3'
|
|
286
|
+
};
|
|
287
|
+
MinimalHeader.parameters = {
|
|
288
|
+
docs: {
|
|
289
|
+
description: {
|
|
290
|
+
story: 'Minimal header variant without discount pricing. Shows a cleaner layout suitable for simpler product offerings or basic security packages.'
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
export const NoImageHeader = Template.bind({});
|
|
296
|
+
NoImageHeader.args = {
|
|
297
|
+
title : 'Bitdefender Mobile Security',
|
|
298
|
+
subtitle : 'Protection for Your Smartphone and Tablet',
|
|
299
|
+
description : 'Comprehensive mobile security with anti-theft, web protection, and app lock features designed specifically for mobile devices.',
|
|
300
|
+
fullPrice : '$29.99',
|
|
301
|
+
discount : 'Save 20%',
|
|
302
|
+
finalPrice : '$23.99*',
|
|
303
|
+
productId : 'mobile',
|
|
304
|
+
devices : '1',
|
|
305
|
+
subscription : '1',
|
|
306
|
+
dataLayerEvent: 'info',
|
|
307
|
+
disclaimerTop : 'Protection for 1 Android or iOS device. 30-day money-back guarantee.'
|
|
308
|
+
};
|
|
309
|
+
NoImageHeader.parameters = {
|
|
310
|
+
docs: {
|
|
311
|
+
description: {
|
|
312
|
+
story: 'Header without product image. Useful for text-focused layouts or when visual assets are not available, while maintaining all other functionality.'
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
export const LongContentHeader = Template.bind({});
|
|
318
|
+
LongContentHeader.args = {
|
|
319
|
+
title : 'Bitdefender Total Security Ultimate Plus Premium Edition',
|
|
320
|
+
subtitle : 'Comprehensive Multi-Layer Protection with Advanced AI Threat Detection and Real-Time Behavioral Analysis',
|
|
321
|
+
description : 'Our most advanced security solution combines machine learning algorithms with cloud-based threat intelligence to provide unparalleled protection against emerging cyber threats, zero-day attacks, and sophisticated malware while maintaining optimal system performance and user privacy across all your connected devices.',
|
|
322
|
+
fullPrice : '$299.99',
|
|
323
|
+
discount : 'Limited Time Offer - Save 50%',
|
|
324
|
+
finalPrice : '$149.99*',
|
|
325
|
+
productId : 'ts_i',
|
|
326
|
+
devices : '5',
|
|
327
|
+
subscription : '2',
|
|
328
|
+
dataLayerEvent : 'info',
|
|
329
|
+
headerImage : 'https://picsum.photos/750/500?random=4',
|
|
330
|
+
disclaimerTop : 'Comprehensive protection for up to 10 devices including Windows PCs, macOS computers, Android smartphones, iOS devices, and tablets. Includes 24/7 premium support and identity theft protection services.',
|
|
331
|
+
disclaimerBottomStart: 'This offer includes our',
|
|
332
|
+
disclaimerBottomLink : 'premium features bundle',
|
|
333
|
+
disclaimerBottomEnd : 'with additional cloud storage and priority customer support. Subscription automatically renews unless canceled.'
|
|
334
|
+
};
|
|
335
|
+
LongContentHeader.parameters = {
|
|
336
|
+
docs: {
|
|
337
|
+
description: {
|
|
338
|
+
story: 'Header with extensive content including long titles, detailed descriptions, and comprehensive disclaimers. Demonstrates how the component handles text-heavy scenarios while maintaining readability and visual balance.'
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
export const BusinessProductHeader = Template.bind({});
|
|
344
|
+
BusinessProductHeader.args = {
|
|
345
|
+
title : 'Bitdefender GravityZone Business Security',
|
|
346
|
+
subtitle : 'Enterprise-Grade Protection for Your Organization',
|
|
347
|
+
description : 'Centralized security management with advanced threat prevention, endpoint detection and response, and risk analytics for businesses of all sizes.',
|
|
348
|
+
finalPrice : 'Contact for Pricing',
|
|
349
|
+
productId : 'ts_i',
|
|
350
|
+
devices : '5',
|
|
351
|
+
subscription : '1',
|
|
352
|
+
dataLayerEvent : 'info',
|
|
353
|
+
headerImage : 'https://picsum.photos/750/500?random=6',
|
|
354
|
+
disclaimerTop : 'Scalable protection from 10 to 10,000+ endpoints. Includes centralized management console and 24/7 business support.',
|
|
355
|
+
disclaimerBottomStart: 'Request a',
|
|
356
|
+
disclaimerBottomLink : 'free business trial',
|
|
357
|
+
disclaimerBottomEnd : 'or schedule a demo with our experts.'
|
|
358
|
+
};
|
|
359
|
+
BusinessProductHeader.parameters = {
|
|
360
|
+
docs: {
|
|
361
|
+
description: {
|
|
362
|
+
story: 'Business product header with enterprise-focused messaging. Features contact-based pricing instead of direct purchase, tailored for B2B sales cycles and enterprise customers.'
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
export const DifferentProductConfigurations = Template.bind({});
|
|
368
|
+
DifferentProductConfigurations.args = {
|
|
369
|
+
title : 'Bitdefender Family Pack',
|
|
370
|
+
subtitle : 'Complete Protection for Your Entire Household',
|
|
371
|
+
description : 'Secure all family devices with comprehensive protection that grows with your needs.',
|
|
372
|
+
fullPrice : '$249.99',
|
|
373
|
+
discount : 'Save 40%',
|
|
374
|
+
finalPrice : '$149.99*',
|
|
375
|
+
productId : 'us_i',
|
|
376
|
+
devices : '5',
|
|
377
|
+
subscription : '1',
|
|
378
|
+
dataLayerEvent : 'info',
|
|
379
|
+
headerImage : 'https://picsum.photos/750/500?random=7',
|
|
380
|
+
disclaimerTop : 'Protection for up to 15 devices across multiple family members. Includes parental controls and family privacy features.',
|
|
381
|
+
disclaimerBottomStart: 'Family plans include',
|
|
382
|
+
disclaimerBottomLink : 'additional features',
|
|
383
|
+
disclaimerBottomEnd : 'for comprehensive household protection.'
|
|
384
|
+
};
|
|
385
|
+
DifferentProductConfigurations.parameters = {
|
|
386
|
+
docs: {
|
|
387
|
+
description: {
|
|
388
|
+
story: 'Header with different product configuration showcasing family pack options. Demonstrates how the component adapts to various product types and device counts.'
|
|
389
|
+
}
|
|
390
|
+
}
|
|
115
391
|
};
|