@repobit/dex-system-design 0.9.1 → 0.10.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 +10 -0
- package/package.json +17 -3
- package/src/components/FAQ/faq.js +8 -7
- package/src/components/Input/Input.js +5 -4
- package/src/components/anchor/anchor-nav.js +24 -23
- package/src/components/badge/badge.js +5 -4
- package/src/components/carousel/carousel.js +14 -13
- package/src/components/checkbox/checkbox.js +22 -21
- package/src/components/divider/divider-horizontal.js +5 -4
- package/src/components/header/header.js +2 -1
- package/src/components/highlight/highlight.js +2 -1
- package/src/components/light-carousel/light-carousel.js +9 -8
- package/src/components/paragraph/paragraph.js +6 -5
- package/src/components/pricing-cards/pricing-card.js +83 -82
- package/src/components/radio/radio.js +20 -31
- package/src/components/tabs/tabs.js +22 -22
- package/src/components/termsOfUse/terms.js +13 -13
- package/src/tokens/layout.css +0 -1
- package/src/tokens/tokens.css +0 -412
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { LitElement, html
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
2
3
|
import pricingCardsCSS from "../pricing-cards/pricing-card.css.js";
|
|
3
4
|
|
|
4
5
|
import "/src/components/Button/Button.js";
|
|
@@ -6,8 +7,8 @@ import "/src/components/Button/Button.js";
|
|
|
6
7
|
class PricingContainer extends LitElement {
|
|
7
8
|
static properties = {
|
|
8
9
|
planType: { type: String },
|
|
9
|
-
locale: { type: String },
|
|
10
|
-
currency: { type: String }
|
|
10
|
+
locale : { type: String },
|
|
11
|
+
currency: { type: String }
|
|
11
12
|
};
|
|
12
13
|
|
|
13
14
|
constructor() {
|
|
@@ -31,10 +32,10 @@ class PricingContainer extends LitElement {
|
|
|
31
32
|
if (isNaN(numericValue)) return "";
|
|
32
33
|
|
|
33
34
|
const formattedValue = new Intl.NumberFormat(this.locale, {
|
|
34
|
-
style: "currency",
|
|
35
|
-
currency: this.currency,
|
|
35
|
+
style : "currency",
|
|
36
|
+
currency : this.currency,
|
|
36
37
|
minimumFractionDigits: 2,
|
|
37
|
-
maximumFractionDigits: 2
|
|
38
|
+
maximumFractionDigits: 2
|
|
38
39
|
}).format(numericValue);
|
|
39
40
|
|
|
40
41
|
return formattedValue;
|
|
@@ -113,19 +114,19 @@ class PricingContainer extends LitElement {
|
|
|
113
114
|
|
|
114
115
|
class PricingCard extends LitElement {
|
|
115
116
|
static properties = {
|
|
116
|
-
title: { type: String },
|
|
117
|
-
price: { type: String },
|
|
118
|
-
discount: { type: String },
|
|
119
|
-
originalPrice: { type: String },
|
|
120
|
-
features: { type: Boolean },
|
|
121
|
-
privacy: { type: Boolean },
|
|
122
|
-
highlight: { type: Boolean },
|
|
123
|
-
identity: { type: Boolean },
|
|
117
|
+
title : { type: String },
|
|
118
|
+
price : { type: String },
|
|
119
|
+
discount : { type: String },
|
|
120
|
+
originalPrice : { type: String },
|
|
121
|
+
features : { type: Boolean },
|
|
122
|
+
privacy : { type: Boolean },
|
|
123
|
+
highlight : { type: Boolean },
|
|
124
|
+
identity : { type: Boolean },
|
|
124
125
|
identityExtended: { type: Boolean },
|
|
125
|
-
parentalControl: { type: Boolean },
|
|
126
|
-
planType: { type: String },
|
|
127
|
-
locale: { type: String },
|
|
128
|
-
currency: { type: String }
|
|
126
|
+
parentalControl : { type: Boolean },
|
|
127
|
+
planType : { type: String },
|
|
128
|
+
locale : { type: String },
|
|
129
|
+
currency : { type: String }
|
|
129
130
|
};
|
|
130
131
|
|
|
131
132
|
constructor() {
|
|
@@ -151,8 +152,8 @@ class PricingCard extends LitElement {
|
|
|
151
152
|
if (isNaN(numberValue)) return value;
|
|
152
153
|
|
|
153
154
|
return new Intl.NumberFormat(this.locale, {
|
|
154
|
-
style: "currency",
|
|
155
|
-
currency: this.currency
|
|
155
|
+
style : "currency",
|
|
156
|
+
currency: this.currency
|
|
156
157
|
}).format(numberValue);
|
|
157
158
|
}
|
|
158
159
|
render() {
|
|
@@ -205,23 +206,23 @@ class PricingCard extends LitElement {
|
|
|
205
206
|
</div>
|
|
206
207
|
`;
|
|
207
208
|
}
|
|
208
|
-
|
|
209
|
+
|
|
209
210
|
}
|
|
210
211
|
class PricingCardFamily extends LitElement {
|
|
211
212
|
static properties = {
|
|
212
|
-
title: { type: String },
|
|
213
|
-
price: { type: String },
|
|
214
|
-
discount: { type: String },
|
|
215
|
-
originalPrice: { type: String },
|
|
216
|
-
features: { type: Boolean },
|
|
217
|
-
privacy: { type: Boolean },
|
|
218
|
-
highlight: { type: Boolean },
|
|
219
|
-
identity: { type: Boolean },
|
|
213
|
+
title : { type: String },
|
|
214
|
+
price : { type: String },
|
|
215
|
+
discount : { type: String },
|
|
216
|
+
originalPrice : { type: String },
|
|
217
|
+
features : { type: Boolean },
|
|
218
|
+
privacy : { type: Boolean },
|
|
219
|
+
highlight : { type: Boolean },
|
|
220
|
+
identity : { type: Boolean },
|
|
220
221
|
identityExtended: { type: Boolean },
|
|
221
|
-
parentalControl: { type: Boolean },
|
|
222
|
-
planType: { type: String },
|
|
223
|
-
locale: { type: String },
|
|
224
|
-
currency: { type: String }
|
|
222
|
+
parentalControl : { type: Boolean },
|
|
223
|
+
planType : { type: String },
|
|
224
|
+
locale : { type: String },
|
|
225
|
+
currency : { type: String }
|
|
225
226
|
};
|
|
226
227
|
|
|
227
228
|
constructor() {
|
|
@@ -247,8 +248,8 @@ class PricingCardFamily extends LitElement {
|
|
|
247
248
|
if (isNaN(numberValue)) return value;
|
|
248
249
|
|
|
249
250
|
return new Intl.NumberFormat(this.locale, {
|
|
250
|
-
style: "currency",
|
|
251
|
-
currency: this.currency
|
|
251
|
+
style : "currency",
|
|
252
|
+
currency: this.currency
|
|
252
253
|
}).format(numberValue);
|
|
253
254
|
}
|
|
254
255
|
render() {
|
|
@@ -327,7 +328,7 @@ class PricingCardFamily extends LitElement {
|
|
|
327
328
|
|
|
328
329
|
class PricingSwitch extends LitElement {
|
|
329
330
|
static properties = {
|
|
330
|
-
planType: { type: String }
|
|
331
|
+
planType: { type: String }
|
|
331
332
|
};
|
|
332
333
|
|
|
333
334
|
constructor() {
|
|
@@ -342,9 +343,9 @@ class PricingSwitch extends LitElement {
|
|
|
342
343
|
|
|
343
344
|
this.dispatchEvent(
|
|
344
345
|
new CustomEvent("plan-switch", {
|
|
345
|
-
detail: { planType: this.planType },
|
|
346
|
-
bubbles: true,
|
|
347
|
-
composed: true
|
|
346
|
+
detail : { planType: this.planType },
|
|
347
|
+
bubbles : true,
|
|
348
|
+
composed: true
|
|
348
349
|
})
|
|
349
350
|
);
|
|
350
351
|
}
|
|
@@ -392,39 +393,39 @@ class PricingSwitch extends LitElement {
|
|
|
392
393
|
|
|
393
394
|
class PricingCardFeatures extends LitElement {
|
|
394
395
|
static properties = {
|
|
395
|
-
features: { type: Array }
|
|
396
|
+
features: { type: Array }
|
|
396
397
|
};
|
|
397
398
|
|
|
398
399
|
constructor() {
|
|
399
400
|
super();
|
|
400
401
|
this.features = [
|
|
401
402
|
{
|
|
402
|
-
name: "Multiplatform Windows®, macOS®, Android™, iOS®"
|
|
403
|
+
name: "Multiplatform Windows®, macOS®, Android™, iOS®"
|
|
403
404
|
},
|
|
404
405
|
{
|
|
405
|
-
name: "Multi-Awarded Antivirus, Malware, Ransomware Protection",
|
|
406
|
-
description: "Consistent results in independent tests for 10+ years"
|
|
406
|
+
name : "Multi-Awarded Antivirus, Malware, Ransomware Protection",
|
|
407
|
+
description: "Consistent results in independent tests for 10+ years"
|
|
407
408
|
},
|
|
408
409
|
{
|
|
409
410
|
name: "Scam Prevention & Detection",
|
|
410
411
|
description:
|
|
411
|
-
"Outsmart scammers and keep your money, your credentials, identity, and digital assets"
|
|
412
|
+
"Outsmart scammers and keep your money, your credentials, identity, and digital assets"
|
|
412
413
|
},
|
|
413
414
|
{
|
|
414
415
|
name: "Cryptomining Protection",
|
|
415
416
|
description:
|
|
416
|
-
"Bad actors can make money using your hardware and power connection without your consent. Protect yourself against “leech” software!"
|
|
417
|
+
"Bad actors can make money using your hardware and power connection without your consent. Protect yourself against “leech” software!"
|
|
417
418
|
},
|
|
418
419
|
{
|
|
419
420
|
name: "Innovative Email Protection",
|
|
420
421
|
description:
|
|
421
|
-
"Scans all incoming email and marks them as “safe” or “unsafe”"
|
|
422
|
+
"Scans all incoming email and marks them as “safe” or “unsafe”"
|
|
422
423
|
},
|
|
423
424
|
{
|
|
424
425
|
name: "Scam Copilot",
|
|
425
426
|
description:
|
|
426
|
-
"Scam Copilot: Get protection against online scams with AI-powered anti-scam features."
|
|
427
|
-
}
|
|
427
|
+
"Scam Copilot: Get protection against online scams with AI-powered anti-scam features."
|
|
428
|
+
}
|
|
428
429
|
];
|
|
429
430
|
}
|
|
430
431
|
|
|
@@ -455,7 +456,7 @@ class PricingCardFeatures extends LitElement {
|
|
|
455
456
|
|
|
456
457
|
class PricingCardPrivacy extends LitElement {
|
|
457
458
|
static properties = {
|
|
458
|
-
privacy: { type: Array }
|
|
459
|
+
privacy: { type: Array }
|
|
459
460
|
};
|
|
460
461
|
|
|
461
462
|
constructor() {
|
|
@@ -465,24 +466,24 @@ class PricingCardPrivacy extends LitElement {
|
|
|
465
466
|
name: "Password Manager 1x",
|
|
466
467
|
description:
|
|
467
468
|
"Ultra-secure, feature-rich password manager. The last password you will ever need for hundreds of online accounts",
|
|
468
|
-
badge: "1x"
|
|
469
|
+
badge: "1x"
|
|
469
470
|
},
|
|
470
471
|
{
|
|
471
472
|
name: "Unlimited VPN traffic 1x",
|
|
472
473
|
description:
|
|
473
474
|
"Keep your internet connections private & secure with VPN. Enjoy total anonymity on public & shared WI-FIs",
|
|
474
|
-
badge: "1x"
|
|
475
|
+
badge: "1x"
|
|
475
476
|
},
|
|
476
477
|
{
|
|
477
478
|
name: "Choose from 4000+ VPN servers in 50+ countries",
|
|
478
479
|
description:
|
|
479
|
-
"Our entire fleet of servers uses the latest available hardware, high-speed 10Gbps connections, and dedicated DNS servers."
|
|
480
|
+
"Our entire fleet of servers uses the latest available hardware, high-speed 10Gbps connections, and dedicated DNS servers."
|
|
480
481
|
},
|
|
481
482
|
{
|
|
482
483
|
name: "System-wide Ad blocker & Anti-tracker",
|
|
483
484
|
description:
|
|
484
|
-
"Blocks ads, hinders ad targeting, and prevents online behavior profiling."
|
|
485
|
-
}
|
|
485
|
+
"Blocks ads, hinders ad targeting, and prevents online behavior profiling."
|
|
486
|
+
}
|
|
486
487
|
];
|
|
487
488
|
}
|
|
488
489
|
|
|
@@ -522,7 +523,7 @@ class PricingCardPrivacy extends LitElement {
|
|
|
522
523
|
|
|
523
524
|
class PricingCardIdentify extends LitElement {
|
|
524
525
|
static properties = {
|
|
525
|
-
identity: { type: Array }
|
|
526
|
+
identity: { type: Array }
|
|
526
527
|
};
|
|
527
528
|
|
|
528
529
|
constructor() {
|
|
@@ -532,8 +533,8 @@ class PricingCardIdentify extends LitElement {
|
|
|
532
533
|
name: "Data Breach Detection",
|
|
533
534
|
description:
|
|
534
535
|
"Ultra-secure, feature-rich password manager. The last password you will ever need for hundreds of online accounts",
|
|
535
|
-
badge: "1x"
|
|
536
|
-
}
|
|
536
|
+
badge: "1x"
|
|
537
|
+
}
|
|
537
538
|
];
|
|
538
539
|
}
|
|
539
540
|
|
|
@@ -573,7 +574,7 @@ class PricingCardIdentify extends LitElement {
|
|
|
573
574
|
|
|
574
575
|
class PricingCardIdentityExtend extends LitElement {
|
|
575
576
|
static properties = {
|
|
576
|
-
identity: { type: Array }
|
|
577
|
+
identity: { type: Array }
|
|
577
578
|
};
|
|
578
579
|
|
|
579
580
|
constructor() {
|
|
@@ -583,28 +584,28 @@ class PricingCardIdentityExtend extends LitElement {
|
|
|
583
584
|
name: "Digital Identity Protection",
|
|
584
585
|
description:
|
|
585
586
|
"Don't get caught off guard by future data leaks. Every time your personal information ends up in a breach, Bitdefender Digital Identity Protection notifies you so you can act quickly and minimize the impact.",
|
|
586
|
-
badge: "1x"
|
|
587
|
+
badge: "1x"
|
|
587
588
|
},
|
|
588
589
|
{
|
|
589
590
|
name: "Data Breach Detection",
|
|
590
591
|
description:
|
|
591
|
-
"Access a comprehensive list detailing organizations that exposed your personal information and get actionable tips to address each breach and fortify your online security."
|
|
592
|
+
"Access a comprehensive list detailing organizations that exposed your personal information and get actionable tips to address each breach and fortify your online security."
|
|
592
593
|
},
|
|
593
594
|
{
|
|
594
595
|
name: "Dark Web Monitoring",
|
|
595
596
|
description:
|
|
596
|
-
"We constantly scan the web (including dark web) for unauthorized leaks of personal data and give real-time alerts so you can act quickly by changing passwords, deleting accounts, or freezing credit cards before a serious incident occurs."
|
|
597
|
+
"We constantly scan the web (including dark web) for unauthorized leaks of personal data and give real-time alerts so you can act quickly by changing passwords, deleting accounts, or freezing credit cards before a serious incident occurs."
|
|
597
598
|
},
|
|
598
599
|
{
|
|
599
600
|
name: "Digital Footprint Visualization",
|
|
600
601
|
description:
|
|
601
|
-
"Identify precisely which websites or services have compromised your sensitive information, and see how you can undo the damage."
|
|
602
|
+
"Identify precisely which websites or services have compromised your sensitive information, and see how you can undo the damage."
|
|
602
603
|
},
|
|
603
604
|
{
|
|
604
605
|
name: "Real Time Breach Notifications",
|
|
605
606
|
description:
|
|
606
|
-
"Stay one step ahead with our real-time breach notification feature. Instant alerts empower you to take immediate action, protecting your sensitive information and maintaining peace of mind effortlessly."
|
|
607
|
-
}
|
|
607
|
+
"Stay one step ahead with our real-time breach notification feature. Instant alerts empower you to take immediate action, protecting your sensitive information and maintaining peace of mind effortlessly."
|
|
608
|
+
}
|
|
608
609
|
];
|
|
609
610
|
}
|
|
610
611
|
|
|
@@ -644,7 +645,7 @@ class PricingCardIdentityExtend extends LitElement {
|
|
|
644
645
|
|
|
645
646
|
class PricingCardParentalControl extends LitElement {
|
|
646
647
|
static properties = {
|
|
647
|
-
parentalControl: { type: Array }
|
|
648
|
+
parentalControl: { type: Array }
|
|
648
649
|
};
|
|
649
650
|
|
|
650
651
|
constructor() {
|
|
@@ -653,32 +654,32 @@ class PricingCardParentalControl extends LitElement {
|
|
|
653
654
|
{
|
|
654
655
|
name: "Internet time limit",
|
|
655
656
|
description:
|
|
656
|
-
"Set healthy limits on the time your child can spend online on a certain device."
|
|
657
|
+
"Set healthy limits on the time your child can spend online on a certain device."
|
|
657
658
|
},
|
|
658
659
|
{
|
|
659
660
|
name: "Content filtering",
|
|
660
661
|
description:
|
|
661
|
-
"Select the content categories you want to keep away from your child."
|
|
662
|
+
"Select the content categories you want to keep away from your child."
|
|
662
663
|
},
|
|
663
664
|
{
|
|
664
665
|
name: "Routines/Schedules",
|
|
665
666
|
description:
|
|
666
|
-
"Manage your child's internet time with customizable daily limits, structured routines like Focus time, Family time and Bedtime"
|
|
667
|
+
"Manage your child's internet time with customizable daily limits, structured routines like Focus time, Family time and Bedtime"
|
|
667
668
|
},
|
|
668
669
|
{
|
|
669
|
-
name: "Location",
|
|
670
|
-
description: "Track child location."
|
|
670
|
+
name : "Location",
|
|
671
|
+
description: "Track child location."
|
|
671
672
|
},
|
|
672
673
|
{
|
|
673
674
|
name: "Rewards",
|
|
674
675
|
description:
|
|
675
|
-
"Interact with children by responding to their requests for extending daily internet time."
|
|
676
|
+
"Interact with children by responding to their requests for extending daily internet time."
|
|
676
677
|
},
|
|
677
678
|
{
|
|
678
679
|
name: "Activity reports",
|
|
679
680
|
description:
|
|
680
|
-
"Unified reporting and easier management across all devices, providing you with a better overview of your child’s online activities."
|
|
681
|
-
}
|
|
681
|
+
"Unified reporting and easier management across all devices, providing you with a better overview of your child’s online activities."
|
|
682
|
+
}
|
|
682
683
|
];
|
|
683
684
|
}
|
|
684
685
|
|
|
@@ -716,16 +717,16 @@ class PricingCardParentalControl extends LitElement {
|
|
|
716
717
|
}
|
|
717
718
|
}
|
|
718
719
|
|
|
719
|
-
PricingCardIdentify.styles = [pricingCardsCSS];
|
|
720
|
-
PricingCardIdentityExtend.styles = [pricingCardsCSS];
|
|
721
|
-
PricingCardParentalControl.styles = [pricingCardsCSS];
|
|
720
|
+
PricingCardIdentify.styles = [tokens, pricingCardsCSS];
|
|
721
|
+
PricingCardIdentityExtend.styles = [tokens, pricingCardsCSS];
|
|
722
|
+
PricingCardParentalControl.styles = [tokens, pricingCardsCSS];
|
|
722
723
|
|
|
723
|
-
PricingCardPrivacy.styles = [pricingCardsCSS];
|
|
724
|
-
PricingCardFeatures.styles = [pricingCardsCSS];
|
|
725
|
-
PricingCard.styles = [pricingCardsCSS];
|
|
726
|
-
PricingCardFamily.styles = [pricingCardsCSS];
|
|
727
|
-
PricingContainer.styles = [pricingCardsCSS];
|
|
728
|
-
PricingSwitch.styles = [pricingCardsCSS];
|
|
724
|
+
PricingCardPrivacy.styles = [tokens, pricingCardsCSS];
|
|
725
|
+
PricingCardFeatures.styles = [tokens, pricingCardsCSS];
|
|
726
|
+
PricingCard.styles = [tokens, pricingCardsCSS];
|
|
727
|
+
PricingCardFamily.styles = [tokens, pricingCardsCSS];
|
|
728
|
+
PricingContainer.styles = [tokens, pricingCardsCSS];
|
|
729
|
+
PricingSwitch.styles = [tokens, pricingCardsCSS];
|
|
729
730
|
|
|
730
731
|
customElements.define("pricing-card-identity", PricingCardIdentify);
|
|
731
732
|
customElements.define(
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { LitElement, html
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
2
3
|
import radioCSS from "./radio.css.js";
|
|
3
4
|
|
|
4
5
|
class BdRadio extends LitElement {
|
|
5
6
|
static properties = {
|
|
6
|
-
name: { type: String },
|
|
7
|
-
value: { type: String },
|
|
8
|
-
checked: { type: Boolean, reflect: true },
|
|
7
|
+
name : { type: String },
|
|
8
|
+
value : { type: String },
|
|
9
|
+
checked : { type: Boolean, reflect: true },
|
|
9
10
|
disabled: { type: Boolean, reflect: true },
|
|
10
|
-
label: { type: String }
|
|
11
|
+
label : { type: String }
|
|
11
12
|
};
|
|
12
13
|
|
|
13
|
-
static styles = [radioCSS];
|
|
14
|
+
static styles = [tokens, radioCSS];
|
|
14
15
|
|
|
15
16
|
constructor() {
|
|
16
17
|
super();
|
|
@@ -78,9 +79,9 @@ class BdRadio extends LitElement {
|
|
|
78
79
|
|
|
79
80
|
this.dispatchEvent(
|
|
80
81
|
new CustomEvent("change", {
|
|
81
|
-
detail: { value: this.value },
|
|
82
|
-
bubbles: true,
|
|
83
|
-
composed: true
|
|
82
|
+
detail : { value: this.value },
|
|
83
|
+
bubbles : true,
|
|
84
|
+
composed: true
|
|
84
85
|
})
|
|
85
86
|
);
|
|
86
87
|
}
|
|
@@ -108,14 +109,14 @@ class BdRadio extends LitElement {
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
class BdToggleRadio extends LitElement {
|
|
111
|
-
static styles = [radioCSS];
|
|
112
|
+
static styles = [tokens, radioCSS];
|
|
112
113
|
|
|
113
114
|
static properties = {
|
|
114
|
-
name: { type: String },
|
|
115
|
-
value: { type: String },
|
|
116
|
-
checked: { type: Boolean, reflect: true },
|
|
115
|
+
name : { type: String },
|
|
116
|
+
value : { type: String },
|
|
117
|
+
checked : { type: Boolean, reflect: true },
|
|
117
118
|
disabled: { type: Boolean, reflect: true },
|
|
118
|
-
label: { type: String }
|
|
119
|
+
label : { type: String }
|
|
119
120
|
};
|
|
120
121
|
|
|
121
122
|
constructor() {
|
|
@@ -157,9 +158,9 @@ class BdToggleRadio extends LitElement {
|
|
|
157
158
|
|
|
158
159
|
this.dispatchEvent(
|
|
159
160
|
new CustomEvent("change", {
|
|
160
|
-
detail: { value: this.checked ? this.value : null },
|
|
161
|
-
bubbles: true,
|
|
162
|
-
composed: true
|
|
161
|
+
detail : { value: this.checked ? this.value : null },
|
|
162
|
+
bubbles : true,
|
|
163
|
+
composed: true
|
|
163
164
|
})
|
|
164
165
|
);
|
|
165
166
|
}
|
|
@@ -182,18 +183,6 @@ class BdToggleRadio extends LitElement {
|
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
|
|
185
|
-
handleClick() {
|
|
186
|
-
if (this.disabled) return;
|
|
187
|
-
this.checked = !this.checked;
|
|
188
|
-
|
|
189
|
-
this.dispatchEvent(
|
|
190
|
-
new CustomEvent("change", {
|
|
191
|
-
detail: { value: this.checked ? this.value : null },
|
|
192
|
-
bubbles: true,
|
|
193
|
-
composed: true,
|
|
194
|
-
})
|
|
195
|
-
);
|
|
196
|
-
}
|
|
197
186
|
render() {
|
|
198
187
|
return html`
|
|
199
188
|
<label class="bd-radio ${this.disabled ? "disabled" : ""}">
|
|
@@ -215,8 +204,8 @@ class BdToggleRadio extends LitElement {
|
|
|
215
204
|
`;
|
|
216
205
|
}
|
|
217
206
|
}
|
|
218
|
-
BdRadio.styles = [radioCSS];
|
|
219
|
-
BdToggleRadio.styles = [radioCSS];
|
|
207
|
+
BdRadio.styles = [tokens, radioCSS];
|
|
208
|
+
BdToggleRadio.styles = [tokens, radioCSS];
|
|
220
209
|
|
|
221
210
|
customElements.define("bd-toggle-radio", BdToggleRadio);
|
|
222
211
|
customElements.define("bd-radio", BdRadio);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LitElement, html
|
|
2
|
-
import {
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
3
3
|
|
|
4
4
|
import tabsCSS from "../tabs/tabs.css.js";
|
|
5
5
|
|
|
6
6
|
class TabsComponent extends LitElement {
|
|
7
7
|
static properties = {
|
|
8
|
-
selectedTab: { type: Number }
|
|
8
|
+
selectedTab: { type: Number }
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
constructor() {
|
|
@@ -22,30 +22,30 @@ class TabsComponent extends LitElement {
|
|
|
22
22
|
render() {
|
|
23
23
|
const tabs = [
|
|
24
24
|
{
|
|
25
|
-
title: "Privacy Protection",
|
|
25
|
+
title : "Privacy Protection",
|
|
26
26
|
imageBase: "images/tabs-img1.png",
|
|
27
|
-
icon: "icons/pic1.png"
|
|
27
|
+
icon : "icons/pic1.png"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
title: "Identity Protection",
|
|
30
|
+
title : "Identity Protection",
|
|
31
31
|
imageBase: "images/tabs-img2.png",
|
|
32
|
-
icon: "icons/pic2.png"
|
|
32
|
+
icon : "icons/pic2.png"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
title: "Device Protection",
|
|
35
|
+
title : "Device Protection",
|
|
36
36
|
imageBase: "images/tabs-img3.png",
|
|
37
|
-
icon: "icons/pic3.png"
|
|
37
|
+
icon : "icons/pic3.png"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
title: "Financial Insurance",
|
|
40
|
+
title : "Financial Insurance",
|
|
41
41
|
imageBase: "images/tabs-img3.png",
|
|
42
|
-
icon: "icons/pic3.png"
|
|
43
|
-
}
|
|
42
|
+
icon : "icons/pic3.png"
|
|
43
|
+
}
|
|
44
44
|
];
|
|
45
45
|
|
|
46
46
|
const content = [
|
|
47
47
|
{
|
|
48
|
-
heading: "Take back your family’s digital privacy",
|
|
48
|
+
heading : "Take back your family’s digital privacy",
|
|
49
49
|
description: () => html`<ul class="ul-privacy">
|
|
50
50
|
<li>
|
|
51
51
|
Enjoy complete data privacy with
|
|
@@ -61,10 +61,10 @@ class TabsComponent extends LitElement {
|
|
|
61
61
|
<strong>Webcam and Microphone Protection</strong>.
|
|
62
62
|
</li>
|
|
63
63
|
</ul>`,
|
|
64
|
-
href: "#1"
|
|
64
|
+
href: "#1"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
heading: "Safe data. Safe you.",
|
|
67
|
+
heading : "Safe data. Safe you.",
|
|
68
68
|
description: () => html`<p>
|
|
69
69
|
Get instant alerts for potential threats to your personal data and
|
|
70
70
|
finances.
|
|
@@ -74,10 +74,10 @@ class TabsComponent extends LitElement {
|
|
|
74
74
|
Reduce the risk of online ID theft by scanning your digital
|
|
75
75
|
footprint.
|
|
76
76
|
</p>`,
|
|
77
|
-
href: "#2"
|
|
77
|
+
href: "#2"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
heading: "We secure what you hold dear",
|
|
80
|
+
heading : "We secure what you hold dear",
|
|
81
81
|
description: () => html`<p>
|
|
82
82
|
Enjoy seamless security across all devices.
|
|
83
83
|
</p>
|
|
@@ -86,10 +86,10 @@ class TabsComponent extends LitElement {
|
|
|
86
86
|
attempts.
|
|
87
87
|
</p>
|
|
88
88
|
<p>Lightweight performance ensures smooth device operation.</p>`,
|
|
89
|
-
href: "#3"
|
|
89
|
+
href: "#3"
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
|
-
heading: "Financial Insurance",
|
|
92
|
+
heading : "Financial Insurance",
|
|
93
93
|
description: () => html`<p>
|
|
94
94
|
Enjoy seamless security across all devices.
|
|
95
95
|
</p>
|
|
@@ -98,8 +98,8 @@ class TabsComponent extends LitElement {
|
|
|
98
98
|
attempts.
|
|
99
99
|
</p>
|
|
100
100
|
<p>Lightweight performance ensures smooth device operation.</p>`,
|
|
101
|
-
href: "#4"
|
|
102
|
-
}
|
|
101
|
+
href: "#4"
|
|
102
|
+
}
|
|
103
103
|
];
|
|
104
104
|
|
|
105
105
|
const selectedTabData = tabs[this.selectedTab];
|
|
@@ -185,6 +185,6 @@ class TabsComponent extends LitElement {
|
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
TabsComponent.styles = [tabsCSS];
|
|
188
|
+
TabsComponent.styles = [tokens, tabsCSS];
|
|
189
189
|
|
|
190
190
|
customElements.define("bd-tabs-component", TabsComponent);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LitElement, html
|
|
2
|
-
import {
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
3
3
|
|
|
4
4
|
import termsCSS from "../termsOfUse/terms.css.js";
|
|
5
5
|
|
|
6
6
|
class TermsSection extends LitElement {
|
|
7
7
|
static properties = {
|
|
8
|
-
faqs: { type: Array }
|
|
8
|
+
faqs: { type: Array }
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
constructor() {
|
|
@@ -13,7 +13,7 @@ class TermsSection extends LitElement {
|
|
|
13
13
|
this.faqs = [
|
|
14
14
|
{
|
|
15
15
|
question: "Auto renewal terms",
|
|
16
|
-
answer: `
|
|
16
|
+
answer : `
|
|
17
17
|
<p>
|
|
18
18
|
<ul>
|
|
19
19
|
<li>Your subscription automatically begins at the purchase date;</li>
|
|
@@ -21,7 +21,7 @@ class TermsSection extends LitElement {
|
|
|
21
21
|
<li>The Bitdefender Auto Renewal Plan is designed to save you time, effort, and minimize your vulnerability risk by extending your subscription automatically before you run out of protection.</li>
|
|
22
22
|
</ul>
|
|
23
23
|
</p> `,
|
|
24
|
-
open: false
|
|
24
|
+
open: false
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
question:
|
|
@@ -39,30 +39,30 @@ class TermsSection extends LitElement {
|
|
|
39
39
|
<li>If a discount is presented, it describes the difference between the first term and renewal term subscription prices (e.g., first year price vs. each year thereafter). The prices are subject to change, but Bitdefender will send a prior notification by email, before the automatic renewal takes place. You will receive an email notification before you will be billed, along with information regarding pricing and the extension of your subscription duration.</li>
|
|
40
40
|
</ul>
|
|
41
41
|
</p> `,
|
|
42
|
-
open: false
|
|
42
|
+
open: false
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
question: "Affirmative consent",
|
|
46
|
-
answer: `
|
|
46
|
+
answer : `
|
|
47
47
|
<p>
|
|
48
48
|
<ul>
|
|
49
49
|
<li>Your subscription automatically begins at the purchase date;</li>
|
|
50
50
|
<li>By subscribing, you are purchasing a recurring subscription which will automatically renew.</li>
|
|
51
51
|
</ul>
|
|
52
52
|
</p> `,
|
|
53
|
-
open: false
|
|
53
|
+
open: false
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
question: "How to cancel + email address cancelation support",
|
|
57
|
-
answer: `
|
|
57
|
+
answer : `
|
|
58
58
|
<p>
|
|
59
59
|
<ul>
|
|
60
60
|
<li>You can cancel your automatically subscription from Bitdefender Central or by contacting Customer Support at: <a href="mailto:cancel@bitdefender.com" title="cancel@bitdefender.com">cancel@bitdefender.com</a></li>
|
|
61
61
|
<li>You can refund by contacting <a href="mailto:refunds@bitdefender.com" title="refunds@bitdefender.com">refunds@bitdefender.com</a> within 30 days of your initial purchase or of the automatic renewal date.</li>
|
|
62
62
|
</ul>
|
|
63
63
|
</p> `,
|
|
64
|
-
open: false
|
|
65
|
-
}
|
|
64
|
+
open: false
|
|
65
|
+
}
|
|
66
66
|
];
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -219,8 +219,8 @@ class TermsSection extends LitElement {
|
|
|
219
219
|
</div>
|
|
220
220
|
`;
|
|
221
221
|
}
|
|
222
|
-
|
|
222
|
+
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
TermsSection.styles = [termsCSS];
|
|
225
|
+
TermsSection.styles = [tokens, termsCSS];
|
|
226
226
|
customElements.define("bd-terms-section", TermsSection);
|
package/src/tokens/layout.css
CHANGED