@repobit/dex-system-design 0.20.0 → 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.
Files changed (63) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/package.json +2 -2
  3. package/src/components/Button/button.stories.js +51 -51
  4. package/src/components/accordion/accordion-bg.css.js +141 -123
  5. package/src/components/accordion/accordion-bg.stories.js +102 -72
  6. package/src/components/accordion/accordion-light.stories.js +78 -53
  7. package/src/components/anchor/anchor.stories.js +24 -22
  8. package/src/components/back/back.css.js +56 -0
  9. package/src/components/back/back.js +39 -0
  10. package/src/components/back/back.stories.js +184 -0
  11. package/src/components/badge/badge.stories.js +3 -10
  12. package/src/components/breadcrumb/breadcrumb.css.js +98 -0
  13. package/src/components/breadcrumb/breadcrumb.js +136 -0
  14. package/src/components/breadcrumb/breadcrumb.stories.js +109 -0
  15. package/src/components/cards/card.js +2 -1
  16. package/src/components/cards/card.stories.js +49 -49
  17. package/src/components/carousel/carousel.css.js +8 -1
  18. package/src/components/carousel/carousel.js +0 -1
  19. package/src/components/carousel/carousel.stories.js +21 -17
  20. package/src/components/display/display.css.js +68 -0
  21. package/src/components/display/display.js +26 -0
  22. package/src/components/display/display.stories.js +339 -0
  23. package/src/components/divider/divider-horizontal.js +1 -1
  24. package/src/components/footer/footer-links-group.js +3 -3
  25. package/src/components/footer/footer-lp.stories.js +0 -1
  26. package/src/components/footer/footer.css.js +0 -6
  27. package/src/components/footer/footer.js +21 -41
  28. package/src/components/footer/footer.stories.js +0 -1
  29. package/src/components/header/header.js +11 -11
  30. package/src/components/header/header.stories.js +36 -4
  31. package/src/components/heading/heading.css.js +79 -0
  32. package/src/components/heading/heading.js +79 -0
  33. package/src/components/heading/heading.stories.js +260 -0
  34. package/src/components/highlight/highlight.stories.js +1 -1
  35. package/src/components/image/image.css.js +101 -0
  36. package/src/components/image/image.js +57 -0
  37. package/src/components/image/image.stories.js +245 -0
  38. package/src/components/light-carousel/light-carousel-simple.js +3 -2
  39. package/src/components/light-carousel/light-carousel.js +3 -7
  40. package/src/components/light-carousel/light-carousel.stories.js +12 -13
  41. package/src/components/link/link.css.js +107 -18
  42. package/src/components/link/link.js +16 -12
  43. package/src/components/link/link.stories.js +177 -0
  44. package/src/components/list/list-item/list-item.css.js +106 -0
  45. package/src/components/list/list-item/list-item.js +43 -0
  46. package/src/components/list/list-item/list-item.stories.js +79 -0
  47. package/src/components/list/list.css.js +175 -0
  48. package/src/components/list/list.js +44 -0
  49. package/src/components/modal/modal.js +6 -5
  50. package/src/components/paragraph/paragraph.css.js +41 -11
  51. package/src/components/paragraph/paragraph.js +7 -45
  52. package/src/components/paragraph/paragraph.stories.js +235 -0
  53. package/src/components/picture/picture.css.js +0 -0
  54. package/src/components/picture/picture.js +46 -0
  55. package/src/components/picture/picture.stories.js +275 -0
  56. package/src/components/pricing-cards/pricing-card-header.js +9 -7
  57. package/src/components/pricing-cards/pricing-card-pricing.js +11 -12
  58. package/src/components/pricing-cards/pricing-card.js +37 -36
  59. package/src/components/tabs/tabs.js +44 -47
  60. package/src/components/termsOfUse/terms.js +77 -161
  61. package/src/components/termsOfUse/terms.stories.js +4 -3
  62. package/src/stories/Header.js +6 -6
  63. package/src/tokens/tokens.stories.js +9 -8
@@ -1,14 +1,44 @@
1
1
  import { css } from "lit";
2
2
 
3
3
  export default css`
4
- .bd-font-brand{
5
- font-family: var(--typography-fontFamily-sans);
6
- }
7
- .bd-font-cod {
8
- font-family: var(--font-family-mono);
9
- }
10
-
11
- .bd-font-comp {
12
- font-family: 'Arial',sans-serif;
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 textCSS from "../../tokens/typography.css.js";
4
- import paragraphText from "../paragraph/paragraph.css.js";
3
+ import paragraphCSS from "./paragraph.css.js";
5
4
 
6
- class TextFontBrand extends LitElement {
5
+ export class BdP extends LitElement {
7
6
  static properties = {
8
- text: { type: String }
7
+ kind: { type: String, reflect: true }
9
8
  };
10
9
 
11
10
  constructor() {
12
11
  super();
13
- this.text = "Componenta Text Font Brand.";
14
-
12
+ this.kind = "regular";
15
13
  }
16
14
 
17
15
  render() {
18
- return html` <p class="bd-font-brand text-display-medium">${this.text}</p> `;
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-font-brand", TextFontBrand);
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
@@ -0,0 +1,46 @@
1
+ import { LitElement, html } from "lit";
2
+
3
+ export class BdPicture extends LitElement {
4
+ static properties = {
5
+ sources : { type: Array },
6
+ alt : { type: String },
7
+ fallbackSrc: { type: String },
8
+ width : { type: Number },
9
+ height : { type: Number },
10
+ loading : { type: String }
11
+ };
12
+
13
+ constructor() {
14
+ super();
15
+ this.sources = [];
16
+ this.alt = "";
17
+ this.fallbackSrc = "";
18
+ this.width = null;
19
+ this.height = null;
20
+ this.loading = "lazy";
21
+ }
22
+
23
+ render() {
24
+ return html`
25
+ <picture>
26
+ ${this.sources.map(source => html`
27
+ <source
28
+ type="${source.type}"
29
+ srcset="${source.srcset}"
30
+ media="${source.media || ''}"
31
+ sizes="${source.sizes || ''}"
32
+ >
33
+ `)}
34
+ <img
35
+ loading="${this.loading}"
36
+ alt="${this.alt}"
37
+ src="${this.fallbackSrc}"
38
+ width="${this.width}"
39
+ height="${this.height}"
40
+ >
41
+ </picture>
42
+ `;
43
+ }
44
+ }
45
+
46
+ customElements.define("bd-picture", BdPicture);
@@ -0,0 +1,275 @@
1
+ import { html } from 'lit';
2
+ import '../heading/heading.js';
3
+ import './picture.js';
4
+
5
+ export default {
6
+ title : 'Atoms/Picture',
7
+ component: 'bd-picture',
8
+ argTypes : {
9
+ sources: {
10
+ control : 'object',
11
+ description: 'Array of source objects for responsive images'
12
+ },
13
+ alt: {
14
+ control : 'text',
15
+ description: 'Alt text for accessibility'
16
+ },
17
+ fallbackSrc: {
18
+ control : 'text',
19
+ description: 'Fallback image source for older browsers'
20
+ },
21
+ width: {
22
+ control : 'number',
23
+ description: 'Image width attribute'
24
+ },
25
+ height: {
26
+ control : 'number',
27
+ description: 'Image height attribute'
28
+ },
29
+ loading: {
30
+ control : { type: 'select' },
31
+ options : ['lazy', 'eager'],
32
+ description: 'Image loading strategy'
33
+ }
34
+ },
35
+ parameters: {
36
+ docs: {
37
+ description: {
38
+ component: 'A responsive picture component that supports multiple image formats and breakpoints.'
39
+ }
40
+ }
41
+ }
42
+ };
43
+
44
+ const Template = (args) => html`
45
+ <bd-picture
46
+ .sources="${args.sources}"
47
+ alt="${args.alt}"
48
+ fallback-src="${args.fallbackSrc}"
49
+ width="${args.width}"
50
+ height="${args.height}"
51
+ loading="${args.loading}"
52
+ ></bd-picture>
53
+ `;
54
+
55
+ export const Default = Template.bind({});
56
+ Default.args = {
57
+ sources: [
58
+ {
59
+ type : 'image/webp',
60
+ srcset: '/assets/bd-header-us-2000.webp',
61
+ media : '(min-width: 1200px)'
62
+ },
63
+ {
64
+ type : 'image/webp',
65
+ srcset: '/assets/bd-header-us-1000.webp',
66
+ media : '(min-width: 768px)'
67
+ },
68
+ {
69
+ type : 'image/webp',
70
+ srcset: '/assets/bd-header-us-750.webp'
71
+ }
72
+ ],
73
+ alt : 'Bitdefender Security Illustration',
74
+ fallbackSrc: '/assets/bd-header-us.jpg',
75
+ width : 750,
76
+ height : 500,
77
+ loading : 'lazy'
78
+ };
79
+
80
+ export const SimplePicture = Template.bind({});
81
+ SimplePicture.args = {
82
+ sources: [
83
+ {
84
+ type : 'image/jpeg',
85
+ srcset: '/assets/bd-header-us.jpg'
86
+ }
87
+ ],
88
+ alt : 'Simple Bitdefender Security Image',
89
+ fallbackSrc: '/assets/bd-header-us.jpg',
90
+ width : 750,
91
+ height : 500,
92
+ loading : 'eager'
93
+ };
94
+
95
+ export const WebPWithJPEGFallback = () => html`
96
+ <div style="max-width: 800px; margin: 0 auto;">
97
+ <bd-h as="h4">WebP with JPEG Fallback</bd-h>
98
+ <bd-picture
99
+ .sources="${[
100
+ {
101
+ type : 'image/webp',
102
+ srcset: '/assets/bd-header-us-2000.webp',
103
+ media : '(min-width: 1200px)'
104
+ },
105
+ {
106
+ type : 'image/webp',
107
+ srcset: '/assets/bd-header-us-1000.webp',
108
+ media : '(min-width: 768px)'
109
+ },
110
+ {
111
+ type : 'image/webp',
112
+ srcset: '/assets/bd-header-us-750.webp'
113
+ },
114
+ {
115
+ type : 'image/jpeg',
116
+ srcset: '/assets/bd-header-us-2000.jpg',
117
+ media : '(min-width: 1200px)'
118
+ },
119
+ {
120
+ type : 'image/jpeg',
121
+ srcset: '/assets/bd-header-us-1000.jpg',
122
+ media : '(min-width: 768px)'
123
+ }
124
+ ]}"
125
+ alt="Bitdefender Security with WebP and JPEG fallback"
126
+ fallback-src="/assets/bd-header-us.jpg"
127
+ width="750"
128
+ height="500"
129
+ loading="eager"
130
+ ></bd-picture>
131
+ <p style="margin-top: 1rem; font-size: 0.875rem; color: #666;">
132
+ Modern WebP format with JPEG fallback for maximum browser compatibility.
133
+ </p>
134
+ </div>
135
+ `;
136
+
137
+ export const DifferentBreakpoints = () => html`
138
+ <div style="max-width: 1000px; margin: 0 auto;">
139
+ <bd-h as="h4">Multiple Breakpoints</bd-h>
140
+ <bd-picture
141
+ .sources="${[
142
+ {
143
+ type : 'image/webp',
144
+ srcset: '/assets/bd-header-us-2000.webp',
145
+ media : '(min-width: 1440px)'
146
+ },
147
+ {
148
+ type : 'image/webp',
149
+ srcset: '/assets/bd-header-us-1200.webp',
150
+ media : '(min-width: 1024px)'
151
+ },
152
+ {
153
+ type : 'image/webp',
154
+ srcset: '/assets/bd-header-us-800.webp',
155
+ media : '(min-width: 768px)'
156
+ },
157
+ {
158
+ type : 'image/webp',
159
+ srcset: '/assets/bd-header-us-600.webp',
160
+ media : '(min-width: 480px)'
161
+ },
162
+ {
163
+ type : 'image/webp',
164
+ srcset: '/assets/bd-header-us-400.webp'
165
+ }
166
+ ]}"
167
+ alt="Bitdefender Security with multiple breakpoints"
168
+ fallback-src="/assets/bd-header-us.jpg"
169
+ width="750"
170
+ height="500"
171
+ ></bd-picture>
172
+ <p style="margin-top: 1rem; font-size: 0.875rem; color: #666;">
173
+ This image loads different sizes at: 1440px+, 1024px+, 768px+, 480px+, and mobile.
174
+ </p>
175
+ </div>
176
+ `;
177
+
178
+ export const HeaderImageExample = () => html`
179
+ <div style="background: #f8fafc; padding: 2rem; border-radius: 8px; border: 1px solid #e2e8f0;">
180
+ <bd-h as="h4">Header Image Example</bd-h>
181
+ <bd-picture
182
+ .sources="${[
183
+ {
184
+ type : 'image/webp',
185
+ srcset: '/assets/bd-header-us-2000.webp',
186
+ media : '(min-width: 1200px)'
187
+ },
188
+ {
189
+ type : 'image/webp',
190
+ srcset: '/assets/bd-header-us-1000.webp',
191
+ media : '(min-width: 768px)'
192
+ },
193
+ {
194
+ type : 'image/webp',
195
+ srcset: '/assets/bd-header-us-750.webp'
196
+ }
197
+ ]}"
198
+ alt="Bitdefender Security Header Illustration"
199
+ fallback-src="/assets/bd-header-us.jpg"
200
+ width="800"
201
+ height="400"
202
+ loading="eager"
203
+ ></bd-picture>
204
+ <div style="margin-top: 1rem; padding: 1rem; background: white; border-radius: 4px;">
205
+ <bd-h as="h4" style="margin: 0 0 0.5rem 0;">Bitdefender Ultimate Security</bd-h>
206
+ <p style="margin: 0; color: #666;">Complete protection for your digital life</p>
207
+ </div>
208
+ </div>
209
+ `;
210
+
211
+ export const SingleSourceExample = () => html`
212
+ <div style="max-width: 600px; margin: 0 auto;">
213
+ <bd-h as="h4">Single Source Picture</bd-h>
214
+ <bd-picture
215
+ .sources="${[
216
+ {
217
+ type : 'image/jpeg',
218
+ srcset: '/assets/bd-header-us.jpg'
219
+ }
220
+ ]}"
221
+ alt="Simple Bitdefender Security Image"
222
+ fallback-src="/assets/bd-header-us.jpg"
223
+ width="600"
224
+ height="400"
225
+ loading="lazy"
226
+ ></bd-picture>
227
+ <p style="margin-top: 1rem; font-size: 0.875rem; color: #666;">
228
+ Simple picture with single JPEG source - perfect when you don't need multiple formats.
229
+ </p>
230
+ </div>
231
+ `;
232
+
233
+ export const WithFixedDimensions = () => html`
234
+ <div>
235
+ <bd-h as="h4">Fixed Dimensions</bd-h>
236
+ <bd-picture
237
+ .sources="${[
238
+ {
239
+ type : 'image/jpeg',
240
+ srcset: '/assets/bd-header-us.jpg'
241
+ }
242
+ ]}"
243
+ alt="Bitdefender Security with fixed dimensions"
244
+ fallback-src="/assets/bd-header-us.jpg"
245
+ width="400"
246
+ height="300"
247
+ loading="lazy"
248
+ ></bd-picture>
249
+ <p style="margin-top: 1rem; font-size: 0.875rem; color: #666;">
250
+ Fixed 400x300 dimensions prevent layout shifts during loading.
251
+ </p>
252
+ </div>
253
+ `;
254
+
255
+ export const AccessibilityExample = () => html`
256
+ <div style="max-width: 600px; margin: 0 auto;">
257
+ <bd-h as="h4">Accessible Picture</bd-h>
258
+ <bd-picture
259
+ .sources="${[
260
+ {
261
+ type : 'image/jpeg',
262
+ srcset: '/assets/bd-header-us.jpg'
263
+ }
264
+ ]}"
265
+ alt="Bitdefender Security Suite showing advanced protection features including real-time scanning, firewall protection, and privacy tools for comprehensive digital security"
266
+ fallback-src="/assets/bd-header-us.jpg"
267
+ width="600"
268
+ height="400"
269
+ loading="lazy"
270
+ ></bd-picture>
271
+ <p style="margin-top: 1rem; font-size: 0.875rem; color: #666;">
272
+ Always provide meaningful alt text for screen readers and SEO.
273
+ </p>
274
+ </div>
275
+ `;