@reliability-design/web 1.0.2
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/dist/components/rel-accordion/rel-accordion.stories.ts +313 -0
- package/dist/components/rel-accordion/rel-accordion.ts +114 -0
- package/dist/components/rel-alert/rel-alert.stories.ts +412 -0
- package/dist/components/rel-alert/rel-alert.ts +194 -0
- package/dist/components/rel-avatar/rel-avatar.stories.ts +327 -0
- package/dist/components/rel-avatar/rel-avatar.ts +100 -0
- package/dist/components/rel-badge/rel-badge.stories.ts +350 -0
- package/dist/components/rel-badge/rel-badge.ts +70 -0
- package/dist/components/rel-breadcrumb/rel-breadcrumb.stories.ts +306 -0
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +97 -0
- package/dist/components/rel-button/rel-button.stories.ts +356 -0
- package/dist/components/rel-button/rel-button.ts +204 -0
- package/dist/components/rel-card/rel-card.stories.ts +299 -0
- package/dist/components/rel-card/rel-card.ts +33 -0
- package/dist/components/rel-cardmedia/rel-cardmedia.stories.ts +368 -0
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +80 -0
- package/dist/components/rel-checkbox/rel-checkbox.stories.ts +414 -0
- package/dist/components/rel-checkbox/rel-checkbox.ts +164 -0
- package/dist/components/rel-chip/rel-chip.stories.ts +552 -0
- package/dist/components/rel-chip/rel-chip.ts +261 -0
- package/dist/components/rel-container/rel-container.stories.ts +239 -0
- package/dist/components/rel-container/rel-container.ts +74 -0
- package/dist/components/rel-divider/rel-divider.stories.ts +229 -0
- package/dist/components/rel-divider/rel-divider.ts +44 -0
- package/dist/components/rel-layout/rel-layout.stories.ts +713 -0
- package/dist/components/rel-layout/rel-layout.ts +60 -0
- package/dist/components/rel-menu/rel-menu.stories.ts +910 -0
- package/dist/components/rel-menu/rel-menu.ts +319 -0
- package/dist/components/rel-progress/rel-progress.stories.ts +817 -0
- package/dist/components/rel-progress/rel-progress.ts +182 -0
- package/dist/components/rel-radio/rel-radio.stories.ts +1048 -0
- package/dist/components/rel-radio/rel-radio.ts +187 -0
- package/dist/components/rel-segmented-button/rel-segmented-button.stories.ts +1079 -0
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +150 -0
- package/dist/components/rel-select/rel-select.stories.ts +1201 -0
- package/dist/components/rel-select/rel-select.ts +261 -0
- package/dist/components/rel-slider/rel-slider.stories.ts +730 -0
- package/dist/components/rel-slider/rel-slider.ts +440 -0
- package/dist/components/rel-snackbar/rel-snackbar.stories.ts +808 -0
- package/dist/components/rel-snackbar/rel-snackbar.ts +212 -0
- package/dist/components/rel-stepper/rel-stepper.stories.ts +752 -0
- package/dist/components/rel-stepper/rel-stepper.ts +425 -0
- package/dist/components/rel-switch/rel-switch.stories.ts +441 -0
- package/dist/components/rel-switch/rel-switch.ts +161 -0
- package/dist/components/rel-tab/rel-tab.stories.ts +492 -0
- package/dist/components/rel-tab/rel-tab.ts +145 -0
- package/dist/components/rel-textfield/rel-textfield.stories.ts +710 -0
- package/dist/components/rel-textfield/rel-textfield.ts +224 -0
- package/dist/components/rel-toast/rel-toast.stories.ts +394 -0
- package/dist/components/rel-toast/rel-toast.ts +154 -0
- package/dist/components/rel-tooltip/rel-tooltip.stories.ts +364 -0
- package/dist/components/rel-tooltip/rel-tooltip.ts +80 -0
- package/dist/index.d.mts +372 -0
- package/dist/index.d.ts +372 -0
- package/dist/index.js +4593 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +4544 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles/vars.css +184 -0
- package/package.json +32 -0
|
@@ -0,0 +1,350 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LitElement, html, css } from "lit";
|
|
2
|
+
import { customElement, property } from "lit/decorators.js";
|
|
3
|
+
|
|
4
|
+
@customElement("rel-badge")
|
|
5
|
+
export class RelBadge extends LitElement {
|
|
6
|
+
@property({ type: String }) number = "";
|
|
7
|
+
@property({ type: String }) size: "sm" | "md" | "lg" = "md";
|
|
8
|
+
@property({ type: String }) variant: "dot" | "number" = "number";
|
|
9
|
+
|
|
10
|
+
static styles = css`
|
|
11
|
+
:host {
|
|
12
|
+
display: inline-flex;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.badge {
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
font-family: "Poppins", sans-serif;
|
|
20
|
+
font-weight: 600;
|
|
21
|
+
background-color: var(--rel-colors-red-primary);
|
|
22
|
+
color: var(--rel-colors-white);
|
|
23
|
+
border-radius: 50%;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* PERFECT CIRCLES — FIXED SIZES */
|
|
27
|
+
.badge-sm {
|
|
28
|
+
width: 20px;
|
|
29
|
+
height: 20px;
|
|
30
|
+
font-size: 12px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.badge-md {
|
|
34
|
+
width: 28px;
|
|
35
|
+
height: 28px;
|
|
36
|
+
font-size: 14px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.badge-lg {
|
|
40
|
+
width: 40px;
|
|
41
|
+
height: 40px;
|
|
42
|
+
font-size: 20px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* DOT — smaller circle */
|
|
46
|
+
.badge-dot {
|
|
47
|
+
width: 10px !important;
|
|
48
|
+
height: 10px !important;
|
|
49
|
+
padding: 0 !important;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.badge-number {
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
|
|
59
|
+
private get classes() {
|
|
60
|
+
return ["badge", `badge-${this.size}`, `badge-${this.variant}`].join(" ");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
render() {
|
|
64
|
+
const isDot = this.variant === "dot";
|
|
65
|
+
|
|
66
|
+
return html`
|
|
67
|
+
<span class="${this.classes}">${isDot ? "" : this.number}</span>
|
|
68
|
+
`;
|
|
69
|
+
}
|
|
70
|
+
}
|