@keenmate/pure-admin-core 1.0.0-rc04 → 1.0.0-rc05
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 +92 -0
- package/dist/css/main.css +375 -20
- package/package.json +1 -1
- 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 +119 -0
- package/src/scss/core-components/_tooltips.scss +40 -0
- package/src/scss/core-components/forms/_form-inputs.scss +7 -1
- package/src/scss/themes/audi-light.scss +5 -1
- package/src/scss/themes/audi.scss +5 -3
- package/src/scss/variables/_components.scss +51 -12
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
|
}
|
|
@@ -336,6 +336,125 @@
|
|
|
336
336
|
padding-top: $spacing-md;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
|
+
|
|
340
|
+
// Card variant - tabs act as card header (same height as pa-card__header)
|
|
341
|
+
&--card {
|
|
342
|
+
position: relative; // For dropdown positioning
|
|
343
|
+
border: $card-border-width solid var(--pa-border-color);
|
|
344
|
+
border-radius: $card-border-radius;
|
|
345
|
+
background-color: var(--pa-card-bg);
|
|
346
|
+
box-shadow: $shadow-sm;
|
|
347
|
+
|
|
348
|
+
.pa-tabs {
|
|
349
|
+
height: $card-header-min-height;
|
|
350
|
+
padding: $card-header-padding-v $card-header-padding-h;
|
|
351
|
+
background: var(--pa-card-header-bg);
|
|
352
|
+
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
353
|
+
box-sizing: border-box;
|
|
354
|
+
border-top-left-radius: $card-border-radius;
|
|
355
|
+
border-top-right-radius: $card-border-radius;
|
|
356
|
+
margin-bottom: 0;
|
|
357
|
+
align-items: center;
|
|
358
|
+
gap: $spacing-xs;
|
|
359
|
+
flex-wrap: nowrap;
|
|
360
|
+
overflow: visible; // Allow dropdown to overflow
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.pa-tabs__content {
|
|
364
|
+
padding: $card-body-padding-v $card-body-padding-h;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
.pa-tabs__panel {
|
|
368
|
+
padding-top: 0;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Overflow toggle for tabs that don't fit
|
|
372
|
+
.pa-tabs__overflow {
|
|
373
|
+
position: relative;
|
|
374
|
+
margin-left: auto;
|
|
375
|
+
flex-shrink: 0;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.pa-tabs__overflow-toggle {
|
|
379
|
+
position: relative;
|
|
380
|
+
display: flex;
|
|
381
|
+
align-items: center;
|
|
382
|
+
justify-content: center;
|
|
383
|
+
width: $card-header-min-height;
|
|
384
|
+
height: 100%;
|
|
385
|
+
padding: 0;
|
|
386
|
+
border: none;
|
|
387
|
+
background: transparent;
|
|
388
|
+
color: var(--pa-text-secondary);
|
|
389
|
+
cursor: pointer;
|
|
390
|
+
transition: all $transition-fast $easing-snappy;
|
|
391
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
392
|
+
margin: (-$card-header-padding-v) (-$card-header-padding-h) (-$card-header-padding-v) 0;
|
|
393
|
+
box-sizing: content-box;
|
|
394
|
+
height: $card-header-min-height;
|
|
395
|
+
|
|
396
|
+
&:hover {
|
|
397
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
398
|
+
color: var(--pa-text-primary);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
// When overflow contains the active tab
|
|
402
|
+
&--has-active {
|
|
403
|
+
color: var(--pa-accent);
|
|
404
|
+
|
|
405
|
+
&::after {
|
|
406
|
+
content: '';
|
|
407
|
+
position: absolute;
|
|
408
|
+
bottom: 0;
|
|
409
|
+
left: 0;
|
|
410
|
+
right: 0;
|
|
411
|
+
height: $border-width-medium;
|
|
412
|
+
background: var(--pa-accent);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
i {
|
|
417
|
+
font-size: $font-size-sm;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
.pa-tabs__overflow-menu {
|
|
422
|
+
position: absolute;
|
|
423
|
+
top: $card-header-min-height;
|
|
424
|
+
right: 0;
|
|
425
|
+
min-width: 15rem;
|
|
426
|
+
background: var(--pa-card-bg);
|
|
427
|
+
border: $card-border-width solid var(--pa-border-color);
|
|
428
|
+
border-radius: $border-radius;
|
|
429
|
+
box-shadow: $shadow-lg;
|
|
430
|
+
z-index: $z-index-dropdown;
|
|
431
|
+
display: none;
|
|
432
|
+
flex-direction: column;
|
|
433
|
+
padding: $spacing-xs 0;
|
|
434
|
+
|
|
435
|
+
&--open {
|
|
436
|
+
display: flex;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.pa-tabs__item {
|
|
440
|
+
padding: $spacing-sm $spacing-base;
|
|
441
|
+
border: none;
|
|
442
|
+
border-bottom: none;
|
|
443
|
+
border-radius: 0;
|
|
444
|
+
text-align: left;
|
|
445
|
+
white-space: nowrap;
|
|
446
|
+
|
|
447
|
+
&:hover {
|
|
448
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
&--active {
|
|
452
|
+
background-color: rgba($accent-color, 0.1);
|
|
453
|
+
border-bottom: none;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
339
458
|
}
|
|
340
459
|
|
|
341
460
|
// Vertical tabs layout wrapper (for proper spacing with content)
|
|
@@ -237,6 +237,29 @@
|
|
|
237
237
|
border-left-color: var(--pa-btn-danger-bg);
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
// Numbered color variants (color-1 through color-9)
|
|
241
|
+
// These use theme-customizable colors from --pa-color-* CSS variables
|
|
242
|
+
@for $i from 1 through 9 {
|
|
243
|
+
&--color-#{$i}::before {
|
|
244
|
+
background-color: var(--pa-color-#{$i});
|
|
245
|
+
}
|
|
246
|
+
&--color-#{$i}::after {
|
|
247
|
+
border-top-color: var(--pa-color-#{$i});
|
|
248
|
+
}
|
|
249
|
+
&--color-#{$i}.pa-tooltip--right::after {
|
|
250
|
+
border-top-color: transparent;
|
|
251
|
+
border-right-color: var(--pa-color-#{$i});
|
|
252
|
+
}
|
|
253
|
+
&--color-#{$i}.pa-tooltip--bottom::after {
|
|
254
|
+
border-top-color: transparent;
|
|
255
|
+
border-bottom-color: var(--pa-color-#{$i});
|
|
256
|
+
}
|
|
257
|
+
&--color-#{$i}.pa-tooltip--left::after {
|
|
258
|
+
border-top-color: transparent;
|
|
259
|
+
border-left-color: var(--pa-color-#{$i});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
240
263
|
// Smart positioning - collision detection adjustments
|
|
241
264
|
// Applied dynamically by JavaScript based on viewport boundaries
|
|
242
265
|
|
|
@@ -390,6 +413,7 @@
|
|
|
390
413
|
font-size: $font-size-sm;
|
|
391
414
|
line-height: $line-height-base;
|
|
392
415
|
color: var(--pa-text-primary);
|
|
416
|
+
text-align: left; // Reset inherited alignment for rich content
|
|
393
417
|
|
|
394
418
|
p {
|
|
395
419
|
margin: 0 0 $spacing-sm 0;
|
|
@@ -454,6 +478,15 @@
|
|
|
454
478
|
min-width: $popover-lg-min-width;
|
|
455
479
|
max-width: $popover-lg-max-width;
|
|
456
480
|
}
|
|
481
|
+
|
|
482
|
+
// Alignment variants
|
|
483
|
+
&--center &__body {
|
|
484
|
+
text-align: center;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
&--right &__body {
|
|
488
|
+
text-align: right;
|
|
489
|
+
}
|
|
457
490
|
}
|
|
458
491
|
|
|
459
492
|
// ========================================
|
|
@@ -500,4 +533,11 @@
|
|
|
500
533
|
background-color: var(--pa-btn-danger-bg);
|
|
501
534
|
color: var(--pa-btn-danger-text);
|
|
502
535
|
}
|
|
536
|
+
|
|
537
|
+
// Numbered color variants (color-1 through color-9)
|
|
538
|
+
@for $i from 1 through 9 {
|
|
539
|
+
&.pa-tooltip--color-#{$i} {
|
|
540
|
+
background-color: var(--pa-color-#{$i});
|
|
541
|
+
}
|
|
542
|
+
}
|
|
503
543
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
.pa-input {
|
|
8
8
|
width: 100%;
|
|
9
|
+
height: #{$base-input-size-md-height}rem;
|
|
9
10
|
padding: $input-padding-v $input-padding-h;
|
|
10
11
|
border: $border-width-base solid var(--pa-border-color);
|
|
11
12
|
border-radius: $border-radius;
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
|
|
24
25
|
.pa-select {
|
|
25
26
|
width: 100%;
|
|
27
|
+
height: #{$base-input-size-md-height}rem;
|
|
26
28
|
padding: $select-padding-v $select-padding-h;
|
|
27
29
|
border: $border-width-base solid var(--pa-border-color);
|
|
28
30
|
border-radius: $border-radius;
|
|
@@ -61,27 +63,31 @@
|
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
|
|
64
|
-
// Input Sizes
|
|
66
|
+
// Input Sizes - heights aligned with $base-input-size-* variables
|
|
65
67
|
.pa-input--xs,
|
|
66
68
|
.pa-select--xs {
|
|
69
|
+
height: #{$base-input-size-xs-height}rem;
|
|
67
70
|
padding: $input-padding-xs-v $input-padding-h;
|
|
68
71
|
font-size: $font-size-xs;
|
|
69
72
|
}
|
|
70
73
|
|
|
71
74
|
.pa-input--sm,
|
|
72
75
|
.pa-select--sm {
|
|
76
|
+
height: #{$base-input-size-sm-height}rem;
|
|
73
77
|
padding: $input-padding-v $input-padding-h;
|
|
74
78
|
font-size: $font-size-sm;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
.pa-input--lg,
|
|
78
82
|
.pa-select--lg {
|
|
83
|
+
height: #{$base-input-size-lg-height}rem;
|
|
79
84
|
padding: $input-padding-v $input-padding-h;
|
|
80
85
|
font-size: $font-size-base;
|
|
81
86
|
}
|
|
82
87
|
|
|
83
88
|
.pa-input--xl,
|
|
84
89
|
.pa-select--xl {
|
|
90
|
+
height: #{$base-input-size-xl-height}rem;
|
|
85
91
|
padding: $input-padding-v $input-padding-h;
|
|
86
92
|
font-size: $font-size-lg;
|
|
87
93
|
}
|
|
@@ -90,7 +90,7 @@ $table-header-bg: $audi-gray-100;
|
|
|
90
90
|
$table-hover-bg: $audi-gray-50;
|
|
91
91
|
|
|
92
92
|
// Enable red accent on table row hover (Audi signature detail)
|
|
93
|
-
$table-hover-accent-width: 3px
|
|
93
|
+
$table-hover-accent-width: 0.3rem; // 3px in 10px base
|
|
94
94
|
$table-hover-accent-color: $accent-color;
|
|
95
95
|
$table-hover-accent-position: left;
|
|
96
96
|
|
|
@@ -200,6 +200,10 @@ $danger-bg-light: rgba(255, 0, 0, 0.1);
|
|
|
200
200
|
// Set body font
|
|
201
201
|
$body-font-family: "Fira Sans Condensed", "Arial Narrow", "Arial", sans-serif;
|
|
202
202
|
|
|
203
|
+
// Card styling - thicker border for Audi design language
|
|
204
|
+
$card-border-width: $border-width-medium;
|
|
205
|
+
$card-border-radius: 0; // Sharp edges
|
|
206
|
+
|
|
203
207
|
// Import core styles with overridden variables
|
|
204
208
|
@import '../core';
|
|
205
209
|
@import '../utilities';
|
|
@@ -107,7 +107,7 @@ $table-header-bg: $audi-black;
|
|
|
107
107
|
$table-hover-bg: $audi-gray-light;
|
|
108
108
|
|
|
109
109
|
// Enable red accent on table row hover (Audi signature detail)
|
|
110
|
-
$table-hover-accent-width: 3px
|
|
110
|
+
$table-hover-accent-width: 0.3rem; // 3px in 10px base
|
|
111
111
|
$table-hover-accent-color: $accent-color; // Uses the red #ff0000
|
|
112
112
|
$table-hover-accent-position: left;
|
|
113
113
|
|
|
@@ -220,6 +220,10 @@ $danger-bg-light: rgba(255, 0, 0, 0.25);
|
|
|
220
220
|
// 4. Override font family SCSS variable after fonts are defined
|
|
221
221
|
$body-font-family: "Fira Sans Condensed", "Arial Narrow", "Arial", sans-serif;
|
|
222
222
|
|
|
223
|
+
// Card styling - thicker border for Audi design language
|
|
224
|
+
$card-border-width: $border-width-medium;
|
|
225
|
+
$card-border-radius: 0; // Sharp edges
|
|
226
|
+
|
|
223
227
|
// 5. Import core framework styles (will use all our SCSS variables)
|
|
224
228
|
@import '../core';
|
|
225
229
|
|
|
@@ -256,8 +260,6 @@ $body-font-family: "Fira Sans Condensed", "Arial Narrow", "Arial", sans-serif;
|
|
|
256
260
|
}
|
|
257
261
|
|
|
258
262
|
.pa-card {
|
|
259
|
-
border-radius: 0 !important; // Sharp edges
|
|
260
|
-
border: $border-width-medium solid $border-color;
|
|
261
263
|
box-shadow: 0 $spacing-xs ($spacing-sm * 2) rgba($audi-black, 0.8);
|
|
262
264
|
}
|
|
263
265
|
|