@reliability-design/web 1.3.1 → 1.4.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.
- package/dist/components/rel-accordion/README.md +13 -13
- package/dist/components/rel-accordion/rel-accordion.ts +80 -45
- package/dist/components/rel-alert/README.md +15 -15
- package/dist/components/rel-alert/rel-alert.ts +153 -158
- package/dist/components/rel-avatar/README.md +15 -15
- package/dist/components/rel-avatar/rel-avatar.ts +42 -38
- package/dist/components/rel-badge/README.md +5 -5
- package/dist/components/rel-badge/rel-badge.ts +46 -11
- package/dist/components/rel-breadcrumb/README.md +7 -7
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
- package/dist/components/rel-button/README.md +20 -20
- package/dist/components/rel-button/rel-button.ts +292 -105
- package/dist/components/rel-calendar/README.md +5 -5
- package/dist/components/rel-calendar/rel-calendar.ts +61 -45
- package/dist/components/rel-card/README.md +6 -6
- package/dist/components/rel-card/rel-card.ts +88 -35
- package/dist/components/rel-cardmedia/README.md +9 -9
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
- package/dist/components/rel-carousel/README.md +3 -3
- package/dist/components/rel-carousel/rel-carousel.ts +174 -90
- package/dist/components/rel-chart/README.md +8 -8
- package/dist/components/rel-chart/rel-chart.ts +59 -41
- package/dist/components/rel-checkbox/README.md +7 -7
- package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
- package/dist/components/rel-chip/README.md +16 -16
- package/dist/components/rel-chip/rel-chip.ts +143 -111
- package/dist/components/rel-container/README.md +11 -11
- package/dist/components/rel-container/rel-container.ts +35 -9
- package/dist/components/rel-date-picker/README.md +43 -7
- package/dist/components/rel-date-picker/date-format.test.ts +43 -0
- package/dist/components/rel-date-picker/date-format.ts +47 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
- package/dist/components/rel-divider/README.md +9 -9
- package/dist/components/rel-divider/rel-divider.ts +10 -9
- package/dist/components/rel-drawer/README.md +1 -1
- package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
- package/dist/components/rel-drawer/rel-drawer.ts +56 -28
- package/dist/components/rel-kbd/README.md +20 -20
- package/dist/components/rel-kbd/rel-kbd.ts +119 -25
- package/dist/components/rel-layout/README.md +1 -1
- package/dist/components/rel-layout/rel-layout.ts +2 -2
- package/dist/components/rel-menu/README.md +15 -15
- package/dist/components/rel-menu/rel-menu.ts +155 -88
- package/dist/components/rel-menubar/README.md +20 -20
- package/dist/components/rel-menubar/rel-menubar.ts +47 -31
- package/dist/components/rel-nav-menu/README.md +21 -21
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
- package/dist/components/rel-navbar/README.md +7 -7
- package/dist/components/rel-navbar/rel-navbar.ts +12 -11
- package/dist/components/rel-otp/README.md +3 -3
- package/dist/components/rel-otp/rel-otp.ts +46 -30
- package/dist/components/rel-pagination/README.md +18 -18
- package/dist/components/rel-pagination/rel-pagination.ts +141 -90
- package/dist/components/rel-popover/README.md +13 -13
- package/dist/components/rel-popover/rel-popover-content.ts +39 -14
- package/dist/components/rel-popover/rel-popover.ts +18 -7
- package/dist/components/rel-progress/README.md +5 -5
- package/dist/components/rel-progress/rel-progress.ts +16 -12
- package/dist/components/rel-radio/README.md +9 -9
- package/dist/components/rel-radio/rel-radio.ts +64 -50
- package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
- package/dist/components/rel-resizable/README.md +4 -4
- package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
- package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
- package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
- package/dist/components/rel-segmented-button/README.md +10 -10
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
- package/dist/components/rel-select/README.md +14 -14
- package/dist/components/rel-select/rel-select.ts +120 -188
- package/dist/components/rel-sheet/README.md +10 -10
- package/dist/components/rel-sheet/rel-sheet.ts +82 -23
- package/dist/components/rel-sidebar/README.md +5 -5
- package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
- package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
- package/dist/components/rel-slider/README.md +10 -10
- package/dist/components/rel-slider/rel-slider.ts +230 -57
- package/dist/components/rel-snackbar/README.md +9 -9
- package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
- package/dist/components/rel-stepper/README.md +10 -10
- package/dist/components/rel-stepper/rel-stepper.ts +110 -46
- package/dist/components/rel-switch/README.md +5 -5
- package/dist/components/rel-switch/rel-switch.ts +23 -12
- package/dist/components/rel-tab/README.md +13 -13
- package/dist/components/rel-tab/rel-tab.ts +63 -19
- package/dist/components/rel-table/README.md +7 -7
- package/dist/components/rel-table/rel-table-body.ts +2 -1
- package/dist/components/rel-table/rel-table-caption.ts +10 -7
- package/dist/components/rel-table/rel-table-cell.ts +7 -6
- package/dist/components/rel-table/rel-table-footer.ts +4 -3
- package/dist/components/rel-table/rel-table-head.ts +11 -9
- package/dist/components/rel-table/rel-table-header.ts +2 -1
- package/dist/components/rel-table/rel-table-row.ts +5 -4
- package/dist/components/rel-table/rel-table.ts +16 -7
- package/dist/components/rel-textfield/README.md +11 -11
- package/dist/components/rel-textfield/rel-textfield.ts +172 -91
- package/dist/components/rel-toast/README.md +11 -11
- package/dist/components/rel-toast/rel-toast.ts +33 -30
- package/dist/components/rel-tooltip/README.md +7 -7
- package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
- package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
- package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
- package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar.ts +31 -29
- package/dist/index.d.mts +151 -39
- package/dist/index.d.ts +151 -39
- package/dist/index.js +3544 -2289
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3876 -2622
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +653 -363
- package/dist/vars-WY2XCF5G.css +653 -0
- package/package.json +3 -2
- package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
- package/dist/styles/vars-v2.css +0 -525
- package/dist/vars-F54UGCHM.css +0 -363
- package/dist/vars-v2-VMGWTFJZ.css +0 -525
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../../styles/vars-v2.css";
|
|
2
1
|
import { LitElement, html, css } from "lit";
|
|
2
|
+
import "@reliability-design/icons/rel-icon";
|
|
3
3
|
import { customElement, property } from "lit/decorators.js";
|
|
4
4
|
|
|
5
5
|
@customElement("rel-alert")
|
|
@@ -7,19 +7,27 @@ export class RelAlert extends LitElement {
|
|
|
7
7
|
@property({ type: String })
|
|
8
8
|
type: "info" | "success" | "warning" | "error" | "neutral" = "neutral";
|
|
9
9
|
|
|
10
|
+
/** Visual treatment (Figma "Style"): solid | subtle | outline. "filled" is a deprecated alias of solid. */
|
|
11
|
+
@property({ type: String, reflect: true })
|
|
12
|
+
appearance: "solid" | "subtle" | "outline" | "filled" = "subtle";
|
|
13
|
+
|
|
10
14
|
@property({ type: String }) message1 = "";
|
|
11
15
|
@property({ type: String }) message2?: string;
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
// Explicit attribute names: Lit would otherwise lowercase these to `urltext`
|
|
18
|
+
// / `urlhref`, while the docs, the docs-app previews and consumers all use
|
|
19
|
+
// `url-text` / `url-href` — which silently did nothing.
|
|
20
|
+
@property({ type: String, attribute: "url-text" }) urlText?: string;
|
|
21
|
+
@property({ type: String, attribute: "url-href" }) urlHref?: string;
|
|
15
22
|
|
|
16
23
|
@property({ type: Boolean }) dismissible = true;
|
|
17
24
|
@property({ type: Boolean, reflect: true }) dismissed = false;
|
|
18
25
|
|
|
19
26
|
static styles = css`
|
|
20
27
|
:host {
|
|
28
|
+
color: var(--rel-text-default);
|
|
21
29
|
display: block;
|
|
22
|
-
font-family: var(--rel-
|
|
30
|
+
font-family: var(--rel-fonts-font-family);
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
:host([dismissed]) {
|
|
@@ -29,29 +37,40 @@ export class RelAlert extends LitElement {
|
|
|
29
37
|
.rel-alert {
|
|
30
38
|
display: flex;
|
|
31
39
|
align-items: flex-start;
|
|
32
|
-
gap: var(--rel-spacing-
|
|
33
|
-
padding: var(--rel-spacing-
|
|
34
|
-
border-radius: var(--rel-
|
|
40
|
+
gap: var(--rel-spacing-xs);
|
|
41
|
+
padding: var(--rel-spacing-sm) var(--rel-spacing-lg);
|
|
42
|
+
border-radius: var(--rel-border-radius-sm);
|
|
35
43
|
min-width: 360px;
|
|
36
44
|
box-sizing: border-box;
|
|
37
45
|
}
|
|
38
46
|
|
|
39
47
|
.rel-content {
|
|
48
|
+
padding-right: var(--rel-spacing-md);
|
|
40
49
|
display: flex;
|
|
41
50
|
flex-direction: column;
|
|
42
|
-
gap:
|
|
51
|
+
gap: var(--rel-spacing-3xs);
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
.rel-message1 {
|
|
55
|
+
/* Figma: body-lg-medium weight on body-lg-regular metrics */
|
|
56
|
+
font-weight: var(--rel-body-lg-medium-font-weight);
|
|
57
|
+
color: var(--rel-text-label);
|
|
46
58
|
margin: 0;
|
|
47
|
-
font-
|
|
48
|
-
font-
|
|
59
|
+
font-family: var(--rel-body-lg-regular-font-family);
|
|
60
|
+
font-size: var(--rel-body-lg-regular-font-size);
|
|
61
|
+
line-height: var(--rel-body-lg-regular-line-height);
|
|
62
|
+
letter-spacing: var(--rel-body-lg-regular-letter-spacing);
|
|
49
63
|
}
|
|
50
64
|
|
|
51
65
|
.rel-message2 {
|
|
66
|
+
color: var(--rel-text-body);
|
|
52
67
|
margin: 0;
|
|
53
|
-
font-size: var(--rel-fontSizes-sm);
|
|
54
68
|
opacity: 0.9;
|
|
69
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
70
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
71
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
72
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
73
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
55
74
|
}
|
|
56
75
|
|
|
57
76
|
.rel-icon {
|
|
@@ -66,11 +85,20 @@ export class RelAlert extends LitElement {
|
|
|
66
85
|
}
|
|
67
86
|
|
|
68
87
|
.rel-link {
|
|
69
|
-
font-size: var(--rel-fontSizes-sm);
|
|
70
|
-
font-weight: var(--rel-fontWeights-medium);
|
|
71
88
|
text-decoration: underline;
|
|
72
|
-
color:
|
|
89
|
+
color: var(--rel-action-neutral-label-icons-link);
|
|
73
90
|
margin-top: 2px;
|
|
91
|
+
|
|
92
|
+
font-family: var(--rel-action-md-font-family);
|
|
93
|
+
|
|
94
|
+
font-weight: var(--rel-action-md-font-weight);
|
|
95
|
+
|
|
96
|
+
font-size: var(--rel-action-md-font-size);
|
|
97
|
+
|
|
98
|
+
line-height: var(--rel-action-md-line-height);
|
|
99
|
+
|
|
100
|
+
letter-spacing: var(--rel-action-md-letter-spacing);
|
|
101
|
+
|
|
74
102
|
}
|
|
75
103
|
|
|
76
104
|
.rel-close {
|
|
@@ -82,9 +110,9 @@ export class RelAlert extends LitElement {
|
|
|
82
110
|
opacity: 0.6;
|
|
83
111
|
color: inherit;
|
|
84
112
|
font-size: 16px;
|
|
85
|
-
padding: var(--rel-spacing-
|
|
113
|
+
padding: var(--rel-spacing-2xs);
|
|
86
114
|
line-height: 1;
|
|
87
|
-
border-radius: var(--rel-
|
|
115
|
+
border-radius: var(--rel-border-radius-xs, 4px);
|
|
88
116
|
}
|
|
89
117
|
|
|
90
118
|
.rel-close:hover {
|
|
@@ -97,100 +125,130 @@ export class RelAlert extends LitElement {
|
|
|
97
125
|
opacity: 1;
|
|
98
126
|
}
|
|
99
127
|
|
|
100
|
-
/* COLORS — light
|
|
128
|
+
/* COLORS — semantic status tokens carry both light and dark modes.
|
|
129
|
+
Base classes are the SUBTLE style (Figma Style=Subtle): tone light fill,
|
|
130
|
+
no border, tone-colored title. */
|
|
131
|
+
.rel-alert {
|
|
132
|
+
border: 1px solid transparent;
|
|
133
|
+
}
|
|
134
|
+
|
|
101
135
|
.alert-neutral {
|
|
102
|
-
background: var(--rel-
|
|
103
|
-
color: var(--rel-
|
|
136
|
+
background: var(--rel-bg-neutral);
|
|
137
|
+
color: var(--rel-text-default);
|
|
104
138
|
}
|
|
105
139
|
|
|
106
140
|
.alert-info {
|
|
107
|
-
background: var(--rel-
|
|
108
|
-
color: var(--rel-
|
|
109
|
-
|
|
141
|
+
background: var(--rel-bg-info-light);
|
|
142
|
+
color: var(--rel-text-default);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.alert-info .rel-message1,
|
|
146
|
+
.alert-info .rel-message2 {
|
|
147
|
+
color: var(--rel-text-info);
|
|
110
148
|
}
|
|
111
149
|
|
|
112
150
|
.alert-success {
|
|
113
|
-
background: var(--rel-
|
|
114
|
-
color: var(--rel-
|
|
115
|
-
|
|
151
|
+
background: var(--rel-bg-success-light);
|
|
152
|
+
color: var(--rel-text-default);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.alert-success .rel-message1,
|
|
156
|
+
.alert-success .rel-message2 {
|
|
157
|
+
color: var(--rel-text-success);
|
|
116
158
|
}
|
|
117
159
|
|
|
118
160
|
.alert-warning {
|
|
119
|
-
background: var(--rel-
|
|
120
|
-
color: var(--rel-
|
|
121
|
-
|
|
161
|
+
background: var(--rel-bg-warning-light);
|
|
162
|
+
color: var(--rel-text-default);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.alert-warning .rel-message1,
|
|
166
|
+
.alert-warning .rel-message2 {
|
|
167
|
+
color: var(--rel-text-warning);
|
|
122
168
|
}
|
|
123
169
|
|
|
124
170
|
.alert-error {
|
|
125
|
-
background: var(--rel-
|
|
126
|
-
color: var(--rel-
|
|
127
|
-
--rel-icon-error: var(--rel-error-surface-dark);
|
|
171
|
+
background: var(--rel-bg-danger-light);
|
|
172
|
+
color: var(--rel-text-danger);
|
|
128
173
|
}
|
|
129
174
|
|
|
130
|
-
.alert-error .rel-
|
|
131
|
-
|
|
175
|
+
.alert-error .rel-message1,
|
|
176
|
+
.alert-error .rel-message2 {
|
|
177
|
+
color: var(--rel-text-danger);
|
|
132
178
|
}
|
|
133
179
|
|
|
134
|
-
/*
|
|
135
|
-
:host
|
|
136
|
-
:host
|
|
137
|
-
background: var(--rel-
|
|
138
|
-
color: var(--rel-
|
|
139
|
-
|
|
180
|
+
/* Solid style (Figma Style=Solid; "filled" is the deprecated alias) */
|
|
181
|
+
:host([appearance="filled"]) .alert-neutral,
|
|
182
|
+
:host([appearance="solid"]) .alert-neutral {
|
|
183
|
+
background: var(--rel-bg-neutral-inverse-2);
|
|
184
|
+
color: var(--rel-text-inverse);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
:host([appearance="filled"]) .alert-error,
|
|
188
|
+
:host([appearance="solid"]) .alert-error {
|
|
189
|
+
background: var(--rel-bg-danger);
|
|
190
|
+
color: var(--rel-text-static-light);
|
|
140
191
|
}
|
|
141
192
|
|
|
142
|
-
:host
|
|
143
|
-
:host
|
|
144
|
-
|
|
193
|
+
:host([appearance="filled"]) .alert-success,
|
|
194
|
+
:host([appearance="solid"]) .alert-success {
|
|
195
|
+
background: var(--rel-bg-success);
|
|
196
|
+
color: var(--rel-text-static-light);
|
|
145
197
|
}
|
|
146
198
|
|
|
147
|
-
:host
|
|
148
|
-
:host
|
|
149
|
-
|
|
199
|
+
:host([appearance="filled"]) .alert-warning,
|
|
200
|
+
:host([appearance="solid"]) .alert-warning {
|
|
201
|
+
background: var(--rel-bg-warning);
|
|
202
|
+
color: var(--rel-text-static-dark);
|
|
150
203
|
}
|
|
151
204
|
|
|
152
|
-
:host
|
|
153
|
-
:host
|
|
154
|
-
|
|
155
|
-
|
|
205
|
+
:host([appearance="filled"]) .alert-info,
|
|
206
|
+
:host([appearance="solid"]) .alert-info {
|
|
207
|
+
background: var(--rel-bg-info);
|
|
208
|
+
color: var(--rel-text-static-light);
|
|
156
209
|
}
|
|
157
210
|
|
|
158
|
-
:host
|
|
159
|
-
:host
|
|
160
|
-
|
|
211
|
+
:host([appearance="filled"]) .rel-message1,
|
|
212
|
+
:host([appearance="filled"]) .rel-message2,
|
|
213
|
+
:host([appearance="filled"]) .rel-link,
|
|
214
|
+
:host([appearance="solid"]) .rel-message1,
|
|
215
|
+
:host([appearance="solid"]) .rel-message2,
|
|
216
|
+
:host([appearance="solid"]) .rel-link {
|
|
217
|
+
color: inherit;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
:host([appearance="filled"]) .rel-icon rel-icon,
|
|
221
|
+
:host([appearance="solid"]) .rel-icon rel-icon {
|
|
222
|
+
--rel-icon-color: currentColor;
|
|
161
223
|
}
|
|
162
224
|
|
|
163
|
-
|
|
164
|
-
:host
|
|
165
|
-
|
|
166
|
-
--rel-icon-warning: var(--rel-warning-surface-dark);
|
|
225
|
+
/* Outline style (Figma Style=Outline): no fill, tone border, tone title */
|
|
226
|
+
:host([appearance="outline"]) .rel-alert {
|
|
227
|
+
background: transparent;
|
|
167
228
|
}
|
|
168
229
|
|
|
169
|
-
:host
|
|
170
|
-
|
|
171
|
-
color: var(--rel-warning-surface-dark);
|
|
230
|
+
:host([appearance="outline"]) .alert-neutral {
|
|
231
|
+
border-color: var(--rel-border-default);
|
|
172
232
|
}
|
|
173
233
|
|
|
174
|
-
:host
|
|
175
|
-
|
|
176
|
-
border: 1px solid var(--rel-success-surface-dark);
|
|
177
|
-
--rel-icon-success: var(--rel-success-surface-dark);
|
|
234
|
+
:host([appearance="outline"]) .alert-info {
|
|
235
|
+
border-color: var(--rel-border-info);
|
|
178
236
|
}
|
|
179
237
|
|
|
180
|
-
:host
|
|
181
|
-
|
|
182
|
-
color: var(--rel-success-surface-dark);
|
|
238
|
+
:host([appearance="outline"]) .alert-success {
|
|
239
|
+
border-color: var(--rel-border-success);
|
|
183
240
|
}
|
|
184
241
|
|
|
185
|
-
:host
|
|
186
|
-
|
|
187
|
-
border: 1px solid var(--rel-error-surface-dark);
|
|
188
|
-
--rel-icon-error: var(--rel-error-surface-dark);
|
|
242
|
+
:host([appearance="outline"]) .alert-warning {
|
|
243
|
+
border-color: var(--rel-border-warning);
|
|
189
244
|
}
|
|
190
245
|
|
|
191
|
-
:host
|
|
192
|
-
|
|
193
|
-
|
|
246
|
+
:host([appearance="outline"]) .alert-error {
|
|
247
|
+
border-color: var(--rel-border-danger);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
.alert-error .rel-close {
|
|
251
|
+
color: var(--rel-text-default);
|
|
194
252
|
}
|
|
195
253
|
`;
|
|
196
254
|
|
|
@@ -205,106 +263,43 @@ export class RelAlert extends LitElement {
|
|
|
205
263
|
);
|
|
206
264
|
}
|
|
207
265
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
</svg>
|
|
224
|
-
`;
|
|
225
|
-
case "success":
|
|
226
|
-
return html`
|
|
227
|
-
<svg
|
|
228
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
229
|
-
width="18"
|
|
230
|
-
height="18"
|
|
231
|
-
viewBox="0 0 18 18"
|
|
232
|
-
fill="none"
|
|
233
|
-
>
|
|
234
|
-
<path
|
|
235
|
-
d="M7.81 12.91L13.8025 6.9175L12.6125 5.7275L7.81 10.53L5.3875 8.1075L4.1975 9.2975L7.81 12.91ZM9 17.5C7.82417 17.5 6.71917 17.2767 5.685 16.8302C4.65083 16.3837 3.75125 15.7782 2.98625 15.0138C2.22125 14.2493 1.61577 13.3497 1.1698 12.315C0.723834 11.2803 0.500568 10.1753 0.500001 9C0.499434 7.82473 0.722701 6.71973 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65083 1.61548 5.685 1.16895C6.71917 0.722418 7.82417 0.499434 9 0.500001C10.1758 0.500568 11.2808 0.723551 12.315 1.16895C13.3492 1.61548 14.2488 2.22125 15.0138 2.98625C15.7788 3.75125 16.3842 4.65083 16.8302 5.685C17.2762 6.71917 17.4994 7.82417 17.5 9C17.5006 10.1758 17.2773 11.2808 16.8302 12.315C16.3842 13.3492 15.7788 14.2488 15.0138 15.0138C14.2488 15.7788 13.3492 16.3842 12.315 16.8302C11.2808 17.2762 10.1758 17.4994 9 17.5ZM9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1412 5.49375 13.8237 4.17625C12.5062 2.85875 10.8983 2.2 9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8Z"
|
|
236
|
-
fill="var(--rel-icon-success)"
|
|
237
|
-
/>
|
|
238
|
-
</svg>
|
|
239
|
-
`;
|
|
240
|
-
case "warning":
|
|
241
|
-
return html`
|
|
242
|
-
<svg
|
|
243
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
244
|
-
width="16"
|
|
245
|
-
height="14"
|
|
246
|
-
viewBox="0 0 16 14"
|
|
247
|
-
fill="none"
|
|
248
|
-
>
|
|
249
|
-
<path
|
|
250
|
-
d="M0 14L8 0L16 14H0ZM2.50909 12.5263H13.4909L8 2.94737L2.50909 12.5263ZM8 11.7895C8.20606 11.7895 8.37891 11.7187 8.51855 11.5773C8.6577 11.4363 8.72727 11.2614 8.72727 11.0526C8.72727 10.8439 8.6577 10.669 8.51855 10.528C8.37891 10.3865 8.20606 10.3158 8 10.3158C7.79394 10.3158 7.62133 10.3865 7.48218 10.528C7.34255 10.669 7.27273 10.8439 7.27273 11.0526C7.27273 11.2614 7.34255 11.4363 7.48218 11.5773C7.62133 11.7187 7.79394 11.7895 8 11.7895ZM7.27273 9.57895H8.72727V5.89474H7.27273V9.57895Z"
|
|
251
|
-
fill="var(--rel-icon-warning)"
|
|
252
|
-
/>
|
|
253
|
-
</svg>
|
|
254
|
-
`;
|
|
255
|
-
case "error":
|
|
256
|
-
return html`
|
|
257
|
-
<svg
|
|
258
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
259
|
-
width="18"
|
|
260
|
-
height="18"
|
|
261
|
-
viewBox="0 0 18 18"
|
|
262
|
-
fill="none"
|
|
263
|
-
>
|
|
264
|
-
<path
|
|
265
|
-
d="M9 13.25C9.24083 13.25 9.44285 13.1684 9.60605 13.0052C9.76868 12.8426 9.85 12.6408 9.85 12.4C9.85 12.1592 9.76868 11.9571 9.60605 11.7939C9.44285 11.6313 9.24083 11.55 9 11.55C8.75917 11.55 8.55743 11.6313 8.3948 11.7939C8.2316 11.9571 8.15 12.1592 8.15 12.4C8.15 12.6408 8.2316 12.8426 8.3948 13.0052C8.55743 13.1684 8.75917 13.25 9 13.25ZM8.15 9.85H9.85V4.75H8.15V9.85ZM9 17.5C7.82417 17.5 6.71917 17.2767 5.685 16.8302C4.65083 16.3837 3.75125 15.7782 2.98625 15.0138C2.22125 14.2493 1.61577 13.3497 1.1698 12.315C0.723834 11.2803 0.500568 10.1753 0.500001 9C0.499434 7.82473 0.722701 6.71973 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65083 1.61548 5.685 1.16895C6.71917 0.722418 7.82417 0.499434 9 0.500001C10.1758 0.500568 11.2808 0.723551 12.315 1.16895C13.3492 1.61548 14.2488 2.22125 15.0138 2.98625C15.7788 3.75125 16.3842 4.65083 16.8302 5.685C17.2762 6.71917 17.4994 7.82417 17.5 9C17.5006 10.1758 17.2773 11.2808 16.8302 12.315C16.3842 13.3492 15.7788 14.2488 15.0138 15.0138C14.2488 15.7788 13.3492 16.3842 12.315 16.8302C11.2808 17.2762 10.1758 17.4994 9 17.5ZM9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1412 5.49375 13.8237 4.17625C12.5062 2.85875 10.8983 2.2 9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8Z"
|
|
266
|
-
fill="var(--rel-icon-error)"
|
|
267
|
-
/>
|
|
268
|
-
</svg>
|
|
269
|
-
`;
|
|
270
|
-
default:
|
|
271
|
-
return html`
|
|
272
|
-
<svg
|
|
273
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
274
|
-
width="18"
|
|
275
|
-
height="18"
|
|
276
|
-
viewBox="0 0 18 18"
|
|
277
|
-
fill="none"
|
|
278
|
-
>
|
|
279
|
-
<path
|
|
280
|
-
d="M9 4.75C8.75917 4.75 8.55715 4.8316 8.39395 4.9948C8.23132 5.15743 8.15 5.35917 8.15 5.6C8.15 5.84083 8.23132 6.04285 8.39395 6.20605C8.55715 6.36868 8.75917 6.45 9 6.45C9.24083 6.45 9.44257 6.36868 9.6052 6.20605C9.7684 6.04285 9.85 5.84083 9.85 5.6C9.85 5.35917 9.7684 5.15743 9.6052 4.9948C9.44257 4.8316 9.24083 4.75 9 4.75ZM9.85 8.15L8.15 8.15L8.15 13.25L9.85 13.25L9.85 8.15ZM9 0.499999C10.1758 0.499999 11.2808 0.723266 12.315 1.1698C13.3492 1.61633 14.2488 2.22182 15.0138 2.98625C15.7788 3.75068 16.3842 4.65027 16.8302 5.685C17.2762 6.71973 17.4994 7.82473 17.5 9C17.5006 10.1753 17.2773 11.2803 16.8302 12.315C16.3842 13.3492 15.7787 14.2487 15.0137 15.0137C14.2487 15.7787 13.3492 16.3845 12.315 16.831C11.2808 17.2776 10.1758 17.5006 9 17.5C7.82417 17.4994 6.71917 17.2764 5.685 16.831C4.65083 16.3845 3.75125 15.7787 2.98625 15.0137C2.22125 14.2487 1.61577 13.3492 1.1698 12.315C0.723834 11.2808 0.500567 10.1758 0.500001 9C0.499434 7.82417 0.722701 6.71917 1.1698 5.685C1.61577 4.65083 2.22125 3.75125 2.98625 2.98625C3.75125 2.22125 4.65084 1.61577 5.685 1.1698C6.71917 0.723832 7.82417 0.500566 9 0.499999ZM9 2.2C7.10167 2.2 5.49375 2.85875 4.17625 4.17625C2.85875 5.49375 2.2 7.10167 2.2 9C2.2 10.8983 2.85875 12.5062 4.17625 13.8237C5.49375 15.1412 7.10167 15.8 9 15.8C10.8983 15.8 12.5062 15.1412 13.8237 13.8237C15.1412 12.5062 15.8 10.8983 15.8 9C15.8 7.10167 15.1413 5.49375 13.8238 4.17625C12.5063 2.85875 10.8983 2.2 9 2.2Z"
|
|
281
|
-
fill="var(--rel-colors-black)"
|
|
282
|
-
/>
|
|
283
|
-
</svg>
|
|
284
|
-
`;
|
|
285
|
-
}
|
|
266
|
+
/* Task 2: status icons standardised on <rel-icon> (size tier L = 20px icon
|
|
267
|
+
alongside body-lg text). Colour comes from the semantic tone. */
|
|
268
|
+
private get iconTemplate() {
|
|
269
|
+
const name =
|
|
270
|
+
this.type === "success" ? "check-circle"
|
|
271
|
+
: this.type === "warning" ? "alert-circle"
|
|
272
|
+
: this.type === "error" ? "error"
|
|
273
|
+
: "info";
|
|
274
|
+
const tone =
|
|
275
|
+
this.type === "success" ? "success"
|
|
276
|
+
: this.type === "warning" ? "warning"
|
|
277
|
+
: this.type === "error" ? "danger"
|
|
278
|
+
: this.type === "info" ? "info"
|
|
279
|
+
: "default";
|
|
280
|
+
return html`<rel-icon name="${name}" size="md" tone="${tone}"></rel-icon>`;
|
|
286
281
|
}
|
|
287
282
|
|
|
288
283
|
render() {
|
|
289
284
|
return html`
|
|
290
|
-
<div class="rel-alert alert-${this.type}" role="alert">
|
|
291
|
-
<div class="rel-icon">${this.
|
|
285
|
+
<div part="base" class="rel-alert alert-${this.type}" role="alert">
|
|
286
|
+
<div part="icon" class="rel-icon">${this.iconTemplate}</div>
|
|
292
287
|
|
|
293
|
-
<div class="rel-content">
|
|
294
|
-
<p class="rel-message1">${this.message1}</p>
|
|
288
|
+
<div part="content" class="rel-content">
|
|
289
|
+
<p part="label" class="rel-message1">${this.message1}</p>
|
|
295
290
|
|
|
296
291
|
${this.message2
|
|
297
|
-
? html`<p class="rel-message2">${this.message2}</p>`
|
|
292
|
+
? html`<p part="helper" class="rel-message2">${this.message2}</p>`
|
|
298
293
|
: null}
|
|
299
294
|
${this.urlText && this.urlHref
|
|
300
|
-
? html`<a class="rel-link" href=${this.urlHref}>
|
|
295
|
+
? html`<a part="action" class="rel-link" href=${this.urlHref}>
|
|
301
296
|
${this.urlText}
|
|
302
297
|
</a>`
|
|
303
298
|
: null}
|
|
304
299
|
</div>
|
|
305
300
|
|
|
306
301
|
${this.dismissible
|
|
307
|
-
? html`<button class="rel-close" @click=${this.dismissAlert} aria-label="Dismiss">
|
|
302
|
+
? html`<button part="close-button" class="rel-close" @click=${this.dismissAlert} aria-label="Dismiss">
|
|
308
303
|
✕
|
|
309
304
|
</button>`
|
|
310
305
|
: null}
|
|
@@ -77,22 +77,22 @@ None exposed.
|
|
|
77
77
|
## Tokens / CSS Variables
|
|
78
78
|
|
|
79
79
|
### Semantic Tokens
|
|
80
|
-
- `--rel-
|
|
80
|
+
- `--rel-fonts-font-family` - Font family
|
|
81
81
|
|
|
82
82
|
### Font Tokens
|
|
83
|
-
- `--rel-
|
|
84
|
-
- `--rel-
|
|
85
|
-
- `--rel-
|
|
86
|
-
- `--rel-
|
|
87
|
-
- `--rel-
|
|
83
|
+
- `--rel-headings-lg-font-size` - Large avatar text size
|
|
84
|
+
- `--rel-body-xl-regular-font-size` - Medium avatar text size
|
|
85
|
+
- `--rel-body-md-regular-font-size` - Small avatar text size
|
|
86
|
+
- `--rel-body-xs-regular-font-size` - Extra small avatar text size
|
|
87
|
+
- `--rel-fonts-weight-body-semibold` - Text font weight
|
|
88
88
|
|
|
89
89
|
### Color Tokens (by variant)
|
|
90
|
-
- **fill** (default): `--rel-avatar-bg-fill` (default `--rel-
|
|
91
|
-
- **subtle**: `--rel-avatar-bg-subtle` (default `--rel-
|
|
92
|
-
- **outline**: `--rel-avatar-bg-outline` (default `--rel-
|
|
93
|
-
- `--rel-
|
|
90
|
+
- **fill** (default): `--rel-avatar-bg-fill` (default `--rel-text-disabled`), `--rel-avatar-color-fill` (default `#ffffff`)
|
|
91
|
+
- **subtle**: `--rel-avatar-bg-subtle` (default `--rel-bg-neutral-elevated-1`), `--rel-avatar-color-subtle` (default `--rel-text-label`)
|
|
92
|
+
- **outline**: `--rel-avatar-bg-outline` (default `--rel-bg-surface`), `--rel-avatar-border-outline` (default `--rel-border-default`), `--rel-avatar-color-outline` (default `--rel-text-label`)
|
|
93
|
+
- `--rel-stroke-sm` - Border width (all variants; `fill`/`subtle` use a transparent border to keep sizing consistent)
|
|
94
94
|
|
|
95
|
-
All of the above semantic tokens (`--rel-
|
|
95
|
+
All of the above semantic tokens (`--rel-bg-*`, `--rel-text-label`, `--rel-border-*`, `--rel-text-disabled`) have dark-mode overrides defined in `vars.css` under `:root[data-theme="dark"]`, so all three variants automatically adapt to dark mode with no extra configuration.
|
|
96
96
|
|
|
97
97
|
## Accessibility
|
|
98
98
|
- Image avatars include `alt` attribute for screen readers
|
|
@@ -107,10 +107,10 @@ All of the above semantic tokens (`--rel-color-bg-*`, `--rel-color-text-heading`
|
|
|
107
107
|
|
|
108
108
|
## Notes / Edge Cases
|
|
109
109
|
- **Size variants**:
|
|
110
|
-
- **lg**: 40px × 40px, font-size: `--rel-
|
|
111
|
-
- **md**: 32px × 32px, font-size: `--rel-
|
|
112
|
-
- **sm**: 24px × 24px, font-size: `--rel-
|
|
113
|
-
- **xs**: 18px × 18px, font-size: `--rel-
|
|
110
|
+
- **lg**: 40px × 40px, font-size: `--rel-headings-lg-font-size`
|
|
111
|
+
- **md**: 32px × 32px, font-size: `--rel-body-xl-regular-font-size`
|
|
112
|
+
- **sm**: 24px × 24px, font-size: `--rel-body-md-regular-font-size`
|
|
113
|
+
- **xs**: 18px × 18px, font-size: `--rel-body-xs-regular-font-size`
|
|
114
114
|
|
|
115
115
|
- **Display types**:
|
|
116
116
|
- **image**: Displays an `<img>` with `src` and `alt`
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "../../styles/vars-v2.css";
|
|
2
1
|
import { LitElement, html, css } from "lit";
|
|
3
2
|
import { customElement, property } from "lit/decorators.js";
|
|
4
3
|
|
|
@@ -21,8 +20,9 @@ export class RelAvatar extends LitElement {
|
|
|
21
20
|
|
|
22
21
|
static styles = css`
|
|
23
22
|
:host {
|
|
23
|
+
color: var(--rel-text-default);
|
|
24
24
|
display: inline-flex;
|
|
25
|
-
font-family: var(--rel-
|
|
25
|
+
font-family: var(--rel-fonts-font-family);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.avatar {
|
|
@@ -32,8 +32,10 @@ export class RelAvatar extends LitElement {
|
|
|
32
32
|
border-radius: 50%;
|
|
33
33
|
overflow: hidden;
|
|
34
34
|
box-sizing: border-box;
|
|
35
|
-
border: var(--rel-
|
|
36
|
-
|
|
35
|
+
border: var(--rel-stroke-sm, 1px) solid transparent;
|
|
36
|
+
/* every avatar size role is a *-semibold role, so the base weight binds
|
|
37
|
+
one of them rather than the underlying primitive (per conventions §1) */
|
|
38
|
+
font-weight: var(--rel-body-sm-semibold-font-weight);
|
|
37
39
|
user-select: none;
|
|
38
40
|
text-transform: uppercase;
|
|
39
41
|
}
|
|
@@ -41,45 +43,62 @@ export class RelAvatar extends LitElement {
|
|
|
41
43
|
/* ── Variants ─────────────────────────────────────────────── */
|
|
42
44
|
|
|
43
45
|
:host([variant="fill"]) .avatar {
|
|
44
|
-
background-color: var(--rel-avatar-bg-fill,
|
|
45
|
-
color: var(--rel-avatar-color-fill,
|
|
46
|
+
background-color: var(--rel-avatar-bg-fill, var(--rel-bg-neutral-inverse-2));
|
|
47
|
+
color: var(--rel-avatar-color-fill, var(--rel-text-inverse));
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
:host([variant="subtle"]) .avatar {
|
|
49
|
-
background-color: var(--rel-avatar-bg-subtle,
|
|
50
|
-
color: var(--rel-avatar-color-subtle,
|
|
51
|
+
background-color: var(--rel-avatar-bg-subtle, var(--rel-bg-neutral-elevated-1));
|
|
52
|
+
color: var(--rel-avatar-color-subtle, var(--rel-text-default));
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
:host([variant="outline"]) .avatar {
|
|
54
56
|
background-color: transparent;
|
|
55
|
-
border-color: var(--rel-avatar-border-outline, var(--rel-
|
|
56
|
-
color: var(--rel-avatar-color-outline,
|
|
57
|
+
border-color: var(--rel-avatar-border-outline, var(--rel-border-default));
|
|
58
|
+
color: var(--rel-avatar-color-outline, var(--rel-text-default));
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
/* ── Sizes ────────────────────────────────────────────────── */
|
|
60
62
|
|
|
61
63
|
.avatar-lg {
|
|
62
64
|
width: 40px;
|
|
63
|
-
height: 40px;
|
|
64
|
-
font-
|
|
65
|
+
height: 40px; /* 20px */
|
|
66
|
+
font-family: var(--rel-body-xl-semibold-font-family);
|
|
67
|
+
font-weight: var(--rel-body-xl-semibold-font-weight);
|
|
68
|
+
font-size: var(--rel-body-xl-semibold-font-size);
|
|
69
|
+
line-height: var(--rel-body-xl-semibold-line-height);
|
|
70
|
+
letter-spacing: var(--rel-body-xl-semibold-letter-spacing);
|
|
65
71
|
}
|
|
66
72
|
|
|
67
73
|
.avatar-md {
|
|
74
|
+
/* Figma: body-lg-semibold family+weight on body-lg-regular metrics */
|
|
75
|
+
font-weight: var(--rel-body-lg-semibold-font-weight);
|
|
68
76
|
width: 32px;
|
|
69
|
-
height: 32px;
|
|
70
|
-
font-
|
|
77
|
+
height: 32px; /* 16px */
|
|
78
|
+
font-family: var(--rel-body-lg-semibold-font-family);
|
|
79
|
+
font-size: var(--rel-body-lg-regular-font-size);
|
|
80
|
+
line-height: var(--rel-body-lg-regular-line-height);
|
|
81
|
+
letter-spacing: var(--rel-body-lg-regular-letter-spacing);
|
|
71
82
|
}
|
|
72
83
|
|
|
73
84
|
.avatar-sm {
|
|
74
85
|
width: 24px;
|
|
75
|
-
height: 24px;
|
|
76
|
-
font-
|
|
86
|
+
height: 24px; /* 12px */
|
|
87
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
88
|
+
font-weight: var(--rel-body-sm-semibold-font-weight);
|
|
89
|
+
font-size: var(--rel-body-sm-semibold-font-size);
|
|
90
|
+
line-height: var(--rel-body-sm-semibold-line-height);
|
|
91
|
+
letter-spacing: var(--rel-body-sm-semibold-letter-spacing);
|
|
77
92
|
}
|
|
78
93
|
|
|
79
94
|
.avatar-xs {
|
|
80
95
|
width: 20px;
|
|
81
|
-
height: 20px;
|
|
82
|
-
font-
|
|
96
|
+
height: 20px; /* 10px */
|
|
97
|
+
font-family: var(--rel-body-xs-regular-font-family);
|
|
98
|
+
font-weight: var(--rel-body-xs-semibold-font-weight);
|
|
99
|
+
font-size: var(--rel-body-xs-semibold-font-size);
|
|
100
|
+
line-height: var(--rel-body-xs-semibold-line-height);
|
|
101
|
+
letter-spacing: var(--rel-body-xs-semibold-letter-spacing);
|
|
83
102
|
}
|
|
84
103
|
|
|
85
104
|
/* ── Image ────────────────────────────────────────────────── */
|
|
@@ -88,6 +107,7 @@ export class RelAvatar extends LitElement {
|
|
|
88
107
|
width: 100%;
|
|
89
108
|
height: 100%;
|
|
90
109
|
object-fit: cover;
|
|
110
|
+
background: var(--rel-bg-neutral);
|
|
91
111
|
}
|
|
92
112
|
|
|
93
113
|
/* ── Icon slot ────────────────────────────────────────────── */
|
|
@@ -106,32 +126,16 @@ export class RelAvatar extends LitElement {
|
|
|
106
126
|
height: 50%;
|
|
107
127
|
}
|
|
108
128
|
|
|
109
|
-
/* ── Dark mode ────────────────────────────────────────────────
|
|
110
|
-
:host() can never be preceded by a combinator inside a shadow-tree
|
|
111
|
-
stylesheet, so ":host-context(dark) :host([variant=...]) .avatar"
|
|
112
|
-
(the previous approach) is invalid and silently matches nothing.
|
|
113
|
-
Instead, redefine the same custom properties the variant rules
|
|
114
|
-
above already read via var(--token, fallback) — a plain
|
|
115
|
-
:host-context() selector with no compounding, guaranteed valid. ── */
|
|
116
|
-
|
|
117
|
-
:host-context([data-theme="dark"]) {
|
|
118
|
-
--rel-avatar-bg-fill: #ffffff;
|
|
119
|
-
--rel-avatar-color-fill: #0b0b0b;
|
|
120
|
-
--rel-avatar-bg-subtle: #2b2b2b;
|
|
121
|
-
--rel-avatar-color-subtle: #f5f5f5;
|
|
122
|
-
--rel-avatar-border-outline: #525252;
|
|
123
|
-
--rel-avatar-color-outline: #f5f5f5;
|
|
124
|
-
}
|
|
125
129
|
`;
|
|
126
130
|
|
|
127
131
|
render() {
|
|
128
132
|
return html`
|
|
129
|
-
<div class="avatar avatar-${this.size}" style=${[this.bg ? `background-color:${this.bg}` : "", this.color ? `color:${this.color}` : ""].filter(Boolean).join(";")}>
|
|
133
|
+
<div part="base" class="avatar avatar-${this.size}" style=${[this.bg ? `background-color:${this.bg}` : "", this.color ? `color:${this.color}` : ""].filter(Boolean).join(";")}>
|
|
130
134
|
${this.type === "image" && this.src
|
|
131
|
-
? html`<img src=${this.src} alt=${this.alt} />`
|
|
135
|
+
? html`<img part="icon" src=${this.src} alt=${this.alt} />`
|
|
132
136
|
: this.type === "text"
|
|
133
|
-
? html`<span>${this.text}</span>`
|
|
134
|
-
: html`<span class="icon-slot"><slot></slot></span>`}
|
|
137
|
+
? html`<span part="label">${this.text}</span>`
|
|
138
|
+
: html`<span part="icon" class="icon-slot"><slot></slot></span>`}
|
|
135
139
|
</div>
|
|
136
140
|
`;
|
|
137
141
|
}
|