@repobit/dex-system-design 0.23.34 → 0.23.36

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.36](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.35...@repobit/dex-system-design@0.23.36) (2026-05-25)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **DEX-1014:** css adjustment for accordion
11
+ * **DEX-1014:** css adjustment for accordion
12
+
13
+
14
+ ## [0.23.35](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.34...@repobit/dex-system-design@0.23.35) (2026-05-22)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **DEX-1014:** css adjustment for accordion
19
+
20
+
6
21
  ## [0.23.34](https://github.com/bitdefender/dex-core/compare/@repobit/dex-system-design@0.23.33...@repobit/dex-system-design@0.23.34) (2026-05-21)
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.34",
3
+ "version": "0.23.36",
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.30",
74
- "@repobit/dex-store-elements": "1.4.22",
73
+ "@repobit/dex-store": "1.3.32",
74
+ "@repobit/dex-store-elements": "1.4.24",
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": "7d7e902dcbbb5deee029ea3e70d7cd27758b950e"
91
+ "gitHead": "70aa53bfaf0b469d19aaae35a898ba7cba99587c"
92
92
  }
@@ -1,20 +1,16 @@
1
1
  import { css } from "lit";
2
2
 
3
- /**
4
- * FAQ-style card accordion (Figma accordeon_faq / ds-accordion variant card, compact).
5
- * Tokens only from truth_tokens — spacing-12 = 12px, radius-md ≈ 6px, etc.
6
- */
7
3
  export default css`
8
4
  :host {
9
5
  --bd-accesibility-focus: var(--color-blue-500);
10
6
  display: block;
11
7
  }
12
- :host(bd-accordion-bg-item[data-variant="terms-of-use"]) {
13
- background-color: transparent !important;
14
- padding: 0;
15
- border-radius: 0;
16
- }
17
8
 
9
+ :host(bd-accordion-bg-item[data-variant="terms-of-use"]) {
10
+ background-color: transparent !important;
11
+ padding: 0;
12
+ border-radius: 0;
13
+ }
18
14
 
19
15
  :host(bd-accordion-bg-item) {
20
16
  display: block;
@@ -23,13 +19,11 @@ export default css`
23
19
  box-sizing: border-box;
24
20
  background-color: var(--color-blue-50);
25
21
  border-radius: var(--radius-lg);
26
- /* visible so focus ring is not clipped; panel animates with its own overflow */
27
22
  overflow: visible;
28
23
  }
29
24
 
30
25
  :host(bd-accordion-bg-item[data-bd-acc-focus]) {
31
26
  outline: none;
32
- /* Darker outer ring so focus stays visible on --color-blue-50 */
33
27
  box-shadow: 0 0 0 2px var(--color-neutral-0),
34
28
  0 0 0 4px var(--color-blue-700);
35
29
  position: relative;
@@ -58,12 +52,20 @@ export default css`
58
52
  }
59
53
 
60
54
  ::slotted(bd-p) {
61
- padding-bottom: var(--spacing-16);
62
- }
55
+ padding-bottom: var(--spacing-16);
56
+ }
57
+
58
+ ::slotted(bd-p:last-child) {
59
+ padding-bottom: 0;
60
+ }
61
+
62
+ /* Footer slot — italic, spacing deasupra */
63
+ ::slotted([slot="footer"]) {
64
+ display: block;
65
+ padding-top: var(--spacing-16);
66
+ font-style: italic;
67
+ }
63
68
 
64
- ::slotted(bd-p:last-child) {
65
- padding-bottom: 0;
66
- }
67
69
  .bd-accordion-bg-item {
68
70
  margin-bottom: 0;
69
71
  border-radius: 0;
@@ -93,7 +95,14 @@ export default css`
93
95
  color: var(--color-neutral-900);
94
96
  transition: color var(--transition-duration-normal) var(--transition-easing-smooth);
95
97
  }
96
-
98
+ ::slotted(bd-list) {
99
+ --bd-li-margin-bottom: var(--spacing-16);
100
+ display: block;
101
+ margin-bottom: var(--spacing-16);
102
+ }
103
+ ::slotted(bd-list:last-child) {
104
+ margin-bottom: 0;
105
+ }
97
106
  .bd-accordion-bg-question[aria-expanded="true"] {
98
107
  color: var(--color-blue-500);
99
108
  }
@@ -143,7 +152,6 @@ export default css`
143
152
  justify-content: center;
144
153
  line-height: 0;
145
154
  user-select: none;
146
- /* Match question line-height (1.3) — icon aligns to first line when title wraps */
147
155
  margin-top: calc((1.3 * 1em - var(--icon-sm-size)) / 2);
148
156
  }
149
157
 
@@ -154,7 +162,6 @@ export default css`
154
162
  object-fit: contain;
155
163
  }
156
164
 
157
- /* Panel: Figma 244:943 — padding 0, 0, 12px, 28px (icon 16 + gap 12) */
158
165
  .bd-accordion-bg-answer {
159
166
  overflow: hidden;
160
167
  max-height: 0;
@@ -182,7 +189,6 @@ export default css`
182
189
  calc(var(--icon-sm-size) + var(--spacing-12));
183
190
  }
184
191
 
185
- /* Slotted <p> default margins read as extra “padding” in devtools; spec has no panel padding-top */
186
192
  ::slotted(p) {
187
193
  margin: var(--spacing-0);
188
194
  }
@@ -192,9 +198,7 @@ export default css`
192
198
  }
193
199
 
194
200
  .bd-accordion-bg-container {
195
- // width: 100%;
196
201
  margin: auto;
197
- padding: var(--spacing-64) var(--spacing-32) var(--spacing-64) var(--spacing-32)
198
202
  }
199
203
 
200
204
  .bd-accordion-bg-container.no-bg {
@@ -226,4 +230,4 @@ export default css`
226
230
  .bd-accordion-bg-item.no-bg .bd-accordion-bg-question:hover .bd-accordion-bg-question-text {
227
231
  text-decoration-line: none;
228
232
  }
229
- `;
233
+ `;
@@ -16,13 +16,13 @@ class BdAccordionBg extends LitElement {
16
16
  guideHref : { type: String, reflect: true, attribute: "guide-href" },
17
17
  _variant : { state: true },
18
18
  variant : { type: String, reflect: true, attribute: "data-variant" }
19
- }
19
+ };
20
20
 
21
21
  constructor() {
22
22
  super();
23
- this.noBg = false;
24
- this._variant = "default";
25
- this.variant = "default";
23
+ this.noBg = false;
24
+ this._variant = "default";
25
+ this.variant = "default";
26
26
  this.guideIcon = "";
27
27
  this.guideLabel = "";
28
28
  this.guideHref = "#";
@@ -35,8 +35,6 @@ class BdAccordionBg extends LitElement {
35
35
  Promise.resolve().then(() => this._detectVariant());
36
36
  }
37
37
 
38
- // În BdAccordionBg, înlocuiește _detectVariant și adaugă firstUpdated:
39
-
40
38
  _detectVariant() {
41
39
  let el = this.parentElement;
42
40
  while (el) {
@@ -48,7 +46,7 @@ class BdAccordionBg extends LitElement {
48
46
  }
49
47
  if (
50
48
  el.classList.contains("terms-of-use") ||
51
- el.classList.contains("system-requirements")
49
+ el.classList.contains("system-requirements")
52
50
  ) {
53
51
  this._variant = "terms-of-use";
54
52
  this.variant = "terms-of-use";
@@ -63,7 +61,6 @@ class BdAccordionBg extends LitElement {
63
61
  }
64
62
 
65
63
  _propagateVariant(variant) {
66
- // Setam data-variant pe toti copiii slotted bd-accordion-bg-item
67
64
  this.querySelectorAll("bd-accordion-bg-item").forEach(item => {
68
65
  item.setAttribute("data-variant", variant);
69
66
  });
@@ -76,6 +73,7 @@ class BdAccordionBg extends LitElement {
76
73
  <bd-h as="h2" class="bd-accordion-bg-title">${this.title}</bd-h>
77
74
  </div>
78
75
  <slot></slot>
76
+ <slot name="footer"></slot>
79
77
  </div>
80
78
  `;
81
79
  }
@@ -84,15 +82,16 @@ class BdAccordionBg extends LitElement {
84
82
  return html`
85
83
  <div class="bd-accordion-section-container">
86
84
  ${this.title
87
- ? html`<bd-h as="h6" paddingBottom=var(--spacing-32) fontWeight="700" class="section-title">${this.title}</bd-h>`
85
+ ? html`<bd-h as="h6" paddingBottom="var(--spacing-32)" fontWeight="700" class="section-title">${this.title}</bd-h>`
88
86
  : ""}
89
87
  <slot></slot>
88
+ <slot name="footer"></slot>
90
89
  ${this.guideLabel
91
90
  ? html`
92
91
  <p class="user-guide-link">
93
92
  <a href=${this.guideHref}>
94
93
  ${this.guideIcon
95
- ? html`<bd-plus-icon size="16" color="#006DFF"></bd-plus-icon>`
94
+ ? html`<span class="icon"><img src=${this.guideIcon} alt="" /></span>`
96
95
  : ""}
97
96
  ${this.guideLabel}
98
97
  </a>
@@ -114,7 +113,8 @@ class BdAccordionBgItem extends LitElement {
114
113
  title : { type: String },
115
114
  open : { type: Boolean, reflect: true },
116
115
  noBg : { type: Boolean, reflect: true, attribute: "no-bg" },
117
- _variant: { state: true }
116
+ _variant: { state: true },
117
+ variant : { type: String, reflect: true, attribute: "data-variant" }
118
118
  };
119
119
 
120
120
  constructor() {
@@ -123,6 +123,7 @@ class BdAccordionBgItem extends LitElement {
123
123
  this.open = false;
124
124
  this.noBg = false;
125
125
  this._variant = "default";
126
+ this.variant = "default";
126
127
  const id = Math.random().toString(36)
127
128
  .slice(2, 11);
128
129
  this._headerId = `acc-bg-h-${id}`;
@@ -141,6 +142,7 @@ class BdAccordionBgItem extends LitElement {
141
142
  while (el) {
142
143
  if (el.classList.contains("faq")) {
143
144
  this._variant = "faq";
145
+ this.variant = "faq";
144
146
  return;
145
147
  }
146
148
  if (
@@ -148,11 +150,13 @@ class BdAccordionBgItem extends LitElement {
148
150
  el.classList.contains("system-requirements")
149
151
  ) {
150
152
  this._variant = "terms-of-use";
153
+ this.variant = "terms-of-use";
151
154
  return;
152
155
  }
153
156
  el = el.parentElement;
154
157
  }
155
158
  this._variant = "default";
159
+ this.variant = "default";
156
160
  }
157
161
 
158
162
  toggleItem() {
@@ -175,7 +179,6 @@ class BdAccordionBgItem extends LitElement {
175
179
  this.removeAttribute("data-bd-acc-focus");
176
180
  }
177
181
 
178
- // Design bd-accordion — pentru terms-of-use si system-requirements
179
182
  _renderTerms() {
180
183
  return html`
181
184
  <button
@@ -200,7 +203,6 @@ class BdAccordionBgItem extends LitElement {
200
203
  `;
201
204
  }
202
205
 
203
- // Design bd-accordion-bg — pentru faq (default)
204
206
  _renderDefault() {
205
207
  return html`
206
208
  <div class="bd-accordion-bg-item ${this.open ? "open" : ""} ${this.noBg ? "no-bg" : ""}">
@@ -1,5 +1,4 @@
1
1
  import { html } from "lit";
2
- import "../accordion/accordion.js";
3
2
  import "../divider/divider-horizontal.js";
4
3
  import "../list/list-item/list-item.js";
5
4
  import "../list/list.js";
@@ -14,46 +13,72 @@ export default {
14
13
  docs : {
15
14
  description: {
16
15
  component: `
17
- Two Lit web components for building FAQ-style accordion sections with an optional card background.
16
+ Componentă Lit pentru secțiuni accordion cu două variante de design detectate automat din clasa părintelui DOM.
18
17
 
19
18
  \`\`\`html
20
- <bd-accordion-bg title="Frequently Asked Questions">
21
- <bd-accordion-bg-item title="What is Bitdefender?">
22
- <p>Bitdefender is a global cybersecurity leader...</p>
23
- </bd-accordion-bg-item>
24
- </bd-accordion-bg>
19
+ <!-- FAQ (design cu background albastru) -->
20
+ <div class="accordion faq block">
21
+ <bd-accordion-bg title="Questions? Answers.">
22
+ <bd-accordion-bg-item title="What is Bitdefender?">
23
+ <bd-p kind="small">Answer here...</bd-p>
24
+ </bd-accordion-bg-item>
25
+ <bd-p slot="footer" kind="small">* Footer note</bd-p>
26
+ </bd-accordion-bg>
27
+ </div>
28
+
29
+ <!-- Terms of Use / System Requirements (design simplu, fără background) -->
30
+ <div class="accordion terms-of-use block">
31
+ <bd-accordion-bg title="Terms of use">
32
+ <bd-accordion-bg-item title="Auto renewal terms" open>
33
+ <bd-p kind="small">Your subscription...</bd-p>
34
+ </bd-accordion-bg-item>
35
+ <bd-p slot="footer" kind="small">* Terms apply</bd-p>
36
+ </bd-accordion-bg>
37
+ </div>
25
38
  \`\`\`
26
39
 
27
- ### Attributes
28
-
29
- #### \`bd-accordion-bg\`
30
- | Attribute | Type | Default | Description |
31
- |-----------|---------|---------|-----------------------------------------------------------|
32
- | \`title\` | String | | Heading rendered inside the container header |
33
- | \`no-bg\` | Boolean | \`false\`| Removes the card background from the container |
34
-
35
- #### \`bd-accordion-bg-item\`
36
- | Attribute | Type | Default | Description |
37
- |-----------|---------|----------|----------------------------------------------------------|
38
- | \`title\` | String | — | Question / trigger label |
39
- | \`open\` | Boolean | \`false\` | Whether the answer panel is expanded |
40
- | \`no-bg\` | Boolean | \`false\` | Removes the card background from this individual item |
40
+ ### Detectare automată variantă
41
+ Componenta urcă în DOM și detectează clasa părintelui:
42
+ | Clasă părinte | Variantă | Design |
43
+ |---|---|---|
44
+ | \`faq\` | faq | Badge-uri albastre, background \`color-blue-50\` |
45
+ | \`terms-of-use\` | terms-of-use | Design simplu, fără background |
46
+ | \`system-requirements\` | terms-of-use | Design simplu, fără background |
47
+
48
+ ### Atribute \`bd-accordion-bg\`
49
+ | Atribut | Tip | Default | Descriere |
50
+ |---|---|---|---|
51
+ | \`title\` | String | — | Titlul secțiunii |
52
+ | \`no-bg\` | Boolean | \`false\` | Elimină background-ul containerului |
53
+ | \`guide-icon\` | String | | Cale icon pentru link-ul ghid (doar terms-of-use) |
54
+ | \`guide-label\` | String | — | Text link ghid (doar terms-of-use) |
55
+ | \`guide-href\` | String | \`#\` | URL link ghid (doar terms-of-use) |
56
+
57
+ ### Atribute \`bd-accordion-bg-item\`
58
+ | Atribut | Tip | Default | Descriere |
59
+ |---|---|---|---|
60
+ | \`title\` | String | — | Titlul întrebării |
61
+ | \`open\` | Boolean | \`false\` | Item deschis implicit |
62
+ | \`no-bg\` | Boolean | \`false\` | Elimină background-ul item-ului |
63
+
64
+ ### Slot \`footer\`
65
+ Ambele variante suportă un slot \`footer\` pentru text italic după toate item-urile:
66
+ \`\`\`html
67
+ <bd-p slot="footer" kind="small">* Notă de subsol</bd-p>
68
+ \`\`\`
41
69
  `
42
70
  }
43
71
  }
44
72
  }
45
73
  };
46
74
 
75
+ // ─── FAQ — Default ────────────────────────────────────────────────────────────
47
76
 
48
- // ─── Toate 3 variantele pe aceeasi pagina ─────────────────────────────────────
49
-
50
- export const AllVariants = {
51
- name : "FAQ + Terms of Use + System Requirements",
77
+ export const FaqDefault = {
78
+ name : "FAQ — Default",
52
79
  render: () => html`
53
-
54
- <!-- FAQ -->
55
80
  <div class="accordion faq block">
56
- <bd-accordion-bg title="Questions? Answers." id="anchor-1-section">
81
+ <bd-accordion-bg title="Questions? Answers.">
57
82
  <bd-accordion-bg-item title="How does Bitdefender Internet Security protect me?">
58
83
  <bd-p kind="small">Bitdefender Internet Security provides the best protection through multiple layers of security:</bd-p>
59
84
  <bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
@@ -76,248 +101,200 @@ export const AllVariants = {
76
101
  </bd-accordion-bg-item>
77
102
 
78
103
  <bd-accordion-bg-item title="Do I get a VPN with Bitdefender Internet Security?">
79
- <bd-p kind="small">Bitdefender Internet Security includes a basic VPN with 200MB per day. Additional features include:</bd-p>
80
- <bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
81
- <bd-li kind="bullet" size="md"><bd-p kind="small">200MB daily VPN traffic for secure browsing</bd-p></bd-li>
82
- <bd-li kind="bullet" size="md"><bd-p kind="small">Automatic activation on unsecured Wi-Fi networks</bd-p></bd-li>
83
- <bd-li kind="bullet" size="md"><bd-p kind="small">Banking encryption for financial transactions</bd-p></bd-li>
84
- <bd-li kind="bullet" size="md"><bd-p kind="small">Option to upgrade to unlimited VPN</bd-p></bd-li>
85
- </bd-list>
86
- </bd-accordion-bg-item>
87
-
88
- <bd-accordion-bg-item title="What devices are supported?">
89
- <bd-p kind="small">Bitdefender Internet Security supports a wide range of devices:</bd-p>
90
- <bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
91
- <bd-li kind="bullet" size="md"><bd-p kind="small">Windows 10, 11 (32-bit and 64-bit)</bd-p></bd-li>
92
- <bd-li kind="bullet" size="md"><bd-p kind="small">macOS 10.12 or later</bd-p></bd-li>
93
- <bd-li kind="bullet" size="md"><bd-p kind="small">Android 5.0 or later</bd-p></bd-li>
94
- <bd-li kind="bullet" size="md"><bd-p kind="small">iOS 12 or later</bd-p></bd-li>
95
- </bd-list>
96
- </bd-accordion-bg-item>
97
-
98
- <bd-accordion-bg-item title="System requirements">
99
- <bd-p kind="small">Minimum system requirements for optimal performance:</bd-p>
100
- <bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
101
- <bd-li kind="bullet" size="md"><bd-p kind="small">1GB RAM minimum (2GB recommended)</bd-p></bd-li>
102
- <bd-li kind="bullet" size="md"><bd-p kind="small">2.5GB available hard disk space</bd-p></bd-li>
103
- <bd-li kind="bullet" size="md"><bd-p kind="small">Internet connection for activation and updates</bd-p></bd-li>
104
- <bd-li kind="bullet" size="md"><bd-p kind="small">Intel Core 2 Duo processor or equivalent</bd-p></bd-li>
105
- </bd-list>
104
+ <bd-p kind="small">Bitdefender Internet Security includes a basic VPN with 200MB per day.</bd-p>
106
105
  </bd-accordion-bg-item>
107
106
  </bd-accordion-bg>
108
107
  </div>
109
-
110
- <!-- Terms of Use -->
111
- <div class="accordion terms-of-use block">
112
- <bd-accordion-section title="Terms of use">
113
- <bd-accordion-item title="Auto renewal terms" open>
114
- <bd-p kind="small">Your subscription automatically begins at the purchase date;</bd-p>
115
- <bd-p kind="small">By subscribing, you are purchasing a recurring subscription which will automatically renew;</bd-p>
116
- <bd-p kind="small">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.</bd-p>
117
- </bd-accordion-item>
118
-
119
- <bd-accordion-item title="Here is what the Bitdefender Auto Renewal Plan means for you">
120
- <bd-p kind="small"><a href="#">Here is what the Bitdefender Auto Renewal Plan means for you</a></bd-p>
121
- </bd-accordion-item>
122
-
123
- <bd-accordion-item title="Affirmative consent">
124
- <bd-p kind="small"><a href="#">Affirmative consent</a></bd-p>
125
- </bd-accordion-item>
126
-
127
- <bd-accordion-item title="How to cancel + email address cancelation support">
128
- <bd-p kind="small"><a href="#">How to cancel + email address cancelation support</a></bd-p>
129
- </bd-accordion-item>
130
- </bd-accordion-section>
131
- </div>
132
-
133
- <bd-divider-horizontal width="95%"></bd-divider-horizontal>
134
-
135
- <!-- System Requirements -->
136
- <div class="accordion system-requirements block">
137
- <bd-accordion-section title="System Requirements" guide-icon="src/assets/user_guide.png" guide-label="User guide >" guide-href="#">
138
- <bd-accordion-item title="Bitdefender Parental Control" open>
139
- <bd-p kind="small">
140
- <strong>Windows™ Operating Systems</strong><br />
141
- Microsoft Windows 7 (all versions) with Service Pack 1 (SP 1) or later.
142
- </bd-p>
143
- <bd-p kind="small">
144
- <strong>Mac® Operating Systems</strong><br />
145
- macOS X Yosemite (10.10) or later
146
- </bd-p>
147
- <bd-p kind="small">
148
- <strong>Android™ Operating Systems</strong><br />
149
- Android 5.0 or later
150
- </bd-p>
151
- <bd-p kind="small">
152
- <strong>iOS Operating Systems</strong><br />
153
- Android 5.0 or later
154
- </bd-p>
155
- </bd-accordion-item>
156
-
157
- <bd-accordion-item title="Bitdefender Central">
158
- <bd-p kind="small">Bitdefender Central</bd-p>
159
- </bd-accordion-item>
160
- </bd-accordion-section>
161
- </div>
162
108
  `
163
109
  };
164
110
 
111
+ // ─── FAQ — Cu footer ─────────────────────────────────────────────────────────
165
112
 
166
- // ─── Default ─────────────────────────────────────────────────────────────────
167
-
168
- export const Default = {
169
- name : "Default",
113
+ export const FaqWithFooter = {
114
+ name : "FAQ — Cu footer",
170
115
  render: () => html`
171
- <bd-accordion-bg title="Frequently Asked Questions">
172
- <bd-accordion-bg-item title="What is Bitdefender Total Security?">
173
- <p>Bitdefender Total Security offers award-winning protection against viruses, malware, ransomware, and zero-day exploits across all your devices.</p>
174
- </bd-accordion-bg-item>
175
- <bd-accordion-bg-item title="How many devices does my plan cover?">
176
- <p>Depending on your subscription, you can protect between 1 and 10 devices. Multi-device plans cover any combination of Windows, macOS, Android, and iOS.</p>
177
- </bd-accordion-bg-item>
178
- <bd-accordion-bg-item title="Does Bitdefender affect system performance?">
179
- <p>Bitdefender is consistently rated best-in-class for performance impact by independent labs such as AV-TEST and AV-Comparatives.</p>
180
- </bd-accordion-bg-item>
181
- </bd-accordion-bg>
116
+ <div class="accordion faq block">
117
+ <bd-accordion-bg title="Questions? Answers.">
118
+ <bd-accordion-bg-item title="How does Bitdefender protect me?">
119
+ <bd-p kind="small">Bitdefender provides multi-layer protection against all cyber threats.</bd-p>
120
+ </bd-accordion-bg-item>
121
+ <bd-accordion-bg-item title="Does it work on Mac?">
122
+ <bd-p kind="small">Yes, Bitdefender is fully compatible with macOS 10.14 and later.</bd-p>
123
+ </bd-accordion-bg-item>
124
+ <bd-p slot="footer" kind="small">* Prices include VAT. Terms and conditions apply.</bd-p>
125
+ </bd-accordion-bg>
126
+ </div>
182
127
  `
183
128
  };
184
129
 
130
+ // ─── FAQ — Item deschis implicit ─────────────────────────────────────────────
185
131
 
186
- // ─── One item open by default ─────────────────────────────────────────────────
187
-
188
- export const OpenByDefault = {
189
- name : "Item open by default",
132
+ export const FaqOpenByDefault = {
133
+ name : "FAQ — Item deschis implicit",
190
134
  render: () => html`
191
- <bd-accordion-bg title="Getting Started">
192
- <bd-accordion-bg-item title="How do I install Bitdefender?" open>
193
- <p>Download the installer from your Bitdefender Central account, run it, and follow the on-screen steps. Installation typically completes in under two minutes.</p>
194
- </bd-accordion-bg-item>
195
- <bd-accordion-bg-item title="Do I need to remove my old antivirus first?">
196
- <p>Yes. Bitdefender will detect any existing security software and guide you through removing it before completing the installation.</p>
197
- </bd-accordion-bg-item>
198
- <bd-accordion-bg-item title="Where do I enter my activation code?">
199
- <p>Log in to Bitdefender Central at central.bitdefender.com, click My Subscriptions, then Add code and enter your activation key.</p>
200
- </bd-accordion-bg-item>
201
- </bd-accordion-bg>
135
+ <div class="accordion faq block">
136
+ <bd-accordion-bg title="Getting Started">
137
+ <bd-accordion-bg-item title="How do I install Bitdefender?" open>
138
+ <bd-p kind="small">Download the installer from your Bitdefender Central account and follow the on-screen steps.</bd-p>
139
+ </bd-accordion-bg-item>
140
+ <bd-accordion-bg-item title="Do I need to remove my old antivirus first?">
141
+ <bd-p kind="small">Yes. Bitdefender will detect any existing security software and guide you through removing it.</bd-p>
142
+ </bd-accordion-bg-item>
143
+ </bd-accordion-bg>
144
+ </div>
202
145
  `
203
146
  };
204
147
 
148
+ // ─── FAQ — Fără background items ─────────────────────────────────────────────
205
149
 
206
- // ─── No background on container ───────────────────────────────────────────────
207
-
208
- export const NoBgContainer = {
209
- name : "No background — container",
150
+ export const FaqNoBgItems = {
151
+ name : "FAQ — Fără background items",
210
152
  render: () => html`
211
- <bd-accordion-bg title="Frequently Asked Questions" no-bg>
212
- <bd-accordion-bg-item title="What payment methods are accepted?">
213
- <p>We accept Visa, Mastercard, American Express, PayPal, and bank transfers. Available methods may vary by country.</p>
214
- </bd-accordion-bg-item>
215
- <bd-accordion-bg-item title="Can I get a refund?">
216
- <p>Bitdefender offers a 30-day money-back guarantee on all new subscriptions. Renewals are not eligible for refunds after the grace period.</p>
217
- </bd-accordion-bg-item>
218
- <bd-accordion-bg-item title="Is auto-renewal enabled by default?">
219
- <p>Yes. You can disable auto-renewal at any time from the My Subscriptions section of Bitdefender Central.</p>
220
- </bd-accordion-bg-item>
221
- </bd-accordion-bg>
153
+ <div class="accordion faq block">
154
+ <bd-accordion-bg title="Product Features">
155
+ <bd-accordion-bg-item title="What is Bitdefender VPN?" no-bg>
156
+ <bd-p kind="small">Bitdefender VPN encrypts your internet connection and masks your IP address.</bd-p>
157
+ </bd-accordion-bg-item>
158
+ <bd-accordion-bg-item title="What is Anti-Tracker?" no-bg>
159
+ <bd-p kind="small">Anti-Tracker blocks advertising trackers and analytics scripts.</bd-p>
160
+ </bd-accordion-bg-item>
161
+ <bd-accordion-bg-item title="What is Bitdefender Photon™?" no-bg>
162
+ <bd-p kind="small">Photon is Bitdefender's adaptive scanning technology.</bd-p>
163
+ </bd-accordion-bg-item>
164
+ </bd-accordion-bg>
165
+ </div>
222
166
  `
223
167
  };
224
168
 
169
+ // ─── Terms of Use ─────────────────────────────────────────────────────────────
225
170
 
226
- // ─── No background on items ───────────────────────────────────────────────────
227
-
228
- export const NoBgItems = {
229
- name : "No background — items",
171
+ export const TermsOfUse = {
172
+ name : "Terms of Use",
230
173
  render: () => html`
231
- <bd-accordion-bg title="Product Features">
232
- <bd-accordion-bg-item title="What is Bitdefender VPN?" no-bg>
233
- <p>Bitdefender VPN encrypts your internet connection and masks your IP address, giving you privacy on public Wi-Fi and preventing online tracking.</p>
234
- </bd-accordion-bg-item>
235
- <bd-accordion-bg-item title="What is Anti-Tracker?" no-bg>
236
- <p>Anti-Tracker blocks advertising trackers, analytics scripts, and social media pixels that follow you across the web without your consent.</p>
237
- </bd-accordion-bg-item>
238
- <bd-accordion-bg-item title="What is Bitdefender Photon™?" no-bg>
239
- <p>Photon is Bitdefender's adaptive scanning technology that learns your hardware and software configuration to optimize performance over time.</p>
240
- </bd-accordion-bg-item>
241
- </bd-accordion-bg>
174
+ <div class="accordion terms-of-use block">
175
+ <bd-accordion-bg title="Terms of use">
176
+ <bd-accordion-bg-item title="Auto renewal terms" open>
177
+ <bd-p kind="small">Your subscription automatically begins at the purchase date;</bd-p>
178
+ <bd-p kind="small">By subscribing, you are purchasing a recurring subscription which will automatically renew;</bd-p>
179
+ <bd-p kind="small">The Bitdefender Auto Renewal Plan is designed to save you time and effort.</bd-p>
180
+ </bd-accordion-bg-item>
181
+ <bd-accordion-bg-item title="Here is what the Bitdefender Auto Renewal Plan means for you">
182
+ <bd-p kind="small"><a href="#">Here is what the Bitdefender Auto Renewal Plan means for you</a></bd-p>
183
+ </bd-accordion-bg-item>
184
+ <bd-accordion-bg-item title="Affirmative consent">
185
+ <bd-p kind="small"><a href="#">Affirmative consent</a></bd-p>
186
+ </bd-accordion-bg-item>
187
+ <bd-accordion-bg-item title="How to cancel + email address cancelation support">
188
+ <bd-p kind="small"><a href="#">How to cancel + email address cancelation support</a></bd-p>
189
+ </bd-accordion-bg-item>
190
+ </bd-accordion-bg>
191
+ </div>
242
192
  `
243
193
  };
244
194
 
195
+ // ─── Terms of Use — Cu footer ─────────────────────────────────────────────────
245
196
 
246
- // ─── No background on both ────────────────────────────────────────────────────
247
-
248
- export const NoBgBoth = {
249
- name : "No background — container + items",
197
+ export const TermsOfUseWithFooter = {
198
+ name : "Terms of Use — Cu footer",
250
199
  render: () => html`
251
- <bd-accordion-bg title="Compatibility" no-bg>
252
- <bd-accordion-bg-item title="Is Bitdefender compatible with Windows 11?" no-bg>
253
- <p>Yes. Bitdefender fully supports Windows 11, including features such as Secure Boot and TPM 2.0.</p>
254
- </bd-accordion-bg-item>
255
- <bd-accordion-bg-item title="Does it work on Apple Silicon Macs?" no-bg>
256
- <p>Yes. Bitdefender for Mac runs natively on Apple Silicon (M1, M2, M3) as well as Intel-based Macs.</p>
257
- </bd-accordion-bg-item>
258
- <bd-accordion-bg-item title="Can I use it on Chromebooks?" no-bg>
259
- <p>Bitdefender for Android can be installed via Google Play on Chromebooks that support Android apps.</p>
260
- </bd-accordion-bg-item>
261
- </bd-accordion-bg>
200
+ <div class="accordion terms-of-use block">
201
+ <bd-accordion-bg title="Terms of use">
202
+ <bd-accordion-bg-item title="Auto renewal terms" open>
203
+ <bd-p kind="small">Your subscription automatically begins at the purchase date;</bd-p>
204
+ <bd-p kind="small">By subscribing, you are purchasing a recurring subscription which will automatically renew;</bd-p>
205
+ </bd-accordion-bg-item>
206
+ <bd-accordion-bg-item title="Affirmative consent">
207
+ <bd-p kind="small"><a href="#">Affirmative consent</a></bd-p>
208
+ </bd-accordion-bg-item>
209
+ <bd-p slot="footer" kind="small">* Sales tax included. First year price. See Terms of Use below.</bd-p>
210
+ </bd-accordion-bg>
211
+ </div>
262
212
  `
263
213
  };
264
214
 
215
+ // ─── System Requirements ──────────────────────────────────────────────────────
265
216
 
266
- // ─── No container title ───────────────────────────────────────────────────────
267
-
268
- export const NoTitle = {
269
- name : "No container title",
217
+ export const SystemRequirements = {
218
+ name : "System Requirements",
270
219
  render: () => html`
271
- <bd-accordion-bg>
272
- <bd-accordion-bg-item title="What is Safe Online Banking?">
273
- <p>Safe Online Banking launches a dedicated hardened browser for financial transactions, protecting against screen capture, keyloggers, and browser-based attacks.</p>
274
- </bd-accordion-bg-item>
275
- <bd-accordion-bg-item title="What is ransomware remediation?">
276
- <p>If ransomware encrypts any files before Bitdefender can block it, the Ransomware Remediation feature automatically restores those files from secured backups.</p>
277
- </bd-accordion-bg-item>
278
- </bd-accordion-bg>
220
+ <div class="accordion system-requirements block">
221
+ <bd-accordion-bg title="System Requirements" guide-icon="/assets/user_guide.png" guide-label="User guide >" guide-href="#">
222
+ <bd-accordion-bg-item title="Bitdefender Parental Control" open>
223
+ <bd-p kind="small"><strong>Windows™ Operating Systems</strong><br />Microsoft Windows 7 (all versions) with Service Pack 1 (SP 1) or later.</bd-p>
224
+ <bd-p kind="small"><strong>Mac® Operating Systems</strong><br />macOS X Yosemite (10.10) or later</bd-p>
225
+ <bd-p kind="small"><strong>Android™ Operating Systems</strong><br />Android 5.0 or later</bd-p>
226
+ <bd-p kind="small"><strong>iOS Operating Systems</strong><br />iOS 12.0 or later</bd-p>
227
+ </bd-accordion-bg-item>
228
+ <bd-accordion-bg-item title="Bitdefender Central">
229
+ <bd-p kind="small">Bitdefender Central requires a modern browser with JavaScript enabled.</bd-p>
230
+ </bd-accordion-bg-item>
231
+ <bd-p slot="footer" kind="small">* Requirements may vary by product version.</bd-p>
232
+ </bd-accordion-bg>
233
+ </div>
279
234
  `
280
235
  };
281
236
 
237
+ // ─── Toate variantele pe aceeași pagină ───────────────────────────────────────
282
238
 
283
- // ─── bd-accordion-bg-item isolated ───────────────────────────────────────────
284
-
285
- export const ItemIsolated = {
286
- name : "bd-accordion-bg-item (isolated)",
239
+ export const AllVariants = {
240
+ name : "Toate variantele",
287
241
  render: () => html`
288
- <div style="max-width: 680px; padding: 1rem;">
289
- <bd-accordion-bg-item title="What is two-factor authentication?">
290
- <p>Two-factor authentication adds a second verification step — such as a one-time code sent to your phone — when logging into your Bitdefender account.</p>
291
- </bd-accordion-bg-item>
242
+
243
+ <div class="accordion faq block">
244
+ <bd-accordion-bg title="Questions? Answers.">
245
+ <bd-accordion-bg-item title="How does Bitdefender Internet Security protect me?">
246
+ <bd-p kind="small">Bitdefender Internet Security provides the best protection through multiple layers of security:</bd-p>
247
+ <bd-list type="unordered" spacing="md" variant="default" orientation="vertical">
248
+ <bd-li kind="bullet" size="md"><bd-p kind="small">Advanced threat detection using artificial intelligence</bd-p></bd-li>
249
+ <bd-li kind="bullet" size="md"><bd-p kind="small">Real-time protection against viruses, malware, and ransomware</bd-p></bd-li>
250
+ <bd-li kind="bullet" size="md"><bd-p kind="small">Secure browsing with anti-phishing technology</bd-p></bd-li>
251
+ <bd-li kind="bullet" size="md"><bd-p kind="small">Firewall protection for network security</bd-p></bd-li>
252
+ </bd-list>
253
+ <bd-p kind="small">All these features work together to provide comprehensive protection for your devices.</bd-p>
254
+ </bd-accordion-bg-item>
255
+ <bd-accordion-bg-item title="Does Bitdefender protect me against ransomware?">
256
+ <bd-p kind="small">Yes! Bitdefender Internet Security offers unbeatable ransomware protection.</bd-p>
257
+ </bd-accordion-bg-item>
258
+ <bd-p slot="footer" kind="small">* Prices include VAT. Terms and conditions apply.</bd-p>
259
+ </bd-accordion-bg>
292
260
  </div>
293
- `
294
- };
295
261
 
262
+ <bd-divider-horizontal width="95%"></bd-divider-horizontal>
263
+
264
+ <div class="accordion terms-of-use block">
265
+ <bd-accordion-bg title="Terms of use">
266
+ <bd-accordion-bg-item title="Auto renewal terms" open>
267
+ <bd-p kind="small">Your subscription automatically begins at the purchase date;</bd-p>
268
+ <bd-p kind="small">By subscribing, you are purchasing a recurring subscription which will automatically renew;</bd-p>
269
+ <bd-p kind="small">The Bitdefender Auto Renewal Plan is designed to save you time, effort, and minimize your vulnerability risk.</bd-p>
270
+ </bd-accordion-bg-item>
271
+ <bd-accordion-bg-item title="Here is what the Bitdefender Auto Renewal Plan means for you">
272
+ <bd-p kind="small"><a href="#">Here is what the Bitdefender Auto Renewal Plan means for you</a></bd-p>
273
+ </bd-accordion-bg-item>
274
+ <bd-accordion-bg-item title="Affirmative consent">
275
+ <bd-p kind="small"><a href="#">Affirmative consent</a></bd-p>
276
+ </bd-accordion-bg-item>
277
+ <bd-accordion-bg-item title="How to cancel + email address cancelation support">
278
+ <bd-p kind="small"><a href="#">How to cancel + email address cancelation support</a></bd-p>
279
+ </bd-accordion-bg-item>
280
+ <bd-p slot="footer" kind="small">* Sales tax included. First year price. See Terms of Use below.</bd-p>
281
+ </bd-accordion-bg>
282
+ </div>
296
283
 
297
- // ─── Many items ───────────────────────────────────────────────────────────────
284
+ <bd-divider-horizontal width="95%"></bd-divider-horizontal>
298
285
 
299
- export const ManyItems = {
300
- name : "Many items",
301
- render: () => html`
302
- <bd-accordion-bg title="Everything You Need to Know">
303
- <bd-accordion-bg-item title="What is real-time protection?">
304
- <p>Real-time protection continuously monitors all file activity on your device and blocks threats the moment they are detected, before they can cause damage.</p>
305
- </bd-accordion-bg-item>
306
- <bd-accordion-bg-item title="What is web protection?">
307
- <p>Web protection scans URLs in real time and blocks access to phishing sites, malicious downloads, and fraudulent pages before they load in your browser.</p>
308
- </bd-accordion-bg-item>
309
- <bd-accordion-bg-item title="What is vulnerability scanning?">
310
- <p>The vulnerability scanner checks your installed applications and Windows for missing patches and outdated software that could be exploited by attackers.</p>
311
- </bd-accordion-bg-item>
312
- <bd-accordion-bg-item title="What is Bitdefender Central?">
313
- <p>Bitdefender Central is the unified dashboard for managing all your protected devices, viewing security reports, and controlling your subscription.</p>
314
- </bd-accordion-bg-item>
315
- <bd-accordion-bg-item title="Can I try Bitdefender for free?">
316
- <p>Yes. Bitdefender offers a 30-day free trial for most consumer products. No credit card is required to start the trial.</p>
317
- </bd-accordion-bg-item>
318
- <bd-accordion-bg-item title="What happens after my trial ends?">
319
- <p>Once the trial period ends, protection stops unless you purchase a subscription. Your settings and scan history are preserved if you upgrade.</p>
320
- </bd-accordion-bg-item>
321
- </bd-accordion-bg>
286
+ <div class="accordion system-requirements block">
287
+ <bd-accordion-bg title="System Requirements" guide-icon="/assets/user_guide.png" guide-label="User guide >" guide-href="#">
288
+ <bd-accordion-bg-item title="Bitdefender Parental Control" open>
289
+ <bd-p kind="small"><strong>Windows™ Operating Systems</strong><br />Microsoft Windows 7 (all versions) with Service Pack 1 (SP 1) or later.</bd-p>
290
+ <bd-p kind="small"><strong>Mac® Operating Systems</strong><br />macOS X Yosemite (10.10) or later</bd-p>
291
+ <bd-p kind="small"><strong>Android™ Operating Systems</strong><br />Android 5.0 or later</bd-p>
292
+ <bd-p kind="small"><strong>iOS Operating Systems</strong><br />iOS 12.0 or later</bd-p>
293
+ </bd-accordion-bg-item>
294
+ <bd-accordion-bg-item title="Bitdefender Central">
295
+ <bd-p kind="small">Bitdefender Central</bd-p>
296
+ </bd-accordion-bg-item>
297
+ </bd-accordion-bg>
298
+ </div>
322
299
  `
323
300
  };
@@ -61,7 +61,14 @@ export const accordionItem = css`
61
61
  --bd-acc-panel-paragraph-gap: var(--spacing-0);
62
62
  --bd-acc-item-margin-bottom: var(--spacing-0);
63
63
  }
64
-
64
+ ::slotted(bd-list) {
65
+ --bd-li-margin-bottom: var(--spacing-16);
66
+ display: block;
67
+ margin-bottom: var(--spacing-16);
68
+ }
69
+ ::slotted(bd-list:last-child) {
70
+ margin-bottom: 0;
71
+ }
65
72
  .header {
66
73
  display: flex;
67
74
  align-items: flex-start;
@@ -74,7 +81,7 @@ export const accordionItem = css`
74
81
  gap: var(--bd-acc-icon-gap, var(--spacing-12));
75
82
  font-family: var(--typography-fontFamily-sans);
76
83
  font-style: normal;
77
- font-size: var(--bd-acc-title-font-size, var(--typography-label-small-fontSize));
84
+ font-size: var(--bd-acc-title-font-size, var(--typography-label-large-fontSize));
78
85
  font-weight: var(
79
86
  --bd-acc-title-font-weight,
80
87
  var(--typography-fontWeight-semibold)
@@ -11,6 +11,8 @@ export default css`
11
11
  gap: var(--spacing-8);
12
12
  color: var(--color-neutral-700);
13
13
  line-height: var(--typography-lineHeight-normal);
14
+ font-family: var(--typography-fontFamily-sans);
15
+
14
16
  }
15
17
 
16
18
  /* === SIZE VARIANTS === */
@@ -20,10 +22,10 @@ export default css`
20
22
  margin-bottom: var(--spacing-4);
21
23
  }
22
24
 
23
- .bd-list-item.md {
24
- font-size: var(--typography-fontSize-base);
25
- margin-bottom: var(--spacing-6);
26
- }
25
+ .bd-list-item.md {
26
+ font-size: var(--typography-fontSize-base);
27
+ margin-bottom: var(--bd-li-margin-bottom, var(--spacing-6));
28
+ }
27
29
 
28
30
  .bd-list-item.lg {
29
31
  font-size: var(--typography-fontSize-lg);
@@ -98,9 +100,12 @@ export default css`
98
100
  flex: 1;
99
101
  }
100
102
 
101
- /* Last Item */
102
- .bd-list-item:last-child {
103
- margin-bottom: 0;
104
- }
103
+ // /* Last Item */
104
+ // .bd-list-item:last-child {
105
+ // margin-bottom: 0;
106
+ // }
107
+ :host(:last-of-type) .bd-list-item {
108
+ margin-bottom: 0;
109
+ }
105
110
  }
106
111
  `;
@@ -1,79 +1,165 @@
1
- import { html } from 'lit';
2
- import './list-item.js';
1
+ import { html } from "lit";
2
+ import "./list-item.js";
3
3
 
4
4
  export default {
5
- title : 'Components/List/List Item',
6
- component: 'bd-li',
7
- argTypes : {
5
+ title : "Components/List/List Item",
6
+ component : "bd-li",
7
+ tags : ["autodocs"],
8
+ parameters: {
9
+ layout: "padded",
10
+ docs : {
11
+ description: {
12
+ component: `
13
+ Componentă Lit pentru un element de listă cu marker configurabil.
14
+
15
+ \`\`\`html
16
+ <bd-li kind="bullet" size="md">Text element</bd-li>
17
+ <bd-li kind="check" size="md">Element bifat</bd-li>
18
+ <bd-li kind="number" size="md">Element numerotat</bd-li>
19
+ \`\`\`
20
+
21
+ ### Atribute
22
+ | Atribut | Tip | Default | Descriere |
23
+ |---|---|---|---|
24
+ | \`kind\` | String | \`bullet\` | Tipul marker-ului: \`bullet\` · \`number\` · \`check\` · \`none\` |
25
+ | \`size\` | String | \`md\` | Dimensiunea: \`sm\` · \`md\` · \`lg\` |
26
+ | \`icon\` | String | — | URL icon custom (înlocuiește marker-ul) |
27
+
28
+ ### Utilizare în \`bd-list\`
29
+ \`bd-li\` este destinat uzului în interiorul \`bd-list\`:
30
+ \`\`\`html
31
+ <bd-list type="unordered" spacing="md">
32
+ <bd-li kind="bullet" size="md">Primul element</bd-li>
33
+ <bd-li kind="bullet" size="md">Al doilea element</bd-li>
34
+ </bd-list>
35
+ \`\`\`
36
+ `
37
+ }
38
+ }
39
+ },
40
+ argTypes: {
8
41
  kind: {
9
- control : { type: 'select' },
10
- options : ['bullet', 'number', 'check', 'none'],
11
- description: 'List item marker type'
42
+ control : { type: "select" },
43
+ options : ["bullet", "number", "check", "none"],
44
+ description: "Tipul marker-ului",
45
+ table : { type: { summary: "string" }, defaultValue: { summary: "bullet" } }
12
46
  },
13
47
  size: {
14
- control : { type: 'select' },
15
- options : ['sm', 'md', 'lg'],
16
- description: 'List item size'
48
+ control : { type: "select" },
49
+ options : ["sm", "md", "lg"],
50
+ description: "Dimensiunea elementului",
51
+ table : { type: { summary: "string" }, defaultValue: { summary: "md" } }
17
52
  },
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
- }
53
+ icon: {
54
+ control : "text",
55
+ description: "URL icon custom (înlocuiește marker-ul implicit)",
56
+ table : { type: { summary: "string" } }
28
57
  }
29
58
  }
30
59
  };
31
60
 
32
- const Template = (args) => html`
33
- <bd-li kind="${args.kind}" size="${args.size}">${args.content}</bd-li>
34
- `;
61
+ // ─── Default ──────────────────────────────────────────────────────────────────
35
62
 
36
- export const Default = Template.bind({});
37
- Default.args = {
38
- kind : 'bullet',
39
- size : 'md',
40
- content: 'Default list item with bullet marker'
63
+ export const Default = {
64
+ name : "Default",
65
+ args : { kind: "bullet", size: "md" },
66
+ render: ({ kind, size }) => html`
67
+ <bd-li kind="${kind}" size="${size}">Default list item with bullet marker</bd-li>
68
+ `
41
69
  };
42
70
 
43
- export const Bullet = Template.bind({});
44
- Bullet.args = {
45
- kind : 'bullet',
46
- content: 'Item with bullet marker'
71
+ // ─── Bullet ───────────────────────────────────────────────────────────────────
72
+
73
+ export const Bullet = {
74
+ name : "Bullet",
75
+ args : { kind: "bullet", size: "md" },
76
+ render: ({ kind, size }) => html`
77
+ <bd-li kind="${kind}" size="${size}">Item with bullet marker</bd-li>
78
+ `
47
79
  };
48
80
 
49
- export const Number = Template.bind({});
50
- Number.args = {
51
- kind : 'number',
52
- content: 'Item with number marker'
81
+ // ─── Number ───────────────────────────────────────────────────────────────────
82
+
83
+ export const Number = {
84
+ name : "Number",
85
+ args : { kind: "number", size: "md" },
86
+ render: ({ kind, size }) => html`
87
+ <bd-li kind="${kind}" size="${size}">Item with number marker</bd-li>
88
+ `
53
89
  };
54
90
 
55
- export const Check = Template.bind({});
56
- Check.args = {
57
- kind : 'check',
58
- content: 'Item with checkmark'
91
+ // ─── Check ────────────────────────────────────────────────────────────────────
92
+
93
+ export const Check = {
94
+ name : "Check",
95
+ args : { kind: "check", size: "md" },
96
+ render: ({ kind, size }) => html`
97
+ <bd-li kind="${kind}" size="${size}">Item with checkmark marker</bd-li>
98
+ `
59
99
  };
60
100
 
61
- export const None = Template.bind({});
62
- None.args = {
63
- kind : 'none',
64
- content: 'Item without marker'
101
+ // ─── None ─────────────────────────────────────────────────────────────────────
102
+
103
+ export const None = {
104
+ name : "None",
105
+ args : { kind: "none", size: "md" },
106
+ render: ({ kind, size }) => html`
107
+ <bd-li kind="${kind}" size="${size}">Item without marker</bd-li>
108
+ `
65
109
  };
66
110
 
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
- `;
111
+ // ─── Size Variants ────────────────────────────────────────────────────────────
112
+
113
+ export const SizeVariants = {
114
+ name : "Size Variants",
115
+ parameters: { controls: { disable: true } },
116
+ render : () => html`
117
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
118
+ <bd-li kind="bullet" size="sm">Small list item (sm)</bd-li>
119
+ <bd-li kind="bullet" size="md">Medium list item (md)</bd-li>
120
+ <bd-li kind="bullet" size="lg">Large list item (lg)</bd-li>
121
+ </div>
122
+ `
123
+ };
124
+
125
+ // ─── Toate tipurile de marker ─────────────────────────────────────────────────
126
+
127
+ export const AllKinds = {
128
+ name : "Toate tipurile de marker",
129
+ parameters: { controls: { disable: true } },
130
+ render : () => html`
131
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
132
+ <bd-li kind="bullet" size="md">Bullet — marker punct negru</bd-li>
133
+ <bd-li kind="number" size="md">Number — marker număr</bd-li>
134
+ <bd-li kind="check" size="md">Check — marker bifă verde</bd-li>
135
+ <bd-li kind="none" size="md">None — fără marker</bd-li>
136
+ </div>
137
+ `
138
+ };
139
+
140
+ // ─── Cu conținut rich ─────────────────────────────────────────────────────────
141
+
142
+ export const WithRichContent = {
143
+ name : "Cu conținut rich",
144
+ parameters: { controls: { disable: true } },
145
+ render : () => html`
146
+ <bd-li kind="bullet" size="lg">
147
+ <strong>Element evidențiat</strong> cu text descriptiv suplimentar care se poate întinde
148
+ pe mai multe rânduri, menținând alinierea corectă față de marker.
149
+ </bd-li>
150
+ `
151
+ };
152
+
153
+ // ─── Playground ───────────────────────────────────────────────────────────────
154
+
155
+ export const Playground = {
156
+ name : "Playground",
157
+ args : { kind: "bullet", size: "md" },
158
+ render: ({ kind, size }) => html`
159
+ <div style="display: flex; flex-direction: column; gap: 0.5rem;">
160
+ <bd-li kind="${kind}" size="${size}">Primul element de listă</bd-li>
161
+ <bd-li kind="${kind}" size="${size}">Al doilea element de listă</bd-li>
162
+ <bd-li kind="${kind}" size="${size}">Al treilea element de listă</bd-li>
163
+ </div>
164
+ `
165
+ };