@reliability-design/web 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +153 -158
  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 +46 -11
  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 +292 -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 +154 -82
  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 +63 -19
  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 +172 -91
  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 +1 -2
  103. package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
  104. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
  105. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
  106. package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
  107. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
  108. package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
  109. package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
  110. package/dist/components/rel-topbar/rel-topbar.ts +31 -29
  111. package/dist/index.d.mts +151 -39
  112. package/dist/index.d.ts +151 -39
  113. package/dist/index.js +3544 -2289
  114. package/dist/index.js.map +1 -1
  115. package/dist/index.mjs +3876 -2622
  116. package/dist/index.mjs.map +1 -1
  117. package/dist/styles/vars.css +653 -363
  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-F54UGCHM.css +0 -363
  123. package/dist/vars-v2-VMGWTFJZ.css +0 -525
@@ -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,6 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
- import "../../styles/vars-v2.css";
4
3
 
5
4
  /**
6
5
  * @deprecated Part of the deprecated rel-topbar family. Use plain
@@ -12,7 +11,7 @@ export class RelTopbarActions extends LitElement {
12
11
  .actions {
13
12
  display: inline-flex;
14
13
  align-items: center;
15
- gap: var(--rel-spacing-space-xs, 8px);
14
+ gap: var(--rel-spacing-xs, 8px);
16
15
  }
17
16
  `;
18
17
 
@@ -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
  /**
6
5
  * @deprecated Part of the deprecated rel-topbar family. Use a plain
@@ -14,6 +13,7 @@ export class RelTopbarBrand extends LitElement {
14
13
 
15
14
  static styles = css`
16
15
  :host {
16
+ color: var(--rel-text-default);
17
17
  display: inline-flex;
18
18
  align-items: center;
19
19
  }
@@ -21,11 +21,14 @@ export class RelTopbarBrand extends LitElement {
21
21
  a {
22
22
  display: inline-flex;
23
23
  align-items: center;
24
- gap: var(--rel-spacing-space-xs);
24
+ gap: var(--rel-spacing-xs);
25
25
  text-decoration: none;
26
- color: var(--rel-color-text-primary);
27
- font-weight: var(--rel-fontWeights-semibold);
28
- 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);
29
32
  }
30
33
 
31
34
  img {
@@ -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
  /**
6
5
  * @deprecated Part of the deprecated rel-topbar family. Use `rel-menu`'s
@@ -15,21 +14,24 @@ export class RelTopbarDropdownItem extends LitElement {
15
14
  static styles = css`
16
15
  .dropdown-item {
17
16
  display: block;
18
- padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-md, 16px);
19
- color: var(--rel-color-text-primary);
17
+ padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-md, 16px);
18
+ color: var(--rel-text-default);
20
19
  text-decoration: none;
21
- font-size: var(--rel-fontSizes-md);
22
- 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);
23
25
  }
24
26
 
25
27
  .dropdown-item:hover {
26
- background: var(--rel-color-bg-hover);
28
+ background: var(--rel-action-overlay-hover);
27
29
  border-radius: 0;
28
30
  }
29
31
 
30
32
  :host([active]) .dropdown-item {
31
- color: var(--rel-topbar-item-active-color, var(--rel-colors-green-tertiary, #00a86b));
32
- 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);
33
35
  }
34
36
 
35
37
  `;
@@ -1,6 +1,5 @@
1
1
  import { LitElement, html, css } from "lit";
2
2
  import { customElement } from "lit/decorators.js";
3
- import "../../styles/vars-v2.css";
4
3
 
5
4
  /**
6
5
  * @deprecated Part of the deprecated rel-topbar family. Use `rel-menu` or
@@ -13,10 +12,10 @@ export class RelTopbarDropdown extends LitElement {
13
12
  display: flex;
14
13
  flex-direction: column;
15
14
  min-width: 160px;
16
- background: var(--rel-color-bg-primary);
17
- border-radius: var(--rel-borders-radius-border-radius-200);
18
- box-shadow: var(--rel-shadow-200);
19
- 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;
20
19
  }
21
20
  `;
22
21
 
@@ -2,7 +2,6 @@ import { LitElement, html, css } from "lit";
2
2
  import { customElement, property, state } from "lit/decorators.js";
3
3
  import "./rel-topbar-dropdown";
4
4
  import "./rel-topbar-dropdown-item";
5
- import "../../styles/vars-v2.css";
6
5
  import "@reliability-design/icons/rel-icon";
7
6
 
8
7
  /**
@@ -53,14 +52,15 @@ export class RelTopbarItem extends LitElement {
53
52
  static styles = css`
54
53
  /* ─── Component tokens ──────────────────────────────────────────── */
55
54
  :host {
56
- --_item-color: var(--rel-topbar-item-color, var(--rel-text-primary, #333));
57
- --_item-active-color: var(--rel-topbar-item-active-color, var(--rel-colors-green-tertiary, #00a86b));
58
- --_item-active-indicator: var(--rel-topbar-item-active-indicator, var(--rel-colors-green-primary, #00f49c));
59
- --_item-hover-bg: var(--rel-topbar-item-hover-bg, var(--rel-surface-secondary, #fafafa));
55
+ color: var(--rel-text-default);
56
+ --_item-color: var(--rel-topbar-item-color, var(--rel-text-default));
57
+ --_item-active-color: var(--rel-topbar-item-active-color, var(--rel-text-success));
58
+ --_item-active-indicator: var(--rel-topbar-item-active-indicator, var(--rel-bg-brand));
59
+ --_item-hover-bg: var(--rel-topbar-item-hover-bg, var(--rel-bg-surface-elevated));
60
60
 
61
61
  display: inline-block;
62
62
  position: relative;
63
- font-family: var(--rel-fontFamilies-primary, Poppins, sans-serif);
63
+ font-family: var(--rel-fonts-font-family, Poppins, sans-serif);
64
64
  }
65
65
 
66
66
  :host([hidden]) {
@@ -71,30 +71,31 @@ export class RelTopbarItem extends LitElement {
71
71
  .trigger {
72
72
  display: inline-flex;
73
73
  align-items: center;
74
- gap: var(--rel-spacing-space-2xs, 4px);
75
- padding: var(--rel-spacing-space-xs, 8px) var(--rel-spacing-space-sm, 12px);
74
+ gap: var(--rel-spacing-2xs, 4px);
75
+ padding: var(--rel-spacing-xs, 8px) var(--rel-spacing-sm, 12px);
76
76
  border: none;
77
77
  background: transparent;
78
- border-radius: var(--rel-borders-radius-border-radius-200, 8px);
78
+ border-radius: var(--rel-border-radius-sm, 8px);
79
79
  cursor: pointer;
80
- color: var(--_item-color);
81
- font-family: inherit;
82
- font-size: var(--rel-fontSizes-md, 14px);
83
- font-weight: var(--rel-fontWeights-medium, 500);
84
- line-height: var(--rel-lineHeights-md, 20px);
80
+ color: var(--_item-color);
85
81
  text-decoration: none;
86
82
  white-space: nowrap;
87
83
  position: relative;
88
84
  transition: background 0.15s ease, color 0.15s ease;
89
- box-sizing: border-box;
85
+ box-sizing: border-box;
86
+ font-family: var(--rel-body-md-medium-font-family);
87
+ font-weight: var(--rel-body-md-medium-font-weight);
88
+ font-size: var(--rel-body-md-medium-font-size);
89
+ line-height: var(--rel-body-md-medium-line-height);
90
+ letter-spacing: var(--rel-body-md-medium-letter-spacing);
90
91
  }
91
92
 
92
93
  .trigger::after {
93
94
  content: "";
94
95
  position: absolute;
95
96
  bottom: -2px;
96
- left: var(--rel-spacing-space-sm, 12px);
97
- right: var(--rel-spacing-space-sm, 12px);
97
+ left: var(--rel-spacing-sm, 12px);
98
+ right: var(--rel-spacing-sm, 12px);
98
99
  height: 2px;
99
100
  border-radius: 1px;
100
101
  background: transparent;
@@ -104,7 +105,7 @@ export class RelTopbarItem extends LitElement {
104
105
  /* Active state */
105
106
  :host([active]) .trigger {
106
107
  color: var(--_item-active-color);
107
- font-weight: var(--rel-fontWeights-semibold, 600);
108
+ font-weight: var(--rel-fonts-weight-body-semibold, 600);
108
109
  }
109
110
 
110
111
  :host([active]) .trigger::after {
@@ -163,11 +164,11 @@ export class RelTopbarItem extends LitElement {
163
164
  top: calc(100% + 6px);
164
165
  left: 0;
165
166
  min-width: 200px;
166
- background: var(--rel-color-bg-primary);
167
- border: var(--rel-borders-width-stroke-100, 1px) solid var(--rel-color-border-default);
168
- border-radius: var(--rel-borders-radius-border-radius-200, 8px);
167
+ background: var(--rel-bg-surface);
168
+ border: var(--rel-stroke-sm, 1px) solid var(--rel-border-default);
169
+ border-radius: var(--rel-border-radius-sm, 8px);
169
170
  box-shadow: var(--rel-shadows-shadow-300);
170
- padding: var(--rel-spacing-space-2xs, 4px);
171
+ padding: var(--rel-spacing-2xs, 4px);
171
172
  z-index: 200;
172
173
  display: none;
173
174
  }