@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,294 +0,0 @@
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
- }
@@ -1,43 +0,0 @@
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
- }
@@ -1,213 +0,0 @@
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
- }
@@ -1,80 +0,0 @@
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
-