@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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import './list-item.js';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title : 'Components/List/List Item',
|
|
6
|
+
component: 'bd-li',
|
|
7
|
+
argTypes : {
|
|
8
|
+
kind: {
|
|
9
|
+
control : { type: 'select' },
|
|
10
|
+
options : ['bullet', 'number', 'check', 'none'],
|
|
11
|
+
description: 'List item marker type'
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
control : { type: 'select' },
|
|
15
|
+
options : ['sm', 'md', 'lg'],
|
|
16
|
+
description: 'List item size'
|
|
17
|
+
},
|
|
18
|
+
content: {
|
|
19
|
+
control : 'text',
|
|
20
|
+
description: 'List item content'
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
parameters: {
|
|
24
|
+
docs: {
|
|
25
|
+
description: {
|
|
26
|
+
component: 'A list item component with customizable markers and styling.'
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const Template = (args) => html`
|
|
33
|
+
<bd-li kind="${args.kind}" size="${args.size}">${args.content}</bd-li>
|
|
34
|
+
`;
|
|
35
|
+
|
|
36
|
+
export const Default = Template.bind({});
|
|
37
|
+
Default.args = {
|
|
38
|
+
kind : 'bullet',
|
|
39
|
+
size : 'md',
|
|
40
|
+
content: 'Default list item with bullet marker'
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const Bullet = Template.bind({});
|
|
44
|
+
Bullet.args = {
|
|
45
|
+
kind : 'bullet',
|
|
46
|
+
content: 'Item with bullet marker'
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const Number = Template.bind({});
|
|
50
|
+
Number.args = {
|
|
51
|
+
kind : 'number',
|
|
52
|
+
content: 'Item with number marker'
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const Check = Template.bind({});
|
|
56
|
+
Check.args = {
|
|
57
|
+
kind : 'check',
|
|
58
|
+
content: 'Item with checkmark'
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const None = Template.bind({});
|
|
62
|
+
None.args = {
|
|
63
|
+
kind : 'none',
|
|
64
|
+
content: 'Item without marker'
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export const SizeVariants = () => html`
|
|
68
|
+
<div style="display: flex; flex-direction: column; gap: 1rem;">
|
|
69
|
+
<bd-li kind="bullet" size="sm">Small list item</bd-li>
|
|
70
|
+
<bd-li kind="bullet" size="md">Medium list item</bd-li>
|
|
71
|
+
<bd-li kind="bullet" size="lg">Large list item</bd-li>
|
|
72
|
+
</div>
|
|
73
|
+
`;
|
|
74
|
+
|
|
75
|
+
export const WithRichContent = () => html`
|
|
76
|
+
<bd-li kind="bullet" size="lg">
|
|
77
|
+
<strong>Featured item</strong> with additional description text that wraps to multiple lines while maintaining proper alignment with the marker.
|
|
78
|
+
</bd-li>
|
|
79
|
+
`;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
|
|
3
|
+
export default css`
|
|
4
|
+
@layer bd-components {
|
|
5
|
+
.bd-list {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
list-style: none;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* === COUNTER RESET FOR ORDERED LISTS === */
|
|
12
|
+
.bd-list[type="ordered"] {
|
|
13
|
+
counter-reset: bd-ordered-counter;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* === ORIENTATION STYLES === */
|
|
17
|
+
|
|
18
|
+
/* Vertical (default) */
|
|
19
|
+
.bd-list.vertical {
|
|
20
|
+
display: block;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.bd-list.vertical ::slotted(li) {
|
|
24
|
+
display: list-item;
|
|
25
|
+
margin-bottom: var(--spacing-8);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Ordered list markers for vertical */
|
|
29
|
+
.bd-list[type="ordered"].vertical ::slotted(li) {
|
|
30
|
+
counter-increment: bd-ordered-counter;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.bd-list[type="ordered"].vertical ::slotted(li)::before {
|
|
34
|
+
content: counter(bd-ordered-counter) ". ";
|
|
35
|
+
font-weight: var(--typography-fontWeight-semibold);
|
|
36
|
+
color: var(--color-neutral-600);
|
|
37
|
+
margin-right: var(--spacing-8);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Unordered list markers for vertical */
|
|
41
|
+
.bd-list[type="unordered"].vertical ::slotted(li)::before {
|
|
42
|
+
content: "•";
|
|
43
|
+
font-weight: var(--typography-fontWeight-semibold);
|
|
44
|
+
color: var(--color-neutral-600);
|
|
45
|
+
margin-right: var(--spacing-8);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Horizontal */
|
|
49
|
+
.bd-list.horizontal {
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-wrap: wrap;
|
|
52
|
+
align-items: center;
|
|
53
|
+
gap: var(--spacing-16);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bd-list.horizontal ::slotted(li) {
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
margin: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Remove markers for horizontal lists */
|
|
63
|
+
.bd-list.horizontal ::slotted(li)::before {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Reset counter for horizontal ordered lists */
|
|
68
|
+
.bd-list[type="ordered"].horizontal {
|
|
69
|
+
counter-reset: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.bd-list[type="ordered"].horizontal ::slotted(li) {
|
|
73
|
+
counter-increment: unset;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* === SPACING VARIANTS === */
|
|
77
|
+
|
|
78
|
+
.bd-list.sm {
|
|
79
|
+
margin: var(--spacing-8) 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.bd-list.md {
|
|
83
|
+
margin: var(--spacing-16) 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.bd-list.lg {
|
|
87
|
+
margin: var(--spacing-24) 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Horizontal spacing adjustments */
|
|
91
|
+
.bd-list.horizontal.sm {
|
|
92
|
+
gap: var(--spacing-8);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.bd-list.horizontal.md {
|
|
96
|
+
gap: var(--spacing-16);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.bd-list.horizontal.lg {
|
|
100
|
+
gap: var(--spacing-24);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* === VARIANT STYLES === */
|
|
104
|
+
|
|
105
|
+
.bd-list.compact {
|
|
106
|
+
margin: var(--spacing-4) 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.bd-list.compact ::slotted(li) {
|
|
110
|
+
margin-bottom: var(--spacing-4);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.bd-list.spacious {
|
|
114
|
+
margin: var(--spacing-32) 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.bd-list.spacious ::slotted(li) {
|
|
118
|
+
margin-bottom: var(--spacing-12);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* Horizontal variants */
|
|
122
|
+
.bd-list.horizontal.compact {
|
|
123
|
+
gap: var(--spacing-4);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.bd-list.horizontal.spacious {
|
|
127
|
+
gap: var(--spacing-32);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* === NESTED LISTS === */
|
|
131
|
+
|
|
132
|
+
.bd-list .bd-list {
|
|
133
|
+
margin-left: var(--spacing-16);
|
|
134
|
+
margin-top: var(--spacing-8);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Nested ordered list counter reset */
|
|
138
|
+
.bd-list[type="ordered"] .bd-list[type="ordered"] {
|
|
139
|
+
counter-reset: bd-ordered-nested;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Reset first/last child margins */
|
|
143
|
+
.bd-list:first-child {
|
|
144
|
+
margin-top: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.bd-list:last-child {
|
|
148
|
+
margin-bottom: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* === CUSTOM MARKER STYLES (optional enhancements) === */
|
|
152
|
+
|
|
153
|
+
/* Different marker styles for unordered lists */
|
|
154
|
+
.bd-list[type="unordered"].circle ::slotted(li)::before {
|
|
155
|
+
content: "○";
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.bd-list[type="unordered"].square ::slotted(li)::before {
|
|
159
|
+
content: "■";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.bd-list[type="unordered"].dash ::slotted(li)::before {
|
|
163
|
+
content: "–";
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Different numbering styles for ordered lists */
|
|
167
|
+
.bd-list[type="ordered"].lower-alpha ::slotted(li)::before {
|
|
168
|
+
content: counter(bd-ordered-counter, lower-alpha) ". ";
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.bd-list[type="ordered"].upper-roman ::slotted(li)::before {
|
|
172
|
+
content: counter(bd-ordered-counter, upper-roman) ". ";
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
`;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LitElement, html } from "lit";
|
|
2
|
+
import { tokens } from "../../tokens/tokens.js";
|
|
3
|
+
import listCSS from "./list.css.js";
|
|
4
|
+
|
|
5
|
+
export class BdList extends LitElement {
|
|
6
|
+
static properties = {
|
|
7
|
+
type : { type: String, reflect: true }, // 'ordered', 'unordered'
|
|
8
|
+
spacing : { type: String, reflect: true }, // sm, md, lg
|
|
9
|
+
variant : { type: String, reflect: true }, // default, compact, spacious
|
|
10
|
+
start : { type: Number, reflect: true }, // start number for ordered list
|
|
11
|
+
orientation: { type: String, reflect: true } // horizontal, vertical
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
this.type = "unordered"; // 'ordered' | 'unordered'
|
|
17
|
+
this.spacing = "md";
|
|
18
|
+
this.variant = "default";
|
|
19
|
+
this.start = 1;
|
|
20
|
+
this.orientation = "vertical";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
render() {
|
|
24
|
+
const classes = `bd-list ${this.spacing} ${this.variant} ${this.orientation}`;
|
|
25
|
+
|
|
26
|
+
if (this.type === "ordered") {
|
|
27
|
+
return html`
|
|
28
|
+
<ol class="${classes}" start="${this.start}">
|
|
29
|
+
<slot></slot>
|
|
30
|
+
</ol>
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return html`
|
|
35
|
+
<ul class="${classes}">
|
|
36
|
+
<slot></slot>
|
|
37
|
+
</ul>
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static styles = [tokens, listCSS];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
customElements.define("bd-list", BdList);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
2
|
import { tokens } from "../../tokens/tokens.js";
|
|
3
|
+
import "../heading/heading.js";
|
|
3
4
|
import modalCSS from "../modal/modal.css";
|
|
5
|
+
import "../paragraph/paragraph.js";
|
|
4
6
|
|
|
5
7
|
export class BdModal extends LitElement {
|
|
6
8
|
static properties = {
|
|
@@ -10,8 +12,6 @@ export class BdModal extends LitElement {
|
|
|
10
12
|
modalText: { type: String }
|
|
11
13
|
};
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
15
|
_onClose() {
|
|
16
16
|
this.dispatchEvent(new CustomEvent("close-modal", { bubbles: true, composed: true }));
|
|
17
17
|
}
|
|
@@ -28,14 +28,15 @@ export class BdModal extends LitElement {
|
|
|
28
28
|
${this.icon
|
|
29
29
|
? html`<img src="${this.icon}" alt="icon" class="bd-carousel-modal-icon" />`
|
|
30
30
|
: ""}
|
|
31
|
-
<h2 id="modal-title">${this.title}</
|
|
32
|
-
<p id="modal-description">${this.modalText}</p>
|
|
31
|
+
<bd-h as="h2" id="modal-title">${this.title}</bd-h>
|
|
32
|
+
<bd-p kind="regular" id="modal-description">${this.modalText}</bd-p>
|
|
33
33
|
<button @click="${this._onClose}" aria-label="Close modal">Close</button>
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
`;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
|
|
39
40
|
BdModal.styles = [tokens, modalCSS];
|
|
40
41
|
|
|
41
|
-
customElements.define("bd-modal", BdModal);
|
|
42
|
+
customElements.define("bd-modal", BdModal);
|
|
@@ -1,14 +1,44 @@
|
|
|
1
1
|
import { css } from "lit";
|
|
2
2
|
|
|
3
3
|
export default css`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
:host {
|
|
5
|
+
display: block;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
p {
|
|
9
|
+
all: unset;
|
|
10
|
+
display: block;
|
|
11
|
+
font-family: var(--typography-body-regular-fontFamily, var(--typography-fontFamily-sans));
|
|
12
|
+
color: var(--color-neutral-900);
|
|
13
|
+
margin-bottom: var(--spacing-md);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* === Font Size Variants === */
|
|
17
|
+
:host([kind="large"]) p {
|
|
18
|
+
font-size: var(--typography-body-large-fontSize);
|
|
19
|
+
font-weight: var(--typography-body-large-fontWeight);
|
|
20
|
+
line-height: var(--typography-body-large-lineHeight);
|
|
21
|
+
letter-spacing: var(--typography-body-large-letterSpacing);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host([kind="regular"]) p {
|
|
25
|
+
font-size: var(--typography-body-regular-fontSize);
|
|
26
|
+
font-weight: var(--typography-body-regular-fontWeight);
|
|
27
|
+
line-height: var(--typography-body-regular-lineHeight);
|
|
28
|
+
letter-spacing: var(--typography-body-regular-letterSpacing);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([kind="small"]) p {
|
|
32
|
+
font-size: var(--typography-body-small-fontSize);
|
|
33
|
+
font-weight: var(--typography-body-small-fontWeight);
|
|
34
|
+
line-height: var(--typography-body-small-lineHeight);
|
|
35
|
+
letter-spacing: var(--typography-body-small-letterSpacing);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:host([kind="lead"]) p {
|
|
39
|
+
font-size: var(--typography-body-lead-fontSize);
|
|
40
|
+
font-weight: var(--typography-body-lead-fontWeight);
|
|
41
|
+
line-height: var(--typography-body-lead-lineHeight);
|
|
42
|
+
letter-spacing: var(--typography-body-lead-letterSpacing);
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
@@ -1,60 +1,22 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
2
|
import { tokens } from "../../tokens/tokens.js";
|
|
3
|
-
import
|
|
4
|
-
import paragraphText from "../paragraph/paragraph.css.js";
|
|
3
|
+
import paragraphCSS from "./paragraph.css.js";
|
|
5
4
|
|
|
6
|
-
class
|
|
5
|
+
export class BdP extends LitElement {
|
|
7
6
|
static properties = {
|
|
8
|
-
|
|
7
|
+
kind: { type: String, reflect: true }
|
|
9
8
|
};
|
|
10
9
|
|
|
11
10
|
constructor() {
|
|
12
11
|
super();
|
|
13
|
-
this.
|
|
14
|
-
|
|
12
|
+
this.kind = "regular";
|
|
15
13
|
}
|
|
16
14
|
|
|
17
15
|
render() {
|
|
18
|
-
return html
|
|
16
|
+
return html`<p><slot></slot></p>`;
|
|
19
17
|
}
|
|
20
|
-
}
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
class TextFontCod extends LitElement {
|
|
24
|
-
static properties = {
|
|
25
|
-
text: { type: String }
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
constructor() {
|
|
29
|
-
super();
|
|
30
|
-
this.text = "Componenta Text Font Cod.";
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
render() {
|
|
34
|
-
return html` <p class="bd-font-cod">${this.text}</p> `;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class TextFontComp extends LitElement {
|
|
40
|
-
static properties = {
|
|
41
|
-
text: { type: String }
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
constructor() {
|
|
45
|
-
super();
|
|
46
|
-
this.text = "Componenta Text Font Comp.";
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
render() {
|
|
51
|
-
return html` <p class="bd-font-comp">${this.text}</p> `;
|
|
52
|
-
}
|
|
19
|
+
static styles = [tokens, paragraphCSS];
|
|
53
20
|
}
|
|
54
|
-
TextFontBrand.styles = [tokens, paragraphText, textCSS];
|
|
55
|
-
TextFontCod.styles = [tokens, paragraphText, textCSS];
|
|
56
|
-
TextFontComp.styles = [tokens, paragraphText, textCSS];
|
|
57
21
|
|
|
58
|
-
customElements.define("bd-
|
|
59
|
-
customElements.define("bd-font-cod", TextFontCod);
|
|
60
|
-
customElements.define("bd-font-comp", TextFontComp);
|
|
22
|
+
customElements.define("bd-p", BdP);
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import '../cards/card.js';
|
|
3
|
+
import '../heading/heading.js';
|
|
4
|
+
import './paragraph.js';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title : 'Atoms/Paragraph',
|
|
8
|
+
component: 'bd-p',
|
|
9
|
+
argTypes : {
|
|
10
|
+
kind: {
|
|
11
|
+
control : { type: 'select' },
|
|
12
|
+
options : ['regular', 'large', 'small', 'lead'],
|
|
13
|
+
description: 'Paragraph size variant'
|
|
14
|
+
},
|
|
15
|
+
content: {
|
|
16
|
+
control : 'text',
|
|
17
|
+
description: 'Paragraph text content'
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
parameters: {
|
|
21
|
+
docs: {
|
|
22
|
+
description: {
|
|
23
|
+
component: 'A customizable paragraph component with consistent typography and multiple size variants.'
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const Template = ({ kind, content }) => html`
|
|
30
|
+
<bd-p kind="${kind}">${content}</bd-p>
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
export const AllVariants = () => html`
|
|
34
|
+
<div style="display: flex; flex-direction: column; gap: 2rem; max-width: 600px;">
|
|
35
|
+
<div>
|
|
36
|
+
<bd-p kind="lead">Lead Paragraph - This is a lead paragraph with larger text to introduce content.</bd-p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div>
|
|
40
|
+
<bd-p kind="large">Large Paragraph - This is a large paragraph for emphasized content that needs more attention.</bd-p>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div>
|
|
44
|
+
<bd-p kind="regular">Regular Paragraph - This is the standard paragraph size for most body text content throughout the application.</bd-p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div>
|
|
48
|
+
<bd-p kind="small">Small Paragraph - This is a small paragraph for secondary information, captions, or less important content.</bd-p>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
export const InCardContext = () => html`
|
|
54
|
+
<bd-card-section title="Product Features">
|
|
55
|
+
<bd-card-item
|
|
56
|
+
title="Advanced Protection"
|
|
57
|
+
icon="/api/placeholder/40/40"
|
|
58
|
+
align="center"
|
|
59
|
+
>
|
|
60
|
+
<bd-p kind="regular">Comprehensive security against malware, ransomware, and online threats with real-time scanning and behavioral analysis.</bd-p>
|
|
61
|
+
<bd-p kind="small">Includes automatic threat detection and removal</bd-p>
|
|
62
|
+
</bd-card-item>
|
|
63
|
+
|
|
64
|
+
<bd-card-item
|
|
65
|
+
title="Privacy Features"
|
|
66
|
+
icon="/api/placeholder/40/40"
|
|
67
|
+
align="center"
|
|
68
|
+
>
|
|
69
|
+
<bd-p kind="lead">Protect your personal information with our complete privacy suite.</bd-p>
|
|
70
|
+
<bd-p kind="regular">VPN, password manager, and webcam protection work together to keep your data secure from unauthorized access.</bd-p>
|
|
71
|
+
</bd-card-item>
|
|
72
|
+
|
|
73
|
+
<bd-card-item
|
|
74
|
+
title="Performance Optimization"
|
|
75
|
+
icon="/api/placeholder/40/40"
|
|
76
|
+
align="center"
|
|
77
|
+
>
|
|
78
|
+
<bd-p kind="regular">Lightweight design ensures minimal impact on system resources while providing maximum protection.</bd-p>
|
|
79
|
+
<bd-p kind="small">Uses less than 2% CPU on average</bd-p>
|
|
80
|
+
<bd-p kind="small">Memory usage: ~150MB</bd-p>
|
|
81
|
+
</bd-card-item>
|
|
82
|
+
</bd-card-section>
|
|
83
|
+
`;
|
|
84
|
+
InCardContext.parameters = {
|
|
85
|
+
docs: {
|
|
86
|
+
description: {
|
|
87
|
+
story: 'Paragraph variants used within card components to demonstrate real-world usage patterns.'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const MixedCardLayouts = () => html`
|
|
93
|
+
<div style="display: flex; flex-direction: column; gap: 3rem;">
|
|
94
|
+
|
|
95
|
+
<bd-card-section title="Security Solutions">
|
|
96
|
+
<bd-card-item
|
|
97
|
+
title="Antivirus Protection"
|
|
98
|
+
align="start"
|
|
99
|
+
>
|
|
100
|
+
<bd-p kind="regular">Real-time protection against viruses, malware, and spyware with advanced heuristic detection.</bd-p>
|
|
101
|
+
<bd-p kind="small">Updated virus definitions multiple times daily</bd-p>
|
|
102
|
+
</bd-card-item>
|
|
103
|
+
|
|
104
|
+
<bd-card-item
|
|
105
|
+
title="Firewall"
|
|
106
|
+
align="start"
|
|
107
|
+
>
|
|
108
|
+
<bd-p kind="large">Intelligent firewall monitors all network traffic</bd-p>
|
|
109
|
+
<bd-p kind="regular">Blocks unauthorized access attempts and suspicious connections automatically.</bd-p>
|
|
110
|
+
</bd-card-item>
|
|
111
|
+
|
|
112
|
+
<bd-card-item
|
|
113
|
+
title="Web Protection"
|
|
114
|
+
align="start"
|
|
115
|
+
>
|
|
116
|
+
<bd-p kind="regular">Safe browsing technology blocks malicious websites and phishing attempts before they can harm your system.</bd-p>
|
|
117
|
+
<bd-p kind="small">Protects against zero-day threats</bd-p>
|
|
118
|
+
</bd-card-item>
|
|
119
|
+
</bd-card-section>
|
|
120
|
+
|
|
121
|
+
<bd-card-section title="Additional Features">
|
|
122
|
+
<bd-card-item
|
|
123
|
+
title="Parental Control"
|
|
124
|
+
icon="/api/placeholder/40/40"
|
|
125
|
+
align="center"
|
|
126
|
+
>
|
|
127
|
+
<bd-p kind="lead">Keep your family safe online</bd-p>
|
|
128
|
+
<bd-p kind="regular">Monitor and control internet usage, block inappropriate content, and set time limits for children's devices.</bd-p>
|
|
129
|
+
</bd-card-item>
|
|
130
|
+
|
|
131
|
+
<bd-card-item
|
|
132
|
+
title="File Encryption"
|
|
133
|
+
icon="/api/placeholder/40/40"
|
|
134
|
+
align="center"
|
|
135
|
+
>
|
|
136
|
+
<bd-p kind="regular">Secure your sensitive files with military-grade encryption to prevent unauthorized access.</bd-p>
|
|
137
|
+
<bd-p kind="small">AES-256 encryption standard</bd-p>
|
|
138
|
+
</bd-card-item>
|
|
139
|
+
</bd-card-section>
|
|
140
|
+
|
|
141
|
+
</div>
|
|
142
|
+
`;
|
|
143
|
+
MixedCardLayouts.parameters = {
|
|
144
|
+
docs: {
|
|
145
|
+
description: {
|
|
146
|
+
story: 'Different card layouts showing various paragraph variants in context with centered and start-aligned content.'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export const CardWithDifferentParagraphStyles = () => html`
|
|
152
|
+
<bd-card-section title="Feature Details">
|
|
153
|
+
<bd-card-item
|
|
154
|
+
title="Complete Security Suite"
|
|
155
|
+
align="center"
|
|
156
|
+
>
|
|
157
|
+
<bd-p kind="lead">All-in-one protection for your digital life</bd-p>
|
|
158
|
+
<bd-p kind="regular">Our comprehensive security suite combines multiple layers of protection to safeguard your devices, data, and privacy from evolving cyber threats.</bd-p>
|
|
159
|
+
<bd-p kind="small">Compatible with Windows, Mac, Android, and iOS</bd-p>
|
|
160
|
+
</bd-card-item>
|
|
161
|
+
|
|
162
|
+
<bd-card-item
|
|
163
|
+
title="System Requirements"
|
|
164
|
+
align="start"
|
|
165
|
+
>
|
|
166
|
+
<bd-p kind="large">Minimum system specifications</bd-p>
|
|
167
|
+
<bd-p kind="regular">To ensure optimal performance, your system should meet the following requirements:</bd-p>
|
|
168
|
+
<bd-p kind="small">• Operating System: Windows 10/11 or macOS 10.14+</bd-p>
|
|
169
|
+
<bd-p kind="small">• Memory: 2GB RAM minimum</bd-p>
|
|
170
|
+
<bd-p kind="small">• Storage: 2.5GB available space</bd-p>
|
|
171
|
+
<bd-p kind="small">• Internet connection for updates</bd-p>
|
|
172
|
+
</bd-card-item>
|
|
173
|
+
|
|
174
|
+
<bd-card-item
|
|
175
|
+
title="Technical Support"
|
|
176
|
+
align="center"
|
|
177
|
+
>
|
|
178
|
+
<bd-p kind="regular">Our dedicated support team is available 24/7 to help with any issues or questions you may have.</bd-p>
|
|
179
|
+
<bd-p kind="small">Response time: under 2 hours for critical issues</bd-p>
|
|
180
|
+
<bd-p kind="small">Multiple support channels available</bd-p>
|
|
181
|
+
</bd-card-item>
|
|
182
|
+
</bd-card-section>
|
|
183
|
+
`;
|
|
184
|
+
CardWithDifferentParagraphStyles.parameters = {
|
|
185
|
+
docs: {
|
|
186
|
+
description: {
|
|
187
|
+
story: 'Cards demonstrating the use of different paragraph styles (lead, large, regular, small) for varied content hierarchy.'
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export const Regular = Template.bind({});
|
|
193
|
+
Regular.args = {
|
|
194
|
+
kind : 'regular',
|
|
195
|
+
content: 'This is a regular paragraph with standard body text size.'
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
export const Large = Template.bind({});
|
|
199
|
+
Large.args = {
|
|
200
|
+
kind : 'large',
|
|
201
|
+
content: 'This is a large paragraph for emphasized content.'
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export const Small = Template.bind({});
|
|
205
|
+
Small.args = {
|
|
206
|
+
kind : 'small',
|
|
207
|
+
content: 'This is a small paragraph for secondary information.'
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
export const Lead = Template.bind({});
|
|
211
|
+
Lead.args = {
|
|
212
|
+
kind : 'lead',
|
|
213
|
+
content: 'This is a lead paragraph for introductory text.'
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
export const WithHeadings = () => html`
|
|
217
|
+
<div style="max-width: 600px;">
|
|
218
|
+
<bd-h as="h1">Main Section Title</bd-h>
|
|
219
|
+
<bd-p kind="lead">This lead paragraph introduces the main section.</bd-p>
|
|
220
|
+
|
|
221
|
+
<bd-h as="h2">Subsection Heading</bd-h>
|
|
222
|
+
<bd-p kind="regular">This regular paragraph contains the main content details.</bd-p>
|
|
223
|
+
</div>
|
|
224
|
+
`;
|
|
225
|
+
|
|
226
|
+
export const ContentHierarchy = () => html`
|
|
227
|
+
<div style="max-width: 600px;">
|
|
228
|
+
<bd-h as="h1">Product Overview</bd-h>
|
|
229
|
+
<bd-p kind="lead">Our product offers comprehensive security solutions.</bd-p>
|
|
230
|
+
|
|
231
|
+
<bd-p kind="regular">With real-time threat detection and automatic updates.</bd-p>
|
|
232
|
+
|
|
233
|
+
<bd-p kind="small">System requirements may vary based on the specific product version.</bd-p>
|
|
234
|
+
</div>
|
|
235
|
+
`;
|
|
File without changes
|