@reliability-design/web 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/components/rel-accordion/README.md +13 -13
  2. package/dist/components/rel-accordion/rel-accordion.ts +80 -45
  3. package/dist/components/rel-alert/README.md +15 -15
  4. package/dist/components/rel-alert/rel-alert.ts +153 -158
  5. package/dist/components/rel-avatar/README.md +15 -15
  6. package/dist/components/rel-avatar/rel-avatar.ts +42 -38
  7. package/dist/components/rel-badge/README.md +5 -5
  8. package/dist/components/rel-badge/rel-badge.ts +46 -11
  9. package/dist/components/rel-breadcrumb/README.md +7 -7
  10. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
  11. package/dist/components/rel-button/README.md +20 -20
  12. package/dist/components/rel-button/rel-button.ts +292 -105
  13. package/dist/components/rel-calendar/README.md +5 -5
  14. package/dist/components/rel-calendar/rel-calendar.ts +61 -45
  15. package/dist/components/rel-card/README.md +6 -6
  16. package/dist/components/rel-card/rel-card.ts +88 -35
  17. package/dist/components/rel-cardmedia/README.md +9 -9
  18. package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
  19. package/dist/components/rel-carousel/README.md +3 -3
  20. package/dist/components/rel-carousel/rel-carousel.ts +174 -90
  21. package/dist/components/rel-chart/README.md +8 -8
  22. package/dist/components/rel-chart/rel-chart.ts +59 -41
  23. package/dist/components/rel-checkbox/README.md +7 -7
  24. package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
  25. package/dist/components/rel-chip/README.md +16 -16
  26. package/dist/components/rel-chip/rel-chip.ts +143 -111
  27. package/dist/components/rel-container/README.md +11 -11
  28. package/dist/components/rel-container/rel-container.ts +35 -9
  29. package/dist/components/rel-date-picker/README.md +43 -7
  30. package/dist/components/rel-date-picker/date-format.test.ts +43 -0
  31. package/dist/components/rel-date-picker/date-format.ts +47 -0
  32. package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
  33. package/dist/components/rel-divider/README.md +9 -9
  34. package/dist/components/rel-divider/rel-divider.ts +10 -9
  35. package/dist/components/rel-drawer/README.md +1 -1
  36. package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
  37. package/dist/components/rel-drawer/rel-drawer.ts +56 -28
  38. package/dist/components/rel-kbd/README.md +20 -20
  39. package/dist/components/rel-kbd/rel-kbd.ts +119 -25
  40. package/dist/components/rel-layout/README.md +1 -1
  41. package/dist/components/rel-layout/rel-layout.ts +2 -2
  42. package/dist/components/rel-menu/README.md +15 -15
  43. package/dist/components/rel-menu/rel-menu.ts +155 -88
  44. package/dist/components/rel-menubar/README.md +20 -20
  45. package/dist/components/rel-menubar/rel-menubar.ts +47 -31
  46. package/dist/components/rel-nav-menu/README.md +21 -21
  47. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
  48. package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
  49. package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
  50. package/dist/components/rel-navbar/README.md +7 -7
  51. package/dist/components/rel-navbar/rel-navbar.ts +12 -11
  52. package/dist/components/rel-otp/README.md +3 -3
  53. package/dist/components/rel-otp/rel-otp.ts +46 -30
  54. package/dist/components/rel-pagination/README.md +18 -18
  55. package/dist/components/rel-pagination/rel-pagination.ts +141 -90
  56. package/dist/components/rel-popover/README.md +13 -13
  57. package/dist/components/rel-popover/rel-popover-content.ts +39 -14
  58. package/dist/components/rel-popover/rel-popover.ts +18 -7
  59. package/dist/components/rel-progress/README.md +5 -5
  60. package/dist/components/rel-progress/rel-progress.ts +16 -12
  61. package/dist/components/rel-radio/README.md +9 -9
  62. package/dist/components/rel-radio/rel-radio.ts +64 -50
  63. package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
  64. package/dist/components/rel-resizable/README.md +4 -4
  65. package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
  66. package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
  67. package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
  68. package/dist/components/rel-segmented-button/README.md +10 -10
  69. package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
  70. package/dist/components/rel-select/README.md +14 -14
  71. package/dist/components/rel-select/rel-select.ts +120 -188
  72. package/dist/components/rel-sheet/README.md +10 -10
  73. package/dist/components/rel-sheet/rel-sheet.ts +82 -23
  74. package/dist/components/rel-sidebar/README.md +5 -5
  75. package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
  76. package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
  77. package/dist/components/rel-slider/README.md +10 -10
  78. package/dist/components/rel-slider/rel-slider.ts +230 -57
  79. package/dist/components/rel-snackbar/README.md +9 -9
  80. package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
  81. package/dist/components/rel-stepper/README.md +10 -10
  82. package/dist/components/rel-stepper/rel-stepper.ts +110 -46
  83. package/dist/components/rel-switch/README.md +5 -5
  84. package/dist/components/rel-switch/rel-switch.ts +23 -12
  85. package/dist/components/rel-tab/README.md +13 -13
  86. package/dist/components/rel-tab/rel-tab.ts +63 -19
  87. package/dist/components/rel-table/README.md +7 -7
  88. package/dist/components/rel-table/rel-table-body.ts +2 -1
  89. package/dist/components/rel-table/rel-table-caption.ts +10 -7
  90. package/dist/components/rel-table/rel-table-cell.ts +7 -6
  91. package/dist/components/rel-table/rel-table-footer.ts +4 -3
  92. package/dist/components/rel-table/rel-table-head.ts +11 -9
  93. package/dist/components/rel-table/rel-table-header.ts +2 -1
  94. package/dist/components/rel-table/rel-table-row.ts +5 -4
  95. package/dist/components/rel-table/rel-table.ts +16 -7
  96. package/dist/components/rel-textfield/README.md +11 -11
  97. package/dist/components/rel-textfield/rel-textfield.ts +172 -91
  98. package/dist/components/rel-toast/README.md +11 -11
  99. package/dist/components/rel-toast/rel-toast.ts +33 -30
  100. package/dist/components/rel-tooltip/README.md +7 -7
  101. package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
  102. package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
  103. package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
  104. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
  105. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
  106. package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
  107. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
  108. package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
  109. package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
  110. package/dist/components/rel-topbar/rel-topbar.ts +31 -29
  111. package/dist/index.d.mts +151 -39
  112. package/dist/index.d.ts +151 -39
  113. package/dist/index.js +3544 -2289
  114. package/dist/index.js.map +1 -1
  115. package/dist/index.mjs +3876 -2622
  116. package/dist/index.mjs.map +1 -1
  117. package/dist/styles/vars.css +653 -363
  118. package/dist/vars-WY2XCF5G.css +653 -0
  119. package/package.json +3 -2
  120. package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
  121. package/dist/styles/vars-v2.css +0 -525
  122. package/dist/vars-F54UGCHM.css +0 -363
  123. package/dist/vars-v2-VMGWTFJZ.css +0 -525
@@ -36,6 +36,7 @@ export class RelDrawer extends LitElement {
36
36
 
37
37
  static styles = css`
38
38
  :host {
39
+ color: var(--rel-text-default);
39
40
  --drawer-transition-duration: 0.3s;
40
41
  --drawer-transition-timing: cubic-bezier(0.32, 0.72, 0, 1);
41
42
  }
@@ -73,13 +74,13 @@ export class RelDrawer extends LitElement {
73
74
  /* Panel base */
74
75
  .panel {
75
76
  position: absolute;
76
- background: var(--rel-color-bg-primary);
77
+ background: var(--rel-bg-surface);
77
78
  box-shadow: var(--rel-shadows-shadow-500);
78
79
  display: flex;
79
80
  flex-direction: column;
80
81
  overflow: hidden;
81
82
  outline: none;
82
- font-family: var(--rel-fontFamilies-primary);
83
+ font-family: var(--rel-fonts-font-family);
83
84
  transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing);
84
85
  }
85
86
 
@@ -90,8 +91,8 @@ export class RelDrawer extends LitElement {
90
91
  right: auto;
91
92
  width: var(--drawer-width, clamp(640px, 66vw, 952px));
92
93
  height: var(--drawer-height, clamp(360px, 49vh, 600px));
93
- border-radius: var(--rel-borders-radius-border-radius-200)
94
- var(--rel-borders-radius-border-radius-200)
94
+ border-radius: var(--rel-border-radius-sm)
95
+ var(--rel-border-radius-sm)
95
96
  0
96
97
  0;
97
98
  transform: translateX(-50%) translateY(100%);
@@ -146,15 +147,16 @@ export class RelDrawer extends LitElement {
146
147
  .handle {
147
148
  width: 48px;
148
149
  height: 4px;
149
- background: var(--rel-color-border-divider);
150
- border-radius: var(--rel-borders-radius-border-radius-500);
151
- margin: var(--rel-spacing-space-xs) auto var(--rel-spacing-space-2xs);
150
+ background: var(--rel-bg-neutral-elevated-2);
151
+ border-radius: var(--rel-border-radius-full-rounded);
152
+ margin: var(--rel-spacing-xs) auto var(--rel-spacing-2xs);
152
153
  cursor: grab;
153
154
  touch-action: none;
154
155
  }
155
156
 
156
157
  .handle:active {
157
158
  cursor: grabbing;
159
+ background: var(--rel-border-accent);
158
160
  }
159
161
 
160
162
  .handle.hidden {
@@ -165,9 +167,9 @@ export class RelDrawer extends LitElement {
165
167
  .header {
166
168
  display: flex;
167
169
  flex-direction: column;
168
- gap: var(--rel-spacing-space-2xs);
169
- padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
170
- border-bottom: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
170
+ gap: var(--rel-spacing-2xs);
171
+ padding: var(--rel-spacing-md) var(--rel-spacing-lg);
172
+ border-bottom: var(--rel-stroke-sm) solid var(--rel-border-default);
171
173
  }
172
174
 
173
175
  .header.empty {
@@ -178,47 +180,73 @@ export class RelDrawer extends LitElement {
178
180
  display: flex;
179
181
  align-items: flex-start;
180
182
  justify-content: space-between;
183
+ gap: var(--rel-spacing-sm);
181
184
  }
182
185
 
183
- .title {
184
- font-size: var(--rel-fontSizes-lg);
185
- font-weight: var(--rel-fontWeights-semibold);
186
- color: var(--rel-text-heading);
187
- margin: 0;
186
+ .title {
187
+ color: var(--rel-text-label);
188
+ margin: 0;
189
+
190
+ font-family: var(--rel-headings-lg-font-family);
191
+
192
+ font-weight: var(--rel-headings-lg-font-weight);
193
+
194
+ font-size: var(--rel-headings-lg-font-size);
195
+
196
+ line-height: var(--rel-headings-lg-line-height);
197
+
198
+ letter-spacing: var(--rel-headings-lg-letter-spacing);
199
+
188
200
  }
189
201
 
190
- .description {
191
- font-size: var(--rel-fontSizes-sm);
192
- color: var(--rel-text-primary);
202
+ .description {
203
+ color: var(--rel-text-body);
193
204
  margin: 0;
194
- opacity: 0.8;
205
+ opacity: 0.8;
206
+
207
+ font-family: var(--rel-body-lg-regular-font-family);
208
+
209
+ font-weight: var(--rel-body-lg-regular-font-weight);
210
+
211
+ font-size: var(--rel-body-lg-regular-font-size);
212
+
213
+ line-height: var(--rel-body-lg-regular-line-height);
214
+
215
+ letter-spacing: var(--rel-body-lg-regular-letter-spacing);
216
+
217
+ }
218
+
219
+ /* Emphasised inline text in slotted content (Figma body-lg-medium) */
220
+ .content ::slotted(strong),
221
+ .content ::slotted(b) {
222
+ font-weight: var(--rel-body-lg-medium-font-weight);
195
223
  }
196
224
 
197
225
  .close-button {
198
226
  background: transparent;
199
227
  border: none;
200
228
  cursor: pointer;
201
- padding: var(--rel-spacing-space-2xs);
229
+ padding: var(--rel-spacing-2xs);
202
230
  display: flex;
203
231
  align-items: center;
204
232
  justify-content: center;
205
233
  align-self: flex-start;
206
234
  flex-shrink: 0;
207
- border-radius: var(--rel-borders-radius-border-radius-100);
208
- color: var(--rel-color-text-primary);
235
+ border-radius: var(--rel-border-radius-xs);
236
+ color: var(--rel-text-default);
209
237
  transition: background 0.15s ease;
210
238
  }
211
239
 
212
240
  .close-button:hover {
213
- background: var(--rel-surface-secondary, #fafafa);
241
+ background: var(--rel-bg-surface-elevated);
214
242
  }
215
243
 
216
244
  .close-button:active {
217
- background: var(--rel-color-border-divider);
245
+ background: var(--rel-border-default);
218
246
  }
219
247
 
220
248
  .close-button:focus-visible {
221
- outline: 2px solid var(--rel-color-border-focus);
249
+ outline: 2px solid var(--rel-border-focus);
222
250
  outline-offset: 2px;
223
251
  }
224
252
 
@@ -226,14 +254,14 @@ export class RelDrawer extends LitElement {
226
254
  .content {
227
255
  flex: 1;
228
256
  overflow-y: auto;
229
- padding: var(--rel-spacing-space-lg);
257
+ padding: var(--rel-spacing-xl);
230
258
  }
231
259
 
232
260
  /* Footer */
233
261
  .footer {
234
262
  flex-shrink: 0;
235
- padding: var(--rel-spacing-space-md) var(--rel-spacing-space-lg);
236
- border-top: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
263
+ padding: var(--rel-spacing-md) var(--rel-spacing-lg);
264
+ border-top: var(--rel-stroke-sm) solid var(--rel-border-default);
237
265
  }
238
266
 
239
267
  /* Reduced motion */
@@ -49,32 +49,32 @@ A keyboard key/shortcut pill component for displaying keyboard shortcuts and key
49
49
  The component uses design tokens from the Reliability Design System:
50
50
 
51
51
  #### Colors
52
- - `--rel-colors-gray-light` - Default background
53
- - `--rel-colors-gray-background` - Muted and inset backgrounds
54
- - `--rel-colors-gray-heading` - Default text color
55
- - `--rel-colors-gray-placeholder` - Muted text color
56
- - `--rel-colors-gray-border` - Default border
57
- - `--rel-colors-gray-divider` - Muted border
52
+ - `--rel-bg-surface-elevated` - Default background
53
+ - `--rel-bg-neutral-elevated-1` - Muted and inset backgrounds
54
+ - `--rel-text-label` - Default text color
55
+ - `--rel-text-placeholder` - Muted text color
56
+ - `--rel-border-default` - Default border
57
+ - `--rel-border-default` - Muted border
58
58
 
59
59
  #### Typography
60
- - `--rel-fontFamilies-primary` - Font family (Poppins)
61
- - `--rel-fontWeights-medium` - Font weight (500)
62
- - `--rel-fontSizes-xs` - Small size font
63
- - `--rel-fontSizes-sm` - Medium size font
64
- - `--rel-fontSizes-md` - Large size font
60
+ - `--rel-fonts-font-family` - Font family (Poppins)
61
+ - `--rel-fonts-weight-body-medium` - Font weight (500)
62
+ - `--rel-body-xs-regular-font-size` - Small size font
63
+ - `--rel-body-sm-regular-font-size` - Medium size font
64
+ - `--rel-body-md-regular-font-size` - Large size font
65
65
 
66
66
  #### Spacing
67
- - `--rel-spacing-space-3xs` (2px)
68
- - `--rel-spacing-space-2xs` (4px)
69
- - `--rel-spacing-space-xs` (8px)
70
- - `--rel-spacing-space-sm` (12px)
71
- - `--rel-spacing-space-md` (16px)
67
+ - `--rel-spacing-3xs` (2px)
68
+ - `--rel-spacing-2xs` (4px)
69
+ - `--rel-spacing-xs` (8px)
70
+ - `--rel-spacing-sm` (12px)
71
+ - `--rel-spacing-md` (16px)
72
72
 
73
73
  #### Borders
74
- - `--rel-borders-width-stroke-100` (1px)
75
- - `--rel-borders-radius-border-radius-100` (2px)
76
- - `--rel-borders-radius-border-radius-200` (8px)
77
- - `--rel-borders-radius-border-radius-500` (1000px - pill shape)
74
+ - `--rel-stroke-sm` (1px)
75
+ - `--rel-border-radius-xs` (2px)
76
+ - `--rel-border-radius-sm` (8px)
77
+ - `--rel-border-radius-full-rounded` (1000px - pill shape)
78
78
 
79
79
  ## Examples
80
80
 
@@ -1,6 +1,5 @@
1
- import { LitElement, html, css } from "lit";
1
+ import { LitElement, html, css, nothing } from "lit";
2
2
  import { customElement, property } from "lit/decorators.js";
3
- import "../../styles/vars-v2.css";
4
3
 
5
4
  @customElement("rel-kbd")
6
5
  export class RelKbd extends LitElement {
@@ -18,58 +17,101 @@ export class RelKbd extends LitElement {
18
17
 
19
18
  static styles = css`
20
19
  :host {
20
+ color: var(--rel-text-default);
21
21
  display: inline-flex;
22
22
  align-items: center;
23
23
  justify-content: center;
24
- font-family: var(--rel-fontFamilies-primary);
25
- font-weight: var(--rel-fontWeights-medium);
24
+ font-family: var(--rel-label-md-font-family);
25
+ font-weight: var(--rel-label-md-font-weight);
26
+ font-size: var(--rel-label-md-font-size);
27
+ line-height: var(--rel-label-md-line-height);
28
+ letter-spacing: var(--rel-label-md-letter-spacing);
26
29
  white-space: nowrap;
27
30
  user-select: none;
28
31
  transition: box-shadow 0.15s ease, background 0.15s ease, border-color 0.15s ease;
29
- line-height: 1;
30
32
  vertical-align: middle;
31
33
  }
32
34
 
35
+ /* Slotted hint text (Figma body-sm-regular) */
36
+ ::slotted(span) {
37
+ font-family: var(--rel-body-sm-regular-font-family);
38
+ font-weight: var(--rel-body-sm-regular-font-weight);
39
+ font-size: var(--rel-body-sm-regular-font-size);
40
+ line-height: var(--rel-body-sm-regular-line-height);
41
+ letter-spacing: var(--rel-body-sm-regular-letter-spacing);
42
+ }
43
+
44
+
33
45
  :host([size="sm"]) {
34
- font-size: var(--rel-fontSizes-xs);
35
- padding: var(--rel-spacing-space-3xs) var(--rel-spacing-space-xs);
46
+ padding: var(--rel-spacing-3xs) var(--rel-spacing-xs);
36
47
  min-width: 20px;
37
48
  height: 20px;
38
- border-radius: var(--rel-borders-radius-border-radius-100);
49
+ border-radius: var(--rel-border-radius-xs);
50
+
51
+ font-family: var(--rel-label-xs-font-family);
52
+
53
+ font-weight: var(--rel-label-xs-font-weight);
54
+
55
+ font-size: var(--rel-label-xs-font-size);
56
+
57
+ line-height: var(--rel-label-xs-line-height);
58
+
59
+ letter-spacing: var(--rel-label-xs-letter-spacing);
60
+
39
61
  }
40
62
 
41
63
  :host([size="md"]) {
42
- font-size: var(--rel-fontSizes-sm);
43
- padding: var(--rel-spacing-space-2xs) var(--rel-spacing-space-sm);
64
+ padding: var(--rel-spacing-2xs) var(--rel-spacing-sm);
44
65
  min-width: 24px;
45
66
  height: 24px;
46
- border-radius: var(--rel-borders-radius-border-radius-100);
67
+ border-radius: var(--rel-border-radius-xs);
68
+
69
+ font-family: var(--rel-label-sm-font-family);
70
+
71
+ font-weight: var(--rel-label-sm-font-weight);
72
+
73
+ font-size: var(--rel-label-sm-font-size);
74
+
75
+ line-height: var(--rel-label-sm-line-height);
76
+
77
+ letter-spacing: var(--rel-label-sm-letter-spacing);
78
+
47
79
  }
48
80
 
49
81
  :host([size="lg"]) {
50
- font-size: var(--rel-fontSizes-md);
51
- padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-md);
82
+ padding: var(--rel-spacing-xs) var(--rel-spacing-md);
52
83
  min-width: 32px;
53
84
  height: 32px;
54
- border-radius: var(--rel-borders-radius-border-radius-200);
85
+ border-radius: var(--rel-border-radius-sm);
86
+
87
+ font-family: var(--rel-label-lg-font-family);
88
+
89
+ font-weight: var(--rel-label-lg-font-weight);
90
+
91
+ font-size: var(--rel-label-lg-font-size);
92
+
93
+ line-height: var(--rel-label-lg-line-height);
94
+
95
+ letter-spacing: var(--rel-label-lg-letter-spacing);
96
+
55
97
  }
56
98
 
57
99
  :host([variant="default"]) {
58
- background: var(--rel-color-bg-secondary);
59
- color: var(--rel-color-text-heading);
60
- border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
100
+ background: var(--rel-bg-neutral-elevated-1);
101
+ color: var(--rel-text-label);
102
+ border: var(--rel-stroke-sm) solid var(--rel-border-default);
61
103
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 1px 0 0 rgba(255, 255, 255, 0.5) inset;
62
104
  }
63
105
 
64
106
  :host([variant="muted"]) {
65
- background: var(--rel-color-bg-secondary);
66
- color: var(--rel-color-text-placeholder);
67
- border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-divider);
107
+ background: var(--rel-bg-neutral-elevated-2);
108
+ color: var(--rel-text-placeholder);
109
+ border: var(--rel-stroke-sm) solid var(--rel-border-default);
68
110
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.03);
69
111
  }
70
112
 
71
113
  :host([pill]) {
72
- border-radius: var(--rel-borders-radius-border-radius-500);
114
+ border-radius: var(--rel-border-radius-full-rounded);
73
115
  }
74
116
 
75
117
  :host([inset]) {
@@ -78,13 +120,13 @@ export class RelKbd extends LitElement {
78
120
  }
79
121
 
80
122
  :host([inset][variant="default"]) {
81
- background: var(--rel-color-bg-secondary);
82
- border-color: var(--rel-color-border-divider);
123
+ background: var(--rel-bg-neutral-elevated-1);
124
+ border-color: var(--rel-border-default);
83
125
  }
84
126
 
85
127
  :host([inset][variant="muted"]) {
86
- background: var(--rel-color-border-divider);
87
- border-color: var(--rel-color-border-default);
128
+ background: var(--rel-border-default);
129
+ border-color: var(--rel-border-default);
88
130
  }
89
131
  `;
90
132
 
@@ -92,3 +134,55 @@ export class RelKbd extends LitElement {
92
134
  return html`<slot></slot>`;
93
135
  }
94
136
  }
137
+
138
+ /**
139
+ * Multi-key shortcut (Figma Kbd Items=1/2/3/4): renders one <rel-kbd> per
140
+ * entry in `items` with "+" separators between them. Slotted <rel-kbd>
141
+ * children may be used instead of the items array.
142
+ *
143
+ * <rel-kbd-group .items=${["Ctrl", "Shift", "P"]} size="md"></rel-kbd-group>
144
+ */
145
+ @customElement("rel-kbd-group")
146
+ export class RelKbdGroup extends LitElement {
147
+ @property({ type: Array }) items: string[] = [];
148
+
149
+ @property({ type: String, reflect: true })
150
+ size: "sm" | "md" | "lg" = "md";
151
+
152
+ @property({ type: String, reflect: true })
153
+ variant: "default" | "muted" = "default";
154
+
155
+ static styles = css`
156
+ :host {
157
+ display: inline-flex;
158
+ align-items: center;
159
+ gap: var(--rel-spacing-2xs);
160
+ white-space: nowrap;
161
+ }
162
+
163
+ /* "+" between keys (Figma body-sm-regular, caption tone) */
164
+ .separator {
165
+ font-family: var(--rel-body-sm-regular-font-family);
166
+ font-weight: var(--rel-body-sm-regular-font-weight);
167
+ font-size: var(--rel-body-sm-regular-font-size);
168
+ line-height: var(--rel-body-sm-regular-line-height);
169
+ letter-spacing: var(--rel-body-sm-regular-letter-spacing);
170
+ color: var(--rel-text-caption);
171
+ user-select: none;
172
+ }
173
+ `;
174
+
175
+ render() {
176
+ return html`
177
+ ${this.items.map(
178
+ (key, i) => html`
179
+ ${i > 0
180
+ ? html`<span part="label" class="separator" aria-hidden="true">+</span>`
181
+ : nothing}
182
+ <rel-kbd part="item" size=${this.size} variant=${this.variant}>${key}</rel-kbd>
183
+ `
184
+ )}
185
+ <slot></slot>
186
+ `;
187
+ }
188
+ }
@@ -62,7 +62,7 @@ None exposed.
62
62
  ## Tokens / CSS Variables
63
63
 
64
64
  ### Semantic Tokens
65
- - `--rel-fontFamilies-primary` - Font family
65
+ - `--rel-fonts-font-family` - Font family
66
66
 
67
67
  ## Accessibility
68
68
  - Uses standard CSS Grid, which is accessible by default
@@ -1,6 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
2
  import { customElement, property } from "lit/decorators.js";
3
- import "../../styles/vars-v2.css";
4
3
 
5
4
  @customElement("rel-layout")
6
5
  export class RelLayout extends LitElement {
@@ -12,9 +11,10 @@ export class RelLayout extends LitElement {
12
11
 
13
12
  static styles = css`
14
13
  :host {
14
+ color: var(--rel-text-default);
15
15
  display: grid;
16
16
  width: 100%;
17
- font-family: var(--rel-fontFamilies-primary);
17
+ font-family: var(--rel-fonts-font-family);
18
18
  gap: var(--_gap, 1rem);
19
19
  grid-template-columns: repeat(var(--_columns, 4), 1fr);
20
20
  }
@@ -92,31 +92,31 @@ None exposed.
92
92
  ## Tokens / CSS Variables
93
93
 
94
94
  ### Semantic Tokens
95
- - `--rel-fontFamilies-primary` - Font family
96
- - `--rel-fontSizes-sm` - Font size
97
- - `--rel-fontSizes-lg` - Chevron font size
98
- - `--rel-fontWeights-medium` - Active item font weight
99
- - `--rel-lineHeights-sm` - Line height
95
+ - `--rel-fonts-font-family` - Font family
96
+ - `--rel-body-sm-regular-font-size` - Font size
97
+ - `--rel-body-xl-regular-font-size` - Chevron font size
98
+ - `--rel-fonts-weight-body-medium` - Active item font weight
99
+ - `--rel-body-sm-regular-line-height` - Line height
100
100
 
101
101
  ### Spacing Tokens
102
- - `--rel-spacing-space-3xs` - Menu vertical padding
103
- - `--rel-spacing-space-xs` - Item padding, gaps
104
- - `--rel-spacing-space-sm` - Item horizontal padding
105
- - `--rel-spacing-space-2xs` - Checkbox gap, submenu offset
102
+ - `--rel-spacing-3xs` - Menu vertical padding
103
+ - `--rel-spacing-xs` - Item padding, gaps
104
+ - `--rel-spacing-sm` - Item horizontal padding
105
+ - `--rel-spacing-2xs` - Checkbox gap, submenu offset
106
106
 
107
107
  ### Color Tokens
108
- - `--rel-colors-white` - Menu and submenu background
109
- - `--rel-text-primary` - Default text color
108
+ - `--rel-bg-surface` - Menu and submenu background
109
+ - `--rel-text-default` - Default text color
110
110
  - `--rel-text-disabled` - Disabled item text
111
- - `--rel-surface-secondary` - Hover and active background
112
- - `--rel-colors-gray-divider` - Active press background
113
- - `--rel-colors-blue-primary` - Focus outline
111
+ - `--rel-bg-surface-elevated` - Hover and active background
112
+ - `--rel-border-default` - Active press background
113
+ - `--rel-bg-info` - Focus outline
114
114
 
115
115
  ### Shadow Tokens
116
116
  - `--rel-shadows-shadow-300` - Menu and submenu drop shadow
117
117
 
118
118
  ### Border Tokens
119
- - `--rel-borders-radius-border-radius-300` - Border radius
119
+ - `--rel-border-radius-md` - Border radius
120
120
 
121
121
  ## Accessibility
122
122
  - Uses `role="menu"` on container and `role="menuitem"` on items