@keenmate/pure-admin-core 1.0.0-rc02 → 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/README.md +14 -26
- package/dist/css/main.css +1143 -202
- package/package.json +1 -1
- package/snippets/badges.html +7 -6
- package/snippets/buttons.html +15 -13
- package/snippets/callouts.html +129 -0
- package/snippets/profile.html +115 -6
- package/snippets/tabs.html +47 -17
- package/snippets/tooltips.html +1 -1
- package/src/scss/_base-css-variables.scss +14 -0
- package/src/scss/_core.scss +3 -0
- package/src/scss/core-components/_buttons.scss +0 -54
- package/src/scss/core-components/_callouts.scss +139 -0
- package/src/scss/core-components/_profile.scss +39 -13
- package/src/scss/core-components/_tables.scss +0 -13
- package/src/scss/core-components/_tabs.scss +16 -83
- package/src/scss/core-components/_utilities.scss +53 -0
- package/src/scss/core-components/badges/_badge-base.scss +0 -21
- package/src/scss/utilities.scss +260 -84
- package/src/scss/variables/_colors.scss +15 -0
- package/src/scss/variables/_components.scss +19 -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>
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<!-- ========================================
|
|
2
|
+
Callout Components
|
|
3
|
+
Documentation-style callouts with left border accent
|
|
4
|
+
======================================== -->
|
|
5
|
+
|
|
6
|
+
<!-- BASIC CALLOUTS -->
|
|
7
|
+
|
|
8
|
+
<!-- Info Callout -->
|
|
9
|
+
<div class="pa-callout pa-callout--info">
|
|
10
|
+
<strong>Note:</strong> This is an informational callout for documentation tips and notes.
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- Success Callout -->
|
|
14
|
+
<div class="pa-callout pa-callout--success">
|
|
15
|
+
<strong>Success:</strong> Operation completed successfully. Your changes have been saved.
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<!-- Warning Callout -->
|
|
19
|
+
<div class="pa-callout pa-callout--warning">
|
|
20
|
+
<strong>Warning:</strong> This action cannot be undone. Please proceed with caution.
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<!-- Danger Callout -->
|
|
24
|
+
<div class="pa-callout pa-callout--danger">
|
|
25
|
+
<strong>Important:</strong> This feature is deprecated and will be removed in the next version.
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- Primary Callout -->
|
|
29
|
+
<div class="pa-callout pa-callout--primary">
|
|
30
|
+
<strong>Pro Tip:</strong> You can use keyboard shortcuts to speed up your workflow.
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<!-- Secondary Callout -->
|
|
34
|
+
<div class="pa-callout pa-callout--secondary">
|
|
35
|
+
<strong>Note:</strong> This is a secondary callout with neutral styling.
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<!-- ========================================
|
|
39
|
+
CALLOUTS WITH ICONS
|
|
40
|
+
======================================== -->
|
|
41
|
+
|
|
42
|
+
<!-- Info with Icon -->
|
|
43
|
+
<div class="pa-callout pa-callout--info">
|
|
44
|
+
<span class="pa-callout__icon">💡</span>
|
|
45
|
+
<div class="pa-callout__content">
|
|
46
|
+
<div class="pa-callout__heading">Did you know?</div>
|
|
47
|
+
<p>You can hover over any element to see its tooltip. Tooltips provide additional context without cluttering the interface.</p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<!-- Warning with Icon -->
|
|
52
|
+
<div class="pa-callout pa-callout--warning">
|
|
53
|
+
<span class="pa-callout__icon">⚠️</span>
|
|
54
|
+
<div class="pa-callout__content">
|
|
55
|
+
<div class="pa-callout__heading">Breaking Change</div>
|
|
56
|
+
<p>The <code>getData()</code> method now returns a Promise. Update your code to use <code>await</code> or <code>.then()</code>.</p>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<!-- Danger with Icon -->
|
|
61
|
+
<div class="pa-callout pa-callout--danger">
|
|
62
|
+
<span class="pa-callout__icon">🚨</span>
|
|
63
|
+
<div class="pa-callout__content">
|
|
64
|
+
<div class="pa-callout__heading">Security Notice</div>
|
|
65
|
+
<p>Never commit API keys or secrets to version control. Use environment variables instead.</p>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<!-- Success with Icon -->
|
|
70
|
+
<div class="pa-callout pa-callout--success">
|
|
71
|
+
<span class="pa-callout__icon">✅</span>
|
|
72
|
+
<div class="pa-callout__content">
|
|
73
|
+
<div class="pa-callout__heading">Best Practice</div>
|
|
74
|
+
<p>Always validate user input on both client and server side for maximum security.</p>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<!-- ========================================
|
|
79
|
+
CALLOUT SIZES
|
|
80
|
+
======================================== -->
|
|
81
|
+
|
|
82
|
+
<!-- Small Callout -->
|
|
83
|
+
<div class="pa-callout pa-callout--info pa-callout--sm">
|
|
84
|
+
<strong>Note:</strong> This is a small callout for compact spaces.
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<!-- Default Callout -->
|
|
88
|
+
<div class="pa-callout pa-callout--info">
|
|
89
|
+
<strong>Note:</strong> This is a default-sized callout.
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<!-- Large Callout -->
|
|
93
|
+
<div class="pa-callout pa-callout--info pa-callout--lg">
|
|
94
|
+
<strong>Note:</strong> This is a large callout for prominent notices.
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<!-- ========================================
|
|
98
|
+
CALLOUTS WITH LISTS
|
|
99
|
+
======================================== -->
|
|
100
|
+
|
|
101
|
+
<!-- Callout with Unordered List -->
|
|
102
|
+
<div class="pa-callout pa-callout--info">
|
|
103
|
+
<div class="pa-callout__heading">Requirements</div>
|
|
104
|
+
<ul>
|
|
105
|
+
<li>Node.js version 16 or higher</li>
|
|
106
|
+
<li>npm version 8 or higher</li>
|
|
107
|
+
<li>A modern web browser</li>
|
|
108
|
+
</ul>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<!-- Callout with Ordered List -->
|
|
112
|
+
<div class="pa-callout pa-callout--warning">
|
|
113
|
+
<div class="pa-callout__heading">Migration Steps</div>
|
|
114
|
+
<ol>
|
|
115
|
+
<li>Backup your database</li>
|
|
116
|
+
<li>Update dependencies with <code>npm update</code></li>
|
|
117
|
+
<li>Run migrations with <code>npm run migrate</code></li>
|
|
118
|
+
<li>Verify the application starts correctly</li>
|
|
119
|
+
</ol>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<!-- ========================================
|
|
123
|
+
CALLOUTS WITH CODE
|
|
124
|
+
======================================== -->
|
|
125
|
+
|
|
126
|
+
<!-- Callout with Inline Code -->
|
|
127
|
+
<div class="pa-callout pa-callout--primary">
|
|
128
|
+
<strong>Tip:</strong> Use <code>console.table()</code> instead of <code>console.log()</code> for arrays and objects to get a nicely formatted table output.
|
|
129
|
+
</div>
|
package/snippets/profile.html
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
================================ -->
|
|
26
26
|
|
|
27
27
|
<!-- Complete Profile Panel (place before closing </body> tag) -->
|
|
28
|
+
<!-- Note: Use title attributes on name/email for tooltips when text may be truncated -->
|
|
28
29
|
<div class="pa-profile-panel" id="profilePanel">
|
|
29
30
|
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
30
31
|
<div class="pa-profile-panel__content">
|
|
@@ -33,8 +34,8 @@
|
|
|
33
34
|
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
34
35
|
</div>
|
|
35
36
|
<div class="pa-profile-panel__info">
|
|
36
|
-
<h3 class="pa-profile-panel__name">John Doe</h3>
|
|
37
|
-
<p class="pa-profile-panel__email">john.doe@company.com</p>
|
|
37
|
+
<h3 class="pa-profile-panel__name" title="John Doe">John Doe</h3>
|
|
38
|
+
<p class="pa-profile-panel__email" title="john.doe@company.com">john.doe@company.com</p>
|
|
38
39
|
<span class="pa-profile-panel__role">Administrator</span>
|
|
39
40
|
</div>
|
|
40
41
|
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
@@ -81,6 +82,112 @@
|
|
|
81
82
|
</div>
|
|
82
83
|
|
|
83
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
|
+
|
|
149
|
+
<!-- ================================
|
|
150
|
+
PROFILE PANEL - NO AVATAR (CORPORATE)
|
|
151
|
+
For apps without user photos
|
|
152
|
+
================================ -->
|
|
153
|
+
|
|
154
|
+
<!-- Profile Panel without avatar (for corporate apps that don't have user photos) -->
|
|
155
|
+
<!-- Add --no-avatar modifier to header to hide the avatar -->
|
|
156
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
157
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
158
|
+
<div class="pa-profile-panel__content">
|
|
159
|
+
<div class="pa-profile-panel__header pa-profile-panel__header--no-avatar">
|
|
160
|
+
<div class="pa-profile-panel__avatar">
|
|
161
|
+
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="pa-profile-panel__info">
|
|
164
|
+
<h3 class="pa-profile-panel__name" title="John Doe">John Doe</h3>
|
|
165
|
+
<p class="pa-profile-panel__email" title="john.doe@company.com">john.doe@company.com</p>
|
|
166
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
167
|
+
</div>
|
|
168
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
169
|
+
✕
|
|
170
|
+
</button>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<div class="pa-profile-panel__body">
|
|
174
|
+
<nav class="pa-profile-panel__nav">
|
|
175
|
+
<ul>
|
|
176
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
177
|
+
<span class="pa-profile-panel__nav-icon">👤</span>
|
|
178
|
+
Profile Settings
|
|
179
|
+
</a></li>
|
|
180
|
+
<li><a href="#logout" class="pa-profile-panel__nav-item">
|
|
181
|
+
<span class="pa-profile-panel__nav-icon">🚪</span>
|
|
182
|
+
Sign Out
|
|
183
|
+
</a></li>
|
|
184
|
+
</ul>
|
|
185
|
+
</nav>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
|
|
190
|
+
|
|
84
191
|
<!-- ================================
|
|
85
192
|
PROFILE PANEL - WITH TABS (PROFILE + FAVORITES)
|
|
86
193
|
================================ -->
|
|
@@ -383,11 +490,12 @@ PROFILE PANEL STRUCTURE:
|
|
|
383
490
|
|
|
384
491
|
PANEL HEADER:
|
|
385
492
|
- .pa-profile-panel__header - Header container
|
|
493
|
+
- .pa-profile-panel__header--no-avatar - Modifier to hide avatar (for corporate apps)
|
|
386
494
|
- .pa-profile-panel__avatar - Avatar container
|
|
387
495
|
- .pa-profile-panel__avatar-icon - Avatar icon/image
|
|
388
496
|
- .pa-profile-panel__info - User info container
|
|
389
|
-
- .pa-profile-panel__name - User name
|
|
390
|
-
- .pa-profile-panel__email - User email
|
|
497
|
+
- .pa-profile-panel__name - User name (truncates with ellipsis, add title for tooltip)
|
|
498
|
+
- .pa-profile-panel__email - User email (truncates with ellipsis, add title for tooltip)
|
|
391
499
|
- .pa-profile-panel__role - User role badge
|
|
392
500
|
- .pa-profile-panel__close - Close button
|
|
393
501
|
|
|
@@ -398,11 +506,12 @@ PANEL TABS (optional):
|
|
|
398
506
|
- [data-profile-panel] - Tab panel attribute
|
|
399
507
|
|
|
400
508
|
PANEL BODY:
|
|
401
|
-
- .pa-profile-panel__body - Body container
|
|
509
|
+
- .pa-profile-panel__body - Body container (scrollable)
|
|
402
510
|
- .pa-profile-panel__nav - Navigation menu
|
|
403
511
|
- .pa-profile-panel__nav-item - Navigation link
|
|
404
512
|
- .pa-profile-panel__nav-icon - Navigation icon
|
|
405
|
-
- .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)
|
|
406
515
|
|
|
407
516
|
FAVORITES SECTION:
|
|
408
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
|
|
|
@@ -405,4 +405,18 @@
|
|
|
405
405
|
--pa-multiselect-option-hover-bg: #{$multiselect-option-hover-bg};
|
|
406
406
|
--pa-multiselect-pill-bg: #{$multiselect-pill-bg};
|
|
407
407
|
--pa-multiselect-pill-border: #{$multiselect-pill-border};
|
|
408
|
+
|
|
409
|
+
// =========================================================================
|
|
410
|
+
// CUSTOM THEME COLORS (1-9)
|
|
411
|
+
// Themes can override $color-1 through $color-9 to define branded colors
|
|
412
|
+
// =========================================================================
|
|
413
|
+
--pa-color-1: #{$color-1};
|
|
414
|
+
--pa-color-2: #{$color-2};
|
|
415
|
+
--pa-color-3: #{$color-3};
|
|
416
|
+
--pa-color-4: #{$color-4};
|
|
417
|
+
--pa-color-5: #{$color-5};
|
|
418
|
+
--pa-color-6: #{$color-6};
|
|
419
|
+
--pa-color-7: #{$color-7};
|
|
420
|
+
--pa-color-8: #{$color-8};
|
|
421
|
+
--pa-color-9: #{$color-9};
|
|
408
422
|
}
|
package/src/scss/_core.scss
CHANGED
|
@@ -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;
|