@repobit/dex-system-design 0.23.61 → 0.23.63
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
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.23.63](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.62...@repobit/dex-system-design@0.23.63) (2026-07-02)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **DEX-1014:** css adjustments for cards4 component
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## [0.23.62](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.61...@repobit/dex-system-design@0.23.62) (2026-07-01)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **DEX-1014:** css adjustments for features component
|
|
18
|
+
* **DEX-1014:** css adjustments for features component
|
|
19
|
+
|
|
20
|
+
|
|
6
21
|
## [0.23.61](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.60...@repobit/dex-system-design@0.23.61) (2026-07-01)
|
|
7
22
|
|
|
8
23
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@repobit/dex-system-design",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.63",
|
|
4
4
|
"description": "Design system based on Web Components.",
|
|
5
5
|
"author": "Iordache Matei Cezar <miordache@bitdefender.com>",
|
|
6
6
|
"homepage": "https://github.com/bitdefender/dex-core#readme",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"url": "https://github.com/bitdefender/dex-core/issues"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@repobit/dex-store": "1.3.
|
|
74
|
-
"@repobit/dex-store-elements": "1.4.
|
|
73
|
+
"@repobit/dex-store": "1.3.59",
|
|
74
|
+
"@repobit/dex-store-elements": "1.4.51",
|
|
75
75
|
"lit": "^3.3.2"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
"volta": {
|
|
89
89
|
"node": "24.14.0"
|
|
90
90
|
},
|
|
91
|
-
"gitHead": "
|
|
91
|
+
"gitHead": "0bc5274bdbaef4a05431b2df49170b11d375aa59"
|
|
92
92
|
}
|
|
@@ -5,14 +5,17 @@ export default css`
|
|
|
5
5
|
display: block;
|
|
6
6
|
--background-card-grey: var(--color-neutral-25);
|
|
7
7
|
--border-card-grey: var(--color-neutral-50);
|
|
8
|
-
padding-top: var(--spacing-
|
|
9
|
-
padding-bottom: var(--spacing-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
padding-top: var(--spacing-64);
|
|
9
|
+
padding-bottom: var(--spacing-64);
|
|
10
|
+
max-width: 1290px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
::slotted([slot="icon"]) {
|
|
14
|
+
width: 48px !important;
|
|
15
|
+
height: 48px !important;
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
16
19
|
.bd-section-title-s {
|
|
17
20
|
font-family: var(--typography-fontFamily-sans);
|
|
18
21
|
font-weight: var(--typography-fontWeight-semibold);
|
|
@@ -77,26 +80,23 @@ export default css`
|
|
|
77
80
|
display: flex;
|
|
78
81
|
flex-direction: column;
|
|
79
82
|
align-items: start;
|
|
80
|
-
justify-content:
|
|
83
|
+
justify-content: flex-start;
|
|
81
84
|
text-align: start;
|
|
82
85
|
transition: transform 0.2s ease-in-out;
|
|
83
|
-
min-height: 135px;
|
|
84
86
|
position: relative;
|
|
85
87
|
z-index: 2;
|
|
86
88
|
scroll-snap-align: start;
|
|
87
89
|
font-family: var(--typography-fontFamily-sans);
|
|
90
|
+
box-sizing: border-box;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
|
-
/* Stiluri pentru carduri fără conținut (doar icon + titlu) */
|
|
91
93
|
.bd-light-box-no-content {
|
|
92
94
|
justify-content: center !important;
|
|
93
95
|
align-items: center !important;
|
|
94
96
|
text-align: center !important;
|
|
95
|
-
min-height: 200px;
|
|
96
97
|
gap: var(--spacing-32);
|
|
97
98
|
}
|
|
98
99
|
|
|
99
|
-
/* Stiluri pentru aliniere center */
|
|
100
100
|
.bd-light-box-center {
|
|
101
101
|
align-items: center !important;
|
|
102
102
|
justify-content: center !important;
|
|
@@ -111,7 +111,6 @@ export default css`
|
|
|
111
111
|
text-align: start;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
/* Titlu pentru carduri fără conținut */
|
|
115
114
|
.bd-light-title-no-content h3 {
|
|
116
115
|
margin: var(--spacing-0) !important;
|
|
117
116
|
font-size: var(--heading-small) !important;
|
|
@@ -141,7 +140,6 @@ export default css`
|
|
|
141
140
|
width: var(--spacing-44);
|
|
142
141
|
}
|
|
143
142
|
|
|
144
|
-
/* Iconiță pentru carduri fără conținut */
|
|
145
143
|
.bd-light-box-no-content .bd-light-icon-s {
|
|
146
144
|
margin: 0 !important;
|
|
147
145
|
bottom: 0;
|
|
@@ -157,14 +155,13 @@ export default css`
|
|
|
157
155
|
position: relative;
|
|
158
156
|
}
|
|
159
157
|
|
|
160
|
-
/* Header pentru carduri fără conținut */
|
|
161
158
|
.bd-light-box-no-content .bd-light-box-header-s {
|
|
162
159
|
align-items: center !important;
|
|
163
160
|
margin: 0 !important;
|
|
164
161
|
}
|
|
165
162
|
|
|
166
163
|
.bd-light-box-header-center {
|
|
167
|
-
align-items: center !important;
|
|
164
|
+
align-items: center !important;
|
|
168
165
|
padding-bottom: var(--spacing-16);
|
|
169
166
|
}
|
|
170
167
|
|
|
@@ -174,7 +171,6 @@ export default css`
|
|
|
174
171
|
gap: var(--spacing-4, 4px);
|
|
175
172
|
}
|
|
176
173
|
|
|
177
|
-
/* Container titlu pentru carduri fără conținut */
|
|
178
174
|
.bd-light-title-no-content {
|
|
179
175
|
margin: 0 !important;
|
|
180
176
|
width: 100%;
|
|
@@ -186,9 +182,11 @@ export default css`
|
|
|
186
182
|
width: 380px;
|
|
187
183
|
padding: 1.5em;
|
|
188
184
|
}
|
|
185
|
+
|
|
189
186
|
.bd-light-box-s h3 {
|
|
190
187
|
font-size: 1.1em;
|
|
191
188
|
}
|
|
189
|
+
|
|
192
190
|
.bd-light-box-s p {
|
|
193
191
|
font-size: 0.95em;
|
|
194
192
|
}
|
|
@@ -223,11 +221,6 @@ export default css`
|
|
|
223
221
|
.bd-light-box-s {
|
|
224
222
|
width: 100%;
|
|
225
223
|
padding: 1em;
|
|
226
|
-
min-height: 300px;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.bd-light-box-no-content {
|
|
230
|
-
min-height: 250px;
|
|
231
224
|
}
|
|
232
225
|
|
|
233
226
|
.bd-light-box-s h3 {
|
|
@@ -10,24 +10,86 @@ class Card extends LitElement {
|
|
|
10
10
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
13
|
-
this.title
|
|
13
|
+
this.title = "";
|
|
14
|
+
this._resizeObserver = null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
_isVisible() {
|
|
18
|
+
return this.offsetWidth > 0 && this.offsetHeight > 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_equalizeHeights() {
|
|
22
|
+
if (!this._isVisible()) return;
|
|
23
|
+
|
|
24
|
+
const items = Array.from(this.querySelectorAll("bd-card-item"));
|
|
25
|
+
if (!items.length) return;
|
|
26
|
+
|
|
27
|
+
items.forEach(item => {
|
|
28
|
+
const box = item.renderRoot?.querySelector(".bd-light-box-s");
|
|
29
|
+
if (box) {
|
|
30
|
+
box.style.height = "auto";
|
|
31
|
+
box.style.minHeight = "0";
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
requestAnimationFrame(() => {
|
|
36
|
+
let maxH = 0;
|
|
37
|
+
items.forEach(item => {
|
|
38
|
+
const box = item.renderRoot?.querySelector(".bd-light-box-s");
|
|
39
|
+
if (!box) return;
|
|
40
|
+
const h = box.getBoundingClientRect().height;
|
|
41
|
+
if (h > maxH) maxH = h;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (maxH > 0) {
|
|
45
|
+
items.forEach(item => {
|
|
46
|
+
const box = item.renderRoot?.querySelector(".bd-light-box-s");
|
|
47
|
+
if (box) {
|
|
48
|
+
box.style.height = `${maxH}px`;
|
|
49
|
+
box.style.minHeight = `${maxH}px`;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async firstUpdated() {
|
|
57
|
+
if (document.fonts?.ready) {
|
|
58
|
+
await document.fonts.ready;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
await new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r)));
|
|
62
|
+
this._equalizeHeights();
|
|
63
|
+
|
|
64
|
+
const track = this.renderRoot.querySelector(".bd-light-carousel-track-s");
|
|
65
|
+
if (track) {
|
|
66
|
+
this._resizeObserver = new ResizeObserver(() => {
|
|
67
|
+
this._equalizeHeights();
|
|
68
|
+
});
|
|
69
|
+
this._resizeObserver.observe(track);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
disconnectedCallback() {
|
|
74
|
+
super.disconnectedCallback();
|
|
75
|
+
this._resizeObserver?.disconnect();
|
|
14
76
|
}
|
|
15
77
|
|
|
16
78
|
render() {
|
|
17
79
|
return html`
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
80
|
+
<section class="bd-light-carousel-s">
|
|
81
|
+
${this.title
|
|
82
|
+
? html`
|
|
83
|
+
<div class="bd-header-light-carousel-s">
|
|
84
|
+
<bd-h as="h1" class="bd-section-title-s">${this.title}</bd-h>
|
|
85
|
+
</div>
|
|
86
|
+
`
|
|
87
|
+
: null}
|
|
88
|
+
<div class="bd-light-carousel-track-s">
|
|
89
|
+
<slot @slotchange=${() => this._equalizeHeights()}></slot>
|
|
90
|
+
</div>
|
|
91
|
+
</section>
|
|
92
|
+
`;
|
|
31
93
|
}
|
|
32
94
|
}
|
|
33
95
|
|
|
@@ -41,7 +103,7 @@ class CardItem extends LitElement {
|
|
|
41
103
|
constructor() {
|
|
42
104
|
super();
|
|
43
105
|
this.title = "";
|
|
44
|
-
this.icon
|
|
106
|
+
this.icon = "";
|
|
45
107
|
this.align = "start";
|
|
46
108
|
}
|
|
47
109
|
|
|
@@ -79,13 +141,13 @@ class CardItem extends LitElement {
|
|
|
79
141
|
const hasContent = this._hasContent();
|
|
80
142
|
|
|
81
143
|
return html`
|
|
82
|
-
<div class="bd-light-box-s ${isCentered ?
|
|
83
|
-
<div class="bd-light-box-header-s ${isCentered ?
|
|
144
|
+
<div class="bd-light-box-s ${isCentered ? "bd-light-box-center" : ""} ${!hasContent ? "bd-light-box-no-content" : ""}">
|
|
145
|
+
<div class="bd-light-box-header-s ${isCentered ? "bd-light-box-header-center" : ""}">
|
|
84
146
|
${this._renderIcon()}
|
|
85
147
|
</div>
|
|
86
148
|
${this.title
|
|
87
149
|
? html`
|
|
88
|
-
<div class="bd-light-title-badge-wrapper-s ${!hasContent ?
|
|
150
|
+
<div class="bd-light-title-badge-wrapper-s ${!hasContent ? "bd-light-title-no-content" : ""}">
|
|
89
151
|
<bd-h as="h5" fontWeight="700">${this.title}</bd-h>
|
|
90
152
|
</div>
|
|
91
153
|
`
|
|
@@ -96,7 +158,7 @@ class CardItem extends LitElement {
|
|
|
96
158
|
}
|
|
97
159
|
}
|
|
98
160
|
|
|
99
|
-
Card.styles
|
|
161
|
+
Card.styles = [tokens, carouselCSS];
|
|
100
162
|
CardItem.styles = [tokens, carouselCSS];
|
|
101
163
|
|
|
102
164
|
customElements.define("bd-card-item", CardItem);
|
|
@@ -26,9 +26,10 @@ export default {
|
|
|
26
26
|
### Usage
|
|
27
27
|
\`\`\`html
|
|
28
28
|
<bd-card-section title="Why Bitdefender">
|
|
29
|
-
<bd-card-item title="AI
|
|
29
|
+
<bd-card-item title="AI Protectionn" align="center">
|
|
30
30
|
<bd-individual-icon slot="icon" width="32" height="32" color="#006DFF"></bd-individual-icon>
|
|
31
31
|
<bd-p>Powered by machine learning.</bd-p>
|
|
32
|
+
<bd-p>Powered by machine learning.</bd-p>
|
|
32
33
|
</bd-card-item>
|
|
33
34
|
</bd-card-section>
|
|
34
35
|
\`\`\`
|
|
@@ -21,12 +21,10 @@ export default css`
|
|
|
21
21
|
box-sizing: border-box;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
/* Titlu + subtitle + tab buttons — au padding inline */
|
|
25
24
|
bd-highlight,
|
|
26
25
|
.bd-tabs-subtitle,
|
|
27
26
|
.bd-tabs-container {
|
|
28
|
-
|
|
29
|
-
width: 100%;
|
|
27
|
+
margin: var(--spacing-24);
|
|
30
28
|
box-sizing: border-box;
|
|
31
29
|
}
|
|
32
30
|
|