@reliability-design/web 1.0.2 → 1.0.3

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 (54) hide show
  1. package/dist/components/rel-accordion/rel-accordion.ts +27 -22
  2. package/dist/components/rel-alert/rel-alert.ts +98 -66
  3. package/dist/components/rel-avatar/rel-avatar.ts +8 -15
  4. package/dist/components/rel-badge/rel-badge.ts +23 -16
  5. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +12 -12
  6. package/dist/components/rel-button/rel-button.ts +39 -59
  7. package/dist/components/rel-card/rel-card.ts +11 -10
  8. package/dist/components/rel-cardmedia/rel-cardmedia.ts +11 -17
  9. package/dist/components/rel-checkbox/rel-checkbox.ts +18 -35
  10. package/dist/components/rel-chip/rel-chip.ts +37 -128
  11. package/dist/components/rel-container/rel-container.ts +1 -6
  12. package/dist/components/rel-divider/rel-divider.ts +37 -37
  13. package/dist/components/rel-layout/rel-layout.ts +12 -14
  14. package/dist/components/rel-progress/rel-progress.ts +26 -15
  15. package/dist/components/rel-radio/rel-radio.ts +32 -72
  16. package/dist/components/rel-snackbar/rel-snackbar.ts +6 -0
  17. package/dist/components/rel-stepper/rel-stepper.ts +23 -2
  18. package/dist/components/rel-switch/rel-switch.ts +7 -5
  19. package/dist/components/rel-tab/rel-tab.ts +10 -8
  20. package/dist/components/rel-textfield/rel-textfield.ts +2 -2
  21. package/dist/index.d.mts +11 -7
  22. package/dist/index.d.ts +11 -7
  23. package/dist/index.js +367 -475
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +383 -489
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/vars-6ZIUPIU4.css +184 -0
  28. package/package.json +2 -2
  29. package/dist/components/rel-accordion/rel-accordion.stories.ts +0 -313
  30. package/dist/components/rel-alert/rel-alert.stories.ts +0 -412
  31. package/dist/components/rel-avatar/rel-avatar.stories.ts +0 -327
  32. package/dist/components/rel-badge/rel-badge.stories.ts +0 -350
  33. package/dist/components/rel-breadcrumb/rel-breadcrumb.stories.ts +0 -306
  34. package/dist/components/rel-button/rel-button.stories.ts +0 -356
  35. package/dist/components/rel-card/rel-card.stories.ts +0 -299
  36. package/dist/components/rel-cardmedia/rel-cardmedia.stories.ts +0 -368
  37. package/dist/components/rel-checkbox/rel-checkbox.stories.ts +0 -414
  38. package/dist/components/rel-chip/rel-chip.stories.ts +0 -552
  39. package/dist/components/rel-container/rel-container.stories.ts +0 -239
  40. package/dist/components/rel-divider/rel-divider.stories.ts +0 -229
  41. package/dist/components/rel-layout/rel-layout.stories.ts +0 -713
  42. package/dist/components/rel-menu/rel-menu.stories.ts +0 -910
  43. package/dist/components/rel-progress/rel-progress.stories.ts +0 -817
  44. package/dist/components/rel-radio/rel-radio.stories.ts +0 -1048
  45. package/dist/components/rel-segmented-button/rel-segmented-button.stories.ts +0 -1079
  46. package/dist/components/rel-select/rel-select.stories.ts +0 -1201
  47. package/dist/components/rel-slider/rel-slider.stories.ts +0 -730
  48. package/dist/components/rel-snackbar/rel-snackbar.stories.ts +0 -808
  49. package/dist/components/rel-stepper/rel-stepper.stories.ts +0 -752
  50. package/dist/components/rel-switch/rel-switch.stories.ts +0 -441
  51. package/dist/components/rel-tab/rel-tab.stories.ts +0 -492
  52. package/dist/components/rel-textfield/rel-textfield.stories.ts +0 -710
  53. package/dist/components/rel-toast/rel-toast.stories.ts +0 -394
  54. package/dist/components/rel-tooltip/rel-tooltip.stories.ts +0 -364
@@ -1,327 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
- import { html } from 'lit';
3
- import './rel-avatar';
4
-
5
- /**
6
- * The Avatar component displays user profile images, initials, or icons in a circular format.
7
- * Built with Lit web components for framework-agnostic usage.
8
- *
9
- * ## Features
10
- * - **3 Types**: image, text (initials), icon
11
- * - **4 Sizes**: xs (18px), sm (24px), md (32px), lg (40px)
12
- * - **Circular Shape**: Perfect circle for all variants
13
- * - **Flexible Content**: Supports images, text initials, or custom icons
14
- * - **Fallback Support**: Graceful handling of missing images
15
- */
16
- const meta: Meta = {
17
- title: 'Components/Avatar',
18
- tags: ['autodocs'],
19
- component: 'rel-avatar',
20
- argTypes: {
21
- type: {
22
- control: { type: 'select' },
23
- options: ['image', 'text', 'icon'],
24
- description: 'Type of avatar content',
25
- table: {
26
- defaultValue: { summary: 'image' },
27
- type: { summary: 'string' },
28
- },
29
- },
30
- size: {
31
- control: { type: 'select' },
32
- options: ['xs', 'sm', 'md', 'lg'],
33
- description: 'Avatar size',
34
- table: {
35
- defaultValue: { summary: 'md' },
36
- type: { summary: 'string' },
37
- },
38
- },
39
- src: {
40
- control: 'text',
41
- description: 'Image source URL (for type="image")',
42
- table: {
43
- type: { summary: 'string' },
44
- },
45
- },
46
- text: {
47
- control: 'text',
48
- description: 'Text initials (for type="text")',
49
- table: {
50
- type: { summary: 'string' },
51
- },
52
- },
53
- alt: {
54
- control: 'text',
55
- description: 'Image alt text for accessibility',
56
- table: {
57
- defaultValue: { summary: 'Avatar' },
58
- type: { summary: 'string' },
59
- },
60
- },
61
- },
62
- render: (args) => {
63
- if (args.type === 'icon') {
64
- return html`
65
- <rel-avatar
66
- type="icon"
67
- size="${args.size || 'md'}"
68
- >
69
- <span>👤</span>
70
- </rel-avatar>
71
- `;
72
- }
73
- return html`
74
- <rel-avatar
75
- type="${args.type || 'image'}"
76
- size="${args.size || 'md'}"
77
- src="${args.src || ''}"
78
- text="${args.text || ''}"
79
- alt="${args.alt || 'Avatar'}"
80
- ></rel-avatar>
81
- `;
82
- },
83
- };
84
-
85
- export default meta;
86
- type Story = StoryObj;
87
-
88
- /**
89
- * Image avatar - displays a profile picture
90
- */
91
- export const ImageAvatar: Story = {
92
- args: {
93
- type: 'image',
94
- size: 'md',
95
- src: 'https://i.pravatar.cc/150?img=1',
96
- alt: 'John Doe',
97
- },
98
- };
99
-
100
- /**
101
- * Text avatar - displays user initials
102
- */
103
- export const TextAvatar: Story = {
104
- args: {
105
- type: 'text',
106
- size: 'md',
107
- text: 'JD',
108
- },
109
- };
110
-
111
- /**
112
- * Icon avatar - displays a custom icon
113
- */
114
- export const IconAvatar: Story = {
115
- args: {
116
- type: 'icon',
117
- size: 'md',
118
- },
119
- };
120
-
121
- /**
122
- * Extra small size - 18px diameter
123
- */
124
- export const ExtraSmall: Story = {
125
- args: {
126
- type: 'image',
127
- size: 'xs',
128
- src: 'https://i.pravatar.cc/150?img=2',
129
- },
130
- };
131
-
132
- /**
133
- * Small size - 24px diameter
134
- */
135
- export const Small: Story = {
136
- args: {
137
- type: 'image',
138
- size: 'sm',
139
- src: 'https://i.pravatar.cc/150?img=3',
140
- },
141
- };
142
-
143
- /**
144
- * Medium size - 32px diameter (default)
145
- */
146
- export const Medium: Story = {
147
- args: {
148
- type: 'image',
149
- size: 'md',
150
- src: 'https://i.pravatar.cc/150?img=4',
151
- },
152
- };
153
-
154
- /**
155
- * Large size - 40px diameter
156
- */
157
- export const Large: Story = {
158
- args: {
159
- type: 'image',
160
- size: 'lg',
161
- src: 'https://i.pravatar.cc/150?img=5',
162
- },
163
- };
164
-
165
- /**
166
- * All sizes - showcase of all avatar sizes with images
167
- */
168
- export const AllSizes: Story = {
169
- render: () => html`
170
- <div style="display: flex; gap: 16px; align-items: center; padding: 24px; background: #000;">
171
- <rel-avatar type="image" size="xs" src="https://i.pravatar.cc/150?img=6"></rel-avatar>
172
- <rel-avatar type="image" size="sm" src="https://i.pravatar.cc/150?img=7"></rel-avatar>
173
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=8"></rel-avatar>
174
- <rel-avatar type="image" size="lg" src="https://i.pravatar.cc/150?img=9"></rel-avatar>
175
- </div>
176
- `,
177
- };
178
-
179
- /**
180
- * All types - showcase of all avatar types
181
- */
182
- export const AllTypes: Story = {
183
- render: () => html`
184
- <div style="display: flex; gap: 16px; align-items: center; padding: 24px; background: #000;">
185
- <div style="text-align: center;">
186
- <rel-avatar type="image" size="lg" src="https://i.pravatar.cc/150?img=10"></rel-avatar>
187
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Image</p>
188
- </div>
189
-
190
- <div style="text-align: center;">
191
- <rel-avatar type="text" size="lg" text="AB"></rel-avatar>
192
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Text</p>
193
- </div>
194
-
195
- <div style="text-align: center;">
196
- <rel-avatar type="icon" size="lg">
197
- <span>👤</span>
198
- </rel-avatar>
199
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Icon</p>
200
- </div>
201
- </div>
202
- `,
203
- };
204
-
205
- /**
206
- * Text initials - different initial combinations
207
- */
208
- export const TextInitials: Story = {
209
- render: () => html`
210
- <div style="display: flex; gap: 16px; padding: 24px; background: #000;">
211
- <rel-avatar type="text" size="lg" text="JD"></rel-avatar>
212
- <rel-avatar type="text" size="lg" text="AB"></rel-avatar>
213
- <rel-avatar type="text" size="lg" text="XY"></rel-avatar>
214
- <rel-avatar type="text" size="lg" text="MK"></rel-avatar>
215
- </div>
216
- `,
217
- };
218
-
219
- /**
220
- * Icon variations - different icons
221
- */
222
- export const IconVariations: Story = {
223
- render: () => html`
224
- <div style="display: flex; gap: 16px; padding: 24px; background: #000;">
225
- <rel-avatar type="icon" size="lg">
226
- <span>👤</span>
227
- </rel-avatar>
228
- <rel-avatar type="icon" size="lg">
229
- <span>🏢</span>
230
- </rel-avatar>
231
- <rel-avatar type="icon" size="lg">
232
- <span>⚙️</span>
233
- </rel-avatar>
234
- <rel-avatar type="icon" size="lg">
235
- <span>📧</span>
236
- </rel-avatar>
237
- </div>
238
- `,
239
- };
240
-
241
- /**
242
- * User list - avatars in a typical user list layout
243
- */
244
- export const UserList: Story = {
245
- render: () => html`
246
- <div style="display: flex; flex-direction: column; gap: 12px; padding: 24px; background: #000;">
247
- <div style="display: flex; align-items: center; gap: 12px;">
248
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=11"></rel-avatar>
249
- <div>
250
- <p style="color: #fff; margin: 0; font-size: 14px; font-weight: 600;">John Doe</p>
251
- <p style="color: #999; margin: 0; font-size: 12px;">john.doe@example.com</p>
252
- </div>
253
- </div>
254
-
255
- <div style="display: flex; align-items: center; gap: 12px;">
256
- <rel-avatar type="text" size="md" text="AB"></rel-avatar>
257
- <div>
258
- <p style="color: #fff; margin: 0; font-size: 14px; font-weight: 600;">Alice Brown</p>
259
- <p style="color: #999; margin: 0; font-size: 12px;">alice.brown@example.com</p>
260
- </div>
261
- </div>
262
-
263
- <div style="display: flex; align-items: center; gap: 12px;">
264
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=12"></rel-avatar>
265
- <div>
266
- <p style="color: #fff; margin: 0; font-size: 14px; font-weight: 600;">Sarah Wilson</p>
267
- <p style="color: #999; margin: 0; font-size: 12px;">sarah.wilson@example.com</p>
268
- </div>
269
- </div>
270
- </div>
271
- `,
272
- };
273
-
274
- /**
275
- * Avatar group - overlapping avatars
276
- */
277
- export const AvatarGroup: Story = {
278
- render: () => html`
279
- <div style="padding: 24px; background: #000;">
280
- <div style="display: flex; margin-left: 16px;">
281
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=13" style="margin-left: -16px; border: 2px solid #000;"></rel-avatar>
282
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=14" style="margin-left: -16px; border: 2px solid #000;"></rel-avatar>
283
- <rel-avatar type="text" size="md" text="JD" style="margin-left: -16px; border: 2px solid #000;"></rel-avatar>
284
- <rel-avatar type="text" size="md" text="+5" style="margin-left: -16px; border: 2px solid #000;"></rel-avatar>
285
- </div>
286
- </div>
287
- `,
288
- };
289
-
290
- /**
291
- * Size comparison - all sizes of each type
292
- */
293
- export const SizeComparison: Story = {
294
- render: () => html`
295
- <div style="display: flex; flex-direction: column; gap: 24px; padding: 24px; background: #000;">
296
- <div>
297
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Image Avatars</p>
298
- <div style="display: flex; gap: 12px; align-items: center;">
299
- <rel-avatar type="image" size="xs" src="https://i.pravatar.cc/150?img=15"></rel-avatar>
300
- <rel-avatar type="image" size="sm" src="https://i.pravatar.cc/150?img=15"></rel-avatar>
301
- <rel-avatar type="image" size="md" src="https://i.pravatar.cc/150?img=15"></rel-avatar>
302
- <rel-avatar type="image" size="lg" src="https://i.pravatar.cc/150?img=15"></rel-avatar>
303
- </div>
304
- </div>
305
-
306
- <div>
307
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Text Avatars</p>
308
- <div style="display: flex; gap: 12px; align-items: center;">
309
- <rel-avatar type="text" size="xs" text="AB"></rel-avatar>
310
- <rel-avatar type="text" size="sm" text="AB"></rel-avatar>
311
- <rel-avatar type="text" size="md" text="AB"></rel-avatar>
312
- <rel-avatar type="text" size="lg" text="AB"></rel-avatar>
313
- </div>
314
- </div>
315
-
316
- <div>
317
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Icon Avatars</p>
318
- <div style="display: flex; gap: 12px; align-items: center;">
319
- <rel-avatar type="icon" size="xs"><span>👤</span></rel-avatar>
320
- <rel-avatar type="icon" size="sm"><span>👤</span></rel-avatar>
321
- <rel-avatar type="icon" size="md"><span>👤</span></rel-avatar>
322
- <rel-avatar type="icon" size="lg"><span>👤</span></rel-avatar>
323
- </div>
324
- </div>
325
- </div>
326
- `,
327
- };
@@ -1,350 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
- import { html } from 'lit';
3
- import './rel-badge';
4
-
5
- /**
6
- * The Badge component displays notification counts or status indicators.
7
- * Built with Lit web components for framework-agnostic usage.
8
- *
9
- * ## Features
10
- * - **2 Variants**: number (displays count), dot (indicator only)
11
- * - **3 Sizes**: sm (20px), md (28px), lg (40px)
12
- * - **Perfect Circles**: Consistent circular shape across all sizes
13
- * - **Red Background**: High-contrast notification color
14
- * - **Number Display**: Shows notification count up to 99+
15
- */
16
- const meta: Meta = {
17
- title: 'Components/Badge',
18
- tags: ['autodocs'],
19
- component: 'rel-badge',
20
- argTypes: {
21
- variant: {
22
- control: { type: 'select' },
23
- options: ['number', 'dot'],
24
- description: 'Badge variant',
25
- table: {
26
- defaultValue: { summary: 'number' },
27
- type: { summary: 'string' },
28
- },
29
- },
30
- size: {
31
- control: { type: 'select' },
32
- options: ['sm', 'md', 'lg'],
33
- description: 'Badge size',
34
- table: {
35
- defaultValue: { summary: 'md' },
36
- type: { summary: 'string' },
37
- },
38
- },
39
- number: {
40
- control: 'text',
41
- description: 'Number to display (for variant="number")',
42
- table: {
43
- type: { summary: 'string' },
44
- },
45
- },
46
- },
47
- render: (args) => html`
48
- <rel-badge
49
- variant="${args.variant || 'number'}"
50
- size="${args.size || 'md'}"
51
- number="${args.number || '1'}"
52
- ></rel-badge>
53
- `,
54
- };
55
-
56
- export default meta;
57
- type Story = StoryObj;
58
-
59
- /**
60
- * Number badge - displays a notification count
61
- */
62
- export const NumberBadge: Story = {
63
- args: {
64
- variant: 'number',
65
- size: 'md',
66
- number: '5',
67
- },
68
- };
69
-
70
- /**
71
- * Dot badge - simple indicator without count
72
- */
73
- export const DotBadge: Story = {
74
- args: {
75
- variant: 'dot',
76
- size: 'md',
77
- },
78
- };
79
-
80
- /**
81
- * Small size - 20px diameter
82
- */
83
- export const Small: Story = {
84
- args: {
85
- variant: 'number',
86
- size: 'sm',
87
- number: '3',
88
- },
89
- };
90
-
91
- /**
92
- * Medium size - 28px diameter (default)
93
- */
94
- export const Medium: Story = {
95
- args: {
96
- variant: 'number',
97
- size: 'md',
98
- number: '9',
99
- },
100
- };
101
-
102
- /**
103
- * Large size - 40px diameter
104
- */
105
- export const Large: Story = {
106
- args: {
107
- variant: 'number',
108
- size: 'lg',
109
- number: '12',
110
- },
111
- };
112
-
113
- /**
114
- * Single digit - notification count less than 10
115
- */
116
- export const SingleDigit: Story = {
117
- args: {
118
- variant: 'number',
119
- size: 'md',
120
- number: '7',
121
- },
122
- };
123
-
124
- /**
125
- * Double digit - notification count between 10-99
126
- */
127
- export const DoubleDigit: Story = {
128
- args: {
129
- variant: 'number',
130
- size: 'md',
131
- number: '42',
132
- },
133
- };
134
-
135
- /**
136
- * High count - very high notification count
137
- */
138
- export const HighCount: Story = {
139
- args: {
140
- variant: 'number',
141
- size: 'md',
142
- number: '99+',
143
- },
144
- };
145
-
146
- /**
147
- * All sizes - showcase of all badge sizes with numbers
148
- */
149
- export const AllSizes: Story = {
150
- render: () => html`
151
- <div style="display: flex; gap: 20px; align-items: center; padding: 24px; background: #000;">
152
- <div style="text-align: center;">
153
- <rel-badge variant="number" size="sm" number="3"></rel-badge>
154
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Small (20px)</p>
155
- </div>
156
-
157
- <div style="text-align: center;">
158
- <rel-badge variant="number" size="md" number="9"></rel-badge>
159
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Medium (28px)</p>
160
- </div>
161
-
162
- <div style="text-align: center;">
163
- <rel-badge variant="number" size="lg" number="12"></rel-badge>
164
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Large (40px)</p>
165
- </div>
166
- </div>
167
- `,
168
- };
169
-
170
- /**
171
- * All variants - number vs dot badges
172
- */
173
- export const AllVariants: Story = {
174
- render: () => html`
175
- <div style="display: flex; gap: 32px; align-items: center; padding: 24px; background: #000;">
176
- <div style="text-align: center;">
177
- <rel-badge variant="number" size="lg" number="5"></rel-badge>
178
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Number</p>
179
- </div>
180
-
181
- <div style="text-align: center;">
182
- <rel-badge variant="dot" size="lg"></rel-badge>
183
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Dot</p>
184
- </div>
185
- </div>
186
- `,
187
- };
188
-
189
- /**
190
- * Dot sizes - all sizes of dot variant
191
- */
192
- export const DotSizes: Story = {
193
- render: () => html`
194
- <div style="display: flex; gap: 20px; align-items: center; padding: 24px; background: #000;">
195
- <div style="text-align: center;">
196
- <rel-badge variant="dot" size="sm"></rel-badge>
197
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Small</p>
198
- </div>
199
-
200
- <div style="text-align: center;">
201
- <rel-badge variant="dot" size="md"></rel-badge>
202
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Medium</p>
203
- </div>
204
-
205
- <div style="text-align: center;">
206
- <rel-badge variant="dot" size="lg"></rel-badge>
207
- <p style="color: #fff; font-size: 12px; margin-top: 8px;">Large</p>
208
- </div>
209
- </div>
210
- `,
211
- };
212
-
213
- /**
214
- * Number variations - different notification counts
215
- */
216
- export const NumberVariations: Story = {
217
- render: () => html`
218
- <div style="display: flex; gap: 16px; align-items: center; padding: 24px; background: #000;">
219
- <rel-badge variant="number" size="md" number="1"></rel-badge>
220
- <rel-badge variant="number" size="md" number="5"></rel-badge>
221
- <rel-badge variant="number" size="md" number="12"></rel-badge>
222
- <rel-badge variant="number" size="md" number="99"></rel-badge>
223
- <rel-badge variant="number" size="md" number="99+"></rel-badge>
224
- </div>
225
- `,
226
- };
227
-
228
- /**
229
- * With icons - badges positioned on icons
230
- */
231
- export const WithIcons: Story = {
232
- render: () => html`
233
- <div style="display: flex; gap: 40px; padding: 24px; background: #000;">
234
- <div style="position: relative; display: inline-block;">
235
- <span style="font-size: 32px;">🔔</span>
236
- <rel-badge variant="number" size="sm" number="3" style="position: absolute; top: -4px; right: -4px;"></rel-badge>
237
- </div>
238
-
239
- <div style="position: relative; display: inline-block;">
240
- <span style="font-size: 32px;">📧</span>
241
- <rel-badge variant="number" size="sm" number="12" style="position: absolute; top: -4px; right: -4px;"></rel-badge>
242
- </div>
243
-
244
- <div style="position: relative; display: inline-block;">
245
- <span style="font-size: 32px;">💬</span>
246
- <rel-badge variant="dot" size="sm" style="position: absolute; top: -2px; right: -2px;"></rel-badge>
247
- </div>
248
- </div>
249
- `,
250
- };
251
-
252
- /**
253
- * Navigation menu - badges on menu items
254
- */
255
- export const NavigationMenu: Story = {
256
- render: () => html`
257
- <div style="display: flex; flex-direction: column; gap: 12px; padding: 24px; background: #000; width: 250px;">
258
- <div style="display: flex; align-items: center; justify-content: space-between; padding: 12px; background: #1A1A1A; border-radius: 8px;">
259
- <div style="display: flex; align-items: center; gap: 12px;">
260
- <span style="font-size: 20px;">📬</span>
261
- <span style="color: #fff; font-size: 14px;">Messages</span>
262
- </div>
263
- <rel-badge variant="number" size="sm" number="5"></rel-badge>
264
- </div>
265
-
266
- <div style="display: flex; align-items: center; justify-content: space-between; padding: 12px; background: #1A1A1A; border-radius: 8px;">
267
- <div style="display: flex; align-items: center; gap: 12px;">
268
- <span style="font-size: 20px;">🔔</span>
269
- <span style="color: #fff; font-size: 14px;">Notifications</span>
270
- </div>
271
- <rel-badge variant="number" size="sm" number="23"></rel-badge>
272
- </div>
273
-
274
- <div style="display: flex; align-items: center; justify-content: space-between; padding: 12px; background: #1A1A1A; border-radius: 8px;">
275
- <div style="display: flex; align-items: center; gap: 12px;">
276
- <span style="font-size: 20px;">⭐</span>
277
- <span style="color: #fff; font-size: 14px;">Updates</span>
278
- </div>
279
- <rel-badge variant="dot" size="sm"></rel-badge>
280
- </div>
281
- </div>
282
- `,
283
- };
284
-
285
- /**
286
- * Real-world examples - practical usage scenarios
287
- */
288
- export const RealWorldExamples: Story = {
289
- render: () => html`
290
- <div style="display: flex; flex-direction: column; gap: 24px; padding: 24px; background: #000;">
291
- <!-- Notification Bell -->
292
- <div>
293
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Notification Bell</p>
294
- <div style="position: relative; display: inline-block;">
295
- <button style="background: #1A1A1A; border: 1px solid #2A2A2A; color: #fff; padding: 12px 16px; border-radius: 8px; cursor: pointer; font-size: 20px;">
296
- 🔔
297
- </button>
298
- <rel-badge variant="number" size="sm" number="7" style="position: absolute; top: -6px; right: -6px;"></rel-badge>
299
- </div>
300
- </div>
301
-
302
- <!-- Shopping Cart -->
303
- <div>
304
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Shopping Cart</p>
305
- <div style="position: relative; display: inline-block;">
306
- <button style="background: #00F49C; border: none; color: #000; padding: 12px 20px; border-radius: 1000px; cursor: pointer; font-weight: 600;">
307
- 🛒 Cart
308
- </button>
309
- <rel-badge variant="number" size="sm" number="3" style="position: absolute; top: -6px; right: -6px;"></rel-badge>
310
- </div>
311
- </div>
312
-
313
- <!-- Status Indicator -->
314
- <div>
315
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Status Indicator</p>
316
- <div style="display: flex; align-items: center; gap: 8px;">
317
- <rel-badge variant="dot" size="md"></rel-badge>
318
- <span style="color: #fff;">New activity detected</span>
319
- </div>
320
- </div>
321
- </div>
322
- `,
323
- };
324
-
325
- /**
326
- * Size comparison - all sizes side by side
327
- */
328
- export const SizeComparison: Story = {
329
- render: () => html`
330
- <div style="display: flex; flex-direction: column; gap: 24px; padding: 24px; background: #000;">
331
- <div>
332
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Number Badges</p>
333
- <div style="display: flex; gap: 16px; align-items: center;">
334
- <rel-badge variant="number" size="sm" number="5"></rel-badge>
335
- <rel-badge variant="number" size="md" number="12"></rel-badge>
336
- <rel-badge variant="number" size="lg" number="99+"></rel-badge>
337
- </div>
338
- </div>
339
-
340
- <div>
341
- <p style="color: #00F49C; margin: 0 0 12px 0; font-weight: 600;">Dot Badges</p>
342
- <div style="display: flex; gap: 16px; align-items: center;">
343
- <rel-badge variant="dot" size="sm"></rel-badge>
344
- <rel-badge variant="dot" size="md"></rel-badge>
345
- <rel-badge variant="dot" size="lg"></rel-badge>
346
- </div>
347
- </div>
348
- </div>
349
- `,
350
- };