@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,294 @@
1
+ /* ==========================================================================
2
+ PAGE NAVIGATION COMPONENT - REACT IMPLEMENTATION
3
+ Unified styles for page navigation matching Angular functionality
4
+ ========================================================================== */
5
+
6
+ /* Main Page Navigation Container */
7
+ .page-navigation {
8
+ width: 320px;
9
+ min-width: 280px;
10
+ background-color: var(--color-white);
11
+ padding: var(--spacing-xl) var(--spacing-md);
12
+ font-family: var(--font-inter);
13
+ height: 100vh;
14
+ overflow-y: auto;
15
+ border-right: 1px solid var(--color-neutral-200);
16
+ box-sizing: border-box;
17
+ user-select: none;
18
+ -webkit-user-select: none;
19
+ -moz-user-select: none;
20
+ -ms-user-select: none;
21
+ }
22
+
23
+ .page-navigation-header {
24
+ margin-bottom: var(--spacing-3xl);
25
+ }
26
+
27
+ .page-navigation-title {
28
+ font-size: var(--text-xl-size);
29
+ font-weight: var(--weight-semibold);
30
+ line-height: var(--text-xl-line);
31
+ color: var(--color-neutral-900);
32
+ padding: var(--spacing-none) var(--spacing-xl);
33
+ margin: 0;
34
+ }
35
+
36
+ .page-navigation-list {
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: var(--spacing-sm);
40
+ }
41
+
42
+ /* ==========================================================================
43
+ SINGLE LEVEL NAVIGATION ITEMS
44
+ ========================================================================== */
45
+
46
+ .page-navigation-single-level {
47
+ display: flex;
48
+ align-items: center;
49
+ padding: var(--spacing-lg);
50
+ cursor: pointer;
51
+ gap: var(--spacing-md);
52
+ position: relative;
53
+ transition: all 0.15s ease;
54
+ min-height: 40px;
55
+ max-height: 44px;
56
+ box-sizing: border-box;
57
+ border-radius: 6px;
58
+ margin: var(--spacing-none) var(--spacing-xs);
59
+ background-color: transparent;
60
+ border: 1px solid transparent;
61
+ }
62
+
63
+ /* Active/Selected state for single level */
64
+ .page-navigation-single-level.active {
65
+ background-color: transparent;
66
+ border: 1px solid transparent;
67
+ }
68
+
69
+ /* Hover state for single level */
70
+ .page-navigation-single-level:hover {
71
+ background-color: var(--color-neutral-50) !important;
72
+ }
73
+
74
+ /* ==========================================================================
75
+ MULTI LEVEL NAVIGATION ITEMS
76
+ ========================================================================== */
77
+
78
+ .page-navigation-multi-level {
79
+ margin: var(--spacing-none) var(--spacing-xs);
80
+ }
81
+
82
+ .page-navigation-multi-level-parent {
83
+ display: flex;
84
+ align-items: center;
85
+ padding: var(--spacing-lg);
86
+ cursor: pointer;
87
+ gap: var(--spacing-md);
88
+ position: relative;
89
+ transition: all 0.15s ease;
90
+ min-height: 40px;
91
+ max-height: 44px;
92
+ box-sizing: border-box;
93
+ border-radius: var(--radius-sm);
94
+ background-color: transparent;
95
+ border: 1px solid transparent;
96
+ }
97
+
98
+ /* Has active child state */
99
+ .page-navigation-multi-level.has-active-child .page-navigation-multi-level-parent {
100
+ background-color: transparent;
101
+ border: 1px solid transparent;
102
+ }
103
+
104
+ /* Hover state for multi level parent */
105
+ .page-navigation-multi-level-parent:hover {
106
+ background-color: var(--color-neutral-50) !important;
107
+ }
108
+
109
+ /* Children container with smooth animation */
110
+ .page-navigation-children {
111
+ margin-top: var(--spacing-xs);
112
+ margin-bottom: var(--spacing-xs);
113
+ position: relative;
114
+ margin-left: var(--spacing-xl);
115
+ display: flex;
116
+ flex-direction: column;
117
+ gap: var(--spacing-xs);
118
+ /*overflow: hidden;*/
119
+ max-height: 1000px;
120
+ opacity: 1;
121
+ transition: max-height 0.4s cubic-bezier(0.08, 0.52, 0.52, 1),
122
+ opacity 0.4s cubic-bezier(0.08, 0.52, 0.52, 1),
123
+ margin 0.4s cubic-bezier(0.08, 0.52, 0.52, 1);
124
+ }
125
+
126
+ .page-navigation-children.collapsed {
127
+ max-height: 0;
128
+ opacity: 0;
129
+ margin-top: 0;
130
+ margin-bottom: 0;
131
+ }
132
+
133
+ /* Vertical line indicator for children */
134
+ .page-navigation-children::before {
135
+ content: '';
136
+ position: absolute;
137
+ left: 0;
138
+ top: -2px;
139
+ height: calc(100% + 4px);
140
+ width: 2px;
141
+ background-color: var(--color-neutral-200);
142
+ margin-left: var(--spacing-sm);
143
+ z-index: 2;
144
+ }
145
+
146
+ /* ==========================================================================
147
+ CHILD NAVIGATION ITEMS
148
+ ========================================================================== */
149
+
150
+ .page-navigation-child {
151
+ display: flex;
152
+ align-items: center;
153
+ padding: var(--spacing-md) var(--spacing-lg);
154
+ cursor: pointer;
155
+ gap: var(--spacing-md);
156
+ position: relative;
157
+ transition: all 0.15s ease;
158
+ min-height: 36px;
159
+ box-sizing: border-box;
160
+ border-radius: var(--radius-sm);
161
+ margin: var(--spacing-none) var(--spacing-xs);
162
+ background-color: transparent;
163
+ border: 1px solid transparent;
164
+ margin-left: 9px;
165
+ }
166
+
167
+ /* Hover state for child items */
168
+ .page-navigation-child:hover:not(.active) {
169
+ background-color: var(--color-neutral-50);
170
+ position: relative;
171
+ z-index: 1;
172
+ }
173
+
174
+ /* Hover overlay to cover the vertical line */
175
+ .page-navigation-child:hover:not(.active)::after {
176
+ content: '';
177
+ position: absolute;
178
+ left: -20px;
179
+ top: 0;
180
+ bottom: 0;
181
+ width: 20px;
182
+ background-color: var(--color-neutral-100);
183
+ z-index: 1;
184
+ border-radius: var(--radius-sm);
185
+ }
186
+
187
+ /* Active/Selected state for child items */
188
+ .page-navigation-child.active {
189
+ background-color: transparent;
190
+ }
191
+
192
+ /* Active line indicator for child items */
193
+ .page-navigation-child.active::before {
194
+ content: '';
195
+ position: absolute;
196
+ left: -4.5px;
197
+ top: 50%;
198
+ transform: translateY(-50%);
199
+ width: 2px;
200
+ height: 24px;
201
+ background-color: var(--color-brand-600);
202
+ z-index: 3;
203
+ }
204
+
205
+ /* ==========================================================================
206
+ ITEM CONTENT AND COMMON ELEMENTS
207
+ ========================================================================== */
208
+
209
+ .page-navigation-item-content,
210
+ .page-navigation-child-content {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: var(--spacing-md);
214
+ width: 100%;
215
+ }
216
+
217
+ /* Icons */
218
+ .page-navigation-item-icon {
219
+ flex-shrink: 0;
220
+ color: var(--color-neutral-600);
221
+ font-size: 20px;
222
+ width: 20px;
223
+ height: 20px;
224
+ transition: color 0.15s ease;
225
+ }
226
+
227
+ /* Smooth animation class for page navigation items */
228
+ .page-navigation-animate-smooth {
229
+ transform-origin: top center;
230
+ transition: all var(--animation-duration-normal) var(--animation-ease-enter);
231
+ }
232
+
233
+ /* Chevron icon styling - separate from main icons */
234
+ .page-navigation-chevron-icon {
235
+ flex-shrink: 0;
236
+ color: var(--color-neutral-600);
237
+ font-size: 20px;
238
+ width: 20px;
239
+ height: 20px;
240
+ transition: color 0.15s ease, transform var(--animation-duration-fast) var(--animation-ease-smooth);
241
+ }
242
+
243
+ /* Chevron rotation when expanded */
244
+ .page-navigation-chevron-icon.expanded {
245
+ transform: rotate(180deg);
246
+ }
247
+
248
+ /* Icon color changes for active states */
249
+ .page-navigation-single-level.active .page-navigation-item-icon,
250
+ .page-navigation-multi-level.has-active-child .page-navigation-item-icon {
251
+ color: var(--color-neutral-900);
252
+ }
253
+
254
+ /* Labels */
255
+ .page-navigation-item-label,
256
+ .page-navigation-child-label {
257
+ font-family: 'Inter', sans-serif;
258
+ font-size: 14px;
259
+ font-weight: 500;
260
+ line-height: 20px;
261
+ color: var(--color-neutral-600);
262
+ flex: 1;
263
+ transition: all 0.15s ease;
264
+ }
265
+
266
+
267
+ /* Label color and weight changes for active states */
268
+ .page-navigation-single-level.active .page-navigation-item-label,
269
+ .page-navigation-multi-level.has-active-child .page-navigation-item-label {
270
+ color: var(--color-neutral-900);
271
+ font-weight: 600;
272
+ }
273
+
274
+ .page-navigation-child.active .page-navigation-child-label {
275
+ color: var(--color-brand-600);
276
+ font-weight: 600;
277
+ }
278
+
279
+ /* Badges */
280
+ .page-navigation-item-badge,
281
+ .page-navigation-child-badge {
282
+ margin-left: auto;
283
+ }
284
+
285
+ /* ==========================================================================
286
+ RESPONSIVE DESIGN
287
+ ========================================================================== */
288
+
289
+ @media (max-width: 768px) {
290
+ .page-navigation {
291
+ width: 280px;
292
+ min-width: 280px;
293
+ }
294
+ }
@@ -0,0 +1,43 @@
1
+ /* ==========================================================================
2
+ PICKER MENU COMPONENT - DROPDOWN MENU PATTERN
3
+ ========================================================================== */
4
+
5
+ @import '../tokens/bellhop-animations.css';
6
+
7
+ /* Base picker menu styles - matching dropdown menu */
8
+ .picker-menu {
9
+ width: 350px;
10
+ background: var(--color-white);
11
+ border-radius: var(--radius-md);
12
+ box-shadow: 0px 32px 64px -12px rgba(64, 73, 104, 0.14),
13
+ 0px 0px 1px 1px rgba(64, 73, 104, 0.1);
14
+ border: 1px solid var(--color-neutral-200);
15
+ overflow: hidden;
16
+ flex-shrink: 0;
17
+ position: relative;
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ /* Footer - following dropdown menu pattern */
22
+ .picker-menu-footer {
23
+ border-top: 1px solid var(--color-neutral-200);
24
+ padding: var(--spacing-xl) var(--spacing-xl);
25
+ background: var(--color-white);
26
+ }
27
+
28
+ .picker-menu-actions {
29
+ display: flex;
30
+ justify-content: flex-end;
31
+ align-items: center;
32
+ gap: var(--spacing-lg);
33
+ }
34
+
35
+ /* When today button is present, use space-between layout */
36
+ .picker-menu-actions.has-today-button {
37
+ justify-content: space-between;
38
+ }
39
+
40
+ .picker-menu-main-actions {
41
+ display: flex;
42
+ gap: var(--spacing-lg);
43
+ }
@@ -0,0 +1,213 @@
1
+ /* ==========================================================================
2
+ PIE CHART CARD COMPONENT - REACT IMPLEMENTATION
3
+ Unified styles for pie chart cards matching Angular functionality
4
+ ========================================================================== */
5
+
6
+ /* Wrapper for card + footer */
7
+ .pie-chart-card-wrapper {
8
+ position: relative;
9
+ display: inline-block;
10
+ border-radius: var(--radius-lg, 12px);
11
+ overflow: visible;
12
+ }
13
+
14
+ /* Base Card Styles */
15
+ .pie-chart-card {
16
+ position: relative;
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--spacing-2xl, 20px);
20
+ font-family: var(--font-inter);
21
+ background: var(--color-white);
22
+ border: 1px solid var(--color-neutral-200);
23
+ border-radius: var(--radius-lg, 12px);
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ /* Card with footer - remove bottom border radius */
28
+ .pie-chart-card.has-footer {
29
+ border-bottom-left-radius: 0;
30
+ border-bottom-right-radius: 0;
31
+ border-bottom: none;
32
+ }
33
+
34
+ /* Dropdown Menu */
35
+ .pie-chart-card-dropdown {
36
+ position: absolute;
37
+ top: var(--spacing-3xl, 24px);
38
+ right: var(--spacing-3xl, 24px);
39
+ z-index: 1000;
40
+ }
41
+
42
+ /* Adjust dropdown position for mobile */
43
+ .pie-chart-card-mobile .pie-chart-card-dropdown {
44
+ top: var(--spacing-2xl, 20px);
45
+ right: var(--spacing-xl, 16px);
46
+ }
47
+
48
+ /* Header */
49
+ .pie-chart-card-header {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: var(--spacing-xs, 4px);
53
+ }
54
+
55
+ .pie-chart-card-heading {
56
+ color: var(--color-neutral-900);
57
+ font-size: var(--text-md-size);
58
+ font-weight: var(--weight-semibold);
59
+ line-height: var(--text-md-line);
60
+ margin: 0;
61
+ }
62
+
63
+ .pie-chart-card-subtitle {
64
+ color: var(--color-neutral-500);
65
+ font-size: var(--text-sm-size);
66
+ font-weight: var(--weight-regular);
67
+ line-height: var(--text-sm-line);
68
+ margin: 0;
69
+ }
70
+
71
+ /* Chart Content */
72
+ .pie-chart-card-content {
73
+ display: flex;
74
+ flex-direction: column;
75
+ gap: var(--spacing-2xl);
76
+ }
77
+
78
+ /* Chart and Legend Container */
79
+ .chart-and-legend-container {
80
+ display: flex;
81
+ gap: var(--spacing-3xl);
82
+ align-items: center;
83
+ }
84
+
85
+ /* Chart Container */
86
+ .pie-chart-container {
87
+ position: relative;
88
+ flex-shrink: 0;
89
+ }
90
+
91
+ .chart-wrapper {
92
+ position: relative;
93
+ display: inline-block;
94
+ }
95
+
96
+ /* Chart Center Content */
97
+ .chart-center-content {
98
+ position: absolute;
99
+ top: 50%;
100
+ left: 50%;
101
+ transform: translate(-50%, -50%);
102
+ text-align: center;
103
+ pointer-events: none;
104
+ z-index: 10;
105
+ }
106
+
107
+ .chart-center-content.animated {
108
+ opacity: 0;
109
+ animation: chartCenterFadeIn 0.8s var(--animation-ease-enter) 0.4s forwards;
110
+ }
111
+
112
+ .chart-center-value {
113
+ font-size: var(--text-xl-size);
114
+ font-weight: var(--weight-semibold);
115
+ line-height: var(--text-xl-line);
116
+ color: var(--color-neutral-900);
117
+ margin-bottom: var(--spacing-xs);
118
+ }
119
+
120
+ .chart-center-badge-container {
121
+ display: flex;
122
+ justify-content: center;
123
+ }
124
+
125
+ /* Legend */
126
+ .pie-chart-card-legend {
127
+ display: flex;
128
+ flex-direction: column;
129
+ gap: var(--spacing-md);
130
+ width: 100%;
131
+ }
132
+
133
+ .legend-item {
134
+ display: flex;
135
+ align-items: center;
136
+ gap: var(--spacing-sm);
137
+ }
138
+
139
+ .legend-color {
140
+ width: var(--spacing-sm);
141
+ height: var(--spacing-sm);
142
+ border-radius: 50%;
143
+ flex-shrink: 0;
144
+ }
145
+
146
+ .legend-content {
147
+ display: flex;
148
+ flex-direction: row;
149
+ gap: var(--spacing-xs);
150
+ flex: 1;
151
+ width: 100%;
152
+ }
153
+
154
+ .legend-text {
155
+ color: var(--color-neutral-700);
156
+ font-size: var(--text-sm-size);
157
+ font-weight: var(--weight-regular);
158
+ line-height: var(--text-sm-line);
159
+ width: 100%;
160
+ }
161
+
162
+ .legend-values {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: var(--spacing-sm);
166
+ }
167
+
168
+ .legend-percentage {
169
+ color: var(--color-neutral-900);
170
+ font-size: var(--text-sm-size);
171
+ font-weight: var(--weight-medium);
172
+ line-height: var(--text-sm-line);
173
+ }
174
+
175
+ /* Responsive Dimensions - Desktop */
176
+ .pie-chart-card-desktop {
177
+ min-width: 480px;
178
+ max-width: 600px;
179
+ width: fit-content;
180
+ padding: var(--spacing-3xl, 24px);
181
+ }
182
+
183
+ /* Responsive Dimensions - Mobile */
184
+ .pie-chart-card-mobile {
185
+ min-width: 320px;
186
+ max-width: 480px;
187
+ width: fit-content;
188
+ padding: var(--spacing-2xl, 20px);
189
+ }
190
+
191
+ /* Mobile adjustments */
192
+ .pie-chart-card-mobile .chart-and-legend-container {
193
+ flex-direction: column;
194
+ gap: var(--spacing-2xl);
195
+ align-items: flex-start;
196
+ }
197
+
198
+ .pie-chart-card-mobile .pie-chart-card-legend {
199
+ width: 100%;
200
+ min-width: auto;
201
+ }
202
+
203
+ /* Animations */
204
+ @keyframes chartCenterFadeIn {
205
+ 0% {
206
+ opacity: 0;
207
+ transform: translate(-50%, -50%) scale(0.8);
208
+ }
209
+ 100% {
210
+ opacity: 1;
211
+ transform: translate(-50%, -50%) scale(1);
212
+ }
213
+ }
@@ -0,0 +1,80 @@
1
+ /* ==========================================================================
2
+ PIE CHART COMPONENT - REACT IMPLEMENTATION
3
+ Unified styles for pie charts matching Angular functionality
4
+ ========================================================================== */
5
+
6
+ .pie-chart-container {
7
+ display: inline-block;
8
+ width: 160px;
9
+ height: 160px;
10
+ overflow: visible;
11
+ }
12
+
13
+ .pie-chart-svg {
14
+ width: 100%;
15
+ height: 100%;
16
+ overflow: visible;
17
+ }
18
+
19
+ .pie-segment {
20
+ cursor: pointer;
21
+ transition: opacity var(--animation-duration-fast) var(--animation-ease-smooth);
22
+ transform-origin: 80px 80px;
23
+ }
24
+
25
+ .pie-segment.animated {
26
+ opacity: 0;
27
+ transform: scale(0.3) rotate(-180deg);
28
+ animation: pieSliceReveal 0.8s var(--animation-ease-enter) forwards;
29
+ }
30
+
31
+ .pie-segment:hover {
32
+ opacity: 0.85;
33
+ transform: scale(1.05);
34
+ filter: brightness(1.1);
35
+ transition: all var(--animation-duration-fast) var(--animation-ease-smooth);
36
+ }
37
+
38
+ .pie-background {
39
+ pointer-events: none;
40
+ }
41
+
42
+ .pie-inner-hole {
43
+ pointer-events: none;
44
+ }
45
+
46
+ .pie-segment-group {
47
+ pointer-events: auto;
48
+ }
49
+
50
+ @keyframes pieSliceReveal {
51
+ 0% {
52
+ opacity: 0;
53
+ transform: scale(0.3) rotate(-180deg);
54
+ }
55
+ 15% {
56
+ opacity: 0.2;
57
+ transform: scale(0.45) rotate(-135deg);
58
+ }
59
+ 30% {
60
+ opacity: 0.5;
61
+ transform: scale(0.7) rotate(-70deg);
62
+ }
63
+ 45% {
64
+ opacity: 0.7;
65
+ transform: scale(0.9) rotate(-25deg);
66
+ }
67
+ 60% {
68
+ opacity: 0.85;
69
+ transform: scale(1.05) rotate(-8deg);
70
+ }
71
+ 80% {
72
+ opacity: 0.95;
73
+ transform: scale(1.01) rotate(-1deg);
74
+ }
75
+ 100% {
76
+ opacity: 1;
77
+ transform: scale(1) rotate(0deg);
78
+ }
79
+ }
80
+