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