@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,83 @@
1
+ /* ==========================================================================
2
+ MONTH PICKER COMPONENT - MAIN PICKER WITH VARIANTS
3
+ ========================================================================== */
4
+
5
+ @import '../tokens/bellhop-animations.css';
6
+
7
+ .month-picker-container {
8
+ position: relative;
9
+ display: inline-block;
10
+ }
11
+
12
+ /* Chevron rotation animation for month picker buttons */
13
+ .month-picker-trigger .btn-icon-trailing .material-symbols-outlined {
14
+ transition: transform var(--animation-duration-fast)
15
+ var(--animation-ease-smooth);
16
+ display: inline-block;
17
+ }
18
+
19
+ .month-picker-trigger .dropdown-open .btn-icon-trailing .material-symbols-outlined {
20
+ transform: rotate(180deg);
21
+ }
22
+
23
+ /* Trigger styles */
24
+ .month-picker-trigger {
25
+ cursor: pointer;
26
+ }
27
+
28
+ .month-picker-trigger:disabled {
29
+ cursor: not-allowed;
30
+ }
31
+
32
+ /* Menu positioning */
33
+ .month-picker-menu-container {
34
+ position: absolute;
35
+ top: 100%;
36
+ left: 50%;
37
+ transform: translateX(-50%);
38
+ z-index: 1000;
39
+ margin-top: var(--spacing-xs);
40
+ width: fit-content !important; /* Fixed width to match month picker menu */
41
+ }
42
+
43
+ /* Backdrop */
44
+ .month-picker-backdrop {
45
+ position: fixed;
46
+ top: 0;
47
+ left: 0;
48
+ width: 100%;
49
+ height: 100%;
50
+ z-index: 999;
51
+ background: transparent;
52
+ }
53
+
54
+ /* Input field container */
55
+ .input-field-container {
56
+ position: relative;
57
+ }
58
+
59
+ /* Input field specific styling */
60
+ .month-picker-trigger .input-text {
61
+ /* Allow input interaction */
62
+ }
63
+
64
+ .month-picker-trigger .input-text input {
65
+ cursor: text;
66
+ }
67
+
68
+ /* Style calendar icon when input is focused */
69
+ .month-picker-trigger .input-text.input-focused .leading-icon {
70
+ color: var(--color-brand-600) !important;
71
+ }
72
+
73
+ /* Calendar icon overlay for reliable click detection */
74
+ .calendar-icon-overlay {
75
+ position: absolute;
76
+ bottom: 8px; /* Position from bottom to account for label */
77
+ left: 16px; /* Adjust based on input padding */
78
+ width: 24px;
79
+ height: 24px;
80
+ cursor: pointer;
81
+ z-index: 10;
82
+ /* Invisible overlay positioned over calendar icon */
83
+ }
@@ -0,0 +1,110 @@
1
+ /* ==========================================================================
2
+ NAV ITEM COMPONENT
3
+ Navigation item for sidebar navigation
4
+ ========================================================================== */
5
+
6
+ .nav-item {
7
+ display: flex;
8
+ flex-direction: column;
9
+ align-items: center;
10
+ justify-content: flex-start;
11
+ position: relative;
12
+ flex-shrink: 0;
13
+ width: 100%;
14
+ max-width: 52px;
15
+ height: fit-content;
16
+ }
17
+
18
+ .nav-item-button {
19
+ background-color: var(--color-white);
20
+ box-sizing: border-box;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ overflow: hidden;
25
+ padding: var(--spacing-md);
26
+ position: relative;
27
+ border-radius: var(--radius-sm);
28
+ flex-shrink: 0;
29
+ transition: background-color 0.2s ease;
30
+ cursor: pointer;
31
+ border: none;
32
+ outline: none;
33
+ }
34
+
35
+ .nav-item-button:hover {
36
+ background-color: var(--color-neutral-50);
37
+ }
38
+
39
+ .nav-item-button:focus-visible {
40
+ box-shadow: 0 0 0 2px var(--color-brand-100);
41
+ }
42
+
43
+ .nav-item.active .nav-item-button {
44
+ background-color: var(--color-brand-50);
45
+ }
46
+
47
+ .nav-item-button .icon {
48
+ width: 20px;
49
+ height: 20px;
50
+ display: block;
51
+ flex-shrink: 0;
52
+ color: var(--color-neutral-500);
53
+ transition: color 0.2s ease;
54
+ font-size: 20px;
55
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
56
+ }
57
+
58
+ .nav-item-button:hover .icon {
59
+ color: var(--color-neutral-700);
60
+ }
61
+
62
+ .nav-item.active .nav-item-button .icon {
63
+ color: var(--color-brand-600);
64
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
65
+ }
66
+
67
+ .nav-item-label {
68
+ font-family: var(--font-inter);
69
+ font-weight: var(--weight-medium);
70
+ height: 18px;
71
+ line-height: 18px;
72
+ font-style: normal;
73
+ overflow: hidden;
74
+ text-overflow: ellipsis;
75
+ position: relative;
76
+ flex-shrink: 0;
77
+ color: var(--color-neutral-700);
78
+ font-size: 10px;
79
+ text-align: center;
80
+ white-space: nowrap;
81
+ width: 100%;
82
+ max-width: 100%;
83
+ margin: var(--spacing-none);
84
+ margin-top: var(--spacing-xxs);
85
+ box-sizing: border-box;
86
+ direction: ltr;
87
+ }
88
+
89
+ .nav-item.active .nav-item-label {
90
+ color: var(--color-neutral-700);
91
+ font-weight: var(--weight-semibold);
92
+ }
93
+
94
+ /* Disabled state */
95
+ .nav-item.disabled .nav-item-button {
96
+ cursor: not-allowed;
97
+ opacity: 0.5;
98
+ }
99
+
100
+ .nav-item.disabled .nav-item-button:hover {
101
+ background-color: var(--color-white);
102
+ }
103
+
104
+ .nav-item.disabled .nav-item-button .icon {
105
+ color: var(--color-neutral-400);
106
+ }
107
+
108
+ .nav-item.disabled .nav-item-label {
109
+ color: var(--color-neutral-400);
110
+ }
@@ -0,0 +1,262 @@
1
+ /* Base notification styles */
2
+ .notification {
3
+ position: relative;
4
+ display: flex;
5
+ background: var(--color-white);
6
+ border: 1px solid var(--color-neutral-200);
7
+ border-radius: var(--radius-xl);
8
+ box-shadow: var(--shadow-modal);
9
+ overflow: hidden;
10
+ font-family: var(--font-inter);
11
+ }
12
+
13
+ /* Animation classes */
14
+ @keyframes slideInRight {
15
+ from {
16
+ transform: translateX(100%);
17
+ opacity: 0;
18
+ }
19
+ to {
20
+ transform: translateX(0);
21
+ opacity: 1;
22
+ }
23
+ }
24
+
25
+ @keyframes slideOutRight {
26
+ from {
27
+ transform: translateX(0);
28
+ opacity: 1;
29
+ }
30
+ to {
31
+ transform: translateX(100%);
32
+ opacity: 0;
33
+ }
34
+ }
35
+
36
+ .notification-animated {
37
+ animation: slideInRight 0.3s ease-out forwards;
38
+ }
39
+
40
+ .notification-closing {
41
+ animation: slideOutRight 0.3s ease-in forwards;
42
+ }
43
+
44
+ /* Notification container for positioning */
45
+ .notification-container {
46
+ position: fixed;
47
+ top: var(--spacing-3xl);
48
+ right: var(--spacing-3xl);
49
+ z-index: 1000;
50
+ pointer-events: none;
51
+ }
52
+
53
+ .notification-container .notification {
54
+ pointer-events: auto;
55
+ margin-bottom: var(--spacing-xl);
56
+ }
57
+
58
+ /* Desktop variant */
59
+ .notification-desktop {
60
+ padding: var(--spacing-3xl);
61
+ max-width: 400px;
62
+ }
63
+
64
+ /* Mobile variant */
65
+ .notification-mobile {
66
+ width: 100%;
67
+ max-width: 343px;
68
+ }
69
+
70
+ .notification-mobile .notification-content {
71
+ padding: var(--spacing-3xl);
72
+ }
73
+
74
+ /* Image container for mobile */
75
+ .notification-image-container {
76
+ width: 100%;
77
+ height: 160px;
78
+ overflow: hidden;
79
+ flex-shrink: 0;
80
+ }
81
+
82
+ .notification-image {
83
+ width: 100%;
84
+ height: 100%;
85
+ object-fit: cover;
86
+ display: block;
87
+ }
88
+
89
+ /* Notification with image should have no top padding on mobile */
90
+ .notification-mobile.notification-image .notification-content {
91
+ padding-top: var(--spacing-xl);
92
+ padding-bottom: var(--spacing-xl);
93
+ }
94
+
95
+ /* Content area */
96
+ .notification-content {
97
+ display: flex;
98
+ align-items: flex-start;
99
+ gap: var(--spacing-xl);
100
+ flex: 1;
101
+ padding-right: var(--spacing-4xl);
102
+ }
103
+
104
+ .notification-mobile .notification-content {
105
+ flex-direction: column;
106
+ padding-right: var(--spacing-4xl);
107
+ }
108
+
109
+ /* Icon wrapper */
110
+ .notification-icon-wrapper {
111
+ position: relative;
112
+ flex-shrink: 0;
113
+ }
114
+
115
+ /* Featured icon adjustments for notification context */
116
+ .notification-icon-wrapper .featured-icon {
117
+ flex-shrink: 0;
118
+ }
119
+
120
+ /* Avatar */
121
+ .notification-avatar {
122
+ width: var(--spacing-5xl);
123
+ height: var(--spacing-5xl);
124
+ border-radius: var(--radius-full);
125
+ overflow: hidden;
126
+ flex-shrink: 0;
127
+ }
128
+
129
+ .notification-avatar img {
130
+ width: 100%;
131
+ height: 100%;
132
+ object-fit: cover;
133
+ }
134
+
135
+ /* Progress indicator */
136
+ .notification-progress {
137
+ width: var(--spacing-5xl);
138
+ height: var(--spacing-5xl);
139
+ }
140
+
141
+ .progress-ring {
142
+ transform: rotate(-90deg);
143
+ }
144
+
145
+ .progress-ring-circle-bg {
146
+ stroke: var(--color-neutral-200);
147
+ }
148
+
149
+ .progress-ring-circle {
150
+ stroke: var(--color-brand-600);
151
+ transition: stroke-dashoffset 0.3s ease;
152
+ }
153
+
154
+ /* Text content */
155
+ .notification-text {
156
+ flex: 1;
157
+ display: flex;
158
+ flex-direction: column;
159
+ gap: var(--spacing-lg);
160
+ padding-top: var(--spacing-xxs);
161
+ }
162
+
163
+ .notification-text-wrapper {
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: var(--spacing-xs);
167
+ }
168
+
169
+ .notification-title {
170
+ font-size: var(--text-sm-size);
171
+ font-weight: var(--weight-semibold);
172
+ line-height: var(--text-sm-line);
173
+ color: var(--color-neutral-800);
174
+ margin: 0;
175
+ }
176
+
177
+ .notification-description {
178
+ font-size: var(--text-sm-size);
179
+ font-weight: var(--weight-regular);
180
+ line-height: var(--text-sm-line);
181
+ color: var(--color-neutral-600);
182
+ margin: 0;
183
+ }
184
+
185
+ /* Actions */
186
+ .notification-actions {
187
+ display: flex;
188
+ gap: var(--spacing-lg);
189
+ }
190
+
191
+ .notification-button {
192
+ padding: 0;
193
+ border: none;
194
+ background: none;
195
+ font-family: var(--font-inter);
196
+ font-size: var(--text-sm-size);
197
+ font-weight: var(--weight-semibold);
198
+ line-height: var(--text-sm-line);
199
+ cursor: pointer;
200
+ transition: opacity 0.2s ease;
201
+ }
202
+
203
+ .notification-button:hover {
204
+ opacity: 0.8;
205
+ }
206
+
207
+ .notification-button:focus-visible {
208
+ outline: 2px solid var(--color-brand-500);
209
+ outline-offset: var(--spacing-xxs);
210
+ border-radius: var(--radius-xs);
211
+ }
212
+
213
+ .notification-button-primary {
214
+ color: var(--color-brand-600);
215
+ }
216
+
217
+ .notification-button-secondary {
218
+ color: var(--color-neutral-600);
219
+ }
220
+
221
+ /* Close button */
222
+ .notification-close {
223
+ position: absolute;
224
+ top: var(--spacing-md);
225
+ right: var(--spacing-md);
226
+ width: var(--spacing-4xl);
227
+ height: var(--spacing-4xl);
228
+ display: flex;
229
+ align-items: center;
230
+ justify-content: center;
231
+ background: transparent;
232
+ border: none;
233
+ border-radius: var(--radius-md);
234
+ cursor: pointer;
235
+ color: var(--color-neutral-400);
236
+ transition: background-color 0.2s ease, color 0.2s ease;
237
+ }
238
+
239
+ .notification-close-icon {
240
+ font-size: 20px !important;
241
+ width: 20px;
242
+ height: 20px;
243
+ line-height: 1;
244
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
245
+ }
246
+
247
+ .notification-close:hover {
248
+ background-color: var(--color-neutral-50);
249
+ color: var(--color-neutral-600);
250
+ }
251
+
252
+ .notification-close:focus-visible {
253
+ outline: 2px solid var(--color-brand-500);
254
+ outline-offset: var(--spacing-xxs);
255
+ }
256
+
257
+ /* Responsive adjustments */
258
+ @media (max-width: 480px) {
259
+ .notification-desktop {
260
+ max-width: 100%;
261
+ }
262
+ }