@keenmate/pure-admin-core 1.4.0 → 1.5.0
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 +8 -8
- package/dist/css/main.css +167 -65
- package/package.json +6 -5
- package/snippets/buttons.html +4 -4
- package/snippets/forms.html +534 -534
- package/snippets/layout.html +11 -11
- package/snippets/tables.html +8 -8
- package/snippets/tabs.html +6 -6
- package/snippets/timeline.html +24 -24
- package/snippets/tooltips.html +2 -2
- package/snippets/typography.html +101 -101
- package/snippets/utilities.html +3 -3
- package/src/scss/core-components/_buttons.scss +2 -2
- package/src/scss/core-components/_cards.scss +41 -0
- package/src/scss/core-components/_detail-panel.scss +7 -2
- package/src/scss/core-components/_pagers.scss +4 -4
- package/src/scss/core-components/_tables.scss +54 -4
- package/src/scss/core-components/_tabs.scss +0 -2
- package/src/scss/core-components/_timeline.scss +4 -4
- package/src/scss/core-components/_tooltips.scss +1 -2
- package/src/scss/core-components/_utilities.scss +24 -11
- package/src/scss/core-components/layout/_layout-container.scss +7 -7
- package/src/scss/core-components/layout/_navbar-elements.scss +5 -5
- package/src/scss/core-components/layout/_navbar.scss +3 -3
- package/src/scss/utilities.scss +0 -8
- package/src/scss/variables/_system.scss +1 -0
package/snippets/layout.html
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
<!-- Three-section layout: Left / Center / Right -->
|
|
46
46
|
<footer class="pa-layout__footer">
|
|
47
47
|
<!-- Left Section (stays anchored left) -->
|
|
48
|
-
<div class="pa-
|
|
48
|
+
<div class="pa-footer__start">
|
|
49
49
|
<p>© 2024 Pure Admin Framework</p>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
</div>
|
|
56
56
|
|
|
57
57
|
<!-- Right Section (stays anchored right) -->
|
|
58
|
-
<div class="pa-
|
|
58
|
+
<div class="pa-footer__end">
|
|
59
59
|
<span>App version: 1.2.1</span>
|
|
60
60
|
<span>Database version: 2.3.1</span>
|
|
61
61
|
<a href="#">Open Source Licenses</a>
|
|
@@ -435,7 +435,7 @@ NOTE: Fixed width (.wr-*) overrides both default and resizable width.
|
|
|
435
435
|
<nav class="pa-navbar">
|
|
436
436
|
<div class="pa-navbar__inner">
|
|
437
437
|
<!-- Left Section: Burger, Brand, Left Nav (stays anchored left) -->
|
|
438
|
-
<div class="pa-
|
|
438
|
+
<div class="pa-header__start">
|
|
439
439
|
<!-- Hamburger Menu (burger) -->
|
|
440
440
|
<button class="pa-header__burger burger-menu" onclick="toggleSidebar()" aria-label="Toggle sidebar">
|
|
441
441
|
<span></span>
|
|
@@ -449,7 +449,7 @@ NOTE: Fixed width (.wr-*) overrides both default and resizable width.
|
|
|
449
449
|
</div>
|
|
450
450
|
|
|
451
451
|
<!-- Left Navigation Links -->
|
|
452
|
-
<nav class="pa-header__nav pa-header__nav--
|
|
452
|
+
<nav class="pa-header__nav pa-header__nav--start">
|
|
453
453
|
<ul>
|
|
454
454
|
<li><a href="/">Dashboard</a></li>
|
|
455
455
|
<li><a href="/components">Components</a></li>
|
|
@@ -466,9 +466,9 @@ NOTE: Fixed width (.wr-*) overrides both default and resizable width.
|
|
|
466
466
|
</div>
|
|
467
467
|
|
|
468
468
|
<!-- Right Section: Right Nav, Notifications, Profile (stays anchored right) -->
|
|
469
|
-
<div class="pa-
|
|
469
|
+
<div class="pa-header__end">
|
|
470
470
|
<!-- Right Navigation Links -->
|
|
471
|
-
<nav class="pa-header__nav pa-header__nav--
|
|
471
|
+
<nav class="pa-header__nav pa-header__nav--end">
|
|
472
472
|
<ul>
|
|
473
473
|
<li><a href="/alerts">Alerts</a></li>
|
|
474
474
|
<li><a href="/tables">Tables</a></li>
|
|
@@ -596,16 +596,16 @@ NAVBAR CLASSES:
|
|
|
596
596
|
- .pa-navbar__inner - Navbar inner container
|
|
597
597
|
|
|
598
598
|
HEADER SECTION CONTAINERS (inside pa-navbar__inner):
|
|
599
|
-
- .pa-
|
|
599
|
+
- .pa-header__start - Start section (burger, brand, nav--start) - stays anchored to start
|
|
600
600
|
- .pa-header__center - Center section (title) - flexible, fills space
|
|
601
|
-
- .pa-
|
|
601
|
+
- .pa-header__end - End section (nav--end, notifications, profile) - stays anchored to end
|
|
602
602
|
|
|
603
603
|
HEADER/NAVBAR ELEMENT CLASSES (inside section containers):
|
|
604
604
|
- .pa-header__burger - Burger menu button
|
|
605
605
|
- .burger-menu - Burger menu class (same as __burger)
|
|
606
606
|
- .pa-header__brand - Brand/logo area
|
|
607
607
|
- .pa-header__nav - Navigation container
|
|
608
|
-
- .pa-header__nav--
|
|
608
|
+
- .pa-header__nav--start/right - Navigation alignment
|
|
609
609
|
- .pa-header__title - Page title area (flexible, with ellipsis)
|
|
610
610
|
- .pa-notifications - Notification bell container
|
|
611
611
|
- .pa-header__profile-btn - Profile button
|
|
@@ -621,9 +621,9 @@ LAYOUT CLASSES:
|
|
|
621
621
|
- .pa-layout__footer - Footer container
|
|
622
622
|
|
|
623
623
|
FOOTER SECTION CONTAINERS (inside pa-layout__footer):
|
|
624
|
-
- .pa-
|
|
624
|
+
- .pa-footer__start - Start section (copyright, etc.) - stays anchored to start
|
|
625
625
|
- .pa-footer__center - Center section (optional) - flexible, fills space
|
|
626
|
-
- .pa-
|
|
626
|
+
- .pa-footer__end - End section (version info, links) - stays anchored to end
|
|
627
627
|
|
|
628
628
|
LAYOUT WIDTH VARIANTS (applied to body tag):
|
|
629
629
|
- No class - Fluid layout (full width)
|
package/snippets/tables.html
CHANGED
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
</div>
|
|
232
232
|
|
|
233
233
|
<!-- Left-Aligned Pager -->
|
|
234
|
-
<div class="pa-pager pa-pager--
|
|
234
|
+
<div class="pa-pager pa-pager--start">
|
|
235
235
|
<div class="pa-pager__container">
|
|
236
236
|
<div class="pa-pager__controls">
|
|
237
237
|
<button class="pa-btn pa-btn--sm pa-btn--secondary">« First</button>
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
</div>
|
|
244
244
|
|
|
245
245
|
<!-- Right-Aligned Pager -->
|
|
246
|
-
<div class="pa-pager pa-pager--
|
|
246
|
+
<div class="pa-pager pa-pager--end">
|
|
247
247
|
<div class="pa-pager__container">
|
|
248
248
|
<span class="pa-pager__text">Showing 1-25 of 250</span>
|
|
249
249
|
<div class="pa-pager__controls">
|
|
@@ -273,14 +273,14 @@
|
|
|
273
273
|
</div>
|
|
274
274
|
|
|
275
275
|
<!-- Left-Aligned Load More -->
|
|
276
|
-
<div class="pa-load-more pa-load-more--
|
|
276
|
+
<div class="pa-load-more pa-load-more--start">
|
|
277
277
|
<button class="pa-load-more__button">
|
|
278
278
|
<span class="pa-load-more__text">Show More Items</span>
|
|
279
279
|
</button>
|
|
280
280
|
</div>
|
|
281
281
|
|
|
282
282
|
<!-- Right-Aligned Load More -->
|
|
283
|
-
<div class="pa-load-more pa-load-more--
|
|
283
|
+
<div class="pa-load-more pa-load-more--end">
|
|
284
284
|
<button class="pa-load-more__button">
|
|
285
285
|
<span class="pa-load-more__text">Load Previous</span>
|
|
286
286
|
</button>
|
|
@@ -306,14 +306,14 @@ HELPERS:
|
|
|
306
306
|
|
|
307
307
|
PAGER:
|
|
308
308
|
- pa-pager (center aligned by default)
|
|
309
|
-
- pa-pager--
|
|
310
|
-
- pa-pager--
|
|
309
|
+
- pa-pager--start (start aligned)
|
|
310
|
+
- pa-pager--end (end aligned)
|
|
311
311
|
- pa-pager__container, __controls, __info, __input, __text
|
|
312
312
|
|
|
313
313
|
LOAD MORE:
|
|
314
314
|
- pa-load-more (center aligned by default)
|
|
315
|
-
- pa-load-more--
|
|
316
|
-
- pa-load-more--
|
|
315
|
+
- pa-load-more--start (start aligned)
|
|
316
|
+
- pa-load-more--end (end aligned)
|
|
317
317
|
- pa-load-more__button, __spinner, __text, __count
|
|
318
318
|
- pa-load-more__button--loading (loading state)
|
|
319
319
|
-->
|
package/snippets/tabs.html
CHANGED
|
@@ -454,7 +454,7 @@
|
|
|
454
454
|
|
|
455
455
|
<!-- Scrollable Tabs - Underline Style -->
|
|
456
456
|
<div class="pa-tabs pa-tabs--scrollable" data-tabs-scroll>
|
|
457
|
-
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--
|
|
457
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--start" onclick="scrollTabs(this, 'left')">
|
|
458
458
|
<i class="fa-solid fa-chevron-left"></i>
|
|
459
459
|
</button>
|
|
460
460
|
<div class="pa-tabs__scroll-container">
|
|
@@ -464,7 +464,7 @@
|
|
|
464
464
|
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
465
465
|
<button class="pa-tabs__item">Settings & Configuration</button>
|
|
466
466
|
</div>
|
|
467
|
-
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--
|
|
467
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--end" onclick="scrollTabs(this, 'right')">
|
|
468
468
|
<i class="fa-solid fa-chevron-right"></i>
|
|
469
469
|
</button>
|
|
470
470
|
</div>
|
|
@@ -480,7 +480,7 @@
|
|
|
480
480
|
|
|
481
481
|
<!-- Scrollable Pills -->
|
|
482
482
|
<div class="pa-tabs pa-tabs--pills pa-tabs--scrollable" data-tabs-scroll>
|
|
483
|
-
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--
|
|
483
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--start" onclick="scrollTabs(this, 'left')">
|
|
484
484
|
<i class="fa-solid fa-chevron-left"></i>
|
|
485
485
|
</button>
|
|
486
486
|
<div class="pa-tabs__scroll-container">
|
|
@@ -488,7 +488,7 @@
|
|
|
488
488
|
<button class="pa-tabs__item">User Management System</button>
|
|
489
489
|
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
490
490
|
</div>
|
|
491
|
-
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--
|
|
491
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--end" onclick="scrollTabs(this, 'right')">
|
|
492
492
|
<i class="fa-solid fa-chevron-right"></i>
|
|
493
493
|
</button>
|
|
494
494
|
</div>
|
|
@@ -790,8 +790,8 @@ function scrollTabs(button, direction) {
|
|
|
790
790
|
|
|
791
791
|
function updateScrollArrows(tabsContainer) {
|
|
792
792
|
const scrollContainer = tabsContainer.querySelector('.pa-tabs__scroll-container');
|
|
793
|
-
const leftBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--
|
|
794
|
-
const rightBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--
|
|
793
|
+
const leftBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--start');
|
|
794
|
+
const rightBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--end');
|
|
795
795
|
|
|
796
796
|
if (!scrollContainer || !leftBtn || !rightBtn) return;
|
|
797
797
|
|
package/snippets/timeline.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<!-- Clean HTML examples for all timeline variants -->
|
|
3
3
|
|
|
4
4
|
<!-- ========================================
|
|
5
|
-
Simple Timeline (
|
|
5
|
+
Simple Timeline (Start-aligned with dots)
|
|
6
6
|
======================================== -->
|
|
7
7
|
|
|
8
8
|
<!-- Basic Simple Timeline -->
|
|
@@ -222,14 +222,14 @@
|
|
|
222
222
|
Alternating Timeline Layout Modifiers (NEW)
|
|
223
223
|
======================================== -->
|
|
224
224
|
|
|
225
|
-
<!--
|
|
226
|
-
<div class="pa-timeline pa-timeline--alternating pa-timeline--
|
|
225
|
+
<!-- Start-aligned timeline (all items on left side) -->
|
|
226
|
+
<div class="pa-timeline pa-timeline--alternating pa-timeline--start">
|
|
227
227
|
<div class="pa-timeline__item">
|
|
228
228
|
<div class="pa-timeline__date">Jan 2024</div>
|
|
229
229
|
<div class="pa-timeline__icon">📝</div>
|
|
230
230
|
<div class="pa-timeline__content">
|
|
231
231
|
<h3>Planning</h3>
|
|
232
|
-
<p>All items aligned to
|
|
232
|
+
<p>All items aligned to start side with timeline line on start.</p>
|
|
233
233
|
</div>
|
|
234
234
|
</div>
|
|
235
235
|
<div class="pa-timeline__item">
|
|
@@ -237,19 +237,19 @@
|
|
|
237
237
|
<div class="pa-timeline__icon">🚀</div>
|
|
238
238
|
<div class="pa-timeline__content">
|
|
239
239
|
<h3>Launch</h3>
|
|
240
|
-
<p>Content blocks stay on
|
|
240
|
+
<p>Content blocks stay on start side.</p>
|
|
241
241
|
</div>
|
|
242
242
|
</div>
|
|
243
243
|
</div>
|
|
244
244
|
|
|
245
|
-
<!--
|
|
246
|
-
<div class="pa-timeline pa-timeline--alternating pa-timeline--
|
|
245
|
+
<!-- End-aligned timeline (all items on right side) -->
|
|
246
|
+
<div class="pa-timeline pa-timeline--alternating pa-timeline--end">
|
|
247
247
|
<div class="pa-timeline__item">
|
|
248
248
|
<div class="pa-timeline__date">Jan 2024</div>
|
|
249
249
|
<div class="pa-timeline__icon">📝</div>
|
|
250
250
|
<div class="pa-timeline__content">
|
|
251
251
|
<h3>Planning</h3>
|
|
252
|
-
<p>All items aligned to
|
|
252
|
+
<p>All items aligned to end side with timeline line on end.</p>
|
|
253
253
|
</div>
|
|
254
254
|
</div>
|
|
255
255
|
<div class="pa-timeline__item">
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
<div class="pa-timeline__icon">🚀</div>
|
|
258
258
|
<div class="pa-timeline__content">
|
|
259
259
|
<h3>Launch</h3>
|
|
260
|
-
<p>Content blocks stay on
|
|
260
|
+
<p>Content blocks stay on end side.</p>
|
|
261
261
|
</div>
|
|
262
262
|
</div>
|
|
263
263
|
</div>
|
|
@@ -282,26 +282,26 @@
|
|
|
282
282
|
</div>
|
|
283
283
|
</div>
|
|
284
284
|
|
|
285
|
-
<!-- Combination:
|
|
286
|
-
<div class="pa-timeline pa-timeline--alternating pa-timeline--
|
|
285
|
+
<!-- Combination: Start-aligned + keep layout on mobile -->
|
|
286
|
+
<div class="pa-timeline pa-timeline--alternating pa-timeline--start pa-timeline--keep-layout">
|
|
287
287
|
<div class="pa-timeline__item">
|
|
288
288
|
<div class="pa-timeline__date">Q1</div>
|
|
289
289
|
<div class="pa-timeline__icon">📊</div>
|
|
290
290
|
<div class="pa-timeline__content">
|
|
291
291
|
<h3>Analysis</h3>
|
|
292
|
-
<p>
|
|
292
|
+
<p>Start-aligned on desktop, stays start on mobile.</p>
|
|
293
293
|
</div>
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
296
296
|
|
|
297
|
-
<!-- Combination:
|
|
298
|
-
<div class="pa-timeline pa-timeline--alternating pa-timeline--
|
|
297
|
+
<!-- Combination: End-aligned + keep layout on mobile -->
|
|
298
|
+
<div class="pa-timeline pa-timeline--alternating pa-timeline--end pa-timeline--keep-layout">
|
|
299
299
|
<div class="pa-timeline__item">
|
|
300
300
|
<div class="pa-timeline__date">Q1</div>
|
|
301
301
|
<div class="pa-timeline__icon">📊</div>
|
|
302
302
|
<div class="pa-timeline__content">
|
|
303
303
|
<h3>Analysis</h3>
|
|
304
|
-
<p>
|
|
304
|
+
<p>End-aligned on desktop, stays end on mobile.</p>
|
|
305
305
|
</div>
|
|
306
306
|
</div>
|
|
307
307
|
</div>
|
|
@@ -311,28 +311,28 @@
|
|
|
311
311
|
======================================== -->
|
|
312
312
|
<!--
|
|
313
313
|
TIMELINE VARIANTS:
|
|
314
|
-
- pa-timeline--simple:
|
|
314
|
+
- pa-timeline--simple: Start-aligned with dots
|
|
315
315
|
- pa-timeline--alternating: Centered zigzag layout
|
|
316
316
|
- pa-timeline--feed: Activity feed with avatars
|
|
317
317
|
|
|
318
318
|
ALTERNATING LAYOUT MODIFIERS (can be combined):
|
|
319
|
-
- pa-timeline--
|
|
320
|
-
- pa-timeline--
|
|
319
|
+
- pa-timeline--start: All items on start side (independent of responsive behavior)
|
|
320
|
+
- pa-timeline--end: All items on end side (independent of responsive behavior)
|
|
321
321
|
- pa-timeline--keep-layout: Prevent mobile collapse, maintain desktop layout at all widths
|
|
322
|
-
- pa-timeline--single-column: Force single-column layout (alias for --
|
|
322
|
+
- pa-timeline--single-column: Force single-column layout (alias for --start)
|
|
323
323
|
|
|
324
324
|
RESPONSIVE BEHAVIOR:
|
|
325
325
|
- Default: Zigzag on desktop (>767px), auto-collapse to single-column on mobile (≤767px)
|
|
326
326
|
- With --keep-layout: Layout maintained at all screen widths
|
|
327
|
-
- With --
|
|
327
|
+
- With --start or --end: Aligned layout on desktop, collapses on mobile (unless --keep-layout added)
|
|
328
328
|
|
|
329
329
|
COMBINATION EXAMPLES:
|
|
330
330
|
- pa-timeline--alternating: Zigzag desktop, single-column mobile (auto-responsive)
|
|
331
|
-
- pa-timeline--alternating pa-timeline--
|
|
332
|
-
- pa-timeline--alternating pa-timeline--
|
|
331
|
+
- pa-timeline--alternating pa-timeline--start: All start desktop, single-column mobile
|
|
332
|
+
- pa-timeline--alternating pa-timeline--end: All end desktop, single-column mobile
|
|
333
333
|
- pa-timeline--alternating pa-timeline--keep-layout: Zigzag stays zigzag on mobile
|
|
334
|
-
- pa-timeline--alternating pa-timeline--
|
|
335
|
-
- pa-timeline--alternating pa-timeline--
|
|
334
|
+
- pa-timeline--alternating pa-timeline--start pa-timeline--keep-layout: Start stays start on mobile
|
|
335
|
+
- pa-timeline--alternating pa-timeline--end pa-timeline--keep-layout: End stays end on mobile
|
|
336
336
|
|
|
337
337
|
ITEM MODIFIERS (simple variant):
|
|
338
338
|
- pa-timeline__item--primary: Primary color marker
|
package/snippets/tooltips.html
CHANGED
|
@@ -319,7 +319,7 @@
|
|
|
319
319
|
</div>
|
|
320
320
|
|
|
321
321
|
<!-- Right Aligned -->
|
|
322
|
-
<div class="pa-popover pa-popover--
|
|
322
|
+
<div class="pa-popover pa-popover--end" data-placement="bottom">
|
|
323
323
|
<button class="pa-popover__trigger">?</button>
|
|
324
324
|
<div class="pa-popover__content">
|
|
325
325
|
<div class="pa-popover__header">
|
|
@@ -429,7 +429,7 @@ SIZES:
|
|
|
429
429
|
|
|
430
430
|
ALIGNMENT:
|
|
431
431
|
- pa-popover--center (centered body text)
|
|
432
|
-
- pa-popover--
|
|
432
|
+
- pa-popover--end (end-aligned body text)
|
|
433
433
|
|
|
434
434
|
COMPONENTS:
|
|
435
435
|
- pa-popover__trigger (button/trigger element)
|
package/snippets/typography.html
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
<!-- Typography Component (.pa-text)
|
|
2
|
-
BEM pattern for paragraph text styling
|
|
3
|
-
================================================== -->
|
|
4
|
-
|
|
5
|
-
<!-- Base Text (default: 14px, primary color) -->
|
|
6
|
-
<p class="pa-text">Default paragraph text with 14px font size and primary color.</p>
|
|
7
|
-
|
|
8
|
-
<!-- Size Modifiers -->
|
|
9
|
-
<p class="pa-text pa-text--xs">Extra small text (10px)</p>
|
|
10
|
-
<p class="pa-text pa-text--sm">Small text (12px)</p>
|
|
11
|
-
<p class="pa-text">Default text (14px)</p>
|
|
12
|
-
<p class="pa-text pa-text--lg">Large text (16px)</p>
|
|
13
|
-
<p class="pa-text pa-text--xl">Extra large text (18px)</p>
|
|
14
|
-
|
|
15
|
-
<!-- Color Modifiers -->
|
|
16
|
-
<p class="pa-text pa-text--primary">Primary color text</p>
|
|
17
|
-
<p class="pa-text pa-text--secondary">Secondary/muted color text</p>
|
|
18
|
-
|
|
19
|
-
<!-- Alignment Modifiers -->
|
|
20
|
-
<p class="pa-text pa-text--
|
|
21
|
-
<p class="pa-text pa-text--center">Center aligned text</p>
|
|
22
|
-
<p class="pa-text pa-text--
|
|
23
|
-
|
|
24
|
-
<!-- Semantic Variants -->
|
|
25
|
-
|
|
26
|
-
<!-- Caption: Small secondary text with bottom margin (for hints/descriptions) -->
|
|
27
|
-
<p class="pa-text pa-text--caption">This is a caption - small, secondary, with margin-bottom</p>
|
|
28
|
-
|
|
29
|
-
<!-- Lead: Larger intro text with relaxed line height -->
|
|
30
|
-
<p class="pa-text pa-text--lead">This is lead text - larger font with relaxed line height for introductory paragraphs.</p>
|
|
31
|
-
|
|
32
|
-
<!-- Combined Modifiers -->
|
|
33
|
-
<p class="pa-text pa-text--sm pa-text--secondary">Small secondary text</p>
|
|
34
|
-
<p class="pa-text pa-text--lg pa-text--center">Large centered text</p>
|
|
35
|
-
<p class="pa-text pa-text--xs pa-text--
|
|
36
|
-
|
|
37
|
-
<!-- With Spacing Utilities -->
|
|
38
|
-
<p class="pa-text pa-text--secondary mt-4">Secondary text with top margin</p>
|
|
39
|
-
<p class="pa-text pa-text--caption mb-6">Caption with larger bottom margin</p>
|
|
40
|
-
|
|
41
|
-
<!-- Practical Examples -->
|
|
42
|
-
|
|
43
|
-
<!-- Demo/hint text above a component -->
|
|
44
|
-
<h4>Badge Wrapping Demo</h4>
|
|
45
|
-
<p class="pa-text pa-text--caption">29 badges in narrow container</p>
|
|
46
|
-
<div class="pa-badge-group"><!-- badges here --></div>
|
|
47
|
-
|
|
48
|
-
<!-- Card header description -->
|
|
49
|
-
<div class="pa-card__header">
|
|
50
|
-
<h3>Feature Title</h3>
|
|
51
|
-
<p class="pa-text pa-text--secondary">Brief description of this feature or section.</p>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<!-- Form helper text -->
|
|
55
|
-
<div class="pa-card__footer">
|
|
56
|
-
<p class="pa-text pa-text--sm pa-text--secondary" style="margin: 0;">
|
|
57
|
-
<strong>Note:</strong> Additional information about the form layout.
|
|
58
|
-
</p>
|
|
59
|
-
</div>
|
|
60
|
-
|
|
61
|
-
<!-- Centered tab content -->
|
|
62
|
-
<div class="pa-tabs__panel">
|
|
63
|
-
<p class="pa-text pa-text--center">Feature highlights and capabilities.</p>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
|
-
<!-- Toast/notification helper -->
|
|
67
|
-
<p class="pa-text pa-text--secondary mt-4">
|
|
68
|
-
Progress bar shows time remaining before auto-dismiss (5 seconds)
|
|
69
|
-
</p>
|
|
70
|
-
|
|
71
|
-
<!--
|
|
72
|
-
Available Classes Reference:
|
|
73
|
-
============================
|
|
74
|
-
|
|
75
|
-
Base:
|
|
76
|
-
.pa-text Default (14px, primary color)
|
|
77
|
-
|
|
78
|
-
Sizes:
|
|
79
|
-
.pa-text--xs 10px (extra small)
|
|
80
|
-
.pa-text--sm 12px (small)
|
|
81
|
-
.pa-text--lg 16px (large)
|
|
82
|
-
.pa-text--xl 18px (extra large)
|
|
83
|
-
|
|
84
|
-
Colors:
|
|
85
|
-
.pa-text--primary Primary text color
|
|
86
|
-
.pa-text--secondary Secondary/muted text color
|
|
87
|
-
|
|
88
|
-
Alignment:
|
|
89
|
-
.pa-text--
|
|
90
|
-
.pa-text--center Center align
|
|
91
|
-
.pa-text--
|
|
92
|
-
|
|
93
|
-
Semantic:
|
|
94
|
-
.pa-text--caption Small + secondary + margin-bottom (for hints)
|
|
95
|
-
.pa-text--lead Large + relaxed line-height (for intros)
|
|
96
|
-
|
|
97
|
-
Combine with spacing utilities:
|
|
98
|
-
mt-1 through mt-20 Margin top
|
|
99
|
-
mb-1 through mb-20 Margin bottom
|
|
100
|
-
(see utilities.scss for full spacing scale)
|
|
101
|
-
-->
|
|
1
|
+
<!-- Typography Component (.pa-text)
|
|
2
|
+
BEM pattern for paragraph text styling
|
|
3
|
+
================================================== -->
|
|
4
|
+
|
|
5
|
+
<!-- Base Text (default: 14px, primary color) -->
|
|
6
|
+
<p class="pa-text">Default paragraph text with 14px font size and primary color.</p>
|
|
7
|
+
|
|
8
|
+
<!-- Size Modifiers -->
|
|
9
|
+
<p class="pa-text pa-text--xs">Extra small text (10px)</p>
|
|
10
|
+
<p class="pa-text pa-text--sm">Small text (12px)</p>
|
|
11
|
+
<p class="pa-text">Default text (14px)</p>
|
|
12
|
+
<p class="pa-text pa-text--lg">Large text (16px)</p>
|
|
13
|
+
<p class="pa-text pa-text--xl">Extra large text (18px)</p>
|
|
14
|
+
|
|
15
|
+
<!-- Color Modifiers -->
|
|
16
|
+
<p class="pa-text pa-text--primary">Primary color text</p>
|
|
17
|
+
<p class="pa-text pa-text--secondary">Secondary/muted color text</p>
|
|
18
|
+
|
|
19
|
+
<!-- Alignment Modifiers -->
|
|
20
|
+
<p class="pa-text pa-text--start">Start aligned text</p>
|
|
21
|
+
<p class="pa-text pa-text--center">Center aligned text</p>
|
|
22
|
+
<p class="pa-text pa-text--end">End aligned text</p>
|
|
23
|
+
|
|
24
|
+
<!-- Semantic Variants -->
|
|
25
|
+
|
|
26
|
+
<!-- Caption: Small secondary text with bottom margin (for hints/descriptions) -->
|
|
27
|
+
<p class="pa-text pa-text--caption">This is a caption - small, secondary, with margin-bottom</p>
|
|
28
|
+
|
|
29
|
+
<!-- Lead: Larger intro text with relaxed line height -->
|
|
30
|
+
<p class="pa-text pa-text--lead">This is lead text - larger font with relaxed line height for introductory paragraphs.</p>
|
|
31
|
+
|
|
32
|
+
<!-- Combined Modifiers -->
|
|
33
|
+
<p class="pa-text pa-text--sm pa-text--secondary">Small secondary text</p>
|
|
34
|
+
<p class="pa-text pa-text--lg pa-text--center">Large centered text</p>
|
|
35
|
+
<p class="pa-text pa-text--xs pa-text--end pa-text--secondary">Extra small, end-aligned, secondary</p>
|
|
36
|
+
|
|
37
|
+
<!-- With Spacing Utilities -->
|
|
38
|
+
<p class="pa-text pa-text--secondary mt-4">Secondary text with top margin</p>
|
|
39
|
+
<p class="pa-text pa-text--caption mb-6">Caption with larger bottom margin</p>
|
|
40
|
+
|
|
41
|
+
<!-- Practical Examples -->
|
|
42
|
+
|
|
43
|
+
<!-- Demo/hint text above a component -->
|
|
44
|
+
<h4>Badge Wrapping Demo</h4>
|
|
45
|
+
<p class="pa-text pa-text--caption">29 badges in narrow container</p>
|
|
46
|
+
<div class="pa-badge-group"><!-- badges here --></div>
|
|
47
|
+
|
|
48
|
+
<!-- Card header description -->
|
|
49
|
+
<div class="pa-card__header">
|
|
50
|
+
<h3>Feature Title</h3>
|
|
51
|
+
<p class="pa-text pa-text--secondary">Brief description of this feature or section.</p>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<!-- Form helper text -->
|
|
55
|
+
<div class="pa-card__footer">
|
|
56
|
+
<p class="pa-text pa-text--sm pa-text--secondary" style="margin: 0;">
|
|
57
|
+
<strong>Note:</strong> Additional information about the form layout.
|
|
58
|
+
</p>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<!-- Centered tab content -->
|
|
62
|
+
<div class="pa-tabs__panel">
|
|
63
|
+
<p class="pa-text pa-text--center">Feature highlights and capabilities.</p>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<!-- Toast/notification helper -->
|
|
67
|
+
<p class="pa-text pa-text--secondary mt-4">
|
|
68
|
+
Progress bar shows time remaining before auto-dismiss (5 seconds)
|
|
69
|
+
</p>
|
|
70
|
+
|
|
71
|
+
<!--
|
|
72
|
+
Available Classes Reference:
|
|
73
|
+
============================
|
|
74
|
+
|
|
75
|
+
Base:
|
|
76
|
+
.pa-text Default (14px, primary color)
|
|
77
|
+
|
|
78
|
+
Sizes:
|
|
79
|
+
.pa-text--xs 10px (extra small)
|
|
80
|
+
.pa-text--sm 12px (small)
|
|
81
|
+
.pa-text--lg 16px (large)
|
|
82
|
+
.pa-text--xl 18px (extra large)
|
|
83
|
+
|
|
84
|
+
Colors:
|
|
85
|
+
.pa-text--primary Primary text color
|
|
86
|
+
.pa-text--secondary Secondary/muted text color
|
|
87
|
+
|
|
88
|
+
Alignment:
|
|
89
|
+
.pa-text--start Start align
|
|
90
|
+
.pa-text--center Center align
|
|
91
|
+
.pa-text--end End align
|
|
92
|
+
|
|
93
|
+
Semantic:
|
|
94
|
+
.pa-text--caption Small + secondary + margin-bottom (for hints)
|
|
95
|
+
.pa-text--lead Large + relaxed line-height (for intros)
|
|
96
|
+
|
|
97
|
+
Combine with spacing utilities:
|
|
98
|
+
mt-1 through mt-20 Margin top
|
|
99
|
+
mb-1 through mb-20 Margin bottom
|
|
100
|
+
(see utilities.scss for full spacing scale)
|
|
101
|
+
-->
|
package/snippets/utilities.html
CHANGED
|
@@ -192,9 +192,9 @@ localStorage.setItem('compact-mode', 'true');
|
|
|
192
192
|
TEXT UTILITIES
|
|
193
193
|
================================ -->
|
|
194
194
|
|
|
195
|
-
<div class="text-
|
|
195
|
+
<div class="text-start">Start aligned text</div>
|
|
196
196
|
<div class="text-center">Center aligned text</div>
|
|
197
|
-
<div class="text-
|
|
197
|
+
<div class="text-end">End aligned text</div>
|
|
198
198
|
<div class="text-nowrap">Text that doesn't wrap</div>
|
|
199
199
|
<div class="text-truncate" style="width: 200px;">This long text will be truncated with ellipsis...</div>
|
|
200
200
|
|
|
@@ -555,7 +555,7 @@ Align: align-items-start/end/center/baseline/stretch
|
|
|
555
555
|
Grow/Shrink: flex-fill, flex-grow-0/1, flex-shrink-0/1
|
|
556
556
|
|
|
557
557
|
TEXT:
|
|
558
|
-
- text-
|
|
558
|
+
- text-start, text-center, text-end
|
|
559
559
|
- text-nowrap, text-truncate
|
|
560
560
|
|
|
561
561
|
WIDTH/HEIGHT (percentage-based):
|
|
@@ -330,7 +330,7 @@
|
|
|
330
330
|
// Button always keeps its horizontal padding (0.75rem on both sides)
|
|
331
331
|
// These classes control content position and remove icon padding on aligned sides
|
|
332
332
|
|
|
333
|
-
&--align-
|
|
333
|
+
&--align-start {
|
|
334
334
|
justify-content: flex-start;
|
|
335
335
|
|
|
336
336
|
.pa-btn__icon {
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
&--align-
|
|
341
|
+
&--align-end {
|
|
342
342
|
justify-content: flex-end;
|
|
343
343
|
|
|
344
344
|
.pa-btn__icon {
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
display: flex;
|
|
30
30
|
justify-content: space-between;
|
|
31
31
|
align-items: center;
|
|
32
|
+
gap: $spacing-base; // Gap between header elements (title, description, actions)
|
|
32
33
|
min-width: 0; // Enable text truncation
|
|
33
34
|
|
|
34
35
|
// Reset margins/paddings for all native elements
|
|
@@ -61,10 +62,50 @@
|
|
|
61
62
|
font-size: $font-size-base;
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
// Direct heading children - don't shrink (for three-part layout)
|
|
66
|
+
> h1,
|
|
67
|
+
> h2,
|
|
68
|
+
> h3,
|
|
69
|
+
> h4,
|
|
70
|
+
> h5,
|
|
71
|
+
> h6 {
|
|
72
|
+
flex-shrink: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Description paragraphs - flexible middle, truncate with ellipsis
|
|
76
|
+
> p {
|
|
77
|
+
flex: 1;
|
|
78
|
+
min-width: 0;
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
text-overflow: ellipsis;
|
|
81
|
+
white-space: nowrap;
|
|
82
|
+
color: var(--pa-text-color-2);
|
|
83
|
+
font-size: $font-size-sm;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Actions container - fixed, doesn't shrink
|
|
87
|
+
.pa-card__actions,
|
|
88
|
+
.pa-btn-group {
|
|
89
|
+
flex-shrink: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
64
92
|
// Buttons in card headers - negative margin to prevent header height growth
|
|
65
93
|
.pa-btn {
|
|
66
94
|
margin-top: -0.25rem;
|
|
67
95
|
margin-bottom: -0.25rem;
|
|
96
|
+
flex-shrink: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Wrap modifier - allow description to wrap (for mobile or long descriptions)
|
|
100
|
+
&--wrap {
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
|
|
103
|
+
> p {
|
|
104
|
+
white-space: normal;
|
|
105
|
+
flex-basis: 100%;
|
|
106
|
+
order: 1;
|
|
107
|
+
margin-top: $spacing-xs;
|
|
108
|
+
}
|
|
68
109
|
}
|
|
69
110
|
}
|
|
70
111
|
|
|
@@ -66,7 +66,12 @@
|
|
|
66
66
|
top: 0;
|
|
67
67
|
inset-inline-end: 0; // RTL: flips to left
|
|
68
68
|
height: 100%;
|
|
69
|
-
z-index:
|
|
69
|
+
z-index: $z-index-detail-panel-card + 1; // 3501 - Below header (4000)
|
|
70
|
+
|
|
71
|
+
// In card overlay mode, constrain panel width to container
|
|
72
|
+
&--open {
|
|
73
|
+
max-width: 100%; // Don't exceed container width
|
|
74
|
+
}
|
|
70
75
|
}
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -75,7 +80,7 @@
|
|
|
75
80
|
position: absolute;
|
|
76
81
|
inset: 0; // Covers full container
|
|
77
82
|
background-color: var(--pa-detail-panel-overlay-bg);
|
|
78
|
-
z-index:
|
|
83
|
+
z-index: $z-index-detail-panel-card; // 3500 - Below panel and header
|
|
79
84
|
opacity: 0;
|
|
80
85
|
visibility: hidden;
|
|
81
86
|
cursor: pointer;
|