@repobit/dex-system-design 0.19.2 → 0.21.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 +32 -0
- package/package.json +2 -3
- package/src/components/Button/button.stories.js +51 -51
- package/src/components/accordion/accordion-bg.css.js +168 -102
- package/src/components/accordion/accordion-bg.js +13 -5
- package/src/components/accordion/accordion-bg.stories.js +281 -0
- package/src/components/accordion/accordion-light.stories.js +241 -0
- package/src/components/anchor/anchor.stories.js +24 -22
- package/src/components/back/back.css.js +56 -0
- package/src/components/back/back.js +39 -0
- package/src/components/back/back.stories.js +184 -0
- package/src/components/badge/badge.css.js +44 -6
- package/src/components/badge/badge.js +40 -2
- package/src/components/badge/badge.stories.js +3 -10
- package/src/components/breadcrumb/breadcrumb.css.js +98 -0
- package/src/components/breadcrumb/breadcrumb.js +136 -0
- package/src/components/breadcrumb/breadcrumb.stories.js +109 -0
- package/src/components/cards/card.css.js +245 -0
- package/src/components/cards/card.js +80 -0
- package/src/components/cards/card.stories.js +512 -0
- package/src/components/carousel/carousel.css.js +51 -36
- package/src/components/carousel/carousel.js +0 -1
- package/src/components/carousel/carousel.stories.js +21 -17
- package/src/components/display/display.css.js +68 -0
- package/src/components/display/display.js +26 -0
- package/src/components/display/display.stories.js +339 -0
- package/src/components/divider/divider-horizontal.js +1 -1
- package/src/components/footer/footer-links-group.css.js +1 -1
- package/src/components/footer/footer-links-group.js +3 -3
- package/src/components/footer/footer-lp.stories.js +26 -61
- package/src/components/footer/footer-nav-menu.css.js +9 -10
- package/src/components/footer/footer.css.js +95 -8
- package/src/components/footer/footer.js +31 -65
- package/src/components/footer/footer.stories.js +165 -48
- package/src/components/header/header.js +11 -11
- package/src/components/header/header.stories.js +36 -4
- package/src/components/heading/heading.css.js +79 -0
- package/src/components/heading/heading.js +79 -0
- package/src/components/heading/heading.stories.js +260 -0
- package/src/components/highlight/highlight.stories.js +1 -1
- package/src/components/image/image.css.js +101 -0
- package/src/components/image/image.js +57 -0
- package/src/components/image/image.stories.js +245 -0
- package/src/components/light-carousel/light-carousel-simple.js +3 -2
- package/src/components/light-carousel/light-carousel.js +3 -7
- package/src/components/light-carousel/light-carousel.stories.js +15 -16
- package/src/components/link/link.css.js +107 -18
- package/src/components/link/link.js +16 -12
- package/src/components/link/link.stories.js +177 -0
- package/src/components/list/list-item/list-item.css.js +106 -0
- package/src/components/list/list-item/list-item.js +43 -0
- package/src/components/list/list-item/list-item.stories.js +79 -0
- package/src/components/list/list.css.js +175 -0
- package/src/components/list/list.js +44 -0
- package/src/components/modal/modal.js +6 -5
- package/src/components/paragraph/paragraph.css.js +41 -11
- package/src/components/paragraph/paragraph.js +7 -45
- package/src/components/paragraph/paragraph.stories.js +235 -0
- package/src/components/picture/picture.css.js +0 -0
- package/src/components/picture/picture.js +46 -0
- package/src/components/picture/picture.stories.js +275 -0
- package/src/components/pricing-cards/pricing-card-actions.js +1 -1
- package/src/components/pricing-cards/pricing-card-header.js +9 -7
- package/src/components/pricing-cards/pricing-card-pricing.js +11 -12
- package/src/components/pricing-cards/pricing-card.css.js +28 -3
- package/src/components/pricing-cards/pricing-card.js +38 -50
- package/src/components/tabs/tabs.js +44 -47
- package/src/components/termsOfUse/terms.js +77 -161
- package/src/components/termsOfUse/terms.stories.js +4 -3
- package/src/stories/Header.js +6 -6
- package/src/tokens/layout.css +3 -3
- package/src/tokens/tokens.css +0 -23
- package/src/tokens/tokens.stories.js +9 -8
- package/src/components/accordion/accordion-no-bg.css.js +0 -114
- package/src/components/accordion/accordion-no-bg.js +0 -80
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { html } from "lit";
|
|
2
|
+
import "../heading/heading.js";
|
|
3
|
+
import "../paragraph/paragraph.js";
|
|
4
|
+
|
|
2
5
|
import "./carousel.js";
|
|
3
6
|
|
|
4
7
|
export default {
|
|
@@ -69,7 +72,7 @@ export default {
|
|
|
69
72
|
const renderParagraphs = (text) =>
|
|
70
73
|
text
|
|
71
74
|
? text.split("\n\n").map(
|
|
72
|
-
(paragraph) => html`<p>${paragraph}</p>`
|
|
75
|
+
(paragraph) => html`<bd-p>${paragraph}</bd-p>`
|
|
73
76
|
)
|
|
74
77
|
: null;
|
|
75
78
|
|
|
@@ -81,7 +84,7 @@ const Template = (args) => html`
|
|
|
81
84
|
modalText="${args.item1ModalText}"
|
|
82
85
|
icon="${args.item1Icon}"
|
|
83
86
|
>
|
|
84
|
-
<
|
|
87
|
+
<bd-h as="h4" padding="10px 0">${args.item1Title}</bd-h>
|
|
85
88
|
${renderParagraphs(args.item1Content)}
|
|
86
89
|
</bd-carousel-item>
|
|
87
90
|
|
|
@@ -91,7 +94,7 @@ const Template = (args) => html`
|
|
|
91
94
|
modalText="${args.item2ModalText}"
|
|
92
95
|
icon="${args.item2Icon}"
|
|
93
96
|
>
|
|
94
|
-
<
|
|
97
|
+
<bd-h as="h4" padding="10px 0">${args.item2Title}</bd-h>
|
|
95
98
|
${renderParagraphs(args.item2Content)}
|
|
96
99
|
</bd-carousel-item>
|
|
97
100
|
|
|
@@ -101,7 +104,7 @@ const Template = (args) => html`
|
|
|
101
104
|
modalText="${args.item3ModalText}"
|
|
102
105
|
icon="${args.item3Icon}"
|
|
103
106
|
>
|
|
104
|
-
<
|
|
107
|
+
<bd-h as="h4" padding="10px 0">${args.item3Title}</bd-h>
|
|
105
108
|
${renderParagraphs(args.item3Content)}
|
|
106
109
|
</bd-carousel-item>
|
|
107
110
|
|
|
@@ -111,7 +114,7 @@ const Template = (args) => html`
|
|
|
111
114
|
modalText="${args.item4ModalText}"
|
|
112
115
|
icon="${args.item4Icon}"
|
|
113
116
|
>
|
|
114
|
-
<
|
|
117
|
+
<bd-h as="h4" padding="10px 0">${args.item4Title}</bd-h>
|
|
115
118
|
${renderParagraphs(args.item4Content)}
|
|
116
119
|
</bd-carousel-item>
|
|
117
120
|
|
|
@@ -121,7 +124,7 @@ const Template = (args) => html`
|
|
|
121
124
|
modalText="${args.item5ModalText}"
|
|
122
125
|
icon="${args.item5Icon}"
|
|
123
126
|
>
|
|
124
|
-
<
|
|
127
|
+
<bd-h as="h4" padding="10px 0">${args.item5Title}</bd-h>
|
|
125
128
|
${renderParagraphs(args.item5Content)}
|
|
126
129
|
</bd-carousel-item>
|
|
127
130
|
|
|
@@ -131,7 +134,7 @@ const Template = (args) => html`
|
|
|
131
134
|
modalText="${args.item6ModalText}"
|
|
132
135
|
icon="${args.item6Icon}"
|
|
133
136
|
>
|
|
134
|
-
<
|
|
137
|
+
<bd-h as="h4" padding="10px 0">${args.item6Title}</bd-h>
|
|
135
138
|
${renderParagraphs(args.item6Content)}
|
|
136
139
|
</bd-carousel-item>
|
|
137
140
|
|
|
@@ -141,7 +144,7 @@ const Template = (args) => html`
|
|
|
141
144
|
modalText="${args.item7ModalText}"
|
|
142
145
|
icon="${args.item7Icon}"
|
|
143
146
|
>
|
|
144
|
-
<
|
|
147
|
+
<bd-h as="h4" padding="10px 0">${args.item7Title}</bd-h>
|
|
145
148
|
${renderParagraphs(args.item7Content)}
|
|
146
149
|
</bd-carousel-item>
|
|
147
150
|
|
|
@@ -151,7 +154,7 @@ const Template = (args) => html`
|
|
|
151
154
|
modalText="${args.item8ModalText}"
|
|
152
155
|
icon="${args.item8Icon}"
|
|
153
156
|
>
|
|
154
|
-
<
|
|
157
|
+
<bd-h as="h4" padding="10px 0">${args.item8Title}</bd-h>
|
|
155
158
|
${renderParagraphs(args.item8Content)}
|
|
156
159
|
</bd-carousel-item>
|
|
157
160
|
</bd-carousel-section>
|
|
@@ -163,11 +166,11 @@ Default.args = {
|
|
|
163
166
|
|
|
164
167
|
item1Title: "Scam Copilot Bot",
|
|
165
168
|
item1SubTitle:
|
|
166
|
-
"Specialized AI chatbot that helps you identify suspicious online interactions so you don
|
|
169
|
+
"Specialized AI chatbot that helps you identify suspicious online interactions so you don't become a victim",
|
|
167
170
|
item1ModalText:
|
|
168
|
-
"Specialized AI chatbot that helps you identify suspicious online interactions so you don
|
|
171
|
+
"Specialized AI chatbot that helps you identify suspicious online interactions so you don't become a victim",
|
|
169
172
|
item1Icon : "/assets/light-carousel-img1.png",
|
|
170
|
-
item1Content: `Specialized AI chatbot that helps you identify suspicious online interactions so you don
|
|
173
|
+
item1Content: `Specialized AI chatbot that helps you identify suspicious online interactions so you don't become a victim.\n\nSpecialized AI chatbot that helps you identify suspicious online interactions so you don't become a victim.\n\nTest Scam Copilot Bot`,
|
|
171
174
|
|
|
172
175
|
item2Title : "Scam Wave Alerts",
|
|
173
176
|
item2SubTitle : "Proactively informs you about scam outbreaks in your region",
|
|
@@ -218,12 +221,13 @@ Default.args = {
|
|
|
218
221
|
"A platform where users can report scams and share experiences to help protect others",
|
|
219
222
|
item7Icon : "/assets/light-carousel-img1.png",
|
|
220
223
|
item7Content: "A platform where users can report scams and share experiences to help protect others.",
|
|
221
|
-
|
|
224
|
+
|
|
225
|
+
item8Title: "Fraud Prevention Workshops",
|
|
222
226
|
item8SubTitle:
|
|
223
|
-
"Interactive workshops that educate users on identifying and avoiding scams",
|
|
227
|
+
"Interactive workshops that educate users on identifying and avoiding scams",
|
|
224
228
|
item8ModalText:
|
|
225
|
-
"Interactive workshops that educate users on identifying and avoiding scams",
|
|
229
|
+
"Interactive workshops that educate users on identifying and avoiding scams",
|
|
226
230
|
item8Icon: "/assets/light-carousel-img1.png",
|
|
227
231
|
item8Content:
|
|
228
|
-
"Interactive workshops that educate users on identifying and avoiding scams."
|
|
229
|
-
};
|
|
232
|
+
"Interactive workshops that educate users on identifying and avoiding scams."
|
|
233
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
|
|
3
|
+
export default css`
|
|
4
|
+
@layer bd-components {
|
|
5
|
+
.bd-display {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
font-family: var(--typography-display-lg-fontFamily);
|
|
9
|
+
color: var(--color-neutral-900);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* 3xl - Largest display */
|
|
13
|
+
.bd-display['3xl'],
|
|
14
|
+
.bd-display.k3xl {
|
|
15
|
+
font-size: var(--typography-display-3xl-fontSize);
|
|
16
|
+
font-weight: var(--typography-display-3xl-fontWeight);
|
|
17
|
+
line-height: var(--typography-display-3xl-lineHeight);
|
|
18
|
+
letter-spacing: var(--typography-display-3xl-letterSpacing);
|
|
19
|
+
font-family: var(--typography-display-3xl-fontFamily);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* 2xl */
|
|
23
|
+
.bd-display['2xl'],
|
|
24
|
+
.bd-display.k2xl {
|
|
25
|
+
font-size: var(--typography-display-2xl-fontSize);
|
|
26
|
+
font-weight: var(--typography-display-2xl-fontWeight);
|
|
27
|
+
line-height: var(--typography-display-2xl-lineHeight);
|
|
28
|
+
letter-spacing: var(--typography-display-2xl-letterSpacing);
|
|
29
|
+
font-family: var(--typography-display-2xl-fontFamily);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* xl */
|
|
33
|
+
.bd-display.xl {
|
|
34
|
+
font-size: var(--typography-display-xl-fontSize);
|
|
35
|
+
font-weight: var(--typography-display-xl-fontWeight);
|
|
36
|
+
line-height: var(--typography-display-xl-lineHeight);
|
|
37
|
+
letter-spacing: var(--typography-display-xl-letterSpacing);
|
|
38
|
+
font-family: var(--typography-display-xl-fontFamily);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* lg */
|
|
42
|
+
.bd-display.lg {
|
|
43
|
+
font-size: var(--typography-display-lg-fontSize);
|
|
44
|
+
font-weight: var(--typography-display-lg-fontWeight);
|
|
45
|
+
line-height: var(--typography-display-lg-lineHeight);
|
|
46
|
+
letter-spacing: var(--typography-display-lg-letterSpacing);
|
|
47
|
+
font-family: var(--typography-display-lg-fontFamily);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* md */
|
|
51
|
+
.bd-display.md {
|
|
52
|
+
font-size: var(--typography-display-md-fontSize);
|
|
53
|
+
font-weight: var(--typography-display-md-fontWeight);
|
|
54
|
+
line-height: var(--typography-display-md-lineHeight);
|
|
55
|
+
letter-spacing: var(--typography-display-md-letterSpacing);
|
|
56
|
+
font-family: var(--typography-display-md-fontFamily);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* sm - Smallest display */
|
|
60
|
+
.bd-display.sm {
|
|
61
|
+
font-size: var(--typography-display-sm-fontSize);
|
|
62
|
+
font-weight: var(--typography-display-sm-fontWeight);
|
|
63
|
+
line-height: var(--typography-display-sm-lineHeight);
|
|
64
|
+
letter-spacing: var(--typography-display-sm-letterSpacing);
|
|
65
|
+
font-family: var(--typography-display-sm-fontFamily);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
3
|
+
import displayCSS from "./display.css.js";
|
|
4
|
+
|
|
5
|
+
export class BdDisplay extends LitElement {
|
|
6
|
+
static properties = {
|
|
7
|
+
kind: { type: String, reflect: true } // "3xl", "2xl", "xl", "lg", "md", "sm"
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.kind = "lg"; // Default medium display
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
render() {
|
|
16
|
+
return html`
|
|
17
|
+
<div class="bd-display ${this.kind}">
|
|
18
|
+
<slot></slot>
|
|
19
|
+
</div>
|
|
20
|
+
`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static styles = [tokens, displayCSS];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
customElements.define("bd-display", BdDisplay);
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '../heading/heading.js';
|
|
3
|
+
import '../paragraph/paragraph.js';
|
|
4
|
+
import './display.js';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title : 'Atoms/Display',
|
|
8
|
+
component: 'bd-display',
|
|
9
|
+
argTypes : {
|
|
10
|
+
kind: {
|
|
11
|
+
control : { type: 'select' },
|
|
12
|
+
options : ['sm', 'md', 'lg', 'xl', '2xl', '3xl'],
|
|
13
|
+
description: 'Display size variant'
|
|
14
|
+
},
|
|
15
|
+
content: {
|
|
16
|
+
control : 'text',
|
|
17
|
+
description: 'Display text content'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
parameters: {
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: 'Large display typography for hero sections, landing pages, and prominent headlines.'
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const Template = ({ kind, content }) => html`
|
|
30
|
+
<bd-display kind="${kind}">${content}</bd-display>
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
export const AllDisplaySizes = () => html`
|
|
34
|
+
<div style="display: flex; flex-direction: column; gap: 3rem; max-width: 1200px; margin: 0 auto;">
|
|
35
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
|
|
36
|
+
<bd-display kind="3xl">Display 3XL - Largest Hero Text</bd-display>
|
|
37
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
38
|
+
Font size: var(--typography-display-3xl-fontSize)<br>
|
|
39
|
+
Perfect for main hero sections on landing pages
|
|
40
|
+
</bd-p>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
|
|
44
|
+
<bd-display kind="2xl">Display 2XL - Major Headlines</bd-display>
|
|
45
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
46
|
+
Font size: var(--typography-display-2xl-fontSize)<br>
|
|
47
|
+
Ideal for primary section titles and important announcements
|
|
48
|
+
</bd-p>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
|
|
52
|
+
<bd-display kind="xl">Display XL - Prominent Headers</bd-display>
|
|
53
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
54
|
+
Font size: var(--typography-display-xl-fontSize)<br>
|
|
55
|
+
Great for feature highlights and key value propositions
|
|
56
|
+
</bd-p>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
|
|
60
|
+
<bd-display kind="lg">Display LG - Standard Display</bd-display>
|
|
61
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
62
|
+
Font size: var(--typography-display-lg-fontSize)<br>
|
|
63
|
+
Balanced display size for most prominent text needs
|
|
64
|
+
</bd-p>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
|
|
68
|
+
<bd-display kind="md">Display MD - Compact Display</bd-display>
|
|
69
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
70
|
+
Font size: var(--typography-display-md-fontSize)<br>
|
|
71
|
+
Smaller display for sections with less space
|
|
72
|
+
</bd-p>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div>
|
|
76
|
+
<bd-display kind="sm">Display SM - Minimal Display</bd-display>
|
|
77
|
+
<bd-p kind="small" style="margin-top: 1rem;">
|
|
78
|
+
Font size: var(--typography-display-sm-fontSize)<br>
|
|
79
|
+
Smallest display size, still larger than regular headings
|
|
80
|
+
</bd-p>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
`;
|
|
84
|
+
AllDisplaySizes.parameters = {
|
|
85
|
+
docs: {
|
|
86
|
+
description: {
|
|
87
|
+
story: 'All display size variants from 3XL (largest) to SM (smallest) for comparison.'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const Display3XL = Template.bind({});
|
|
93
|
+
Display3XL.args = {
|
|
94
|
+
kind : '3xl',
|
|
95
|
+
content: 'Transform Your Digital Security'
|
|
96
|
+
};
|
|
97
|
+
Display3XL.parameters = {
|
|
98
|
+
docs: {
|
|
99
|
+
description: {
|
|
100
|
+
story: 'Largest display size for main hero sections and primary landing page headlines.'
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const Display2XL = Template.bind({});
|
|
106
|
+
Display2XL.args = {
|
|
107
|
+
kind : '2xl',
|
|
108
|
+
content: 'Enterprise-Grade Protection'
|
|
109
|
+
};
|
|
110
|
+
Display2XL.parameters = {
|
|
111
|
+
docs: {
|
|
112
|
+
description: {
|
|
113
|
+
story: 'Extra large display for major section titles and important feature announcements.'
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export const DisplayXL = Template.bind({});
|
|
119
|
+
DisplayXL.args = {
|
|
120
|
+
kind : 'xl',
|
|
121
|
+
content: 'Advanced Threat Intelligence'
|
|
122
|
+
};
|
|
123
|
+
DisplayXL.parameters = {
|
|
124
|
+
docs: {
|
|
125
|
+
description: {
|
|
126
|
+
story: 'Large display size for prominent headers and key value propositions.'
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export const DisplayLG = Template.bind({});
|
|
132
|
+
DisplayLG.args = {
|
|
133
|
+
kind : 'lg',
|
|
134
|
+
content: 'Real-Time Malware Detection'
|
|
135
|
+
};
|
|
136
|
+
DisplayLG.parameters = {
|
|
137
|
+
docs: {
|
|
138
|
+
description: {
|
|
139
|
+
story: 'Standard display size for balanced prominence and readability.'
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export const DisplayMD = Template.bind({});
|
|
145
|
+
DisplayMD.args = {
|
|
146
|
+
kind : 'md',
|
|
147
|
+
content: 'Multi-Platform Security'
|
|
148
|
+
};
|
|
149
|
+
DisplayMD.parameters = {
|
|
150
|
+
docs: {
|
|
151
|
+
description: {
|
|
152
|
+
story: 'Medium display size for sections with limited space but still needing impact.'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export const DisplaySM = Template.bind({});
|
|
158
|
+
DisplaySM.args = {
|
|
159
|
+
kind : 'sm',
|
|
160
|
+
content: 'Privacy First Approach'
|
|
161
|
+
};
|
|
162
|
+
DisplaySM.parameters = {
|
|
163
|
+
docs: {
|
|
164
|
+
description: {
|
|
165
|
+
story: 'Smallest display size, ideal for compact hero sections or prominent card titles.'
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
export const ComparisonWithHeadings = () => html`
|
|
172
|
+
<div style="max-width: 800px; margin: 0 auto;">
|
|
173
|
+
<bd-display kind="xl" style="margin-bottom: 3rem;">Display XL vs Headings</bd-display>
|
|
174
|
+
|
|
175
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: start;">
|
|
176
|
+
<div>
|
|
177
|
+
<bd-h as="h3" style="margin-bottom: 1rem;">Display Typography</bd-h>
|
|
178
|
+
<bd-display kind="sm" style="margin-bottom: 1rem;">Display SM Text</bd-display>
|
|
179
|
+
<bd-display kind="md" style="margin-bottom: 1rem;">Display MD Text</bd-display>
|
|
180
|
+
<bd-display kind="lg" style="margin-bottom: 1rem;">Display LG Text</bd-display>
|
|
181
|
+
<bd-display kind="xl">Display XL Text</bd-display>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div>
|
|
185
|
+
<bd-h as="h3" style="margin-bottom: 1rem;">Heading Typography</bd-h>
|
|
186
|
+
<bd-h as="h6" style="margin-bottom: 1rem;">Heading H6 Text</bd-h>
|
|
187
|
+
<bd-h as="h5" style="margin-bottom: 1rem;">Heading H5 Text</bd-h>
|
|
188
|
+
<bd-h as="h4" style="margin-bottom: 1rem;">Heading H4 Text</bd-h>
|
|
189
|
+
<bd-h as="h3">Heading H3 Text</bd-h>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
<bd-p kind="regular" style="margin-top: 2rem;">
|
|
194
|
+
<strong>Usage guidelines:</strong> Display typography is for prominent, attention-grabbing text
|
|
195
|
+
while headings are for semantic document structure and section titles.
|
|
196
|
+
</bd-p>
|
|
197
|
+
</div>
|
|
198
|
+
`;
|
|
199
|
+
ComparisonWithHeadings.parameters = {
|
|
200
|
+
docs: {
|
|
201
|
+
description: {
|
|
202
|
+
story: 'Comparison between display typography and heading typography to demonstrate their different use cases and visual hierarchy.'
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
export const LandingPageExample = () => html`
|
|
208
|
+
<div style="max-width: 1400px; margin: 0 auto;">
|
|
209
|
+
<!-- Hero Section -->
|
|
210
|
+
<section style="text-align: center; padding: 4rem 2rem; background: #f8fafc;">
|
|
211
|
+
<bd-display kind="2xl" style="margin-bottom: 1rem;">
|
|
212
|
+
Complete Digital Protection
|
|
213
|
+
</bd-display>
|
|
214
|
+
<bd-display kind="lg" style="margin-bottom: 2rem; color: #3b82f6;">
|
|
215
|
+
For Home & Business
|
|
216
|
+
</bd-display>
|
|
217
|
+
<bd-p kind="lead" style="max-width: 600px; margin: 0 auto;">
|
|
218
|
+
Enterprise-grade security solutions tailored for modern threats and evolving digital landscapes.
|
|
219
|
+
</bd-p>
|
|
220
|
+
</section>
|
|
221
|
+
|
|
222
|
+
<!-- Features Section -->
|
|
223
|
+
<section style="padding: 4rem 2rem;">
|
|
224
|
+
<bd-display kind="xl" style="text-align: center; margin-bottom: 3rem;">
|
|
225
|
+
Why Choose Our Solution?
|
|
226
|
+
</bd-display>
|
|
227
|
+
|
|
228
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem;">
|
|
229
|
+
<div style="text-align: center;">
|
|
230
|
+
<bd-display kind="lg" style="color: #3b82f6; margin-bottom: 1rem;">99.9%</bd-display>
|
|
231
|
+
<bd-h as="h4" style="margin-bottom: 1rem;">Threat Detection Rate</bd-h>
|
|
232
|
+
<bd-p kind="regular">Industry-leading accuracy in identifying and neutralizing cyber threats.</bd-p>
|
|
233
|
+
</div>
|
|
234
|
+
|
|
235
|
+
<div style="text-align: center;">
|
|
236
|
+
<bd-display kind="lg" style="color: #3b82f6; margin-bottom: 1rem;">24/7</bd-display>
|
|
237
|
+
<bd-h as="h4" style="margin-bottom: 1rem;">Real-Time Monitoring</bd-h>
|
|
238
|
+
<bd-p kind="regular">Continuous protection with instant response to emerging threats.</bd-p>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div style="text-align: center;">
|
|
242
|
+
<bd-display kind="lg" style="color: #3b82f6; margin-bottom: 1rem;">50M+</bd-display>
|
|
243
|
+
<bd-h as="h4" style="margin-bottom: 1rem;">Protected Users</bd-h>
|
|
244
|
+
<bd-p kind="regular">Trusted by millions worldwide for their digital security needs.</bd-p>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</section>
|
|
248
|
+
</div>
|
|
249
|
+
`;
|
|
250
|
+
LandingPageExample.parameters = {
|
|
251
|
+
docs: {
|
|
252
|
+
description: {
|
|
253
|
+
story: 'Complete landing page example showing display typography in context with hero sections and feature highlights.'
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export const ResponsiveDisplay = () => html`
|
|
259
|
+
<div style="max-width: 100%; padding: 2rem;">
|
|
260
|
+
<bd-h as="h2" style="margin-bottom: 2rem;">Responsive Display Typography</bd-h>
|
|
261
|
+
|
|
262
|
+
<div style="background: #f1f5f9; padding: 2rem; border-radius: 12px;">
|
|
263
|
+
<bd-display kind="xl" style="margin-bottom: 1rem;">
|
|
264
|
+
Adaptive Text Sizing
|
|
265
|
+
</bd-display>
|
|
266
|
+
<bd-p kind="regular">
|
|
267
|
+
Display components automatically adjust based on viewport size and CSS variables.
|
|
268
|
+
They maintain optimal readability across all devices from mobile to desktop.
|
|
269
|
+
</bd-p>
|
|
270
|
+
|
|
271
|
+
<div style="display: flex; flex-wrap: wrap; gap: 2rem; margin-top: 2rem;">
|
|
272
|
+
<div style="flex: 1; min-width: 200px;">
|
|
273
|
+
<bd-h as="h4">Mobile</bd-h>
|
|
274
|
+
<bd-display kind="sm" style="color: #3b82f6;">Compact & Clear</bd-display>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
<div style="flex: 1; min-width: 200px;">
|
|
278
|
+
<bd-h as="h4">Tablet</bd-h>
|
|
279
|
+
<bd-display kind="md" style="color: #3b82f6;">Balanced Impact</bd-display>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<div style="flex: 1; min-width: 200px;">
|
|
283
|
+
<bd-h as="h4">Desktop</bd-h>
|
|
284
|
+
<bd-display kind="lg" style="color: #3b82f6;">Maximum Presence</bd-display>
|
|
285
|
+
</div>
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
</div>
|
|
289
|
+
`;
|
|
290
|
+
ResponsiveDisplay.parameters = {
|
|
291
|
+
docs: {
|
|
292
|
+
description: {
|
|
293
|
+
story: 'Demonstrates how display typography adapts to different screen sizes while maintaining visual impact.'
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
export const InteractiveSizeDemo = () => {
|
|
299
|
+
const sizes = [
|
|
300
|
+
{ kind: '3xl', label: '3XL', description: 'Largest - Hero sections' },
|
|
301
|
+
{ kind: '2xl', label: '2XL', description: 'Extra large - Major headlines' },
|
|
302
|
+
{ kind: 'xl', label: 'XL', description: 'Large - Prominent headers' },
|
|
303
|
+
{ kind: 'lg', label: 'LG', description: 'Standard - Balanced display' },
|
|
304
|
+
{ kind: 'md', label: 'MD', description: 'Medium - Compact display' },
|
|
305
|
+
{ kind: 'sm', label: 'SM', description: 'Small - Minimal display' }
|
|
306
|
+
];
|
|
307
|
+
|
|
308
|
+
return html`
|
|
309
|
+
<div style="max-width: 800px; margin: 0 auto;">
|
|
310
|
+
<bd-h as="h2" style="margin-bottom: 2rem;">Interactive Display Size Demo</bd-h>
|
|
311
|
+
<bd-p kind="regular" style="margin-bottom: 3rem;">
|
|
312
|
+
Explore different display sizes and their typical use cases:
|
|
313
|
+
</bd-p>
|
|
314
|
+
|
|
315
|
+
${sizes.map(size => html`
|
|
316
|
+
<div style="margin: 3rem 0; padding: 2rem; background: white; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);">
|
|
317
|
+
<bd-display kind="${size.kind}" style="margin-bottom: 1rem;">
|
|
318
|
+
${size.label} Display Size
|
|
319
|
+
</bd-display>
|
|
320
|
+
<bd-p kind="regular" style="margin-bottom: 1rem;">
|
|
321
|
+
This is the <strong>${size.kind}</strong> display size - ${size.description}.
|
|
322
|
+
</bd-p>
|
|
323
|
+
<bd-p kind="small" style="color: #64748b;">
|
|
324
|
+
CSS Variables:
|
|
325
|
+
<code>--typography-display-${size.kind}-fontSize</code>,
|
|
326
|
+
<code>--typography-display-${size.kind}-fontWeight</code>
|
|
327
|
+
</bd-p>
|
|
328
|
+
</div>
|
|
329
|
+
`)}
|
|
330
|
+
</div>
|
|
331
|
+
`;
|
|
332
|
+
};
|
|
333
|
+
InteractiveSizeDemo.parameters = {
|
|
334
|
+
docs: {
|
|
335
|
+
description: {
|
|
336
|
+
story: 'Interactive demonstration of all display sizes with their CSS variables and usage recommendations.'
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LitElement, html } from 'lit';
|
|
2
2
|
import { tokens } from '../../tokens/tokens.js';
|
|
3
|
+
import '../heading/heading.js';
|
|
3
4
|
import footerCSS from './footer-links-group.css.js';
|
|
4
5
|
|
|
5
6
|
export class BdFooterLinksGroup extends LitElement {
|
|
@@ -12,14 +13,13 @@ export class BdFooterLinksGroup extends LitElement {
|
|
|
12
13
|
this.title = '';
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
|
|
16
16
|
render() {
|
|
17
17
|
return html`
|
|
18
|
-
|
|
18
|
+
${this.title ? html`<bd-h as="h6" fontWeight="700" color="#ffffff" class="group-title">${this.title}</bd-h>` : html` `}
|
|
19
19
|
<slot></slot>
|
|
20
20
|
`;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
BdFooterLinksGroup.styles = [tokens, footerCSS];
|
|
24
24
|
|
|
25
|
-
customElements.define('bd-footer-links-group', BdFooterLinksGroup);
|
|
25
|
+
customElements.define('bd-footer-links-group', BdFooterLinksGroup);
|