@reliability-design/web 1.3.1 → 1.4.1

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 (124) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/components/rel-accordion/README.md +13 -13
  3. package/dist/components/rel-accordion/rel-accordion.ts +80 -45
  4. package/dist/components/rel-alert/README.md +15 -15
  5. package/dist/components/rel-alert/rel-alert.ts +149 -158
  6. package/dist/components/rel-avatar/README.md +15 -15
  7. package/dist/components/rel-avatar/rel-avatar.ts +42 -38
  8. package/dist/components/rel-badge/README.md +5 -5
  9. package/dist/components/rel-badge/rel-badge.ts +46 -11
  10. package/dist/components/rel-breadcrumb/README.md +7 -7
  11. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
  12. package/dist/components/rel-button/README.md +20 -20
  13. package/dist/components/rel-button/rel-button.ts +292 -105
  14. package/dist/components/rel-calendar/README.md +5 -5
  15. package/dist/components/rel-calendar/rel-calendar.ts +68 -45
  16. package/dist/components/rel-card/README.md +6 -6
  17. package/dist/components/rel-card/rel-card.ts +88 -35
  18. package/dist/components/rel-cardmedia/README.md +9 -9
  19. package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
  20. package/dist/components/rel-carousel/README.md +3 -3
  21. package/dist/components/rel-carousel/rel-carousel.ts +174 -90
  22. package/dist/components/rel-chart/README.md +8 -8
  23. package/dist/components/rel-chart/rel-chart.ts +59 -41
  24. package/dist/components/rel-checkbox/README.md +7 -7
  25. package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
  26. package/dist/components/rel-chip/README.md +16 -16
  27. package/dist/components/rel-chip/rel-chip.ts +143 -111
  28. package/dist/components/rel-container/README.md +11 -11
  29. package/dist/components/rel-container/rel-container.ts +35 -9
  30. package/dist/components/rel-date-picker/README.md +43 -7
  31. package/dist/components/rel-date-picker/date-format.test.ts +43 -0
  32. package/dist/components/rel-date-picker/date-format.ts +47 -0
  33. package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
  34. package/dist/components/rel-divider/README.md +9 -9
  35. package/dist/components/rel-divider/rel-divider.ts +10 -9
  36. package/dist/components/rel-drawer/README.md +1 -1
  37. package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
  38. package/dist/components/rel-drawer/rel-drawer.ts +88 -25
  39. package/dist/components/rel-kbd/README.md +20 -20
  40. package/dist/components/rel-kbd/rel-kbd.ts +119 -25
  41. package/dist/components/rel-layout/README.md +1 -1
  42. package/dist/components/rel-layout/rel-layout.ts +2 -2
  43. package/dist/components/rel-menu/README.md +15 -15
  44. package/dist/components/rel-menu/rel-menu.ts +155 -88
  45. package/dist/components/rel-menubar/README.md +20 -20
  46. package/dist/components/rel-menubar/rel-menubar.ts +47 -31
  47. package/dist/components/rel-nav-menu/README.md +21 -21
  48. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
  49. package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
  50. package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
  51. package/dist/components/rel-navbar/README.md +7 -7
  52. package/dist/components/rel-navbar/rel-navbar.ts +12 -11
  53. package/dist/components/rel-otp/README.md +3 -3
  54. package/dist/components/rel-otp/rel-otp.ts +46 -30
  55. package/dist/components/rel-pagination/README.md +18 -18
  56. package/dist/components/rel-pagination/rel-pagination.ts +141 -90
  57. package/dist/components/rel-popover/README.md +13 -13
  58. package/dist/components/rel-popover/rel-popover-content.ts +39 -14
  59. package/dist/components/rel-popover/rel-popover.ts +18 -7
  60. package/dist/components/rel-progress/README.md +5 -5
  61. package/dist/components/rel-progress/rel-progress.ts +16 -12
  62. package/dist/components/rel-radio/README.md +9 -9
  63. package/dist/components/rel-radio/rel-radio.ts +64 -50
  64. package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
  65. package/dist/components/rel-resizable/README.md +4 -4
  66. package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
  67. package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
  68. package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
  69. package/dist/components/rel-segmented-button/README.md +10 -10
  70. package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
  71. package/dist/components/rel-select/README.md +14 -14
  72. package/dist/components/rel-select/rel-select.ts +120 -188
  73. package/dist/components/rel-sheet/README.md +10 -10
  74. package/dist/components/rel-sheet/rel-sheet.ts +82 -23
  75. package/dist/components/rel-sidebar/README.md +5 -5
  76. package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
  77. package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
  78. package/dist/components/rel-slider/README.md +10 -10
  79. package/dist/components/rel-slider/rel-slider.ts +230 -57
  80. package/dist/components/rel-snackbar/README.md +9 -9
  81. package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
  82. package/dist/components/rel-stepper/README.md +10 -10
  83. package/dist/components/rel-stepper/rel-stepper.ts +110 -46
  84. package/dist/components/rel-switch/README.md +5 -5
  85. package/dist/components/rel-switch/rel-switch.ts +23 -12
  86. package/dist/components/rel-tab/README.md +13 -13
  87. package/dist/components/rel-tab/rel-tab.ts +63 -19
  88. package/dist/components/rel-table/README.md +7 -7
  89. package/dist/components/rel-table/rel-table-body.ts +2 -1
  90. package/dist/components/rel-table/rel-table-caption.ts +10 -7
  91. package/dist/components/rel-table/rel-table-cell.ts +7 -6
  92. package/dist/components/rel-table/rel-table-footer.ts +4 -3
  93. package/dist/components/rel-table/rel-table-head.ts +11 -9
  94. package/dist/components/rel-table/rel-table-header.ts +2 -1
  95. package/dist/components/rel-table/rel-table-row.ts +5 -4
  96. package/dist/components/rel-table/rel-table.ts +16 -7
  97. package/dist/components/rel-textfield/README.md +11 -11
  98. package/dist/components/rel-textfield/rel-textfield.ts +218 -92
  99. package/dist/components/rel-toast/README.md +11 -11
  100. package/dist/components/rel-toast/rel-toast.ts +33 -30
  101. package/dist/components/rel-tooltip/README.md +7 -7
  102. package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
  103. package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
  104. package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
  105. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
  106. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
  107. package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
  108. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
  109. package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
  110. package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
  111. package/dist/components/rel-topbar/rel-topbar.ts +31 -29
  112. package/dist/index.d.mts +159 -39
  113. package/dist/index.d.ts +159 -39
  114. package/dist/index.js +3600 -2269
  115. package/dist/index.js.map +1 -1
  116. package/dist/index.mjs +3930 -2600
  117. package/dist/index.mjs.map +1 -1
  118. package/dist/styles/vars.css +866 -363
  119. package/dist/vars-BYCEEKWJ.css +866 -0
  120. package/package.json +5 -3
  121. package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
  122. package/dist/styles/vars-v2.css +0 -525
  123. package/dist/vars-F54UGCHM.css +0 -363
  124. 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-fontFamilies-primary);
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-space-2xs);
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
- font-size: var(--rel-fontSizes-sm, 14px);
117
- font-weight: var(--rel-fontWeights-regular, 400);
118
- color: var(--rel-select-label-color, #363636);
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, #ffffff);
137
- border: 1px solid var(--rel-select-border-default, #e5e5e5);
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, 4px);
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, #0b0b0b);
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, #ce3131);
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, #fafafa);
165
- border-color: var(--rel-select-border-default, #e5e5e5);
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-space-xs) var(--rel-spacing-space-sm);
179
+ padding: var(--rel-spacing-xs) var(--rel-spacing-sm);
171
180
  min-height: 40px;
172
- font-size: var(--rel-fontSizes-sm, 14px);
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-size: var(--rel-fontSizes-md, 16px);
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-space-md);
199
+ padding: var(--rel-spacing-md);
183
200
  min-height: 56px;
184
- font-size: var(--rel-fontSizes-lg, 18px);
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, #0b0b0b);
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-color-text-disabled, #a3a3a3);
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, #0b0b0b);
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, #757575);
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, #7d7d7d);
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, #ffffff);
278
+ background: var(--rel-select-bg, var(--rel-bg-neutral));
258
279
  padding: 0 4px;
259
- font-size: var(--rel-fontSizes-md, 16px);
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: 12px;
279
- color: var(--rel-select-label-color, #363636);
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, #404040);
324
+ color: var(--rel-select-supporting-color, var(--rel-text-caption));
298
325
  }
299
326
 
300
327
  .select-support.error {
301
- color: var(--rel-select-border-error, #ce3131);
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, #ffffff);
311
- border: 1px solid var(--rel-select-menu-border, #d4d4d4);
312
- border-radius: var(--rel-select-menu-radius, 8px);
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, 0 8px 24px rgba(11, 11, 11, 0.18));
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, #ffffff);
329
- padding: var(--rel-spacing-space-xs);
330
- border-bottom: 1px solid var(--rel-select-divider, #f5f5f5);
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, #e5e5e5);
366
+ border: 1px solid var(--rel-select-search-border, var(--rel-border-default));
340
367
  border-radius: 4px;
341
- padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-sm);
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, #0b0b0b);
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
- font-family: inherit;
358
- font-size: var(--rel-fontSizes-sm, 14px);
359
- color: var(--rel-select-value-color, #0b0b0b);
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, #757575);
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
- font-size: var(--rel-fontSizes-md, 16px);
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-space-xs) 12px;
384
- font-size: var(--rel-fontSizes-md, 16px);
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, #0b0b0b);
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, #ececec);
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-fontWeights-medium);
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, #ececec);
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, #f5f5f5);
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-space-xs) 12px;
426
- font-size: var(--rel-fontSizes-sm, 14px);
427
- color: var(--rel-select-placeholder-color, #757575);
428
- }
429
-
430
- /* Dark mode */
431
- /* No :not(.error) needed here — error no longer recolors label/floating
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-colors-white` - Panel background
166
- - `--rel-colors-gray-heading` - Title and close button color
167
- - `--rel-colors-gray-body` - Description color
168
- - `--rel-colors-gray-surface` - Close button hover background
169
- - `--rel-colors-gray-border` - Header/footer borders
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-colors-primary-500` - Close button focus outline
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-borders-radius-border-radius-300` - Panel border radius (top corners for bottom, etc.)
177
+ - `--rel-border-radius-md` - Panel border radius (top corners for bottom, etc.)
178
178
 
179
179
  ### Spacing Tokens
180
- - `--rel-spacing-space-lg` - Panel content padding
181
- - `--rel-spacing-space-md` - Header/footer padding, close button positioning
182
- - `--rel-spacing-space-xs` - Close button padding
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`