@reliability-design/web 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/components/rel-accordion/README.md +13 -13
  3. package/dist/components/rel-accordion/rel-accordion.ts +80 -45
  4. package/dist/components/rel-alert/README.md +15 -15
  5. package/dist/components/rel-alert/rel-alert.ts +149 -158
  6. package/dist/components/rel-avatar/README.md +15 -15
  7. package/dist/components/rel-avatar/rel-avatar.ts +42 -38
  8. package/dist/components/rel-badge/README.md +5 -5
  9. package/dist/components/rel-badge/rel-badge.ts +46 -11
  10. package/dist/components/rel-breadcrumb/README.md +7 -7
  11. package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +16 -13
  12. package/dist/components/rel-button/README.md +20 -20
  13. package/dist/components/rel-button/rel-button.ts +292 -105
  14. package/dist/components/rel-calendar/README.md +5 -5
  15. package/dist/components/rel-calendar/rel-calendar.ts +68 -45
  16. package/dist/components/rel-card/README.md +6 -6
  17. package/dist/components/rel-card/rel-card.ts +88 -35
  18. package/dist/components/rel-cardmedia/README.md +9 -9
  19. package/dist/components/rel-cardmedia/rel-cardmedia.ts +27 -20
  20. package/dist/components/rel-carousel/README.md +3 -3
  21. package/dist/components/rel-carousel/rel-carousel.ts +174 -90
  22. package/dist/components/rel-chart/README.md +8 -8
  23. package/dist/components/rel-chart/rel-chart.ts +59 -41
  24. package/dist/components/rel-checkbox/README.md +7 -7
  25. package/dist/components/rel-checkbox/rel-checkbox.ts +61 -61
  26. package/dist/components/rel-chip/README.md +16 -16
  27. package/dist/components/rel-chip/rel-chip.ts +143 -111
  28. package/dist/components/rel-container/README.md +11 -11
  29. package/dist/components/rel-container/rel-container.ts +35 -9
  30. package/dist/components/rel-date-picker/README.md +43 -7
  31. package/dist/components/rel-date-picker/date-format.test.ts +43 -0
  32. package/dist/components/rel-date-picker/date-format.ts +47 -0
  33. package/dist/components/rel-date-picker/rel-date-picker.ts +154 -82
  34. package/dist/components/rel-divider/README.md +9 -9
  35. package/dist/components/rel-divider/rel-divider.ts +10 -9
  36. package/dist/components/rel-drawer/README.md +1 -1
  37. package/dist/components/rel-drawer/rel-drawer-footer.ts +1 -1
  38. package/dist/components/rel-drawer/rel-drawer.ts +88 -25
  39. package/dist/components/rel-kbd/README.md +20 -20
  40. package/dist/components/rel-kbd/rel-kbd.ts +119 -25
  41. package/dist/components/rel-layout/README.md +1 -1
  42. package/dist/components/rel-layout/rel-layout.ts +2 -2
  43. package/dist/components/rel-menu/README.md +15 -15
  44. package/dist/components/rel-menu/rel-menu.ts +155 -88
  45. package/dist/components/rel-menubar/README.md +20 -20
  46. package/dist/components/rel-menubar/rel-menubar.ts +47 -31
  47. package/dist/components/rel-nav-menu/README.md +21 -21
  48. package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +17 -14
  49. package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +33 -14
  50. package/dist/components/rel-nav-menu/rel-nav-menu.ts +14 -7
  51. package/dist/components/rel-navbar/README.md +7 -7
  52. package/dist/components/rel-navbar/rel-navbar.ts +12 -11
  53. package/dist/components/rel-otp/README.md +3 -3
  54. package/dist/components/rel-otp/rel-otp.ts +46 -30
  55. package/dist/components/rel-pagination/README.md +18 -18
  56. package/dist/components/rel-pagination/rel-pagination.ts +141 -90
  57. package/dist/components/rel-popover/README.md +13 -13
  58. package/dist/components/rel-popover/rel-popover-content.ts +39 -14
  59. package/dist/components/rel-popover/rel-popover.ts +18 -7
  60. package/dist/components/rel-progress/README.md +5 -5
  61. package/dist/components/rel-progress/rel-progress.ts +16 -12
  62. package/dist/components/rel-radio/README.md +9 -9
  63. package/dist/components/rel-radio/rel-radio.ts +64 -50
  64. package/dist/components/rel-range-picker/rel-range-picker.ts +120 -117
  65. package/dist/components/rel-resizable/README.md +4 -4
  66. package/dist/components/rel-resizable/rel-resizable-group.ts +15 -4
  67. package/dist/components/rel-resizable/rel-resizable-handle.ts +13 -9
  68. package/dist/components/rel-resizable/rel-resizable-panel.ts +11 -0
  69. package/dist/components/rel-segmented-button/README.md +10 -10
  70. package/dist/components/rel-segmented-button/rel-segmented-button.ts +39 -40
  71. package/dist/components/rel-select/README.md +14 -14
  72. package/dist/components/rel-select/rel-select.ts +120 -188
  73. package/dist/components/rel-sheet/README.md +10 -10
  74. package/dist/components/rel-sheet/rel-sheet.ts +82 -23
  75. package/dist/components/rel-sidebar/README.md +5 -5
  76. package/dist/components/rel-sidebar/rel-sidebar.ts +75 -60
  77. package/dist/components/rel-skeleton/rel-skeleton.ts +8 -13
  78. package/dist/components/rel-slider/README.md +10 -10
  79. package/dist/components/rel-slider/rel-slider.ts +230 -57
  80. package/dist/components/rel-snackbar/README.md +9 -9
  81. package/dist/components/rel-snackbar/rel-snackbar.ts +44 -32
  82. package/dist/components/rel-stepper/README.md +10 -10
  83. package/dist/components/rel-stepper/rel-stepper.ts +110 -46
  84. package/dist/components/rel-switch/README.md +5 -5
  85. package/dist/components/rel-switch/rel-switch.ts +23 -12
  86. package/dist/components/rel-tab/README.md +13 -13
  87. package/dist/components/rel-tab/rel-tab.ts +63 -19
  88. package/dist/components/rel-table/README.md +7 -7
  89. package/dist/components/rel-table/rel-table-body.ts +2 -1
  90. package/dist/components/rel-table/rel-table-caption.ts +10 -7
  91. package/dist/components/rel-table/rel-table-cell.ts +7 -6
  92. package/dist/components/rel-table/rel-table-footer.ts +4 -3
  93. package/dist/components/rel-table/rel-table-head.ts +11 -9
  94. package/dist/components/rel-table/rel-table-header.ts +2 -1
  95. package/dist/components/rel-table/rel-table-row.ts +5 -4
  96. package/dist/components/rel-table/rel-table.ts +16 -7
  97. package/dist/components/rel-textfield/README.md +11 -11
  98. package/dist/components/rel-textfield/rel-textfield.ts +218 -92
  99. package/dist/components/rel-toast/README.md +11 -11
  100. package/dist/components/rel-toast/rel-toast.ts +33 -30
  101. package/dist/components/rel-tooltip/README.md +7 -7
  102. package/dist/components/rel-tooltip/rel-tooltip.ts +160 -123
  103. package/dist/components/rel-topbar/rel-topbar-actions.ts +1 -2
  104. package/dist/components/rel-topbar/rel-topbar-brand.ts +8 -5
  105. package/dist/components/rel-topbar/rel-topbar-dropdown-item.ts +10 -8
  106. package/dist/components/rel-topbar/rel-topbar-dropdown.ts +4 -5
  107. package/dist/components/rel-topbar/rel-topbar-item.ts +23 -22
  108. package/dist/components/rel-topbar/rel-topbar-mobile-panel.ts +0 -1
  109. package/dist/components/rel-topbar/rel-topbar-profile.ts +68 -50
  110. package/dist/components/rel-topbar/rel-topbar-utilities.ts +1 -2
  111. package/dist/components/rel-topbar/rel-topbar.ts +31 -29
  112. package/dist/index.d.mts +159 -39
  113. package/dist/index.d.ts +159 -39
  114. package/dist/index.js +3600 -2269
  115. package/dist/index.js.map +1 -1
  116. package/dist/index.mjs +3930 -2600
  117. package/dist/index.mjs.map +1 -1
  118. package/dist/styles/vars.css +866 -363
  119. package/dist/vars-BYCEEKWJ.css +866 -0
  120. package/package.json +5 -3
  121. package/dist/components/rel-range-picker/rel-range-picker.css +0 -349
  122. package/dist/styles/vars-v2.css +0 -525
  123. package/dist/vars-F54UGCHM.css +0 -363
  124. package/dist/vars-v2-VMGWTFJZ.css +0 -525
@@ -165,33 +165,33 @@ Full keyboard accessibility support:
165
165
  The component uses design tokens from the Reliability Design System:
166
166
 
167
167
  ### Colors
168
- - `--rel-colors-gray-light` - Nav container background
169
- - `--rel-colors-gray-background` - Trigger hover/active state, panel item hover
170
- - `--rel-colors-gray-border` - Borders
171
- - `--rel-colors-gray-heading` - Text color
172
- - `--rel-colors-gray-placeholder` - Description text
173
- - `--rel-colors-white` - Panel background
174
- - `--rel-colors-blue-primary` - Focus outline
168
+ - `--rel-bg-surface-elevated` - Nav container background
169
+ - `--rel-bg-neutral-elevated-1` - Trigger hover/active state, panel item hover
170
+ - `--rel-border-default` - Borders
171
+ - `--rel-text-label` - Text color
172
+ - `--rel-text-placeholder` - Description text
173
+ - `--rel-bg-surface` - Panel background
174
+ - `--rel-bg-info` - Focus outline
175
175
 
176
176
  ### Typography
177
- - `--rel-fontFamilies-primary` - Font family (Poppins)
178
- - `--rel-fontWeights-medium` - Trigger text weight
179
- - `--rel-fontWeights-semibold` - Panel item title weight
180
- - `--rel-fontSizes-sm` - Trigger and title text size
181
- - `--rel-fontSizes-xs` - Description text size
182
- - `--rel-lineHeights-xs` - Description line height
177
+ - `--rel-fonts-font-family` - Font family (Poppins)
178
+ - `--rel-fonts-weight-body-medium` - Trigger text weight
179
+ - `--rel-fonts-weight-body-semibold` - Panel item title weight
180
+ - `--rel-body-sm-regular-font-size` - Trigger and title text size
181
+ - `--rel-body-xs-regular-font-size` - Description text size
182
+ - `--rel-body-xs-regular-line-height` - Description line height
183
183
 
184
184
  ### Spacing
185
- - `--rel-spacing-space-3xs` (2px) - Compact spacing
186
- - `--rel-spacing-space-2xs` (4px) - Container padding, panel gaps
187
- - `--rel-spacing-space-xs` (8px) - Trigger padding, panel padding
188
- - `--rel-spacing-space-sm` (12px) - Panel item padding
189
- - `--rel-spacing-space-md` (16px) - Trigger horizontal padding
185
+ - `--rel-spacing-3xs` (2px) - Compact spacing
186
+ - `--rel-spacing-2xs` (4px) - Container padding, panel gaps
187
+ - `--rel-spacing-xs` (8px) - Trigger padding, panel padding
188
+ - `--rel-spacing-sm` (12px) - Panel item padding
189
+ - `--rel-spacing-md` (16px) - Trigger horizontal padding
190
190
 
191
191
  ### Borders & Effects
192
- - `--rel-borders-width-stroke-100` (1px) - Border width
193
- - `--rel-borders-radius-border-radius-100` (2px) - Panel item radius
194
- - `--rel-borders-radius-border-radius-200` (8px) - Container and panel radius
192
+ - `--rel-stroke-sm` (1px) - Border width
193
+ - `--rel-border-radius-xs` (2px) - Panel item radius
194
+ - `--rel-border-radius-sm` (8px) - Container and panel radius
195
195
  - `--rel-shadows-shadow-300` - Panel drop shadow
196
196
 
197
197
  ### Z-Index
@@ -17,41 +17,44 @@ export class RelNavMenuItem extends LitElement {
17
17
 
18
18
  static styles = css`
19
19
  :host {
20
+ color: var(--rel-text-default);
20
21
  display: inline-block;
21
22
  }
22
23
 
23
24
  .trigger {
24
25
  display: inline-flex;
25
26
  align-items: center;
26
- gap: var(--rel-spacing-space-2xs);
27
- padding: var(--rel-spacing-space-xs) var(--rel-spacing-space-md);
28
- font-family: var(--rel-fontFamilies-primary);
29
- font-size: var(--rel-fontSizes-sm);
30
- font-weight: var(--rel-fontWeights-medium);
31
- color: var(--rel-colors-gray-heading);
27
+ gap: var(--rel-spacing-2xs);
28
+ padding: var(--rel-spacing-xs) var(--rel-spacing-md);
29
+ color: var(--rel-text-label);
32
30
  background: transparent;
33
31
  border: none;
34
- border-radius: var(--rel-borders-radius-border-radius-200);
32
+ border-radius: var(--rel-border-radius-sm);
35
33
  cursor: pointer;
36
34
  transition: all 0.15s ease;
37
35
  text-decoration: none;
38
36
  outline: none;
39
37
  user-select: none;
38
+ font-family: var(--rel-body-sm-medium-font-family);
39
+ font-weight: var(--rel-body-sm-medium-font-weight);
40
+ font-size: var(--rel-body-sm-medium-font-size);
41
+ line-height: var(--rel-body-sm-medium-line-height);
42
+ letter-spacing: var(--rel-body-sm-medium-letter-spacing);
40
43
  }
41
44
 
42
45
  .trigger:hover:not(:disabled) {
43
- background: var(--rel-surface-secondary, #fafafa);
46
+ background: var(--rel-bg-surface-elevated);
44
47
  }
45
48
 
46
49
  .trigger:focus-visible {
47
- outline: 2px solid var(--rel-colors-blue-primary);
50
+ outline: 2px solid var(--rel-border-focus);
48
51
  outline-offset: 2px;
49
52
  }
50
53
 
51
54
  /* Active state driven by :host([open]) — no external class manipulation needed */
52
55
  :host([open]) .trigger,
53
56
  .trigger.active {
54
- background: var(--rel-surface-secondary, #fafafa);
57
+ background: var(--rel-bg-surface-elevated);
55
58
  }
56
59
 
57
60
  .trigger:disabled {
@@ -69,11 +72,11 @@ export class RelNavMenuItem extends LitElement {
69
72
  position: fixed;
70
73
  min-width: 320px;
71
74
  max-width: 600px;
72
- background: var(--rel-colors-white);
73
- border: var(--rel-borders-width-stroke-100) solid var(--rel-colors-gray-border);
74
- border-radius: var(--rel-borders-radius-border-radius-200);
75
+ background: var(--rel-bg-surface);
76
+ border: var(--rel-stroke-sm) solid var(--rel-border-default);
77
+ border-radius: var(--rel-border-radius-sm);
75
78
  box-shadow: var(--rel-shadows-shadow-300);
76
- padding: var(--rel-spacing-space-xs);
79
+ padding: var(--rel-spacing-xs);
77
80
  z-index: 1000;
78
81
  display: none;
79
82
  }
@@ -5,6 +5,7 @@ import { customElement } from "lit/decorators.js";
5
5
  export class RelNavMenuPanel extends LitElement {
6
6
  static styles = css`
7
7
  :host {
8
+ color: var(--rel-text-default);
8
9
  display: block;
9
10
  width: 100%;
10
11
  }
@@ -12,34 +13,52 @@ export class RelNavMenuPanel extends LitElement {
12
13
  .panel-content {
13
14
  display: flex;
14
15
  flex-direction: column;
15
- gap: var(--rel-spacing-space-2xs);
16
- padding: var(--rel-spacing-space-xs);
16
+ gap: var(--rel-spacing-2xs);
17
+ padding: var(--rel-spacing-xs);
17
18
  }
18
19
 
19
20
  ::slotted(a[data-nav-item]) {
20
21
  display: block;
21
- padding: var(--rel-spacing-space-sm);
22
- border-radius: var(--rel-borders-radius-border-radius-100);
22
+ padding: var(--rel-spacing-sm);
23
+ border-radius: var(--rel-border-radius-xs);
23
24
  transition: background 0.15s ease;
24
25
  text-decoration: none;
25
26
  color: inherit;
26
27
  }
27
28
 
28
29
  ::slotted(a[data-nav-item]:hover) {
29
- background: var(--rel-surface-secondary, #fafafa);
30
+ background: var(--rel-bg-surface-elevated);
30
31
  }
31
32
 
32
- ::slotted([data-title]) {
33
- font-size: var(--rel-fontSizes-sm);
34
- font-weight: var(--rel-fontWeights-semibold);
35
- color: var(--rel-colors-gray-heading);
36
- margin-bottom: var(--rel-spacing-space-3xs);
33
+ ::slotted([data-title]) {
34
+ color: var(--rel-text-label);
35
+ margin-bottom: var(--rel-spacing-3xs);
36
+
37
+ font-family: var(--rel-body-sm-semibold-font-family);
38
+
39
+ font-weight: var(--rel-body-sm-semibold-font-weight);
40
+
41
+ font-size: var(--rel-body-sm-semibold-font-size);
42
+
43
+ line-height: var(--rel-body-sm-semibold-line-height);
44
+
45
+ letter-spacing: var(--rel-body-sm-semibold-letter-spacing);
46
+
37
47
  }
38
48
 
39
- ::slotted([data-desc]) {
40
- font-size: var(--rel-fontSizes-xs);
41
- color: var(--rel-colors-gray-placeholder);
42
- line-height: var(--rel-lineHeights-xs);
49
+ ::slotted([data-desc]) {
50
+ color: var(--rel-text-placeholder);
51
+
52
+ font-family: var(--rel-body-xs-regular-font-family);
53
+
54
+ font-weight: var(--rel-body-xs-regular-font-weight);
55
+
56
+ font-size: var(--rel-body-xs-regular-font-size);
57
+
58
+ line-height: var(--rel-body-xs-regular-line-height);
59
+
60
+ letter-spacing: var(--rel-body-xs-regular-letter-spacing);
61
+
43
62
  }
44
63
  `;
45
64
 
@@ -4,6 +4,12 @@ import { RelNavMenuItem } from "./rel-nav-menu-item";
4
4
 
5
5
  type DensityType = "comfortable" | "compact";
6
6
 
7
+ /**
8
+ * @deprecated rel-nav-menu has no Figma design in RelDS 2.0 and is excluded
9
+ * from the parity contract. Use rel-menu (with the select-option/fixed/fit
10
+ * types) or the App Topbar recipe instead. It remains exported for
11
+ * compatibility but will be removed in a future major version.
12
+ */
7
13
  @customElement("rel-nav-menu")
8
14
  export class RelNavMenu extends LitElement {
9
15
  @property({ type: String, reflect: true }) open = "";
@@ -18,22 +24,23 @@ export class RelNavMenu extends LitElement {
18
24
 
19
25
  static styles = css`
20
26
  :host {
27
+ color: var(--rel-text-default);
21
28
  display: block;
22
- font-family: var(--rel-fontFamilies-primary);
29
+ font-family: var(--rel-fonts-font-family);
23
30
  }
24
31
 
25
32
  .nav-container {
26
33
  display: flex;
27
34
  align-items: center;
28
- gap: var(--rel-spacing-space-3xs);
29
- padding: var(--rel-spacing-space-2xs);
30
- background: var(--rel-colors-gray-light);
31
- border-radius: var(--rel-borders-radius-border-radius-200);
32
- border: var(--rel-borders-width-stroke-100) solid var(--rel-colors-gray-border);
35
+ gap: var(--rel-spacing-3xs);
36
+ padding: var(--rel-spacing-2xs);
37
+ background: var(--rel-bg-surface-elevated);
38
+ border-radius: var(--rel-border-radius-sm);
39
+ border: var(--rel-stroke-sm) solid var(--rel-border-default);
33
40
  }
34
41
 
35
42
  .nav-container.compact {
36
- padding: var(--rel-spacing-space-3xs);
43
+ padding: var(--rel-spacing-3xs);
37
44
  gap: 0;
38
45
  }
39
46
 
@@ -85,20 +85,20 @@ None.
85
85
  ## Tokens / CSS Variables
86
86
 
87
87
  ### Semantic Tokens
88
- - `--rel-fontFamilies-primary` - Font family
88
+ - `--rel-fonts-font-family` - Font family
89
89
 
90
90
  ### Color Tokens
91
- - `--rel-colors-white` - Background color
92
- - `--rel-text-primary` - Text color
91
+ - `--rel-bg-surface` - Background color
92
+ - `--rel-text-default` - Text color
93
93
  - `--rel-border-default` - Bottom border color
94
94
 
95
95
  ### Spacing Tokens
96
- - `--rel-spacing-space-lg` - Desktop horizontal padding
97
- - `--rel-spacing-space-md` - Tablet/mobile horizontal padding, brand-actions gap, content padding
98
- - `--rel-spacing-space-sm` - Action items gap, mobile padding
96
+ - `--rel-spacing-lg` - Desktop horizontal padding
97
+ - `--rel-spacing-md` - Tablet/mobile horizontal padding, brand-actions gap, content padding
98
+ - `--rel-spacing-sm` - Action items gap, mobile padding
99
99
 
100
100
  ### Custom Properties
101
- - `--rel-spacing-space-xl` - Content area horizontal padding
101
+ - `--rel-spacing-xl` - Content area horizontal padding
102
102
 
103
103
  ## Accessibility
104
104
  - Uses `role="navigation"` on the main navbar container
@@ -24,6 +24,7 @@ export class RelNavbar extends LitElement {
24
24
 
25
25
  static styles = css`
26
26
  :host {
27
+ color: var(--rel-text-default);
27
28
  display: block;
28
29
  width: 100%;
29
30
  }
@@ -38,47 +39,47 @@ export class RelNavbar extends LitElement {
38
39
  display: flex;
39
40
  align-items: center;
40
41
  justify-content: space-between;
41
- background: var(--rel-colors-white, #fff);
42
- color: var(--rel-text-primary, #333);
43
- border-bottom: 1px solid var(--rel-border-default, #ddd);
42
+ background: var(--rel-bg-surface);
43
+ color: var(--rel-text-default);
44
+ border-bottom: 1px solid var(--rel-border-default);
44
45
  height: 64px;
45
- padding: 0 var(--rel-spacing-space-lg);
46
+ padding: 0 var(--rel-spacing-lg);
46
47
  box-sizing: border-box;
47
- font-family: var(--rel-fontFamilies-primary, sans-serif);
48
+ font-family: var(--rel-fonts-font-family, sans-serif);
48
49
  }
49
50
 
50
51
  .brand {
51
52
  display: flex;
52
53
  align-items: center;
53
- gap: var(--rel-spacing-space-md);
54
+ gap: var(--rel-spacing-md);
54
55
  flex-shrink: 0;
55
56
  }
56
57
 
57
58
  .content {
58
59
  display: flex;
59
60
  align-items: center;
60
- gap: var(--rel-spacing-space-sm);
61
+ gap: var(--rel-spacing-sm);
61
62
  flex: 1;
62
63
  justify-content: flex-start;
63
- padding: 0 var(--rel-spacing-space-xl);
64
+ padding: 0 var(--rel-spacing-xl);
64
65
  }
65
66
 
66
67
  .actions {
67
68
  display: flex;
68
69
  align-items: center;
69
- gap: var(--rel-spacing-space-sm);
70
+ gap: var(--rel-spacing-sm);
70
71
  flex-shrink: 0;
71
72
  }
72
73
 
73
74
  /* Mobile/Tablet variants */
74
75
  :host([device="tablet"]) .navbar {
75
76
  height: 56px;
76
- padding: 0 var(--rel-spacing-space-md);
77
+ padding: 0 var(--rel-spacing-md);
77
78
  }
78
79
 
79
80
  :host([device="mobile"]) .navbar {
80
81
  height: 56px;
81
- padding: 0 var(--rel-spacing-space-sm);
82
+ padding: 0 var(--rel-spacing-sm);
82
83
  }
83
84
 
84
85
  :host([device="mobile"]) .content {
@@ -251,7 +251,7 @@ The OTP component uses design system tokens for all styling. Customize via CSS p
251
251
 
252
252
  ```css
253
253
  rel-otp::part(cell) {
254
- border-color: var(--rel-colors-blue-primary);
254
+ border-color: var(--rel-bg-info);
255
255
  }
256
256
 
257
257
  rel-otp::part(cell):focus {
@@ -259,12 +259,12 @@ rel-otp::part(cell):focus {
259
259
  }
260
260
 
261
261
  rel-otp::part(separator) {
262
- color: var(--rel-colors-blue-secondary);
262
+ color: var(--rel-bg-info-light);
263
263
  }
264
264
 
265
265
  /* Custom invalid styling */
266
266
  rel-otp[invalid]::part(cell) {
267
- border-color: var(--rel-colors-red-secondary);
267
+ border-color: var(--rel-text-danger);
268
268
  animation: shake 0.3s;
269
269
  }
270
270
 
@@ -21,7 +21,9 @@ export class RelOtp extends LitElement {
21
21
  @property({ type: String, attribute: "aria-label" }) ariaLabel: string | null = null;
22
22
  @property({ type: Boolean, reflect: true }) invalid = false;
23
23
  @property({ type: Boolean, attribute: "show-separator" }) showSeparator = true;
24
- @property({ type: String }) size: "sm" | "md" | "lg" = "md";
24
+ // reflect: CSS targets :host([size="sm"|"lg"]) — without reflection,
25
+ // setting `el.size = "lg"` as a property silently applies no styles.
26
+ @property({ type: String, reflect: true }) size: "sm" | "md" | "lg" = "md";
25
27
 
26
28
  @state() private cells: string[] = [];
27
29
  @query(".hidden-input") private hiddenInput?: HTMLInputElement;
@@ -30,8 +32,9 @@ export class RelOtp extends LitElement {
30
32
 
31
33
  static styles = css`
32
34
  :host {
35
+ color: var(--rel-text-default);
33
36
  display: inline-block;
34
- font-family: var(--rel-fontFamilies-primary);
37
+ font-family: var(--rel-fonts-font-family);
35
38
  }
36
39
 
37
40
  :host([disabled]) {
@@ -42,24 +45,27 @@ export class RelOtp extends LitElement {
42
45
  .otp-root {
43
46
  display: inline-flex;
44
47
  align-items: center;
45
- gap: var(--rel-spacing-space-2xs);
48
+ gap: var(--rel-spacing-xs);
46
49
  position: relative;
47
50
  }
48
51
 
49
52
  .otp-group {
50
53
  display: flex;
51
- gap: var(--rel-spacing-space-2xs);
54
+ gap: var(--rel-spacing-2xs);
52
55
  }
53
56
 
54
57
  .otp-separator {
55
58
  display: flex;
56
59
  align-items: center;
57
60
  justify-content: center;
58
- color: var(--rel-gray-divider-default);
59
- font-size: var(--rel-fontSizes-lg);
60
- font-weight: var(--rel-fontWeights-semibold);
61
+ color: var(--rel-border-default);
61
62
  user-select: none;
62
- padding: 0 var(--rel-spacing-space-3xs);
63
+ padding: 0 var(--rel-spacing-3xs);
64
+ font-family: var(--rel-action-xl-font-family);
65
+ font-weight: var(--rel-action-xl-font-weight);
66
+ font-size: var(--rel-action-xl-font-size);
67
+ line-height: var(--rel-action-xl-line-height);
68
+ letter-spacing: var(--rel-action-xl-letter-spacing);
63
69
  }
64
70
 
65
71
  .otp-separator.hidden {
@@ -69,49 +75,59 @@ export class RelOtp extends LitElement {
69
75
  .otp-cell {
70
76
  width: 40px;
71
77
  height: 48px;
72
- border: var(--rel-borders-width-stroke-100) solid var(--rel-color-border-default);
73
- border-radius: var(--rel-borders-radius-border-radius-200);
74
- background: var(--rel-color-bg-primary);
75
- font-family: var(--rel-fontFamilies-primary);
76
- font-size: var(--rel-fontSizes-lg);
77
- font-weight: var(--rel-fontWeights-medium);
78
+ border: var(--rel-stroke-sm) solid var(--rel-border-default);
79
+ border-radius: var(--rel-border-radius-sm);
80
+ background: var(--rel-bg-neutral);
78
81
  text-align: center;
79
- color: var(--rel-color-text-primary);
82
+ color: var(--rel-text-default);
80
83
  outline: none;
81
84
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
82
- caret-color: var(--rel-color-text-primary);
85
+ caret-color: var(--rel-text-default);
86
+ font-family: var(--rel-body-lg-regular-font-family);
87
+ font-weight: var(--rel-body-lg-regular-font-weight);
88
+ font-size: var(--rel-body-lg-regular-font-size);
89
+ line-height: var(--rel-body-lg-regular-line-height);
90
+ letter-spacing: var(--rel-body-lg-regular-letter-spacing);
83
91
  }
84
92
 
85
93
  /* Size variants */
86
94
  :host([size="sm"]) .otp-cell {
87
95
  width: 36px;
88
96
  height: 40px;
89
- font-size: var(--rel-fontSizes-md);
97
+ font-family: var(--rel-body-md-regular-font-family);
98
+ font-weight: var(--rel-body-md-regular-font-weight);
99
+ font-size: var(--rel-body-md-regular-font-size);
100
+ line-height: var(--rel-body-md-regular-line-height);
101
+ letter-spacing: var(--rel-body-md-regular-letter-spacing);
90
102
  }
91
103
 
92
104
  :host([size="lg"]) .otp-cell {
93
105
  width: 48px;
94
106
  height: 56px;
95
- font-size: var(--rel-fontSizes-xl);
107
+ font-family: var(--rel-body-xl-regular-font-family);
108
+ font-weight: var(--rel-body-xl-regular-font-weight);
109
+ font-size: var(--rel-body-xl-regular-font-size);
110
+ line-height: var(--rel-body-xl-regular-line-height);
111
+ letter-spacing: var(--rel-body-xl-regular-letter-spacing);
96
112
  }
97
113
 
98
114
  .otp-cell::placeholder {
99
- color: var(--rel-color-text-placeholder);
115
+ color: var(--rel-text-body);
100
116
  opacity: 0.6;
101
117
  }
102
118
 
103
119
  .otp-cell:hover:not(:disabled):not(:read-only) {
104
- border-color: var(--rel-color-text-primary);
120
+ border-color: var(--rel-border-strong);
105
121
  }
106
122
 
107
123
  .otp-cell:focus-visible {
108
- border-color: var(--rel-color-text-heading);
109
- box-shadow: 0 0 0 2px var(--rel-color-border-default);
124
+ border-color: var(--rel-border-accent);
125
+ box-shadow: 0 0 0 2px var(--rel-border-default);
110
126
  }
111
127
 
112
128
  .otp-cell:disabled {
113
- background: var(--rel-color-bg-secondary);
114
- color: var(--rel-color-text-disabled);
129
+ background: var(--rel-bg-surface-elevated);
130
+ color: var(--rel-text-disabled);
115
131
  cursor: not-allowed;
116
132
  }
117
133
 
@@ -120,18 +136,18 @@ export class RelOtp extends LitElement {
120
136
  }
121
137
 
122
138
  .otp-cell:read-only {
123
- background: var(--rel-color-bg-tertiary);
139
+ background: var(--rel-bg-neutral-elevated-1);
124
140
  cursor: default;
125
141
  }
126
142
 
127
143
  /* Invalid state */
128
144
  :host([invalid]) .otp-cell {
129
- border-color: var(--rel-border-error);
145
+ border-color: var(--rel-border-danger);
130
146
  }
131
147
 
132
148
  :host([invalid]) .otp-cell:focus {
133
- border-color: var(--rel-border-error);
134
- box-shadow: 0 0 0 2px var(--rel-background-error-light);
149
+ border-color: var(--rel-border-danger);
150
+ box-shadow: 0 0 0 2px var(--rel-bg-danger-light);
135
151
  }
136
152
 
137
153
  .hidden-input {
@@ -440,7 +456,7 @@ export class RelOtp extends LitElement {
440
456
 
441
457
  return html`
442
458
  <div
443
- part="root"
459
+ part="base root"
444
460
  class="otp-root"
445
461
  role="group"
446
462
  aria-label="${this.ariaLabel || "One-time password input"}">
@@ -450,7 +466,7 @@ export class RelOtp extends LitElement {
450
466
  ${group.map(
451
467
  (index) => html`
452
468
  <input
453
- part="cell"
469
+ part="input cell"
454
470
  class="otp-cell"
455
471
  data-index="${index}"
456
472
  type="${this.mask ? "password" : "text"}"
@@ -226,30 +226,30 @@ The component follows ARIA best practices:
226
226
  The component uses design tokens from the Reliability Design System:
227
227
 
228
228
  ### Colors
229
- - `--rel-colors-white` - Button/link background
230
- - `--rel-colors-gray-heading` - Text color and active page background
231
- - `--rel-colors-gray-border` - Border color
232
- - `--rel-colors-gray-primary` - Hover border color
233
- - `--rel-colors-gray-background` - Hover background
234
- - `--rel-colors-gray-placeholder` - Ellipsis color
235
- - `--rel-colors-blue-primary` - Focus outline
229
+ - `--rel-bg-surface` - Button/link background
230
+ - `--rel-text-label` - Text color and active page background
231
+ - `--rel-border-default` - Border color
232
+ - `--rel-text-default` - Hover border color
233
+ - `--rel-bg-neutral-elevated-1` - Hover background
234
+ - `--rel-text-placeholder` - Ellipsis color
235
+ - `--rel-bg-info` - Focus outline
236
236
 
237
237
  ### Typography
238
- - `--rel-fontFamilies-primary` - Font family (Poppins)
239
- - `--rel-fontWeights-medium` - Default text weight
240
- - `--rel-fontWeights-semibold` - Active page weight
241
- - `--rel-fontSizes-sm` - Comfortable mode font size
242
- - `--rel-fontSizes-xs` - Compact mode font size
238
+ - `--rel-fonts-font-family` - Font family (Poppins)
239
+ - `--rel-fonts-weight-body-medium` - Default text weight
240
+ - `--rel-fonts-weight-body-semibold` - Active page weight
241
+ - `--rel-body-sm-regular-font-size` - Comfortable mode font size
242
+ - `--rel-body-xs-regular-font-size` - Compact mode font size
243
243
 
244
244
  ### Spacing
245
- - `--rel-spacing-space-3xs` (2px) - Compact gap
246
- - `--rel-spacing-space-2xs` (4px) - Comfortable gap
247
- - `--rel-spacing-space-xs` (8px) - Compact padding
248
- - `--rel-spacing-space-sm` (12px) - Comfortable padding
245
+ - `--rel-spacing-3xs` (2px) - Compact gap
246
+ - `--rel-spacing-2xs` (4px) - Comfortable gap
247
+ - `--rel-spacing-xs` (8px) - Compact padding
248
+ - `--rel-spacing-sm` (12px) - Comfortable padding
249
249
 
250
250
  ### Borders
251
- - `--rel-borders-width-stroke-100` (1px) - Border width
252
- - `--rel-borders-radius-border-radius-200` (8px) - Border radius
251
+ - `--rel-stroke-sm` (1px) - Border width
252
+ - `--rel-border-radius-sm` (8px) - Border radius
253
253
 
254
254
  ## Complete Examples
255
255