@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.
Files changed (123) hide show
  1. package/dist/components/rel-accordion/README.md +13 -13
  2. package/dist/components/rel-accordion/rel-accordion.ts +80 -45
  3. package/dist/components/rel-alert/README.md +15 -15
  4. package/dist/components/rel-alert/rel-alert.ts +161 -159
  5. package/dist/components/rel-avatar/README.md +15 -15
  6. package/dist/components/rel-avatar/rel-avatar.ts +42 -38
  7. package/dist/components/rel-badge/README.md +5 -5
  8. package/dist/components/rel-badge/rel-badge.ts +69 -17
  9. package/dist/components/rel-breadcrumb/README.md +7 -7
  10. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
  11. package/dist/components/rel-button/README.md +20 -20
  12. package/dist/components/rel-button/rel-button.ts +327 -105
  13. package/dist/components/rel-calendar/README.md +5 -5
  14. package/dist/components/rel-calendar/rel-calendar.ts +61 -45
  15. package/dist/components/rel-card/README.md +6 -6
  16. package/dist/components/rel-card/rel-card.ts +88 -35
  17. package/dist/components/rel-cardmedia/README.md +9 -9
  18. package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
  19. package/dist/components/rel-carousel/README.md +3 -3
  20. package/dist/components/rel-carousel/rel-carousel.ts +174 -90
  21. package/dist/components/rel-chart/README.md +8 -8
  22. package/dist/components/rel-chart/rel-chart.ts +59 -41
  23. package/dist/components/rel-checkbox/README.md +7 -7
  24. package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
  25. package/dist/components/rel-chip/README.md +16 -16
  26. package/dist/components/rel-chip/rel-chip.ts +143 -111
  27. package/dist/components/rel-container/README.md +11 -11
  28. package/dist/components/rel-container/rel-container.ts +35 -9
  29. package/dist/components/rel-date-picker/README.md +43 -7
  30. package/dist/components/rel-date-picker/date-format.test.ts +43 -0
  31. package/dist/components/rel-date-picker/date-format.ts +47 -0
  32. package/dist/components/rel-date-picker/rel-date-picker.ts +257 -83
  33. package/dist/components/rel-divider/README.md +9 -9
  34. package/dist/components/rel-divider/rel-divider.ts +10 -9
  35. package/dist/components/rel-drawer/README.md +1 -1
  36. package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
  37. package/dist/components/rel-drawer/rel-drawer.ts +56 -28
  38. package/dist/components/rel-kbd/README.md +20 -20
  39. package/dist/components/rel-kbd/rel-kbd.ts +119 -25
  40. package/dist/components/rel-layout/README.md +1 -1
  41. package/dist/components/rel-layout/rel-layout.ts +2 -2
  42. package/dist/components/rel-menu/README.md +15 -15
  43. package/dist/components/rel-menu/rel-menu.ts +155 -88
  44. package/dist/components/rel-menubar/README.md +20 -20
  45. package/dist/components/rel-menubar/rel-menubar.ts +47 -31
  46. package/dist/components/rel-nav-menu/README.md +21 -21
  47. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
  48. package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
  49. package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
  50. package/dist/components/rel-navbar/README.md +7 -7
  51. package/dist/components/rel-navbar/rel-navbar.ts +12 -11
  52. package/dist/components/rel-otp/README.md +3 -3
  53. package/dist/components/rel-otp/rel-otp.ts +46 -30
  54. package/dist/components/rel-pagination/README.md +18 -18
  55. package/dist/components/rel-pagination/rel-pagination.ts +141 -90
  56. package/dist/components/rel-popover/README.md +13 -13
  57. package/dist/components/rel-popover/rel-popover-content.ts +39 -14
  58. package/dist/components/rel-popover/rel-popover.ts +18 -7
  59. package/dist/components/rel-progress/README.md +5 -5
  60. package/dist/components/rel-progress/rel-progress.ts +16 -12
  61. package/dist/components/rel-radio/README.md +9 -9
  62. package/dist/components/rel-radio/rel-radio.ts +64 -50
  63. package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
  64. package/dist/components/rel-resizable/README.md +4 -4
  65. package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
  66. package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
  67. package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
  68. package/dist/components/rel-segmented-button/README.md +10 -10
  69. package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
  70. package/dist/components/rel-select/README.md +14 -14
  71. package/dist/components/rel-select/rel-select.ts +120 -188
  72. package/dist/components/rel-sheet/README.md +10 -10
  73. package/dist/components/rel-sheet/rel-sheet.ts +82 -23
  74. package/dist/components/rel-sidebar/README.md +5 -5
  75. package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
  76. package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
  77. package/dist/components/rel-slider/README.md +10 -10
  78. package/dist/components/rel-slider/rel-slider.ts +230 -57
  79. package/dist/components/rel-snackbar/README.md +9 -9
  80. package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
  81. package/dist/components/rel-stepper/README.md +10 -10
  82. package/dist/components/rel-stepper/rel-stepper.ts +110 -46
  83. package/dist/components/rel-switch/README.md +5 -5
  84. package/dist/components/rel-switch/rel-switch.ts +23 -12
  85. package/dist/components/rel-tab/README.md +13 -13
  86. package/dist/components/rel-tab/rel-tab.ts +73 -23
  87. package/dist/components/rel-table/README.md +7 -7
  88. package/dist/components/rel-table/rel-table-body.ts +2 -1
  89. package/dist/components/rel-table/rel-table-caption.ts +10 -7
  90. package/dist/components/rel-table/rel-table-cell.ts +7 -6
  91. package/dist/components/rel-table/rel-table-footer.ts +4 -3
  92. package/dist/components/rel-table/rel-table-head.ts +11 -9
  93. package/dist/components/rel-table/rel-table-header.ts +2 -1
  94. package/dist/components/rel-table/rel-table-row.ts +5 -4
  95. package/dist/components/rel-table/rel-table.ts +16 -7
  96. package/dist/components/rel-textfield/README.md +11 -11
  97. package/dist/components/rel-textfield/rel-textfield.ts +718 -397
  98. package/dist/components/rel-toast/README.md +11 -11
  99. package/dist/components/rel-toast/rel-toast.ts +33 -30
  100. package/dist/components/rel-tooltip/README.md +7 -7
  101. package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
  102. package/dist/components/rel-topbar/rel-topbar-actions.ts +5 -2
  103. package/dist/components/rel-topbar/rel-topbar-brand.ts +12 -5
  104. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +14 -8
  105. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +8 -5
  106. package/dist/components/rel-topbar/rel-topbar-item.ts +27 -22
  107. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +4 -1
  108. package/dist/components/rel-topbar/rel-topbar-profile.ts +71 -50
  109. package/dist/components/rel-topbar/rel-topbar-utilities.ts +5 -2
  110. package/dist/components/rel-topbar/rel-topbar.ts +37 -29
  111. package/dist/index.d.mts +227 -40
  112. package/dist/index.d.ts +227 -40
  113. package/dist/index.js +3930 -2247
  114. package/dist/index.js.map +1 -1
  115. package/dist/index.mjs +4311 -2629
  116. package/dist/index.mjs.map +1 -1
  117. package/dist/styles/vars.css +653 -346
  118. package/dist/vars-WY2XCF5G.css +653 -0
  119. package/package.json +3 -2
  120. package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
  121. package/dist/styles/vars-v2.css +0 -525
  122. package/dist/vars-I2PC74XD.css +0 -346
  123. 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-fontFamilies-primary` - Font family
102
- - `--rel-fontSizes-md` - Font size
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-space-sm` - Gap between elements
106
- - `--rel-spacing-space-md` - Padding
107
- - `--rel-spacing-space-2xs` - Close button padding and margin
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-surface-toast` - Default background color (dark gray)
111
- - `--rel-colors-red-secondary` - Error background color
112
- - `--rel-colors-white` - Text and focus outline color
113
- - `--rel-colors-green-primary` - Action button text color
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-borders-radius-border-radius-200` - Border radius
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-surface-toast`, `error` uses `--rel-colors-red-secondary`
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-fontFamilies-primary);
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-space-sm);
37
- background-color: var(--rel-color-text-primary);
38
- color: var(--rel-color-bg-primary);
39
- font-family: var(--rel-fontFamilies-primary);
40
- font-size: var(--rel-fontSizes-md);
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-error-surface-default);
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: inherit;
66
- font-weight: 600;
67
- font-size: 0.85rem;
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 #FFFFFF;
86
+ outline: 2px solid var(--rel-text-static-light);
79
87
  outline-offset: 2px;
80
- border-radius: 2px;
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-space-2xs);
92
- margin-left: var(--rel-spacing-space-2xs);
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 #FFFFFF;
109
+ outline: 2px solid var(--rel-text-static-light);
101
110
  outline-offset: 2px;
102
- border-radius: 2px;
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-fontFamilies-primary` - Font family
61
- - `--rel-fontSizes-sm` - Font size
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-space-xs` - Vertical padding
65
- - `--rel-spacing-space-sm` - Horizontal padding
64
+ - `--rel-spacing-xs` - Vertical padding
65
+ - `--rel-spacing-sm` - Horizontal padding
66
66
 
67
67
  ### Color Tokens
68
- - `--rel-surface-toast` - Background color (dark gray)
69
- - `--rel-colors-white` - Text color
68
+ - `--rel-bg-neutral-inverse-1` - Background color (dark gray)
69
+ - `--rel-bg-surface` - Text color
70
70
 
71
71
  ### Border Tokens
72
- - `--rel-borders-radius-border-radius-200` - Border radius
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
- @customElement("rel-tooltip")
7
- export class RelTooltip extends LitElement {
8
- @property({ type: String }) text: string = "";
9
- @property({ type: String }) position: TooltipPosition = "above";
10
- @property({ type: Boolean, attribute: "show-tail" }) showTail: boolean =
11
- false;
12
-
13
- // Stable id so aria-describedby can reference the bubble across renders.
14
- private uniqueId = Math.random().toString(36).slice(2);
15
-
16
- static styles = css`
17
- :host {
18
- display: inline-block;
19
- position: relative;
20
- }
21
-
22
- /* Tooltip container */
23
- .tooltip-bubble {
24
- position: absolute;
25
- left: 50%;
26
- transform: translateX(-50%);
27
- background-color: #1a1a1a;
28
- color: #ffffff;
29
- padding: var(--rel-spacing-space-xs, 8px)
30
- var(--rel-spacing-space-sm, 12px);
31
- border-radius: var(--rel-borders-radius-border-radius-200, 8px);
32
- font-size: var(--rel-fontSizes-sm, 12px);
33
- font-family: var(--rel-fontFamilies-primary, sans-serif);
34
- white-space: nowrap;
35
- z-index: 1000;
36
- opacity: 0;
37
- pointer-events: none;
38
- transition: opacity 0.2s ease;
39
- overflow: visible;
40
- }
41
-
42
- :host(:hover) .tooltip-bubble,
43
- :host(:focus-within) .tooltip-bubble {
44
- opacity: 1;
45
- }
46
-
47
- /* Positioning */
48
- .tooltip-bubble.above {
49
- bottom: calc(100% + 8px);
50
- }
51
-
52
- .tooltip-bubble.below {
53
- top: calc(100% + 8px);
54
- }
55
-
56
- /* Tail/Arrow */
57
- .tooltip-tail {
58
- position: absolute;
59
- left: 50%;
60
- transform: translateX(-50%);
61
- width: 0;
62
- height: 0;
63
- border-left: 6px solid transparent;
64
- border-right: 6px solid transparent;
65
- display: block;
66
- }
67
-
68
- .tooltip-bubble.above .tooltip-tail {
69
- bottom: -6px;
70
- border-top: 6px solid #1a1a1a;
71
- border-bottom: none;
72
- }
73
-
74
- .tooltip-bubble.below .tooltip-tail {
75
- top: -6px;
76
- border-bottom: 6px solid #1a1a1a;
77
- border-top: none;
78
- }
79
-
80
- :host-context([data-theme="dark"]) .tooltip-bubble,
81
- :host-context(.dark) .tooltip-bubble {
82
- background-color: #ffffff;
83
- color: #000000;
84
- }
85
-
86
- :host-context([data-theme="dark"]) .tooltip-bubble.above .tooltip-tail,
87
- :host-context(.dark) .tooltip-bubble.above .tooltip-tail {
88
- border-top-color: #ffffff;
89
- }
90
-
91
- :host-context([data-theme="dark"]) .tooltip-bubble.below .tooltip-tail,
92
- :host-context(.dark) .tooltip-bubble.below .tooltip-tail {
93
- border-bottom-color: #ffffff;
94
- }
95
- `;
96
-
97
- firstUpdated() {
98
- this.linkTrigger();
99
- }
100
-
101
- private linkTrigger() {
102
- const slot = this.shadowRoot?.querySelector("slot");
103
- if (!slot) return;
104
- const trigger = slot.assignedElements()[0];
105
- if (trigger) {
106
- trigger.setAttribute("aria-describedby", `tooltip-${this.uniqueId}`);
107
- }
108
- }
109
-
110
- render() {
111
- return html`
112
- <slot @slotchange="${this.linkTrigger}"></slot>
113
- <div
114
- class="tooltip-bubble ${this.position}"
115
- id="tooltip-${this.uniqueId}"
116
- role="tooltip"
117
- >
118
- ${this.text}
119
- ${this.showTail ? html`<span class="tooltip-tail"></span>` : ""}
120
- </div>
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-space-xs, 8px);
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-space-xs);
24
+ gap: var(--rel-spacing-xs);
21
25
  text-decoration: none;
22
- color: var(--rel-color-text-primary);
23
- font-weight: var(--rel-fontWeights-semibold);
24
- font-size: var(--rel-fontSizes-md);
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-space-xs, 8px) var(--rel-spacing-space-md, 16px);
15
- color: var(--rel-color-text-primary);
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-size: var(--rel-fontSizes-md);
18
- font-family: var(--rel-fontFamilies-primary, sans-serif);
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-color-bg-hover);
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-colors-green-tertiary, #00a86b));
28
- font-weight: var(--rel-fontWeights-semibold, 600);
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-color-bg-primary);
13
- border-radius: var(--rel-borders-radius-border-radius-200);
14
- box-shadow: var(--rel-shadow-200);
15
- padding: var(--rel-spacing-space-2xs) 0;
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