@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,6 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
2
  import { customElement, property, query } from "lit/decorators.js";
3
- import "../../styles/vars-v2.css";
4
3
  import "@reliability-design/icons/rel-icon";
5
4
 
6
5
  export type ModalSide = "top" | "bottom" | "center";
@@ -14,6 +13,13 @@ export class RelModal extends LitElement {
14
13
  @property({ type: Boolean }) dismissible = true;
15
14
  @property({ type: Boolean }) modal = true;
16
15
 
16
+ /**
17
+ * Figma "Breakpoint" axis. responsive (default) collapses to a full-width
18
+ * bottom sheet below 480px; web keeps the fixed desktop panel at every size.
19
+ */
20
+ @property({ type: String, reflect: true })
21
+ breakpoint: "responsive" | "web" = "responsive";
22
+
17
23
  @query(".overlay") private overlayElement!: HTMLElement;
18
24
 
19
25
  private previousFocus: HTMLElement | null = null;
@@ -22,6 +28,7 @@ export class RelModal extends LitElement {
22
28
 
23
29
  static styles = css`
24
30
  :host {
31
+ color: var(--rel-text-default);
25
32
  --modal-transition-duration: 0.3s;
26
33
  --modal-transition-timing: cubic-bezier(0.32, 0.72, 0, 1);
27
34
  }
@@ -61,13 +68,13 @@ export class RelModal extends LitElement {
61
68
 
62
69
  .panel {
63
70
  position: absolute;
64
- background: var(--rel-color-bg-primary);
71
+ background: var(--rel-bg-surface);
65
72
  box-shadow: var(--rel-shadows-shadow-500);
66
73
  display: flex;
67
74
  flex-direction: column;
68
75
  overflow: hidden;
69
76
  outline: none;
70
- font-family: var(--rel-fontFamilies-primary);
77
+ font-family: var(--rel-fonts-font-family);
71
78
  width: clamp(360px, 49vw, 708px);
72
79
  left: 50%;
73
80
  transition: transform var(--modal-transition-duration) var(--modal-transition-timing),
@@ -79,7 +86,7 @@ export class RelModal extends LitElement {
79
86
  left: 50%;
80
87
  width: clamp(360px, 49vw, 708px);
81
88
  max-height: calc(100vh - 96px);
82
- border-radius: var(--rel-borders-radius-border-radius-200);
89
+ border-radius: var(--rel-border-radius-sm);
83
90
  transform: translateX(-50%) translateY(calc(100% + 48px));
84
91
  }
85
92
 
@@ -92,7 +99,7 @@ export class RelModal extends LitElement {
92
99
  left: 50%;
93
100
  width: clamp(360px, 49vw, 708px);
94
101
  max-height: calc(100vh - 96px);
95
- border-radius: var(--rel-borders-radius-border-radius-200);
102
+ border-radius: var(--rel-border-radius-sm);
96
103
  transform: translateX(-50%) translateY(calc(-100% - 48px));
97
104
  }
98
105
 
@@ -105,7 +112,7 @@ export class RelModal extends LitElement {
105
112
  left: 50%;
106
113
  width: clamp(360px, 49vw, 708px);
107
114
  max-height: calc(100vh - 96px);
108
- border-radius: var(--rel-borders-radius-border-radius-200);
115
+ border-radius: var(--rel-border-radius-sm);
109
116
  transform: translate(-50%, -50%) scale(0.96);
110
117
  opacity: 0;
111
118
  }
@@ -115,12 +122,38 @@ export class RelModal extends LitElement {
115
122
  opacity: 1;
116
123
  }
117
124
 
125
+ /* Figma Breakpoint=Responsive: below 480px every side collapses to a
126
+ full-width bottom sheet. Breakpoint=Web keeps the desktop panel. */
127
+ @media (max-width: 480px) {
128
+ :host([breakpoint="responsive"]) .panel,
129
+ :host([breakpoint="responsive"]) .panel[data-side="top"],
130
+ :host([breakpoint="responsive"]) .panel[data-side="center"],
131
+ :host([breakpoint="responsive"]) .panel[data-side="bottom"] {
132
+ width: 100%;
133
+ left: 0;
134
+ right: 0;
135
+ top: auto;
136
+ bottom: 0;
137
+ max-height: 90vh;
138
+ border-radius: var(--rel-border-radius-md) var(--rel-border-radius-md) 0 0;
139
+ opacity: 1;
140
+ transform: translateY(100%);
141
+ }
142
+
143
+ :host([breakpoint="responsive"]) .modal-container.open .panel,
144
+ :host([breakpoint="responsive"]) .modal-container.open .panel[data-side="top"],
145
+ :host([breakpoint="responsive"]) .modal-container.open .panel[data-side="center"],
146
+ :host([breakpoint="responsive"]) .modal-container.open .panel[data-side="bottom"] {
147
+ transform: translateY(0);
148
+ }
149
+ }
150
+
118
151
  .header {
119
152
  display: flex;
120
153
  align-items: flex-start;
121
154
  justify-content: space-between;
122
- padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
123
- border-bottom: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
155
+ padding: var(--rel-spacing-md) var(--rel-spacing-lg);
156
+ border-bottom: var(--rel-stroke-sm) solid var(--rel-border-default);
124
157
  flex-shrink: 0;
125
158
  }
126
159
 
@@ -129,52 +162,78 @@ export class RelModal extends LitElement {
129
162
  }
130
163
 
131
164
  .header-text {
165
+ gap: var(--rel-spacing-2xs);
132
166
  display: flex;
133
167
  flex-direction: column;
134
- gap: var(--rel-spacing-space-2xs);
168
+ gap: var(--rel-spacing-2xs);
135
169
  }
136
170
 
137
171
  .title {
138
- font-size: var(--rel-fontSizes-lg);
139
- font-weight: var(--rel-fontWeights-semibold);
140
- color: var(--rel-color-text-heading);
172
+ color: var(--rel-text-label);
141
173
  margin: 0;
174
+
175
+ font-family: var(--rel-headings-lg-font-family);
176
+
177
+ font-weight: var(--rel-headings-lg-font-weight);
178
+
179
+ font-size: var(--rel-headings-lg-font-size);
180
+
181
+ line-height: var(--rel-headings-lg-line-height);
182
+
183
+ letter-spacing: var(--rel-headings-lg-letter-spacing);
184
+
142
185
  }
143
186
 
144
187
  .description {
145
- font-size: var(--rel-fontSizes-sm);
146
- color: var(--rel-color-text-primary);
188
+ color: var(--rel-text-body);
147
189
  margin: 0;
190
+
191
+ font-family: var(--rel-body-lg-regular-font-family);
192
+
193
+ font-weight: var(--rel-body-lg-regular-font-weight);
194
+
195
+ font-size: var(--rel-body-lg-regular-font-size);
196
+
197
+ line-height: var(--rel-body-lg-regular-line-height);
198
+
199
+ letter-spacing: var(--rel-body-lg-regular-letter-spacing);
200
+
201
+ }
202
+
203
+ /* Emphasised inline text in slotted content (Figma body-lg-medium) */
204
+ .content ::slotted(strong),
205
+ .content ::slotted(b) {
206
+ font-weight: var(--rel-body-lg-medium-font-weight);
148
207
  }
149
208
 
150
209
  .close-button {
151
210
  background: transparent;
152
211
  border: none;
153
212
  cursor: pointer;
154
- padding: var(--rel-spacing-space-2xs);
213
+ padding: var(--rel-spacing-2xs);
155
214
  display: flex;
156
215
  align-items: center;
157
216
  justify-content: center;
158
217
  align-self: flex-start;
159
218
  flex-shrink: 0;
160
- border-radius: var(--rel-borders-radius-border-radius-100);
161
- color: var(--rel-color-text-primary);
219
+ border-radius: var(--rel-border-radius-xs);
220
+ color: var(--rel-text-default);
162
221
  transition: background 0.15s ease;
163
222
  }
164
223
 
165
224
  .close-button:hover {
166
- background: var(--rel-color-bg-tertiary);
225
+ background: var(--rel-bg-neutral-elevated-1);
167
226
  }
168
227
 
169
228
  .close-button:focus-visible {
170
- outline: 2px solid var(--rel-color-border-focus);
229
+ outline: 2px solid var(--rel-border-focus);
171
230
  outline-offset: 2px;
172
231
  }
173
232
 
174
233
  .content {
175
234
  flex: 1;
176
235
  overflow-y: auto;
177
- padding: var(--rel-spacing-space-lg);
236
+ padding: var(--rel-spacing-xl);
178
237
  }
179
238
 
180
239
  .footer {
@@ -184,10 +243,10 @@ export class RelModal extends LitElement {
184
243
  :host([has-footer]) .footer {
185
244
  display: flex;
186
245
  flex-shrink: 0;
187
- padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
188
- border-top: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
246
+ padding: var(--rel-spacing-md) var(--rel-spacing-lg);
247
+ border-top: var(--rel-stroke-sm) solid var(--rel-border-default);
189
248
  justify-content: flex-end;
190
- gap: var(--rel-spacing-space-xs);
249
+ gap: var(--rel-spacing-xs);
191
250
  }
192
251
 
193
252
  @media (prefers-reduced-motion: reduce) {
@@ -149,8 +149,8 @@ None exposed.
149
149
  - `--sidebar-transition-timing`: `cubic-bezier(0.4, 0, 0.2, 1)`
150
150
 
151
151
  ### Color Tokens
152
- - `--rel-surface-secondary` - Sidebar background (`#fafafa`)
153
- - `--rel-text-primary` - Text color
152
+ - `--rel-bg-surface-elevated` - Sidebar background (`#fafafa`)
153
+ - `--rel-text-default` - Text color
154
154
  - `--rel-border-default` - Border color
155
155
  - `--rel-overlay-scrim` - Overlay background (`rgba(0, 0, 0, 0.5)`)
156
156
 
@@ -158,9 +158,9 @@ None exposed.
158
158
  - `--rel-shadows-shadow-400` - Floating variant shadow
159
159
 
160
160
  ### Other Tokens
161
- - `--rel-borders-radius-border-radius-300` - Floating variant border radius
162
- - `--rel-spacing-space-md` - Floating variant inset, header/footer padding
163
- - `--rel-spacing-space-2xs` - Used in various layouts
161
+ - `--rel-border-radius-md` - Floating variant border radius
162
+ - `--rel-spacing-md` - Floating variant inset, header/footer padding
163
+ - `--rel-spacing-2xs` - Used in various layouts
164
164
 
165
165
  ## Accessibility
166
166
  - Sidebar uses `role="navigation"`
@@ -11,6 +11,12 @@ export type SidebarChangeReason = "trigger" | "rail" | "overlay" | "escape" | "s
11
11
  // ============================================================================
12
12
  // rel-sidebar-provider (Root State Manager)
13
13
  // ============================================================================
14
+ /**
15
+ * @deprecated The rel-sidebar family has no Figma design in RelDS 2.0 and is
16
+ * excluded from the parity contract. Compose sidebars from rel-drawer,
17
+ * rel-menu and rel-resizable instead. It remains exported for compatibility
18
+ * but will be removed in a future major version.
19
+ */
14
20
  @customElement("rel-sidebar-provider")
15
21
  export class RelSidebarProvider extends LitElement {
16
22
  @property({ type: Boolean, reflect: true }) open?: boolean;
@@ -40,6 +46,7 @@ export class RelSidebarProvider extends LitElement {
40
46
 
41
47
  static styles = css`
42
48
  :host {
49
+ color: var(--rel-text-default);
43
50
  display: contents;
44
51
  }
45
52
  `;
@@ -335,8 +342,8 @@ export class RelSidebar extends LitElement {
335
342
  top: 0;
336
343
  bottom: 0;
337
344
  z-index: 1000;
338
- background: var(--rel-surface-secondary, #fafafa);
339
- color: var(--rel-text-primary, #333);
345
+ background: var(--rel-bg-surface-elevated);
346
+ color: var(--rel-text-default);
340
347
  display: flex;
341
348
  flex-direction: column;
342
349
  transition: transform var(--sidebar-transition-duration)
@@ -351,7 +358,7 @@ export class RelSidebar extends LitElement {
351
358
  /* Left side */
352
359
  .sidebar-container[data-side="left"] {
353
360
  left: 0;
354
- border-right: 1px solid var(--rel-border-default, #ddd);
361
+ border-right: 1px solid var(--rel-border-default);
355
362
  }
356
363
 
357
364
  .sidebar-container[data-side="left"].offcanvas-hidden {
@@ -361,7 +368,7 @@ export class RelSidebar extends LitElement {
361
368
  /* Right side */
362
369
  .sidebar-container[data-side="right"] {
363
370
  right: 0;
364
- border-left: 1px solid var(--rel-border-default, #ddd);
371
+ border-left: 1px solid var(--rel-border-default);
365
372
  }
366
373
 
367
374
  .sidebar-container[data-side="right"].offcanvas-hidden {
@@ -370,20 +377,20 @@ export class RelSidebar extends LitElement {
370
377
 
371
378
  /* Floating variant */
372
379
  .sidebar-container.variant-floating {
373
- top: var(--rel-spacing-space-md, 16px);
374
- bottom: var(--rel-spacing-space-md, 16px);
375
- background: var(--rel-surface-secondary, #fafafa);
376
- border: 1px solid var(--rel-border-default, #ddd);
377
- border-radius: var(--rel-borders-radius-border-radius-300, 16px);
380
+ top: var(--rel-spacing-md, 16px);
381
+ bottom: var(--rel-spacing-md, 16px);
382
+ background: var(--rel-bg-surface-elevated);
383
+ border: 1px solid var(--rel-border-default);
384
+ border-radius: var(--rel-border-radius-md, 16px);
378
385
  box-shadow: var(--rel-shadows-shadow-400);
379
386
  }
380
387
 
381
388
  .sidebar-container.variant-floating[data-side="left"] {
382
- left: var(--rel-spacing-space-md, 16px);
389
+ left: var(--rel-spacing-md, 16px);
383
390
  }
384
391
 
385
392
  .sidebar-container.variant-floating[data-side="right"] {
386
- right: var(--rel-spacing-space-md, 16px);
393
+ right: var(--rel-spacing-md, 16px);
387
394
  }
388
395
 
389
396
  /* Inset variant */
@@ -395,11 +402,11 @@ export class RelSidebar extends LitElement {
395
402
  }
396
403
 
397
404
  .sidebar-container.variant-inset[data-side="left"] {
398
- border-right: 1px solid var(--rel-border-default, #ddd);
405
+ border-right: 1px solid var(--rel-border-default);
399
406
  }
400
407
 
401
408
  .sidebar-container.variant-inset[data-side="right"] {
402
- border-left: 1px solid var(--rel-border-default, #ddd);
409
+ border-left: 1px solid var(--rel-border-default);
403
410
  }
404
411
 
405
412
  /* Desktop mode - not offcanvas */
@@ -687,27 +694,27 @@ export class RelSidebarTrigger extends LitElement {
687
694
  button {
688
695
  background: none;
689
696
  border: none;
690
- padding: var(--rel-spacing-space-xs, 8px);
697
+ padding: var(--rel-spacing-xs, 8px);
691
698
  margin: 0;
692
699
  cursor: pointer;
693
700
  display: flex;
694
701
  align-items: center;
695
702
  justify-content: center;
696
- border-radius: var(--rel-borders-radius-border-radius-200, 8px);
697
- color: var(--rel-text-heading, #2b2b2b);
703
+ border-radius: var(--rel-border-radius-sm, 8px);
704
+ color: var(--rel-text-label);
698
705
  transition: background 0.15s ease;
699
706
  }
700
707
 
701
708
  button:hover {
702
- background: var(--rel-surface-surface, #f5f5f5);
709
+ background: var(--rel-bg-neutral-elevated-1);
703
710
  }
704
711
 
705
712
  button:active {
706
- background: var(--rel-border-default, #ddd);
713
+ background: var(--rel-border-default);
707
714
  }
708
715
 
709
716
  button:focus-visible {
710
- outline: 2px solid var(--rel-border-info, #0091ea);
717
+ outline: 2px solid var(--rel-border-info);
711
718
  outline-offset: 2px;
712
719
  }
713
720
  `;
@@ -802,10 +809,10 @@ export class RelSidebarHeader extends LitElement {
802
809
  static styles = css`
803
810
  :host {
804
811
  display: block;
805
- padding: var(--rel-spacing-space-md, 16px);
806
- border-bottom: 1px solid var(--rel-border-default, #ddd);
812
+ padding: var(--rel-spacing-md, 16px);
813
+ border-bottom: 1px solid var(--rel-border-default);
807
814
  flex-shrink: 0;
808
- color: var(--rel-text-heading, #2b2b2b);
815
+ color: var(--rel-text-label);
809
816
  }
810
817
  `;
811
818
 
@@ -821,7 +828,7 @@ export class RelSidebarContent extends LitElement {
821
828
  display: block;
822
829
  flex: 1;
823
830
  overflow-y: auto;
824
- padding: var(--rel-spacing-space-sm, 12px) var(--rel-spacing-space-xs, 8px);
831
+ padding: var(--rel-spacing-sm, 12px) var(--rel-spacing-xs, 8px);
825
832
  }
826
833
 
827
834
  /* Scrollbar styling */
@@ -832,7 +839,7 @@ export class RelSidebarContent extends LitElement {
832
839
  background: transparent;
833
840
  }
834
841
  :host::-webkit-scrollbar-thumb {
835
- background: var(--rel-border-default, #ddd);
842
+ background: var(--rel-border-default);
836
843
  border-radius: 2px;
837
844
  }
838
845
  `;
@@ -847,10 +854,10 @@ export class RelSidebarFooter extends LitElement {
847
854
  static styles = css`
848
855
  :host {
849
856
  display: block;
850
- padding: var(--rel-spacing-space-md, 16px);
851
- border-top: 1px solid var(--rel-border-default, #ddd);
857
+ padding: var(--rel-spacing-md, 16px);
858
+ border-top: 1px solid var(--rel-border-default);
852
859
  flex-shrink: 0;
853
- color: var(--rel-text-primary, #333);
860
+ color: var(--rel-text-default);
854
861
  }
855
862
  `;
856
863
 
@@ -864,7 +871,7 @@ export class RelSidebarGroup extends LitElement {
864
871
  static styles = css`
865
872
  :host {
866
873
  display: block;
867
- margin-bottom: var(--rel-spacing-space-md, 16px);
874
+ margin-bottom: var(--rel-spacing-md, 16px);
868
875
  }
869
876
 
870
877
  :host(:last-child) {
@@ -881,20 +888,26 @@ export class RelSidebarGroup extends LitElement {
881
888
  export class RelSidebarGroupLabel extends LitElement {
882
889
  static styles = css`
883
890
  :host {
884
- display: block;
885
- font-size: var(--rel-fontSizes-xs, 10px);
886
- font-weight: var(--rel-fontWeights-semibold, 600);
887
- color: var(--rel-text-placeholder, #a9a9a9);
888
- text-transform: uppercase;
889
- letter-spacing: 0.05em;
890
- padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-sm, 12px) var(--rel-spacing-space-2xs, 4px);
891
- margin-bottom: var(--rel-spacing-space-2xs, 4px);
891
+ display: block;
892
+ color: var(--rel-text-placeholder);
893
+ text-transform: uppercase;
894
+ padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-sm, 12px) var(--rel-spacing-2xs, 4px);
895
+ margin-bottom: var(--rel-spacing-2xs, 4px);
896
+ font-family: var(--rel-body-xs-semibold-font-family);
897
+ font-weight: var(--rel-body-xs-semibold-font-weight);
898
+ font-size: var(--rel-body-xs-semibold-font-size);
899
+ line-height: var(--rel-body-xs-semibold-line-height);
900
+ letter-spacing: var(--rel-body-xs-semibold-letter-spacing);
892
901
  }
893
902
 
894
903
  :host(.collapsed) {
895
- text-align: center;
896
- font-size: var(--rel-fontSizes-xs, 10px);
897
- padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-2xs, 4px) var(--rel-spacing-space-2xs, 4px);
904
+ text-align: center;
905
+ padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-2xs, 4px) var(--rel-spacing-2xs, 4px);
906
+ font-family: var(--rel-body-xs-regular-font-family);
907
+ font-weight: var(--rel-body-xs-regular-font-weight);
908
+ font-size: var(--rel-body-xs-regular-font-size);
909
+ line-height: var(--rel-body-xs-regular-line-height);
910
+ letter-spacing: var(--rel-body-xs-regular-letter-spacing);
898
911
  }
899
912
  `;
900
913
 
@@ -974,8 +987,8 @@ export class RelSidebarMenuItem extends LitElement {
974
987
  static styles = css`
975
988
  :host {
976
989
  display: block;
977
- margin-bottom: var(--rel-spacing-space-2xs, 4px);
978
- padding: 0 var(--rel-spacing-space-xs, 8px);
990
+ margin-bottom: var(--rel-spacing-2xs, 4px);
991
+ padding: 0 var(--rel-spacing-xs, 8px);
979
992
  }
980
993
  `;
981
994
 
@@ -1004,33 +1017,35 @@ export class RelSidebarMenuButton extends LitElement {
1004
1017
  width: 100%;
1005
1018
  display: flex;
1006
1019
  align-items: center;
1007
- gap: var(--rel-spacing-space-sm, 12px);
1008
- padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-sm, 12px);
1020
+ gap: var(--rel-spacing-sm, 12px);
1021
+ padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-sm, 12px);
1009
1022
  min-height: 40px;
1010
1023
  background: none;
1011
1024
  border: none;
1012
- border-radius: var(--rel-borders-radius-border-radius-200, 8px);
1013
- cursor: pointer;
1014
- font-family: var(--rel-fontFamilies-primary, sans-serif);
1015
- font-size: var(--rel-fontSizes-md, 14px);
1016
- font-weight: var(--rel-fontWeights-medium, 500);
1017
- color: var(--rel-text-primary, #333);
1025
+ border-radius: var(--rel-border-radius-sm, 8px);
1026
+ cursor: pointer;
1027
+ color: var(--rel-text-default);
1018
1028
  transition: background 0.15s ease, color 0.15s ease;
1019
1029
  text-align: left;
1020
- position: relative;
1030
+ position: relative;
1031
+ font-family: var(--rel-body-md-medium-font-family);
1032
+ font-weight: var(--rel-body-md-medium-font-weight);
1033
+ font-size: var(--rel-body-md-medium-font-size);
1034
+ line-height: var(--rel-body-md-medium-line-height);
1035
+ letter-spacing: var(--rel-body-md-medium-letter-spacing);
1021
1036
  }
1022
1037
 
1023
1038
  button:hover:not([disabled]) {
1024
- background: var(--rel-surface-surface, #f5f5f5);
1025
- color: var(--rel-text-heading, #2b2b2b);
1039
+ background: var(--rel-bg-neutral-elevated-1);
1040
+ color: var(--rel-text-label);
1026
1041
  }
1027
1042
 
1028
1043
  button:active:not([disabled]) {
1029
- background: var(--rel-border-default, #ddd);
1044
+ background: var(--rel-border-default);
1030
1045
  }
1031
1046
 
1032
1047
  button:focus-visible {
1033
- outline: 2px solid var(--rel-border-info, #0091ea);
1048
+ outline: 2px solid var(--rel-border-info);
1034
1049
  outline-offset: -2px;
1035
1050
  }
1036
1051
 
@@ -1040,9 +1055,9 @@ export class RelSidebarMenuButton extends LitElement {
1040
1055
  }
1041
1056
 
1042
1057
  button.active {
1043
- background: var(--rel-surface-surface, #f5f5f5);
1044
- color: var(--rel-text-heading, #2b2b2b);
1045
- font-weight: var(--rel-fontWeights-semibold, 600);
1058
+ background: var(--rel-bg-neutral-elevated-1);
1059
+ color: var(--rel-text-label);
1060
+ font-weight: var(--rel-fonts-weight-body-semibold, 600);
1046
1061
  }
1047
1062
 
1048
1063
  button.active::before {
@@ -1053,13 +1068,13 @@ export class RelSidebarMenuButton extends LitElement {
1053
1068
  transform: translateY(-50%);
1054
1069
  width: 3px;
1055
1070
  height: 20px;
1056
- background: var(--rel-colors-primary-500, #0091ea);
1071
+ background: var(--rel-bg-info);
1057
1072
  border-radius: 0 2px 2px 0;
1058
1073
  }
1059
1074
 
1060
1075
  button.collapsed {
1061
1076
  justify-content: center;
1062
- padding: var(--rel-spacing-space-xs, 8px);
1077
+ padding: var(--rel-spacing-xs, 8px);
1063
1078
  min-height: 40px;
1064
1079
  }
1065
1080
 
@@ -1068,7 +1083,7 @@ export class RelSidebarMenuButton extends LitElement {
1068
1083
  }
1069
1084
 
1070
1085
  button.collapsed.active {
1071
- background: var(--rel-surface-surface, #f5f5f5);
1086
+ background: var(--rel-bg-neutral-elevated-1);
1072
1087
  }
1073
1088
 
1074
1089
  .icon {
@@ -20,6 +20,7 @@ export class RelSkeleton extends LitElement {
20
20
 
21
21
  static styles = css`
22
22
  :host {
23
+ color: var(--rel-text-default);
23
24
  display: block;
24
25
  }
25
26
 
@@ -35,8 +36,8 @@ export class RelSkeleton extends LitElement {
35
36
  /* ── Base skeleton surface ── */
36
37
  .skeleton-shape,
37
38
  .skeleton-bar {
38
- background: var(--rel-skeleton-color, #c8c8c8);
39
- border-radius: 4px;
39
+ background: var(--rel-skeleton-color, var(--rel-bg-neutral-elevated-3));
40
+ border-radius: var(--rel-border-radius-xs);
40
41
  }
41
42
 
42
43
  /* ── Lines layout ── */
@@ -91,20 +92,14 @@ export class RelSkeleton extends LitElement {
91
92
  :host([animation="shimmer"]) .skeleton-bar {
92
93
  background: linear-gradient(
93
94
  90deg,
94
- var(--rel-skeleton-color, #c8c8c8) 25%,
95
- var(--rel-skeleton-highlight, #e2e2e2) 50%,
96
- var(--rel-skeleton-color, #c8c8c8) 75%
95
+ var(--rel-skeleton-color, var(--rel-bg-neutral-elevated-3)) 25%,
96
+ var(--rel-skeleton-highlight, var(--rel-bg-neutral-elevated-2)) 50%,
97
+ var(--rel-skeleton-color, var(--rel-bg-neutral-elevated-3)) 75%
97
98
  );
98
99
  background-size: 200% 100%;
99
100
  animation: rel-skeleton-shimmer 1.5s linear infinite;
100
101
  }
101
102
 
102
- /* ── Dark mode ── */
103
- :host-context([data-theme="dark"]) {
104
- --rel-skeleton-color: #2a2a2a;
105
- --rel-skeleton-highlight: #3d3d3d;
106
- }
107
-
108
103
  /* ── Respect reduced-motion preference ── */
109
104
  @media (prefers-reduced-motion: reduce) {
110
105
  .skeleton-shape,
@@ -122,13 +117,13 @@ export class RelSkeleton extends LitElement {
122
117
  return html`
123
118
  <div class="skeleton-lines">
124
119
  ${Array.from({ length: count }, (_, i) => html`
125
- <div class="skeleton-bar ${i === count - 1 && count > 1 ? "is-last" : ""}"></div>
120
+ <div part="base" class="skeleton-bar ${i === count - 1 && count > 1 ? "is-last" : ""}"></div>
126
121
  `)}
127
122
  </div>
128
123
  `;
129
124
  }
130
125
 
131
- return html`<div class="skeleton-shape"></div>`;
126
+ return html`<div part="base" class="skeleton-shape"></div>`;
132
127
  }
133
128
  }
134
129
 
@@ -86,21 +86,21 @@ The component defines these CSS custom properties on `:host` which can be overri
86
86
  - `--thumb-halo-color` - Color of thumb halo (default: `--rel-border-default`)
87
87
  - `--tick-size` - Diameter of tick marks (default: `4px`)
88
88
  - `--shadow` - Thumb drop shadow (default: `0 2px 4px rgba(0,0,0,0.25)`)
89
- - `--halo` - Additional halo shadow (default: `0 2px 0 var(--rel-surface-surface), 0 6px 10px rgba(0,0,0,0.07)`)
89
+ - `--halo` - Additional halo shadow (default: `0 2px 0 var(--rel-bg-neutral-elevated-1), 0 6px 10px rgba(0,0,0,0.07)`)
90
90
  - `--marker-width` - Width of value bubble (default: `24px`)
91
91
  - `--marker-height` - Height of value bubble (default: `28px`)
92
92
 
93
93
  ### Design Token References
94
- - `--rel-fontFamilies-primary` - Font family
95
- - `--rel-colors-gray-border` - Inactive track color
96
- - `--rel-colors-black` - Active track and thumb color
97
- - `--rel-colors-white` - Used in dotted track and tick marks
98
- - `--rel-colors-gray-primary` - Tick mark color (inactive)
99
- - `--rel-colors-gray-heading` - Tick label color
100
- - `--rel-colors-gray-placeholder` - Disabled active track and tick colors
94
+ - `--rel-fonts-font-family` - Font family
95
+ - `--rel-border-default` - Inactive track color
96
+ - `--rel-text-default` - Active track and thumb color
97
+ - `--rel-bg-surface` - Used in dotted track and tick marks
98
+ - `--rel-text-default` - Tick mark color (inactive)
99
+ - `--rel-text-label` - Tick label color
100
+ - `--rel-text-placeholder` - Disabled active track and tick colors
101
101
  - `--rel-border-default` - Default thumb halo color
102
- - `--rel-surface-surface` - Disabled track background, used in dotted pattern
103
- - `--rel-fontSizes-xs` - Tick label font size
102
+ - `--rel-bg-neutral-elevated-1` - Disabled track background, used in dotted pattern
103
+ - `--rel-body-xs-regular-font-size` - Tick label font size
104
104
 
105
105
  ## Accessibility
106
106
  - Uses native `<input type="range">` for full keyboard and screen reader support