@repobit/dex-system-design 0.22.11 → 0.23.1

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 (39) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/package.json +4 -3
  3. package/src/components/Button/button.stories.js +292 -120
  4. package/src/components/accordion/accordion-bg.css.js +7 -2
  5. package/src/components/accordion/accordion-bg.stories.js +268 -449
  6. package/src/components/accordion/accordion.stories.js +259 -265
  7. package/src/components/anchor/anchor.stories.js +160 -159
  8. package/src/components/awards/awards-icon.js +44 -0
  9. package/src/components/awards/awards.css.js +328 -0
  10. package/src/components/awards/awards.js +224 -0
  11. package/src/components/awards/awards.stories.js +447 -0
  12. package/src/components/back/back.stories.js +100 -375
  13. package/src/components/badge/badge.stories.js +241 -129
  14. package/src/components/breadcrumb/breadcrumb.stories.js +218 -219
  15. package/src/components/cards/card.stories.js +174 -622
  16. package/src/components/carousel/carousel.stories.js +196 -225
  17. package/src/components/checkbox/checkbox.stories.js +136 -51
  18. package/src/components/compare/compare.css.js +237 -0
  19. package/src/components/compare/compare.js +253 -0
  20. package/src/components/compare/compare.stories.js +372 -0
  21. package/src/components/display/display.stories.js +91 -297
  22. package/src/components/divider/divider.stories.js +160 -342
  23. package/src/components/footer/footer.stories.js +177 -402
  24. package/src/components/header/header.stories.js +130 -338
  25. package/src/components/heading/heading.js +8 -5
  26. package/src/components/heading/heading.stories.js +162 -471
  27. package/src/components/highlight/highlight.stories.js +153 -38
  28. package/src/components/image/image.stories.js +135 -563
  29. package/src/components/input/custom-form.stories.js +761 -224
  30. package/src/components/link/link.js +29 -12
  31. package/src/components/link/link.stories.js +130 -468
  32. package/src/components/modal/modal.stories.js +174 -28
  33. package/src/components/paragraph/paragraph.css.js +10 -1
  34. package/src/components/paragraph/paragraph.stories.js +85 -410
  35. package/src/components/picture/picture.stories.js +147 -561
  36. package/src/components/radio/radio.stories.js +230 -81
  37. package/src/components/tabs/tabs.stories.js +126 -10
  38. package/src/components/termsOfUse/terms.stories.js +223 -8
  39. package/src/tokens/tokens.js +1 -0
@@ -1,333 +1,127 @@
1
1
  import { html } from 'lit';
2
- import '../heading/heading.js';
3
- import '../paragraph/paragraph.js';
4
2
  import './display.js';
5
3
 
6
4
  export default {
7
- title : 'Atoms/Display',
8
- component: 'bd-display',
9
- tags : ['autodocs'],
10
- argTypes : {
5
+ title : 'Components/Display',
6
+ tags : ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ **BdDisplay** is a Lit component for large typographic display text with configurable size, color, and alignment.
12
+
13
+ ### Usage
14
+ \`\`\`html
15
+ <bd-display kind="xl" color="#026DFF" align="center">
16
+ World-class protection
17
+ </bd-display>
18
+ \`\`\`
19
+
20
+ ### Kind Values
21
+ | Kind | Description |
22
+ |---|---|
23
+ | \`sm\` | Small display |
24
+ | \`md\` | Medium display (default) |
25
+ | \`lg\` | Large display |
26
+ | \`xl\` | Extra large |
27
+ | \`xxl\` | 2x extra large |
28
+ | \`xxxl\` | 3x extra large |
29
+ `
30
+ }
31
+ }
32
+ },
33
+ argTypes: {
11
34
  kind: {
12
35
  control : { type: 'select' },
13
36
  options : ['sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'],
14
- description: 'Display size variant',
15
- table : {
16
- type : { summary: 'string' },
17
- defaultValue: { summary: 'lg' }
18
- }
37
+ description: 'Display size variant — maps to a CSS class',
38
+ table : { type: { summary: "'sm'|'md'|'lg'|'xl'|'xxl'|'xxxl'" }, defaultValue: { summary: 'lg' }, category: 'Appearance' }
19
39
  },
20
40
  color: {
21
41
  control : 'color',
22
- description: 'Custom text color',
23
- table : {
24
- type : { summary: 'string' },
25
- defaultValue: { summary: 'inherit' }
26
- }
42
+ description: 'Inline text color applied via style attribute',
43
+ table : { type: { summary: 'string' }, defaultValue: { summary: '' }, category: 'Appearance' }
27
44
  },
28
45
  align: {
29
46
  control : { type: 'select' },
30
47
  options : ['left', 'center', 'right'],
31
- description: 'Text alignment',
32
- table : {
33
- type : { summary: 'string' },
34
- defaultValue: { summary: 'left' }
35
- }
36
- }
37
- },
38
- parameters: {
39
- docs: {
40
- description: {
41
- component: 'Large display typography for hero sections, landing pages, and prominent headlines. Display text is designed for maximum visual impact while maintaining readability.'
42
- }
48
+ description: 'Text alignment applied via inline style',
49
+ table : { type: { summary: "'left'|'center'|'right'" }, defaultValue: { summary: 'left' }, category: 'Appearance' }
43
50
  }
44
51
  }
45
52
  };
46
53
 
47
- const Template = ({ kind, color, align, content }) => html`
48
- <bd-display
49
- kind="${kind}"
50
- color="${color}"
51
- align="${align}"
52
- >
53
- ${content}
54
+ const render = (args) => html`
55
+ <bd-display kind="${args.kind}" color="${args.color}" align="${args.align}">
56
+ World-class security software
54
57
  </bd-display>
55
58
  `;
56
59
 
57
- // ============ STORIES ============
60
+ const defaultArgs = { kind: 'lg', color: '', align: 'left' };
58
61
 
59
- export const Default = Template.bind({});
60
- Default.args = {
61
- kind : 'lg',
62
- color : '',
63
- align : 'left',
64
- content: 'Display Heading'
65
- };
66
- Default.parameters = {
67
- docs: {
68
- description: {
69
- story: 'Default display component with medium-large size. Perfect for most prominent headings.'
70
- }
71
- }
72
- };
62
+ // ─── Stories ───────────────────────────────────────────────────────────────
73
63
 
74
- export const AllDisplaySizes = () => html`
75
- <div style="display: flex; flex-direction: column; gap: 3rem; max-width: 1200px; margin: 0 auto; padding: 2rem;">
76
- <bd-h as="h2" style="margin-bottom: 2rem;">All Display Size Variants</bd-h>
77
-
78
- <div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
79
- <bd-display kind="xxxl">Display XXXL - Largest Hero Text</bd-display>
80
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
81
- <strong>Use case:</strong> Main hero sections on landing pages<br>
82
- <strong>CSS Variable:</strong> --typography-display-xxxl-fontSize<br>
83
- <strong>Recommended:</strong> Single prominent headline per page
84
- </bd-p>
85
- </div>
86
-
87
- <div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
88
- <bd-display kind="xxl">Display XXL - Major Headlines</bd-display>
89
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
90
- <strong>Use case:</strong> Primary section titles and important announcements<br>
91
- <strong>CSS Variable:</strong> --typography-display-xxl-fontSize<br>
92
- <strong>Recommended:</strong> Key feature sections
93
- </bd-p>
94
- </div>
95
-
96
- <div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
97
- <bd-display kind="xl">Display XL - Prominent Headers</bd-display>
98
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
99
- <strong>Use case:</strong> Feature highlights and value propositions<br>
100
- <strong>CSS Variable:</strong> --typography-display-xl-fontSize<br>
101
- <strong>Recommended:</strong> Secondary important sections
102
- </bd-p>
103
- </div>
104
-
105
- <div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
106
- <bd-display kind="lg">Display LG - Standard Display</bd-display>
107
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
108
- <strong>Use case:</strong> Balanced display for most prominent text<br>
109
- <strong>CSS Variable:</strong> --typography-display-lg-fontSize<br>
110
- <strong>Recommended:</strong> Default choice for display text
111
- </bd-p>
112
- </div>
113
-
114
- <div style="border-bottom: 2px solid #e2e8f0; padding-bottom: 2rem;">
115
- <bd-display kind="md">Display MD - Compact Display</bd-display>
116
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
117
- <strong>Use case:</strong> Sections with limited space but needing impact<br>
118
- <strong>CSS Variable:</strong> --typography-display-md-fontSize<br>
119
- <strong>Recommended:</strong> Cards and compact layouts
120
- </bd-p>
121
- </div>
122
-
123
- <div>
124
- <bd-display kind="sm">Display SM - Minimal Display</bd-display>
125
- <bd-p kind="small" style="margin-top: 1rem; color: #64748b;">
126
- <strong>Use case:</strong> Smallest display for subtle prominence<br>
127
- <strong>CSS Variable:</strong> --typography-display-sm-fontSize<br>
128
- <strong>Recommended:</strong> When you need hierarchy but space is limited
129
- </bd-p>
130
- </div>
131
- </div>
132
- `;
133
- AllDisplaySizes.parameters = {
134
- docs: {
135
- description: {
136
- story: 'Complete overview of all display size variants with usage recommendations and CSS variable references.'
137
- }
138
- }
64
+ export const Default = {
65
+ name : 'Default (lg, left)',
66
+ render : () => html`<bd-display kind="lg">World-class security software</bd-display>`,
67
+ parameters: { docs: { description: { story: 'Default display text with `kind="lg"` and left alignment.' } } }
139
68
  };
140
69
 
141
- export const TextAlignment = () => html`
142
- <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 1000px; margin: 0 auto; padding: 2rem;">
143
- <bd-h as="h2" style="margin-bottom: 1rem;">Text Alignment Options</bd-h>
144
-
145
- <div style="border: 2px solid #e2e8f0; padding: 2rem; border-radius: 8px;">
146
- <bd-display kind="xl" align="left">
147
- Left Aligned Display
148
- </bd-display>
149
- <bd-p kind="small" style="color: #64748b; margin-top: 1rem;">
150
- Default alignment. Best for most content sections and body text.
151
- </bd-p>
152
- </div>
153
-
154
- <div style="border: 2px solid #e2e8f0; padding: 2rem; border-radius: 8px;">
155
- <bd-display kind="xl" align="center">
156
- Center Aligned Display
157
- </bd-display>
158
- <bd-p kind="small" style="color: #64748b; margin-top: 1rem; text-align: center;">
159
- Ideal for hero sections, testimonials, and feature highlights.
160
- </bd-p>
161
- </div>
162
-
163
- <div style="border: 2px solid #e2e8f0; padding: 2rem; border-radius: 8px;">
164
- <bd-display kind="xl" align="right">
165
- Right Aligned Display
166
- </bd-display>
167
- <bd-p kind="small" style="color: #64748b; margin-top: 1rem; text-align: right;">
168
- Useful for asymmetric layouts and creative designs.
169
- </bd-p>
70
+ export const AllKinds = {
71
+ name : 'All Kinds',
72
+ render: () => html`
73
+ <div style="display:flex; flex-direction:column; gap:16px;">
74
+ <bd-display kind="sm">Small Display</bd-display>
75
+ <bd-display kind="md">Medium Display</bd-display>
76
+ <bd-display kind="lg">Large Display</bd-display>
77
+ <bd-display kind="xl">Extra Large Display</bd-display>
78
+ <bd-display kind="xxl">2x Extra Large</bd-display>
79
+ <bd-display kind="xxxl">3x Extra Large</bd-display>
170
80
  </div>
171
- </div>
172
- `;
173
- TextAlignment.parameters = {
174
- docs: {
175
- description: {
176
- story: 'Demonstrates different text alignment options for display components and their recommended use cases.'
177
- }
178
- }
81
+ `,
82
+ parameters: { docs: { description: { story: 'All six `kind` values stacked vertically for scale comparison.' } } }
179
83
  };
180
84
 
181
- export const ColorCustomization = () => html`
182
- <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 1000px; margin: 0 auto; padding: 2rem;">
183
- <bd-h as="h2" style="margin-bottom: 1rem;">Color Customization</bd-h>
184
-
185
- <div style="background: #1e293b; padding: 2rem; border-radius: 8px;">
186
- <bd-display kind="xl" color="#ffffff">
187
- White Text on Dark
188
- </bd-display>
189
- <bd-p kind="small" style="color: #cbd5e1; margin-top: 1rem;">
190
- Perfect for dark theme sections and hero areas.
191
- </bd-p>
192
- </div>
193
-
194
- <div style="background: #dbeafe; padding: 2rem; border-radius: 8px;">
195
- <bd-display kind="xl" color="#1e40af">
196
- Primary Brand Color
197
- </bd-display>
198
- <bd-p kind="small" style="color: #374151; margin-top: 1rem;">
199
- Using brand colors for emphasis and visual consistency.
200
- </bd-p>
85
+ export const AllAlignments = {
86
+ name : 'All Alignments',
87
+ render: () => html`
88
+ <div style="display:flex; flex-direction:column; gap:16px; width:100%;">
89
+ <bd-display kind="lg" align="left">Left aligned display</bd-display>
90
+ <bd-display kind="lg" align="center">Center aligned display</bd-display>
91
+ <bd-display kind="lg" align="right">Right aligned display</bd-display>
201
92
  </div>
202
-
203
- <div style="background: #f0fdf4; padding: 2rem; border-radius: 8px;">
204
- <bd-display kind="xl" color="#166534">
205
- Success Green Color
206
- </bd-display>
207
- <bd-p kind="small" style="color: #374151; margin-top: 1rem;">
208
- Color coding for specific contexts like success states.
209
- </bd-p>
93
+ `,
94
+ parameters: { docs: { description: { story: 'All three alignment options: left, center, and right.' } } }
95
+ };
96
+
97
+ export const CustomColor = {
98
+ name : 'Custom Color',
99
+ render: () => html`
100
+ <div style="display:flex; flex-direction:column; gap:12px;">
101
+ <bd-display kind="lg" color="#026DFF">Blue Display</bd-display>
102
+ <bd-display kind="lg" color="#E53935">Red Display</bd-display>
103
+ <bd-display kind="lg" color="#43A047">Green Display</bd-display>
104
+ <bd-display kind="lg" color="var(--color-neutral-1000)">Token Color</bd-display>
210
105
  </div>
106
+ `,
107
+ parameters: { docs: { description: { story: 'Custom `color` values including hex codes and CSS custom properties.' } } }
108
+ };
211
109
 
212
- <div style="background: #fef2f2; padding: 2rem; border-radius: 8px;">
213
- <bd-display kind="xl" color="#dc2626">
214
- Error Red Color
110
+ export const HeroVariant = {
111
+ name : 'Hero Variant',
112
+ render: () => html`
113
+ <div style="text-align:center; padding:40px;">
114
+ <bd-display kind="xxxl" color="#026DFF" align="center">
115
+ Award-winning cybersecurity
215
116
  </bd-display>
216
- <bd-p kind="small" style="color: #374151; margin-top: 1rem;">
217
- Using red for error states or important warnings.
218
- </bd-p>
219
117
  </div>
220
- </div>
221
- `;
222
- ColorCustomization.parameters = {
223
- docs: {
224
- description: {
225
- story: 'Shows how display components can be customized with different colors for various contexts and themes.'
226
- }
227
- }
228
- };
229
-
230
- export const SizeXXXL = Template.bind({});
231
- SizeXXXL.args = {
232
- kind : 'xxxl',
233
- color : '',
234
- align : 'center',
235
- content: 'Transform Your Digital Experience'
236
- };
237
- SizeXXXL.parameters = {
238
- docs: {
239
- description: {
240
- story: 'Largest display size (XXXL) - Use for primary hero sections on landing pages. Maximum visual impact.'
241
- }
242
- }
118
+ `,
119
+ parameters: { docs: { description: { story: 'Large hero-style display with xxxl size, blue color, and center alignment.' } } }
243
120
  };
244
121
 
245
- export const SizeXXL = Template.bind({});
246
- SizeXXL.args = {
247
- kind : 'xxl',
248
- color : '',
249
- align : 'center',
250
- content: 'Enterprise-Grade Solutions'
251
- };
252
- SizeXXL.parameters = {
253
- docs: {
254
- description: {
255
- story: 'Extra large display (XXL) - Perfect for major section titles and important feature announcements.'
256
- }
257
- }
258
- };
259
-
260
- export const SizeXL = Template.bind({});
261
- SizeXL.args = {
262
- kind : 'xl',
263
- color : '',
264
- align : 'left',
265
- content: 'Advanced Technology Platform'
266
- };
267
- SizeXL.parameters = {
268
- docs: {
269
- description: {
270
- story: 'Large display (XL) - Great for prominent headers and key value propositions in content sections.'
271
- }
272
- }
273
- };
274
-
275
- export const SizeLG = Template.bind({});
276
- SizeLG.args = {
277
- kind : 'lg',
278
- color : '',
279
- align : 'left',
280
- content: 'Innovative Features & Capabilities'
281
- };
282
- SizeLG.parameters = {
283
- docs: {
284
- description: {
285
- story: 'Standard display (LG) - Balanced size suitable for most display text needs across the application.'
286
- }
287
- }
288
- };
289
-
290
- export const SizeMD = Template.bind({});
291
- SizeMD.args = {
292
- kind : 'md',
293
- color : '',
294
- align : 'left',
295
- content: 'Compact Powerful Display'
296
- };
297
- SizeMD.parameters = {
298
- docs: {
299
- description: {
300
- story: 'Medium display (MD) - Compact size for sections with limited vertical space but still requiring visual impact.'
301
- }
302
- }
303
- };
304
-
305
- export const SizeSM = Template.bind({});
306
- SizeSM.args = {
307
- kind : 'sm',
308
- color : '',
309
- align : 'left',
310
- content: 'Minimal Yet Impactful'
311
- };
312
- SizeSM.parameters = {
313
- docs: {
314
- description: {
315
- story: 'Small display (SM) - Smallest display size, ideal for compact layouts where space is premium but hierarchy matters.'
316
- }
317
- }
318
- };
319
-
320
- export const InteractivePlayground = Template.bind({});
321
- InteractivePlayground.args = {
322
- kind : 'lg',
323
- color : '',
324
- align : 'left',
325
- content: 'Customize This Display Text'
326
- };
327
- InteractivePlayground.parameters = {
328
- docs: {
329
- description: {
330
- story: 'Interactive playground where you can test all display properties in real-time. Use the controls panel to modify the display component.'
331
- }
332
- }
122
+ export const Playground = {
123
+ name : '🛝 Playground',
124
+ args : { ...defaultArgs },
125
+ render,
126
+ parameters: { docs: { description: { story: 'Interactive playground. Adjust kind, color, and alignment via Controls.' } } }
333
127
  };