@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.
- package/CHANGELOG.md +22 -0
- 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 +149 -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 +68 -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 +88 -25
- 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 +218 -92
- 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 +159 -39
- package/dist/index.d.ts +159 -39
- package/dist/index.js +3600 -2269
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3930 -2600
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +866 -363
- package/dist/vars-BYCEEKWJ.css +866 -0
- package/package.json +5 -3
- 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
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { LitElement, html, css, nothing } from "lit";
|
|
2
2
|
import { customElement, property, state, query } from "lit/decorators.js";
|
|
3
3
|
import "@reliability-design/icons/rel-icon";
|
|
4
|
-
import "../../styles/vars-v2.css";
|
|
5
4
|
import "../rel-button/rel-button";
|
|
6
5
|
|
|
7
6
|
interface RangeDay {
|
|
@@ -13,6 +12,7 @@ interface RangeDay {
|
|
|
13
12
|
isDraftTo: boolean;
|
|
14
13
|
isInRange: boolean;
|
|
15
14
|
isDisabled: boolean;
|
|
15
|
+
isWeekend: boolean;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
interface QuickSelect {
|
|
@@ -55,8 +55,9 @@ export class RelRangePicker extends LitElement {
|
|
|
55
55
|
|
|
56
56
|
static styles = css`
|
|
57
57
|
:host {
|
|
58
|
+
color: var(--rel-text-default);
|
|
58
59
|
display: inline-block;
|
|
59
|
-
font-family: var(--rel-
|
|
60
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
60
61
|
position: relative;
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -75,36 +76,39 @@ export class RelRangePicker extends LitElement {
|
|
|
75
76
|
display: flex;
|
|
76
77
|
align-items: center;
|
|
77
78
|
justify-content: space-between;
|
|
78
|
-
gap: var(--rel-spacing-
|
|
79
|
-
padding: var(--rel-spacing-
|
|
80
|
-
background: var(--rel-
|
|
81
|
-
border: 1px solid var(--rel-
|
|
82
|
-
border-radius: var(--rel-
|
|
83
|
-
|
|
84
|
-
font-size: var(--rel-fontSizes-md, 14px);
|
|
85
|
-
color: var(--rel-color-text-primary, #333);
|
|
79
|
+
gap: var(--rel-spacing-xs, 8px);
|
|
80
|
+
padding: var(--rel-spacing-sm, 12px) var(--rel-spacing-md, 16px);
|
|
81
|
+
background: var(--rel-bg-surface);
|
|
82
|
+
border: 1px solid var(--rel-border-default);
|
|
83
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
84
|
+
color: var(--rel-text-default);
|
|
86
85
|
cursor: pointer;
|
|
87
86
|
width: 100%;
|
|
88
87
|
text-align: left;
|
|
89
88
|
transition: border-color 0.15s ease;
|
|
89
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
90
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
91
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
92
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
93
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
90
94
|
}
|
|
91
95
|
|
|
92
96
|
.trigger-button:hover:not(:disabled) {
|
|
93
|
-
border-color: var(--rel-
|
|
97
|
+
border-color: var(--rel-border-accent);
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
.trigger-button:focus-visible {
|
|
97
|
-
outline: 2px solid var(--rel-
|
|
101
|
+
outline: 2px solid var(--rel-border-focus);
|
|
98
102
|
outline-offset: 2px;
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
.trigger-content {
|
|
102
106
|
flex: 1;
|
|
103
|
-
color: var(--rel-
|
|
107
|
+
color: var(--rel-text-default);
|
|
104
108
|
}
|
|
105
109
|
|
|
106
110
|
.trigger-content.placeholder {
|
|
107
|
-
color: var(--rel-
|
|
111
|
+
color: var(--rel-text-placeholder);
|
|
108
112
|
}
|
|
109
113
|
|
|
110
114
|
/* ── Popover shell ── */
|
|
@@ -113,9 +117,9 @@ export class RelRangePicker extends LitElement {
|
|
|
113
117
|
top: calc(100% + 4px);
|
|
114
118
|
left: 0;
|
|
115
119
|
z-index: 2147483647;
|
|
116
|
-
border: 1px solid var(--rel-
|
|
117
|
-
border-radius: var(--rel-
|
|
118
|
-
background: var(--rel-
|
|
120
|
+
border: 1px solid var(--rel-border-default);
|
|
121
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
122
|
+
background: var(--rel-bg-neutral);
|
|
119
123
|
box-shadow: var(--rel-shadows-shadow-200);
|
|
120
124
|
overflow: visible;
|
|
121
125
|
display: none;
|
|
@@ -139,6 +143,8 @@ export class RelRangePicker extends LitElement {
|
|
|
139
143
|
|
|
140
144
|
/* ── Two-panel wrapper ── */
|
|
141
145
|
.picker-wrapper {
|
|
146
|
+
font-family: var(--rel-body-lg-regular-font-family);
|
|
147
|
+
font-weight: var(--rel-body-lg-regular-font-weight);
|
|
142
148
|
display: flex;
|
|
143
149
|
flex-direction: row;
|
|
144
150
|
align-items: stretch;
|
|
@@ -149,8 +155,9 @@ export class RelRangePicker extends LitElement {
|
|
|
149
155
|
width: 280px;
|
|
150
156
|
flex-shrink: 0;
|
|
151
157
|
flex-grow: 0;
|
|
152
|
-
border-right: 1px solid var(--rel-
|
|
153
|
-
padding:
|
|
158
|
+
border-right: 1px solid var(--rel-border-default);
|
|
159
|
+
padding: var(--rel-spacing-sm);
|
|
160
|
+
background: var(--rel-bg-surface-elevated);
|
|
154
161
|
display: flex;
|
|
155
162
|
flex-direction: column;
|
|
156
163
|
gap: 0;
|
|
@@ -166,31 +173,32 @@ export class RelRangePicker extends LitElement {
|
|
|
166
173
|
display: flex;
|
|
167
174
|
align-items: center;
|
|
168
175
|
justify-content: space-between;
|
|
169
|
-
padding: 10px
|
|
176
|
+
padding: 10px var(--rel-spacing-sm);
|
|
170
177
|
cursor: pointer;
|
|
171
|
-
font-
|
|
172
|
-
font-weight: var(--rel-
|
|
173
|
-
font-
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
font-family: var(--rel-body-sm-medium-font-family);
|
|
179
|
+
font-weight: var(--rel-body-sm-medium-font-weight);
|
|
180
|
+
font-size: var(--rel-body-sm-medium-font-size);
|
|
181
|
+
line-height: var(--rel-body-sm-medium-line-height);
|
|
182
|
+
letter-spacing: var(--rel-body-sm-medium-letter-spacing);
|
|
183
|
+
color: var(--rel-action-neutral-label-icons-link);
|
|
184
|
+
background: var(--rel-bg-neutral-elevated-1);
|
|
176
185
|
border: none;
|
|
177
|
-
border-radius: var(--rel-
|
|
186
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
178
187
|
width: 100%;
|
|
179
188
|
white-space: nowrap;
|
|
180
189
|
overflow: hidden;
|
|
181
190
|
text-overflow: ellipsis;
|
|
182
191
|
transition: background 0.15s ease;
|
|
183
|
-
line-height: 1.3;
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
.preset-item:hover:not(.active) {
|
|
187
|
-
background: var(--rel-
|
|
195
|
+
background: var(--rel-action-overlay-hover);
|
|
188
196
|
}
|
|
189
197
|
|
|
190
198
|
.preset-item.active {
|
|
191
|
-
background:
|
|
192
|
-
color:
|
|
193
|
-
font-weight: var(--rel-
|
|
199
|
+
background: var(--rel-bg-neutral-inverse-2);
|
|
200
|
+
color: var(--rel-text-inverse);
|
|
201
|
+
font-weight: var(--rel-body-sm-semibold-font-weight);
|
|
194
202
|
}
|
|
195
203
|
|
|
196
204
|
.preset-item.full-width {
|
|
@@ -203,7 +211,7 @@ export class RelRangePicker extends LitElement {
|
|
|
203
211
|
align-items: center;
|
|
204
212
|
gap: 8px;
|
|
205
213
|
padding: 14px 8px 4px;
|
|
206
|
-
border-top: 1px solid var(--rel-
|
|
214
|
+
border-top: 1px solid var(--rel-border-default);
|
|
207
215
|
margin-top: auto;
|
|
208
216
|
}
|
|
209
217
|
|
|
@@ -217,31 +225,36 @@ export class RelRangePicker extends LitElement {
|
|
|
217
225
|
position: absolute;
|
|
218
226
|
top: -8px;
|
|
219
227
|
left: 10px;
|
|
220
|
-
|
|
221
|
-
font-
|
|
222
|
-
|
|
223
|
-
|
|
228
|
+
/* Figma: the FROM/TO tag is the nested TextField's floating label (body-sm-regular) */
|
|
229
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
230
|
+
font-weight: var(--rel-body-sm-regular-font-weight);
|
|
231
|
+
font-size: var(--rel-body-sm-regular-font-size);
|
|
232
|
+
line-height: var(--rel-body-sm-regular-line-height);
|
|
233
|
+
letter-spacing: var(--rel-body-sm-regular-letter-spacing);
|
|
234
|
+
color: var(--rel-text-body);
|
|
235
|
+
background: var(--rel-bg-surface);
|
|
224
236
|
padding: 0 3px;
|
|
225
|
-
line-height: 1;
|
|
226
237
|
}
|
|
227
238
|
|
|
228
239
|
.date-input-value {
|
|
229
240
|
display: block;
|
|
230
|
-
border: 1px solid var(--rel-
|
|
231
|
-
border-radius: var(--rel-
|
|
241
|
+
border: 1px solid var(--rel-border-default);
|
|
242
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
232
243
|
padding: 6px 8px;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
font-family: var(--rel-fontFamilies-primary, Poppins, sans-serif);
|
|
236
|
-
color: var(--rel-color-text-primary, #333);
|
|
237
|
-
background: var(--rel-color-bg-primary, #fff);
|
|
244
|
+
color: var(--rel-text-default);
|
|
245
|
+
background: var(--rel-bg-surface);
|
|
238
246
|
width: 100%;
|
|
239
247
|
box-sizing: border-box;
|
|
248
|
+
font-family: var(--rel-body-md-semibold-font-family);
|
|
249
|
+
font-weight: var(--rel-body-md-semibold-font-weight);
|
|
250
|
+
font-size: var(--rel-body-md-semibold-font-size);
|
|
251
|
+
line-height: var(--rel-body-md-semibold-line-height);
|
|
252
|
+
letter-spacing: var(--rel-body-md-semibold-letter-spacing);
|
|
240
253
|
}
|
|
241
254
|
|
|
242
255
|
.date-input-value.empty {
|
|
243
|
-
color: var(--rel-
|
|
244
|
-
font-weight: var(--rel-
|
|
256
|
+
color: var(--rel-text-placeholder);
|
|
257
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
245
258
|
}
|
|
246
259
|
|
|
247
260
|
/* ── Right panel: calendar ── */
|
|
@@ -263,24 +276,27 @@ export class RelRangePicker extends LitElement {
|
|
|
263
276
|
}
|
|
264
277
|
|
|
265
278
|
.month-label {
|
|
266
|
-
font-
|
|
267
|
-
font-weight: var(--rel-
|
|
268
|
-
|
|
279
|
+
font-family: var(--rel-body-lg-semibold-font-family);
|
|
280
|
+
font-weight: var(--rel-body-lg-semibold-font-weight);
|
|
281
|
+
font-size: var(--rel-body-lg-regular-font-size);
|
|
282
|
+
line-height: var(--rel-body-lg-regular-line-height);
|
|
283
|
+
letter-spacing: var(--rel-body-lg-regular-letter-spacing);
|
|
284
|
+
color: var(--rel-text-label);
|
|
269
285
|
}
|
|
270
286
|
|
|
271
287
|
.nav-btn {
|
|
272
288
|
background: none;
|
|
273
289
|
border: none;
|
|
274
290
|
cursor: pointer;
|
|
275
|
-
color: var(--rel-
|
|
276
|
-
padding:
|
|
277
|
-
border-radius: var(--rel-
|
|
291
|
+
color: var(--rel-action-neutral-label-icons-ghost);
|
|
292
|
+
padding: var(--rel-spacing-2xs);
|
|
293
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
278
294
|
display: flex;
|
|
279
295
|
align-items: center;
|
|
280
296
|
transition: background 0.15s ease;
|
|
281
297
|
}
|
|
282
298
|
|
|
283
|
-
.nav-btn:hover { background: var(--rel-
|
|
299
|
+
.nav-btn:hover { background: var(--rel-action-overlay-hover); }
|
|
284
300
|
|
|
285
301
|
/* ── Weekday header ── */
|
|
286
302
|
.week-header {
|
|
@@ -290,10 +306,14 @@ export class RelRangePicker extends LitElement {
|
|
|
290
306
|
}
|
|
291
307
|
|
|
292
308
|
.week-day {
|
|
293
|
-
|
|
294
|
-
font-weight: var(--rel-fontWeights-semibold, 600);
|
|
295
|
-
color: var(--rel-color-text-secondary, #9e9e9e);
|
|
309
|
+
color: var(--rel-text-body);
|
|
296
310
|
padding: 2px 0;
|
|
311
|
+
/* Figma: sm-regular family + xs-medium weight on sm-medium metrics */
|
|
312
|
+
font-family: var(--rel-body-sm-regular-font-family);
|
|
313
|
+
font-weight: var(--rel-body-xs-medium-font-weight);
|
|
314
|
+
font-size: var(--rel-body-sm-medium-font-size);
|
|
315
|
+
line-height: var(--rel-body-sm-medium-line-height);
|
|
316
|
+
letter-spacing: var(--rel-body-sm-medium-letter-spacing);
|
|
297
317
|
text-align: center;
|
|
298
318
|
}
|
|
299
319
|
|
|
@@ -323,15 +343,15 @@ export class RelRangePicker extends LitElement {
|
|
|
323
343
|
}
|
|
324
344
|
|
|
325
345
|
.day-cell.in-range {
|
|
326
|
-
background: var(--rel-
|
|
346
|
+
background: var(--rel-bg-neutral-elevated-2);
|
|
327
347
|
}
|
|
328
348
|
|
|
329
349
|
.day-cell.range-start:not(.range-end) {
|
|
330
|
-
background: linear-gradient(to right, transparent 50%, var(--rel-
|
|
350
|
+
background: linear-gradient(to right, transparent 50%, var(--rel-bg-neutral-elevated-2) 50%);
|
|
331
351
|
}
|
|
332
352
|
|
|
333
353
|
.day-cell.range-end:not(.range-start) {
|
|
334
|
-
background: linear-gradient(to left, transparent 50%, var(--rel-
|
|
354
|
+
background: linear-gradient(to left, transparent 50%, var(--rel-bg-neutral-elevated-2) 50%);
|
|
335
355
|
}
|
|
336
356
|
|
|
337
357
|
.day-cell.range-start.range-end {
|
|
@@ -346,72 +366,51 @@ export class RelRangePicker extends LitElement {
|
|
|
346
366
|
align-items: center;
|
|
347
367
|
justify-content: center;
|
|
348
368
|
border-radius: 50%;
|
|
349
|
-
font-
|
|
350
|
-
font-weight: var(--rel-
|
|
351
|
-
font-
|
|
352
|
-
|
|
369
|
+
font-family: var(--rel-body-sm-medium-font-family);
|
|
370
|
+
font-weight: var(--rel-body-sm-medium-font-weight);
|
|
371
|
+
font-size: var(--rel-body-sm-medium-font-size);
|
|
372
|
+
line-height: var(--rel-body-sm-medium-line-height);
|
|
373
|
+
letter-spacing: var(--rel-body-sm-medium-letter-spacing);
|
|
374
|
+
color: var(--rel-text-default);
|
|
353
375
|
position: relative;
|
|
354
376
|
z-index: 1;
|
|
355
377
|
transition: background 0.15s ease;
|
|
356
|
-
line-height: 1;
|
|
357
378
|
}
|
|
358
379
|
|
|
359
380
|
.day-cell:not(.disabled):not(.other-month):not(.range-start):not(.range-end):hover .day-inner {
|
|
360
|
-
background: var(--rel-
|
|
381
|
+
background: var(--rel-action-overlay-hover);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/* Pressed (Figma State=Active): elevated-2 fill on the day circle */
|
|
385
|
+
.day-cell:not(.disabled):not(.other-month):not(.range-start):not(.range-end):active .day-inner {
|
|
386
|
+
background: var(--rel-bg-neutral-elevated-2);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/* Weekend (Figma Day of a week=Weekend): 70% text opacity unless a range endpoint */
|
|
390
|
+
.day-cell.weekend:not(.range-start):not(.range-end) .day-inner {
|
|
391
|
+
opacity: 0.7;
|
|
361
392
|
}
|
|
362
393
|
|
|
363
394
|
/* Today: green outline */
|
|
364
395
|
.day-cell.today:not(.range-start):not(.range-end) .day-inner {
|
|
365
|
-
|
|
396
|
+
font-weight: var(--rel-body-md-medium-font-weight);
|
|
397
|
+
border: 2px solid var(--rel-border-brand);
|
|
366
398
|
}
|
|
367
399
|
|
|
368
400
|
/* Range endpoints: dark fill */
|
|
369
401
|
.day-cell.range-start .day-inner,
|
|
370
402
|
.day-cell.range-end .day-inner {
|
|
371
|
-
background:
|
|
372
|
-
color:
|
|
373
|
-
font-weight: var(--rel-
|
|
403
|
+
background: var(--rel-action-brand-fill);
|
|
404
|
+
color: var(--rel-action-brand-label-icons-primary);
|
|
405
|
+
font-weight: var(--rel-body-sm-semibold-font-weight);
|
|
374
406
|
}
|
|
375
407
|
|
|
376
408
|
/* Today AND endpoint: green ring + dark fill */
|
|
377
409
|
.day-cell.today.range-start .day-inner,
|
|
378
410
|
.day-cell.today.range-end .day-inner {
|
|
379
|
-
background:
|
|
380
|
-
color:
|
|
381
|
-
border: 2px solid var(--rel-
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/* ── Dark mode overrides ── */
|
|
385
|
-
:host-context([data-theme="dark"]) .day-cell.in-range,
|
|
386
|
-
:host-context(.dark) .day-cell.in-range {
|
|
387
|
-
background: var(--rel-color-bg-selected, #404040);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
:host-context([data-theme="dark"]) .day-cell.range-start:not(.range-end),
|
|
391
|
-
:host-context(.dark) .day-cell.range-start:not(.range-end) {
|
|
392
|
-
background: linear-gradient(to right, transparent 50%, var(--rel-color-bg-selected, #404040) 50%);
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
:host-context([data-theme="dark"]) .day-cell.range-end:not(.range-start),
|
|
396
|
-
:host-context(.dark) .day-cell.range-end:not(.range-start) {
|
|
397
|
-
background: linear-gradient(to left, transparent 50%, var(--rel-color-bg-selected, #404040) 50%);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
:host-context([data-theme="dark"]) .day-cell.range-start .day-inner,
|
|
401
|
-
:host-context([data-theme="dark"]) .day-cell.range-end .day-inner,
|
|
402
|
-
:host-context(.dark) .day-cell.range-start .day-inner,
|
|
403
|
-
:host-context(.dark) .day-cell.range-end .day-inner {
|
|
404
|
-
background: #F5F5F5;
|
|
405
|
-
color: #1A1A1A;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
:host-context([data-theme="dark"]) .day-cell.today.range-start .day-inner,
|
|
409
|
-
:host-context([data-theme="dark"]) .day-cell.today.range-end .day-inner,
|
|
410
|
-
:host-context(.dark) .day-cell.today.range-start .day-inner,
|
|
411
|
-
:host-context(.dark) .day-cell.today.range-end .day-inner {
|
|
412
|
-
background: #F5F5F5;
|
|
413
|
-
color: #1A1A1A;
|
|
414
|
-
border: 2px solid var(--rel-colors-green-primary, #00f49c);
|
|
411
|
+
background: var(--rel-action-brand-fill);
|
|
412
|
+
color: var(--rel-action-brand-label-icons-primary);
|
|
413
|
+
border: 2px solid var(--rel-border-brand);
|
|
415
414
|
}
|
|
416
415
|
|
|
417
416
|
/* ── Footer ── */
|
|
@@ -420,7 +419,7 @@ export class RelRangePicker extends LitElement {
|
|
|
420
419
|
align-items: center;
|
|
421
420
|
justify-content: space-between;
|
|
422
421
|
padding-top: 12px;
|
|
423
|
-
border-top: 1px solid var(--rel-
|
|
422
|
+
border-top: 1px solid var(--rel-border-default);
|
|
424
423
|
margin-top: auto;
|
|
425
424
|
gap: 8px;
|
|
426
425
|
}
|
|
@@ -783,6 +782,7 @@ export class RelRangePicker extends LitElement {
|
|
|
783
782
|
isDraftTo: false,
|
|
784
783
|
isInRange: false,
|
|
785
784
|
isDisabled: true,
|
|
785
|
+
isWeekend: date.getDay() === 0 || date.getDay() === 6,
|
|
786
786
|
});
|
|
787
787
|
}
|
|
788
788
|
|
|
@@ -807,6 +807,7 @@ export class RelRangePicker extends LitElement {
|
|
|
807
807
|
isDraftTo,
|
|
808
808
|
isInRange,
|
|
809
809
|
isDisabled: this.isDateDisabled(date),
|
|
810
|
+
isWeekend: date.getDay() === 0 || date.getDay() === 6,
|
|
810
811
|
});
|
|
811
812
|
}
|
|
812
813
|
|
|
@@ -822,6 +823,7 @@ export class RelRangePicker extends LitElement {
|
|
|
822
823
|
isDraftTo: false,
|
|
823
824
|
isInRange: false,
|
|
824
825
|
isDisabled: true,
|
|
826
|
+
isWeekend: date.getDay() === 0 || date.getDay() === 6,
|
|
825
827
|
});
|
|
826
828
|
}
|
|
827
829
|
|
|
@@ -896,7 +898,7 @@ export class RelRangePicker extends LitElement {
|
|
|
896
898
|
`
|
|
897
899
|
: html`
|
|
898
900
|
<button
|
|
899
|
-
class="trigger-button"
|
|
901
|
+
part="trigger" class="trigger-button"
|
|
900
902
|
type="button"
|
|
901
903
|
?disabled=${this.disabled}
|
|
902
904
|
aria-haspopup="dialog"
|
|
@@ -914,23 +916,23 @@ export class RelRangePicker extends LitElement {
|
|
|
914
916
|
`}
|
|
915
917
|
|
|
916
918
|
${isPopup && this.open
|
|
917
|
-
? html`<div class="backdrop" @click=${this.cancelPopover}></div>`
|
|
919
|
+
? html`<div part="overlay" class="backdrop" @click=${this.cancelPopover}></div>`
|
|
918
920
|
: nothing}
|
|
919
921
|
|
|
920
922
|
<div
|
|
921
|
-
class="popover ${this.open ? "open" : ""} ${isPopup ? "popup" : ""}"
|
|
923
|
+
part="panel" class="popover ${this.open ? "open" : ""} ${isPopup ? "popup" : ""}"
|
|
922
924
|
role="dialog"
|
|
923
925
|
aria-label="Select date range"
|
|
924
926
|
>
|
|
925
927
|
<div class="picker-wrapper">
|
|
926
928
|
|
|
927
929
|
<!-- ── Left: Quick select ── -->
|
|
928
|
-
<div class="presets">
|
|
930
|
+
<div part="list" class="presets">
|
|
929
931
|
<div class="presets-grid" role="list" aria-label="Quick date selections">
|
|
930
932
|
${quickSelects.map(
|
|
931
933
|
(qs) => html`
|
|
932
934
|
<button
|
|
933
|
-
class="preset-item ${qs.fullWidth ? "full-width" : ""} ${this.draftActivePreset === qs.label ? "active" : ""}"
|
|
935
|
+
part="option" class="preset-item ${qs.fullWidth ? "full-width" : ""} ${this.draftActivePreset === qs.label ? "active" : ""}"
|
|
934
936
|
type="button"
|
|
935
937
|
role="listitem"
|
|
936
938
|
?disabled=${this.disabled}
|
|
@@ -940,8 +942,8 @@ export class RelRangePicker extends LitElement {
|
|
|
940
942
|
<span>${qs.label}</span>
|
|
941
943
|
${this.draftActivePreset === qs.label
|
|
942
944
|
? html`<svg width="18" height="18" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
943
|
-
<circle cx="12" cy="12" r="12" fill="
|
|
944
|
-
<path d="M7 12.5l3.5 3.5 6.5-7" stroke="
|
|
945
|
+
<circle cx="12" cy="12" r="12" fill="var(--rel-bg-brand)"/>
|
|
946
|
+
<path d="M7 12.5l3.5 3.5 6.5-7" stroke="var(--rel-text-static-dark)" stroke-width="2"
|
|
945
947
|
stroke-linecap="round" stroke-linejoin="round"/>
|
|
946
948
|
</svg>`
|
|
947
949
|
: nothing}
|
|
@@ -971,7 +973,7 @@ export class RelRangePicker extends LitElement {
|
|
|
971
973
|
|
|
972
974
|
<div class="calendar-header">
|
|
973
975
|
<button
|
|
974
|
-
class="nav-btn"
|
|
976
|
+
part="action" class="nav-btn"
|
|
975
977
|
type="button"
|
|
976
978
|
aria-label="Previous month"
|
|
977
979
|
@click=${this.previousMonth}
|
|
@@ -980,7 +982,7 @@ export class RelRangePicker extends LitElement {
|
|
|
980
982
|
</button>
|
|
981
983
|
<span class="month-label">${this.getMonthName()} ${this.viewYear}</span>
|
|
982
984
|
<button
|
|
983
|
-
class="nav-btn"
|
|
985
|
+
part="action" class="nav-btn"
|
|
984
986
|
type="button"
|
|
985
987
|
aria-label="Next month"
|
|
986
988
|
@click=${this.nextMonth}
|
|
@@ -1000,7 +1002,7 @@ export class RelRangePicker extends LitElement {
|
|
|
1000
1002
|
</div>
|
|
1001
1003
|
|
|
1002
1004
|
<div
|
|
1003
|
-
class="calendar-grid"
|
|
1005
|
+
part="list" class="calendar-grid"
|
|
1004
1006
|
role="grid"
|
|
1005
1007
|
aria-label="Select date range"
|
|
1006
1008
|
@mouseleave=${() => { this.hoverDate = null; }}
|
|
@@ -1014,6 +1016,7 @@ export class RelRangePicker extends LitElement {
|
|
|
1014
1016
|
day.isToday ? "today" : "",
|
|
1015
1017
|
day.isDisabled ? "disabled" : "",
|
|
1016
1018
|
!day.isCurrentMonth ? "other-month" : "",
|
|
1019
|
+
day.isWeekend ? "weekend" : "",
|
|
1017
1020
|
]
|
|
1018
1021
|
.filter(Boolean)
|
|
1019
1022
|
.join(" ");
|
|
@@ -1033,7 +1036,7 @@ export class RelRangePicker extends LitElement {
|
|
|
1033
1036
|
})}
|
|
1034
1037
|
</div>
|
|
1035
1038
|
|
|
1036
|
-
<div class="calendar-footer">
|
|
1039
|
+
<div part="footer" class="calendar-footer">
|
|
1037
1040
|
<rel-button
|
|
1038
1041
|
variant="secondary"
|
|
1039
1042
|
size="small"
|
|
@@ -124,10 +124,10 @@ Draggable separator between panels.
|
|
|
124
124
|
## Styling
|
|
125
125
|
|
|
126
126
|
All styling uses Reliability Design System tokens:
|
|
127
|
-
- Borders: `--rel-
|
|
128
|
-
- Colors: `--rel-
|
|
129
|
-
- Spacing: `--rel-spacing
|
|
130
|
-
- Border radius: `--rel-
|
|
127
|
+
- Borders: `--rel-stroke-sm`
|
|
128
|
+
- Colors: `--rel-bg-neutral-elevated-*`, `--rel-bg-info`, `--rel-bg-surface`
|
|
129
|
+
- Spacing: `--rel-spacing-*`
|
|
130
|
+
- Border radius: `--rel-border-radius-*`
|
|
131
131
|
|
|
132
132
|
Panels have `overflow: auto` by default for scrollable content.
|
|
133
133
|
|
|
@@ -9,7 +9,9 @@ export class RelResizableGroup extends LitElement {
|
|
|
9
9
|
* PUBLIC API
|
|
10
10
|
* ======================= */
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// reflect: CSS targets :host([direction="…"]) for flex-direction — without
|
|
13
|
+
// reflection, setting the property in JS leaves the layout unchanged.
|
|
14
|
+
@property({ type: String, reflect: true }) direction: "horizontal" | "vertical" = "horizontal";
|
|
13
15
|
|
|
14
16
|
/* =======================
|
|
15
17
|
* INTERNAL STATE
|
|
@@ -28,6 +30,7 @@ export class RelResizableGroup extends LitElement {
|
|
|
28
30
|
|
|
29
31
|
static styles = css`
|
|
30
32
|
:host {
|
|
33
|
+
color: var(--rel-text-default);
|
|
31
34
|
display: flex;
|
|
32
35
|
width: 100%;
|
|
33
36
|
height: 100%;
|
|
@@ -135,10 +138,18 @@ export class RelResizableGroup extends LitElement {
|
|
|
135
138
|
* ======================= */
|
|
136
139
|
|
|
137
140
|
private onPointerDown = (e: PointerEvent) => {
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
// Find the handle anywhere in the composed path — a pointerdown on the
|
|
142
|
+
// visible `.grabber` (which lives inside the handle's shadow DOM) makes
|
|
143
|
+
// composedPath()[0] a <div>, not the handle, so indexing [0] would abort
|
|
144
|
+
// the drag whenever the user grabs the obvious target.
|
|
145
|
+
const handle = e
|
|
146
|
+
.composedPath()
|
|
147
|
+
.find(
|
|
148
|
+
(el): el is RelResizableHandle =>
|
|
149
|
+
el instanceof HTMLElement && el.tagName === "REL-RESIZABLE-HANDLE"
|
|
150
|
+
);
|
|
151
|
+
if (!handle) return;
|
|
140
152
|
|
|
141
|
-
const handle = target as RelResizableHandle;
|
|
142
153
|
const handleIndex = this.handles.indexOf(handle);
|
|
143
154
|
if (handleIndex === -1) return;
|
|
144
155
|
|
|
@@ -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-resizable-handle")
|
|
6
5
|
export class RelResizableHandle extends LitElement {
|
|
@@ -26,13 +25,14 @@ export class RelResizableHandle extends LitElement {
|
|
|
26
25
|
|
|
27
26
|
static styles = css`
|
|
28
27
|
:host {
|
|
28
|
+
color: var(--rel-text-default);
|
|
29
29
|
display: flex;
|
|
30
30
|
align-items: center;
|
|
31
31
|
justify-content: center;
|
|
32
32
|
flex-shrink: 0;
|
|
33
33
|
position: relative;
|
|
34
34
|
outline: none;
|
|
35
|
-
background: var(--rel-
|
|
35
|
+
background: var(--rel-border-default);
|
|
36
36
|
transition: background 0.15s ease;
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -50,17 +50,21 @@ export class RelResizableHandle extends LitElement {
|
|
|
50
50
|
|
|
51
51
|
:host(:hover),
|
|
52
52
|
:host(:focus-visible) {
|
|
53
|
-
background: var(--rel-
|
|
53
|
+
background: var(--rel-bg-neutral-elevated-1);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:host([dragging]) {
|
|
57
|
+
background: var(--rel-bg-neutral-elevated-3);
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
:host(:focus-visible) {
|
|
57
|
-
outline: 2px solid var(--rel-
|
|
61
|
+
outline: 2px solid var(--rel-border-focus);
|
|
58
62
|
outline-offset: 2px;
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
.grabber {
|
|
62
|
-
background: var(--rel-
|
|
63
|
-
border-radius: var(--rel-
|
|
66
|
+
background: var(--rel-text-body);
|
|
67
|
+
border-radius: var(--rel-border-radius-full-rounded);
|
|
64
68
|
transition: background 0.15s ease;
|
|
65
69
|
}
|
|
66
70
|
|
|
@@ -76,15 +80,15 @@ export class RelResizableHandle extends LitElement {
|
|
|
76
80
|
|
|
77
81
|
:host(:hover) .grabber,
|
|
78
82
|
:host(:focus-visible) .grabber {
|
|
79
|
-
background: var(--rel-
|
|
83
|
+
background: var(--rel-bg-surface);
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
:host([data-dragging]) {
|
|
83
|
-
background: var(--rel-
|
|
87
|
+
background: var(--rel-bg-neutral-elevated-1);
|
|
84
88
|
}
|
|
85
89
|
|
|
86
90
|
:host([data-dragging]) .grabber {
|
|
87
|
-
background: var(--rel-
|
|
91
|
+
background: var(--rel-text-default);
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -23,7 +23,18 @@ export class RelResizablePanel extends LitElement {
|
|
|
23
23
|
* ======================= */
|
|
24
24
|
|
|
25
25
|
static styles = css`
|
|
26
|
+
/* Default typography for slotted panel headings (Figma headings-md) */
|
|
27
|
+
::slotted(h1), ::slotted(h2), ::slotted(h3), ::slotted(h4) {
|
|
28
|
+
font-family: var(--rel-headings-md-font-family);
|
|
29
|
+
font-weight: var(--rel-headings-md-font-weight);
|
|
30
|
+
font-size: var(--rel-headings-md-font-size);
|
|
31
|
+
line-height: var(--rel-headings-md-line-height);
|
|
32
|
+
letter-spacing: var(--rel-headings-md-letter-spacing);
|
|
33
|
+
}
|
|
34
|
+
|
|
26
35
|
:host {
|
|
36
|
+
padding: var(--rel-spacing-md);
|
|
37
|
+
color: var(--rel-text-default);
|
|
27
38
|
display: flex;
|
|
28
39
|
flex-direction: column;
|
|
29
40
|
overflow: auto;
|