@keenmate/pure-admin-core 1.0.0-rc04 → 1.0.0-rc06
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 +148 -0
- package/dist/css/main.css +558 -28
- package/package.json +1 -1
- package/snippets/layout.html +79 -38
- package/snippets/modals.html +43 -4
- package/snippets/tables.html +8 -6
- package/snippets/tooltips.html +68 -0
- package/src/scss/core-components/_buttons.scss +6 -0
- package/src/scss/core-components/_cards.scss +40 -4
- package/src/scss/core-components/_tables.scss +37 -13
- package/src/scss/core-components/_tabs.scss +122 -0
- package/src/scss/core-components/_tooltips.scss +40 -0
- package/src/scss/core-components/_utilities.scss +15 -0
- package/src/scss/core-components/forms/_form-inputs.scss +7 -1
- package/src/scss/core-components/layout/_layout-container.scss +32 -2
- package/src/scss/core-components/layout/_navbar-elements.scss +3 -2
- package/src/scss/core-components/layout/_navbar.scss +23 -0
- package/src/scss/themes/audi-light.scss +31 -1
- package/src/scss/themes/audi.scss +18 -3
- package/src/scss/themes/corporate.scss +26 -0
- package/src/scss/themes/dark-blue.scss +13 -0
- package/src/scss/themes/dark-green.scss +13 -0
- package/src/scss/themes/dark-red.scss +13 -0
- package/src/scss/themes/dark.scss +13 -0
- package/src/scss/themes/express.scss +13 -0
- package/src/scss/themes/minimal.scss +13 -0
- package/src/scss/variables/_components.scss +51 -12
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-rc06",
|
|
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/layout.html
CHANGED
|
@@ -42,10 +42,24 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
44
|
<!-- Footer (outside inner, inside layout) -->
|
|
45
|
+
<!-- Three-section layout: Left / Center / Right -->
|
|
45
46
|
<footer class="pa-layout__footer">
|
|
46
|
-
|
|
47
|
+
<!-- Left Section (stays anchored left) -->
|
|
48
|
+
<div class="pa-footer__left">
|
|
47
49
|
<p>© 2024 Pure Admin Framework</p>
|
|
48
50
|
</div>
|
|
51
|
+
|
|
52
|
+
<!-- Center Section (flexible, fills space) -->
|
|
53
|
+
<div class="pa-footer__center">
|
|
54
|
+
<!-- Optional center content -->
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<!-- Right Section (stays anchored right) -->
|
|
58
|
+
<div class="pa-footer__right">
|
|
59
|
+
<span>App version: 1.2.1</span>
|
|
60
|
+
<span>Database version: 2.3.1</span>
|
|
61
|
+
<a href="#">Open Source Licenses</a>
|
|
62
|
+
</div>
|
|
49
63
|
</footer>
|
|
50
64
|
</div>
|
|
51
65
|
|
|
@@ -368,50 +382,67 @@
|
|
|
368
382
|
|
|
369
383
|
<!-- ================================
|
|
370
384
|
NAVBAR/HEADER (with burger menu and navigation)
|
|
385
|
+
Three-section layout: Left / Center / Right
|
|
371
386
|
================================ -->
|
|
372
387
|
|
|
373
388
|
<!-- Complete Navbar Example (hybrid: pa-navbar wrapper, pa-header__ elements) -->
|
|
374
389
|
<nav class="pa-navbar">
|
|
375
390
|
<div class="pa-navbar__inner">
|
|
376
|
-
<!--
|
|
377
|
-
<
|
|
378
|
-
|
|
379
|
-
<
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
391
|
+
<!-- Left Section: Burger, Brand, Left Nav (stays anchored left) -->
|
|
392
|
+
<div class="pa-header__left">
|
|
393
|
+
<!-- Hamburger Menu (burger) -->
|
|
394
|
+
<button class="pa-header__burger burger-menu" onclick="toggleSidebar()" aria-label="Toggle sidebar">
|
|
395
|
+
<span></span>
|
|
396
|
+
<span></span>
|
|
397
|
+
<span></span>
|
|
398
|
+
</button>
|
|
399
|
+
|
|
400
|
+
<!-- Brand -->
|
|
401
|
+
<div class="pa-header__brand">
|
|
402
|
+
<h1>Pure Admin</h1>
|
|
403
|
+
</div>
|
|
404
|
+
|
|
405
|
+
<!-- Left Navigation Links -->
|
|
406
|
+
<nav class="pa-header__nav pa-header__nav--left">
|
|
407
|
+
<ul>
|
|
408
|
+
<li><a href="/">Dashboard</a></li>
|
|
409
|
+
<li><a href="/components">Components</a></li>
|
|
410
|
+
<li><a href="/forms">Forms</a></li>
|
|
411
|
+
</ul>
|
|
412
|
+
</nav>
|
|
386
413
|
</div>
|
|
387
414
|
|
|
388
|
-
<!--
|
|
389
|
-
<
|
|
390
|
-
<
|
|
391
|
-
<
|
|
392
|
-
|
|
393
|
-
<li><a href="/forms">📝 Forms</a></li>
|
|
394
|
-
</ul>
|
|
395
|
-
</nav>
|
|
396
|
-
|
|
397
|
-
<!-- Page Title (flexible, with ellipsis) -->
|
|
398
|
-
<div class="pa-header__title">
|
|
399
|
-
<h2>Dashboard</h2>
|
|
415
|
+
<!-- Center Section: Page Title (flexible, fills space between left/right) -->
|
|
416
|
+
<div class="pa-header__center">
|
|
417
|
+
<div class="pa-header__title">
|
|
418
|
+
<h2>Dashboard</h2>
|
|
419
|
+
</div>
|
|
400
420
|
</div>
|
|
401
421
|
|
|
402
|
-
<!-- Right
|
|
403
|
-
<
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
<
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
<
|
|
414
|
-
|
|
422
|
+
<!-- Right Section: Right Nav, Notifications, Profile (stays anchored right) -->
|
|
423
|
+
<div class="pa-header__right">
|
|
424
|
+
<!-- Right Navigation Links -->
|
|
425
|
+
<nav class="pa-header__nav pa-header__nav--right">
|
|
426
|
+
<ul>
|
|
427
|
+
<li><a href="/alerts">Alerts</a></li>
|
|
428
|
+
<li><a href="/tables">Tables</a></li>
|
|
429
|
+
</ul>
|
|
430
|
+
</nav>
|
|
431
|
+
|
|
432
|
+
<!-- Notification Bell -->
|
|
433
|
+
<div class="pa-notifications">
|
|
434
|
+
<button class="pa-notifications__btn" onclick="toggleNotifications()" aria-label="Notifications">
|
|
435
|
+
<span class="pa-notifications__icon">🔔</span>
|
|
436
|
+
<span class="pa-notifications__badge">3</span>
|
|
437
|
+
</button>
|
|
438
|
+
</div>
|
|
439
|
+
|
|
440
|
+
<!-- Profile Button -->
|
|
441
|
+
<button class="pa-header__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
|
|
442
|
+
<span class="pa-btn__icon">👤</span>
|
|
443
|
+
<span class="pa-header__profile-name">John Doe</span>
|
|
444
|
+
</button>
|
|
445
|
+
</div>
|
|
415
446
|
</div>
|
|
416
447
|
</nav>
|
|
417
448
|
|
|
@@ -518,13 +549,19 @@ NAVBAR CLASSES:
|
|
|
518
549
|
- .pa-navbar - Navbar outer wrapper (outside layout container)
|
|
519
550
|
- .pa-navbar__inner - Navbar inner container
|
|
520
551
|
|
|
521
|
-
HEADER
|
|
552
|
+
HEADER SECTION CONTAINERS (inside pa-navbar__inner):
|
|
553
|
+
- .pa-header__left - Left section (burger, brand, nav--left) - stays anchored left
|
|
554
|
+
- .pa-header__center - Center section (title) - flexible, fills space
|
|
555
|
+
- .pa-header__right - Right section (nav--right, notifications, profile) - stays anchored right
|
|
556
|
+
|
|
557
|
+
HEADER/NAVBAR ELEMENT CLASSES (inside section containers):
|
|
522
558
|
- .pa-header__burger - Burger menu button
|
|
523
559
|
- .burger-menu - Burger menu class (same as __burger)
|
|
524
560
|
- .pa-header__brand - Brand/logo area
|
|
525
561
|
- .pa-header__nav - Navigation container
|
|
526
562
|
- .pa-header__nav--left/right - Navigation alignment
|
|
527
563
|
- .pa-header__title - Page title area (flexible, with ellipsis)
|
|
564
|
+
- .pa-notifications - Notification bell container
|
|
528
565
|
- .pa-header__profile-btn - Profile button
|
|
529
566
|
- .pa-header__profile-name - Profile name text
|
|
530
567
|
|
|
@@ -536,7 +573,11 @@ LAYOUT CLASSES:
|
|
|
536
573
|
- .pa-layout__main - Main content area
|
|
537
574
|
- .pa-layout__main__inner - Main content inner wrapper
|
|
538
575
|
- .pa-layout__footer - Footer container
|
|
539
|
-
|
|
576
|
+
|
|
577
|
+
FOOTER SECTION CONTAINERS (inside pa-layout__footer):
|
|
578
|
+
- .pa-footer__left - Left section (copyright, etc.) - stays anchored left
|
|
579
|
+
- .pa-footer__center - Center section (optional) - flexible, fills space
|
|
580
|
+
- .pa-footer__right - Right section (version info, links) - stays anchored right
|
|
540
581
|
|
|
541
582
|
LAYOUT WIDTH VARIANTS (applied to body tag):
|
|
542
583
|
- No class - Fluid layout (full width)
|
package/snippets/modals.html
CHANGED
|
@@ -8,6 +8,7 @@ MODAL WRAPPER CLASSES:
|
|
|
8
8
|
- pa-modal: Base modal wrapper
|
|
9
9
|
- pa-modal--show: Show the modal (add/remove via JavaScript)
|
|
10
10
|
- pa-modal--top: Position modal near top instead of center (useful for search/command interfaces)
|
|
11
|
+
- pa-modal--static: Prevent closing via ESC key or backdrop click (must use explicit button)
|
|
11
12
|
- pa-modal--primary: Primary themed modal (blue header)
|
|
12
13
|
- pa-modal--success: Success themed modal (green header)
|
|
13
14
|
- pa-modal--warning: Warning themed modal (orange header)
|
|
@@ -75,6 +76,42 @@ HEADER THEME CLASSES (alternative to modal-level themes):
|
|
|
75
76
|
</div>
|
|
76
77
|
|
|
77
78
|
|
|
79
|
+
<!-- STATIC MODAL (No ESC, No Backdrop Click) -->
|
|
80
|
+
|
|
81
|
+
<!--
|
|
82
|
+
Static modals cannot be closed by:
|
|
83
|
+
- Pressing the Escape key
|
|
84
|
+
- Clicking the backdrop
|
|
85
|
+
|
|
86
|
+
User MUST click an explicit button to close.
|
|
87
|
+
Use for: license agreements, critical confirmations, required actions.
|
|
88
|
+
|
|
89
|
+
Implementation:
|
|
90
|
+
1. Add pa-modal--static class to the modal wrapper
|
|
91
|
+
2. Do NOT add onclick to the backdrop
|
|
92
|
+
3. Optionally remove the X close button from header
|
|
93
|
+
4. JavaScript must check for --static class before closing on ESC
|
|
94
|
+
-->
|
|
95
|
+
|
|
96
|
+
<div class="pa-modal pa-modal--static" id="staticModal">
|
|
97
|
+
<div class="pa-modal__backdrop"></div><!-- No onclick here! -->
|
|
98
|
+
<div class="pa-modal__container pa-modal__container--sm">
|
|
99
|
+
<div class="pa-modal__header pa-modal__header--warning">
|
|
100
|
+
<h3 class="pa-modal__title">License Agreement</h3>
|
|
101
|
+
<!-- No X close button - user must use footer buttons -->
|
|
102
|
+
</div>
|
|
103
|
+
<div class="pa-modal__body">
|
|
104
|
+
<p>You must accept the terms to continue.</p>
|
|
105
|
+
<p>This modal cannot be dismissed with ESC or by clicking outside.</p>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="pa-modal__footer">
|
|
108
|
+
<button class="pa-btn pa-btn--secondary" onclick="closeModal('staticModal')">Decline</button>
|
|
109
|
+
<button class="pa-btn pa-btn--warning" onclick="closeModal('staticModal')">Accept</button>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
|
|
78
115
|
<!-- MODAL SIZES -->
|
|
79
116
|
|
|
80
117
|
<!-- Small Modal -->
|
|
@@ -278,21 +315,23 @@ function closeModal(modalId) {
|
|
|
278
315
|
}
|
|
279
316
|
}
|
|
280
317
|
|
|
281
|
-
// Close modal with Escape key
|
|
318
|
+
// Close modal with Escape key (skip static modals)
|
|
282
319
|
document.addEventListener('keydown', function(e) {
|
|
283
320
|
if (e.key === 'Escape') {
|
|
284
321
|
const openModal = document.querySelector('.pa-modal--show');
|
|
285
|
-
|
|
322
|
+
// Don't close static modals with ESC
|
|
323
|
+
if (openModal && !openModal.classList.contains('pa-modal--static')) {
|
|
286
324
|
closeModal(openModal.id);
|
|
287
325
|
}
|
|
288
326
|
}
|
|
289
327
|
});
|
|
290
328
|
|
|
291
|
-
// Close modal when clicking backdrop
|
|
329
|
+
// Close modal when clicking backdrop (skip static modals)
|
|
292
330
|
document.querySelectorAll('.pa-modal__backdrop').forEach(backdrop => {
|
|
293
331
|
backdrop.addEventListener('click', function() {
|
|
294
332
|
const modal = this.closest('.pa-modal');
|
|
295
|
-
|
|
333
|
+
// Don't close static modals on backdrop click
|
|
334
|
+
if (modal && !modal.classList.contains('pa-modal--static')) {
|
|
296
335
|
closeModal(modal.id);
|
|
297
336
|
}
|
|
298
337
|
});
|
package/snippets/tables.html
CHANGED
|
@@ -100,8 +100,8 @@
|
|
|
100
100
|
</tbody>
|
|
101
101
|
</table>
|
|
102
102
|
|
|
103
|
-
<!--
|
|
104
|
-
<table class="pa-table pa-table--
|
|
103
|
+
<!-- XS Size (compact, fits button-xs) -->
|
|
104
|
+
<table class="pa-table pa-table--xs">
|
|
105
105
|
<thead>
|
|
106
106
|
<tr>
|
|
107
107
|
<th>Name</th>
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
</tbody>
|
|
117
117
|
</table>
|
|
118
118
|
|
|
119
|
-
<!--
|
|
120
|
-
<table class="pa-table pa-table--
|
|
119
|
+
<!-- LG Size (spacious, fits button-lg) -->
|
|
120
|
+
<table class="pa-table pa-table--lg">
|
|
121
121
|
<thead>
|
|
122
122
|
<tr>
|
|
123
123
|
<th>Name</th>
|
|
@@ -294,8 +294,10 @@ BASE CLASS:
|
|
|
294
294
|
|
|
295
295
|
MODIFIERS:
|
|
296
296
|
- pa-table--striped (alternating row colors)
|
|
297
|
-
- pa-table--
|
|
298
|
-
- pa-table--
|
|
297
|
+
- pa-table--xs (compact, fits button-xs)
|
|
298
|
+
- pa-table--sm (slightly wider horizontal padding)
|
|
299
|
+
- pa-table--lg (spacious, fits button-lg)
|
|
300
|
+
- pa-table--xl (extra spacious, fits button-xl)
|
|
299
301
|
|
|
300
302
|
HELPERS:
|
|
301
303
|
- col-auto (auto-width column that shrinks to content)
|
package/snippets/tooltips.html
CHANGED
|
@@ -75,6 +75,20 @@
|
|
|
75
75
|
</span>
|
|
76
76
|
|
|
77
77
|
|
|
78
|
+
<!-- THEME COLOR TOOLTIPS (color-1 to color-9) -->
|
|
79
|
+
|
|
80
|
+
<!-- Theme colors use --pa-color-* CSS variables defined by themes -->
|
|
81
|
+
<span class="pa-tooltip pa-tooltip--color-1" data-tooltip="Color 1">Color 1</span>
|
|
82
|
+
<span class="pa-tooltip pa-tooltip--color-2" data-tooltip="Color 2">Color 2</span>
|
|
83
|
+
<span class="pa-tooltip pa-tooltip--color-3" data-tooltip="Color 3">Color 3</span>
|
|
84
|
+
<span class="pa-tooltip pa-tooltip--color-4" data-tooltip="Color 4">Color 4</span>
|
|
85
|
+
<span class="pa-tooltip pa-tooltip--color-5" data-tooltip="Color 5">Color 5</span>
|
|
86
|
+
<span class="pa-tooltip pa-tooltip--color-6" data-tooltip="Color 6">Color 6</span>
|
|
87
|
+
<span class="pa-tooltip pa-tooltip--color-7" data-tooltip="Color 7">Color 7</span>
|
|
88
|
+
<span class="pa-tooltip pa-tooltip--color-8" data-tooltip="Color 8">Color 8</span>
|
|
89
|
+
<span class="pa-tooltip pa-tooltip--color-9" data-tooltip="Color 9">Color 9</span>
|
|
90
|
+
|
|
91
|
+
|
|
78
92
|
<!-- CURSOR MODIFIERS -->
|
|
79
93
|
|
|
80
94
|
<!-- Default tooltip (inherits parent cursor - good for clickable elements like buttons, tabs) -->
|
|
@@ -270,6 +284,55 @@
|
|
|
270
284
|
</div>
|
|
271
285
|
|
|
272
286
|
|
|
287
|
+
<!-- POPOVER ALIGNMENT -->
|
|
288
|
+
|
|
289
|
+
<!-- Left Aligned (default) -->
|
|
290
|
+
<div class="pa-popover" data-placement="bottom">
|
|
291
|
+
<button class="pa-popover__trigger">?</button>
|
|
292
|
+
<div class="pa-popover__content">
|
|
293
|
+
<div class="pa-popover__header">
|
|
294
|
+
<h4>Left Aligned</h4>
|
|
295
|
+
<button class="pa-popover__close">×</button>
|
|
296
|
+
</div>
|
|
297
|
+
<div class="pa-popover__body">
|
|
298
|
+
<p>Default alignment is left.</p>
|
|
299
|
+
<ul>
|
|
300
|
+
<li>Lists look natural</li>
|
|
301
|
+
<li>Easy to read</li>
|
|
302
|
+
</ul>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
|
|
307
|
+
<!-- Center Aligned -->
|
|
308
|
+
<div class="pa-popover pa-popover--center" data-placement="bottom">
|
|
309
|
+
<button class="pa-popover__trigger">?</button>
|
|
310
|
+
<div class="pa-popover__content">
|
|
311
|
+
<div class="pa-popover__header">
|
|
312
|
+
<h4>Centered</h4>
|
|
313
|
+
<button class="pa-popover__close">×</button>
|
|
314
|
+
</div>
|
|
315
|
+
<div class="pa-popover__body">
|
|
316
|
+
<p>Use --center modifier for centered text.</p>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
|
|
321
|
+
<!-- Right Aligned -->
|
|
322
|
+
<div class="pa-popover pa-popover--right" data-placement="bottom">
|
|
323
|
+
<button class="pa-popover__trigger">?</button>
|
|
324
|
+
<div class="pa-popover__content">
|
|
325
|
+
<div class="pa-popover__header">
|
|
326
|
+
<h4>Right Aligned</h4>
|
|
327
|
+
<button class="pa-popover__close">×</button>
|
|
328
|
+
</div>
|
|
329
|
+
<div class="pa-popover__body">
|
|
330
|
+
<p>Use --right modifier for RTL layouts.</p>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
|
|
335
|
+
|
|
273
336
|
<!-- POPOVER WITH RICH CONTENT -->
|
|
274
337
|
|
|
275
338
|
<!-- Popover with List -->
|
|
@@ -346,6 +409,7 @@ VARIANTS:
|
|
|
346
409
|
- pa-tooltip--success (success colored background)
|
|
347
410
|
- pa-tooltip--warning (warning colored background)
|
|
348
411
|
- pa-tooltip--danger (danger colored background)
|
|
412
|
+
- pa-tooltip--color-1 through pa-tooltip--color-9 (theme-defined colors)
|
|
349
413
|
|
|
350
414
|
MULTILINE:
|
|
351
415
|
- pa-tooltip--multiline (allows text wrapping)
|
|
@@ -363,6 +427,10 @@ SIZES:
|
|
|
363
427
|
- pa-popover--sm (small)
|
|
364
428
|
- pa-popover--lg (large)
|
|
365
429
|
|
|
430
|
+
ALIGNMENT:
|
|
431
|
+
- pa-popover--center (centered body text)
|
|
432
|
+
- pa-popover--right (right-aligned body text)
|
|
433
|
+
|
|
366
434
|
COMPONENTS:
|
|
367
435
|
- pa-popover__trigger (button/trigger element)
|
|
368
436
|
- pa-popover__content (popover container)
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// Buttons
|
|
8
8
|
.pa-btn {
|
|
9
9
|
display: inline-block;
|
|
10
|
+
height: $btn-height-base;
|
|
10
11
|
padding: $btn-padding-v $btn-padding-h;
|
|
11
12
|
border: $btn-border-width solid transparent;
|
|
12
13
|
border-radius: $border-radius;
|
|
@@ -46,21 +47,25 @@
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
&--xs {
|
|
50
|
+
height: $btn-height-xs;
|
|
49
51
|
padding: $btn-padding-xs-v $btn-padding-xs-h;
|
|
50
52
|
font-size: $font-size-xs;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
&--sm {
|
|
56
|
+
height: $btn-height-sm;
|
|
54
57
|
padding: $btn-padding-sm-v $btn-padding-sm-h;
|
|
55
58
|
font-size: $font-size-sm;
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
&--lg {
|
|
62
|
+
height: $btn-height-lg;
|
|
59
63
|
padding: $btn-padding-lg-v $btn-padding-lg-h;
|
|
60
64
|
font-size: $font-size-base;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
&--xl {
|
|
68
|
+
height: $btn-height-xl;
|
|
64
69
|
padding: $btn-padding-xl-v $btn-padding-xl-h;
|
|
65
70
|
font-size: $font-size-lg;
|
|
66
71
|
}
|
|
@@ -265,6 +270,7 @@
|
|
|
265
270
|
display: flex;
|
|
266
271
|
align-items: center;
|
|
267
272
|
justify-content: center;
|
|
273
|
+
line-height: 1;
|
|
268
274
|
|
|
269
275
|
// Size-specific icon-only dimensions
|
|
270
276
|
&.pa-btn--xs {
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
// Cards
|
|
8
8
|
.pa-card {
|
|
9
9
|
background: var(--pa-card-bg);
|
|
10
|
-
border: $border-width
|
|
11
|
-
border-radius: $border-radius
|
|
10
|
+
border: $card-border-width solid var(--pa-border-color);
|
|
11
|
+
border-radius: $card-border-radius;
|
|
12
12
|
margin-bottom: $spacing-base;
|
|
13
13
|
box-shadow: $shadow-sm;
|
|
14
14
|
transition: box-shadow $transition-fast $easing-snappy;
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
&__header {
|
|
23
23
|
padding: $card-header-padding-v $card-header-padding-h;
|
|
24
24
|
min-height: $card-header-min-height;
|
|
25
|
-
border-top-left-radius: $border-radius
|
|
26
|
-
border-top-right-radius: $border-radius
|
|
25
|
+
border-top-left-radius: $card-border-radius;
|
|
26
|
+
border-top-right-radius: $card-border-radius;
|
|
27
27
|
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
28
28
|
background: var(--pa-card-header-bg);
|
|
29
29
|
display: flex;
|
|
@@ -60,6 +60,12 @@
|
|
|
60
60
|
color: var(--pa-text-primary);
|
|
61
61
|
font-size: $font-size-base;
|
|
62
62
|
}
|
|
63
|
+
|
|
64
|
+
// Buttons in card headers - negative margin to prevent header height growth
|
|
65
|
+
.pa-btn {
|
|
66
|
+
margin-top: -0.25rem;
|
|
67
|
+
margin-bottom: -0.25rem;
|
|
68
|
+
}
|
|
63
69
|
}
|
|
64
70
|
|
|
65
71
|
&__title {
|
|
@@ -241,6 +247,36 @@
|
|
|
241
247
|
display: block;
|
|
242
248
|
}
|
|
243
249
|
}
|
|
250
|
+
|
|
251
|
+
// Inline tabs in header (for side-by-side card alignment)
|
|
252
|
+
&__tabs--inline {
|
|
253
|
+
display: flex;
|
|
254
|
+
gap: $spacing-xs;
|
|
255
|
+
margin: -$card-header-padding-v 0; // Negative margin to fill header height
|
|
256
|
+
border-bottom: none;
|
|
257
|
+
background: none;
|
|
258
|
+
|
|
259
|
+
.pa-card__tab {
|
|
260
|
+
padding: $card-tab-inline-padding-v $card-tab-inline-padding-h;
|
|
261
|
+
border: none;
|
|
262
|
+
border-radius: $border-radius;
|
|
263
|
+
font-size: $font-size-sm;
|
|
264
|
+
background: transparent;
|
|
265
|
+
color: var(--pa-text-secondary);
|
|
266
|
+
cursor: pointer;
|
|
267
|
+
transition: all $transition-fast $easing-snappy;
|
|
268
|
+
|
|
269
|
+
&:hover {
|
|
270
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
271
|
+
color: var(--pa-text-primary);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
&--active {
|
|
275
|
+
background: var(--pa-accent);
|
|
276
|
+
color: var(--pa-btn-primary-text);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
244
280
|
}
|
|
245
281
|
|
|
246
282
|
// Clickable cards (anchor-wrapped)
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
td {
|
|
41
41
|
color: var(--pa-text-primary);
|
|
42
42
|
background-color: var(--pa-table-bg);
|
|
43
|
+
height: $table-cell-height;
|
|
43
44
|
|
|
44
45
|
// Buttons in table cells - negative margin to prevent row height growth
|
|
45
46
|
.pa-btn {
|
|
@@ -62,28 +63,51 @@
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
//
|
|
66
|
-
&--
|
|
67
|
-
th,
|
|
66
|
+
// Size variants - synchronized with button/input sizes
|
|
67
|
+
&--xs {
|
|
68
|
+
th, td {
|
|
69
|
+
padding: $table-padding-xs-v $table-padding-xs-h;
|
|
70
|
+
}
|
|
68
71
|
td {
|
|
69
|
-
|
|
70
|
-
($table-padding-base-h * $table-spacing-2x-multiplier);
|
|
72
|
+
height: $table-cell-height-xs;
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
&--sm {
|
|
77
|
+
th, td {
|
|
78
|
+
padding: $table-padding-sm-v $table-padding-sm-h;
|
|
79
|
+
}
|
|
77
80
|
td {
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
height: $table-cell-height-sm;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&--lg {
|
|
86
|
+
th, td {
|
|
87
|
+
padding: $table-padding-lg-v $table-padding-lg-h;
|
|
88
|
+
}
|
|
89
|
+
td {
|
|
90
|
+
height: $table-cell-height-lg;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
&--xl {
|
|
95
|
+
th, td {
|
|
96
|
+
padding: $table-padding-xl-v $table-padding-xl-h;
|
|
97
|
+
}
|
|
98
|
+
td {
|
|
99
|
+
height: $table-cell-height-xl;
|
|
80
100
|
}
|
|
81
101
|
}
|
|
82
102
|
|
|
83
103
|
// Hover effects
|
|
84
|
-
|
|
85
|
-
//
|
|
86
|
-
|
|
104
|
+
@if $table-hover-accent-width > 0 {
|
|
105
|
+
// Header alignment - add padding-left instead of border
|
|
106
|
+
th:first-child {
|
|
107
|
+
padding-left: $table-hover-accent-width + $table-padding-base-h;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
tbody tr {
|
|
87
111
|
border-#{$table-hover-accent-position}: #{$table-hover-accent-width} solid transparent;
|
|
88
112
|
transition: border-color $transition-normal $easing-smooth;
|
|
89
113
|
}
|