@repobit/dex-system-design 0.23.9 → 0.23.11

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.11](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.10...@repobit/dex-system-design@0.23.11) (2026-04-01)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **DEX-1014:** fix gap and card sizes
11
+ * **DEX-1014:** new changes for anchor-nav and compare to solve some issues
12
+
13
+
14
+ ## [0.23.10](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.9...@repobit/dex-system-design@0.23.10) (2026-03-31)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **DEX-1014:** quick changes on multiple components
19
+
20
+
6
21
  ## [0.23.9](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.8...@repobit/dex-system-design@0.23.9) (2026-03-31)
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.9",
3
+ "version": "0.23.11",
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",
@@ -86,5 +86,5 @@
86
86
  "volta": {
87
87
  "node": "24.14.0"
88
88
  },
89
- "gitHead": "fd4b2919ca814aa5bbb2f9ee9b1b3c3e21ed0e20"
89
+ "gitHead": "d585162a40165e7aa8f96463433be03d5aef2f05"
90
90
  }
@@ -0,0 +1,2 @@
1
+ export const ACCORDION_ICON_PLUS = "/assets/plus-fill.svg";
2
+ export const ACCORDION_ICON_MINUS = "/assets/minus-fill.svg";
@@ -1,92 +1,341 @@
1
1
  import { css } from "lit";
2
2
 
3
3
  export const anchorNavStyles = css`
4
- :host {
5
- padding: var(--spacing-0) 15em;
6
- margin: var(--spacing-0) auto;
7
- --bd-accesibility-focus: var(--color-blue-500);
8
- }
9
-
10
- .bd-container {
11
- flex-wrap: wrap;
12
- justify-content: space-between;
13
- gap: 2.5em;
14
- }
15
-
16
- a:focus-visible {
17
- outline: var(--spacing-2) solid var(--bd-accesibility-focus);
18
- outline-offset: var(--spacing-2);
19
- border-radius: var(--space-2xs);
20
- }
21
-
22
- nav {
23
- position: sticky;
24
- top: 0;
25
- z-index: 1000;
26
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
27
- display: flex;
28
- justify-content: space-between;
29
- align-items: center;
30
- border-top: 1px solid #f0f0f0;
31
- border-bottom: 1px solid #f0f0f0;
32
- padding: var(--spacing-10) 15em;
33
- width: 100%;
34
- box-sizing: border-box;
35
- background: white;
36
- margin-bottom: var(--spacing-64);
37
- }
38
-
39
- .bd-container {
40
- padding: 50px;
41
- }
42
-
43
-
44
- [id$="-section"] {
45
- scroll-margin-top: 120px;
46
- }
47
-
48
- .anchor-links {
49
- position: relative;
50
- display: flex;
51
- gap: var(--spacing-32);
52
- }
53
-
54
- a {
55
- position: relative;
56
- text-decoration: none;
57
- color: black;
58
- font-weight: 600;
59
- padding: var(--spacing-10) var(--spacing-0);
60
- display: inline-block;
61
- font-size: var(--typography-body-regular-fontSize) !important;
62
- font-family: var(--typography-fontFamily-sans) !important;
63
- }
64
-
65
- a::after {
66
- content: "";
67
- position: absolute;
68
- left: var(--spacing-0);
69
- bottom: -14px;
70
- width: 0%;
71
- height: 3px;
72
- background-color: #006dff;
73
- transition: width 0.3s ease;
74
- }
75
-
76
- a.active::after {
77
- width: 100%;
78
- }
79
-
80
- `;
81
-
82
- export const anchorNavItemStyles = css`
83
4
  :host {
84
- display: none;
5
+ display: block;
6
+ position: sticky;
7
+ top: var(--spacing-0);
8
+ z-index: 1000;
9
+ border-top: var(--border-width-1) solid var(--color-neutral-100);
10
+ border-bottom: var(--border-width-1) solid var(--color-neutral-100);
11
+ padding-block: var(--spacing-10);
12
+ padding-inline: var(--layout-ensemble-inline-padding);
13
+ width: 100%;
14
+ box-sizing: border-box;
15
+ background: var(--color-neutral-0);
16
+ margin-bottom: var(--spacing-0);
17
+ --bd-accesibility-focus: var(--color-blue-500);
85
18
  }
86
19
 
87
- :host([active]) {
20
+ a:focus-visible,
21
+ .bd-anchor-nav__cta:focus-visible,
22
+ .bd-anchor-nav__dropdown-toggle:focus-visible,
23
+ .bd-anchor-nav__dropdown-option:focus-visible {
24
+ outline: var(--spacing-2) solid var(--bd-accesibility-focus);
25
+ outline-offset: var(--spacing-2);
26
+ border-radius: var(--space-2xs);
27
+ }
28
+
29
+ nav {
88
30
  display: block;
89
- padding: var(--spacing-0) 15em;
90
- margin: var(--spacing-0) auto;
31
+ margin: var(--spacing-0);
32
+ padding: var(--spacing-0);
33
+ width: 100%;
34
+ box-sizing: border-box;
35
+ }
36
+
37
+ .bd-anchor-nav__inner {
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ justify-content: space-between;
41
+ align-items: center;
42
+ gap: var(--spacing-32);
43
+ width: 100%;
44
+ max-width: var(--layout-compare-grid-max);
45
+ margin-inline: auto;
46
+ box-sizing: border-box;
47
+ }
48
+
49
+ .anchor-links {
50
+ position: relative;
51
+ display: flex;
52
+ flex-wrap: wrap;
53
+ align-items: center;
54
+ gap: var(--spacing-16) var(--spacing-32);
55
+ row-gap: var(--spacing-8);
56
+ flex: 1 1 auto;
57
+ min-width: 0;
58
+ }
59
+
60
+ .anchor-links--desktop {
61
+ display: flex;
62
+ }
63
+
64
+ .bd-anchor-nav__dropdown {
65
+ display: none;
66
+ position: relative;
67
+ flex: 1 1 auto;
68
+ min-width: 0;
69
+ width: 100%;
70
+ }
71
+
72
+ /* ── Dropdown toggle ── */
73
+
74
+ .bd-anchor-nav__dropdown-toggle {
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: space-between;
78
+ gap: var(--spacing-12);
79
+ width: 100%;
80
+ min-height: var(--dimension-48px);
81
+ padding-block: var(--spacing-10);
82
+ padding-inline: var(--spacing-16);
83
+ box-sizing: border-box;
84
+ font-family: var(--typography-fontFamily-sans);
85
+ font-size: var(--typography-body-regular-fontSize);
86
+ font-weight: var(--typography-fontWeight-semibold);
87
+ color: var(--color-neutral-900);
88
+ background: var(--color-neutral-25);
89
+ border: var(--border-width-1) solid var(--color-neutral-200);
90
+ border-radius: var(--radius-lg);
91
+ cursor: pointer;
92
+ text-align: left;
93
+ transition:
94
+ background var(--transition-duration-fast) var(--transition-easing-smooth),
95
+ border-color var(--transition-duration-fast) var(--transition-easing-smooth),
96
+ border-radius var(--transition-duration-fast) var(--transition-easing-smooth);
97
+ }
98
+
99
+ .bd-anchor-nav__dropdown-toggle:hover {
100
+ background: var(--color-neutral-50);
101
+ border-color: var(--color-neutral-300);
102
+ }
103
+
104
+ .bd-anchor-nav__dropdown-toggle[aria-expanded="true"] {
105
+ background: var(--color-neutral-50);
106
+ border-color: var(--color-blue-200);
107
+ border-radius: var(--radius-lg) var(--radius-lg) var(--spacing-0) var(--spacing-0);
108
+ }
109
+
110
+ .bd-anchor-nav__dropdown-label {
111
+ flex: 1 1 auto;
112
+ min-width: 0;
113
+ overflow: hidden;
114
+ text-overflow: ellipsis;
115
+ white-space: nowrap;
116
+ transform-origin: left center;
117
+ }
118
+
119
+ .bd-anchor-nav__dropdown-chevron {
120
+ flex: 0 0 auto;
121
+ display: flex;
122
+ color: var(--color-neutral-600);
123
+ transition: transform var(--transition-duration-normal) var(--transition-easing-smooth);
124
+ }
125
+
126
+ .bd-anchor-nav__dropdown-toggle[aria-expanded="true"] .bd-anchor-nav__dropdown-chevron {
127
+ transform: rotate(180deg);
128
+ color: var(--color-blue-500);
129
+ }
130
+
131
+ /* ── Dropdown panel ── */
132
+
133
+ .bd-anchor-nav__dropdown-panel {
134
+ position: absolute;
135
+ left: var(--spacing-0);
136
+ right: var(--spacing-0);
137
+ top: 100%;
138
+ z-index: 1001;
139
+ max-height: min(50vh, 20rem);
140
+ overflow-y: auto;
141
+ background: var(--color-neutral-0);
142
+ border: var(--border-width-1) solid var(--color-blue-200);
143
+ border-top: none;
144
+ border-radius: var(--spacing-0) var(--spacing-0) var(--radius-lg) var(--radius-lg);
145
+ box-shadow: var(--shadow-md);
146
+ }
147
+
148
+ .bd-anchor-nav__dropdown-list {
149
+ list-style: none;
150
+ margin: var(--spacing-0);
151
+ padding: var(--spacing-8);
152
+ display: flex;
153
+ flex-direction: column;
154
+ gap: var(--spacing-2);
155
+ }
156
+
157
+ /* ── Dropdown options ── */
158
+
159
+ .bd-anchor-nav__dropdown-option {
160
+ display: flex;
161
+ align-items: center;
162
+ width: 100%;
163
+ min-height: var(--dimension-48px);
164
+ padding-block: var(--spacing-12);
165
+ padding-inline: var(--spacing-16);
166
+ box-sizing: border-box;
167
+ font-family: var(--typography-fontFamily-sans);
168
+ font-size: var(--typography-body-regular-fontSize);
169
+ font-weight: var(--typography-fontWeight-normal);
170
+ color: var(--color-neutral-900);
171
+ background: transparent;
172
+ border: none;
173
+ border-radius: var(--radius-md);
174
+ cursor: pointer;
175
+ text-align: left;
176
+ transition:
177
+ color var(--transition-duration-fast) var(--transition-easing-smooth),
178
+ background var(--transition-duration-fast) var(--transition-easing-smooth);
179
+ }
180
+
181
+ .bd-anchor-nav__dropdown-option:hover:not(.bd-anchor-nav__dropdown-option--active) {
182
+ color: var(--color-blue-500);
183
+ background: var(--color-neutral-25);
184
+ }
185
+
186
+ .bd-anchor-nav__dropdown-option--active {
187
+ font-weight: var(--typography-fontWeight-semibold);
188
+ background: var(--color-blue-50);
189
+ color: var(--color-blue-700);
190
+ }
191
+
192
+ .bd-anchor-nav__dropdown-option--active:hover {
193
+ color: var(--color-blue-700);
194
+ background: var(--color-blue-50);
195
+ }
196
+
197
+ /* ── Desktop links ── */
198
+
199
+ a {
200
+ position: relative;
201
+ text-decoration: none;
202
+ color: var(--color-neutral-900);
203
+ font-weight: var(--typography-fontWeight-normal);
204
+ padding: var(--spacing-10) var(--spacing-0);
205
+ display: inline-block;
206
+ font-size: var(--typography-body-regular-fontSize);
207
+ font-family: var(--typography-body-regular-fontFamily);
208
+ transition: color var(--transition-duration-fast) var(--transition-easing-smooth);
209
+ }
210
+
211
+ a.active {
212
+ font-weight: var(--typography-fontWeight-semibold);
213
+ color: var(--color-neutral-900);
214
+ }
215
+
216
+ a:hover:not(.active) {
217
+ color: var(--color-blue-500);
218
+ }
219
+
220
+ a.active:hover {
221
+ color: var(--color-neutral-900);
222
+ }
223
+
224
+ a::after {
225
+ content: "";
226
+ position: absolute;
227
+ left: var(--spacing-0);
228
+ bottom: calc(-1 * var(--spacing-14));
229
+ width: 0%;
230
+ height: var(--border-width-3);
231
+ background-color: var(--color-blue-500);
232
+ transition: width var(--transition-duration-slow) var(--transition-easing-ease-out);
233
+ }
234
+
235
+ a.active::after {
236
+ width: 100%;
237
+ }
238
+
239
+ /* ── CTA button ── */
240
+
241
+ .bd-anchor-nav__cta {
242
+ font-family: var(--typography-fontFamily-sans);
243
+ font-size: var(--typography-fontSize-lg);
244
+ font-weight: var(--typography-fontWeight-semibold);
245
+ line-height: var(--typography-lineHeight-normal);
246
+ padding: var(--spacing-10) var(--spacing-20);
247
+ border: none;
248
+ border-radius: var(--radius-md);
249
+ cursor: pointer;
250
+ background: var(--color-red-500);
251
+ color: var(--color-neutral-0);
252
+ transition: background var(--transition-duration-fast) var(--transition-easing-smooth);
253
+ }
254
+
255
+ .bd-anchor-nav__cta:hover {
256
+ background: var(--color-red-600);
257
+ }
258
+
259
+ .bd-anchor-nav__cta:active {
260
+ background: var(--color-red-700);
261
+ }
262
+
263
+ /* ── Animations ── */
264
+
265
+ @keyframes bd-anchor-nav-dropdown-label-swap {
266
+ from {
267
+ opacity: 0.35;
268
+ transform: translateY(var(--spacing-4));
269
+ }
270
+ to {
271
+ opacity: 1;
272
+ transform: translateY(var(--spacing-0));
273
+ }
274
+ }
275
+
276
+ @media (prefers-reduced-motion: reduce) {
277
+ a::after,
278
+ .bd-anchor-nav__dropdown-chevron,
279
+ .bd-cta,
280
+ .bd-anchor-nav__dropdown-label--swap {
281
+ animation: none !important;
282
+ }
283
+ }
284
+
285
+ /* ── Mobile ── */
286
+
287
+ @media (max-width: 768px) {
288
+ :host {
289
+ padding-block: var(--spacing-10);
290
+ padding-inline: var(--layout-ensemble-inline-padding);
291
+ }
292
+
293
+ .bd-anchor-nav__inner {
294
+ flex-direction: column;
295
+ align-items: stretch;
296
+ gap: var(--spacing-16);
297
+ }
298
+
299
+ .anchor-links--desktop {
300
+ display: none !important;
301
+ }
302
+
303
+ .bd-anchor-nav__dropdown {
304
+ display: block;
305
+ }
306
+
307
+ .bd-anchor-nav__dropdown-label.bd-anchor-nav__dropdown-label--swap {
308
+ animation: bd-anchor-nav-dropdown-label-swap var(--transition-duration-normal)
309
+ var(--transition-easing-smooth);
310
+ }
311
+
312
+ .bd-cta {
313
+ align-self: stretch;
314
+ display: block;
315
+ overflow: hidden;
316
+ max-height: var(--spacing-0);
317
+ opacity: 0;
318
+ transform: translateY(calc(-1 * var(--spacing-8)));
319
+ pointer-events: none;
320
+ margin-top: calc(-1 * var(--spacing-16));
321
+ transition:
322
+ max-height var(--transition-duration-slow) var(--transition-easing-ease-out),
323
+ opacity var(--transition-duration-normal) var(--transition-easing-smooth),
324
+ transform var(--transition-duration-normal) var(--transition-easing-smooth),
325
+ margin-top var(--transition-duration-normal) var(--transition-easing-smooth);
326
+ }
327
+
328
+ .bd-anchor-nav__inner[data-mobile-cta-visible] .bd-cta {
329
+ max-height: var(--spacing-128);
330
+ opacity: 1;
331
+ transform: translateY(var(--spacing-0));
332
+ pointer-events: auto;
333
+ margin-top: var(--spacing-0);
334
+ }
335
+
336
+ .bd-anchor-nav__cta {
337
+ width: 100%;
338
+ box-sizing: border-box;
339
+ }
91
340
  }
92
- `;
341
+ `;