@reliability-design/web 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/rel-accordion/README.md +13 -13
- package/dist/components/rel-accordion/rel-accordion.ts +80 -45
- package/dist/components/rel-alert/README.md +15 -15
- package/dist/components/rel-alert/rel-alert.ts +153 -158
- package/dist/components/rel-avatar/README.md +15 -15
- package/dist/components/rel-avatar/rel-avatar.ts +42 -38
- package/dist/components/rel-badge/README.md +5 -5
- package/dist/components/rel-badge/rel-badge.ts +46 -11
- package/dist/components/rel-breadcrumb/README.md +7 -7
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
- package/dist/components/rel-button/README.md +20 -20
- package/dist/components/rel-button/rel-button.ts +292 -105
- package/dist/components/rel-calendar/README.md +5 -5
- package/dist/components/rel-calendar/rel-calendar.ts +61 -45
- package/dist/components/rel-card/README.md +6 -6
- package/dist/components/rel-card/rel-card.ts +88 -35
- package/dist/components/rel-cardmedia/README.md +9 -9
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
- package/dist/components/rel-carousel/README.md +3 -3
- package/dist/components/rel-carousel/rel-carousel.ts +174 -90
- package/dist/components/rel-chart/README.md +8 -8
- package/dist/components/rel-chart/rel-chart.ts +59 -41
- package/dist/components/rel-checkbox/README.md +7 -7
- package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
- package/dist/components/rel-chip/README.md +16 -16
- package/dist/components/rel-chip/rel-chip.ts +143 -111
- package/dist/components/rel-container/README.md +11 -11
- package/dist/components/rel-container/rel-container.ts +35 -9
- package/dist/components/rel-date-picker/README.md +43 -7
- package/dist/components/rel-date-picker/date-format.test.ts +43 -0
- package/dist/components/rel-date-picker/date-format.ts +47 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
- package/dist/components/rel-divider/README.md +9 -9
- package/dist/components/rel-divider/rel-divider.ts +10 -9
- package/dist/components/rel-drawer/README.md +1 -1
- package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
- package/dist/components/rel-drawer/rel-drawer.ts +56 -28
- package/dist/components/rel-kbd/README.md +20 -20
- package/dist/components/rel-kbd/rel-kbd.ts +119 -25
- package/dist/components/rel-layout/README.md +1 -1
- package/dist/components/rel-layout/rel-layout.ts +2 -2
- package/dist/components/rel-menu/README.md +15 -15
- package/dist/components/rel-menu/rel-menu.ts +155 -88
- package/dist/components/rel-menubar/README.md +20 -20
- package/dist/components/rel-menubar/rel-menubar.ts +47 -31
- package/dist/components/rel-nav-menu/README.md +21 -21
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
- package/dist/components/rel-navbar/README.md +7 -7
- package/dist/components/rel-navbar/rel-navbar.ts +12 -11
- package/dist/components/rel-otp/README.md +3 -3
- package/dist/components/rel-otp/rel-otp.ts +46 -30
- package/dist/components/rel-pagination/README.md +18 -18
- package/dist/components/rel-pagination/rel-pagination.ts +141 -90
- package/dist/components/rel-popover/README.md +13 -13
- package/dist/components/rel-popover/rel-popover-content.ts +39 -14
- package/dist/components/rel-popover/rel-popover.ts +18 -7
- package/dist/components/rel-progress/README.md +5 -5
- package/dist/components/rel-progress/rel-progress.ts +16 -12
- package/dist/components/rel-radio/README.md +9 -9
- package/dist/components/rel-radio/rel-radio.ts +64 -50
- package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
- package/dist/components/rel-resizable/README.md +4 -4
- package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
- package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
- package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
- package/dist/components/rel-segmented-button/README.md +10 -10
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
- package/dist/components/rel-select/README.md +14 -14
- package/dist/components/rel-select/rel-select.ts +120 -188
- package/dist/components/rel-sheet/README.md +10 -10
- package/dist/components/rel-sheet/rel-sheet.ts +82 -23
- package/dist/components/rel-sidebar/README.md +5 -5
- package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
- package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
- package/dist/components/rel-slider/README.md +10 -10
- package/dist/components/rel-slider/rel-slider.ts +230 -57
- package/dist/components/rel-snackbar/README.md +9 -9
- package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
- package/dist/components/rel-stepper/README.md +10 -10
- package/dist/components/rel-stepper/rel-stepper.ts +110 -46
- package/dist/components/rel-switch/README.md +5 -5
- package/dist/components/rel-switch/rel-switch.ts +23 -12
- package/dist/components/rel-tab/README.md +13 -13
- package/dist/components/rel-tab/rel-tab.ts +63 -19
- package/dist/components/rel-table/README.md +7 -7
- package/dist/components/rel-table/rel-table-body.ts +2 -1
- package/dist/components/rel-table/rel-table-caption.ts +10 -7
- package/dist/components/rel-table/rel-table-cell.ts +7 -6
- package/dist/components/rel-table/rel-table-footer.ts +4 -3
- package/dist/components/rel-table/rel-table-head.ts +11 -9
- package/dist/components/rel-table/rel-table-header.ts +2 -1
- package/dist/components/rel-table/rel-table-row.ts +5 -4
- package/dist/components/rel-table/rel-table.ts +16 -7
- package/dist/components/rel-textfield/README.md +11 -11
- package/dist/components/rel-textfield/rel-textfield.ts +172 -91
- package/dist/components/rel-toast/README.md +11 -11
- package/dist/components/rel-toast/rel-toast.ts +33 -30
- package/dist/components/rel-tooltip/README.md +7 -7
- package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
- package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
- package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
- package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
- package/dist/components/rel-topbar/rel-topbar.ts +31 -29
- package/dist/index.d.mts +151 -39
- package/dist/index.d.ts +151 -39
- package/dist/index.js +3544 -2289
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3876 -2622
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +653 -363
- package/dist/vars-WY2XCF5G.css +653 -0
- package/package.json +3 -2
- package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
- package/dist/styles/vars-v2.css +0 -525
- package/dist/vars-F54UGCHM.css +0 -363
- package/dist/vars-v2-VMGWTFJZ.css +0 -525
|
@@ -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-
|
|
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-
|
|
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-
|
|
94
|
-
var(--rel-
|
|
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-
|
|
150
|
-
border-radius: var(--rel-
|
|
151
|
-
margin: var(--rel-spacing-
|
|
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-
|
|
169
|
-
padding: var(--rel-spacing-
|
|
170
|
-
border-bottom: var(--rel-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
208
|
-
color: var(--rel-
|
|
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-
|
|
241
|
+
background: var(--rel-bg-surface-elevated);
|
|
214
242
|
}
|
|
215
243
|
|
|
216
244
|
.close-button:active {
|
|
217
|
-
background: var(--rel-
|
|
245
|
+
background: var(--rel-border-default);
|
|
218
246
|
}
|
|
219
247
|
|
|
220
248
|
.close-button:focus-visible {
|
|
221
|
-
outline: 2px solid var(--rel-
|
|
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-
|
|
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-
|
|
236
|
-
border-top: var(--rel-
|
|
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-
|
|
53
|
-
- `--rel-
|
|
54
|
-
- `--rel-
|
|
55
|
-
- `--rel-
|
|
56
|
-
- `--rel-
|
|
57
|
-
- `--rel-
|
|
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-
|
|
61
|
-
- `--rel-
|
|
62
|
-
- `--rel-
|
|
63
|
-
- `--rel-
|
|
64
|
-
- `--rel-
|
|
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-
|
|
68
|
-
- `--rel-spacing-
|
|
69
|
-
- `--rel-spacing-
|
|
70
|
-
- `--rel-spacing-
|
|
71
|
-
- `--rel-spacing-
|
|
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-
|
|
75
|
-
- `--rel-
|
|
76
|
-
- `--rel-
|
|
77
|
-
- `--rel-
|
|
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-
|
|
25
|
-
font-weight: var(--rel-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
59
|
-
color: var(--rel-
|
|
60
|
-
border: var(--rel-
|
|
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-
|
|
66
|
-
color: var(--rel-
|
|
67
|
-
border: var(--rel-
|
|
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-
|
|
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-
|
|
82
|
-
border-color: var(--rel-
|
|
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-
|
|
87
|
-
border-color: var(--rel-
|
|
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
|
+
}
|
|
@@ -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-
|
|
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-
|
|
96
|
-
- `--rel-
|
|
97
|
-
- `--rel-
|
|
98
|
-
- `--rel-
|
|
99
|
-
- `--rel-
|
|
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-
|
|
103
|
-
- `--rel-spacing-
|
|
104
|
-
- `--rel-spacing-
|
|
105
|
-
- `--rel-spacing-
|
|
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-
|
|
109
|
-
- `--rel-text-
|
|
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-
|
|
112
|
-
- `--rel-
|
|
113
|
-
- `--rel-
|
|
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-
|
|
119
|
+
- `--rel-border-radius-md` - Border radius
|
|
120
120
|
|
|
121
121
|
## Accessibility
|
|
122
122
|
- Uses `role="menu"` on container and `role="menuitem"` on items
|