@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
|
@@ -98,25 +98,25 @@ None exposed.
|
|
|
98
98
|
## Tokens / CSS Variables
|
|
99
99
|
|
|
100
100
|
### Semantic Tokens
|
|
101
|
-
- `--rel-
|
|
102
|
-
- `--rel-
|
|
101
|
+
- `--rel-fonts-font-family` - Font family
|
|
102
|
+
- `--rel-body-md-regular-font-size` - Font size
|
|
103
103
|
|
|
104
104
|
### Spacing Tokens
|
|
105
|
-
- `--rel-spacing-
|
|
106
|
-
- `--rel-spacing-
|
|
107
|
-
- `--rel-spacing-
|
|
105
|
+
- `--rel-spacing-sm` - Gap between elements
|
|
106
|
+
- `--rel-spacing-md` - Padding
|
|
107
|
+
- `--rel-spacing-2xs` - Close button padding and margin
|
|
108
108
|
|
|
109
109
|
### Color Tokens
|
|
110
|
-
- `--rel-
|
|
111
|
-
- `--rel-
|
|
112
|
-
- `--rel-
|
|
113
|
-
- `--rel-
|
|
110
|
+
- `--rel-bg-neutral-inverse-1` - Default background color (dark gray)
|
|
111
|
+
- `--rel-text-danger` - Error background color
|
|
112
|
+
- `--rel-bg-surface` - Text and focus outline color
|
|
113
|
+
- `--rel-bg-brand` - Action button text color
|
|
114
114
|
|
|
115
115
|
### Shadow Tokens
|
|
116
116
|
- `--rel-shadows-shadow-300` - Drop shadow
|
|
117
117
|
|
|
118
118
|
### Border Tokens
|
|
119
|
-
- `--rel-
|
|
119
|
+
- `--rel-border-radius-sm` - Border radius
|
|
120
120
|
|
|
121
121
|
## Accessibility
|
|
122
122
|
- Uses `role="status"` and `aria-live="polite"` for screen reader announcements
|
|
@@ -144,5 +144,5 @@ None exposed.
|
|
|
144
144
|
- The component includes a `fadeInUp` animation (20px translateY → 0, opacity 0 → 1) on appearance
|
|
145
145
|
- Animation disabled when `prefers-reduced-motion: reduce` is set
|
|
146
146
|
- When `visible` is false, `hidden` class applies `display: none`
|
|
147
|
-
- **Type variants**: `default` uses `--rel-
|
|
147
|
+
- **Type variants**: `default` uses `--rel-bg-neutral-inverse-1`, `error` uses `--rel-text-danger`
|
|
148
148
|
- The toast appears inline-flex, so it sizes to content width
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
2
|
import { customElement, property, state } from "lit/decorators.js";
|
|
3
|
-
import "../../styles/vars-v2.css";
|
|
4
3
|
|
|
5
4
|
export type ToastType = "default" | "error";
|
|
6
5
|
|
|
@@ -17,6 +16,7 @@ export class RelToast extends LitElement {
|
|
|
17
16
|
|
|
18
17
|
static styles = css`
|
|
19
18
|
:host {
|
|
19
|
+
color: var(--rel-text-default);
|
|
20
20
|
position: fixed;
|
|
21
21
|
bottom: 24px;
|
|
22
22
|
left: 50%;
|
|
@@ -26,27 +26,31 @@ export class RelToast extends LitElement {
|
|
|
26
26
|
width: 100%;
|
|
27
27
|
pointer-events: none;
|
|
28
28
|
z-index: var(--rel-z-toast, 9000);
|
|
29
|
-
font-family: var(--rel-
|
|
29
|
+
font-family: var(--rel-fonts-font-family);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/* Toast container */
|
|
33
33
|
.toast {
|
|
34
34
|
display: inline-flex;
|
|
35
35
|
align-items: center;
|
|
36
|
-
gap: var(--rel-spacing-
|
|
37
|
-
background-color: var(--rel-
|
|
38
|
-
color: var(--rel-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
border-radius: var(--rel-borders-radius-border-radius-200);
|
|
42
|
-
padding: var(--rel-spacing-space-md);
|
|
36
|
+
gap: var(--rel-spacing-xs);
|
|
37
|
+
background-color: var(--rel-bg-neutral-inverse-1);
|
|
38
|
+
color: var(--rel-text-inverse);
|
|
39
|
+
border-radius: var(--rel-border-radius-sm);
|
|
40
|
+
padding: var(--rel-spacing-sm) var(--rel-spacing-md);
|
|
43
41
|
box-shadow: var(--rel-shadows-shadow-300);
|
|
44
42
|
pointer-events: all;
|
|
45
43
|
animation: fadeInUp 0.25s ease;
|
|
44
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
45
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
46
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
47
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
48
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
.toast.error {
|
|
49
|
-
background-color: var(--rel-
|
|
52
|
+
background-color: var(--rel-bg-danger);
|
|
53
|
+
color: var(--rel-text-static-light);
|
|
50
54
|
}
|
|
51
55
|
|
|
52
56
|
.toast.hidden {
|
|
@@ -62,34 +66,39 @@ export class RelToast extends LitElement {
|
|
|
62
66
|
.toast-action {
|
|
63
67
|
background: transparent;
|
|
64
68
|
border: none;
|
|
65
|
-
color:
|
|
66
|
-
font-
|
|
67
|
-
font-
|
|
69
|
+
color: var(--rel-action-neutral-label-icons-fill-inverse);
|
|
70
|
+
font-family: var(--rel-action-md-font-family);
|
|
71
|
+
font-weight: var(--rel-action-md-font-weight);
|
|
72
|
+
font-size: var(--rel-action-md-font-size);
|
|
73
|
+
line-height: var(--rel-action-md-line-height);
|
|
74
|
+
letter-spacing: var(--rel-action-md-letter-spacing);
|
|
68
75
|
cursor: pointer;
|
|
69
76
|
transition: opacity 0.2s;
|
|
70
|
-
font-family: var(--rel-fontFamilies-primary);
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
.toast-action:hover {
|
|
80
|
+
background: var(--rel-bg-neutral);
|
|
81
|
+
color: var(--rel-text-default);
|
|
74
82
|
opacity: 0.75;
|
|
75
83
|
}
|
|
76
84
|
|
|
77
85
|
.toast-action:focus-visible {
|
|
78
|
-
outline: 2px solid
|
|
86
|
+
outline: 2px solid var(--rel-text-static-light);
|
|
79
87
|
outline-offset: 2px;
|
|
80
|
-
border-radius:
|
|
88
|
+
border-radius: var(--rel-border-radius-xs);
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
/* Close button */
|
|
84
92
|
.toast-close {
|
|
85
93
|
background: transparent;
|
|
94
|
+
color: var(--rel-action-neutral-label-icons-ghost);
|
|
86
95
|
border: none;
|
|
87
96
|
color: inherit;
|
|
88
97
|
font-size: 1rem;
|
|
89
98
|
cursor: pointer;
|
|
90
99
|
line-height: 1;
|
|
91
|
-
padding: var(--rel-spacing-
|
|
92
|
-
margin-left: var(--rel-spacing-
|
|
100
|
+
padding: var(--rel-spacing-2xs);
|
|
101
|
+
margin-left: var(--rel-spacing-2xs);
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
.toast-close:hover {
|
|
@@ -97,17 +106,11 @@ export class RelToast extends LitElement {
|
|
|
97
106
|
}
|
|
98
107
|
|
|
99
108
|
.toast-close:focus-visible {
|
|
100
|
-
outline: 2px solid
|
|
109
|
+
outline: 2px solid var(--rel-text-static-light);
|
|
101
110
|
outline-offset: 2px;
|
|
102
|
-
border-radius:
|
|
111
|
+
border-radius: var(--rel-border-radius-xs);
|
|
103
112
|
}
|
|
104
113
|
|
|
105
|
-
/* Dark mode overrides */
|
|
106
|
-
:host-context([data-theme="dark"]) .toast.error,
|
|
107
|
-
:host-context(.dark) .toast.error {
|
|
108
|
-
background-color: var(--rel-error-surface-default);
|
|
109
|
-
color: #ffffff;
|
|
110
|
-
}
|
|
111
114
|
|
|
112
115
|
@media (prefers-reduced-motion: reduce) {
|
|
113
116
|
.toast {
|
|
@@ -182,19 +185,19 @@ export class RelToast extends LitElement {
|
|
|
182
185
|
|
|
183
186
|
render() {
|
|
184
187
|
return html`
|
|
185
|
-
<div class="toast ${this.type} ${this.visible ? "" : "hidden"}" role="status" aria-live="polite">
|
|
186
|
-
<span class="toast-message">${this.message}</span>
|
|
188
|
+
<div part="base" class="toast ${this.type} ${this.visible ? "" : "hidden"}" role="status" aria-live="polite">
|
|
189
|
+
<span part="label" class="toast-message">${this.message}</span>
|
|
187
190
|
|
|
188
191
|
${this.actionLabel
|
|
189
192
|
? html`<button
|
|
190
|
-
class="toast-action"
|
|
193
|
+
part="action" class="toast-action"
|
|
191
194
|
@click="${this.handleActionClick}"
|
|
192
195
|
>
|
|
193
196
|
${this.actionLabel}
|
|
194
197
|
</button>`
|
|
195
198
|
: ""}
|
|
196
199
|
|
|
197
|
-
<button class="toast-close" @click="${this.close}" aria-label="Dismiss">✕</button>
|
|
200
|
+
<button part="close-button" class="toast-close" @click="${this.close}" aria-label="Dismiss">✕</button>
|
|
198
201
|
</div>
|
|
199
202
|
`;
|
|
200
203
|
}
|
|
@@ -57,19 +57,19 @@ None exposed.
|
|
|
57
57
|
## Tokens / CSS Variables
|
|
58
58
|
|
|
59
59
|
### Semantic Tokens
|
|
60
|
-
- `--rel-
|
|
61
|
-
- `--rel-
|
|
60
|
+
- `--rel-fonts-font-family` - Font family
|
|
61
|
+
- `--rel-body-sm-regular-font-size` - Font size
|
|
62
62
|
|
|
63
63
|
### Spacing Tokens
|
|
64
|
-
- `--rel-spacing-
|
|
65
|
-
- `--rel-spacing-
|
|
64
|
+
- `--rel-spacing-xs` - Vertical padding
|
|
65
|
+
- `--rel-spacing-sm` - Horizontal padding
|
|
66
66
|
|
|
67
67
|
### Color Tokens
|
|
68
|
-
- `--rel-
|
|
69
|
-
- `--rel-
|
|
68
|
+
- `--rel-bg-neutral-inverse-1` - Background color (dark gray)
|
|
69
|
+
- `--rel-bg-surface` - Text color
|
|
70
70
|
|
|
71
71
|
### Border Tokens
|
|
72
|
-
- `--rel-
|
|
72
|
+
- `--rel-border-radius-sm` - Border radius
|
|
73
73
|
|
|
74
74
|
## Accessibility
|
|
75
75
|
- Uses `role="tooltip"` on the tooltip bubble
|
|
@@ -1,123 +1,160 @@
|
|
|
1
|
-
import { LitElement, html, css } from "lit";
|
|
2
|
-
import { customElement, property } from "lit/decorators.js";
|
|
3
|
-
|
|
4
|
-
export type TooltipPosition = "above" | "below";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@property({ type: String })
|
|
10
|
-
@property({ type:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
position:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
top:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
1
|
+
import { LitElement, html, css } from "lit";
|
|
2
|
+
import { customElement, property } from "lit/decorators.js";
|
|
3
|
+
|
|
4
|
+
export type TooltipPosition = "above" | "below" | "left" | "right";
|
|
5
|
+
export type TooltipType = "single-line" | "multi-line";
|
|
6
|
+
|
|
7
|
+
@customElement("rel-tooltip")
|
|
8
|
+
export class RelTooltip extends LitElement {
|
|
9
|
+
@property({ type: String }) text: string = "";
|
|
10
|
+
@property({ type: String }) position: TooltipPosition = "above";
|
|
11
|
+
@property({ type: Boolean, attribute: "show-tail" }) showTail: boolean =
|
|
12
|
+
false;
|
|
13
|
+
|
|
14
|
+
/** Figma "Type": single-line stays on one line; multi-line wraps at a max width. */
|
|
15
|
+
@property({ type: String, reflect: true }) type: TooltipType = "single-line";
|
|
16
|
+
|
|
17
|
+
// Stable id so aria-describedby can reference the bubble across renders.
|
|
18
|
+
private uniqueId = Math.random().toString(36).slice(2);
|
|
19
|
+
|
|
20
|
+
static styles = css`
|
|
21
|
+
:host {
|
|
22
|
+
color: var(--rel-text-default);
|
|
23
|
+
display: inline-block;
|
|
24
|
+
position: relative;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Tooltip container */
|
|
28
|
+
.tooltip-bubble {
|
|
29
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
30
|
+
font-weight: var(--rel-body-md-medium-font-weight);
|
|
31
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
32
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
33
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
34
|
+
position: absolute;
|
|
35
|
+
background-color: var(--rel-bg-neutral-inverse-2);
|
|
36
|
+
color: var(--rel-text-inverse);
|
|
37
|
+
padding: var(--rel-spacing-xs, 8px)
|
|
38
|
+
var(--rel-spacing-sm, 12px);
|
|
39
|
+
border-radius: var(--rel-border-radius-sm, 8px);
|
|
40
|
+
white-space: nowrap;
|
|
41
|
+
z-index: 1000;
|
|
42
|
+
opacity: 0;
|
|
43
|
+
pointer-events: none;
|
|
44
|
+
transition: opacity 0.2s ease;
|
|
45
|
+
overflow: visible;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Figma Type=Multi Line: wrap inside a bounded bubble */
|
|
49
|
+
:host([type="multi-line"]) .tooltip-bubble {
|
|
50
|
+
white-space: normal;
|
|
51
|
+
max-width: 220px;
|
|
52
|
+
width: max-content;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host(:hover) .tooltip-bubble,
|
|
56
|
+
:host(:focus-within) .tooltip-bubble {
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Positioning */
|
|
61
|
+
.tooltip-bubble.above {
|
|
62
|
+
bottom: calc(100% + 6px);
|
|
63
|
+
left: 50%;
|
|
64
|
+
transform: translateX(-50%);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.tooltip-bubble.below {
|
|
68
|
+
top: calc(100% + 6px);
|
|
69
|
+
left: 50%;
|
|
70
|
+
transform: translateX(-50%);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.tooltip-bubble.left {
|
|
74
|
+
right: calc(100% + 6px);
|
|
75
|
+
top: 50%;
|
|
76
|
+
transform: translateY(-50%);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.tooltip-bubble.right {
|
|
80
|
+
left: calc(100% + 6px);
|
|
81
|
+
top: 50%;
|
|
82
|
+
transform: translateY(-50%);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Tail/Arrow */
|
|
86
|
+
.tooltip-tail {
|
|
87
|
+
position: absolute;
|
|
88
|
+
width: 0;
|
|
89
|
+
height: 0;
|
|
90
|
+
display: block;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.tooltip-bubble.above .tooltip-tail,
|
|
94
|
+
.tooltip-bubble.below .tooltip-tail {
|
|
95
|
+
left: 50%;
|
|
96
|
+
transform: translateX(-50%);
|
|
97
|
+
border-left: 6px solid transparent;
|
|
98
|
+
border-right: 6px solid transparent;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.tooltip-bubble.above .tooltip-tail {
|
|
102
|
+
bottom: -6px;
|
|
103
|
+
border-top: 6px solid var(--rel-bg-neutral-inverse-2);
|
|
104
|
+
border-bottom: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.tooltip-bubble.below .tooltip-tail {
|
|
108
|
+
top: -6px;
|
|
109
|
+
border-bottom: 6px solid var(--rel-bg-neutral-inverse-2);
|
|
110
|
+
border-top: none;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.tooltip-bubble.left .tooltip-tail,
|
|
114
|
+
.tooltip-bubble.right .tooltip-tail {
|
|
115
|
+
top: 50%;
|
|
116
|
+
transform: translateY(-50%);
|
|
117
|
+
border-top: 6px solid transparent;
|
|
118
|
+
border-bottom: 6px solid transparent;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.tooltip-bubble.left .tooltip-tail {
|
|
122
|
+
right: -6px;
|
|
123
|
+
border-left: 6px solid var(--rel-bg-neutral-inverse-2);
|
|
124
|
+
border-right: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.tooltip-bubble.right .tooltip-tail {
|
|
128
|
+
left: -6px;
|
|
129
|
+
border-right: 6px solid var(--rel-bg-neutral-inverse-2);
|
|
130
|
+
border-left: none;
|
|
131
|
+
}
|
|
132
|
+
`;
|
|
133
|
+
|
|
134
|
+
firstUpdated() {
|
|
135
|
+
this.linkTrigger();
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
private linkTrigger() {
|
|
139
|
+
const slot = this.shadowRoot?.querySelector("slot");
|
|
140
|
+
if (!slot) return;
|
|
141
|
+
const trigger = slot.assignedElements()[0];
|
|
142
|
+
if (trigger) {
|
|
143
|
+
trigger.setAttribute("aria-describedby", `tooltip-${this.uniqueId}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
render() {
|
|
148
|
+
return html`
|
|
149
|
+
<slot @slotchange="${this.linkTrigger}"></slot>
|
|
150
|
+
<div
|
|
151
|
+
part="panel" class="tooltip-bubble ${this.position}"
|
|
152
|
+
id="tooltip-${this.uniqueId}"
|
|
153
|
+
role="tooltip"
|
|
154
|
+
>
|
|
155
|
+
${this.text}
|
|
156
|
+
${this.showTail ? html`<span part="indicator" class="tooltip-tail"></span>` : ""}
|
|
157
|
+
</div>
|
|
158
|
+
`;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
2
|
import { customElement } from "lit/decorators.js";
|
|
3
|
-
import "../../styles/vars-v2.css";
|
|
4
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Part of the deprecated rel-topbar family. Use plain
|
|
6
|
+
* `rel-button` elements inside the "App Topbar" recipe at /docs/recipes/app-topbar.
|
|
7
|
+
*/
|
|
5
8
|
@customElement("rel-topbar-actions")
|
|
6
9
|
export class RelTopbarActions extends LitElement {
|
|
7
10
|
static styles = css`
|
|
8
11
|
.actions {
|
|
9
12
|
display: inline-flex;
|
|
10
13
|
align-items: center;
|
|
11
|
-
gap: var(--rel-spacing-
|
|
14
|
+
gap: var(--rel-spacing-xs, 8px);
|
|
12
15
|
}
|
|
13
16
|
`;
|
|
14
17
|
|
|
@@ -1,7 +1,10 @@
|
|
|
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
|
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Part of the deprecated rel-topbar family. Use a plain
|
|
6
|
+
* `<a>`/logo markup inside the "App Topbar" recipe at /docs/recipes/app-topbar.
|
|
7
|
+
*/
|
|
5
8
|
@customElement("rel-topbar-brand")
|
|
6
9
|
export class RelTopbarBrand extends LitElement {
|
|
7
10
|
@property({ type: String }) src: string = "";
|
|
@@ -10,6 +13,7 @@ export class RelTopbarBrand extends LitElement {
|
|
|
10
13
|
|
|
11
14
|
static styles = css`
|
|
12
15
|
:host {
|
|
16
|
+
color: var(--rel-text-default);
|
|
13
17
|
display: inline-flex;
|
|
14
18
|
align-items: center;
|
|
15
19
|
}
|
|
@@ -17,11 +21,14 @@ export class RelTopbarBrand extends LitElement {
|
|
|
17
21
|
a {
|
|
18
22
|
display: inline-flex;
|
|
19
23
|
align-items: center;
|
|
20
|
-
gap: var(--rel-spacing-
|
|
24
|
+
gap: var(--rel-spacing-xs);
|
|
21
25
|
text-decoration: none;
|
|
22
|
-
color: var(--rel-
|
|
23
|
-
font-
|
|
24
|
-
font-
|
|
26
|
+
color: var(--rel-text-default);
|
|
27
|
+
font-family: var(--rel-body-md-semibold-font-family);
|
|
28
|
+
font-weight: var(--rel-body-md-semibold-font-weight);
|
|
29
|
+
font-size: var(--rel-body-md-semibold-font-size);
|
|
30
|
+
line-height: var(--rel-body-md-semibold-line-height);
|
|
31
|
+
letter-spacing: var(--rel-body-md-semibold-letter-spacing);
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
img {
|
|
@@ -1,7 +1,10 @@
|
|
|
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
|
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Part of the deprecated rel-topbar family. Use `rel-menu`'s
|
|
6
|
+
* item slots or `rel-popover` content in the "App Topbar" recipe at /docs/recipes/app-topbar.
|
|
7
|
+
*/
|
|
5
8
|
@customElement("rel-topbar-dropdown-item")
|
|
6
9
|
export class RelTopbarDropdownItem extends LitElement {
|
|
7
10
|
@property({ type: String }) label: string = "";
|
|
@@ -11,21 +14,24 @@ export class RelTopbarDropdownItem extends LitElement {
|
|
|
11
14
|
static styles = css`
|
|
12
15
|
.dropdown-item {
|
|
13
16
|
display: block;
|
|
14
|
-
padding: var(--rel-spacing-
|
|
15
|
-
color: var(--rel-
|
|
17
|
+
padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-md, 16px);
|
|
18
|
+
color: var(--rel-text-default);
|
|
16
19
|
text-decoration: none;
|
|
17
|
-
font-
|
|
18
|
-
font-
|
|
20
|
+
font-family: var(--rel-body-md-regular-font-family);
|
|
21
|
+
font-weight: var(--rel-body-md-regular-font-weight);
|
|
22
|
+
font-size: var(--rel-body-md-regular-font-size);
|
|
23
|
+
line-height: var(--rel-body-md-regular-line-height);
|
|
24
|
+
letter-spacing: var(--rel-body-md-regular-letter-spacing);
|
|
19
25
|
}
|
|
20
26
|
|
|
21
27
|
.dropdown-item:hover {
|
|
22
|
-
background: var(--rel-
|
|
28
|
+
background: var(--rel-action-overlay-hover);
|
|
23
29
|
border-radius: 0;
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
:host([active]) .dropdown-item {
|
|
27
|
-
color: var(--rel-topbar-item-active-color, var(--rel-
|
|
28
|
-
font-weight: var(--rel-
|
|
33
|
+
color: var(--rel-topbar-item-active-color, var(--rel-text-success));
|
|
34
|
+
font-weight: var(--rel-fonts-weight-body-semibold, 600);
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
`;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { LitElement, html, css } from "lit";
|
|
2
2
|
import { customElement } from "lit/decorators.js";
|
|
3
|
-
import "../../styles/vars-v2.css";
|
|
4
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Part of the deprecated rel-topbar family. Use `rel-menu` or
|
|
6
|
+
* `rel-popover` for nav dropdowns in the "App Topbar" recipe at /docs/recipes/app-topbar.
|
|
7
|
+
*/
|
|
5
8
|
@customElement("rel-topbar-dropdown")
|
|
6
9
|
export class RelTopbarDropdown extends LitElement {
|
|
7
10
|
static styles = css`
|
|
@@ -9,10 +12,10 @@ export class RelTopbarDropdown extends LitElement {
|
|
|
9
12
|
display: flex;
|
|
10
13
|
flex-direction: column;
|
|
11
14
|
min-width: 160px;
|
|
12
|
-
background: var(--rel-
|
|
13
|
-
border-radius: var(--rel-
|
|
14
|
-
box-shadow: var(--rel-shadow-200);
|
|
15
|
-
padding: var(--rel-spacing-
|
|
15
|
+
background: var(--rel-bg-surface);
|
|
16
|
+
border-radius: var(--rel-border-radius-sm);
|
|
17
|
+
box-shadow: var(--rel-shadows-shadow-200);
|
|
18
|
+
padding: var(--rel-spacing-2xs) 0;
|
|
16
19
|
}
|
|
17
20
|
`;
|
|
18
21
|
|