@keenmate/pure-admin-core 2.3.6 → 2.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 +23 -29
- package/dist/css/main.css +68 -148
- package/package.json +1 -5
- package/snippets/AUDIT.md +94 -0
- package/snippets/alerts.html +264 -89
- package/snippets/badges.html +193 -61
- package/snippets/buttons.html +178 -0
- package/snippets/callouts.html +210 -129
- package/snippets/cards.html +383 -200
- package/snippets/checkbox-lists.html +199 -65
- package/snippets/code.html +55 -11
- package/snippets/command-palette.html +401 -111
- package/snippets/comparison.html +144 -93
- package/snippets/customization.html +311 -104
- package/snippets/data-display.html +584 -0
- package/snippets/detail-panel.html +470 -138
- package/snippets/filter-card.html +246 -0
- package/snippets/forms.html +408 -308
- package/snippets/grid.html +253 -141
- package/snippets/layout.html +379 -480
- package/snippets/lists.html +144 -47
- package/snippets/loaders.html +64 -39
- package/snippets/manifest.json +330 -280
- package/snippets/modal-dialogs.html +137 -64
- package/snippets/modals.html +221 -151
- package/snippets/notifications.html +285 -0
- package/snippets/popconfirm.html +213 -19
- package/snippets/profile.html +290 -330
- package/snippets/statistics.html +247 -0
- package/snippets/tables.html +359 -150
- package/snippets/tabs.html +129 -45
- package/snippets/timeline.html +123 -56
- package/snippets/toasts.html +179 -31
- package/snippets/tooltips.html +199 -81
- package/snippets/typography.html +183 -58
- package/snippets/utilities.html +511 -415
- package/snippets/virtual-scroll.html +201 -75
- package/snippets/web-daterangepicker.html +369 -189
- package/snippets/web-multiselect.html +360 -124
- package/src/scss/core-components/_alerts.scss +51 -12
- package/src/scss/core-components/_pagers.scss +1 -1
- package/src/scss/core-components/_popconfirm.scss +35 -13
- package/src/scss/core-components/_profile.scss +18 -8
- package/src/scss/core-components/_statistics.scss +12 -12
- package/src/scss/core-components/_tables.scss +2 -134
- package/src/scss/variables/_components.scss +17 -2
- package/scripts/download-themes.js +0 -351
package/snippets/tabs.html
CHANGED
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
<span>Notifications</span>
|
|
201
201
|
</button>
|
|
202
202
|
</div>
|
|
203
|
-
<div class="pa-tabs__content
|
|
203
|
+
<div class="pa-tabs__content flex-grow-1">
|
|
204
204
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="vert-1">
|
|
205
205
|
Account settings
|
|
206
206
|
</div>
|
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
<i class="fa-solid fa-gear"></i>
|
|
227
227
|
</button>
|
|
228
228
|
</div>
|
|
229
|
-
<div class="pa-tabs__content
|
|
229
|
+
<div class="pa-tabs__content flex-grow-1">
|
|
230
230
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="vert-c-1">
|
|
231
231
|
Dashboard content
|
|
232
232
|
</div>
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
<i class="fa-solid fa-envelope"></i>
|
|
583
583
|
</button>
|
|
584
584
|
</div>
|
|
585
|
-
<div class="pa-tabs__content
|
|
585
|
+
<div class="pa-tabs__content flex-grow-1">
|
|
586
586
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="vicon1">
|
|
587
587
|
Home content
|
|
588
588
|
</div>
|
|
@@ -680,20 +680,20 @@
|
|
|
680
680
|
<!-- Vertical Standalone Tabs - Sidebar Style Navigation (use vertical layout wrapper) -->
|
|
681
681
|
<div class="pa-tabs__vertical-layout">
|
|
682
682
|
<div class="pa-tabs pa-tabs--vertical">
|
|
683
|
-
<button class="pa-tabs__item
|
|
683
|
+
<button class="pa-tabs__item minhr-3 pa-tabs__item--active">
|
|
684
684
|
<i class="fa-solid fa-house"></i>
|
|
685
685
|
<span>Dashboard</span>
|
|
686
686
|
</button>
|
|
687
|
-
<button class="pa-tabs__item
|
|
687
|
+
<button class="pa-tabs__item minhr-3">
|
|
688
688
|
<i class="fa-solid fa-chart-bar"></i>
|
|
689
689
|
<span>Analytics</span>
|
|
690
690
|
</button>
|
|
691
|
-
<button class="pa-tabs__item
|
|
691
|
+
<button class="pa-tabs__item minhr-3">
|
|
692
692
|
<i class="fa-solid fa-users"></i>
|
|
693
693
|
<span>Users</span>
|
|
694
694
|
</button>
|
|
695
695
|
</div>
|
|
696
|
-
<div class="pa-tabs__content
|
|
696
|
+
<div class="pa-tabs__content flex-grow-1">
|
|
697
697
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="sav1">
|
|
698
698
|
<div class="pa-card">
|
|
699
699
|
<div class="pa-card__header">
|
|
@@ -743,20 +743,20 @@
|
|
|
743
743
|
<!-- Bordered Vertical Tabs - Card-Like Wrapper -->
|
|
744
744
|
<div class="pa-tabs__vertical-layout pa-tabs__vertical-layout--bordered">
|
|
745
745
|
<div class="pa-tabs pa-tabs--vertical">
|
|
746
|
-
<button class="pa-tabs__item
|
|
746
|
+
<button class="pa-tabs__item minhr-3 pa-tabs__item--active">
|
|
747
747
|
<i class="fa-solid fa-gauge"></i>
|
|
748
748
|
<span>Overview</span>
|
|
749
749
|
</button>
|
|
750
|
-
<button class="pa-tabs__item
|
|
750
|
+
<button class="pa-tabs__item minhr-3">
|
|
751
751
|
<i class="fa-solid fa-chart-pie"></i>
|
|
752
752
|
<span>Reports</span>
|
|
753
753
|
</button>
|
|
754
|
-
<button class="pa-tabs__item
|
|
754
|
+
<button class="pa-tabs__item minhr-3">
|
|
755
755
|
<i class="fa-solid fa-gear"></i>
|
|
756
756
|
<span>Settings</span>
|
|
757
757
|
</button>
|
|
758
758
|
</div>
|
|
759
|
-
<div class="pa-tabs__content
|
|
759
|
+
<div class="pa-tabs__content flex-grow-1">
|
|
760
760
|
<div class="pa-tabs__panel pa-tabs__panel--active" id="bv1">
|
|
761
761
|
Overview - bordered vertical tabs with divider
|
|
762
762
|
</div>
|
|
@@ -770,9 +770,72 @@
|
|
|
770
770
|
</div>
|
|
771
771
|
|
|
772
772
|
|
|
773
|
+
<!-- ================================
|
|
774
|
+
CARD-HEADER TABS (pa-tabs__container--card)
|
|
775
|
+
Makes the tab row look and sit like a pa-card__header — same
|
|
776
|
+
height, same padding, same background. Useful when the tabs ARE
|
|
777
|
+
the header of a card-shaped section, not just navigation above it.
|
|
778
|
+
|
|
779
|
+
Built-in overflow behaviour: when the tab row can't fit all tabs,
|
|
780
|
+
a .pa-tabs__overflow menu on the inline-end side holds the
|
|
781
|
+
overflowing ones. The toggle carries --has-active when the hidden
|
|
782
|
+
tab is the active one (adds an accent underline to the toggle).
|
|
783
|
+
================================ -->
|
|
784
|
+
|
|
785
|
+
<div class="pa-tabs__container pa-tabs__container--card">
|
|
786
|
+
<div class="pa-tabs">
|
|
787
|
+
<button class="pa-tabs__item pa-tabs__item--active">Overview</button>
|
|
788
|
+
<button class="pa-tabs__item">Analytics</button>
|
|
789
|
+
<button class="pa-tabs__item">Logs</button>
|
|
790
|
+
|
|
791
|
+
<!-- Overflow affordance — toggle + dropdown menu.
|
|
792
|
+
Flipped open/closed by adding pa-tabs__overflow-menu--open on
|
|
793
|
+
the menu. Add pa-tabs__overflow-toggle--has-active on the
|
|
794
|
+
toggle when the hidden tab currently has --active. -->
|
|
795
|
+
<div class="pa-tabs__overflow">
|
|
796
|
+
<button class="pa-tabs__overflow-toggle" onclick="toggleTabOverflow(this)" aria-label="More tabs">
|
|
797
|
+
<i class="fa-solid fa-ellipsis"></i>
|
|
798
|
+
</button>
|
|
799
|
+
<div class="pa-tabs__overflow-menu">
|
|
800
|
+
<button class="pa-tabs__item">Archived</button>
|
|
801
|
+
<button class="pa-tabs__item">Deleted</button>
|
|
802
|
+
<button class="pa-tabs__item">Audit Trail</button>
|
|
803
|
+
</div>
|
|
804
|
+
</div>
|
|
805
|
+
</div>
|
|
806
|
+
|
|
807
|
+
<div class="pa-tabs__content">
|
|
808
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="cardtabs-1">
|
|
809
|
+
Overview content — tab row renders at $card-header-min-height with
|
|
810
|
+
$card-header-padding, matching adjacent pa-card headers cleanly.
|
|
811
|
+
</div>
|
|
812
|
+
<div class="pa-tabs__panel" id="cardtabs-2">Analytics content</div>
|
|
813
|
+
<div class="pa-tabs__panel" id="cardtabs-3">Logs content</div>
|
|
814
|
+
</div>
|
|
815
|
+
</div>
|
|
816
|
+
|
|
817
|
+
|
|
773
818
|
<!-- JAVASCRIPT FOR TAB SWITCHING -->
|
|
774
819
|
|
|
775
820
|
<script>
|
|
821
|
+
// Toggle the overflow menu on card-header tabs.
|
|
822
|
+
function toggleTabOverflow(btn) {
|
|
823
|
+
const menu = btn.nextElementSibling;
|
|
824
|
+
if (menu && menu.classList.contains('pa-tabs__overflow-menu')) {
|
|
825
|
+
menu.classList.toggle('pa-tabs__overflow-menu--open');
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
// Close the overflow menu when clicking outside
|
|
830
|
+
document.addEventListener('click', (e) => {
|
|
831
|
+
document.querySelectorAll('.pa-tabs__overflow-menu--open').forEach(menu => {
|
|
832
|
+
const overflow = menu.closest('.pa-tabs__overflow');
|
|
833
|
+
if (overflow && !overflow.contains(e.target)) {
|
|
834
|
+
menu.classList.remove('pa-tabs__overflow-menu--open');
|
|
835
|
+
}
|
|
836
|
+
});
|
|
837
|
+
});
|
|
838
|
+
|
|
776
839
|
// Scrollable tabs functionality
|
|
777
840
|
function scrollTabs(button, direction) {
|
|
778
841
|
const tabsContainer = button.closest('.pa-tabs--scrollable');
|
|
@@ -907,46 +970,67 @@ STANDALONE TABS:
|
|
|
907
970
|
- pa-tabs__panel--active (active panel)
|
|
908
971
|
|
|
909
972
|
STYLES:
|
|
910
|
-
- pa-tabs--pills
|
|
911
|
-
- pa-tabs--boxed
|
|
912
|
-
- pa-tabs--vertical
|
|
973
|
+
- pa-tabs--pills (pill-style tabs with rounded backgrounds)
|
|
974
|
+
- pa-tabs--boxed (boxed tabs with container border)
|
|
975
|
+
- pa-tabs--vertical (vertical tab orientation; use inside
|
|
976
|
+
.pa-tabs__vertical-layout for proper spacing)
|
|
977
|
+
- pa-tabs--border-top (active indicator on TOP border instead of bottom;
|
|
978
|
+
border-bottom is removed on the container)
|
|
913
979
|
|
|
914
980
|
ALIGNMENT:
|
|
915
|
-
- pa-tabs--centered
|
|
916
|
-
- pa-tabs--full
|
|
981
|
+
- pa-tabs--centered (center-align tabs)
|
|
982
|
+
- pa-tabs--full (full-width tabs, equal distribution)
|
|
917
983
|
|
|
918
984
|
OVERFLOW HANDLING:
|
|
919
|
-
- (default)
|
|
920
|
-
- pa-tabs--nowrap
|
|
921
|
-
- pa-tabs--scrollable
|
|
922
|
-
|
|
923
|
-
-
|
|
985
|
+
- (default) (tabs wrap to multiple lines when constrained)
|
|
986
|
+
- pa-tabs--nowrap (prevent wrapping, tabs overflow in single line)
|
|
987
|
+
- pa-tabs--scrollable (horizontal scroll with arrow navigation;
|
|
988
|
+
requires .pa-tabs__scroll-container wrap and
|
|
989
|
+
.pa-tabs__scroll-btn--start / --end arrows)
|
|
990
|
+
- pa-tabs--collapse (show only icons, active tab shows full title —
|
|
991
|
+
all tabs must have an <i> AND a <span>, since
|
|
992
|
+
the SCSS only hides the span)
|
|
924
993
|
|
|
925
994
|
SIZES:
|
|
926
|
-
- pa-tabs--sm
|
|
927
|
-
- (no class)
|
|
928
|
-
- pa-tabs--lg
|
|
929
|
-
|
|
930
|
-
FIXED WIDTH/HEIGHT (
|
|
931
|
-
- minwr-
|
|
932
|
-
- minhr-
|
|
933
|
-
- Examples: minwr-6 (6rem), minwr-8 (8rem), minhr-3 (3rem)
|
|
934
|
-
-
|
|
935
|
-
|
|
936
|
-
LAYOUT WRAPPERS:
|
|
937
|
-
- pa-tabs__container
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
-
|
|
942
|
-
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
-
|
|
949
|
-
|
|
995
|
+
- pa-tabs--sm (small tabs with compact padding)
|
|
996
|
+
- (no class) (default size)
|
|
997
|
+
- pa-tabs--lg (large tabs with generous padding)
|
|
998
|
+
|
|
999
|
+
FIXED WIDTH/HEIGHT (utility classes from utilities.scss):
|
|
1000
|
+
- minwr-{n} / wr-{n} / maxwr-{n} (rem width; n = 1..10, 15, 20, 25, 30, 35, 40, 45, 50)
|
|
1001
|
+
- minhr-{n} / hr-{n} / maxhr-{n} (rem height; same set)
|
|
1002
|
+
- Examples: .minwr-6 (6rem), .minwr-8 (8rem), .minhr-3 (3rem)
|
|
1003
|
+
- For icon-only vertical tabs, .minwr-3 .minhr-3 produces a 30×30 px square.
|
|
1004
|
+
|
|
1005
|
+
LAYOUT WRAPPERS (for pairing tabs + content):
|
|
1006
|
+
- pa-tabs__container Horizontal wrapper.
|
|
1007
|
+
- pa-tabs__container--bordered Card-like border around the
|
|
1008
|
+
whole tabs system; adds a
|
|
1009
|
+
divider between nav and content.
|
|
1010
|
+
- pa-tabs__container--card Tab row renders as a
|
|
1011
|
+
pa-card__header (same height,
|
|
1012
|
+
padding, bg); supports an
|
|
1013
|
+
overflow menu on the inline-end.
|
|
1014
|
+
Content below uses card body
|
|
1015
|
+
padding. Good when tabs ARE the
|
|
1016
|
+
section header.
|
|
1017
|
+
- pa-tabs__vertical-layout Vertical wrapper (flex row:
|
|
1018
|
+
tabs on start, content on end).
|
|
1019
|
+
Content panels get padding-top: 0
|
|
1020
|
+
so they align horizontally with
|
|
1021
|
+
the tab row.
|
|
1022
|
+
- pa-tabs__vertical-layout--bordered Card-like border with a divider
|
|
1023
|
+
between vertical tabs and content.
|
|
1024
|
+
|
|
1025
|
+
OVERFLOW MENU (used inside pa-tabs__container--card):
|
|
1026
|
+
- pa-tabs__overflow Wrapper; sits at the inline-end
|
|
1027
|
+
of the tab row.
|
|
1028
|
+
- pa-tabs__overflow-toggle Ellipsis / chevron button.
|
|
1029
|
+
- pa-tabs__overflow-toggle--has-active Adds an accent underline so the
|
|
1030
|
+
user knows the active tab is
|
|
1031
|
+
currently hidden inside the menu.
|
|
1032
|
+
- pa-tabs__overflow-menu Dropdown <div> hosting tab items.
|
|
1033
|
+
- pa-tabs__overflow-menu--open JS-flipped visibility.
|
|
950
1034
|
|
|
951
1035
|
USAGE NOTES:
|
|
952
1036
|
- Use pa-card__tabs for tabs integrated into cards
|
package/snippets/timeline.html
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
1
|
+
<!-- ================================
|
|
2
|
+
TIMELINE SNIPPETS
|
|
3
|
+
Pure Admin Visual Framework
|
|
4
|
+
|
|
5
|
+
Three visual variants, pick one per timeline container:
|
|
6
|
+
--simple vertical line + dots on one side (start)
|
|
7
|
+
--alternating centered line, items zigzag left/right
|
|
8
|
+
--feed activity-feed layout (avatar + text + time)
|
|
9
|
+
|
|
10
|
+
The base .pa-timeline class has zero visual styling on its own;
|
|
11
|
+
each variant adds its own rules. Items can be <li> inside a <ul>
|
|
12
|
+
(semantic) or <div> inside a <div> (non-semantic) — the SCSS uses
|
|
13
|
+
:nth-child so either tag works. Use <ul>/<li> when the timeline
|
|
14
|
+
is a genuine list of events; otherwise <div> is fine.
|
|
15
|
+
================================ -->
|
|
3
16
|
|
|
4
17
|
<!-- ========================================
|
|
5
18
|
Simple Timeline (Start-aligned with dots)
|
|
@@ -306,59 +319,113 @@
|
|
|
306
319
|
</div>
|
|
307
320
|
</div>
|
|
308
321
|
|
|
309
|
-
<!--
|
|
310
|
-
|
|
311
|
-
|
|
322
|
+
<!-- ================================
|
|
323
|
+
COMPONENT REFERENCE
|
|
324
|
+
================================ -->
|
|
325
|
+
|
|
312
326
|
<!--
|
|
313
|
-
|
|
314
|
-
- pa-timeline
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
-
|
|
320
|
-
|
|
321
|
-
- pa-timeline--
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
- pa-
|
|
331
|
-
|
|
332
|
-
- pa-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
- pa-
|
|
339
|
-
|
|
340
|
-
- pa-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
- pa-
|
|
355
|
-
|
|
356
|
-
- pa-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
- pa-
|
|
361
|
-
- pa-
|
|
362
|
-
|
|
363
|
-
|
|
327
|
+
BASE:
|
|
328
|
+
- .pa-timeline Base container; no visual styling on its
|
|
329
|
+
own. Pick ONE variant below.
|
|
330
|
+
|
|
331
|
+
VARIANTS (mutually exclusive):
|
|
332
|
+
- .pa-timeline--simple Start-aligned: vertical line on the
|
|
333
|
+
inline-start edge with dot markers.
|
|
334
|
+
Uses logical properties — mirrors in RTL.
|
|
335
|
+
- .pa-timeline--alternating Centered line; items zigzag to the left
|
|
336
|
+
and right side via :nth-child(odd/even).
|
|
337
|
+
Max-width capped.
|
|
338
|
+
(NOTE: uses physical left/right — does
|
|
339
|
+
NOT mirror in RTL.)
|
|
340
|
+
- .pa-timeline--feed Flex-row per item: time / avatar / body.
|
|
341
|
+
Optimised for activity feeds & comments.
|
|
342
|
+
|
|
343
|
+
SIMPLE ITEM MODIFIERS (dot colour):
|
|
344
|
+
- .pa-timeline__item--primary / --success / --warning / --danger
|
|
345
|
+
/ --info / --secondary
|
|
346
|
+
- .pa-timeline__item--filled Solid fill instead of ring. Composes
|
|
347
|
+
with a colour modifier to match.
|
|
348
|
+
|
|
349
|
+
ALTERNATING LAYOUT MODIFIERS:
|
|
350
|
+
- .pa-timeline--start All items on start side; line on start.
|
|
351
|
+
- .pa-timeline--end All items on end side; line on end.
|
|
352
|
+
- .pa-timeline--keep-layout Don't auto-collapse to single column on
|
|
353
|
+
mobile (<= 767px). Desktop zigzag stays.
|
|
354
|
+
- .pa-timeline--single-column Force single-column layout regardless of
|
|
355
|
+
screen width. Visually similar to --start
|
|
356
|
+
but uses a different specificity path
|
|
357
|
+
(does NOT override left with !important,
|
|
358
|
+
so odd/even classes on items still apply).
|
|
359
|
+
|
|
360
|
+
Responsive behaviour (--alternating only):
|
|
361
|
+
default zigzag desktop → single column mobile (≤ 767px)
|
|
362
|
+
+ --keep-layout zigzag stays at all widths
|
|
363
|
+
+ --start start-aligned desktop → single column mobile
|
|
364
|
+
+ --end end-aligned desktop → single column mobile
|
|
365
|
+
(combine --start/--end with --keep-layout to skip the mobile collapse.)
|
|
366
|
+
|
|
367
|
+
SIMPLE / FEED SUB-ELEMENTS:
|
|
368
|
+
- .pa-timeline__time Time label (block in --simple; fixed-
|
|
369
|
+
width column in --feed).
|
|
370
|
+
- .pa-timeline__content Main body text.
|
|
371
|
+
|
|
372
|
+
ALTERNATING SUB-ELEMENTS:
|
|
373
|
+
- .pa-timeline__date Accent-coloured date label (uppercase).
|
|
374
|
+
- .pa-timeline__icon Circular icon badge beside the dot.
|
|
375
|
+
- .pa-timeline__content Content box (auto-styled h3 + p).
|
|
376
|
+
|
|
377
|
+
FEED SUB-ELEMENTS:
|
|
378
|
+
- .pa-timeline__avatar Circular avatar wrapper (inline-block,
|
|
379
|
+
margin-inline-end). Put an <img>
|
|
380
|
+
inside.
|
|
381
|
+
- .pa-timeline__comment Bordered comment bubble below the
|
|
382
|
+
meta line.
|
|
383
|
+
- .pa-timeline__item--date-header Section divider (flex row + date
|
|
384
|
+
icon/label, no dot on the line).
|
|
385
|
+
- .pa-timeline__date-icon Emoji / FA calendar icon.
|
|
386
|
+
- .pa-timeline__date-label Uppercase date text.
|
|
387
|
+
|
|
388
|
+
UTILITIES (typically with --simple for interactive log views):
|
|
389
|
+
- .pa-timeline__scroll-container max-height + overflow-y: auto
|
|
390
|
+
- .pa-timeline__loader Centred loader wrapper
|
|
391
|
+
- .pa-timeline__loader-text Muted caption under the spinner
|
|
392
|
+
- .pa-timeline__load-more-wrapper Centred button wrapper
|
|
393
|
+
|
|
394
|
+
MARKUP NOTE:
|
|
395
|
+
The SCSS uses :nth-child selectors, so item order comes from DOM order
|
|
396
|
+
regardless of tag. Use <ul>/<li> for semantic lists (preferred for
|
|
397
|
+
event logs / history); <div>/<div> works the same if you don't want
|
|
398
|
+
list semantics.
|
|
399
|
+
|
|
400
|
+
STRUCTURE PATTERNS:
|
|
401
|
+
|
|
402
|
+
Simple log (start-aligned, coloured dots):
|
|
403
|
+
<ul class="pa-timeline pa-timeline--simple">
|
|
404
|
+
<li class="pa-timeline__item pa-timeline__item--success">
|
|
405
|
+
<div class="pa-timeline__time">14:32</div>
|
|
406
|
+
<div class="pa-timeline__content">Deploy succeeded</div>
|
|
407
|
+
</li>
|
|
408
|
+
</ul>
|
|
409
|
+
|
|
410
|
+
Alternating milestone layout (auto-collapse on mobile):
|
|
411
|
+
<ul class="pa-timeline pa-timeline--alternating">
|
|
412
|
+
<li class="pa-timeline__item">
|
|
413
|
+
<div class="pa-timeline__date">Jan 2024</div>
|
|
414
|
+
<div class="pa-timeline__icon">🚀</div>
|
|
415
|
+
<div class="pa-timeline__content"><h3>Launch</h3><p>…</p></div>
|
|
416
|
+
</li>
|
|
417
|
+
</ul>
|
|
418
|
+
|
|
419
|
+
Activity feed with avatar, comment, and time column:
|
|
420
|
+
<ul class="pa-timeline pa-timeline--feed">
|
|
421
|
+
<li class="pa-timeline__item">
|
|
422
|
+
<div class="pa-timeline__time">14:32</div>
|
|
423
|
+
<div class="pa-timeline__content">
|
|
424
|
+
<div class="pa-timeline__avatar"><img src="…"></div>
|
|
425
|
+
<span><a href="#">User</a> commented on <a href="#">Issue #42</a></span>
|
|
426
|
+
<div class="pa-timeline__comment"><p>Looks good to me.</p></div>
|
|
427
|
+
</div>
|
|
428
|
+
</li>
|
|
429
|
+
</ul>
|
|
364
430
|
-->
|
|
431
|
+
|