@actabldesign/bellhop-styles 0.0.3

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 (54) hide show
  1. package/README.md +185 -0
  2. package/base/normalize.css +101 -0
  3. package/components/appbar.css +167 -0
  4. package/components/autocomplete-menu.css +142 -0
  5. package/components/avatar-add.css +112 -0
  6. package/components/avatar.css +253 -0
  7. package/components/badge-dot.css +78 -0
  8. package/components/badge.css +337 -0
  9. package/components/bar-chart-card.css +261 -0
  10. package/components/bar-chart.css +149 -0
  11. package/components/breadcrumbs.css +136 -0
  12. package/components/button.css +266 -0
  13. package/components/chart-tooltip.css +96 -0
  14. package/components/checkbox-label.css +53 -0
  15. package/components/checkbox.css +127 -0
  16. package/components/container-footer.css +22 -0
  17. package/components/container.css +17 -0
  18. package/components/date-picker-content.css +337 -0
  19. package/components/date-picker.css +103 -0
  20. package/components/date-range-picker-content.css +85 -0
  21. package/components/date-range-picker.css +72 -0
  22. package/components/dropdown-menu.css +204 -0
  23. package/components/dropdown.css +126 -0
  24. package/components/empty-state.css +83 -0
  25. package/components/featured-icon.css +194 -0
  26. package/components/illustrations.css +120 -0
  27. package/components/input-autocomplete.css +158 -0
  28. package/components/input-number.css +2 -0
  29. package/components/input-verification.css +137 -0
  30. package/components/input.css +374 -0
  31. package/components/loader-spinner.css +421 -0
  32. package/components/logo-box.css +85 -0
  33. package/components/month-picker-content.css +190 -0
  34. package/components/month-picker.css +83 -0
  35. package/components/nav-item.css +110 -0
  36. package/components/notification.css +262 -0
  37. package/components/page-navigation.css +294 -0
  38. package/components/picker-menu.css +43 -0
  39. package/components/pie-chart-card.css +213 -0
  40. package/components/pie-chart.css +80 -0
  41. package/components/product-switcher.css +127 -0
  42. package/components/property-switcher.css +95 -0
  43. package/components/radio-button-label.css +53 -0
  44. package/components/radio-button.css +134 -0
  45. package/components/sidebar.css +178 -0
  46. package/components/skeleton-loader.css +47 -0
  47. package/components/tag.css +214 -0
  48. package/components/textarea.css +211 -0
  49. package/components/toggle.css +298 -0
  50. package/components/tooltip.css +85 -0
  51. package/components/trend-chart-card.css +189 -0
  52. package/components/trend-chart.css +94 -0
  53. package/index.css +8115 -0
  54. package/package.json +32 -0
@@ -0,0 +1,158 @@
1
+ /* Input Autocomplete Component Styles */
2
+
3
+ /* Wrapper for the entire autocomplete component */
4
+ .input-autocomplete-wrapper {
5
+ position: relative;
6
+ width: 100%;
7
+ min-width: 0;
8
+ max-width: 100%;
9
+ flex-shrink: 0;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ /* Multi-select input with flowing content */
14
+ .autocomplete-multi-input {
15
+ min-height: 36px;
16
+ height: auto;
17
+ padding: var(--spacing-xs) var(--spacing-md);
18
+ width: 100%;
19
+ box-sizing: border-box;
20
+ max-width: 100%;
21
+ overflow: hidden;
22
+ }
23
+
24
+ .autocomplete-multi-input.input-icon-leading {
25
+ padding-left: var(--spacing-lg);
26
+ }
27
+
28
+ /* Input wrapper for multi-select */
29
+ .input-autocomplete-wrapper .input-wrapper {
30
+ width: 100%;
31
+ min-width: 100%;
32
+ max-width: 100%;
33
+ box-sizing: border-box;
34
+ flex-shrink: 0;
35
+ }
36
+
37
+ /* Content that flows: icon, tags, input, clear button */
38
+ .input-content-flow {
39
+ display: flex;
40
+ align-items: center;
41
+ flex-wrap: nowrap;
42
+ gap: var(--spacing-xs);
43
+ min-height: 20px;
44
+ width: 100%;
45
+ overflow: hidden;
46
+ }
47
+
48
+ /* Leading icon in flow */
49
+ .input-content-flow .leading-icon {
50
+ flex-shrink: 0;
51
+ color: var(--color-neutral-500);
52
+ font-size: 20px;
53
+ margin-right: var(--spacing-xs);
54
+ }
55
+
56
+ /* Tag container styling - compact size with dismiss icon */
57
+ .input-content-flow .tag {
58
+ flex-shrink: 0;
59
+ max-width: 150px;
60
+ width: auto;
61
+ min-width: auto;
62
+ display: inline-flex;
63
+ align-items: center;
64
+ gap: var(--spacing-xs);
65
+ }
66
+
67
+ /* Tag content should be constrained */
68
+ .input-content-flow .tag .tag-content {
69
+ flex: 1;
70
+ min-width: 0;
71
+ overflow: hidden;
72
+ }
73
+
74
+ /* Label wrapper should respect max width */
75
+ .input-content-flow .tag .tag-label-wrapper {
76
+ max-width: 100px;
77
+ overflow: hidden;
78
+ }
79
+
80
+ /* Label should truncate properly */
81
+ .input-content-flow .tag .tag-label {
82
+ max-width: 100%;
83
+ overflow: hidden;
84
+ text-overflow: ellipsis;
85
+ white-space: nowrap;
86
+ }
87
+
88
+ /* Ensure dismiss button is always visible and compact */
89
+ .input-content-flow .tag .tag-dismiss {
90
+ display: flex !important;
91
+ flex-shrink: 0;
92
+ width: 16px;
93
+ height: 16px;
94
+ padding: 0;
95
+ margin: 0;
96
+ }
97
+
98
+ /* Inline input that flows after tags */
99
+ .inline-input {
100
+ border: none;
101
+ outline: none;
102
+ background: transparent;
103
+ font-family: var(--font-inter);
104
+ font-size: var(--text-md-size);
105
+ line-height: var(--text-md-line);
106
+ color: var(--color-neutral-900);
107
+ flex: 1 1 60px;
108
+ min-width: 60px;
109
+ max-width: 100%;
110
+ padding: 2px 0;
111
+ width: 0;
112
+ }
113
+
114
+ /* Remove any focus styling from the inline input */
115
+ .inline-input:focus {
116
+ outline: none;
117
+ border: none;
118
+ box-shadow: none;
119
+ }
120
+
121
+ .inline-input::placeholder {
122
+ color: var(--color-neutral-500);
123
+ }
124
+
125
+ .inline-input:disabled {
126
+ color: var(--color-neutral-400);
127
+ cursor: not-allowed;
128
+ }
129
+
130
+ /* Clear button in flow */
131
+ .input-content-flow .btn-icon {
132
+ flex-shrink: 0;
133
+ margin-left: auto;
134
+ width: 24px;
135
+ height: 24px;
136
+ }
137
+
138
+ /* Ensure dropdown menu appears above other elements and positioned correctly */
139
+ .input-autocomplete-wrapper .autocomplete-menu {
140
+ z-index: 1000;
141
+ top: calc(100% - 12px);
142
+ }
143
+
144
+ /* Responsive adjustments */
145
+ @media (max-width: 640px) {
146
+ .selected-tag {
147
+ max-width: 120px;
148
+ }
149
+
150
+ .autocomplete-overlay {
151
+ padding-left: var(--spacing-md);
152
+ padding-right: var(--spacing-md);
153
+ }
154
+
155
+ .autocomplete-input.input-icon-leading ~ .autocomplete-overlay {
156
+ padding-left: calc(var(--spacing-md) + 18px + var(--spacing-xs));
157
+ }
158
+ }
@@ -0,0 +1,2 @@
1
+ /* Import base input styles */
2
+ @import './input.css';
@@ -0,0 +1,137 @@
1
+ /* Input Verification Component Styles */
2
+
3
+ .input-verification-wrapper {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: var(--spacing-sm);
7
+ width: fit-content;
8
+ }
9
+
10
+ .label-wrapper {
11
+ display: flex;
12
+ align-items: center;
13
+ gap: var(--spacing-xs);
14
+ }
15
+
16
+ .label {
17
+ font-size: var(--text-sm-size);
18
+ font-weight: var(--weight-medium);
19
+ line-height: var(--text-sm-line);
20
+ color: var(--color-neutral-700);
21
+ }
22
+
23
+ .asterisk {
24
+ color: var(--color-error-500);
25
+ font-size: var(--text-sm-size);
26
+ font-weight: var(--weight-medium);
27
+ line-height: var(--text-sm-line);
28
+ }
29
+
30
+ .input-verification-container {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: var(--spacing-sm);
34
+ }
35
+
36
+ .verification-input {
37
+ width: 64px;
38
+ height: 64px;
39
+ padding: 0;
40
+ border: 1px solid var(--color-neutral-300);
41
+ border-radius: var(--radius-lg);
42
+ background-color: var(--color-white);
43
+ font-size: 3rem;
44
+ font-weight: var(--weight-medium);
45
+ line-height: 1;
46
+ text-align: center;
47
+ color: var(--color-neutral-900);
48
+ transition: all 150ms ease;
49
+ outline: none;
50
+ }
51
+
52
+ /* Size variants */
53
+ .verification-input.size-sm {
54
+ width: 64px;
55
+ height: 64px;
56
+ font-size: 3rem;
57
+ border-radius: var(--radius-lg);
58
+ }
59
+
60
+ .verification-input.size-md {
61
+ width: 80px;
62
+ height: 80px;
63
+ font-size: 3rem;
64
+ border-radius: var(--radius-lg);
65
+ }
66
+
67
+ .verification-input.size-lg {
68
+ width: 96px;
69
+ height: 96px;
70
+ font-size: 3.75rem;
71
+ border-radius: var(--radius-lg);
72
+ }
73
+
74
+ /* States */
75
+ .verification-input:hover:not(:disabled) {
76
+ border-color: var(--color-neutral-400);
77
+ }
78
+
79
+ .verification-input:focus {
80
+ border-color: var(--color-brand-300);
81
+ box-shadow: 0 0 0 4px var(--color-brand-100);
82
+ }
83
+
84
+ .verification-input.error {
85
+ border-color: var(--color-error-300);
86
+ }
87
+
88
+ .verification-input.error:focus {
89
+ border-color: var(--color-error-300);
90
+ box-shadow: 0 0 0 4px var(--color-error-100);
91
+ }
92
+
93
+ .verification-input:disabled {
94
+ background-color: var(--color-neutral-50);
95
+ border-color: var(--color-neutral-300);
96
+ color: var(--color-neutral-400);
97
+ cursor: not-allowed;
98
+ }
99
+
100
+ .separator {
101
+ font-size: 1.5rem;
102
+ font-weight: var(--weight-medium);
103
+ color: var(--color-neutral-400);
104
+ margin: 0 var(--spacing-xs);
105
+ line-height: 1;
106
+ }
107
+
108
+ .separator.size-sm {
109
+ font-size: 1.5rem;
110
+ }
111
+
112
+ .separator.size-md {
113
+ font-size: 1.5rem;
114
+ }
115
+
116
+ .separator.size-lg {
117
+ font-size: 1.875rem;
118
+ }
119
+
120
+ .hint-text {
121
+ font-size: var(--text-sm-size);
122
+ font-weight: var(--weight-regular);
123
+ line-height: var(--text-sm-line);
124
+ color: var(--color-neutral-600);
125
+ margin-top: var(--spacing-xs);
126
+ }
127
+
128
+ .hint-text.error {
129
+ color: var(--color-error-600);
130
+ }
131
+
132
+ .verification-input::placeholder {
133
+ color: var(--color-neutral-400);
134
+ opacity: 1;
135
+ font-size: inherit;
136
+ font-weight: var(--weight-regular);
137
+ }
@@ -0,0 +1,374 @@
1
+ /* ==========================================================================
2
+ BELLHOP INPUT COMPONENTS - CENTRALIZED STYLES
3
+ ========================================================================== */
4
+
5
+ /* Base Input Wrapper */
6
+ .input-wrapper {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--spacing-sm);
10
+ width: 100%;
11
+ max-width: 100%;
12
+ }
13
+
14
+ .input-with-label {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: var(--spacing-sm);
18
+ width: 100%;
19
+ }
20
+
21
+ /* Label Styling */
22
+ .label-wrapper {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: var(--spacing-xxs);
26
+ }
27
+
28
+ .label-wrapper .icon-with-tooltip {
29
+ margin-left: auto;
30
+ }
31
+
32
+ .label {
33
+ font-family: var(--font-inter);
34
+ font-weight: 500;
35
+ font-size: var(--text-sm-size);
36
+ line-height: 1.43;
37
+ color: var(--color-neutral-700);
38
+ }
39
+
40
+ .asterisk {
41
+ font-family: var(--font-inter);
42
+ font-weight: 400;
43
+ font-size: var(--text-sm-size);
44
+ line-height: 1.43;
45
+ color: var(--color-error-600);
46
+ }
47
+
48
+ /* Input Field Container */
49
+ .input-field {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: var(--spacing-md);
53
+ padding: var(--spacing-md);
54
+ height: 36px;
55
+ width: 100%;
56
+ background: var(--color-white);
57
+ border: 1px solid var(--color-neutral-300);
58
+ border-radius: var(--spacing-md);
59
+ transition: all 0.2s ease-in-out;
60
+ cursor: text;
61
+ box-shadow: 0 0 0 0px transparent;
62
+ overflow: hidden;
63
+ position: relative;
64
+ }
65
+
66
+ .input-field.input-icon-leading {
67
+ padding: var(--spacing-md) var(--spacing-lg);
68
+ }
69
+
70
+ /* Input Content */
71
+ .input-content {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: var(--spacing-md);
75
+ flex: 1;
76
+ height: 100%;
77
+ min-width: 0;
78
+ max-width: 100%;
79
+ }
80
+
81
+ /* Ensure buttons within inputs are properly aligned */
82
+ .input-content app-button {
83
+ align-self: center;
84
+ display: flex;
85
+ flex-shrink: 0;
86
+ }
87
+
88
+ .input-content app-button .btn {
89
+ align-self: center;
90
+ }
91
+
92
+ /* Leading Icon */
93
+ .leading-icon {
94
+ font-size: var(--text-xl-size);
95
+ color: var(--color-neutral-500);
96
+ user-select: none;
97
+ flex-shrink: 0;
98
+ cursor: default;
99
+ pointer-events: auto;
100
+ transition: color 0.2s ease-in-out;
101
+ }
102
+
103
+ /* Leading icon when input is focused */
104
+ .input-field.input-focused .leading-icon {
105
+ color: var(--color-brand-600);
106
+ }
107
+
108
+ /* Trailing Icon Styling */
109
+ .trailing-icon {
110
+ font-size: var(--text-xl-size);
111
+ color: var(--color-neutral-500);
112
+ user-select: none;
113
+ flex-shrink: 0;
114
+ cursor: default;
115
+ pointer-events: auto;
116
+ transition: color 0.2s ease-in-out;
117
+ }
118
+
119
+ /* Trailing icon when input is focused */
120
+ .input-field.input-focused .trailing-icon {
121
+ color: var(--color-brand-600);
122
+ }
123
+
124
+ /* Input Element */
125
+ .input-element {
126
+ flex: 1;
127
+ height: 100%;
128
+ border: none;
129
+ outline: none;
130
+ background: transparent;
131
+ font-family: var(--font-inter);
132
+ font-weight: 400;
133
+ font-size: var(--text-sm-size);
134
+ line-height: 1.43;
135
+ color: var(--color-neutral-800);
136
+ min-width: 60px;
137
+ padding-left: var(--spacing-xs);
138
+ box-shadow: none;
139
+ }
140
+
141
+ .input-element:focus {
142
+ outline: none;
143
+ border: none;
144
+ box-shadow: none;
145
+ }
146
+
147
+ .input-element::placeholder {
148
+ color: var(--color-neutral-500);
149
+ }
150
+
151
+ .input-element:disabled {
152
+ cursor: not-allowed;
153
+ opacity: 0.5;
154
+ }
155
+
156
+ /* Text States */
157
+ .text-placeholder {
158
+ color: var(--color-neutral-500);
159
+ }
160
+
161
+ .text-filled {
162
+ color: var(--color-neutral-800);
163
+ }
164
+
165
+ /* Help Icon */
166
+ .help-icon {
167
+ font-size: var(--text-xl-size);
168
+ color: var(--color-neutral-400);
169
+ cursor: pointer;
170
+ user-select: none;
171
+ flex-shrink: 0;
172
+ transition: color 0.2s ease-in-out;
173
+ pointer-events: auto;
174
+ }
175
+
176
+ .help-icon:hover {
177
+ color: var(--color-neutral-500);
178
+ }
179
+
180
+ /* Hint Text */
181
+ .hint-text {
182
+ font-family: var(--font-inter);
183
+ font-weight: 400;
184
+ font-size: var(--text-sm-size);
185
+ line-height: 1.43;
186
+ color: var(--color-neutral-600);
187
+ }
188
+
189
+ /* Input States */
190
+ .input-field.input-hover {
191
+ border-color: var(--color-brand-500);
192
+ }
193
+
194
+ .input-field.input-focused {
195
+ border-color: var(--color-brand-500);
196
+ box-shadow: 0 0 0 1px var(--color-brand-500);
197
+ }
198
+
199
+ .input-field.input-disabled {
200
+ opacity: 0.5;
201
+ cursor: not-allowed;
202
+ background: var(--color-neutral-50);
203
+ }
204
+
205
+ .input-field.input-error {
206
+ border-color: var(--color-error-300);
207
+ }
208
+
209
+ .input-field.input-error.input-hover {
210
+ border-color: var(--color-error-500);
211
+ }
212
+
213
+ .input-field.input-error.input-focused {
214
+ border-color: var(--color-brand-600);
215
+ }
216
+
217
+ .hint-text.hint-error {
218
+ color: var(--color-error-600);
219
+ }
220
+
221
+ /* Material Symbols Support */
222
+ .material-symbols-outlined {
223
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
224
+ }
225
+
226
+ /* Icon Container */
227
+ .icon-with-tooltip {
228
+ position: relative;
229
+ display: flex;
230
+ align-items: center;
231
+ flex-shrink: 0;
232
+ }
233
+
234
+ /* Prefix and Suffix */
235
+ .prefix-text,
236
+ .suffix-text {
237
+ font-family: var(--font-inter);
238
+ font-weight: 400;
239
+ font-size: var(--text-sm-size);
240
+ line-height: 1.43;
241
+ color: var(--color-neutral-600);
242
+ user-select: none;
243
+ flex-shrink: 0;
244
+ }
245
+
246
+ /* Password Visibility Toggle */
247
+ .visibility-toggle {
248
+ font-size: var(--text-xl-size);
249
+ color: var(--color-neutral-400);
250
+ cursor: pointer;
251
+ user-select: none;
252
+ flex-shrink: 0;
253
+ transition: color 0.2s ease-in-out;
254
+ pointer-events: auto;
255
+ }
256
+
257
+ .visibility-toggle:hover {
258
+ color: var(--color-neutral-600);
259
+ }
260
+
261
+ /* Hide default number input spinners */
262
+ .input-element::-webkit-outer-spin-button,
263
+ .input-element::-webkit-inner-spin-button {
264
+ -webkit-appearance: none;
265
+ margin: 0;
266
+ }
267
+
268
+ .input-element[type='number'] {
269
+ -moz-appearance: textfield;
270
+ appearance: textfield;
271
+ }
272
+
273
+ /* Tag Input Specific Styles */
274
+ .tags-container {
275
+ display: flex;
276
+ flex-wrap: wrap;
277
+ gap: var(--spacing-xs);
278
+ align-items: center;
279
+ flex: 1;
280
+ }
281
+
282
+ /* Note: Use the dedicated Tag component instead of custom tag styles */
283
+
284
+ /* Verification Input Specific Styles */
285
+ .verification-wrapper {
286
+ display: flex;
287
+ flex-direction: column;
288
+ gap: var(--spacing-sm);
289
+ width: 100%;
290
+ }
291
+
292
+ .verification-with-label {
293
+ display: flex;
294
+ flex-direction: column;
295
+ gap: var(--spacing-sm);
296
+ width: 100%;
297
+ }
298
+
299
+ .verification-container {
300
+ display: flex;
301
+ gap: var(--spacing-sm);
302
+ justify-content: flex-start;
303
+ align-items: center;
304
+ }
305
+
306
+ .verification-digit {
307
+ width: 48px;
308
+ height: 48px;
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ background: var(--color-white);
313
+ border: 1px solid var(--color-neutral-300);
314
+ border-radius: var(--spacing-sm);
315
+ font-family: var(--font-inter);
316
+ font-weight: 500;
317
+ font-size: var(--text-lg-size);
318
+ line-height: 1.33;
319
+ color: var(--color-neutral-800);
320
+ text-align: center;
321
+ transition: all 0.2s ease-in-out;
322
+ }
323
+
324
+ .verification-digit:focus {
325
+ border-color: var(--color-brand-500);
326
+ box-shadow: 0 0 0 1px var(--color-brand-500);
327
+ outline: none;
328
+ }
329
+
330
+ .verification-digit.filled {
331
+ background: var(--color-brand-50);
332
+ border-color: var(--color-brand-300);
333
+ }
334
+
335
+ .verification-container .separator {
336
+ font-family: var(--font-inter);
337
+ font-weight: 400;
338
+ font-size: var(--text-lg-size);
339
+ color: var(--color-neutral-500);
340
+ margin: 0 var(--spacing-xs);
341
+ }
342
+
343
+ /* Autocomplete Input Container */
344
+ .autocomplete-container {
345
+ position: relative;
346
+ width: 100%;
347
+ }
348
+
349
+ /* Selected Tags Container - Ensure inline layout */
350
+ .selected-tags {
351
+ display: flex;
352
+ flex-wrap: nowrap;
353
+ gap: var(--spacing-xs);
354
+ align-items: center;
355
+ flex-shrink: 1;
356
+ min-width: 0;
357
+ }
358
+
359
+ /* Responsive Adjustments */
360
+ @media (max-width: 768px) {
361
+ .input-wrapper {
362
+ width: 100%;
363
+ }
364
+
365
+ .verification-inputs {
366
+ gap: var(--spacing-xs);
367
+ }
368
+
369
+ .verification-digit {
370
+ width: 40px;
371
+ height: 40px;
372
+ font-size: var(--text-base-size);
373
+ }
374
+ }