@reliability-design/web 1.3.0 → 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 +161 -159
- 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 +69 -17
- 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 +327 -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 +257 -83
- 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 +73 -23
- 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 +718 -397
- 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 +5 -2
- package/dist/components/rel-topbar/rel-topbar-brand.ts +12 -5
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +14 -8
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +8 -5
- package/dist/components/rel-topbar/rel-topbar-item.ts +27 -22
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +4 -1
- package/dist/components/rel-topbar/rel-topbar-profile.ts +71 -50
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +5 -2
- package/dist/components/rel-topbar/rel-topbar.ts +37 -29
- package/dist/index.d.mts +227 -40
- package/dist/index.d.ts +227 -40
- package/dist/index.js +3930 -2247
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4311 -2629
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +653 -346
- 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-I2PC74XD.css +0 -346
- package/dist/vars-v2-VMGWTFJZ.css +0 -525
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LitElement, html, css, nothing, PropertyValues } from "lit";
|
|
2
2
|
import { customElement, property, state, query } from "lit/decorators.js";
|
|
3
3
|
import { repeat } from "lit/directives/repeat.js";
|
|
4
|
-
import "../../styles/vars-v2.css";
|
|
5
4
|
import "@reliability-design/icons/rel-icon";
|
|
6
5
|
import "../rel-chip/rel-chip.js";
|
|
7
6
|
import "../rel-checkbox/rel-checkbox.js";
|
|
@@ -93,15 +92,16 @@ export class RelSelect extends LitElement {
|
|
|
93
92
|
|
|
94
93
|
static styles = css`
|
|
95
94
|
:host {
|
|
95
|
+
color: var(--rel-text-default);
|
|
96
96
|
display: block;
|
|
97
|
-
font-family: var(--rel-
|
|
97
|
+
font-family: var(--rel-fonts-font-family);
|
|
98
98
|
width: 100%;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
.select-wrapper {
|
|
102
102
|
display: flex;
|
|
103
103
|
flex-direction: column;
|
|
104
|
-
gap: var(--rel-spacing-
|
|
104
|
+
gap: var(--rel-spacing-2xs);
|
|
105
105
|
width: 100%;
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -113,9 +113,18 @@ export class RelSelect extends LitElement {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
.select-label {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
color: var(--rel-select-label-color, var(--rel-text-label));
|
|
117
|
+
|
|
118
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
119
|
+
|
|
120
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
121
|
+
|
|
122
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
123
|
+
|
|
124
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
125
|
+
|
|
126
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
127
|
+
|
|
119
128
|
}
|
|
120
129
|
|
|
121
130
|
/* Error only colors the border/focus ring and the supporting text below
|
|
@@ -133,8 +142,8 @@ export class RelSelect extends LitElement {
|
|
|
133
142
|
width: 100%;
|
|
134
143
|
box-sizing: border-box;
|
|
135
144
|
gap: 8px;
|
|
136
|
-
background: var(--rel-select-bg,
|
|
137
|
-
border: 1px solid var(--rel-select-border-default,
|
|
145
|
+
background: var(--rel-select-bg, var(--rel-bg-neutral));
|
|
146
|
+
border: 1px solid var(--rel-select-border-default, var(--rel-border-default));
|
|
138
147
|
cursor: pointer;
|
|
139
148
|
font-family: inherit;
|
|
140
149
|
transition: border-color 0.15s ease;
|
|
@@ -142,7 +151,7 @@ export class RelSelect extends LitElement {
|
|
|
142
151
|
}
|
|
143
152
|
|
|
144
153
|
.border-rounded .select-trigger {
|
|
145
|
-
border-radius: var(--rel-select-radius,
|
|
154
|
+
border-radius: var(--rel-select-radius, var(--rel-border-radius-xs));
|
|
146
155
|
}
|
|
147
156
|
|
|
148
157
|
.border-sharp .select-trigger {
|
|
@@ -152,36 +161,48 @@ export class RelSelect extends LitElement {
|
|
|
152
161
|
.select-trigger:focus-visible,
|
|
153
162
|
.select-wrapper.open .select-trigger {
|
|
154
163
|
outline: none;
|
|
155
|
-
border-color: var(--rel-select-border-focus,
|
|
164
|
+
border-color: var(--rel-select-border-focus, var(--rel-border-strong));
|
|
156
165
|
}
|
|
157
166
|
|
|
158
167
|
.select-wrapper.error .select-trigger {
|
|
159
|
-
border-color: var(--rel-select-border-error,
|
|
168
|
+
border-color: var(--rel-select-border-error, var(--rel-border-danger));
|
|
160
169
|
}
|
|
161
170
|
|
|
162
171
|
.select-wrapper.disabled .select-trigger {
|
|
163
172
|
cursor: not-allowed;
|
|
164
|
-
background: var(--rel-select-bg-disabled,
|
|
165
|
-
border-color: var(--rel-select-border-default,
|
|
173
|
+
background: var(--rel-select-bg-disabled, var(--rel-bg-neutral-elevated-1));
|
|
174
|
+
border-color: var(--rel-select-border-default, var(--rel-border-default));
|
|
166
175
|
}
|
|
167
176
|
|
|
168
177
|
/* Sizes */
|
|
169
178
|
.select-wrapper.small .select-trigger {
|
|
170
|
-
padding: var(--rel-spacing-
|
|
179
|
+
padding: var(--rel-spacing-xs) var(--rel-spacing-sm);
|
|
171
180
|
min-height: 40px;
|
|
172
|
-
font-
|
|
181
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
182
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
183
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
184
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
185
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
173
186
|
}
|
|
174
187
|
|
|
175
188
|
.select-wrapper.medium .select-trigger {
|
|
176
189
|
padding: 12px;
|
|
177
190
|
min-height: 48px;
|
|
178
|
-
font-
|
|
191
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
192
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
193
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
194
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
195
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
.select-wrapper.large .select-trigger {
|
|
182
|
-
padding: var(--rel-spacing-
|
|
199
|
+
padding: var(--rel-spacing-md);
|
|
183
200
|
min-height: 56px;
|
|
184
|
-
font-
|
|
201
|
+
font-family: var(--rel-body-lg-regular-font-family);
|
|
202
|
+
font-weight: var(--rel-body-lg-regular-font-weight);
|
|
203
|
+
font-size: var(--rel-body-lg-regular-font-size);
|
|
204
|
+
line-height: var(--rel-body-lg-regular-line-height);
|
|
205
|
+
letter-spacing: var(--rel-body-lg-regular-letter-spacing);
|
|
185
206
|
}
|
|
186
207
|
|
|
187
208
|
/* Icons */
|
|
@@ -189,7 +210,7 @@ export class RelSelect extends LitElement {
|
|
|
189
210
|
display: flex;
|
|
190
211
|
align-items: center;
|
|
191
212
|
flex-shrink: 0;
|
|
192
|
-
color: var(--rel-select-icon-color,
|
|
213
|
+
color: var(--rel-select-icon-color, var(--rel-text-default));
|
|
193
214
|
}
|
|
194
215
|
|
|
195
216
|
.select-trigger .icon.chevron {
|
|
@@ -201,7 +222,7 @@ export class RelSelect extends LitElement {
|
|
|
201
222
|
}
|
|
202
223
|
|
|
203
224
|
.select-wrapper.disabled .icon {
|
|
204
|
-
color: var(--rel-
|
|
225
|
+
color: var(--rel-text-disabled);
|
|
205
226
|
}
|
|
206
227
|
|
|
207
228
|
/* Value area */
|
|
@@ -212,16 +233,16 @@ export class RelSelect extends LitElement {
|
|
|
212
233
|
align-items: center;
|
|
213
234
|
gap: 6px;
|
|
214
235
|
flex-wrap: wrap;
|
|
215
|
-
color: var(--rel-select-value-color,
|
|
236
|
+
color: var(--rel-select-value-color, var(--rel-text-default));
|
|
216
237
|
overflow: hidden;
|
|
217
238
|
}
|
|
218
239
|
|
|
219
240
|
.select-value.placeholder {
|
|
220
|
-
color: var(--rel-select-placeholder-color,
|
|
241
|
+
color: var(--rel-select-placeholder-color, var(--rel-text-placeholder));
|
|
221
242
|
}
|
|
222
243
|
|
|
223
244
|
.select-wrapper.disabled .select-value.placeholder {
|
|
224
|
-
color: var(--rel-select-placeholder-disabled-color,
|
|
245
|
+
color: var(--rel-select-placeholder-disabled-color, var(--rel-text-disabled));
|
|
225
246
|
}
|
|
226
247
|
|
|
227
248
|
.select-value-text {
|
|
@@ -254,16 +275,18 @@ export class RelSelect extends LitElement {
|
|
|
254
275
|
left: 12px;
|
|
255
276
|
top: 50%;
|
|
256
277
|
transform: translateY(-50%);
|
|
257
|
-
background: var(--rel-select-bg,
|
|
278
|
+
background: var(--rel-select-bg, var(--rel-bg-neutral));
|
|
258
279
|
padding: 0 4px;
|
|
259
|
-
|
|
260
|
-
font-weight: 400;
|
|
261
|
-
line-height: 1;
|
|
262
|
-
color: var(--rel-select-placeholder-color, #757575);
|
|
280
|
+
color: var(--rel-select-placeholder-color, var(--rel-text-placeholder));
|
|
263
281
|
pointer-events: none;
|
|
264
282
|
z-index: 1;
|
|
265
283
|
white-space: nowrap;
|
|
266
284
|
transition: top 0.15s ease, left 0.15s ease, font-size 0.15s ease, color 0.15s ease;
|
|
285
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
286
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
287
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
288
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
289
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
267
290
|
}
|
|
268
291
|
|
|
269
292
|
.floating-label.has-left-icon {
|
|
@@ -275,8 +298,11 @@ export class RelSelect extends LitElement {
|
|
|
275
298
|
.select-wrapper.open .floating-label {
|
|
276
299
|
top: 0;
|
|
277
300
|
left: 12px;
|
|
278
|
-
font-size:
|
|
279
|
-
|
|
301
|
+
font-size: var(--rel-body-sm-medium-font-size);
|
|
302
|
+
line-height: var(--rel-body-sm-medium-line-height);
|
|
303
|
+
letter-spacing: var(--rel-body-sm-medium-letter-spacing);
|
|
304
|
+
font-weight: var(--rel-body-xs-medium-font-weight);
|
|
305
|
+
color: var(--rel-select-label-color, var(--rel-text-label));
|
|
280
306
|
}
|
|
281
307
|
|
|
282
308
|
/* The real placeholder hides while the float-label rests in its spot,
|
|
@@ -293,12 +319,13 @@ export class RelSelect extends LitElement {
|
|
|
293
319
|
|
|
294
320
|
/* Supporting text */
|
|
295
321
|
.select-support {
|
|
322
|
+
margin-top: var(--rel-spacing-3xs);
|
|
296
323
|
font-size: 13px;
|
|
297
|
-
color: var(--rel-select-supporting-color,
|
|
324
|
+
color: var(--rel-select-supporting-color, var(--rel-text-caption));
|
|
298
325
|
}
|
|
299
326
|
|
|
300
327
|
.select-support.error {
|
|
301
|
-
color: var(--rel-
|
|
328
|
+
color: var(--rel-text-danger);
|
|
302
329
|
}
|
|
303
330
|
|
|
304
331
|
/* ── Dropdown listbox ── */
|
|
@@ -307,13 +334,13 @@ export class RelSelect extends LitElement {
|
|
|
307
334
|
z-index: 1001;
|
|
308
335
|
display: none;
|
|
309
336
|
box-sizing: border-box;
|
|
310
|
-
background: var(--rel-select-bg,
|
|
311
|
-
border: 1px solid var(--rel-select-menu-border,
|
|
312
|
-
border-radius: var(--rel-select-menu-radius,
|
|
337
|
+
background: var(--rel-select-bg, var(--rel-bg-neutral));
|
|
338
|
+
border: 1px solid var(--rel-select-menu-border, var(--rel-border-default));
|
|
339
|
+
border-radius: var(--rel-select-menu-radius, var(--rel-border-radius-sm));
|
|
313
340
|
/* A border alone doesn't read clearly against a similarly-light page,
|
|
314
341
|
and a shadow alone barely shows on a dark background — together
|
|
315
342
|
they hold up in both themes. */
|
|
316
|
-
box-shadow: var(--rel-select-menu-shadow,
|
|
343
|
+
box-shadow: var(--rel-select-menu-shadow, var(--rel-shadows-shadow-300));
|
|
317
344
|
max-height: 360px;
|
|
318
345
|
overflow-y: auto;
|
|
319
346
|
}
|
|
@@ -325,9 +352,9 @@ export class RelSelect extends LitElement {
|
|
|
325
352
|
.select-search {
|
|
326
353
|
position: sticky;
|
|
327
354
|
top: 0;
|
|
328
|
-
background: var(--rel-select-bg,
|
|
329
|
-
padding: var(--rel-spacing-
|
|
330
|
-
border-bottom: 1px solid var(--rel-select-divider,
|
|
355
|
+
background: var(--rel-select-bg, var(--rel-bg-neutral));
|
|
356
|
+
padding: var(--rel-spacing-xs);
|
|
357
|
+
border-bottom: 1px solid var(--rel-select-divider, var(--rel-border-subtle));
|
|
331
358
|
}
|
|
332
359
|
|
|
333
360
|
/* Base = "small" textfield sizing, shared by both small AND medium
|
|
@@ -336,16 +363,16 @@ export class RelSelect extends LitElement {
|
|
|
336
363
|
display: flex;
|
|
337
364
|
align-items: center;
|
|
338
365
|
gap: 8px;
|
|
339
|
-
border: 1px solid var(--rel-select-search-border,
|
|
366
|
+
border: 1px solid var(--rel-select-search-border, var(--rel-border-default));
|
|
340
367
|
border-radius: 4px;
|
|
341
|
-
padding: var(--rel-spacing-
|
|
368
|
+
padding: var(--rel-spacing-xs) var(--rel-spacing-sm);
|
|
342
369
|
}
|
|
343
370
|
|
|
344
371
|
.search-input-wrap .icon {
|
|
345
372
|
display: flex;
|
|
346
373
|
align-items: center;
|
|
347
374
|
flex-shrink: 0;
|
|
348
|
-
color: var(--rel-select-icon-color,
|
|
375
|
+
color: var(--rel-select-icon-color, var(--rel-text-default));
|
|
349
376
|
}
|
|
350
377
|
|
|
351
378
|
.search-input {
|
|
@@ -354,13 +381,16 @@ export class RelSelect extends LitElement {
|
|
|
354
381
|
border: none;
|
|
355
382
|
outline: none;
|
|
356
383
|
background: transparent;
|
|
357
|
-
|
|
358
|
-
font-
|
|
359
|
-
|
|
384
|
+
color: var(--rel-select-value-color, var(--rel-text-default));
|
|
385
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
386
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
387
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
388
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
389
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
360
390
|
}
|
|
361
391
|
|
|
362
392
|
.search-input::placeholder {
|
|
363
|
-
color: var(--rel-select-placeholder-color,
|
|
393
|
+
color: var(--rel-select-placeholder-color, var(--rel-text-placeholder));
|
|
364
394
|
}
|
|
365
395
|
|
|
366
396
|
:host([size="large"]) .search-input-wrap {
|
|
@@ -368,7 +398,17 @@ export class RelSelect extends LitElement {
|
|
|
368
398
|
}
|
|
369
399
|
|
|
370
400
|
:host([size="large"]) .search-input {
|
|
371
|
-
|
|
401
|
+
|
|
402
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
403
|
+
|
|
404
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
405
|
+
|
|
406
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
407
|
+
|
|
408
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
409
|
+
|
|
410
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
411
|
+
|
|
372
412
|
}
|
|
373
413
|
|
|
374
414
|
.select-options {
|
|
@@ -380,11 +420,14 @@ export class RelSelect extends LitElement {
|
|
|
380
420
|
align-items: center;
|
|
381
421
|
justify-content: space-between;
|
|
382
422
|
gap: 12px;
|
|
383
|
-
padding: var(--rel-spacing-
|
|
384
|
-
|
|
385
|
-
font-family: var(--rel-fontFamilies-primary);
|
|
386
|
-
color: var(--rel-select-value-color, #0b0b0b);
|
|
423
|
+
padding: var(--rel-spacing-xs) 12px;
|
|
424
|
+
color: var(--rel-select-value-color, var(--rel-text-default));
|
|
387
425
|
cursor: pointer;
|
|
426
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
427
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
428
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
429
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
430
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
388
431
|
}
|
|
389
432
|
|
|
390
433
|
.select-option-label {
|
|
@@ -395,16 +438,20 @@ export class RelSelect extends LitElement {
|
|
|
395
438
|
|
|
396
439
|
.select-option-check {
|
|
397
440
|
flex-shrink: 0;
|
|
398
|
-
color: var(--rel-select-value-color,
|
|
441
|
+
color: var(--rel-select-value-color, var(--rel-text-default));
|
|
399
442
|
}
|
|
400
443
|
|
|
401
444
|
.select-option:hover,
|
|
402
445
|
.select-option.highlighted {
|
|
403
|
-
background: var(--rel-select-option-hover,
|
|
446
|
+
background: var(--rel-select-option-hover, var(--rel-bg-neutral-elevated-1));
|
|
404
447
|
}
|
|
405
448
|
|
|
406
449
|
.select-option[aria-selected="true"] {
|
|
407
|
-
font-weight: var(--rel-
|
|
450
|
+
font-weight: var(--rel-body-md-medium-font-weight);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
:host([size="large"]) .select-option[aria-selected="true"] {
|
|
454
|
+
font-weight: var(--rel-body-lg-medium-font-weight);
|
|
408
455
|
}
|
|
409
456
|
|
|
410
457
|
.checkbox-option {
|
|
@@ -413,139 +460,24 @@ export class RelSelect extends LitElement {
|
|
|
413
460
|
|
|
414
461
|
.checkbox-option:hover,
|
|
415
462
|
.checkbox-option.highlighted {
|
|
416
|
-
background: var(--rel-select-option-hover,
|
|
463
|
+
background: var(--rel-select-option-hover, var(--rel-bg-neutral-elevated-1));
|
|
417
464
|
}
|
|
418
465
|
|
|
419
466
|
.select-all-row {
|
|
420
|
-
border-bottom: 1px solid var(--rel-select-divider,
|
|
467
|
+
border-bottom: 1px solid var(--rel-select-divider, var(--rel-border-subtle));
|
|
421
468
|
padding: 12px;
|
|
422
469
|
}
|
|
423
470
|
|
|
424
471
|
.select-empty {
|
|
425
|
-
padding: var(--rel-spacing-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
label, so there's nothing left for these to compete with. */
|
|
433
|
-
:host-context([data-theme="dark"]) .select-label,
|
|
434
|
-
[data-theme="dark"] .select-label {
|
|
435
|
-
color: var(--rel-select-label-color-dark, #f5f5f5);
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
/* :not(.error) — supporting text IS still red on error, and this rule's
|
|
439
|
-
extra :host-context specificity would otherwise outrank the
|
|
440
|
-
theme-agnostic .select-support.error rule. */
|
|
441
|
-
:host-context([data-theme="dark"]) .select-wrapper:not(.error) .select-support,
|
|
442
|
-
[data-theme="dark"] .select-wrapper:not(.error) .select-support {
|
|
443
|
-
color: var(--rel-select-supporting-color-dark, #b3b3b3);
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
:host-context([data-theme="dark"]) .select-wrapper.focused .floating-label,
|
|
447
|
-
[data-theme="dark"] .select-wrapper.focused .floating-label,
|
|
448
|
-
:host-context([data-theme="dark"]) .select-wrapper.has-value .floating-label,
|
|
449
|
-
[data-theme="dark"] .select-wrapper.has-value .floating-label,
|
|
450
|
-
:host-context([data-theme="dark"]) .select-wrapper.open .floating-label,
|
|
451
|
-
[data-theme="dark"] .select-wrapper.open .floating-label {
|
|
452
|
-
color: var(--rel-select-label-color-dark, #f5f5f5);
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/* Background only here — kept unconditional so error-state triggers
|
|
456
|
-
still get the right dark background. border-color is split into its
|
|
457
|
-
own :not(.error) rule below: this rule's specificity (with the extra
|
|
458
|
-
:host-context) ties or beats the theme-agnostic error-border rule, and
|
|
459
|
-
since it's declared later in the file, an unconditional border-color
|
|
460
|
-
here would win the tie and show the default dark border instead of red
|
|
461
|
-
— regardless of open/focus state, i.e. even at rest. */
|
|
462
|
-
:host-context([data-theme="dark"]) .select-trigger,
|
|
463
|
-
[data-theme="dark"] .select-trigger,
|
|
464
|
-
:host-context([data-theme="dark"]) .floating-label,
|
|
465
|
-
[data-theme="dark"] .floating-label {
|
|
466
|
-
background: var(--rel-select-bg-dark, #1a1a1a);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
:host-context([data-theme="dark"]) .select-wrapper:not(.error) .select-trigger,
|
|
470
|
-
[data-theme="dark"] .select-wrapper:not(.error) .select-trigger {
|
|
471
|
-
border-color: var(--rel-select-border-default-dark, #333333);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
/* Own border token, a touch lighter than the trigger's — a shadow alone
|
|
475
|
-
barely registers on a dark background, so the panel leans more on this
|
|
476
|
-
border to separate itself from the page behind it. */
|
|
477
|
-
:host-context([data-theme="dark"]) .select-listbox,
|
|
478
|
-
[data-theme="dark"] .select-listbox {
|
|
479
|
-
background: var(--rel-select-bg-dark, #1a1a1a);
|
|
480
|
-
border-color: var(--rel-select-menu-border-dark, #454545);
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
:host-context([data-theme="dark"]) .select-wrapper.disabled .select-trigger,
|
|
484
|
-
[data-theme="dark"] .select-wrapper.disabled .select-trigger {
|
|
485
|
-
background: var(--rel-select-bg-disabled-dark, #141414);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
/* :not(.error): same trap as the label rules — this rule's extra
|
|
489
|
-
:host-context specificity would otherwise outrank the theme-agnostic
|
|
490
|
-
.select-wrapper.error .select-trigger rule and show the focus-white
|
|
491
|
-
border instead of error-red the moment an error field is opened. */
|
|
492
|
-
:host-context([data-theme="dark"]) .select-wrapper:not(.error).open .select-trigger,
|
|
493
|
-
[data-theme="dark"] .select-wrapper:not(.error).open .select-trigger,
|
|
494
|
-
:host-context([data-theme="dark"]) .select-wrapper:not(.error) .select-trigger:focus-visible,
|
|
495
|
-
[data-theme="dark"] .select-wrapper:not(.error) .select-trigger:focus-visible {
|
|
496
|
-
border-color: var(--rel-select-border-focus-dark, #f5f5f5);
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
:host-context([data-theme="dark"]) .select-value,
|
|
500
|
-
[data-theme="dark"] .select-value,
|
|
501
|
-
:host-context([data-theme="dark"]) .search-input,
|
|
502
|
-
[data-theme="dark"] .search-input,
|
|
503
|
-
:host-context([data-theme="dark"]) .select-option,
|
|
504
|
-
[data-theme="dark"] .select-option,
|
|
505
|
-
:host-context([data-theme="dark"]) .select-option-check,
|
|
506
|
-
[data-theme="dark"] .select-option-check,
|
|
507
|
-
:host-context([data-theme="dark"]) .icon,
|
|
508
|
-
[data-theme="dark"] .icon {
|
|
509
|
-
color: var(--rel-select-value-color-dark, #f5f5f5);
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
:host-context([data-theme="dark"]) .select-option:hover,
|
|
513
|
-
[data-theme="dark"] .select-option:hover,
|
|
514
|
-
:host-context([data-theme="dark"]) .select-option.highlighted,
|
|
515
|
-
[data-theme="dark"] .select-option.highlighted,
|
|
516
|
-
:host-context([data-theme="dark"]) .checkbox-option:hover,
|
|
517
|
-
[data-theme="dark"] .checkbox-option:hover,
|
|
518
|
-
:host-context([data-theme="dark"]) .checkbox-option.highlighted,
|
|
519
|
-
[data-theme="dark"] .checkbox-option.highlighted {
|
|
520
|
-
background: var(--rel-select-option-hover-dark, #333333);
|
|
521
|
-
}
|
|
522
|
-
|
|
523
|
-
:host-context([data-theme="dark"]) .select-search,
|
|
524
|
-
[data-theme="dark"] .select-search {
|
|
525
|
-
background: var(--rel-select-bg-dark, #1a1a1a);
|
|
526
|
-
border-color: var(--rel-select-divider-dark, #333333);
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
:host-context([data-theme="dark"]) .select-all-row,
|
|
530
|
-
[data-theme="dark"] .select-all-row {
|
|
531
|
-
border-color: var(--rel-select-divider-dark, #333333);
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
:host-context([data-theme="dark"]) .select-value.placeholder,
|
|
535
|
-
[data-theme="dark"] .select-value.placeholder,
|
|
536
|
-
:host-context([data-theme="dark"]) .floating-label,
|
|
537
|
-
[data-theme="dark"] .floating-label,
|
|
538
|
-
:host-context([data-theme="dark"]) .search-input::placeholder,
|
|
539
|
-
[data-theme="dark"] .search-input::placeholder,
|
|
540
|
-
:host-context([data-theme="dark"]) .select-empty,
|
|
541
|
-
[data-theme="dark"] .select-empty {
|
|
542
|
-
color: var(--rel-select-placeholder-color-dark, #a3a3a3);
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
:host-context([data-theme="dark"]) .search-input-wrap,
|
|
546
|
-
[data-theme="dark"] .search-input-wrap {
|
|
547
|
-
border-color: var(--rel-select-search-border-dark, #333333);
|
|
472
|
+
padding: var(--rel-spacing-xs) 12px;
|
|
473
|
+
color: var(--rel-select-placeholder-color, var(--rel-text-body));
|
|
474
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
475
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
476
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
477
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
478
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
548
479
|
}
|
|
480
|
+
|
|
549
481
|
`;
|
|
550
482
|
|
|
551
483
|
disconnectedCallback() {
|
|
@@ -854,7 +786,7 @@ export class RelSelect extends LitElement {
|
|
|
854
786
|
return html`
|
|
855
787
|
<div class="${wrapperClasses}">
|
|
856
788
|
${!showFloatingChrome && this.label
|
|
857
|
-
? html`<label class="select-label" for="${this.uniqueId}">${this.label}</label>`
|
|
789
|
+
? html`<label part="label" class="select-label" for="${this.uniqueId}">${this.label}</label>`
|
|
858
790
|
: ""}
|
|
859
791
|
|
|
860
792
|
<div class="select-container">
|
|
@@ -867,7 +799,7 @@ export class RelSelect extends LitElement {
|
|
|
867
799
|
<button
|
|
868
800
|
id="${this.uniqueId}"
|
|
869
801
|
type="button"
|
|
870
|
-
class="select-trigger"
|
|
802
|
+
part="trigger" class="select-trigger"
|
|
871
803
|
role="combobox"
|
|
872
804
|
aria-haspopup="listbox"
|
|
873
805
|
aria-expanded="${this.open}"
|
|
@@ -887,11 +819,11 @@ export class RelSelect extends LitElement {
|
|
|
887
819
|
|
|
888
820
|
${this.multiple
|
|
889
821
|
? this.selectedValues.length > 0
|
|
890
|
-
? html`<span class="select-value">${this.renderChips()}</span>`
|
|
891
|
-
: html`<span class="select-value placeholder">
|
|
822
|
+
? html`<span part="value" class="select-value">${this.renderChips()}</span>`
|
|
823
|
+
: html`<span part="value" class="select-value placeholder">
|
|
892
824
|
<span class="select-value-text">${this.placeholder}</span>
|
|
893
825
|
</span>`
|
|
894
|
-
: html`<span class="select-value ${selectedSingle ? "" : "placeholder"}">
|
|
826
|
+
: html`<span part="value" class="select-value ${selectedSingle ? "" : "placeholder"}">
|
|
895
827
|
<span class="select-value-text"
|
|
896
828
|
>${selectedSingle ? selectedSingle.label : this.placeholder}</span
|
|
897
829
|
>
|
|
@@ -906,7 +838,7 @@ export class RelSelect extends LitElement {
|
|
|
906
838
|
</div>
|
|
907
839
|
|
|
908
840
|
${this.supportingText
|
|
909
|
-
? html`<span class="select-support ${this.state === "error" ? "error" : ""}">
|
|
841
|
+
? html`<span part="helper" class="select-support ${this.state === "error" ? "error" : ""}">
|
|
910
842
|
${this.supportingText}
|
|
911
843
|
</span>`
|
|
912
844
|
: ""}
|
|
@@ -914,7 +846,7 @@ export class RelSelect extends LitElement {
|
|
|
914
846
|
|
|
915
847
|
<div
|
|
916
848
|
id="${listboxId}"
|
|
917
|
-
class="select-listbox"
|
|
849
|
+
part="panel list" class="select-listbox"
|
|
918
850
|
role="listbox"
|
|
919
851
|
aria-multiselectable="${this.multiple}"
|
|
920
852
|
aria-label="${this.label || "Options"}"
|
|
@@ -926,7 +858,7 @@ export class RelSelect extends LitElement {
|
|
|
926
858
|
<div class="search-input-wrap">
|
|
927
859
|
<rel-icon name="search" size="${this.searchIconSize}" class="icon"></rel-icon>
|
|
928
860
|
<input
|
|
929
|
-
class="search-input"
|
|
861
|
+
part="input" class="search-input"
|
|
930
862
|
type="text"
|
|
931
863
|
placeholder="${this.searchPlaceholder}"
|
|
932
864
|
.value="${this.searchValue}"
|
|
@@ -987,7 +919,7 @@ export class RelSelect extends LitElement {
|
|
|
987
919
|
(option, index) => html`
|
|
988
920
|
<div
|
|
989
921
|
id="${this.uniqueId}-option-${index}"
|
|
990
|
-
class="select-option ${index === this.highlightedIndex ? "highlighted" : ""}"
|
|
922
|
+
part="option" class="select-option ${index === this.highlightedIndex ? "highlighted" : ""}"
|
|
991
923
|
role="option"
|
|
992
924
|
aria-selected="${option.value === this.selected}"
|
|
993
925
|
@mousedown="${(e: Event) => e.preventDefault()}"
|
|
@@ -162,24 +162,24 @@ sheet.setOpen(nextOpen: boolean, reason?: string): void
|
|
|
162
162
|
- `--sheet-transition-timing`: `cubic-bezier(0.32, 0.72, 0, 1)`
|
|
163
163
|
|
|
164
164
|
### Color Tokens
|
|
165
|
-
- `--rel-
|
|
166
|
-
- `--rel-
|
|
167
|
-
- `--rel-
|
|
168
|
-
- `--rel-
|
|
169
|
-
- `--rel-
|
|
165
|
+
- `--rel-bg-surface` - Panel background
|
|
166
|
+
- `--rel-text-label` - Title and close button color
|
|
167
|
+
- `--rel-text-body` - Description color
|
|
168
|
+
- `--rel-bg-surface-elevated` - Close button hover background
|
|
169
|
+
- `--rel-border-default` - Header/footer borders
|
|
170
170
|
- `--rel-overlay-scrim` - Overlay background
|
|
171
|
-
- `--rel-
|
|
171
|
+
- `--rel-bg-info` - Close button focus outline
|
|
172
172
|
|
|
173
173
|
### Shadow Tokens
|
|
174
174
|
- `--rel-shadows-shadow-500` - Panel shadow
|
|
175
175
|
|
|
176
176
|
### Border Tokens
|
|
177
|
-
- `--rel-
|
|
177
|
+
- `--rel-border-radius-md` - Panel border radius (top corners for bottom, etc.)
|
|
178
178
|
|
|
179
179
|
### Spacing Tokens
|
|
180
|
-
- `--rel-spacing-
|
|
181
|
-
- `--rel-spacing-
|
|
182
|
-
- `--rel-spacing-
|
|
180
|
+
- `--rel-spacing-lg` - Panel content padding
|
|
181
|
+
- `--rel-spacing-md` - Header/footer padding, close button positioning
|
|
182
|
+
- `--rel-spacing-xs` - Close button padding
|
|
183
183
|
|
|
184
184
|
## Accessibility
|
|
185
185
|
- Panel uses `role="dialog"` and `aria-modal`
|