@keenmate/pure-admin-core 1.0.0-rc03 → 1.0.0-rc04
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.
- package/dist/css/main.css +709 -169
- package/package.json +1 -1
- package/snippets/badges.html +7 -6
- package/snippets/buttons.html +15 -13
- package/snippets/profile.html +67 -2
- package/snippets/tabs.html +47 -17
- package/snippets/tooltips.html +1 -1
- package/src/scss/core-components/_buttons.scss +0 -54
- package/src/scss/core-components/_profile.scss +27 -13
- package/src/scss/core-components/_tabs.scss +16 -83
- package/src/scss/core-components/badges/_badge-base.scss +0 -21
- package/src/scss/utilities.scss +197 -0
- package/src/scss/variables/_components.scss +14 -15
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keenmate/pure-admin-core",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc04",
|
|
4
4
|
"description": "Lightweight, data-focused HTML/CSS admin framework built with PureCSS foundation and comprehensive component system",
|
|
5
5
|
"style": "dist/css/main.css",
|
|
6
6
|
"exports": {
|
package/snippets/badges.html
CHANGED
|
@@ -73,18 +73,19 @@
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
<!-- FIXED WIDTH BADGES -->
|
|
76
|
+
<!-- Use wr-*/minwr-*/maxwr-* utilities with text-truncate for ellipsis -->
|
|
76
77
|
|
|
77
|
-
<!-- Fixed Width
|
|
78
|
-
<span class="pa-badge pa-badge--primary
|
|
78
|
+
<!-- Fixed Width 8rem -->
|
|
79
|
+
<span class="pa-badge pa-badge--primary minwr-8 maxwr-8 text-truncate">Status</span>
|
|
79
80
|
|
|
80
|
-
<!-- Fixed Width
|
|
81
|
+
<!-- Fixed Width 15rem with Ellipsis -->
|
|
81
82
|
<span class="pa-tooltip pa-tooltip--bottom" data-tooltip="Very Long Badge Text That Needs Truncation">
|
|
82
|
-
<span class="pa-badge pa-badge--info
|
|
83
|
+
<span class="pa-badge pa-badge--info minwr-15 maxwr-15 text-truncate">Very Long Badge Text That Needs Truncation</span>
|
|
83
84
|
</span>
|
|
84
85
|
|
|
85
86
|
<!-- Fixed Width with Left Ellipsis (for paths, breadcrumbs) -->
|
|
86
87
|
<span class="pa-tooltip pa-tooltip--bottom pa-tooltip--multiline" data-tooltip="Settings > User Preferences > Notifications > Email">
|
|
87
|
-
<span class="pa-badge pa-badge--secondary
|
|
88
|
+
<span class="pa-badge pa-badge--secondary minwr-10 maxwr-10 text-truncate pa-badge--ellipsis-left">Settings > User Preferences > Notifications > Email</span>
|
|
88
89
|
</span>
|
|
89
90
|
|
|
90
91
|
|
|
@@ -185,8 +186,8 @@ SIZES:
|
|
|
185
186
|
|
|
186
187
|
MODIFIERS:
|
|
187
188
|
- .pa-badge--pill: Rounded pill shape
|
|
188
|
-
- .pa-badge--w-1x through .pa-badge--w-10x: Fixed widths (1rem to 10rem)
|
|
189
189
|
- .pa-badge--ellipsis-left: Truncate from left instead of right
|
|
190
|
+
- Use utilities for fixed width: minwr-* maxwr-* text-truncate
|
|
190
191
|
|
|
191
192
|
ELEMENTS:
|
|
192
193
|
- .pa-badge__icon: Icon container inside badge
|
package/snippets/buttons.html
CHANGED
|
@@ -108,23 +108,24 @@
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
<!-- BUTTON GROUP GAP VARIANTS -->
|
|
111
|
+
<!-- Use gap-* utility classes to adjust spacing -->
|
|
111
112
|
|
|
112
|
-
<!-- Compact Gap (
|
|
113
|
-
<div class="pa-btn-group
|
|
113
|
+
<!-- Compact Gap (2px) -->
|
|
114
|
+
<div class="pa-btn-group gap-2">
|
|
114
115
|
<button class="pa-btn pa-btn--primary">A</button>
|
|
115
116
|
<button class="pa-btn pa-btn--primary">B</button>
|
|
116
117
|
<button class="pa-btn pa-btn--primary">C</button>
|
|
117
118
|
</div>
|
|
118
119
|
|
|
119
|
-
<!-- Default Gap -->
|
|
120
|
+
<!-- Default Gap (3px) -->
|
|
120
121
|
<div class="pa-btn-group">
|
|
121
122
|
<button class="pa-btn pa-btn--primary">A</button>
|
|
122
123
|
<button class="pa-btn pa-btn--primary">B</button>
|
|
123
124
|
<button class="pa-btn pa-btn--primary">C</button>
|
|
124
125
|
</div>
|
|
125
126
|
|
|
126
|
-
<!-- Loose Gap (
|
|
127
|
-
<div class="pa-btn-group
|
|
127
|
+
<!-- Loose Gap (8px) -->
|
|
128
|
+
<div class="pa-btn-group gap-8">
|
|
128
129
|
<button class="pa-btn pa-btn--primary">A</button>
|
|
129
130
|
<button class="pa-btn pa-btn--primary">B</button>
|
|
130
131
|
<button class="pa-btn pa-btn--primary">C</button>
|
|
@@ -233,15 +234,16 @@
|
|
|
233
234
|
|
|
234
235
|
|
|
235
236
|
<!-- FIXED WIDTH BUTTONS -->
|
|
237
|
+
<!-- Use minwr-* utilities for min-width in rem -->
|
|
236
238
|
|
|
237
|
-
<!-- Fixed Width
|
|
238
|
-
<button class="pa-btn pa-btn--primary
|
|
239
|
+
<!-- Fixed Width 6rem -->
|
|
240
|
+
<button class="pa-btn pa-btn--primary minwr-6">
|
|
239
241
|
<span class="pa-btn__icon">✓</span>
|
|
240
242
|
OK
|
|
241
243
|
</button>
|
|
242
244
|
|
|
243
|
-
<!-- Fixed Width
|
|
244
|
-
<button class="pa-btn pa-btn--success
|
|
245
|
+
<!-- Fixed Width 8rem -->
|
|
246
|
+
<button class="pa-btn pa-btn--success minwr-8">
|
|
245
247
|
<span class="pa-btn__icon">→</span>
|
|
246
248
|
Continue
|
|
247
249
|
</button>
|
|
@@ -250,25 +252,25 @@
|
|
|
250
252
|
<!-- BUTTON ALIGNMENT -->
|
|
251
253
|
|
|
252
254
|
<!-- Left Aligned (icon flush to left) -->
|
|
253
|
-
<button class="pa-btn pa-btn--primary
|
|
255
|
+
<button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-left">
|
|
254
256
|
<span class="pa-btn__icon">✓</span>
|
|
255
257
|
Save
|
|
256
258
|
</button>
|
|
257
259
|
|
|
258
260
|
<!-- Right Aligned (icon flush to right) -->
|
|
259
|
-
<button class="pa-btn pa-btn--primary
|
|
261
|
+
<button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-right">
|
|
260
262
|
Save
|
|
261
263
|
<span class="pa-btn__icon">✓</span>
|
|
262
264
|
</button>
|
|
263
265
|
|
|
264
266
|
<!-- Center Aligned -->
|
|
265
|
-
<button class="pa-btn pa-btn--primary
|
|
267
|
+
<button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-center">
|
|
266
268
|
<span class="pa-btn__icon">✓</span>
|
|
267
269
|
Save
|
|
268
270
|
</button>
|
|
269
271
|
|
|
270
272
|
<!-- Justified (space-between) -->
|
|
271
|
-
<button class="pa-btn pa-btn--primary
|
|
273
|
+
<button class="pa-btn pa-btn--primary minwr-8 pa-btn--align-justify">
|
|
272
274
|
<span class="pa-btn__icon">✓</span>
|
|
273
275
|
Save
|
|
274
276
|
</button>
|
package/snippets/profile.html
CHANGED
|
@@ -82,6 +82,70 @@
|
|
|
82
82
|
</div>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
+
<!-- ================================
|
|
86
|
+
PROFILE PANEL - WITH FIXED FOOTER
|
|
87
|
+
Actions fixed at bottom, content scrolls above
|
|
88
|
+
================================ -->
|
|
89
|
+
|
|
90
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
91
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
92
|
+
<div class="pa-profile-panel__content">
|
|
93
|
+
<div class="pa-profile-panel__header">
|
|
94
|
+
<div class="pa-profile-panel__avatar">
|
|
95
|
+
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="pa-profile-panel__info">
|
|
98
|
+
<h3 class="pa-profile-panel__name" title="John Doe">John Doe</h3>
|
|
99
|
+
<p class="pa-profile-panel__email" title="john.doe@company.com">john.doe@company.com</p>
|
|
100
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
101
|
+
</div>
|
|
102
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
103
|
+
✕
|
|
104
|
+
</button>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
<div class="pa-profile-panel__body">
|
|
108
|
+
<!-- Body content scrolls -->
|
|
109
|
+
<nav class="pa-profile-panel__nav">
|
|
110
|
+
<ul>
|
|
111
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
112
|
+
<span class="pa-profile-panel__nav-icon">👤</span>
|
|
113
|
+
Profile Settings
|
|
114
|
+
</a></li>
|
|
115
|
+
<li><a href="#security" class="pa-profile-panel__nav-item">
|
|
116
|
+
<span class="pa-profile-panel__nav-icon">🔒</span>
|
|
117
|
+
Security
|
|
118
|
+
</a></li>
|
|
119
|
+
<li><a href="#notifications" class="pa-profile-panel__nav-item">
|
|
120
|
+
<span class="pa-profile-panel__nav-icon">🔔</span>
|
|
121
|
+
Notifications
|
|
122
|
+
</a></li>
|
|
123
|
+
<li><a href="#preferences" class="pa-profile-panel__nav-item">
|
|
124
|
+
<span class="pa-profile-panel__nav-icon">⚙️</span>
|
|
125
|
+
Preferences
|
|
126
|
+
</a></li>
|
|
127
|
+
<li><a href="#help" class="pa-profile-panel__nav-item">
|
|
128
|
+
<span class="pa-profile-panel__nav-icon">❓</span>
|
|
129
|
+
Help & Support
|
|
130
|
+
</a></li>
|
|
131
|
+
</ul>
|
|
132
|
+
</nav>
|
|
133
|
+
<!-- NO __actions here - they go in __footer -->
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
<!-- Fixed footer - always visible at bottom -->
|
|
137
|
+
<div class="pa-profile-panel__footer">
|
|
138
|
+
<button class="pa-btn pa-btn--secondary pa-btn--block">
|
|
139
|
+
Switch Account
|
|
140
|
+
</button>
|
|
141
|
+
<button class="pa-btn pa-btn--danger pa-btn--block">
|
|
142
|
+
Sign Out
|
|
143
|
+
</button>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
|
|
85
149
|
<!-- ================================
|
|
86
150
|
PROFILE PANEL - NO AVATAR (CORPORATE)
|
|
87
151
|
For apps without user photos
|
|
@@ -442,11 +506,12 @@ PANEL TABS (optional):
|
|
|
442
506
|
- [data-profile-panel] - Tab panel attribute
|
|
443
507
|
|
|
444
508
|
PANEL BODY:
|
|
445
|
-
- .pa-profile-panel__body - Body container
|
|
509
|
+
- .pa-profile-panel__body - Body container (scrollable)
|
|
446
510
|
- .pa-profile-panel__nav - Navigation menu
|
|
447
511
|
- .pa-profile-panel__nav-item - Navigation link
|
|
448
512
|
- .pa-profile-panel__nav-icon - Navigation icon
|
|
449
|
-
- .pa-profile-panel__actions - Action buttons
|
|
513
|
+
- .pa-profile-panel__actions - Action buttons (inside body, scrolls with content)
|
|
514
|
+
- .pa-profile-panel__footer - Fixed footer (outside body, always visible at bottom)
|
|
450
515
|
|
|
451
516
|
FAVORITES SECTION:
|
|
452
517
|
- .pa-profile-panel__favorites - Favorites container
|
package/snippets/tabs.html
CHANGED
|
@@ -149,6 +149,39 @@
|
|
|
149
149
|
</div>
|
|
150
150
|
|
|
151
151
|
|
|
152
|
+
<!-- BORDER TOP TABS -->
|
|
153
|
+
|
|
154
|
+
<!-- Border Top Tabs - active indicator on top instead of bottom -->
|
|
155
|
+
<div class="pa-tabs pa-tabs--border-top">
|
|
156
|
+
<button class="pa-tabs__item pa-tabs__item--active">Profile</button>
|
|
157
|
+
<button class="pa-tabs__item">Favorites</button>
|
|
158
|
+
<button class="pa-tabs__item">Settings</button>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="pa-tabs__content">
|
|
161
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="border-top-1">
|
|
162
|
+
Profile content
|
|
163
|
+
</div>
|
|
164
|
+
<div class="pa-tabs__panel" id="border-top-2">
|
|
165
|
+
Favorites content
|
|
166
|
+
</div>
|
|
167
|
+
<div class="pa-tabs__panel" id="border-top-3">
|
|
168
|
+
Settings content
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<!-- Border Top + Full Width (profile panel style) -->
|
|
173
|
+
<div class="pa-tabs pa-tabs--border-top pa-tabs--full">
|
|
174
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
175
|
+
<i class="fa-solid fa-user"></i>
|
|
176
|
+
<span>Profile</span>
|
|
177
|
+
</button>
|
|
178
|
+
<button class="pa-tabs__item">
|
|
179
|
+
<i class="fa-solid fa-star"></i>
|
|
180
|
+
<span>Favorites</span>
|
|
181
|
+
</button>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
|
|
152
185
|
<!-- VERTICAL TABS -->
|
|
153
186
|
|
|
154
187
|
<!-- Vertical Tabs with Icons (use vertical layout wrapper) -->
|
|
@@ -539,13 +572,13 @@
|
|
|
539
572
|
<!-- Vertical Icon-Only Tabs (use vertical layout wrapper, centered for icon-only, square 3x3) -->
|
|
540
573
|
<div class="pa-tabs__vertical-layout">
|
|
541
574
|
<div class="pa-tabs pa-tabs--vertical pa-tabs--centered">
|
|
542
|
-
<button class="pa-tabs__item
|
|
575
|
+
<button class="pa-tabs__item minwr-3 minhr-3 pa-tabs__item--active pa-tooltip" data-tooltip="Home">
|
|
543
576
|
<i class="fa-solid fa-house"></i>
|
|
544
577
|
</button>
|
|
545
|
-
<button class="pa-tabs__item
|
|
578
|
+
<button class="pa-tabs__item minwr-3 minhr-3 pa-tooltip" data-tooltip="Profile">
|
|
546
579
|
<i class="fa-solid fa-user"></i>
|
|
547
580
|
</button>
|
|
548
|
-
<button class="pa-tabs__item
|
|
581
|
+
<button class="pa-tabs__item minwr-3 minhr-3 pa-tooltip" data-tooltip="Messages">
|
|
549
582
|
<i class="fa-solid fa-envelope"></i>
|
|
550
583
|
</button>
|
|
551
584
|
</div>
|
|
@@ -564,12 +597,13 @@
|
|
|
564
597
|
|
|
565
598
|
|
|
566
599
|
<!-- FIXED WIDTH TABS -->
|
|
600
|
+
<!-- Use minwr-* utilities for min-width in rem -->
|
|
567
601
|
|
|
568
602
|
<!-- Fixed Width Tab Items (6rem each) -->
|
|
569
603
|
<div class="pa-tabs">
|
|
570
|
-
<button class="pa-tabs__item
|
|
571
|
-
<button class="pa-tabs__item
|
|
572
|
-
<button class="pa-tabs__item
|
|
604
|
+
<button class="pa-tabs__item minwr-6 pa-tabs__item--active">View</button>
|
|
605
|
+
<button class="pa-tabs__item minwr-6">Edit</button>
|
|
606
|
+
<button class="pa-tabs__item minwr-6">Delete</button>
|
|
573
607
|
</div>
|
|
574
608
|
<div class="pa-tabs__content">
|
|
575
609
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="fixed-1">
|
|
@@ -585,15 +619,15 @@
|
|
|
585
619
|
|
|
586
620
|
<!-- Fixed Width with Icons (8rem each) -->
|
|
587
621
|
<div class="pa-tabs">
|
|
588
|
-
<button class="pa-tabs__item
|
|
622
|
+
<button class="pa-tabs__item minwr-8 pa-tabs__item--active">
|
|
589
623
|
<i class="fa-solid fa-chart-line"></i>
|
|
590
624
|
<span>Dashboard</span>
|
|
591
625
|
</button>
|
|
592
|
-
<button class="pa-tabs__item
|
|
626
|
+
<button class="pa-tabs__item minwr-8">
|
|
593
627
|
<i class="fa-solid fa-chart-bar"></i>
|
|
594
628
|
<span>Analytics</span>
|
|
595
629
|
</button>
|
|
596
|
-
<button class="pa-tabs__item
|
|
630
|
+
<button class="pa-tabs__item minwr-8">
|
|
597
631
|
<i class="fa-solid fa-file-lines"></i>
|
|
598
632
|
<span>Reports</span>
|
|
599
633
|
</button>
|
|
@@ -893,16 +927,12 @@ SIZES:
|
|
|
893
927
|
- (no class) (default size)
|
|
894
928
|
- pa-tabs--lg (large tabs with generous padding)
|
|
895
929
|
|
|
896
|
-
FIXED WIDTH (
|
|
897
|
-
-
|
|
898
|
-
-
|
|
930
|
+
FIXED WIDTH/HEIGHT (use utility classes):
|
|
931
|
+
- minwr-1 through minwr-25 (min-width in rem)
|
|
932
|
+
- minhr-1 through minhr-25 (min-height in rem)
|
|
933
|
+
- Examples: minwr-6 (6rem), minwr-8 (8rem), minhr-3 (3rem)
|
|
899
934
|
- Use for consistent tab sizing across navigation
|
|
900
935
|
|
|
901
|
-
FIXED HEIGHT (for individual tab items):
|
|
902
|
-
- pa-tabs__item--h-1x through pa-tabs__item--h-10x (1rem to 10rem min-height)
|
|
903
|
-
- Examples: pa-tabs__item--h-3x (3rem), pa-tabs__item--h-4x (4rem)
|
|
904
|
-
- Useful for vertical tabs with consistent heights
|
|
905
|
-
|
|
906
936
|
LAYOUT WRAPPERS:
|
|
907
937
|
- pa-tabs__container (wrapper for horizontal tabs + content)
|
|
908
938
|
- pa-tabs__container--bordered (card-like border around entire tabs system)
|
package/snippets/tooltips.html
CHANGED
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
|
|
155
155
|
<!-- Badge with Truncated Text and Tooltip -->
|
|
156
156
|
<span class="pa-tooltip pa-tooltip--bottom" data-tooltip="Very Long Badge Text That Needs Truncation">
|
|
157
|
-
<span class="pa-badge pa-badge--info
|
|
157
|
+
<span class="pa-badge pa-badge--info minwr-8 maxwr-8 text-truncate">Very Long Badge Text That Needs Truncation</span>
|
|
158
158
|
</span>
|
|
159
159
|
|
|
160
160
|
|
|
@@ -48,25 +48,21 @@
|
|
|
48
48
|
&--xs {
|
|
49
49
|
padding: $btn-padding-xs-v $btn-padding-xs-h;
|
|
50
50
|
font-size: $font-size-xs;
|
|
51
|
-
min-height: 2.8rem; // Enforce consistent height
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
&--sm {
|
|
55
54
|
padding: $btn-padding-sm-v $btn-padding-sm-h;
|
|
56
55
|
font-size: $font-size-sm;
|
|
57
|
-
min-height: 3.2rem; // Enforce consistent height (~32px)
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
&--lg {
|
|
61
59
|
padding: $btn-padding-lg-v $btn-padding-lg-h;
|
|
62
60
|
font-size: $font-size-base;
|
|
63
|
-
min-height: 4rem; // Enforce consistent height
|
|
64
61
|
}
|
|
65
62
|
|
|
66
63
|
&--xl {
|
|
67
64
|
padding: $btn-padding-xl-v $btn-padding-xl-h;
|
|
68
65
|
font-size: $font-size-lg;
|
|
69
|
-
min-height: 4.4rem; // Enforce consistent height
|
|
70
66
|
}
|
|
71
67
|
|
|
72
68
|
// Button variants (colors)
|
|
@@ -324,47 +320,6 @@
|
|
|
324
320
|
}
|
|
325
321
|
}
|
|
326
322
|
|
|
327
|
-
// Fixed width buttons - multipliers of 1rem
|
|
328
|
-
&--w-1x {
|
|
329
|
-
min-width: $spinner-size;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
&--w-2x {
|
|
333
|
-
min-width: $btn-width-2x;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
&--w-3x {
|
|
337
|
-
min-width: $btn-width-3x;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
&--w-4x {
|
|
341
|
-
min-width: $btn-width-4x;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
&--w-5x {
|
|
345
|
-
min-width: $btn-width-5x;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
&--w-6x {
|
|
349
|
-
min-width: $btn-width-6x;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
&--w-7x {
|
|
353
|
-
min-width: $btn-width-7x;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
&--w-8x {
|
|
357
|
-
min-width: $btn-width-8x;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
&--w-9x {
|
|
361
|
-
min-width: $btn-width-9x;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
&--w-10x {
|
|
365
|
-
min-width: $btn-width-10x;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
323
|
// Content alignment modifiers (position content within button)
|
|
369
324
|
// Button always keeps its horizontal padding (0.75rem on both sides)
|
|
370
325
|
// These classes control content position and remove icon padding on aligned sides
|
|
@@ -410,15 +365,6 @@
|
|
|
410
365
|
flex-wrap: wrap;
|
|
411
366
|
align-items: center;
|
|
412
367
|
|
|
413
|
-
// === Gap Size Variants ===
|
|
414
|
-
&--compact {
|
|
415
|
-
gap: $btn-group-gap-compact;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
&--loose {
|
|
419
|
-
gap: $btn-group-gap-loose;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
368
|
// === Direction Variants ===
|
|
423
369
|
&--vertical {
|
|
424
370
|
flex-direction: column;
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
&__header {
|
|
89
89
|
padding: $spacing-lg;
|
|
90
90
|
background-color: var(--pa-header-bg);
|
|
91
|
-
border-bottom: 1px solid var(--pa-
|
|
91
|
+
border-bottom: 1px solid var(--pa-border-color);
|
|
92
92
|
display: flex;
|
|
93
93
|
align-items: flex-start;
|
|
94
94
|
gap: $spacing-base;
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
|
|
116
116
|
&__avatar-icon {
|
|
117
117
|
font-size: $font-size-4xl;
|
|
118
|
-
color:
|
|
118
|
+
color: var(--pa-accent);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
&__info {
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
|
|
187
187
|
&__body {
|
|
188
188
|
flex: 1;
|
|
189
|
-
padding: $spacing-lg;
|
|
189
|
+
padding: $spacing-lg 0; // Vertical only - items handle horizontal
|
|
190
190
|
display: flex;
|
|
191
191
|
flex-direction: column;
|
|
192
192
|
gap: $profile-section-gap;
|
|
@@ -231,7 +231,10 @@
|
|
|
231
231
|
&__nav-icon {
|
|
232
232
|
font-size: $font-size-base;
|
|
233
233
|
width: $sidebar-icon-size;
|
|
234
|
-
|
|
234
|
+
height: $sidebar-icon-size;
|
|
235
|
+
display: flex;
|
|
236
|
+
align-items: center;
|
|
237
|
+
justify-content: center;
|
|
235
238
|
}
|
|
236
239
|
|
|
237
240
|
&__actions {
|
|
@@ -239,11 +242,23 @@
|
|
|
239
242
|
flex-direction: column;
|
|
240
243
|
gap: $spacing-md;
|
|
241
244
|
margin-top: auto;
|
|
245
|
+
padding: 0 $profile-panel-content-padding;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Fixed footer - always visible at bottom, content scrolls above
|
|
249
|
+
&__footer {
|
|
250
|
+
flex-shrink: 0;
|
|
251
|
+
padding: $spacing-lg; // Matches header padding
|
|
252
|
+
border-top: $border-width-base solid var(--pa-border-color);
|
|
253
|
+
background-color: var(--pa-card-bg);
|
|
254
|
+
display: flex;
|
|
255
|
+
flex-direction: column;
|
|
256
|
+
gap: $spacing-md;
|
|
242
257
|
}
|
|
243
258
|
|
|
244
259
|
// Tabs section
|
|
245
260
|
&__tabs {
|
|
246
|
-
padding: 0 $
|
|
261
|
+
padding: 0 $profile-panel-content-padding;
|
|
247
262
|
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
248
263
|
background-color: var(--pa-header-bg);
|
|
249
264
|
|
|
@@ -258,7 +273,7 @@
|
|
|
258
273
|
|
|
259
274
|
&:hover {
|
|
260
275
|
color: var(--pa-header-text);
|
|
261
|
-
background-color:
|
|
276
|
+
background-color: var(--pa-accent-light);
|
|
262
277
|
}
|
|
263
278
|
|
|
264
279
|
&--active {
|
|
@@ -270,10 +285,6 @@
|
|
|
270
285
|
|
|
271
286
|
// Favorites section
|
|
272
287
|
&__favorites {
|
|
273
|
-
display: flex;
|
|
274
|
-
flex-direction: column;
|
|
275
|
-
gap: $spacing-sm;
|
|
276
|
-
|
|
277
288
|
ul {
|
|
278
289
|
list-style: none;
|
|
279
290
|
margin: 0;
|
|
@@ -312,7 +323,10 @@
|
|
|
312
323
|
&__favorite-icon {
|
|
313
324
|
font-size: $font-size-base;
|
|
314
325
|
width: $sidebar-icon-size;
|
|
315
|
-
|
|
326
|
+
height: $sidebar-icon-size;
|
|
327
|
+
display: flex;
|
|
328
|
+
align-items: center;
|
|
329
|
+
justify-content: center;
|
|
316
330
|
}
|
|
317
331
|
|
|
318
332
|
&__favorite-label {
|
|
@@ -325,7 +339,7 @@
|
|
|
325
339
|
margin-left: auto;
|
|
326
340
|
background: none;
|
|
327
341
|
border: none;
|
|
328
|
-
padding: $spacing-
|
|
342
|
+
padding: $spacing-xs;
|
|
329
343
|
color: var(--pa-text-secondary);
|
|
330
344
|
cursor: pointer;
|
|
331
345
|
border-radius: $border-radius;
|
|
@@ -348,7 +362,7 @@
|
|
|
348
362
|
|
|
349
363
|
&__favorites-add {
|
|
350
364
|
margin-top: auto;
|
|
351
|
-
padding
|
|
365
|
+
padding: $spacing-md $profile-panel-content-padding 0;
|
|
352
366
|
}
|
|
353
367
|
}
|
|
354
368
|
|
|
@@ -275,6 +275,22 @@
|
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
+
// Border top variant - active indicator on top instead of bottom
|
|
279
|
+
&--border-top {
|
|
280
|
+
border-bottom: none;
|
|
281
|
+
border-top: $border-width-base solid var(--pa-border-color);
|
|
282
|
+
|
|
283
|
+
.pa-tabs__item {
|
|
284
|
+
border-bottom: none;
|
|
285
|
+
border-top: $border-width-medium solid transparent;
|
|
286
|
+
|
|
287
|
+
&--active {
|
|
288
|
+
border-top-color: $accent-color;
|
|
289
|
+
border-bottom-color: transparent;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
278
294
|
// Size variants
|
|
279
295
|
&--sm {
|
|
280
296
|
.pa-tabs__item {
|
|
@@ -352,87 +368,4 @@
|
|
|
352
368
|
}
|
|
353
369
|
}
|
|
354
370
|
|
|
355
|
-
// Fixed width tab items - multipliers of 1rem
|
|
356
|
-
.pa-tabs__item {
|
|
357
|
-
&--w-1x {
|
|
358
|
-
min-width: 1rem;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
&--w-2x {
|
|
362
|
-
min-width: 2rem;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
&--w-3x {
|
|
366
|
-
min-width: 3rem;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
&--w-4x {
|
|
370
|
-
min-width: 4rem;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
&--w-5x {
|
|
374
|
-
min-width: 5rem;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
&--w-6x {
|
|
378
|
-
min-width: 6rem;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
&--w-7x {
|
|
382
|
-
min-width: 7rem;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
&--w-8x {
|
|
386
|
-
min-width: 8rem;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
&--w-9x {
|
|
390
|
-
min-width: 9rem;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
&--w-10x {
|
|
394
|
-
min-width: 10rem;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
// Fixed height tab items - multipliers of 1rem
|
|
398
|
-
&--h-1x {
|
|
399
|
-
min-height: 1rem;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
&--h-2x {
|
|
403
|
-
min-height: 2rem;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
&--h-3x {
|
|
407
|
-
min-height: 3rem;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
&--h-4x {
|
|
411
|
-
min-height: 4rem;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
&--h-5x {
|
|
415
|
-
min-height: 5rem;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
&--h-6x {
|
|
419
|
-
min-height: 6rem;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
&--h-7x {
|
|
423
|
-
min-height: 7rem;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
&--h-8x {
|
|
427
|
-
min-height: 8rem;
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
&--h-9x {
|
|
431
|
-
min-height: 9rem;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
&--h-10x {
|
|
435
|
-
min-height: 10rem;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
371
|
}
|
|
@@ -102,27 +102,6 @@
|
|
|
102
102
|
border-color: var(--pa-btn-dark-bg);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
// Fixed-width badges with ellipsis
|
|
106
|
-
&--w-1x { min-width: 1.6rem; max-width: 1.6rem; }
|
|
107
|
-
&--w-2x { min-width: 3.2rem; max-width: 3.2rem; }
|
|
108
|
-
&--w-3x { min-width: 4.8rem; max-width: 4.8rem; }
|
|
109
|
-
&--w-4x { min-width: 6.4rem; max-width: 6.4rem; }
|
|
110
|
-
&--w-5x { min-width: 8rem; max-width: 8rem; }
|
|
111
|
-
&--w-6x { min-width: 9.6rem; max-width: 9.6rem; }
|
|
112
|
-
&--w-7x { min-width: 11.2rem; max-width: 11.2rem; }
|
|
113
|
-
&--w-8x { min-width: 12.8rem; max-width: 12.8rem; }
|
|
114
|
-
&--w-9x { min-width: 14.4rem; max-width: 14.4rem; }
|
|
115
|
-
&--w-10x { min-width: 16rem; max-width: 16rem; }
|
|
116
|
-
|
|
117
|
-
// Apply ellipsis to fixed-width badges
|
|
118
|
-
&[class*="--w-"] {
|
|
119
|
-
display: inline-block;
|
|
120
|
-
overflow: hidden;
|
|
121
|
-
text-overflow: ellipsis;
|
|
122
|
-
white-space: nowrap;
|
|
123
|
-
vertical-align: middle;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
105
|
// Left-side ellipsis for paths/hierarchies where end is important
|
|
127
106
|
&--ellipsis-left {
|
|
128
107
|
direction: rtl;
|