@repobit/dex-system-design 0.21.2 → 0.22.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 (52) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +4 -2
  3. package/src/components/Button/Button.js +7 -2
  4. package/src/components/Button/button.css.js +30 -0
  5. package/src/components/accordion/accordion-bg.stories.js +341 -171
  6. package/src/components/accordion/accordion.stories.js +345 -0
  7. package/src/components/anchor/anchor.stories.js +134 -76
  8. package/src/components/back/back.css.js +1 -1
  9. package/src/components/back/back.stories.js +301 -63
  10. package/src/components/badge/badge.js +4 -7
  11. package/src/components/badge/badge.stories.js +89 -96
  12. package/src/components/breadcrumb/breadcrumb.stories.js +167 -3
  13. package/src/components/cards/card.stories.js +153 -3
  14. package/src/components/display/display.css.js +7 -10
  15. package/src/components/display/display.js +14 -2
  16. package/src/components/display/display.stories.js +213 -219
  17. package/src/components/divider/divider.stories.js +337 -30
  18. package/src/components/footer/footer-lp.stories.js +346 -3
  19. package/src/components/footer/footer.js +0 -3
  20. package/src/components/footer/footer.stories.js +267 -4
  21. package/src/components/header/header.css.js +1 -1
  22. package/src/components/header/header.js +77 -56
  23. package/src/components/header/header.stories.js +298 -22
  24. package/src/components/heading/heading.css.js +1 -1
  25. package/src/components/heading/heading.stories.js +355 -113
  26. package/src/components/image/image.css.js +146 -98
  27. package/src/components/image/image.js +13 -2
  28. package/src/components/image/image.stories.js +546 -160
  29. package/src/components/input/custom-form.stories.js +209 -12
  30. package/src/components/link/link.css.js +2 -2
  31. package/src/components/link/link.stories.js +383 -53
  32. package/src/components/paragraph/paragraph.css.js +1 -1
  33. package/src/components/paragraph/paragraph.stories.js +365 -157
  34. package/src/components/picture/picture.css.js +209 -0
  35. package/src/components/picture/picture.js +16 -2
  36. package/src/components/picture/picture.stories.js +525 -180
  37. package/src/components/pricing-cards/new-pricing-card.js +19 -4
  38. package/src/components/pricing-cards/new-pricing-card.stories.js +422 -0
  39. package/src/components/pricing-cards/new-pricing.css.js +8 -0
  40. package/src/components/pricing-cards/pricing-card-actions.js +49 -9
  41. package/src/components/pricing-cards/pricing-card-container.css.js +1 -1
  42. package/src/components/pricing-cards/pricing-card-header.css.js +73 -63
  43. package/src/components/pricing-cards/pricing-card-header.js +44 -10
  44. package/src/components/pricing-cards/pricing-card-pricing.js +63 -64
  45. package/src/components/pricing-cards/pricing-card.css.js +7 -15
  46. package/src/components/pricing-cards/pricing-card.js +353 -270
  47. package/src/components/pricing-cards/pricing-card.stories.js +3 -3
  48. package/src/tokens/fonts.stories.js +335 -8
  49. package/src/tokens/spacing.stories.js +701 -34
  50. package/src/tokens/tokens-grid.stories.js +897 -48
  51. package/src/tokens/typography.stories.js +980 -38
  52. package/src/components/accordion/accordion-light.stories.js +0 -241
@@ -3,75 +3,382 @@ import './divider-horizontal.js';
3
3
  import './divider-vertical.js';
4
4
 
5
5
  export default {
6
- title: 'Atoms/Divider',
7
- tags: ['autodocs'],
6
+ title : 'Atoms/Divider',
7
+ tags : ['autodocs'],
8
8
  argTypes: {
9
+ // Common props
10
+ component: {
11
+ control : { type: 'select' },
12
+ options : ['horizontal', 'vertical'],
13
+ description: 'Which divider to render'
14
+ },
15
+ color: {
16
+ control : 'color',
17
+ description: 'Color of the divider line'
18
+ },
19
+ opacity: {
20
+ control : { type: 'range', min: 0, max: 1, step: 0.1 },
21
+ description: 'Opacity of the divider (0 = transparent, 1 = opaque)'
22
+ },
23
+
24
+ // Horizontal divider props
9
25
  width: {
10
- control: 'text',
11
- if: { arg: 'component', eq: 'horizontal' },
12
- description: 'Width of the horizontal divider (e.g. 100%, 200px)',
26
+ control : 'text',
27
+ if : { arg: 'component', eq: 'horizontal' },
28
+ description: 'Width of the horizontal divider (e.g. 100%, 200px)'
13
29
  },
30
+
31
+ // Vertical divider props
14
32
  height: {
15
- control: 'text',
16
- if: { arg: 'component', eq: 'vertical' },
17
- description: 'Height of the vertical divider (e.g. 100%, 40px)',
33
+ control : 'text',
34
+ if : { arg: 'component', eq: 'vertical' },
35
+ description: 'Height of the vertical divider (e.g. 100%, 40px)'
18
36
  },
19
37
  thickness: {
20
- control: 'text',
21
- if: { arg: 'component', eq: 'vertical' },
22
- description: 'Thickness (visual width) of the vertical divider (e.g. 1px, 4px)',
23
- },
24
- component: {
25
- control: { type: 'select' },
26
- options: ['horizontal', 'vertical'],
27
- description: 'Which divider to render',
28
- },
38
+ control : 'text',
39
+ if : { arg: 'component', eq: 'vertical' },
40
+ description: 'Thickness (visual width) of the vertical divider (e.g. 1px, 4px)'
41
+ }
29
42
  },
30
43
  args: {
31
44
  component: 'horizontal',
32
- width: '100%',
33
- height: '100px',
45
+ width : '100%',
46
+ height : '100px',
34
47
  thickness: '1px',
35
- },
48
+ color : 'var(--color-neutral-400)',
49
+ opacity : 1.0
50
+ }
36
51
  };
37
52
 
38
- const Template = ({ component, width, height, thickness }) => {
53
+ const Template = ({ component, width, height, thickness, color, opacity }) => {
39
54
  return component === 'horizontal'
40
- ? html`<bd-divider-horizontal .width=${width}></bd-divider-horizontal>`
41
- : html`<bd-divider-vertical .height=${height} .thickness=${thickness}></bd-divider-vertical>`;
55
+ ? html`<bd-divider-horizontal
56
+ .width=${width}
57
+ .color=${color}
58
+ .opacity=${opacity}
59
+ ></bd-divider-horizontal>`
60
+ : html`<bd-divider-vertical
61
+ .height=${height}
62
+ .thickness=${thickness}
63
+ .color=${color}
64
+ .opacity=${opacity}
65
+ ></bd-divider-vertical>`;
42
66
  };
43
67
 
68
+ // ============ HORIZONTAL DIVIDERS ============
69
+
44
70
  export const Default = Template.bind({});
45
71
  Default.args = {
46
72
  component: 'horizontal',
47
- width: '100%',
48
- height: '100px',
49
- thickness: '1px',
73
+ width : '100%',
74
+ color : 'var(--color-neutral-400)',
75
+ opacity : 1.0
76
+ };
77
+ Default.parameters = {
78
+ docs: {
79
+ description: {
80
+ story: 'Default horizontal divider with full width and neutral color.'
81
+ }
82
+ }
50
83
  };
51
84
 
52
85
  export const HorizontalCustomWidth = Template.bind({});
53
86
  HorizontalCustomWidth.args = {
54
87
  component: 'horizontal',
55
- width: '200px',
88
+ width : '200px',
89
+ color : 'var(--color-neutral-400)',
90
+ opacity : 1.0
91
+ };
92
+ HorizontalCustomWidth.parameters = {
93
+ docs: {
94
+ description: {
95
+ story: 'Horizontal divider with custom width (200px). Useful for creating shorter divider lines.'
96
+ }
97
+ }
98
+ };
99
+
100
+ export const HorizontalCustomColor = Template.bind({});
101
+ HorizontalCustomColor.args = {
102
+ component: 'horizontal',
103
+ width : '100%',
104
+ color : '#3b82f6',
105
+ opacity : 1.0
106
+ };
107
+ HorizontalCustomColor.parameters = {
108
+ docs: {
109
+ description: {
110
+ story: 'Horizontal divider with custom blue color. Can be used to match brand colors or create visual emphasis.'
111
+ }
112
+ }
113
+ };
114
+
115
+ export const HorizontalFaded = Template.bind({});
116
+ HorizontalFaded.args = {
117
+ component: 'horizontal',
118
+ width : '100%',
119
+ color : 'var(--color-neutral-400)',
120
+ opacity : 0.5
56
121
  };
122
+ HorizontalFaded.parameters = {
123
+ docs: {
124
+ description: {
125
+ story: 'Horizontal divider with reduced opacity (50%) for a subtle, faded appearance.'
126
+ }
127
+ }
128
+ };
129
+
130
+ // ============ VERTICAL DIVIDERS ============
57
131
 
58
132
  export const VerticalDefault = Template.bind({});
59
133
  VerticalDefault.args = {
60
134
  component: 'vertical',
61
- height: '100px',
135
+ height : '100px',
62
136
  thickness: '1px',
137
+ color : 'var(--color-neutral-400)',
138
+ opacity : 1.0
139
+ };
140
+ VerticalDefault.parameters = {
141
+ docs: {
142
+ description: {
143
+ story: 'Default vertical divider with standard height and thickness.'
144
+ }
145
+ }
63
146
  };
64
147
 
65
148
  export const VerticalThick = Template.bind({});
66
149
  VerticalThick.args = {
67
150
  component: 'vertical',
68
- height: '100px',
151
+ height : '100px',
69
152
  thickness: '4px',
153
+ color : 'var(--color-neutral-400)',
154
+ opacity : 1.0
155
+ };
156
+ VerticalThick.parameters = {
157
+ docs: {
158
+ description: {
159
+ story: 'Vertical divider with increased thickness (4px) for more visual weight.'
160
+ }
161
+ }
70
162
  };
71
163
 
72
164
  export const VerticalTall = Template.bind({});
73
165
  VerticalTall.args = {
74
166
  component: 'vertical',
75
- height: '200px',
167
+ height : '200px',
168
+ thickness: '2px',
169
+ color : 'var(--color-neutral-400)',
170
+ opacity : 1.0
171
+ };
172
+ VerticalTall.parameters = {
173
+ docs: {
174
+ description: {
175
+ story: 'Tall vertical divider (200px) suitable for sidebar separators or tall content sections.'
176
+ }
177
+ }
178
+ };
179
+
180
+ export const VerticalBrandColor = Template.bind({});
181
+ VerticalBrandColor.args = {
182
+ component: 'vertical',
183
+ height : '100px',
76
184
  thickness: '2px',
185
+ color : '#8b5cf6',
186
+ opacity : 1.0
187
+ };
188
+ VerticalBrandColor.parameters = {
189
+ docs: {
190
+ description: {
191
+ story: 'Vertical divider with brand purple color for consistent theming.'
192
+ }
193
+ }
194
+ };
195
+
196
+ export const VerticalSubtle = Template.bind({});
197
+ VerticalSubtle.args = {
198
+ component: 'vertical',
199
+ height : '100px',
200
+ thickness: '1px',
201
+ color : 'var(--color-neutral-400)',
202
+ opacity : 0.3
203
+ };
204
+ VerticalSubtle.parameters = {
205
+ docs: {
206
+ description: {
207
+ story: 'Subtle vertical divider with low opacity (30%) for minimal visual intrusion.'
208
+ }
209
+ }
210
+ };
211
+
212
+ // ============ SHOWCASE EXAMPLES ============
213
+
214
+ export const AllHorizontalVariants = () => html`
215
+ <div style="display: flex; flex-direction: column; gap: 2rem; max-width: 600px; margin: 0 auto; padding: 2rem;">
216
+ <bd-h as="h3" style="margin-bottom: 1rem;">Horizontal Divider Variants</bd-h>
217
+
218
+ <div style="display: flex; flex-direction: column; gap: 1rem;">
219
+ <div>
220
+ <bd-p kind="small" style="margin-bottom: 0.5rem;">Default (100% width)</bd-p>
221
+ <bd-divider-horizontal></bd-divider-horizontal>
222
+ </div>
223
+
224
+ <div>
225
+ <bd-p kind="small" style="margin-bottom: 0.5rem;">Custom Width (200px)</bd-p>
226
+ <bd-divider-horizontal width="200px"></bd-divider-horizontal>
227
+ </div>
228
+
229
+ <div>
230
+ <bd-p kind="small" style="margin-bottom: 0.5rem;">Brand Color</bd-p>
231
+ <bd-divider-horizontal color="#3b82f6"></bd-divider-horizontal>
232
+ </div>
233
+
234
+ <div>
235
+ <bd-p kind="small" style="margin-bottom: 0.5rem;">Faded (50% opacity)</bd-p>
236
+ <bd-divider-horizontal opacity="0.5"></bd-divider-horizontal>
237
+ </div>
238
+
239
+ <div>
240
+ <bd-p kind="small" style="margin-bottom: 0.5rem;">Thick Red</bd-p>
241
+ <bd-divider-horizontal color="#ef4444" opacity="0.8"></bd-divider-horizontal>
242
+ </div>
243
+ </div>
244
+ </div>
245
+ `;
246
+ AllHorizontalVariants.parameters = {
247
+ docs: {
248
+ description: {
249
+ story: 'Collection of different horizontal divider variants showing various width, color, and opacity combinations.'
250
+ }
251
+ }
252
+ };
253
+
254
+ export const AllVerticalVariants = () => html`
255
+ <div style="display: flex; gap: 3rem; align-items: center; max-width: 800px; margin: 0 auto; padding: 2rem;">
256
+ <bd-h as="h3" style="margin-bottom: 1rem;">Vertical Divider Variants</bd-h>
257
+
258
+ <div style="display: flex; gap: 2rem; align-items: center;">
259
+ <div style="display: flex; flex-direction: column; align-items: center; gap: 1rem;">
260
+ <bd-p kind="small">Default</bd-p>
261
+ <bd-divider-vertical></bd-divider-vertical>
262
+ </div>
263
+
264
+ <div style="display: flex; flex-direction: column; align-items: center; gap: 1rem;">
265
+ <bd-p kind="small">Thick (4px)</bd-p>
266
+ <bd-divider-vertical thickness="4px"></bd-divider-vertical>
267
+ </div>
268
+
269
+ <div style="display: flex; flex-direction: column; align-items: center; gap: 1rem;">
270
+ <bd-p kind="small">Brand Color</bd-p>
271
+ <bd-divider-vertical color="#8b5cf6" thickness="2px"></bd-divider-vertical>
272
+ </div>
273
+
274
+ <div style="display: flex; flex-direction: column; align-items: center; gap: 1rem;">
275
+ <bd-p kind="small">Subtle (30%)</bd-p>
276
+ <bd-divider-vertical opacity="0.3"></bd-divider-vertical>
277
+ </div>
278
+
279
+ <div style="display: flex; flex-direction: column; align-items: center; gap: 1rem;">
280
+ <bd-p kind="small">Tall (150px)</bd-p>
281
+ <bd-divider-vertical height="150px"></bd-divider-vertical>
282
+ </div>
283
+ </div>
284
+ </div>
285
+ `;
286
+ AllVerticalVariants.parameters = {
287
+ docs: {
288
+ description: {
289
+ story: 'Collection of different vertical divider variants showing various height, thickness, color, and opacity combinations.'
290
+ }
291
+ }
292
+ };
293
+
294
+ export const UsageExamples = () => html`
295
+ <div style="max-width: 800px; margin: 0 auto; padding: 2rem;">
296
+ <bd-h as="h2" style="margin-bottom: 2rem;">Practical Usage Examples</bd-h>
297
+
298
+ <!-- Example 1: Content sections with horizontal dividers -->
299
+ <div style="margin-bottom: 3rem;">
300
+ <bd-h as="h3" style="margin-bottom: 1rem;">Content Sections</bd-h>
301
+ <div style="display: flex; flex-direction: column; gap: 2rem;">
302
+ <div>
303
+ <bd-h as="h4">Section 1</bd-h>
304
+ <bd-p kind="regular">This is the first content section with some sample text.</bd-p>
305
+ </div>
306
+
307
+ <bd-divider-horizontal opacity="0.3"></bd-divider-horizontal>
308
+
309
+ <div>
310
+ <bd-h as="h4">Section 2</bd-h>
311
+ <bd-p kind="regular">This is the second content section separated by a subtle divider.</bd-p>
312
+ </div>
313
+
314
+ <bd-divider-horizontal color="#3b82f6" opacity="0.6"></bd-divider-horizontal>
315
+
316
+ <div>
317
+ <bd-h as="h4">Section 3</bd-h>
318
+ <bd-p kind="regular">This section uses a branded blue divider for emphasis.</bd-p>
319
+ </div>
320
+ </div>
321
+ </div>
322
+
323
+ <!-- Example 2: Toolbar with vertical dividers -->
324
+ <div style="margin-bottom: 3rem;">
325
+ <bd-h as="h3" style="margin-bottom: 1rem;">Toolbar Layout</bd-h>
326
+ <div style="display: flex; align-items: center; gap: 1rem; padding: 1rem; background: #f8fafc; border-radius: 8px;">
327
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">File</button>
328
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">Edit</button>
329
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">View</button>
330
+
331
+ <bd-divider-vertical height="20px" opacity="0.4"></bd-divider-vertical>
332
+
333
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">Save</button>
334
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">Undo</button>
335
+
336
+ <bd-divider-vertical height="20px" opacity="0.4"></bd-divider-vertical>
337
+
338
+ <button style="padding: 0.5rem 1rem; border: 1px solid #d1d5db; border-radius: 4px; background: white;">Help</button>
339
+ </div>
340
+ </div>
341
+
342
+ <!-- Example 3: Card layout with custom dividers -->
343
+ <div>
344
+ <bd-h as="h3" style="margin-bottom: 1rem;">Card Layout</bd-h>
345
+ <div style="display: grid; grid-template-columns: 1fr auto 1fr; gap: 2rem; align-items: center;">
346
+ <div style="padding: 1.5rem; background: white; border: 1px solid #e2e8f0; border-radius: 8px;">
347
+ <bd-h as="h4">Left Card</bd-h>
348
+ <bd-p kind="small">Some content on the left side</bd-p>
349
+ </div>
350
+
351
+ <bd-divider-vertical height="80px" color="#64748b" opacity="0.5"></bd-divider-vertical>
352
+
353
+ <div style="padding: 1.5rem; background: white; border: 1px solid #e2e8f0; border-radius: 8px;">
354
+ <bd-h as="h4">Right Card</bd-h>
355
+ <bd-p kind="small">Some content on the right side</bd-p>
356
+ </div>
357
+ </div>
358
+ </div>
359
+ </div>
360
+ `;
361
+ UsageExamples.parameters = {
362
+ docs: {
363
+ description: {
364
+ story: 'Practical examples showing how dividers can be used in real-world scenarios like content sections, toolbars, and card layouts.'
365
+ }
366
+ }
367
+ };
368
+
369
+ export const InteractivePlayground = Template.bind({});
370
+ InteractivePlayground.args = {
371
+ component: 'horizontal',
372
+ width : '100%',
373
+ height : '100px',
374
+ thickness: '1px',
375
+ color : 'var(--color-neutral-400)',
376
+ opacity : 1.0
77
377
  };
378
+ InteractivePlayground.parameters = {
379
+ docs: {
380
+ description: {
381
+ story: 'Interactive playground where you can test all divider properties in real-time. Switch between horizontal and vertical dividers and customize their appearance.'
382
+ }
383
+ }
384
+ };