@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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* ========================================
|
|
2
|
+
Callout Components
|
|
3
|
+
Documentation-style callouts with left border accent
|
|
4
|
+
For tips, notes, warnings in content areas
|
|
5
|
+
======================================== */
|
|
6
|
+
@use '../variables' as *;
|
|
7
|
+
|
|
8
|
+
// Callout base
|
|
9
|
+
.pa-callout {
|
|
10
|
+
position: relative;
|
|
11
|
+
padding: $card-footer-padding-v $card-footer-padding-h;
|
|
12
|
+
margin-bottom: $spacing-base;
|
|
13
|
+
border-left: $callout-border-width solid var(--pa-border-color);
|
|
14
|
+
border-radius: $border-radius;
|
|
15
|
+
font-size: $font-size-sm;
|
|
16
|
+
background-color: var(--pa-card-bg);
|
|
17
|
+
|
|
18
|
+
// Remove margins when first/last child in card body
|
|
19
|
+
.pa-card__body &:first-child {
|
|
20
|
+
margin-top: 0;
|
|
21
|
+
}
|
|
22
|
+
.pa-card__body &:last-child {
|
|
23
|
+
margin-bottom: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Callout variants
|
|
27
|
+
&--primary {
|
|
28
|
+
border-left-color: var(--pa-accent);
|
|
29
|
+
background-color: rgba($accent-color, $opacity-subtle);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&--secondary {
|
|
33
|
+
border-left-color: var(--pa-text-secondary);
|
|
34
|
+
background-color: color-mix(in srgb, var(--pa-text-secondary) 5%, transparent);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&--success {
|
|
38
|
+
border-left-color: var(--pa-success-bg);
|
|
39
|
+
background-color: var(--pa-success-bg-subtle);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&--danger {
|
|
43
|
+
border-left-color: var(--pa-danger-bg);
|
|
44
|
+
background-color: var(--pa-danger-bg-subtle);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&--warning {
|
|
48
|
+
border-left-color: var(--pa-warning-bg);
|
|
49
|
+
background-color: var(--pa-warning-bg-subtle);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&--info {
|
|
53
|
+
border-left-color: var(--pa-info-bg);
|
|
54
|
+
background-color: var(--pa-info-bg-subtle);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Callout sizes
|
|
58
|
+
&--sm {
|
|
59
|
+
padding: $spacing-sm $spacing-md;
|
|
60
|
+
font-size: $font-size-xs;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&--lg {
|
|
64
|
+
padding: $spacing-lg $spacing-xl;
|
|
65
|
+
font-size: $font-size-base;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Callout components
|
|
69
|
+
&__icon {
|
|
70
|
+
float: left;
|
|
71
|
+
margin-right: $spacing-sm;
|
|
72
|
+
font-size: $font-size-lg;
|
|
73
|
+
line-height: 1;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&__heading {
|
|
77
|
+
margin: 0 0 $spacing-sm 0;
|
|
78
|
+
font-size: $font-size-base;
|
|
79
|
+
font-weight: $font-weight-semibold;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&__content {
|
|
83
|
+
// Clearfix for floated icon
|
|
84
|
+
&::after {
|
|
85
|
+
content: '';
|
|
86
|
+
display: table;
|
|
87
|
+
clear: both;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Remove margin from last child
|
|
92
|
+
> *:last-child {
|
|
93
|
+
margin-bottom: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Paragraphs inside callouts
|
|
97
|
+
p {
|
|
98
|
+
margin: 0 0 $spacing-sm 0;
|
|
99
|
+
|
|
100
|
+
&:last-child {
|
|
101
|
+
margin-bottom: 0;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Lists inside callouts
|
|
106
|
+
ul, ol {
|
|
107
|
+
margin: $spacing-sm 0;
|
|
108
|
+
padding-left: $spacing-lg;
|
|
109
|
+
|
|
110
|
+
&:last-child {
|
|
111
|
+
margin-bottom: 0;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Code inside callouts
|
|
116
|
+
code {
|
|
117
|
+
background-color: rgba(0, 0, 0, $opacity-subtle);
|
|
118
|
+
padding: 0.1em 0.3em;
|
|
119
|
+
border-radius: $border-radius-sm;
|
|
120
|
+
font-size: 0.9em;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Links styling
|
|
124
|
+
a {
|
|
125
|
+
color: inherit;
|
|
126
|
+
text-decoration: underline;
|
|
127
|
+
font-weight: $font-weight-medium;
|
|
128
|
+
|
|
129
|
+
&:hover {
|
|
130
|
+
text-decoration: none;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Headings inside callouts
|
|
135
|
+
h1, h2, h3, h4, h5, h6 {
|
|
136
|
+
color: inherit;
|
|
137
|
+
margin-top: 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -88,11 +88,18 @@
|
|
|
88
88
|
&__header {
|
|
89
89
|
padding: $spacing-lg;
|
|
90
90
|
background-color: var(--pa-header-bg);
|
|
91
|
-
border-bottom:
|
|
91
|
+
border-bottom: 1px solid var(--pa-border-color);
|
|
92
92
|
display: flex;
|
|
93
93
|
align-items: flex-start;
|
|
94
94
|
gap: $spacing-base;
|
|
95
95
|
position: relative;
|
|
96
|
+
|
|
97
|
+
// No-avatar variant for corporate apps without user photos
|
|
98
|
+
&--no-avatar {
|
|
99
|
+
.pa-profile-panel__avatar {
|
|
100
|
+
display: none;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
96
103
|
}
|
|
97
104
|
|
|
98
105
|
&__avatar {
|
|
@@ -108,12 +115,13 @@
|
|
|
108
115
|
|
|
109
116
|
&__avatar-icon {
|
|
110
117
|
font-size: $font-size-4xl;
|
|
111
|
-
color:
|
|
118
|
+
color: var(--pa-accent);
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
&__info {
|
|
115
122
|
flex: 1;
|
|
116
123
|
min-width: 0;
|
|
124
|
+
padding-right: $profile-close-size; // Space for close button
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
&__name {
|
|
@@ -121,6 +129,10 @@
|
|
|
121
129
|
font-size: $font-size-lg;
|
|
122
130
|
font-weight: $font-weight-semibold;
|
|
123
131
|
color: var(--pa-text-primary);
|
|
132
|
+
// Truncate long names
|
|
133
|
+
overflow: hidden;
|
|
134
|
+
text-overflow: ellipsis;
|
|
135
|
+
white-space: nowrap;
|
|
124
136
|
}
|
|
125
137
|
|
|
126
138
|
&__email {
|
|
@@ -174,7 +186,7 @@
|
|
|
174
186
|
|
|
175
187
|
&__body {
|
|
176
188
|
flex: 1;
|
|
177
|
-
padding: $spacing-lg;
|
|
189
|
+
padding: $spacing-lg 0; // Vertical only - items handle horizontal
|
|
178
190
|
display: flex;
|
|
179
191
|
flex-direction: column;
|
|
180
192
|
gap: $profile-section-gap;
|
|
@@ -219,7 +231,10 @@
|
|
|
219
231
|
&__nav-icon {
|
|
220
232
|
font-size: $font-size-base;
|
|
221
233
|
width: $sidebar-icon-size;
|
|
222
|
-
|
|
234
|
+
height: $sidebar-icon-size;
|
|
235
|
+
display: flex;
|
|
236
|
+
align-items: center;
|
|
237
|
+
justify-content: center;
|
|
223
238
|
}
|
|
224
239
|
|
|
225
240
|
&__actions {
|
|
@@ -227,11 +242,23 @@
|
|
|
227
242
|
flex-direction: column;
|
|
228
243
|
gap: $spacing-md;
|
|
229
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;
|
|
230
257
|
}
|
|
231
258
|
|
|
232
259
|
// Tabs section
|
|
233
260
|
&__tabs {
|
|
234
|
-
padding: 0 $
|
|
261
|
+
padding: 0 $profile-panel-content-padding;
|
|
235
262
|
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
236
263
|
background-color: var(--pa-header-bg);
|
|
237
264
|
|
|
@@ -246,7 +273,7 @@
|
|
|
246
273
|
|
|
247
274
|
&:hover {
|
|
248
275
|
color: var(--pa-header-text);
|
|
249
|
-
background-color:
|
|
276
|
+
background-color: var(--pa-accent-light);
|
|
250
277
|
}
|
|
251
278
|
|
|
252
279
|
&--active {
|
|
@@ -258,10 +285,6 @@
|
|
|
258
285
|
|
|
259
286
|
// Favorites section
|
|
260
287
|
&__favorites {
|
|
261
|
-
display: flex;
|
|
262
|
-
flex-direction: column;
|
|
263
|
-
gap: $spacing-sm;
|
|
264
|
-
|
|
265
288
|
ul {
|
|
266
289
|
list-style: none;
|
|
267
290
|
margin: 0;
|
|
@@ -300,7 +323,10 @@
|
|
|
300
323
|
&__favorite-icon {
|
|
301
324
|
font-size: $font-size-base;
|
|
302
325
|
width: $sidebar-icon-size;
|
|
303
|
-
|
|
326
|
+
height: $sidebar-icon-size;
|
|
327
|
+
display: flex;
|
|
328
|
+
align-items: center;
|
|
329
|
+
justify-content: center;
|
|
304
330
|
}
|
|
305
331
|
|
|
306
332
|
&__favorite-label {
|
|
@@ -313,7 +339,7 @@
|
|
|
313
339
|
margin-left: auto;
|
|
314
340
|
background: none;
|
|
315
341
|
border: none;
|
|
316
|
-
padding: $spacing-
|
|
342
|
+
padding: $spacing-xs;
|
|
317
343
|
color: var(--pa-text-secondary);
|
|
318
344
|
cursor: pointer;
|
|
319
345
|
border-radius: $border-radius;
|
|
@@ -336,7 +362,7 @@
|
|
|
336
362
|
|
|
337
363
|
&__favorites-add {
|
|
338
364
|
margin-top: auto;
|
|
339
|
-
padding
|
|
365
|
+
padding: $spacing-md $profile-panel-content-padding 0;
|
|
340
366
|
}
|
|
341
367
|
}
|
|
342
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
|
}
|
|
@@ -195,6 +195,59 @@ html.font-size-4xl {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
// Gap utilities (10px rem base)
|
|
199
|
+
// Semantic gap classes using spacing variables
|
|
200
|
+
.gap-0 { gap: 0; }
|
|
201
|
+
.gap-xs { gap: $spacing-xs; } // 0.25rem = 2.5px
|
|
202
|
+
.gap-sm { gap: $spacing-sm; } // 0.5rem = 5px
|
|
203
|
+
.gap-md { gap: $spacing-md; } // 0.75rem = 7.5px
|
|
204
|
+
.gap-base { gap: $spacing-base; } // 1rem = 10px
|
|
205
|
+
.gap-lg { gap: $spacing-lg; } // 1.5rem = 15px
|
|
206
|
+
.gap-xl { gap: $spacing-xl; } // 2rem = 20px
|
|
207
|
+
.gap-2xl { gap: $spacing-2xl; } // 3rem = 30px
|
|
208
|
+
|
|
209
|
+
// Numeric gap classes (in 10px rem units)
|
|
210
|
+
.gap-1 { gap: 0.1rem; } // 1px
|
|
211
|
+
.gap-2 { gap: 0.2rem; } // 2px
|
|
212
|
+
.gap-3 { gap: 0.3rem; } // 3px
|
|
213
|
+
.gap-4 { gap: 0.4rem; } // 4px
|
|
214
|
+
.gap-5 { gap: 0.5rem; } // 5px
|
|
215
|
+
.gap-6 { gap: 0.6rem; } // 6px
|
|
216
|
+
.gap-8 { gap: 0.8rem; } // 8px
|
|
217
|
+
.gap-10 { gap: 1rem; } // 10px
|
|
218
|
+
.gap-12 { gap: 1.2rem; } // 12px
|
|
219
|
+
.gap-15 { gap: 1.5rem; } // 15px
|
|
220
|
+
.gap-20 { gap: 2rem; } // 20px
|
|
221
|
+
|
|
222
|
+
// Row gap utilities
|
|
223
|
+
.row-gap-0 { row-gap: 0; }
|
|
224
|
+
.row-gap-xs { row-gap: $spacing-xs; }
|
|
225
|
+
.row-gap-sm { row-gap: $spacing-sm; }
|
|
226
|
+
.row-gap-md { row-gap: $spacing-md; }
|
|
227
|
+
.row-gap-base { row-gap: $spacing-base; }
|
|
228
|
+
.row-gap-lg { row-gap: $spacing-lg; }
|
|
229
|
+
|
|
230
|
+
// Column gap utilities
|
|
231
|
+
.column-gap-0 { column-gap: 0; }
|
|
232
|
+
.column-gap-xs { column-gap: $spacing-xs; }
|
|
233
|
+
.column-gap-sm { column-gap: $spacing-sm; }
|
|
234
|
+
.column-gap-md { column-gap: $spacing-md; }
|
|
235
|
+
.column-gap-base { column-gap: $spacing-base; }
|
|
236
|
+
.column-gap-lg { column-gap: $spacing-lg; }
|
|
237
|
+
|
|
238
|
+
// Font-size utilities (10px rem base)
|
|
239
|
+
// Direct font-size classes using typography variables
|
|
240
|
+
.text-2xs { font-size: $font-size-2xs; } // 1rem = 10px
|
|
241
|
+
.text-xs { font-size: $font-size-xs; } // 1.2rem = 12px
|
|
242
|
+
.text-sm { font-size: $font-size-sm; } // 1.4rem = 14px
|
|
243
|
+
.text-md { font-size: $font-size-md; } // 1.5rem = 15px
|
|
244
|
+
.text-base { font-size: $font-size-base; } // 1.6rem = 16px
|
|
245
|
+
.text-lg { font-size: $font-size-lg; } // 1.8rem = 18px
|
|
246
|
+
.text-xl { font-size: $font-size-xl; } // 2rem = 20px
|
|
247
|
+
.text-2xl { font-size: $font-size-2xl; } // 2.4rem = 24px
|
|
248
|
+
.text-3xl { font-size: $font-size-3xl; } // 2.8rem = 28px
|
|
249
|
+
.text-4xl { font-size: $font-size-4xl; } // 3.2rem = 32px
|
|
250
|
+
|
|
198
251
|
// Component showcase styling
|
|
199
252
|
.component-showcase {
|
|
200
253
|
display: flex;
|
|
@@ -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;
|