@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
@@ -55,13 +55,13 @@ None exposed.
55
55
  ## Tokens / CSS Variables
56
56
 
57
57
  ### Semantic Tokens
58
- - `--rel-fontFamilies-primary` - Font family
59
- - `--rel-fontWeights-semibold` - Font weight (number variant)
60
- - `--rel-fontSizes-xs`, `--rel-fontSizes-sm`, `--rel-fontSizes-lg` - Font sizes for number variant sizes
58
+ - `--rel-fonts-font-family` - Font family
59
+ - `--rel-fonts-weight-body-semibold` - Font weight (number variant)
60
+ - `--rel-body-xs-regular-font-size`, `--rel-body-sm-regular-font-size`, `--rel-body-xl-regular-font-size` - Font sizes for number variant sizes
61
61
 
62
62
  ### Color Tokens
63
- - `--rel-colors-red-primary` - Background color
64
- - `--rel-colors-white` - Text color
63
+ - `--rel-bg-danger` - Background color
64
+ - `--rel-bg-surface` - Text color
65
65
 
66
66
  ## Accessibility
67
67
  - Purely visual indicator (no ARIA roles)
@@ -1,4 +1,3 @@
1
- import "../../styles/vars-v2.css";
2
1
  import { LitElement, html, css } from "lit";
3
2
  import { customElement, property } from "lit/decorators.js";
4
3
 
@@ -11,7 +10,7 @@ export class RelBadge extends LitElement {
11
10
  @property({ type: String }) suffix: string = "notifications";
12
11
 
13
12
  @property({ type: String, reflect: true })
14
- size: "sm" | "md" | "lg" = "md";
13
+ size: "sm" | "md" | "lg" | "xl" = "md";
15
14
 
16
15
  @property({ type: String, reflect: true })
17
16
  variant: "dot" | "number" = "number";
@@ -36,53 +35,106 @@ export class RelBadge extends LitElement {
36
35
 
37
36
  static styles = css`
38
37
  :host {
38
+ color: var(--rel-text-default);
39
39
  display: inline-flex;
40
40
  }
41
41
 
42
42
  .badge {
43
+ font-weight: var(--rel-body-sm-semibold-font-weight);
44
+ font-size: var(--rel-body-sm-semibold-font-size);
45
+ line-height: var(--rel-body-sm-semibold-line-height);
46
+ letter-spacing: var(--rel-body-sm-semibold-letter-spacing);
43
47
  display: inline-flex;
44
48
  align-items: center;
45
49
  justify-content: center;
46
- font-family: var(--rel-fontFamilies-primary, sans-serif);
47
- font-weight: var(--rel-fontWeights-semibold, 600);
48
- background-color: var(--rel-badge-bg, var(--rel-error-surface-default));
49
- color: var(--rel-badge-color, #ffffff);
50
- border-radius: 50%;
50
+ box-sizing: border-box;
51
+ font-family: var(--rel-fonts-font-family, sans-serif);
52
+ background-color: var(--rel-badge-bg, var(--rel-bg-danger));
53
+ color: var(--rel-badge-color, var(--rel-text-static-light));
54
+ /* Large fixed radius (not 50%) — stays a perfect circle for 1-2 digits,
55
+ but becomes a pill instead of clipping when content like "999+"
56
+ is wider than the minimum circle. */
57
+ border-radius: 999px;
58
+ white-space: nowrap;
51
59
  }
52
60
 
53
- /* NUMBER BADGES */
61
+ /* NUMBER BADGES — min-width (not width) lets multi-character content
62
+ like "999+" grow the badge into a pill instead of overflowing a fixed circle. */
54
63
  .badge-sm {
55
- width: 20px;
64
+ min-width: 20px;
56
65
  height: 20px;
57
- font-size: var(--rel-fontSizes-xs, 12px);
66
+ padding: 0 4px;
67
+ font-family: var(--rel-body-xs-regular-font-family);
68
+ font-weight: var(--rel-body-xs-semibold-font-weight);
69
+ font-size: var(--rel-body-xs-semibold-font-size);
70
+ line-height: var(--rel-body-xs-semibold-line-height);
71
+ letter-spacing: var(--rel-body-xs-semibold-letter-spacing);
58
72
  }
59
73
 
74
+ /* Size tiers follow Figma Badge S/M/L/XL (20/24/28/40px).
75
+ Figma binds a *-regular family with *-semibold metrics on S/M/L. */
60
76
  .badge-md {
61
- width: 28px;
62
- height: 28px;
63
- font-size: var(--rel-fontSizes-sm, 14px);
77
+ min-width: 24px;
78
+ height: 24px;
79
+ padding: 0 6px;
80
+ font-family: var(--rel-body-sm-regular-font-family);
81
+ font-weight: var(--rel-body-sm-semibold-font-weight);
82
+ font-size: var(--rel-body-sm-semibold-font-size);
83
+ line-height: var(--rel-body-sm-semibold-line-height);
84
+ letter-spacing: var(--rel-body-sm-semibold-letter-spacing);
64
85
  }
65
86
 
66
87
  .badge-lg {
67
- width: 40px;
88
+ min-width: 28px;
89
+ height: 28px;
90
+ padding: 0 6px;
91
+ font-family: var(--rel-body-md-regular-font-family);
92
+ font-weight: var(--rel-body-md-semibold-font-weight);
93
+ font-size: var(--rel-body-md-regular-font-size);
94
+ line-height: var(--rel-body-md-regular-line-height);
95
+ letter-spacing: var(--rel-body-md-regular-letter-spacing);
96
+ }
97
+
98
+ .badge-xl {
99
+ min-width: 40px;
68
100
  height: 40px;
69
- font-size: var(--rel-fontSizes-lg, 20px);
101
+ padding: 0 8px;
102
+ font-family: var(--rel-body-xl-semibold-font-family);
103
+ font-weight: var(--rel-body-xl-semibold-font-weight);
104
+ font-size: var(--rel-body-xl-semibold-font-size);
105
+ line-height: var(--rel-body-xl-semibold-line-height);
106
+ letter-spacing: var(--rel-body-xl-semibold-letter-spacing);
70
107
  }
71
108
 
72
- /* DOT BADGES */
109
+ /* DOT BADGES — explicitly reset min-width/padding inherited from the
110
+ number-badge size rules above; otherwise min-width wins over this
111
+ smaller width and the dot gets stretched into a squashed pill. */
73
112
  .badge-dot.badge-sm {
74
113
  width: 8px;
75
114
  height: 8px;
115
+ min-width: 0;
116
+ padding: 0;
76
117
  }
77
118
 
78
119
  .badge-dot.badge-md {
79
120
  width: 10px;
80
121
  height: 10px;
122
+ min-width: 0;
123
+ padding: 0;
81
124
  }
82
125
 
83
126
  .badge-dot.badge-lg {
84
127
  width: 12px;
85
128
  height: 12px;
129
+ min-width: 0;
130
+ padding: 0;
131
+ }
132
+
133
+ .badge-dot.badge-xl {
134
+ width: 12px;
135
+ height: 12px;
136
+ min-width: 0;
137
+ padding: 0;
86
138
  }
87
139
  `;
88
140
 
@@ -110,7 +162,7 @@ export class RelBadge extends LitElement {
110
162
 
111
163
  render() {
112
164
  return html`
113
- <span class="${this.classes}" aria-label=${this.ariaLabel || `${this.number} ${this.suffix}`}>
165
+ <span part="base" class="${this.classes}" aria-label=${this.ariaLabel || `${this.number} ${this.suffix}`}>
114
166
  ${this.variant === "number" ? this.number : null}
115
167
  </span>
116
168
  `;
@@ -65,15 +65,15 @@ None exposed.
65
65
  ## Tokens / CSS Variables
66
66
 
67
67
  ### Semantic Tokens
68
- - `--rel-fontFamilies-primary` - Font family
69
- - `--rel-fontSizes-md` - Font size
70
- - `--rel-fontWeights-medium` - Font weight for links
71
- - `--rel-fontWeights-bold` - Font weight for current page
68
+ - `--rel-fonts-font-family` - Font family
69
+ - `--rel-body-md-regular-font-size` - Font size
70
+ - `--rel-fonts-weight-body-medium` - Font weight for links
71
+ - `--rel-fonts-weight-body-semibold` - Font weight for current page
72
72
 
73
73
  ### Color Tokens
74
- - `--rel-text-primary` - Base text color
75
- - `--rel-text-heading` - Link and current page text color
76
- - `--rel-colors-blue-primary` - Link hover color and focus outline
74
+ - `--rel-text-default` - Base text color
75
+ - `--rel-text-label` - Link and current page text color
76
+ - `--rel-bg-info` - Link hover color and focus outline
77
77
 
78
78
  ## Accessibility
79
79
  - Uses semantic `<nav>` with `aria-label="Breadcrumb"`
@@ -1,4 +1,3 @@
1
- import "../../styles/vars-v2.css";
2
1
  import { LitElement, html, css } from "lit";
3
2
  import { customElement, property } from "lit/decorators.js";
4
3
 
@@ -14,10 +13,13 @@ export class RelBreadcrumbs extends LitElement {
14
13
 
15
14
  static styles = css`
16
15
  :host {
17
- display: block;
18
- font-family: var(--rel-fontFamilies-primary, sans-serif);
19
- font-size: var(--rel-fontSizes-md);
20
- color: var(--rel-text-primary, #333);
16
+ display: block;
17
+ color: var(--rel-text-default);
18
+ font-family: var(--rel-body-md-regular-font-family);
19
+ font-weight: var(--rel-body-md-regular-font-weight);
20
+ font-size: var(--rel-body-md-regular-font-size);
21
+ line-height: var(--rel-body-md-regular-line-height);
22
+ letter-spacing: var(--rel-body-md-regular-letter-spacing);
21
23
  }
22
24
 
23
25
  nav {
@@ -33,30 +35,31 @@ export class RelBreadcrumbs extends LitElement {
33
35
  }
34
36
 
35
37
  li {
38
+ gap: var(--rel-spacing-xs);
36
39
  display: flex;
37
40
  align-items: center;
38
41
  }
39
42
 
40
43
  a {
41
44
  text-decoration: none;
42
- font-weight: var(--rel-fontWeights-regular);
43
- color: var(--rel-color-text-primary);
45
+ font-weight: var(--rel-body-md-regular-font-weight);
46
+ color: var(--rel-text-body);
44
47
  }
45
48
 
46
49
  a:hover {
47
50
  text-decoration: underline;
48
- color: var(--rel-color-text-primary);
51
+ color: var(--rel-text-default);
49
52
  }
50
53
 
51
54
  a:focus-visible {
52
- outline: 2px solid var(--rel-color-border-focus);
55
+ outline: 2px solid var(--rel-border-focus);
53
56
  outline-offset: 2px;
54
57
  border-radius: 2px;
55
58
  }
56
59
 
57
60
  .current {
58
- font-weight: var(--rel-fontWeights-bold);
59
- color: var(--rel-color-text-primary);
61
+ font-weight: var(--rel-body-md-semibold-font-weight);
62
+ color: var(--rel-text-default);
60
63
  cursor: default;
61
64
  }
62
65
 
@@ -70,7 +73,7 @@ export class RelBreadcrumbs extends LitElement {
70
73
 
71
74
  render() {
72
75
  return html`
73
- <nav aria-label="Breadcrumb">
76
+ <nav part="base" aria-label="Breadcrumb">
74
77
  <ol>
75
78
  ${this.items.map((item, index) => {
76
79
  const isLast = index === this.items.length - 1;
@@ -79,7 +82,7 @@ export class RelBreadcrumbs extends LitElement {
79
82
  <li>
80
83
  ${item.url && !isLast
81
84
  ? html`<a href=${item.url}>${item.label}</a>`
82
- : html`<span class="current" aria-current="page">${item.label}</span>`}
85
+ : html`<span part="label" class="current" aria-current="page">${item.label}</span>`}
83
86
  ${!isLast
84
87
  ? html`
85
88
  <svg viewBox="0 0 24 24" aria-hidden="true">
@@ -75,31 +75,31 @@ None exposed.
75
75
  ## Tokens / CSS Variables
76
76
 
77
77
  ### Semantic Tokens
78
- - `--rel-fontFamilies-primary` - Font family
79
- - `--rel-fontWeights-semibold` - Font weight
80
- - `--rel-fontSizes-sm`, `--rel-fontSizes-md`, `--rel-fontSizes-lg` - Font sizes for sizes
78
+ - `--rel-fonts-font-family` - Font family
79
+ - `--rel-fonts-weight-body-semibold` - Font weight
80
+ - `--rel-body-sm-regular-font-size`, `--rel-body-md-regular-font-size`, `--rel-body-xl-regular-font-size` - Font sizes for sizes
81
81
 
82
82
  ### Spacing Tokens
83
- - `--rel-spacing-space-2xs` - Internal gap between elements
84
- - `--rel-spacing-space-md`, `--rel-spacing-space-lg`, `--rel-spacing-space-xl` - Horizontal padding by size
83
+ - `--rel-spacing-2xs` - Internal gap between elements
84
+ - `--rel-spacing-md`, `--rel-spacing-lg`, `--rel-spacing-xl` - Horizontal padding by size
85
85
 
86
86
  ### Color Tokens (by variant/tone)
87
- - **default + default tone**: `--rel-colors-gray-primary` (bg), `--rel-colors-white` (text)
88
- - **default + critical tone**: `--rel-colors-red-primary` (bg), `--rel-colors-white` (text)
89
- - **default + success tone**: `--rel-colors-green-success` (bg), `--rel-colors-white` (text)
90
- - **primary + default tone**: `--rel-colors-green-primary` (bg), `--rel-colors-black` (text)
91
- - **primary + critical tone**: `--rel-colors-red-primary` (bg), `--rel-colors-white` (text)
92
- - **primary + success tone**: `--rel-colors-green-success` (bg), `--rel-colors-white` (text)
93
- - **secondary**: `--rel-colors-white` (bg), `--rel-colors-black` (text + border)
94
- - **text**: transparent (bg), `--rel-colors-black` (text)
95
- - **link**: transparent (bg), `--rel-colors-blue-primary` (text), underlined
96
- - **icon**: `--rel-colors-gray-light` (bg), `--rel-colors-black` (text), circular (40px × 40px)
97
- - **disabled**: `--rel-colors-gray-border` (bg), `--rel-colors-gray-disabled-text` (text)
87
+ - **default + default tone**: `--rel-text-default` (bg), `--rel-bg-surface` (text)
88
+ - **default + critical tone**: `--rel-bg-danger` (bg), `--rel-bg-surface` (text)
89
+ - **default + success tone**: `--rel-text-success` (bg), `--rel-bg-surface` (text)
90
+ - **primary + default tone**: `--rel-bg-brand` (bg), `--rel-text-default` (text)
91
+ - **primary + critical tone**: `--rel-bg-danger` (bg), `--rel-bg-surface` (text)
92
+ - **primary + success tone**: `--rel-text-success` (bg), `--rel-bg-surface` (text)
93
+ - **secondary**: `--rel-bg-surface` (bg), `--rel-text-default` (text + border)
94
+ - **text**: transparent (bg), `--rel-text-default` (text)
95
+ - **link**: transparent (bg), `--rel-bg-info` (text), underlined
96
+ - **icon**: `--rel-bg-surface-elevated` (bg), `--rel-text-default` (text), circular (40px × 40px)
97
+ - **disabled**: `--rel-border-default` (bg), `--rel-text-disabled` (text)
98
98
 
99
99
  ### Border Tokens
100
- - `--rel-borders-radius-border-radius-500` - Large corner radius
101
- - `--rel-borders-radius-border-radius-200` - Small corner radius
102
- - `--rel-borders-radius-border-radius-0` - No corner radius
100
+ - `--rel-border-radius-full-rounded` - Large corner radius
101
+ - `--rel-border-radius-sm` - Small corner radius
102
+ - `--rel-border-radius-square` - No corner radius
103
103
 
104
104
  ## Accessibility
105
105
  - Uses native `<button>` element for proper semantics
@@ -126,5 +126,5 @@ None exposed.
126
126
  - Clicking a disabled button prevents default and stops propagation
127
127
  - Size variants affect height (32px/40px/48px) and horizontal padding
128
128
  - The button has `display: inline-flex` with `align-items: center` and `justify-content: center`
129
- - Internal gap of `var(--rel-spacing-space-2xs)` allows icons + text combinations
129
+ - Internal gap of `var(--rel-spacing-2xs)` allows icons + text combinations
130
130
  - Transitions are `0.15s ease` for all visual changes