@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,421 @@
1
+ /* ==========================================================================
2
+ LOADER SPINNER COMPONENT
3
+ Shared styles for all frameworks
4
+ ========================================================================== */
5
+
6
+ /* Overlay styles */
7
+ .loader-overlay {
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ background-color: rgba(0, 0, 0, 0.3);
14
+ backdrop-filter: blur(4px);
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ z-index: 9999;
19
+ }
20
+
21
+ .loader-overlay-content {
22
+ display: flex;
23
+ flex-direction: column;
24
+ align-items: center;
25
+ gap: var(--spacing-md);
26
+ }
27
+
28
+ /* Container styles */
29
+ .loader-container {
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: center;
33
+ gap: var(--spacing-sm);
34
+ }
35
+
36
+ .loader-spinner {
37
+ position: relative;
38
+ display: inline-block;
39
+ }
40
+
41
+ /* Message styles */
42
+ .loader-message {
43
+ color: var(--color-neutral-700);
44
+ font-size: var(--text-sm-size);
45
+ line-height: var(--text-sm-line);
46
+ font-weight: var(--weight-medium);
47
+ text-align: center;
48
+ margin-top: var(--spacing-xs);
49
+ }
50
+
51
+ .loader-overlay .loader-message {
52
+ color: var(--color-white);
53
+ }
54
+
55
+ /* =========================
56
+ CIRCULAR VARIANT - World Class Smooth
57
+ ========================= */
58
+ .spinner-circular {
59
+ animation: circular-rotate 2s linear infinite;
60
+ will-change: transform;
61
+ }
62
+
63
+ .circular-svg {
64
+ display: block;
65
+ transform-origin: 50% 50%;
66
+ }
67
+
68
+ .circular-path {
69
+ stroke-dasharray: 90, 150;
70
+ stroke-dashoffset: 0;
71
+ animation: circular-dash 1.5s ease-in-out infinite;
72
+ transform-origin: 50% 50%;
73
+ }
74
+
75
+ /* Size variations for circular */
76
+ .size-sm .circular-svg {
77
+ width: 20px;
78
+ height: 20px;
79
+ }
80
+
81
+ .size-sm .circular-path {
82
+ stroke-width: 2;
83
+ }
84
+
85
+ .size-md .circular-svg {
86
+ width: 30px;
87
+ height: 30px;
88
+ }
89
+
90
+ .size-md .circular-path {
91
+ stroke-width: 3;
92
+ }
93
+
94
+ .size-lg .circular-svg {
95
+ width: 40px;
96
+ height: 40px;
97
+ }
98
+
99
+ .size-lg .circular-path {
100
+ stroke-width: 3;
101
+ }
102
+
103
+ .size-xl .circular-svg {
104
+ width: 60px;
105
+ height: 60px;
106
+ }
107
+
108
+ .size-xl .circular-path {
109
+ stroke-width: 4;
110
+ }
111
+
112
+ /* Color variations for circular */
113
+ .color-brand .circular-path {
114
+ stroke: var(--color-brand-600);
115
+ }
116
+
117
+ .color-neutral .circular-path {
118
+ stroke: var(--color-neutral-600);
119
+ }
120
+
121
+ .color-white .circular-path {
122
+ stroke: var(--color-white);
123
+ }
124
+
125
+ @keyframes circular-rotate {
126
+ 100% {
127
+ transform: rotate(360deg);
128
+ }
129
+ }
130
+
131
+ @keyframes circular-dash {
132
+ 0% {
133
+ stroke-dasharray: 1, 150;
134
+ stroke-dashoffset: 0;
135
+ }
136
+ 50% {
137
+ stroke-dasharray: 90, 150;
138
+ stroke-dashoffset: -35;
139
+ }
140
+ 100% {
141
+ stroke-dasharray: 90, 150;
142
+ stroke-dashoffset: -124;
143
+ }
144
+ }
145
+
146
+ /* =========================
147
+ GRADIENT VARIANT - BellhopOS Sidebar Style
148
+ ========================= */
149
+ .spinner-gradient {
150
+ animation: gradient-rotate 2s linear infinite;
151
+ will-change: transform;
152
+ }
153
+
154
+ .gradient-svg {
155
+ display: block;
156
+ transform-origin: 50% 50%;
157
+ }
158
+
159
+ .gradient-path {
160
+ stroke-dasharray: 90, 150;
161
+ stroke-dashoffset: 0;
162
+ animation: gradient-dash 1.5s ease-in-out infinite;
163
+ transform-origin: 50% 50%;
164
+ }
165
+
166
+ /* Size variations for gradient */
167
+ .size-sm .gradient-svg {
168
+ width: 20px;
169
+ height: 20px;
170
+ }
171
+
172
+ .size-sm .gradient-path {
173
+ stroke-width: 3;
174
+ }
175
+
176
+ .size-md .gradient-svg {
177
+ width: 30px;
178
+ height: 30px;
179
+ }
180
+
181
+ .size-md .gradient-path {
182
+ stroke-width: 4;
183
+ }
184
+
185
+ .size-lg .gradient-svg {
186
+ width: 40px;
187
+ height: 40px;
188
+ }
189
+
190
+ .size-lg .gradient-path {
191
+ stroke-width: 4;
192
+ }
193
+
194
+ .size-xl .gradient-svg {
195
+ width: 60px;
196
+ height: 60px;
197
+ }
198
+
199
+ .size-xl .gradient-path {
200
+ stroke-width: 5;
201
+ }
202
+
203
+ @keyframes gradient-rotate {
204
+ 100% {
205
+ transform: rotate(360deg);
206
+ }
207
+ }
208
+
209
+ @keyframes gradient-dash {
210
+ 0% {
211
+ stroke-dasharray: 1, 150;
212
+ stroke-dashoffset: 0;
213
+ }
214
+ 50% {
215
+ stroke-dasharray: 90, 150;
216
+ stroke-dashoffset: -35;
217
+ }
218
+ 100% {
219
+ stroke-dasharray: 90, 150;
220
+ stroke-dashoffset: -124;
221
+ }
222
+ }
223
+
224
+ @keyframes gradient-glow {
225
+ 0%,
226
+ 100% {
227
+ filter: drop-shadow(
228
+ 0 0 8px rgba(var(--color-brand-600-rgb, 59, 130, 246), 0.3)
229
+ );
230
+ }
231
+ 50% {
232
+ filter: drop-shadow(
233
+ 0 0 16px rgba(var(--color-accent-300-rgb, 125, 211, 252), 0.6)
234
+ );
235
+ }
236
+ }
237
+
238
+ /* =========================
239
+ DOTS VARIANT - Simple Fallback
240
+ ========================= */
241
+ .spinner-dots {
242
+ display: flex;
243
+ align-items: center;
244
+ gap: 4px;
245
+ }
246
+
247
+ .dot {
248
+ border-radius: 50%;
249
+ animation: dots-bounce 1.4s ease-in-out infinite both;
250
+ }
251
+
252
+ .dot-1 {
253
+ animation-delay: -0.32s;
254
+ }
255
+ .dot-2 {
256
+ animation-delay: -0.16s;
257
+ }
258
+ .dot-3 {
259
+ animation-delay: 0;
260
+ }
261
+
262
+ /* Size variations for dots */
263
+ .size-sm .dot {
264
+ width: 4px;
265
+ height: 4px;
266
+ }
267
+
268
+ .size-md .dot {
269
+ width: 6px;
270
+ height: 6px;
271
+ }
272
+
273
+ .size-lg .dot {
274
+ width: 8px;
275
+ height: 8px;
276
+ }
277
+
278
+ .size-xl .dot {
279
+ width: 12px;
280
+ height: 12px;
281
+ }
282
+
283
+ /* Color variations for dots */
284
+ .color-brand .dot {
285
+ background-color: var(--color-brand-600);
286
+ }
287
+
288
+ .color-neutral .dot {
289
+ background-color: var(--color-neutral-600);
290
+ }
291
+
292
+ .color-white .dot {
293
+ background-color: var(--color-white);
294
+ }
295
+
296
+ @keyframes dots-bounce {
297
+ 0%,
298
+ 80%,
299
+ 100% {
300
+ transform: scale(0);
301
+ }
302
+ 40% {
303
+ transform: scale(1);
304
+ }
305
+ }
306
+
307
+ /* =========================
308
+ PULSE VARIANT - Simple Fallback
309
+ ========================= */
310
+ .spinner-pulse {
311
+ position: relative;
312
+ display: inline-block;
313
+ }
314
+
315
+ .pulse-ring {
316
+ position: absolute;
317
+ border-radius: 50%;
318
+ opacity: 1;
319
+ animation: pulse-scale 2s ease-out infinite;
320
+ border-width: 2px;
321
+ border-style: solid;
322
+ top: 50%;
323
+ left: 50%;
324
+ transform: translate(-50%, -50%);
325
+ }
326
+
327
+ .pulse-1 {
328
+ animation-delay: 0s;
329
+ }
330
+ .pulse-2 {
331
+ animation-delay: -0.6s;
332
+ }
333
+ .pulse-3 {
334
+ animation-delay: -1.2s;
335
+ }
336
+
337
+ /* Size variations for pulse */
338
+ .size-sm .pulse-ring {
339
+ width: 20px;
340
+ height: 20px;
341
+ border-width: 1px;
342
+ }
343
+
344
+ .size-md .pulse-ring {
345
+ width: 30px;
346
+ height: 30px;
347
+ border-width: 2px;
348
+ }
349
+
350
+ .size-lg .pulse-ring {
351
+ width: 40px;
352
+ height: 40px;
353
+ border-width: 2px;
354
+ }
355
+
356
+ .size-xl .pulse-ring {
357
+ width: 60px;
358
+ height: 60px;
359
+ border-width: 3px;
360
+ }
361
+
362
+ /* Color variations for pulse */
363
+ .color-brand .pulse-ring {
364
+ border-color: var(--color-brand-600);
365
+ }
366
+
367
+ .color-neutral .pulse-ring {
368
+ border-color: var(--color-neutral-600);
369
+ }
370
+
371
+ .color-white .pulse-ring {
372
+ border-color: var(--color-white);
373
+ }
374
+
375
+ @keyframes pulse-scale {
376
+ 0% {
377
+ transform: translate(-50%, -50%) scale(0);
378
+ opacity: 1;
379
+ }
380
+ 100% {
381
+ transform: translate(-50%, -50%) scale(1);
382
+ opacity: 0;
383
+ }
384
+ }
385
+
386
+ /* Hover effects - Ultra smooth acceleration */
387
+ .loader-container:hover .spinner-circular {
388
+ animation-duration: 1.2s;
389
+ }
390
+
391
+ .loader-container:hover .circular-path {
392
+ animation-duration: 0.8s;
393
+ }
394
+
395
+ .loader-container:hover .spinner-gradient {
396
+ animation-duration: 1s;
397
+ }
398
+
399
+ .loader-container:hover .gradient-path {
400
+ animation-duration: 0.6s;
401
+ }
402
+
403
+ .loader-container:hover .dot {
404
+ animation-duration: 0.8s;
405
+ }
406
+
407
+ .loader-container:hover .pulse-ring {
408
+ animation-duration: 1.2s;
409
+ }
410
+
411
+ /* Performance optimizations */
412
+ .spinner-circular,
413
+ .spinner-gradient {
414
+ backface-visibility: hidden;
415
+ perspective: 1000px;
416
+ }
417
+
418
+ .circular-svg,
419
+ .gradient-svg {
420
+ transform: translateZ(0);
421
+ }
@@ -0,0 +1,85 @@
1
+ .logo-box {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: flex-start;
6
+ position: relative;
7
+ width: 40px;
8
+ flex-shrink: 0;
9
+ isolation: isolate;
10
+ }
11
+
12
+ .logo-active {
13
+ background-color: var(--color-brand-600);
14
+ box-sizing: border-box;
15
+ display: flex;
16
+ gap: var(--spacing-lg);
17
+ align-items: center;
18
+ justify-content: center;
19
+ padding: var(--spacing-sm);
20
+ position: relative;
21
+ border-radius: var(--radius-md);
22
+ flex-shrink: 0;
23
+ width: 40px;
24
+ height: 40px;
25
+ z-index: 2;
26
+ transition: background-color 0.3s ease;
27
+ cursor: pointer;
28
+ }
29
+
30
+ /* Hover effect for logo-active */
31
+ .logo-box:hover .logo-active,
32
+ .logo-box.dropdown-open .logo-active {
33
+ background-color: var(--color-brand-700);
34
+ }
35
+
36
+ .logo {
37
+ overflow: hidden;
38
+ position: relative;
39
+ flex-shrink: 0;
40
+ width: 32px;
41
+ height: 32px;
42
+ background-size: contain;
43
+ background-repeat: no-repeat;
44
+ background-position: center;
45
+ transition: background-image 0.4s cubic-bezier(0.08, 0.52, 0.52, 1);
46
+ }
47
+
48
+ /* Logo variations - Background images must be configured by the consuming application */
49
+ .logo-actabl {
50
+ /* background-image should be set by consuming application */
51
+ }
52
+
53
+ .logo-al {
54
+ /* background-image should be set by consuming application */
55
+ }
56
+
57
+ .logo-he {
58
+ /* background-image should be set by consuming application */
59
+ }
60
+
61
+ .logo-ps {
62
+ /* background-image should be set by consuming application */
63
+ }
64
+
65
+ .logo-tr {
66
+ /* background-image should be set by consuming application */
67
+ }
68
+
69
+ .logo-more-products {
70
+ position: absolute;
71
+ background-color: var(--color-brand-200);
72
+ right: 2px;
73
+ bottom: -4px;
74
+ border-radius: 5px;
75
+ width: 36px;
76
+ height: 35px;
77
+ z-index: 1;
78
+ transition: transform 0.3s ease;
79
+ }
80
+
81
+ /* Slide-up animation for logo-more-products */
82
+ .logo-box:hover .logo-more-products,
83
+ .logo-box.dropdown-open .logo-more-products {
84
+ transform: translateY(-4px);
85
+ }
@@ -0,0 +1,190 @@
1
+ /* ==========================================================================
2
+ MONTH PICKER CONTENT COMPONENT - REUSABLE CALENDAR CONTENT
3
+ ========================================================================== */
4
+
5
+ @import '../tokens/bellhop-animations.css';
6
+
7
+ /* Content area - can be scrollable or not based on parent needs */
8
+ .month-picker-content {
9
+ width: 100%;
10
+ overflow-x: hidden;
11
+ /*padding: var(--spacing-xl);*/
12
+ font-family: var(--font-inter);
13
+ }
14
+
15
+ /* Extend animation duration for smoother effect */
16
+ .month-picker-content.animate-slide-up-enter {
17
+ animation-duration: var(--animation-duration-slow);
18
+ }
19
+
20
+ .month-picker-content.scrollable {
21
+ max-height: 340px;
22
+ overflow-y: auto;
23
+ padding: 0 var(--spacing-xl);
24
+ position: relative;
25
+ }
26
+
27
+ /* Custom scrollbar styling */
28
+ .month-picker-content.scrollable::-webkit-scrollbar {
29
+ width: var(--spacing-xs);
30
+ }
31
+
32
+ .month-picker-content.scrollable::-webkit-scrollbar-track {
33
+ background: var(--color-neutral-50);
34
+ border-radius: var(--radius-xs);
35
+ }
36
+
37
+ .month-picker-content.scrollable::-webkit-scrollbar-thumb {
38
+ background: var(--color-neutral-200);
39
+ border-radius: var(--radius-xs);
40
+ }
41
+
42
+ .month-picker-content.scrollable::-webkit-scrollbar-thumb:hover {
43
+ background: var(--color-neutral-300);
44
+ }
45
+
46
+ /* Firefox scrollbar */
47
+ .month-picker-content.scrollable {
48
+ scrollbar-width: thin;
49
+ scrollbar-color: var(--color-neutral-200) transparent;
50
+ }
51
+
52
+ /* Calendar container */
53
+ .calendar {
54
+ display: flex;
55
+ flex-direction: column;
56
+ width: 100%;
57
+ padding: var(--spacing-lg);
58
+ }
59
+
60
+ /* Year Section - Contains year button + months row */
61
+ .year-section {
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: var(--spacing-xs);
65
+ width: 100%;
66
+ }
67
+
68
+ .year-month-container {
69
+ display: flex;
70
+ flex-direction: row;
71
+ width: 100%;
72
+ align-items: flex-start;
73
+ }
74
+
75
+ /* Year Label - positioned on left */
76
+ .year-label {
77
+ width: auto;
78
+ height: auto;
79
+ display: flex;
80
+ align-items: flex-start;
81
+ justify-content: flex-start;
82
+ font-family: var(--font-inter);
83
+ font-weight: var(--weight-bold);
84
+ font-size: var(--text-sm-size);
85
+ line-height: var(--text-md-line);
86
+ color: var(--color-neutral-700);
87
+ flex-shrink: 0;
88
+ min-width: 50px;
89
+ padding: var(--spacing-sm) 0;
90
+ }
91
+
92
+ /* Months Grid - 2 rows of 6 months each */
93
+ .months-row {
94
+ display: flex;
95
+ flex-direction: column;
96
+ gap: var(--spacing-sm);
97
+ flex: 1;
98
+ width: 100%;
99
+ max-width: 300px;
100
+ }
101
+ /* Month Button - 40x40px circular */
102
+ .month-button {
103
+ width: 40px;
104
+ height: 40px;
105
+ border-radius: var(--radius-full);
106
+ border: 2px solid transparent;
107
+ background: transparent;
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ font-family: var(--font-inter);
112
+ font-weight: var(--weight-medium);
113
+ font-size: var(--text-sm-size);
114
+ line-height: var(--leading-sm);
115
+ color: var(--color-neutral-500);
116
+ cursor: pointer;
117
+ transition: all var(--animation-duration-fast) var(--animation-easing-ease);
118
+ flex-shrink: 0;
119
+ text-align: center;
120
+ overflow: hidden;
121
+ }
122
+
123
+ .month-row {
124
+ display: flex;
125
+ gap: var(--spacing-sm);
126
+ justify-content: flex-start;
127
+ }
128
+
129
+ .month-button:hover:not(.inactive):not(.selected):not(:disabled):not(.today) {
130
+ background: var(--color-neutral-50);
131
+ color: var(--color-neutral-800);
132
+ }
133
+
134
+ /* Selected state - blue background */
135
+ .month-button.selected {
136
+ background: var(--color-brand-600);
137
+ color: var(--color-white);
138
+ font-weight: var(--weight-semibold);
139
+ }
140
+
141
+ /* Today's date state - blue border to match date picker */
142
+ .month-button.today:not(.selected) {
143
+ border-color: var(--color-brand-600);
144
+ }
145
+
146
+ .month-button.today:not(.selected):hover {
147
+ background: var(--color-brand-100);
148
+ color: var(--color-brand-600);
149
+ }
150
+
151
+ /* Inactive/disabled state */
152
+ .month-button.inactive,
153
+ .month-button:disabled {
154
+ opacity: 0.4;
155
+ cursor: not-allowed;
156
+ color: var(--color-neutral-400);
157
+ }
158
+
159
+ .month-button:disabled:hover {
160
+ background: transparent;
161
+ }
162
+
163
+ /* Section Divider - Between year sections */
164
+ .section-divider {
165
+ width: 100%;
166
+ margin: var(--spacing-xl) 0;
167
+ }
168
+
169
+ .divider-container {
170
+ width: 100%;
171
+ display: flex;
172
+ justify-content: center;
173
+ }
174
+
175
+ .divider-line {
176
+ width: 100%;
177
+ height: 1px;
178
+ background: var(--color-neutral-200);
179
+ }
180
+
181
+ /* Focus states for accessibility - completely disable outline */
182
+ .month-button:focus {
183
+ outline: none;
184
+ }
185
+
186
+ /* Keyboard navigation state - will be added via JavaScript */
187
+ .month-button.keyboard-focused {
188
+ outline: var(--border-width-md) solid var(--color-brand-500);
189
+ outline-offset: var(--spacing-xs);
190
+ }