@reliability-design/web 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/rel-accordion/README.md +13 -13
- package/dist/components/rel-accordion/rel-accordion.ts +80 -45
- package/dist/components/rel-alert/README.md +15 -15
- package/dist/components/rel-alert/rel-alert.ts +161 -159
- package/dist/components/rel-avatar/README.md +15 -15
- package/dist/components/rel-avatar/rel-avatar.ts +42 -38
- package/dist/components/rel-badge/README.md +5 -5
- package/dist/components/rel-badge/rel-badge.ts +69 -17
- package/dist/components/rel-breadcrumb/README.md +7 -7
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
- package/dist/components/rel-button/README.md +20 -20
- package/dist/components/rel-button/rel-button.ts +327 -105
- package/dist/components/rel-calendar/README.md +5 -5
- package/dist/components/rel-calendar/rel-calendar.ts +61 -45
- package/dist/components/rel-card/README.md +6 -6
- package/dist/components/rel-card/rel-card.ts +88 -35
- package/dist/components/rel-cardmedia/README.md +9 -9
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
- package/dist/components/rel-carousel/README.md +3 -3
- package/dist/components/rel-carousel/rel-carousel.ts +174 -90
- package/dist/components/rel-chart/README.md +8 -8
- package/dist/components/rel-chart/rel-chart.ts +59 -41
- package/dist/components/rel-checkbox/README.md +7 -7
- package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
- package/dist/components/rel-chip/README.md +16 -16
- package/dist/components/rel-chip/rel-chip.ts +143 -111
- package/dist/components/rel-container/README.md +11 -11
- package/dist/components/rel-container/rel-container.ts +35 -9
- package/dist/components/rel-date-picker/README.md +43 -7
- package/dist/components/rel-date-picker/date-format.test.ts +43 -0
- package/dist/components/rel-date-picker/date-format.ts +47 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +257 -83
- package/dist/components/rel-divider/README.md +9 -9
- package/dist/components/rel-divider/rel-divider.ts +10 -9
- package/dist/components/rel-drawer/README.md +1 -1
- package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
- package/dist/components/rel-drawer/rel-drawer.ts +56 -28
- package/dist/components/rel-kbd/README.md +20 -20
- package/dist/components/rel-kbd/rel-kbd.ts +119 -25
- package/dist/components/rel-layout/README.md +1 -1
- package/dist/components/rel-layout/rel-layout.ts +2 -2
- package/dist/components/rel-menu/README.md +15 -15
- package/dist/components/rel-menu/rel-menu.ts +155 -88
- package/dist/components/rel-menubar/README.md +20 -20
- package/dist/components/rel-menubar/rel-menubar.ts +47 -31
- package/dist/components/rel-nav-menu/README.md +21 -21
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
- package/dist/components/rel-navbar/README.md +7 -7
- package/dist/components/rel-navbar/rel-navbar.ts +12 -11
- package/dist/components/rel-otp/README.md +3 -3
- package/dist/components/rel-otp/rel-otp.ts +46 -30
- package/dist/components/rel-pagination/README.md +18 -18
- package/dist/components/rel-pagination/rel-pagination.ts +141 -90
- package/dist/components/rel-popover/README.md +13 -13
- package/dist/components/rel-popover/rel-popover-content.ts +39 -14
- package/dist/components/rel-popover/rel-popover.ts +18 -7
- package/dist/components/rel-progress/README.md +5 -5
- package/dist/components/rel-progress/rel-progress.ts +16 -12
- package/dist/components/rel-radio/README.md +9 -9
- package/dist/components/rel-radio/rel-radio.ts +64 -50
- package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
- package/dist/components/rel-resizable/README.md +4 -4
- package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
- package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
- package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
- package/dist/components/rel-segmented-button/README.md +10 -10
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
- package/dist/components/rel-select/README.md +14 -14
- package/dist/components/rel-select/rel-select.ts +120 -188
- package/dist/components/rel-sheet/README.md +10 -10
- package/dist/components/rel-sheet/rel-sheet.ts +82 -23
- package/dist/components/rel-sidebar/README.md +5 -5
- package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
- package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
- package/dist/components/rel-slider/README.md +10 -10
- package/dist/components/rel-slider/rel-slider.ts +230 -57
- package/dist/components/rel-snackbar/README.md +9 -9
- package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
- package/dist/components/rel-stepper/README.md +10 -10
- package/dist/components/rel-stepper/rel-stepper.ts +110 -46
- package/dist/components/rel-switch/README.md +5 -5
- package/dist/components/rel-switch/rel-switch.ts +23 -12
- package/dist/components/rel-tab/README.md +13 -13
- package/dist/components/rel-tab/rel-tab.ts +73 -23
- package/dist/components/rel-table/README.md +7 -7
- package/dist/components/rel-table/rel-table-body.ts +2 -1
- package/dist/components/rel-table/rel-table-caption.ts +10 -7
- package/dist/components/rel-table/rel-table-cell.ts +7 -6
- package/dist/components/rel-table/rel-table-footer.ts +4 -3
- package/dist/components/rel-table/rel-table-head.ts +11 -9
- package/dist/components/rel-table/rel-table-header.ts +2 -1
- package/dist/components/rel-table/rel-table-row.ts +5 -4
- package/dist/components/rel-table/rel-table.ts +16 -7
- package/dist/components/rel-textfield/README.md +11 -11
- package/dist/components/rel-textfield/rel-textfield.ts +718 -397
- package/dist/components/rel-toast/README.md +11 -11
- package/dist/components/rel-toast/rel-toast.ts +33 -30
- package/dist/components/rel-tooltip/README.md +7 -7
- package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
- package/dist/components/rel-topbar/rel-topbar-actions.ts +5 -2
- package/dist/components/rel-topbar/rel-topbar-brand.ts +12 -5
- package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +14 -8
- package/dist/components/rel-topbar/rel-topbar-dropdown.ts +8 -5
- package/dist/components/rel-topbar/rel-topbar-item.ts +27 -22
- package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +4 -1
- package/dist/components/rel-topbar/rel-topbar-profile.ts +71 -50
- package/dist/components/rel-topbar/rel-topbar-utilities.ts +5 -2
- package/dist/components/rel-topbar/rel-topbar.ts +37 -29
- package/dist/index.d.mts +227 -40
- package/dist/index.d.ts +227 -40
- package/dist/index.js +3930 -2247
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4311 -2629
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +653 -346
- package/dist/vars-WY2XCF5G.css +653 -0
- package/package.json +3 -2
- package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
- package/dist/styles/vars-v2.css +0 -525
- package/dist/vars-I2PC74XD.css +0 -346
- package/dist/vars-v2-VMGWTFJZ.css +0 -525
|
@@ -14,6 +14,12 @@ interface TooltipData {
|
|
|
14
14
|
yPos: number;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated rel-chart has no Figma design in RelDS 2.0 and is excluded from
|
|
19
|
+
* the parity contract. It remains exported for compatibility but will be
|
|
20
|
+
* removed in a future major version — use a dedicated charting library styled
|
|
21
|
+
* with RelDS tokens instead.
|
|
22
|
+
*/
|
|
17
23
|
@customElement("rel-chart")
|
|
18
24
|
export class RelChart extends LitElement {
|
|
19
25
|
@property({ type: String, reflect: true }) type: "bar" | "line" = "bar";
|
|
@@ -64,18 +70,19 @@ export class RelChart extends LitElement {
|
|
|
64
70
|
|
|
65
71
|
// Default color palette using RDS tokens
|
|
66
72
|
private readonly defaultColors = [
|
|
67
|
-
"var(--rel-
|
|
68
|
-
"var(--rel-
|
|
69
|
-
"var(--rel-
|
|
70
|
-
"var(--rel-
|
|
71
|
-
"var(--rel-
|
|
72
|
-
"var(--rel-
|
|
73
|
+
"var(--rel-bg-info)",
|
|
74
|
+
"var(--rel-bg-success)",
|
|
75
|
+
"var(--rel-bg-warning)",
|
|
76
|
+
"var(--rel-bg-danger)",
|
|
77
|
+
"var(--rel-text-warning)",
|
|
78
|
+
"var(--rel-bg-neutral-elevated-3)",
|
|
73
79
|
];
|
|
74
80
|
|
|
75
81
|
static styles = css`
|
|
76
82
|
:host {
|
|
83
|
+
color: var(--rel-text-default);
|
|
77
84
|
display: block;
|
|
78
|
-
font-family: var(--rel-
|
|
85
|
+
font-family: var(--rel-fonts-font-family);
|
|
79
86
|
position: relative;
|
|
80
87
|
}
|
|
81
88
|
|
|
@@ -87,10 +94,10 @@ export class RelChart extends LitElement {
|
|
|
87
94
|
.chart-container {
|
|
88
95
|
width: 100%;
|
|
89
96
|
position: relative;
|
|
90
|
-
background: var(--rel-
|
|
91
|
-
border: 1px solid var(--rel-border-default
|
|
92
|
-
border-radius: var(--rel-
|
|
93
|
-
padding: var(--rel-spacing-
|
|
97
|
+
background: var(--rel-bg-surface);
|
|
98
|
+
border: 1px solid var(--rel-border-default);
|
|
99
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
100
|
+
padding: var(--rel-spacing-md, 16px);
|
|
94
101
|
}
|
|
95
102
|
|
|
96
103
|
svg {
|
|
@@ -100,20 +107,23 @@ export class RelChart extends LitElement {
|
|
|
100
107
|
}
|
|
101
108
|
|
|
102
109
|
.grid-line {
|
|
103
|
-
stroke: var(--rel-
|
|
110
|
+
stroke: var(--rel-border-default);
|
|
104
111
|
stroke-width: 1;
|
|
105
112
|
stroke-dasharray: 2 2;
|
|
106
113
|
}
|
|
107
114
|
|
|
108
115
|
.axis-line {
|
|
109
|
-
stroke: var(--rel-
|
|
116
|
+
stroke: var(--rel-border-default);
|
|
110
117
|
stroke-width: 1;
|
|
111
118
|
}
|
|
112
119
|
|
|
113
120
|
.axis-label {
|
|
114
|
-
fill: var(--rel-text-
|
|
115
|
-
font-
|
|
116
|
-
font-
|
|
121
|
+
fill: var(--rel-text-default);
|
|
122
|
+
font-family: var(--rel-body-xs-regular-font-family);
|
|
123
|
+
font-weight: var(--rel-body-xs-regular-font-weight);
|
|
124
|
+
font-size: var(--rel-body-xs-regular-font-size);
|
|
125
|
+
line-height: var(--rel-body-xs-regular-line-height);
|
|
126
|
+
letter-spacing: var(--rel-body-xs-regular-letter-spacing);
|
|
117
127
|
}
|
|
118
128
|
|
|
119
129
|
.bar {
|
|
@@ -126,7 +136,7 @@ export class RelChart extends LitElement {
|
|
|
126
136
|
}
|
|
127
137
|
|
|
128
138
|
.bar:focus-visible {
|
|
129
|
-
outline: 2px solid var(--rel-border-info
|
|
139
|
+
outline: 2px solid var(--rel-border-info);
|
|
130
140
|
outline-offset: 2px;
|
|
131
141
|
}
|
|
132
142
|
|
|
@@ -150,14 +160,14 @@ export class RelChart extends LitElement {
|
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
.point:focus-visible {
|
|
153
|
-
outline: 2px solid var(--rel-border-info
|
|
163
|
+
outline: 2px solid var(--rel-border-info);
|
|
154
164
|
outline-offset: 2px;
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
.legend {
|
|
158
168
|
display: flex;
|
|
159
|
-
gap: var(--rel-spacing-
|
|
160
|
-
margin-top: var(--rel-spacing-
|
|
169
|
+
gap: var(--rel-spacing-md);
|
|
170
|
+
margin-top: var(--rel-spacing-md);
|
|
161
171
|
flex-wrap: wrap;
|
|
162
172
|
justify-content: center;
|
|
163
173
|
}
|
|
@@ -165,42 +175,50 @@ export class RelChart extends LitElement {
|
|
|
165
175
|
.legend-item {
|
|
166
176
|
display: flex;
|
|
167
177
|
align-items: center;
|
|
168
|
-
gap: var(--rel-spacing-
|
|
169
|
-
|
|
170
|
-
|
|
178
|
+
gap: var(--rel-spacing-xs, 8px);
|
|
179
|
+
color: var(--rel-text-default);
|
|
180
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
181
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
182
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
183
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
184
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
171
185
|
}
|
|
172
186
|
|
|
173
187
|
.legend-color {
|
|
174
188
|
width: 12px;
|
|
175
189
|
height: 12px;
|
|
176
|
-
border-radius: var(--rel-
|
|
190
|
+
border-radius: var(--rel-border-radius-xs);
|
|
177
191
|
}
|
|
178
192
|
|
|
179
193
|
.tooltip {
|
|
180
194
|
position: absolute;
|
|
181
|
-
background: var(--rel-
|
|
182
|
-
border: 1px solid var(--rel-border-default
|
|
183
|
-
border-radius: var(--rel-
|
|
184
|
-
padding: var(--rel-spacing-
|
|
195
|
+
background: var(--rel-bg-surface);
|
|
196
|
+
border: 1px solid var(--rel-border-default);
|
|
197
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
198
|
+
padding: var(--rel-spacing-sm, 12px);
|
|
185
199
|
box-shadow: var(--rel-shadows-shadow-200);
|
|
186
200
|
pointer-events: none;
|
|
187
|
-
z-index: 100;
|
|
188
|
-
|
|
189
|
-
|
|
201
|
+
z-index: 100;
|
|
202
|
+
min-width: 120px;
|
|
203
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
204
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
205
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
206
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
207
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
190
208
|
}
|
|
191
209
|
|
|
192
210
|
.tooltip-title {
|
|
193
|
-
font-weight: var(--rel-
|
|
194
|
-
color: var(--rel-text-
|
|
195
|
-
margin-bottom: var(--rel-spacing-
|
|
211
|
+
font-weight: var(--rel-fonts-weight-body-semibold, 600);
|
|
212
|
+
color: var(--rel-text-label);
|
|
213
|
+
margin-bottom: var(--rel-spacing-xs, 8px);
|
|
196
214
|
}
|
|
197
215
|
|
|
198
216
|
.tooltip-row {
|
|
199
217
|
display: flex;
|
|
200
218
|
justify-content: space-between;
|
|
201
219
|
align-items: center;
|
|
202
|
-
gap: var(--rel-spacing-
|
|
203
|
-
margin-bottom: var(--rel-spacing-
|
|
220
|
+
gap: var(--rel-spacing-md);
|
|
221
|
+
margin-bottom: var(--rel-spacing-3xs);
|
|
204
222
|
}
|
|
205
223
|
|
|
206
224
|
.tooltip-row:last-child {
|
|
@@ -210,8 +228,8 @@ export class RelChart extends LitElement {
|
|
|
210
228
|
.tooltip-label {
|
|
211
229
|
display: flex;
|
|
212
230
|
align-items: center;
|
|
213
|
-
gap: var(--rel-spacing-
|
|
214
|
-
color: var(--rel-text-
|
|
231
|
+
gap: var(--rel-spacing-xs, 8px);
|
|
232
|
+
color: var(--rel-text-default);
|
|
215
233
|
}
|
|
216
234
|
|
|
217
235
|
.tooltip-dot {
|
|
@@ -221,8 +239,8 @@ export class RelChart extends LitElement {
|
|
|
221
239
|
}
|
|
222
240
|
|
|
223
241
|
.tooltip-value {
|
|
224
|
-
font-weight: var(--rel-
|
|
225
|
-
color: var(--rel-text-
|
|
242
|
+
font-weight: var(--rel-fonts-weight-body-semibold, 600);
|
|
243
|
+
color: var(--rel-text-label);
|
|
226
244
|
}
|
|
227
245
|
|
|
228
246
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -717,7 +735,7 @@ export class RelChart extends LitElement {
|
|
|
717
735
|
if (!data.length || !seriesConfigs.length || !this.xKey) {
|
|
718
736
|
return html`
|
|
719
737
|
<div class="chart-container" part="container">
|
|
720
|
-
<p style="text-align: center; color: var(--rel-text-placeholder
|
|
738
|
+
<p style="text-align: center; color: var(--rel-text-placeholder); padding: 40px;">
|
|
721
739
|
No data available
|
|
722
740
|
</p>
|
|
723
741
|
</div>
|
|
@@ -41,16 +41,16 @@ None exposed.
|
|
|
41
41
|
## Tokens / CSS Variables
|
|
42
42
|
|
|
43
43
|
### Semantic Tokens
|
|
44
|
-
- `--rel-
|
|
45
|
-
- `--rel-
|
|
46
|
-
- `--rel-
|
|
44
|
+
- `--rel-fonts-font-family` - Font family
|
|
45
|
+
- `--rel-body-md-regular-font-size`, `--rel-body-sm-regular-font-size` - Font sizes for label and supporting text
|
|
46
|
+
- `--rel-fonts-weight-body-medium` - Font weight for label
|
|
47
47
|
|
|
48
48
|
### Color Tokens
|
|
49
|
-
- `--rel-text-
|
|
50
|
-
- `--rel-
|
|
51
|
-
- `--rel-text-
|
|
49
|
+
- `--rel-text-label` - Checkbox border and checked background color
|
|
50
|
+
- `--rel-bg-surface` - Checkbox background and checkmark color
|
|
51
|
+
- `--rel-text-default` - Label text color
|
|
52
52
|
- `--rel-text-placeholder` - Supporting text color
|
|
53
|
-
- `--rel-
|
|
53
|
+
- `--rel-bg-danger` - Error state border and background color
|
|
54
54
|
- `--rel-border-info` - Focus outline color
|
|
55
55
|
|
|
56
56
|
## Accessibility
|
|
@@ -24,20 +24,21 @@ export class RelCheckbox extends LitElement {
|
|
|
24
24
|
|
|
25
25
|
static styles = css`
|
|
26
26
|
:host {
|
|
27
|
+
color: var(--rel-text-default);
|
|
27
28
|
display: block;
|
|
28
|
-
font-family: var(--rel-
|
|
29
|
+
font-family: var(--rel-fonts-font-family);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
.wrapper {
|
|
32
33
|
display: flex;
|
|
33
34
|
flex-direction: column;
|
|
34
|
-
gap:
|
|
35
|
+
gap: var(--rel-spacing-3xs);
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
.row {
|
|
38
39
|
display: flex;
|
|
39
40
|
align-items: center;
|
|
40
|
-
gap:
|
|
41
|
+
gap: var(--rel-spacing-xs);
|
|
41
42
|
cursor: pointer;
|
|
42
43
|
}
|
|
43
44
|
|
|
@@ -52,7 +53,7 @@ export class RelCheckbox extends LitElement {
|
|
|
52
53
|
width: 18px;
|
|
53
54
|
height: 18px;
|
|
54
55
|
border-radius: 4px;
|
|
55
|
-
border: 2px solid var(--rel-
|
|
56
|
+
border: 2px solid var(--rel-text-default);
|
|
56
57
|
background: transparent;
|
|
57
58
|
display: flex;
|
|
58
59
|
align-items: center;
|
|
@@ -62,7 +63,7 @@ export class RelCheckbox extends LitElement {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
input:focus-visible + .box {
|
|
65
|
-
outline: 2px solid var(--rel-
|
|
66
|
+
outline: 2px solid var(--rel-border-focus);
|
|
66
67
|
outline-offset: 2px;
|
|
67
68
|
}
|
|
68
69
|
|
|
@@ -74,39 +75,58 @@ export class RelCheckbox extends LitElement {
|
|
|
74
75
|
|
|
75
76
|
/* Checked — filled box, transparent checkmark (bg shows through) */
|
|
76
77
|
.checked .box {
|
|
77
|
-
background: var(--rel-
|
|
78
|
-
border-color: var(--rel-
|
|
78
|
+
background: var(--rel-bg-neutral-inverse-2);
|
|
79
|
+
border-color: var(--rel-bg-neutral-inverse-2);
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
.checked .check-icon {
|
|
82
83
|
display: block;
|
|
83
|
-
fill:
|
|
84
|
+
fill: var(--rel-text-inverse);
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
/* Indeterminate — transparent fill, dash inherits border color */
|
|
87
88
|
.indeterminate .indeterminate-icon {
|
|
88
89
|
display: block;
|
|
89
|
-
fill: var(--rel-
|
|
90
|
+
fill: var(--rel-bg-neutral-inverse-2);
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
/* Error unchecked — transparent fill, error border */
|
|
93
94
|
.error .box {
|
|
94
|
-
border-color: var(--rel-
|
|
95
|
+
border-color: var(--rel-border-danger);
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
/* Error checked — error fill, transparent checkmark */
|
|
98
99
|
.error.checked .box {
|
|
99
|
-
background: var(--rel-
|
|
100
|
-
border-color: var(--rel-
|
|
100
|
+
background: var(--rel-action-danger-fill);
|
|
101
|
+
border-color: var(--rel-action-danger-fill);
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
.error.checked .check-icon {
|
|
104
|
-
fill:
|
|
105
|
+
fill: var(--rel-action-danger-label-icons-fill);
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
/* Error indeterminate — transparent fill, dash is error color */
|
|
108
109
|
.error.indeterminate .indeterminate-icon {
|
|
109
|
-
fill: var(--rel-
|
|
110
|
+
fill: var(--rel-text-danger);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Hover (Figma State=Hover): box outline/fill and label shift text-default -> text-body.
|
|
114
|
+
Scoped to .default so error keeps its danger colors and disabled never hovers. */
|
|
115
|
+
.default .row:hover .box {
|
|
116
|
+
border-color: var(--rel-text-body);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.default .row:hover .label {
|
|
120
|
+
color: var(--rel-text-body);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.default.checked .row:hover .box {
|
|
124
|
+
background: var(--rel-text-body);
|
|
125
|
+
border-color: var(--rel-text-body);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.default.indeterminate .row:hover .indeterminate-icon {
|
|
129
|
+
fill: var(--rel-text-body);
|
|
110
130
|
}
|
|
111
131
|
|
|
112
132
|
.disabled {
|
|
@@ -124,67 +144,47 @@ export class RelCheckbox extends LitElement {
|
|
|
124
144
|
|
|
125
145
|
.disabled .label,
|
|
126
146
|
.disabled .text {
|
|
127
|
-
color: var(--rel-
|
|
147
|
+
color: var(--rel-text-disabled);
|
|
128
148
|
}
|
|
129
149
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
150
|
+
.label {
|
|
151
|
+
/* Figma: label rests on text-default; text-body is the hover color */
|
|
152
|
+
color: var(--rel-text-default);
|
|
134
153
|
|
|
135
|
-
|
|
136
|
-
background: var(--rel-gray-text-primary);
|
|
137
|
-
border-color: var(--rel-gray-text-primary);
|
|
138
|
-
}
|
|
154
|
+
font-family: var(--rel-body-lg-regular-font-family);
|
|
139
155
|
|
|
140
|
-
|
|
141
|
-
fill: var(--rel-color-bg-primary);
|
|
142
|
-
}
|
|
156
|
+
font-weight: var(--rel-body-lg-regular-font-weight);
|
|
143
157
|
|
|
144
|
-
|
|
145
|
-
fill: var(--rel-gray-text-primary);
|
|
146
|
-
}
|
|
158
|
+
font-size: var(--rel-body-lg-regular-font-size);
|
|
147
159
|
|
|
148
|
-
|
|
149
|
-
border-color: var(--rel-error-surface-default);
|
|
150
|
-
}
|
|
160
|
+
line-height: var(--rel-body-lg-regular-line-height);
|
|
151
161
|
|
|
152
|
-
|
|
153
|
-
background: var(--rel-error-surface-default);
|
|
154
|
-
border-color: var(--rel-error-surface-default);
|
|
155
|
-
}
|
|
162
|
+
letter-spacing: var(--rel-body-lg-regular-letter-spacing);
|
|
156
163
|
|
|
157
|
-
:host-context([data-theme="dark"]) .error.checked .check-icon {
|
|
158
|
-
fill: var(--rel-color-bg-primary);
|
|
159
164
|
}
|
|
160
165
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
.text {
|
|
167
|
+
color: var(--rel-text-caption);
|
|
168
|
+
padding-left: 28px;
|
|
164
169
|
|
|
165
|
-
|
|
166
|
-
color: var(--rel-gray-text-primary);
|
|
167
|
-
}
|
|
170
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
168
171
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
font-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
173
|
+
|
|
174
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
175
|
+
|
|
176
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
177
|
+
|
|
178
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
174
179
|
|
|
175
|
-
.text {
|
|
176
|
-
font-size: var(--rel-fontSizes-sm, 12px);
|
|
177
|
-
color: var(--rel-text-placeholder, #a9a9a9);
|
|
178
|
-
padding-left: 28px;
|
|
179
180
|
}
|
|
180
181
|
`;
|
|
181
182
|
|
|
182
183
|
private toggle() {
|
|
183
184
|
if (this.state === "disabled") return;
|
|
184
185
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
else this.status = "unchecked";
|
|
186
|
+
// Binary toggle — indeterminate is programmatic-only and resolves to checked on user toggle.
|
|
187
|
+
this.status = this.status === "checked" ? "unchecked" : "checked";
|
|
188
188
|
|
|
189
189
|
this.dispatchEvent(
|
|
190
190
|
new CustomEvent("rel-change", {
|
|
@@ -205,7 +205,7 @@ export class RelCheckbox extends LitElement {
|
|
|
205
205
|
|
|
206
206
|
render() {
|
|
207
207
|
return html`
|
|
208
|
-
<div class="wrapper ${this.state} ${this.status}">
|
|
208
|
+
<div part="base" class="wrapper ${this.state} ${this.status}">
|
|
209
209
|
<label class="row">
|
|
210
210
|
<input
|
|
211
211
|
type="checkbox"
|
|
@@ -215,22 +215,22 @@ export class RelCheckbox extends LitElement {
|
|
|
215
215
|
/>
|
|
216
216
|
|
|
217
217
|
<span class="box">
|
|
218
|
-
<svg class="check-icon" viewBox="0 0 18 14" fill="var(--rel-
|
|
218
|
+
<svg class="check-icon" viewBox="0 0 18 14" fill="var(--rel-text-inverse)">
|
|
219
219
|
<path
|
|
220
220
|
d="M6.44 14L0.5 7.36l1.49-1.66L6.44 10.68 16.01 0 17.5 1.66z"
|
|
221
221
|
/>
|
|
222
222
|
</svg>
|
|
223
223
|
|
|
224
|
-
<svg class="indeterminate-icon" viewBox="0 0 16 2" fill="var(--rel-
|
|
224
|
+
<svg class="indeterminate-icon" viewBox="0 0 16 2" fill="var(--rel-text-inverse)">
|
|
225
225
|
<rect width="16" height="2" />
|
|
226
226
|
</svg>
|
|
227
227
|
</span>
|
|
228
228
|
|
|
229
|
-
<span class="label">${this.label}</span>
|
|
229
|
+
<span part="label" class="label">${this.label}</span>
|
|
230
230
|
</label>
|
|
231
231
|
|
|
232
232
|
${this.supportingtext
|
|
233
|
-
? html`<span class="text">${this.supportingtext}</span>`
|
|
233
|
+
? html`<span part="helper" class="text">${this.supportingtext}</span>`
|
|
234
234
|
: null}
|
|
235
235
|
</div>
|
|
236
236
|
`;
|
|
@@ -69,27 +69,27 @@ None exposed.
|
|
|
69
69
|
## Tokens / CSS Variables
|
|
70
70
|
|
|
71
71
|
### Semantic Tokens
|
|
72
|
-
- `--rel-
|
|
73
|
-
- `--rel-
|
|
74
|
-
- `--rel-
|
|
72
|
+
- `--rel-fonts-font-family` - Font family
|
|
73
|
+
- `--rel-body-md-regular-font-size` - Font size
|
|
74
|
+
- `--rel-fonts-weight-body-medium` - Font weight
|
|
75
75
|
|
|
76
76
|
### Spacing Tokens
|
|
77
|
-
- `--rel-spacing-
|
|
78
|
-
- `--rel-spacing-
|
|
79
|
-
- `--rel-spacing-
|
|
77
|
+
- `--rel-spacing-2xs` - Padding and internal gaps
|
|
78
|
+
- `--rel-spacing-sm` - Horizontal padding
|
|
79
|
+
- `--rel-spacing-3xs` - Remove button margin
|
|
80
80
|
|
|
81
81
|
### Color Tokens (by tone)
|
|
82
|
-
- **default**: `--rel-
|
|
83
|
-
- **blue**: `--rel-
|
|
84
|
-
- **yellow**: `--rel-
|
|
85
|
-
- **red**: `--rel-
|
|
86
|
-
- **green**: `--rel-
|
|
82
|
+
- **default**: `--rel-border-default` (background), `--rel-text-default` (text)
|
|
83
|
+
- **blue**: `--rel-text-info` (background), `--rel-bg-surface` (text)
|
|
84
|
+
- **yellow**: `--rel-bg-warning` (background), `--rel-text-default` (text)
|
|
85
|
+
- **red**: `--rel-text-danger` (background), `--rel-bg-surface` (text)
|
|
86
|
+
- **green**: `--rel-text-success` (background), `--rel-bg-surface` (text)
|
|
87
87
|
|
|
88
88
|
### Border & Shadow Tokens
|
|
89
|
-
- `--rel-
|
|
90
|
-
- `--rel-
|
|
89
|
+
- `--rel-border-radius-full-rounded` - Border radius (pill shape)
|
|
90
|
+
- `--rel-stroke-sm` - Border width (used in outline mode)
|
|
91
91
|
- `--rel-shadows-shadow-100` - Hover shadow
|
|
92
|
-
- `--rel-
|
|
92
|
+
- `--rel-bg-info` - Focus outline color
|
|
93
93
|
|
|
94
94
|
## Accessibility
|
|
95
95
|
- Uses `role="button"` and `tabindex="0"` on the main chip element
|
|
@@ -108,8 +108,8 @@ None exposed.
|
|
|
108
108
|
|
|
109
109
|
## Notes / Edge Cases
|
|
110
110
|
- **Size variants**:
|
|
111
|
-
- **md** (default): `--rel-
|
|
112
|
-
- **sm**: `--rel-
|
|
111
|
+
- **md** (default): `--rel-body-md-regular-font-size` text, `--rel-spacing-2xs`/`--rel-spacing-xs` padding, 20px × 20px avatar, 16px × 16px icons
|
|
112
|
+
- **sm**: `--rel-body-sm-regular-font-size` text, `--rel-spacing-3xs`/`--rel-spacing-2xs` padding, 16px × 16px avatar, 12px × 12px icons
|
|
113
113
|
- Icons (`leadingIcon`, `trailingIcon`) must be passed as raw HTML/SVG strings via JavaScript (see examples)
|
|
114
114
|
- Icons are injected using `renderIcon()` which creates a template element and clones the content
|
|
115
115
|
- Avatar images are 20px × 20px circular (`border-radius: 50%`, `object-fit: cover`)
|