@actabldesign/bellhop-styles 0.0.3 → 0.0.12

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 (127) hide show
  1. package/README.md +105 -70
  2. package/dist/index.css +1538 -0
  3. package/dist/utilities.css +5730 -0
  4. package/llms.txt +2852 -0
  5. package/package.json +29 -20
  6. package/project.json +29 -0
  7. package/rollup.config.js +44 -0
  8. package/{base → src/base}/normalize.css +4 -0
  9. package/src/bh-tokens/_primitives.scss +296 -0
  10. package/src/bh-tokens/_semantic.scss +158 -0
  11. package/src/bh-tokens/components/_avatar.tokens.scss +64 -0
  12. package/src/bh-tokens/components/_badge-dot.tokens.scss +33 -0
  13. package/src/bh-tokens/components/_badge.tokens.scss +61 -0
  14. package/src/bh-tokens/components/_button-icon.tokens.scss +65 -0
  15. package/src/bh-tokens/components/_button.tokens.scss +185 -0
  16. package/src/bh-tokens/components/_checkbox.tokens.scss +67 -0
  17. package/src/bh-tokens/components/_dropdown.tokens.scss +103 -0
  18. package/src/bh-tokens/components/_featured-icon.tokens.scss +57 -0
  19. package/src/bh-tokens/components/_input-number.tokens.scss +50 -0
  20. package/src/bh-tokens/components/_input.tokens.scss +86 -0
  21. package/src/bh-tokens/components/_label.tokens.scss +37 -0
  22. package/src/bh-tokens/components/_modal.tokens.scss +42 -0
  23. package/src/bh-tokens/components/_pagination.tokens.scss +104 -0
  24. package/src/bh-tokens/components/_password.tokens.scss +63 -0
  25. package/src/bh-tokens/components/_progress-bar.tokens.scss +34 -0
  26. package/src/bh-tokens/components/_progress-spinner.tokens.scss +51 -0
  27. package/src/bh-tokens/components/_radiobutton.tokens.scss +90 -0
  28. package/src/bh-tokens/components/_skeleton.tokens.scss +22 -0
  29. package/src/bh-tokens/components/_textarea.tokens.scss +76 -0
  30. package/src/bh-tokens/components/_toggle.tokens.scss +74 -0
  31. package/src/bh-tokens/components/avatar.scss +288 -0
  32. package/src/bh-tokens/components/badge-dot.scss +177 -0
  33. package/src/bh-tokens/components/badge.scss +497 -0
  34. package/src/bh-tokens/components/button-icon.scss +227 -0
  35. package/src/bh-tokens/components/button.scss +640 -0
  36. package/src/bh-tokens/components/checkbox.scss +254 -0
  37. package/src/bh-tokens/components/dropdown.scss +231 -0
  38. package/src/bh-tokens/components/featured-icon.scss +219 -0
  39. package/src/bh-tokens/components/input-number.scss +147 -0
  40. package/src/bh-tokens/components/input.scss +271 -0
  41. package/src/bh-tokens/components/label.scss +176 -0
  42. package/src/bh-tokens/components/modal.scss +103 -0
  43. package/src/bh-tokens/components/pagination.scss +324 -0
  44. package/src/bh-tokens/components/password.scss +193 -0
  45. package/src/bh-tokens/components/progress-bar.scss +124 -0
  46. package/src/bh-tokens/components/progress-spinner.scss +130 -0
  47. package/src/bh-tokens/components/radiobutton.scss +193 -0
  48. package/src/bh-tokens/components/skeleton.scss +50 -0
  49. package/src/bh-tokens/components/textarea.scss +228 -0
  50. package/src/bh-tokens/components/toggle.scss +320 -0
  51. package/src/index.css +22 -0
  52. package/src/mixins/_responsive.scss +167 -0
  53. package/src/tokens/bellhop-animations.css +392 -0
  54. package/src/tokens/bellhop-global.css +175 -0
  55. package/src/tokens/bellhop-icons.css +77 -0
  56. package/src/tokens/bellhop-layout.css +216 -0
  57. package/src/tokens/bellhop-primary-colors.css +96 -0
  58. package/src/tokens/bellhop-radius.css +14 -0
  59. package/src/tokens/bellhop-secondary-colors.css +154 -0
  60. package/src/tokens/bellhop-shadows.css +55 -0
  61. package/src/tokens/bellhop-spacing.css +66 -0
  62. package/src/tokens/bellhop-styles.css +174 -0
  63. package/src/tokens/bellhop-typography.css +146 -0
  64. package/src/tokens/colors.json +737 -0
  65. package/src/tokens/colors.mdx +59 -0
  66. package/src/tokens/index.css +17 -0
  67. package/src/utilities/_breakpoints.scss +19 -0
  68. package/src/utilities/_flex.scss +228 -0
  69. package/src/utilities/_grid.scss +189 -0
  70. package/src/utilities/_index.scss +32 -0
  71. package/src/utilities/_scrollable.scss +239 -0
  72. package/src/utilities/_sizing.scss +229 -0
  73. package/src/utilities/_spacing.scss +187 -0
  74. package/src/utilities/_truncation.scss +126 -0
  75. package/src/utilities/_visibility.scss +117 -0
  76. package/src/utilities.scss +32 -0
  77. package/components/appbar.css +0 -167
  78. package/components/autocomplete-menu.css +0 -142
  79. package/components/avatar-add.css +0 -112
  80. package/components/avatar.css +0 -253
  81. package/components/badge-dot.css +0 -78
  82. package/components/badge.css +0 -337
  83. package/components/bar-chart-card.css +0 -261
  84. package/components/bar-chart.css +0 -149
  85. package/components/breadcrumbs.css +0 -136
  86. package/components/button.css +0 -266
  87. package/components/chart-tooltip.css +0 -96
  88. package/components/checkbox-label.css +0 -53
  89. package/components/checkbox.css +0 -127
  90. package/components/container-footer.css +0 -22
  91. package/components/container.css +0 -17
  92. package/components/date-picker-content.css +0 -337
  93. package/components/date-picker.css +0 -103
  94. package/components/date-range-picker-content.css +0 -85
  95. package/components/date-range-picker.css +0 -72
  96. package/components/dropdown-menu.css +0 -204
  97. package/components/dropdown.css +0 -126
  98. package/components/empty-state.css +0 -83
  99. package/components/featured-icon.css +0 -194
  100. package/components/illustrations.css +0 -120
  101. package/components/input-autocomplete.css +0 -158
  102. package/components/input-number.css +0 -2
  103. package/components/input-verification.css +0 -137
  104. package/components/input.css +0 -374
  105. package/components/loader-spinner.css +0 -421
  106. package/components/logo-box.css +0 -85
  107. package/components/month-picker-content.css +0 -190
  108. package/components/month-picker.css +0 -83
  109. package/components/nav-item.css +0 -110
  110. package/components/notification.css +0 -262
  111. package/components/page-navigation.css +0 -294
  112. package/components/picker-menu.css +0 -43
  113. package/components/pie-chart-card.css +0 -213
  114. package/components/pie-chart.css +0 -80
  115. package/components/product-switcher.css +0 -127
  116. package/components/property-switcher.css +0 -95
  117. package/components/radio-button-label.css +0 -53
  118. package/components/radio-button.css +0 -134
  119. package/components/sidebar.css +0 -178
  120. package/components/skeleton-loader.css +0 -47
  121. package/components/tag.css +0 -214
  122. package/components/textarea.css +0 -211
  123. package/components/toggle.css +0 -298
  124. package/components/tooltip.css +0 -85
  125. package/components/trend-chart-card.css +0 -189
  126. package/components/trend-chart.css +0 -94
  127. package/index.css +0 -8115
@@ -1,214 +0,0 @@
1
- /* Tag Base Styles */
2
- .tag {
3
- display: inline-flex;
4
- align-items: center;
5
- justify-content: center;
6
- gap: var(--spacing-sm);
7
- font-family: var(--font-inter);
8
- font-weight: var(--weight-medium);
9
- background-color: var(--color-white);
10
- border: 1px solid var(--color-neutral-200);
11
- border-radius: var(--radius-sm);
12
- white-space: nowrap;
13
- cursor: default;
14
- user-select: none;
15
- }
16
-
17
- /* Clickable Tags */
18
- .tag-dismissible {
19
- cursor: pointer;
20
- }
21
-
22
- /* Tags that act as counters or are interactive */
23
- .tag-clickable {
24
- cursor: pointer;
25
- }
26
-
27
- /* Size Variants */
28
- .tag-sm {
29
- padding: var(--spacing-xxs) var(--spacing-md);
30
- font-size: var(--text-sm-size);
31
- line-height: var(--text-sm-line);
32
- }
33
-
34
- .tag-sm.tag-dismissible {
35
- padding: var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs)
36
- var(--spacing-md);
37
- }
38
-
39
- .tag-md {
40
- padding: var(--spacing-xxs) var(--spacing-md);
41
- font-size: var(--text-md-size);
42
- line-height: var(--text-md-line);
43
- }
44
-
45
- .tag-md.tag-dismissible {
46
- padding: var(--spacing-xxs) var(--spacing-xs) var(--spacing-xxs)
47
- var(--spacing-md);
48
- }
49
-
50
- .tag-lg {
51
- padding: var(--spacing-xs) var(--spacing-lg);
52
- font-size: var(--text-md-size);
53
- line-height: var(--text-md-line);
54
- }
55
-
56
- .tag-lg.tag-dismissible {
57
- padding: var(--spacing-xs) var(--spacing-xs) var(--spacing-xs)
58
- var(--spacing-lg);
59
- }
60
-
61
- /* Content Layout */
62
- .tag-content {
63
- display: flex;
64
- align-items: center;
65
- gap: var(--spacing-xs);
66
- }
67
-
68
- /* Dot Variant - specific adjustments */
69
- .tag-dot .tag-content {
70
- gap: var(--spacing-xs);
71
- }
72
-
73
- /* Avatar Variant - specific adjustments */
74
- .tag-avatar .tag-content {
75
- gap: var(--spacing-sm);
76
- }
77
-
78
- .tag-sm.tag-dot {
79
- padding-left: var(--spacing-sm);
80
- }
81
-
82
- .tag-sm.tag-dot.tag-dismissible {
83
- padding-left: var(--spacing-sm);
84
- }
85
-
86
- .tag-md.tag-dot {
87
- padding-left: var(--spacing-sm);
88
- }
89
-
90
- .tag-md.tag-dot.tag-dismissible {
91
- padding-left: var(--spacing-sm);
92
- }
93
-
94
- .tag-lg.tag-dot {
95
- padding-left: var(--spacing-md);
96
- }
97
-
98
- .tag-lg.tag-dot.tag-dismissible {
99
- padding-left: var(--spacing-md);
100
- }
101
-
102
- /* Avatar Variant - specific adjustments */
103
- .tag-sm.tag-avatar {
104
- padding-left: var(--spacing-xs);
105
- }
106
-
107
- .tag-sm.tag-avatar.tag-dismissible {
108
- padding-left: var(--spacing-xs);
109
- }
110
-
111
- .tag-md.tag-avatar {
112
- padding-left: var(--spacing-sm);
113
- }
114
-
115
- .tag-md.tag-avatar.tag-dismissible {
116
- padding-left: var(--spacing-sm);
117
- }
118
-
119
- .tag-lg.tag-avatar {
120
- padding-left: var(--spacing-sm);
121
- }
122
-
123
- .tag-lg.tag-avatar.tag-dismissible {
124
- padding-left: var(--spacing-sm);
125
- }
126
-
127
- /* Label wrapper for tooltip positioning */
128
- .tag-label-wrapper {
129
- position: relative;
130
- display: inline-flex;
131
- align-items: center;
132
- max-width: 100%;
133
- }
134
-
135
- /* Label */
136
- .tag-label {
137
- color: var(--color-neutral-700);
138
- white-space: nowrap;
139
- overflow: hidden;
140
- text-overflow: ellipsis;
141
- }
142
-
143
- /* Badge Dot Component */
144
- .tag-content .tag-dot-component {
145
- flex-shrink: 0;
146
- display: flex;
147
- align-items: center;
148
- justify-content: center;
149
- }
150
-
151
- /* Avatar Component */
152
- .tag-content .tag-avatar-component {
153
- flex-shrink: 0;
154
- display: flex;
155
- align-items: center;
156
- justify-content: center;
157
- }
158
-
159
- /* Dismiss Button */
160
- .tag-dismiss {
161
- display: flex;
162
- align-items: center;
163
- justify-content: center;
164
- background: none;
165
- border: none;
166
- cursor: pointer;
167
- padding: var(--spacing-xxs);
168
- border-radius: var(--radius-xs);
169
- transition: background-color 0.2s ease;
170
- width: var(--spacing-xl);
171
- height: var(--spacing-xl);
172
- flex-shrink: 0;
173
- }
174
-
175
- .tag-lg .tag-dismiss {
176
- padding: var(--spacing-xs);
177
- width: var(--spacing-2xl);
178
- height: var(--spacing-2xl);
179
- }
180
-
181
- .tag-dismiss:hover {
182
- background-color: var(--color-neutral-100);
183
- }
184
-
185
- .tag-dismiss:disabled {
186
- cursor: not-allowed;
187
- opacity: 0.5;
188
- }
189
-
190
- .tag-dismiss-icon {
191
- font-size: var(--text-sm-size);
192
- color: var(--color-neutral-500);
193
- line-height: 1;
194
- font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
195
- }
196
-
197
- .tag-lg .tag-dismiss-icon {
198
- font-size: var(--text-md-size);
199
- }
200
-
201
- /* Disabled State */
202
- .tag-disabled {
203
- opacity: 0.5;
204
- cursor: not-allowed;
205
- }
206
-
207
- /* Hover State for Dismissible Tags */
208
- .tag:hover {
209
- border-color: var(--color-neutral-300);
210
- }
211
-
212
- .tag-disabled:hover {
213
- border-color: var(--color-neutral-200);
214
- }
@@ -1,211 +0,0 @@
1
- /* ==========================================================================
2
- TEXTAREA COMPONENT STYLES
3
- ========================================================================== */
4
-
5
- .textarea-wrapper {
6
- display: flex;
7
- flex-direction: column;
8
- gap: var(--spacing-sm);
9
- width: 400px;
10
- }
11
-
12
- .textarea-with-label {
13
- display: flex;
14
- flex-direction: column;
15
- gap: var(--spacing-sm);
16
- }
17
-
18
- /* Label Section */
19
- .label-wrapper {
20
- display: flex;
21
- align-items: center;
22
- justify-content: space-between;
23
- }
24
-
25
- .label {
26
- font-family: var(--font-inter);
27
- font-weight: 500;
28
- font-size: var(--text-sm-size);
29
- line-height: 1.4285714285714286;
30
- color: var(--color-neutral-700);
31
- }
32
-
33
- .asterisk {
34
- font-family: var(--font-inter);
35
- font-weight: 400;
36
- font-size: var(--text-sm-size);
37
- line-height: 1.4285714285714286;
38
- color: var(--color-error-600);
39
- }
40
-
41
- /* Material Symbols Support */
42
- .material-symbols-outlined {
43
- font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
44
- }
45
-
46
- /* Container */
47
- .textarea-container {
48
- position: relative;
49
- display: flex;
50
- flex-direction: column;
51
- background: var(--color-white);
52
- border: 1px solid var(--color-neutral-300);
53
- border-radius: 8px;
54
- box-shadow: 0px 1px 2px rgba(64, 73, 104, 0.06);
55
- transition: all 0.2s ease-in-out;
56
- min-height: 128px;
57
- }
58
-
59
- .textarea-container:hover:not(.textarea-container-disabled):not(
60
- .textarea-container-focused
61
- ) {
62
- border-color: var(--color-brand-500);
63
- }
64
-
65
- .textarea-container-focused {
66
- border-color: var(--color-brand-500);
67
- box-shadow: 0 0 0 1px var(--color-brand-500);
68
- }
69
-
70
- .textarea-container-error {
71
- border-color: var(--color-error-300);
72
- }
73
-
74
- .textarea-container-error:hover:not(.textarea-container-focused) {
75
- border-color: var(--color-error-500);
76
- }
77
-
78
- .textarea-container-error.textarea-container-focused {
79
- border-color: var(--color-brand-500);
80
- box-shadow: 0 0 0 1px var(--color-brand-500);
81
- }
82
-
83
- .textarea-container-disabled {
84
- opacity: 0.5;
85
- cursor: not-allowed;
86
- background: var(--color-neutral-50);
87
- }
88
-
89
- /* Textarea */
90
- .textarea {
91
- box-sizing: border-box;
92
- padding: 12px 14px;
93
- background: transparent;
94
- border: none;
95
- outline: none;
96
- font-family: var(--font-inter);
97
- font-weight: 400;
98
- font-size: var(--text-md-size);
99
- line-height: 1.5;
100
- color: var(--color-neutral-900);
101
- width: 100%;
102
- min-height: 96px;
103
- resize: none;
104
- caret-color: var(--color-brand-500);
105
- flex: 1;
106
- box-shadow: none;
107
- }
108
-
109
- .textarea:focus {
110
- outline: none;
111
- border: none;
112
- box-shadow: none;
113
- }
114
-
115
- .textarea::placeholder {
116
- color: var(--color-neutral-400);
117
- }
118
-
119
- .textarea:disabled {
120
- cursor: not-allowed;
121
- color: var(--color-neutral-400);
122
- }
123
-
124
- /* Tags and text integrated container */
125
- .textarea-content {
126
- width: 100%;
127
- }
128
-
129
- .tags-and-text-container {
130
- padding: 12px 14px;
131
- min-height: 96px;
132
- width: 100%;
133
- }
134
-
135
- .text-and-tags-flow {
136
- display: flex;
137
- flex-direction: column;
138
- align-items: flex-start;
139
- gap: var(--spacing-xs);
140
- height: 100%;
141
- }
142
-
143
- .tags-flow {
144
- display: flex;
145
- flex-wrap: wrap;
146
- gap: var(--spacing-xs);
147
- align-items: center;
148
- }
149
-
150
- .textarea-editable {
151
- width: 100%;
152
- min-height: 24px;
153
- outline: none;
154
- border: none;
155
- background: transparent;
156
- font-family: var(--font-inter);
157
- font-weight: 400;
158
- font-size: var(--text-md-size);
159
- line-height: 1.5;
160
- color: var(--color-neutral-900);
161
- caret-color: var(--color-brand-500);
162
- word-wrap: break-word;
163
- white-space: pre-wrap;
164
- box-shadow: none;
165
- }
166
-
167
- .textarea-editable:focus {
168
- outline: none;
169
- border: none;
170
- box-shadow: none;
171
- }
172
-
173
- .textarea-editable:empty:before {
174
- content: attr(data-placeholder);
175
- color: var(--color-neutral-400);
176
- pointer-events: none;
177
- }
178
-
179
- .textarea-editable:disabled {
180
- cursor: not-allowed;
181
- color: var(--color-neutral-400);
182
- }
183
-
184
- /* Hint Text */
185
- .hint-text {
186
- font-family: var(--font-inter);
187
- font-weight: 400;
188
- font-size: var(--text-sm-size);
189
- line-height: 1.4285714285714286;
190
- color: var(--color-neutral-600);
191
- }
192
-
193
- .hint-text.hint-error {
194
- color: var(--color-error-600);
195
- }
196
-
197
- /* Autocomplete positioning */
198
- .autocomplete-wrapper {
199
- position: absolute;
200
- top: 100%;
201
- left: 0;
202
- right: 0;
203
- z-index: 1000;
204
- }
205
-
206
- /* Responsive adjustments */
207
- @media (max-width: 768px) {
208
- .textarea {
209
- font-size: 16px; /* Prevent zoom on iOS */
210
- }
211
- }
@@ -1,298 +0,0 @@
1
- /* ==========================================================================
2
- TOGGLE COMPONENT - Material You (Android 12) Design
3
- Shared styles for all frameworks
4
- ========================================================================== */
5
-
6
- /* Toggle Wrapper */
7
- .toggle-wrapper {
8
- display: flex;
9
- align-items: center;
10
- gap: 0;
11
- }
12
-
13
- .toggle-with-text.toggle-size-sm {
14
- gap: var(--spacing-md);
15
- }
16
-
17
- .toggle-with-text.toggle-size-md {
18
- gap: var(--spacing-lg);
19
- }
20
-
21
- /* Toggle Switch Base - Material You specs */
22
- .toggle-switch {
23
- position: relative;
24
- display: inline-block;
25
- border-radius: var(--radius-full);
26
- cursor: pointer;
27
- transition: background-color var(--animation-duration-fast) var(--animation-ease-smooth);
28
- outline: none;
29
- border: 2px solid transparent;
30
- background: transparent;
31
- overflow: visible;
32
- padding: 0;
33
- }
34
-
35
- .toggle-switch:focus {
36
- outline: none;
37
- }
38
-
39
- .toggle-switch.toggle-disabled {
40
- cursor: not-allowed;
41
- opacity: 0.38;
42
- }
43
-
44
- /* Toggle Switch Sizes - Material You dimensions */
45
- .toggle-switch.toggle-sm {
46
- width: 40px;
47
- height: 24px;
48
- }
49
-
50
- .toggle-switch.toggle-md {
51
- width: 52px;
52
- height: 32px;
53
- }
54
-
55
- /* Toggle Switch States - Unpressed (False) */
56
- .toggle-switch.toggle-unpressed {
57
- background-color: var(--color-neutral-200);
58
- border-color: transparent;
59
- }
60
-
61
- .toggle-switch.toggle-unpressed.toggle-hover {
62
- background-color: var(--color-neutral-300);
63
- border-color: transparent;
64
- }
65
-
66
- .toggle-switch.toggle-unpressed.toggle-focus {
67
- background-color: var(--color-neutral-200);
68
- border-color: transparent;
69
- }
70
-
71
- /* Focus ring for unpressed state - on the knob */
72
- .toggle-switch.toggle-unpressed.toggle-focus .toggle-button::after {
73
- content: '';
74
- position: absolute;
75
- top: -6px;
76
- left: -6px;
77
- right: -6px;
78
- bottom: -6px;
79
- border-radius: var(--radius-full);
80
- background: var(--color-neutral-600);
81
- opacity: 0.12;
82
- pointer-events: none;
83
- }
84
-
85
- .toggle-switch.toggle-unpressed.toggle-disabled {
86
- background-color: var(--color-neutral-100);
87
- border-color: transparent;
88
- }
89
-
90
- /* Toggle Switch States - Pressed (True) */
91
- .toggle-switch.toggle-pressed {
92
- background-color: var(--color-brand-600);
93
- border-color: var(--color-brand-600);
94
- }
95
-
96
- .toggle-switch.toggle-pressed.toggle-hover {
97
- background-color: var(--color-brand-700);
98
- border-color: var(--color-brand-700);
99
- }
100
-
101
- .toggle-switch.toggle-pressed.toggle-focus {
102
- background-color: var(--color-brand-600);
103
- border-color: var(--color-brand-600);
104
- }
105
-
106
- /* Focus ring for pressed state - on the knob */
107
- .toggle-switch.toggle-pressed.toggle-focus .toggle-button::after {
108
- content: '';
109
- position: absolute;
110
- top: -6px;
111
- left: -6px;
112
- right: -6px;
113
- bottom: -6px;
114
- border-radius: var(--radius-full);
115
- background: var(--color-brand-100);
116
- opacity: 0.24;
117
- pointer-events: none;
118
- }
119
-
120
- .toggle-switch.toggle-pressed.toggle-disabled {
121
- background-color: var(--color-neutral-200);
122
- border-color: var(--color-neutral-200);
123
- }
124
-
125
- .toggle-switch.toggle-pressed.toggle-disabled .toggle-button {
126
- background-color: var(--color-neutral-100);
127
- }
128
-
129
- /* Toggle Button (Handle) - Material You specs */
130
- .toggle-button {
131
- position: absolute;
132
- top: 50%;
133
- transform: translateY(-50%);
134
- border-radius: var(--radius-full);
135
- background-color: var(--color-neutral-600);
136
- transition: all var(--animation-duration-fast) var(--animation-ease-smooth);
137
- /* box-shadow removed */
138
- /* Position relative for ::after pseudo-element */
139
- position: absolute;
140
- }
141
-
142
- /* Toggle Button States - Unpressed */
143
- .toggle-switch.toggle-unpressed .toggle-button {
144
- background-color: var(--color-neutral-600);
145
- }
146
-
147
- .toggle-switch.toggle-sm.toggle-unpressed .toggle-button {
148
- width: 16px;
149
- height: 16px;
150
- left: 4px;
151
- }
152
-
153
- .toggle-switch.toggle-md.toggle-unpressed .toggle-button {
154
- width: 16px;
155
- height: 16px;
156
- left: 4px;
157
- }
158
-
159
- .toggle-switch.toggle-unpressed.toggle-hover .toggle-button {
160
- background-color: var(--color-neutral-700);
161
- }
162
-
163
- /* Toggle Button States - Pressed */
164
- .toggle-switch.toggle-pressed .toggle-button {
165
- background-color: var(--color-white);
166
- }
167
-
168
- .toggle-switch.toggle-sm.toggle-pressed .toggle-button {
169
- width: 20px;
170
- height: 20px;
171
- left: calc(100% - 20px - 4px); /* 40px - 20px - 4px = 16px from left */
172
- }
173
-
174
- .toggle-switch.toggle-md.toggle-pressed .toggle-button {
175
- width: 24px;
176
- height: 24px;
177
- left: calc(100% - 24px - 4px); /* 52px - 24px - 4px = 24px from left */
178
- }
179
-
180
- .toggle-switch.toggle-pressed.toggle-hover .toggle-button {
181
- background-color: var(--color-white);
182
- }
183
-
184
- /* Toggle Button Sizes - Keep consistent for Material You */
185
- .toggle-button.toggle-button-sm,
186
- .toggle-button.toggle-button-md {
187
- /* Sizes are controlled by state, not by size variant in Material You */
188
- }
189
-
190
- /* Toggle Button Disabled State */
191
- .toggle-switch.toggle-disabled .toggle-button {
192
- background-color: var(--color-neutral-400);
193
- box-shadow: none;
194
- }
195
-
196
- .toggle-switch.toggle-sm.toggle-unpressed.toggle-disabled .toggle-button {
197
- width: 16px;
198
- height: 16px;
199
- left: 4px;
200
- background-color: var(--color-neutral-400);
201
- }
202
-
203
- .toggle-switch.toggle-md.toggle-unpressed.toggle-disabled .toggle-button {
204
- width: 16px;
205
- height: 16px;
206
- left: 4px;
207
- background-color: var(--color-neutral-400);
208
- }
209
-
210
- .toggle-switch.toggle-sm.toggle-pressed.toggle-disabled .toggle-button {
211
- width: 20px;
212
- height: 20px;
213
- left: calc(100% - 20px - 4px);
214
- background-color: var(--color-neutral-100);
215
- }
216
-
217
- .toggle-switch.toggle-md.toggle-pressed.toggle-disabled .toggle-button {
218
- width: 24px;
219
- height: 24px;
220
- left: calc(100% - 24px - 4px);
221
- background-color: var(--color-neutral-100);
222
- }
223
-
224
- /* Toggle Text Container */
225
- .toggle-text {
226
- display: flex;
227
- flex-direction: column;
228
- flex: 1;
229
- }
230
-
231
- /* Toggle Label */
232
- .toggle-label {
233
- color: var(--color-neutral-700);
234
- font-family: var(--font-inter);
235
- font-weight: var(--weight-medium);
236
- text-align: left;
237
- margin: 0;
238
- line-height: 1.5;
239
- }
240
-
241
- .toggle-label.toggle-label-sm {
242
- font-size: var(--text-sm-size);
243
- line-height: var(--text-sm-line);
244
- }
245
-
246
- .toggle-label.toggle-label-md {
247
- font-size: var(--text-md-size);
248
- line-height: var(--text-md-line);
249
- }
250
-
251
- /* Toggle Supporting Text */
252
- .toggle-supporting-text {
253
- color: var(--color-neutral-600);
254
- font-family: var(--font-inter);
255
- font-weight: var(--weight-regular);
256
- font-size: var(--text-sm-size);
257
- line-height: var(--text-sm-line);
258
- text-align: left;
259
- margin: 0;
260
- margin-top: var(--spacing-xxs);
261
- }
262
-
263
- /* ==========================================================================
264
- ACCESSIBILITY & RESPONSIVE BEHAVIOR
265
- ========================================================================== */
266
-
267
- /* Accessibility */
268
- @media (prefers-reduced-motion: reduce) {
269
- .toggle-switch,
270
- .toggle-button {
271
- transition: none;
272
- }
273
- }
274
-
275
- /* High contrast mode support */
276
- @media (prefers-contrast: high) {
277
- .toggle-switch.toggle-unpressed {
278
- border: 2px solid currentColor;
279
- }
280
-
281
- .toggle-switch.toggle-pressed {
282
- border: 2px solid currentColor;
283
- }
284
- }
285
-
286
- /* Focus visible for better keyboard navigation - on the knob */
287
- .toggle-switch:focus-visible .toggle-button::after {
288
- content: '';
289
- position: absolute;
290
- top: -6px;
291
- left: -6px;
292
- right: -6px;
293
- bottom: -6px;
294
- border-radius: var(--radius-full);
295
- background: currentColor;
296
- opacity: 0.24;
297
- pointer-events: none;
298
- }