@keenmate/pure-admin-core 1.0.0-rc01 → 1.0.0-rc02

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.
@@ -8,15 +8,15 @@
8
8
  ================================ -->
9
9
 
10
10
  <!-- Profile Button (goes in header/navbar) -->
11
- <button class="pa-navbar__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
11
+ <button class="pa-header__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
12
12
  <span class="pa-btn__icon">👤</span>
13
- <span class="pa-navbar__profile-name">John Doe</span>
13
+ <span class="pa-header__profile-name">John Doe</span>
14
14
  </button>
15
15
 
16
16
  <!-- Profile Button with Font Awesome -->
17
- <button class="pa-navbar__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
17
+ <button class="pa-header__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
18
18
  <span class="pa-btn__icon"><i class="fa-solid fa-user"></i></span>
19
- <span class="pa-navbar__profile-name">John Doe</span>
19
+ <span class="pa-header__profile-name">John Doe</span>
20
20
  </button>
21
21
 
22
22
 
@@ -81,6 +81,115 @@
81
81
  </div>
82
82
 
83
83
 
84
+ <!-- ================================
85
+ PROFILE PANEL - WITH TABS (PROFILE + FAVORITES)
86
+ ================================ -->
87
+
88
+ <div class="pa-profile-panel" id="profilePanel">
89
+ <div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
90
+ <div class="pa-profile-panel__content">
91
+ <div class="pa-profile-panel__header">
92
+ <div class="pa-profile-panel__avatar">
93
+ <span class="pa-profile-panel__avatar-icon">👤</span>
94
+ </div>
95
+ <div class="pa-profile-panel__info">
96
+ <h3 class="pa-profile-panel__name">John Doe</h3>
97
+ <p class="pa-profile-panel__email">john.doe@company.com</p>
98
+ <span class="pa-profile-panel__role">Administrator</span>
99
+ </div>
100
+ <button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
101
+
102
+ </button>
103
+ </div>
104
+
105
+ <!-- Profile Panel Tabs -->
106
+ <div class="pa-profile-panel__tabs">
107
+ <div class="pa-tabs pa-tabs--full">
108
+ <button class="pa-tabs__item pa-tabs__item--active" data-profile-tab="profile">
109
+ <span>👤</span> Profile
110
+ </button>
111
+ <button class="pa-tabs__item" data-profile-tab="favorites">
112
+ <span>⭐</span> Favorites
113
+ </button>
114
+ </div>
115
+ </div>
116
+
117
+ <div class="pa-profile-panel__body">
118
+ <!-- Profile Tab -->
119
+ <div class="pa-tabs__panel pa-tabs__panel--active" data-profile-panel="profile">
120
+ <nav class="pa-profile-panel__nav">
121
+ <ul>
122
+ <li><a href="#profile" class="pa-profile-panel__nav-item">
123
+ <span class="pa-profile-panel__nav-icon">👤</span>
124
+ Profile Settings
125
+ </a></li>
126
+ <li><a href="#security" class="pa-profile-panel__nav-item">
127
+ <span class="pa-profile-panel__nav-icon">🔒</span>
128
+ Security
129
+ </a></li>
130
+ <li><a href="#notifications" class="pa-profile-panel__nav-item">
131
+ <span class="pa-profile-panel__nav-icon">🔔</span>
132
+ Notifications
133
+ </a></li>
134
+ <li><a href="#preferences" class="pa-profile-panel__nav-item">
135
+ <span class="pa-profile-panel__nav-icon">⚙️</span>
136
+ Preferences
137
+ </a></li>
138
+ <li><a href="#help" class="pa-profile-panel__nav-item">
139
+ <span class="pa-profile-panel__nav-icon">❓</span>
140
+ Help & Support
141
+ </a></li>
142
+ </ul>
143
+ </nav>
144
+
145
+ <div class="pa-profile-panel__actions">
146
+ <button class="pa-btn pa-btn--secondary pa-btn--block">
147
+ Switch Account
148
+ </button>
149
+ <button class="pa-btn pa-btn--danger pa-btn--block">
150
+ Sign Out
151
+ </button>
152
+ </div>
153
+ </div>
154
+
155
+ <!-- Favorites Tab -->
156
+ <div class="pa-tabs__panel" data-profile-panel="favorites">
157
+ <div class="pa-profile-panel__favorites">
158
+ <ul>
159
+ <li>
160
+ <div class="pa-profile-panel__favorite-item" data-href="/dashboard">
161
+ <span class="pa-profile-panel__favorite-icon">📊</span>
162
+ <span class="pa-profile-panel__favorite-label">Dashboard</span>
163
+ <button class="pa-profile-panel__favorite-remove" title="Remove from favorites">✕</button>
164
+ </div>
165
+ </li>
166
+ <li>
167
+ <div class="pa-profile-panel__favorite-item" data-href="/reports">
168
+ <span class="pa-profile-panel__favorite-icon">📝</span>
169
+ <span class="pa-profile-panel__favorite-label">Reports</span>
170
+ <button class="pa-profile-panel__favorite-remove" title="Remove from favorites">✕</button>
171
+ </div>
172
+ </li>
173
+ <li>
174
+ <div class="pa-profile-panel__favorite-item" data-href="/settings">
175
+ <span class="pa-profile-panel__favorite-icon">⚙️</span>
176
+ <span class="pa-profile-panel__favorite-label">Settings</span>
177
+ <button class="pa-profile-panel__favorite-remove" title="Remove from favorites">✕</button>
178
+ </div>
179
+ </li>
180
+ </ul>
181
+ </div>
182
+ <div class="pa-profile-panel__favorites-add">
183
+ <button class="pa-btn pa-btn--sm pa-btn--outline-secondary pa-btn--block">
184
+ + Add Current Page
185
+ </button>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+
192
+
84
193
  <!-- ================================
85
194
  PROFILE PANEL - WITH FONT AWESOME
86
195
  ================================ -->
@@ -206,7 +315,7 @@ function closeProfilePanel() {
206
315
  */
207
316
  document.addEventListener('click', (e) => {
208
317
  const profilePanel = document.getElementById('profilePanel');
209
- const profileBtn = document.querySelector('.pa-navbar__profile-btn');
318
+ const profileBtn = document.querySelector('.pa-header__profile-btn');
210
319
 
211
320
  if (!profilePanel || !profileBtn) return;
212
321
 
@@ -215,6 +324,43 @@ document.addEventListener('click', (e) => {
215
324
  closeProfilePanel();
216
325
  }
217
326
  });
327
+
328
+ /**
329
+ * Profile panel tab switching
330
+ */
331
+ document.querySelectorAll('[data-profile-tab]').forEach(tab => {
332
+ tab.addEventListener('click', () => {
333
+ const tabId = tab.dataset.profileTab;
334
+ // Update active tab
335
+ document.querySelectorAll('[data-profile-tab]').forEach(t =>
336
+ t.classList.toggle('pa-tabs__item--active', t.dataset.profileTab === tabId));
337
+ // Update active panel
338
+ document.querySelectorAll('[data-profile-panel]').forEach(p =>
339
+ p.classList.toggle('pa-tabs__panel--active', p.dataset.profilePanel === tabId));
340
+ });
341
+ });
342
+
343
+ /**
344
+ * Favorite item click - navigate using data-href
345
+ */
346
+ document.querySelectorAll('.pa-profile-panel__favorite-item').forEach(item => {
347
+ item.addEventListener('click', (e) => {
348
+ // Skip if clicking the remove button
349
+ if (e.target.closest('.pa-profile-panel__favorite-remove')) return;
350
+ const href = item.dataset.href;
351
+ if (href) window.location.href = href;
352
+ });
353
+ });
354
+
355
+ /**
356
+ * Favorite remove button - remove item from list
357
+ */
358
+ document.querySelectorAll('.pa-profile-panel__favorite-remove').forEach(btn => {
359
+ btn.addEventListener('click', (e) => {
360
+ e.stopPropagation();
361
+ btn.closest('li').remove();
362
+ });
363
+ });
218
364
  </script>
219
365
 
220
366
 
@@ -224,9 +370,9 @@ document.addEventListener('click', (e) => {
224
370
 
225
371
  <!--
226
372
  PROFILE BUTTON (HEADER):
227
- - .pa-navbar__profile-btn - Profile button in header
373
+ - .pa-header__profile-btn - Profile button in header
228
374
  - .pa-btn__icon - Icon container
229
- - .pa-navbar__profile-name - User name text
375
+ - .pa-header__profile-name - User name text
230
376
 
231
377
  PROFILE PANEL STRUCTURE:
232
378
  - .pa-profile-panel - Main panel container
@@ -245,6 +391,12 @@ PANEL HEADER:
245
391
  - .pa-profile-panel__role - User role badge
246
392
  - .pa-profile-panel__close - Close button
247
393
 
394
+ PANEL TABS (optional):
395
+ - .pa-profile-panel__tabs - Tabs container
396
+ - .pa-tabs.pa-tabs--full - Full-width tabs
397
+ - [data-profile-tab] - Tab button attribute
398
+ - [data-profile-panel] - Tab panel attribute
399
+
248
400
  PANEL BODY:
249
401
  - .pa-profile-panel__body - Body container
250
402
  - .pa-profile-panel__nav - Navigation menu
@@ -252,10 +404,20 @@ PANEL BODY:
252
404
  - .pa-profile-panel__nav-icon - Navigation icon
253
405
  - .pa-profile-panel__actions - Action buttons container
254
406
 
407
+ FAVORITES SECTION:
408
+ - .pa-profile-panel__favorites - Favorites container
409
+ - .pa-profile-panel__favorite-item - Favorite link (use div with data-href)
410
+ - .pa-profile-panel__favorite-icon - Favorite icon
411
+ - .pa-profile-panel__favorite-label - Favorite text label
412
+ - .pa-profile-panel__favorite-remove - Remove button (appears on hover)
413
+ - .pa-profile-panel__favorites-add - Add button container
414
+
255
415
  JAVASCRIPT FUNCTIONS:
256
416
  - toggleProfilePanel() - Toggle panel open/closed
257
417
  - closeProfilePanel() - Close panel
258
418
  - Auto-closes when clicking outside
419
+ - Tab switching via data-profile-tab/data-profile-panel attributes
420
+ - Favorite navigation via data-href attribute
259
421
 
260
422
  PLACEMENT:
261
423
  - Profile button goes in header/navbar
@@ -15,19 +15,31 @@
15
15
  // ============================================================================
16
16
 
17
17
  @mixin output-base-css-variables {
18
- // === Colors ===
18
+ // === Accent Colors ===
19
19
  --base-accent-color: #{$base-accent-color};
20
20
  --base-accent-color-hover: #{$base-accent-color-hover};
21
21
  --base-accent-color-active: #{$base-accent-color-active};
22
22
  --base-accent-color-light: #{$base-accent-color-light};
23
23
  --base-accent-color-light-hover: #{$base-accent-color-light-hover};
24
- --base-primary-bg: #{$base-primary-bg};
25
- --base-primary-bg-hover: #{$base-primary-bg-hover};
24
+
25
+ // === Text Colors ===
26
26
  --base-text-color-1: #{$base-text-color-1};
27
27
  --base-text-color-2: #{$base-text-color-2};
28
28
  --base-text-color-3: #{$base-text-color-3};
29
29
  --base-text-color-4: #{$base-text-color-4};
30
30
  --base-text-color-on-accent: #{$base-text-color-on-accent};
31
+
32
+ // === Surface Colors ===
33
+ --base-surface-1: #{$base-surface-1};
34
+ --base-surface-2: #{$base-surface-2};
35
+ --base-surface-3: #{$base-surface-3};
36
+ --base-surface-inverse: #{$base-surface-inverse};
37
+ --base-overlay-bg: #{$base-overlay-bg};
38
+ --base-shadow-color: #{$base-shadow-color};
39
+ --base-primary-bg: #{$base-primary-bg};
40
+ --base-primary-bg-hover: #{$base-primary-bg-hover};
41
+
42
+ // === Border Colors ===
31
43
  --base-border-color: #{$base-border-color};
32
44
  --base-border: #{$base-border};
33
45
 
@@ -56,8 +68,55 @@
56
68
  --base-tooltip-bg: #{$base-tooltip-bg};
57
69
  --base-tooltip-text-color: #{$base-tooltip-text-color};
58
70
 
71
+ // === Contextual Colors - Success ===
72
+ --base-success-color: #{$base-success-color};
73
+ --base-success-color-hover: #{$base-success-color-hover};
74
+ --base-success-bg-light: #{$base-success-bg-light};
75
+ --base-success-bg-subtle: #{$base-success-bg-subtle};
76
+ --base-success-border: #{$base-success-border};
77
+ --base-success-text: #{$base-success-text};
78
+ --base-success-text-light: #{$base-success-text-light};
79
+ --base-text-on-success: #{$base-text-on-success};
80
+
81
+ // === Contextual Colors - Danger ===
82
+ --base-danger-color: #{$base-danger-color};
83
+ --base-danger-color-hover: #{$base-danger-color-hover};
84
+ --base-danger-bg-light: #{$base-danger-bg-light};
85
+ --base-danger-bg-subtle: #{$base-danger-bg-subtle};
86
+ --base-danger-border: #{$base-danger-border};
87
+ --base-danger-text: #{$base-danger-text};
88
+ --base-danger-text-light: #{$base-danger-text-light};
89
+ --base-text-on-danger: #{$base-text-on-danger};
90
+
91
+ // === Contextual Colors - Warning ===
92
+ --base-warning-color: #{$base-warning-color};
93
+ --base-warning-color-hover: #{$base-warning-color-hover};
94
+ --base-warning-bg-light: #{$base-warning-bg-light};
95
+ --base-warning-bg-subtle: #{$base-warning-bg-subtle};
96
+ --base-warning-border: #{$base-warning-border};
97
+ --base-warning-text: #{$base-warning-text};
98
+ --base-warning-text-light: #{$base-warning-text-light};
99
+ --base-text-on-warning: #{$base-text-on-warning};
100
+
101
+ // === Contextual Colors - Info ===
102
+ --base-info-color: #{$base-info-color};
103
+ --base-info-color-hover: #{$base-info-color-hover};
104
+ --base-info-bg-light: #{$base-info-bg-light};
105
+ --base-info-bg-subtle: #{$base-info-bg-subtle};
106
+ --base-info-border: #{$base-info-border};
107
+ --base-info-text: #{$base-info-text};
108
+ --base-info-text-light: #{$base-info-text-light};
109
+ --base-text-on-info: #{$base-text-on-info};
110
+
111
+ // === Interactive States ===
112
+ --base-hover-overlay: #{$base-hover-overlay};
113
+ --base-active-overlay: #{$base-active-overlay};
114
+ --base-focus-ring-color: #{$base-focus-ring-color};
115
+ --base-focus-ring-width: #{$base-focus-ring-width};
116
+
59
117
  // === Typography ===
60
118
  --base-font-family: #{$base-font-family};
119
+ --base-font-family-mono: #{$base-font-family-mono};
61
120
  --base-font-size-2xs: #{$base-font-size-2xs};
62
121
  --base-font-size-xs: #{$base-font-size-xs};
63
122
  --base-font-size-sm: #{$base-font-size-sm};
@@ -68,6 +127,7 @@
68
127
  --base-font-weight-normal: #{$base-font-weight-normal};
69
128
  --base-font-weight-medium: #{$base-font-weight-medium};
70
129
  --base-font-weight-semibold: #{$base-font-weight-semibold};
130
+ --base-font-weight-bold: #{$base-font-weight-bold};
71
131
  --base-line-height-tight: #{$base-line-height-tight};
72
132
  --base-line-height-normal: #{$base-line-height-normal};
73
133
  --base-line-height-relaxed: #{$base-line-height-relaxed};
@@ -11,6 +11,9 @@
11
11
  // Base styles and resets
12
12
  @use 'core-components/base' as *;
13
13
 
14
+ // Scrollbar styling (global)
15
+ @use 'core-components/scrollbars' as *;
16
+
14
17
  // Layout components (header, sidebar, footer, responsive)
15
18
  @use 'core-components/layout' as *;
16
19
 
@@ -83,12 +83,12 @@
83
83
  color: var(--pa-text-primary);
84
84
  font-size: $font-size-base;
85
85
  font-weight: $font-weight-semibold;
86
+ line-height: 1;
86
87
  }
87
88
  }
88
89
 
89
90
  &__body {
90
- padding: $card-body-padding $card-body-padding $card-body-padding
91
- $card-body-padding;
91
+ padding: $card-body-padding-v $card-body-padding-h;
92
92
  flex: 1;
93
93
 
94
94
  // Remove top margin from first child to avoid double spacing with padding
@@ -196,8 +196,8 @@
196
196
  &__nav-item {
197
197
  display: flex;
198
198
  align-items: center;
199
- gap: $spacing-md;
200
- padding: $card-footer-padding-v $card-footer-padding-h;
199
+ gap: $sidebar-item-gap;
200
+ padding: $sidebar-padding;
201
201
  color: var(--pa-text-primary);
202
202
  text-decoration: none;
203
203
  border-radius: $border-radius;
@@ -217,8 +217,8 @@
217
217
  }
218
218
 
219
219
  &__nav-icon {
220
- font-size: $font-size-lg;
221
- width: $profile-nav-icon-width;
220
+ font-size: $font-size-base;
221
+ width: $sidebar-icon-size;
222
222
  text-align: center;
223
223
  }
224
224
 
@@ -228,54 +228,126 @@
228
228
  gap: $spacing-md;
229
229
  margin-top: auto;
230
230
  }
231
- }
232
231
 
233
- // Responsive adjustments
234
- @media (max-width: $mobile-breakpoint) {
235
- .pa-profile-panel__content {
236
- width: 85vw;
237
- max-width: $profile-panel-mobile-max-width;
232
+ // Tabs section
233
+ &__tabs {
234
+ padding: 0 $spacing-lg;
235
+ border-bottom: $border-width-base solid var(--pa-border-color);
236
+ background-color: var(--pa-header-bg);
237
+
238
+ .pa-tabs {
239
+ border-bottom: none;
240
+ margin-bottom: 0;
241
+ }
242
+
243
+ .pa-tabs__item {
244
+ color: var(--pa-header-text-secondary);
245
+ border-bottom-color: transparent;
246
+
247
+ &:hover {
248
+ color: var(--pa-header-text);
249
+ background-color: rgba(255, 255, 255, 0.1);
250
+ }
251
+
252
+ &--active {
253
+ color: var(--pa-header-text);
254
+ border-bottom-color: var(--pa-accent);
255
+ }
256
+ }
238
257
  }
239
258
 
240
- .pa-header__profile-name {
241
- display: none;
259
+ // Favorites section
260
+ &__favorites {
261
+ display: flex;
262
+ flex-direction: column;
263
+ gap: $spacing-sm;
264
+
265
+ ul {
266
+ list-style: none;
267
+ margin: 0;
268
+ padding: 0;
269
+ }
270
+
271
+ li {
272
+ margin-bottom: $spacing-sm;
273
+ }
242
274
  }
243
- }
244
275
 
245
- // Global scrollbar styling - applies to all content
246
- /* Webkit browsers (Chrome, Safari, Edge) */
247
- *::-webkit-scrollbar {
248
- width: $scrollbar-width;
249
- height: $scrollbar-width;
250
- }
276
+ &__favorite-item {
277
+ display: flex;
278
+ align-items: center;
279
+ gap: $sidebar-item-gap;
280
+ padding: $sidebar-padding;
281
+ color: var(--pa-text-primary);
282
+ text-decoration: none;
283
+ border-radius: $border-radius;
284
+ cursor: pointer;
285
+ transition: background-color $transition-fast $easing-snappy,
286
+ color $transition-fast $easing-snappy;
287
+ font-weight: $font-weight-medium;
251
288
 
252
- *::-webkit-scrollbar-track {
253
- background: var(--pa-primary-bg);
254
- border-radius: $border-radius;
255
- }
289
+ &:hover {
290
+ background-color: var(--pa-accent-light);
291
+ color: var(--pa-accent);
292
+ }
256
293
 
257
- *::-webkit-scrollbar-thumb {
258
- background: $border-color;
259
- border-radius: $border-radius;
260
- border: $border-width-base solid var(--pa-primary-bg);
294
+ &:focus {
295
+ outline: $focus-outline-width solid var(--pa-accent);
296
+ outline-offset: $focus-outline-offset;
297
+ }
298
+ }
261
299
 
262
- &:hover {
263
- background: $accent-color;
264
- border-color: $accent-hover;
300
+ &__favorite-icon {
301
+ font-size: $font-size-base;
302
+ width: $sidebar-icon-size;
303
+ text-align: center;
265
304
  }
266
305
 
267
- &:active {
268
- background: $accent-hover;
306
+ &__favorite-label {
307
+ flex: 1;
269
308
  }
270
- }
271
309
 
272
- *::-webkit-scrollbar-corner {
273
- background: var(--pa-primary-bg);
274
- }
310
+ // Favorite remove button
311
+ &__favorite-remove {
312
+ opacity: 0;
313
+ margin-left: auto;
314
+ background: none;
315
+ border: none;
316
+ padding: $spacing-sm;
317
+ color: var(--pa-text-secondary);
318
+ cursor: pointer;
319
+ border-radius: $border-radius;
320
+ font-size: $font-size-sm;
321
+ line-height: 1;
322
+ transition: opacity $transition-fast $easing-snappy,
323
+ color $transition-fast $easing-snappy,
324
+ background-color $transition-fast $easing-snappy;
325
+
326
+ &:hover {
327
+ color: var(--pa-danger);
328
+ background-color: var(--pa-danger-bg-light);
329
+ }
330
+ }
275
331
 
276
- /* Firefox */
277
- * {
278
- scrollbar-width: auto;
279
- scrollbar-color: var(--pa-border-color) var(--pa-primary-bg);
332
+ // Show remove button on favorite-item hover
333
+ &__favorite-item:hover &__favorite-remove {
334
+ opacity: 1;
335
+ }
336
+
337
+ &__favorites-add {
338
+ margin-top: auto;
339
+ padding-top: $spacing-md;
340
+ }
280
341
  }
281
342
 
343
+ // Responsive adjustments
344
+ @media (max-width: $mobile-breakpoint) {
345
+ .pa-profile-panel__content {
346
+ width: 85vw;
347
+ max-width: $profile-panel-mobile-max-width;
348
+ }
349
+
350
+ .pa-header__profile-name {
351
+ display: none;
352
+ }
353
+ }
@@ -0,0 +1,41 @@
1
+ // ============================================================================
2
+ // SCROLLBARS
3
+ // Global scrollbar styling for consistent appearance across browsers
4
+ // ============================================================================
5
+ @use '../variables' as *;
6
+
7
+ /* Webkit browsers (Chrome, Safari, Edge) */
8
+ *::-webkit-scrollbar {
9
+ width: $scrollbar-width;
10
+ height: $scrollbar-width;
11
+ }
12
+
13
+ *::-webkit-scrollbar-track {
14
+ background: var(--pa-primary-bg);
15
+ border-radius: $scrollbar-border-radius;
16
+ }
17
+
18
+ *::-webkit-scrollbar-thumb {
19
+ background: $border-color;
20
+ border-radius: $scrollbar-border-radius;
21
+ border: $border-width-base solid var(--pa-primary-bg);
22
+
23
+ &:hover {
24
+ background: $accent-color;
25
+ border-color: $accent-hover;
26
+ }
27
+
28
+ &:active {
29
+ background: $accent-hover;
30
+ }
31
+ }
32
+
33
+ *::-webkit-scrollbar-corner {
34
+ background: var(--pa-primary-bg);
35
+ }
36
+
37
+ /* Firefox */
38
+ * {
39
+ scrollbar-width: thin;
40
+ scrollbar-color: var(--pa-border-color) var(--pa-primary-bg);
41
+ }
@@ -75,7 +75,7 @@
75
75
  font-size: $font-size-4xl;
76
76
  font-weight: $font-weight-bold;
77
77
  color: var(--pa-text-primary);
78
- line-height: 1;
78
+ line-height: 1.1;
79
79
  margin-bottom: $spacing-sm;
80
80
  }
81
81
 
@@ -120,7 +120,7 @@
120
120
  .pa-stat__number {
121
121
  font-size: clamp($stat-square-number-min, $stat-square-number-scale, $stat-square-number-max);
122
122
  font-weight: $font-weight-bold;
123
- line-height: 1;
123
+ line-height: 1.1;
124
124
  color: inherit;
125
125
  z-index: $focus-outline-width;
126
126
  position: relative;
@@ -134,7 +134,7 @@
134
134
  .pa-stat__symbol {
135
135
  font-size: clamp($stat-square-symbol-min, $stat-square-symbol-scale, $stat-square-symbol-max);
136
136
  font-weight: $font-weight-bold;
137
- line-height: 1;
137
+ line-height: 1.1;
138
138
  opacity: $stat-symbol-opacity;
139
139
  color: inherit;
140
140
  position: absolute;
@@ -304,7 +304,7 @@
304
304
  &--bordered {
305
305
  border: $border-width-base solid var(--pa-border-color);
306
306
  border-radius: $border-radius-lg;
307
- padding: $card-body-padding;
307
+ padding: $card-body-padding-v $card-body-padding-h;
308
308
  background-color: var(--pa-card-bg);
309
309
 
310
310
  // Remove bottom border from tabs since wrapper has border
@@ -337,7 +337,7 @@
337
337
  &--bordered {
338
338
  border: $border-width-base solid var(--pa-border-color);
339
339
  border-radius: $border-radius-lg;
340
- padding: $card-body-padding;
340
+ padding: $card-body-padding-v $card-body-padding-h;
341
341
  background-color: var(--pa-card-bg);
342
342
 
343
343
  // Add divider between tabs and content (gap already provides spacing)