@keenmate/pure-admin-core 1.0.0-rc01
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/LICENSE +21 -0
- package/README.md +172 -0
- package/dist/css/main.css +11542 -0
- package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
- package/dist/fonts/google/fonts-tracklist.txt +48 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
- package/package.json +60 -0
- package/snippets/alerts.html +281 -0
- package/snippets/badges.html +212 -0
- package/snippets/buttons.html +287 -0
- package/snippets/cards.html +393 -0
- package/snippets/checkbox-lists.html +490 -0
- package/snippets/code.html +225 -0
- package/snippets/command-palette.html +210 -0
- package/snippets/comparison.html +428 -0
- package/snippets/customization.html +142 -0
- package/snippets/forms.html +477 -0
- package/snippets/grid.html +338 -0
- package/snippets/layout.html +598 -0
- package/snippets/lists.html +232 -0
- package/snippets/loaders.html +183 -0
- package/snippets/manifest.json +388 -0
- package/snippets/modal-dialogs.html +411 -0
- package/snippets/modals.html +310 -0
- package/snippets/popconfirm.html +253 -0
- package/snippets/profile.html +264 -0
- package/snippets/tables.html +317 -0
- package/snippets/tabs.html +930 -0
- package/snippets/timeline.html +364 -0
- package/snippets/toasts.html +154 -0
- package/snippets/tooltips.html +411 -0
- package/snippets/typography.html +101 -0
- package/snippets/utilities.html +595 -0
- package/snippets/virtual-scroll.html +322 -0
- package/snippets/web-daterangepicker.html +634 -0
- package/snippets/web-multiselect.html +362 -0
- package/src/scss/.claude/settings.local.json +11 -0
- package/src/scss/_base-css-variables.scss +348 -0
- package/src/scss/_core.scss +99 -0
- package/src/scss/_fonts.scss +67 -0
- package/src/scss/_purecss-grid-responsive.scss +138 -0
- package/src/scss/_purecss-grid.scss +58 -0
- package/src/scss/_variables.scss +14 -0
- package/src/scss/core-components/_alerts.scss +212 -0
- package/src/scss/core-components/_badges.scss +16 -0
- package/src/scss/core-components/_base.scss +124 -0
- package/src/scss/core-components/_buttons.scss +473 -0
- package/src/scss/core-components/_cards.scss +285 -0
- package/src/scss/core-components/_checkbox-lists.scss +289 -0
- package/src/scss/core-components/_code.scss +141 -0
- package/src/scss/core-components/_command-palette.scss +518 -0
- package/src/scss/core-components/_comparison.scss +172 -0
- package/src/scss/core-components/_file-selector.scss +780 -0
- package/src/scss/core-components/_forms.scss +16 -0
- package/src/scss/core-components/_grid.scss +264 -0
- package/src/scss/core-components/_layout.scss +15 -0
- package/src/scss/core-components/_lists.scss +211 -0
- package/src/scss/core-components/_loaders.scss +277 -0
- package/src/scss/core-components/_logic-tree.scss +280 -0
- package/src/scss/core-components/_modals.scss +209 -0
- package/src/scss/core-components/_notifications.scss +253 -0
- package/src/scss/core-components/_pagers.scss +141 -0
- package/src/scss/core-components/_popconfirm.scss +170 -0
- package/src/scss/core-components/_profile.scss +281 -0
- package/src/scss/core-components/_settings-panel.scss +128 -0
- package/src/scss/core-components/_statistics.scss +200 -0
- package/src/scss/core-components/_tables.scss +555 -0
- package/src/scss/core-components/_tabs.scss +438 -0
- package/src/scss/core-components/_timeline.scss +589 -0
- package/src/scss/core-components/_toasts.scss +281 -0
- package/src/scss/core-components/_tooltips.scss +503 -0
- package/src/scss/core-components/_utilities.scss +241 -0
- package/src/scss/core-components/_web-components-theme.scss +294 -0
- package/src/scss/core-components/badges/_badge-base.scss +131 -0
- package/src/scss/core-components/badges/_badge-group.scss +25 -0
- package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
- package/src/scss/core-components/badges/_composite-badge.scss +70 -0
- package/src/scss/core-components/badges/_index.scss +10 -0
- package/src/scss/core-components/badges/_labels.scss +155 -0
- package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
- package/src/scss/core-components/forms/_form-inputs.scss +100 -0
- package/src/scss/core-components/forms/_form-layout.scss +66 -0
- package/src/scss/core-components/forms/_form-states.scss +89 -0
- package/src/scss/core-components/forms/_index.scss +12 -0
- package/src/scss/core-components/forms/_input-groups.scss +149 -0
- package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
- package/src/scss/core-components/forms/_query-editor.scss +313 -0
- package/src/scss/core-components/layout/_index.scss +11 -0
- package/src/scss/core-components/layout/_layout-container.scss +105 -0
- package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
- package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
- package/src/scss/core-components/layout/_navbar.scss +71 -0
- package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
- package/src/scss/core-components/layout/_sidebar.scss +177 -0
- package/src/scss/main.scss +7 -0
- package/src/scss/themes/_dark-base.scss +207 -0
- package/src/scss/themes/audi-light.scss +311 -0
- package/src/scss/themes/audi.scss +288 -0
- package/src/scss/themes/corporate.scss +203 -0
- package/src/scss/themes/dark-blue.scss +152 -0
- package/src/scss/themes/dark-green.scss +156 -0
- package/src/scss/themes/dark-red.scss +160 -0
- package/src/scss/themes/dark.scss +145 -0
- package/src/scss/themes/express.scss +281 -0
- package/src/scss/themes/minimal.scss +121 -0
- package/src/scss/utilities.scss +481 -0
- package/src/scss/variables/_base.scss +81 -0
- package/src/scss/variables/_colors.scss +148 -0
- package/src/scss/variables/_components.scss +509 -0
- package/src/scss/variables/_index.scss +13 -0
- package/src/scss/variables/_layout.scss +65 -0
- package/src/scss/variables/_spacing.scss +66 -0
- package/src/scss/variables/_system.scss +80 -0
- package/src/scss/variables/_typography.scss +37 -0
|
@@ -0,0 +1,930 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
TABS SNIPPETS
|
|
3
|
+
-->
|
|
4
|
+
|
|
5
|
+
<!-- CARD-BASED TABS -->
|
|
6
|
+
|
|
7
|
+
<!-- Card with Tabs -->
|
|
8
|
+
<div class="pa-card">
|
|
9
|
+
<div class="pa-card__tabs">
|
|
10
|
+
<button class="pa-card__tab pa-card__tab--active">Overview</button>
|
|
11
|
+
<button class="pa-card__tab">Details</button>
|
|
12
|
+
<button class="pa-card__tab">Settings</button>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="pa-card__body">
|
|
15
|
+
<div class="pa-card__tab-content pa-card__tab-content--active" id="tab1">
|
|
16
|
+
Content for tab 1
|
|
17
|
+
</div>
|
|
18
|
+
<div class="pa-card__tab-content" id="tab2">
|
|
19
|
+
Content for tab 2
|
|
20
|
+
</div>
|
|
21
|
+
<div class="pa-card__tab-content" id="tab3">
|
|
22
|
+
Content for tab 3
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
<!-- STANDALONE TABS - UNDERLINE STYLE (DEFAULT) -->
|
|
29
|
+
|
|
30
|
+
<!-- Basic Tabs -->
|
|
31
|
+
<div class="pa-tabs">
|
|
32
|
+
<button class="pa-tabs__item pa-tabs__item--active">Home</button>
|
|
33
|
+
<button class="pa-tabs__item">Profile</button>
|
|
34
|
+
<button class="pa-tabs__item">Messages</button>
|
|
35
|
+
<button class="pa-tabs__item">Settings</button>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="pa-tabs__content">
|
|
38
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="panel-1">
|
|
39
|
+
Home content
|
|
40
|
+
</div>
|
|
41
|
+
<div class="pa-tabs__panel" id="panel-2">
|
|
42
|
+
Profile content
|
|
43
|
+
</div>
|
|
44
|
+
<div class="pa-tabs__panel" id="panel-3">
|
|
45
|
+
Messages content
|
|
46
|
+
</div>
|
|
47
|
+
<div class="pa-tabs__panel" id="panel-4">
|
|
48
|
+
Settings content
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
<!-- TABS WITH ICONS -->
|
|
54
|
+
|
|
55
|
+
<!-- Tabs with Font Awesome Icons -->
|
|
56
|
+
<div class="pa-tabs">
|
|
57
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
58
|
+
<i class="fa-solid fa-house"></i>
|
|
59
|
+
<span>Home</span>
|
|
60
|
+
</button>
|
|
61
|
+
<button class="pa-tabs__item">
|
|
62
|
+
<i class="fa-solid fa-user"></i>
|
|
63
|
+
<span>Profile</span>
|
|
64
|
+
</button>
|
|
65
|
+
<button class="pa-tabs__item">
|
|
66
|
+
<i class="fa-solid fa-envelope"></i>
|
|
67
|
+
<span>Messages</span>
|
|
68
|
+
</button>
|
|
69
|
+
</div>
|
|
70
|
+
<div class="pa-tabs__content">
|
|
71
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="icon-panel-1">
|
|
72
|
+
Home content
|
|
73
|
+
</div>
|
|
74
|
+
<div class="pa-tabs__panel" id="icon-panel-2">
|
|
75
|
+
Profile content
|
|
76
|
+
</div>
|
|
77
|
+
<div class="pa-tabs__panel" id="icon-panel-3">
|
|
78
|
+
Messages content
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
<!-- PILLS STYLE TABS -->
|
|
84
|
+
|
|
85
|
+
<!-- Pills Tabs -->
|
|
86
|
+
<div class="pa-tabs pa-tabs--pills">
|
|
87
|
+
<button class="pa-tabs__item pa-tabs__item--active">Dashboard</button>
|
|
88
|
+
<button class="pa-tabs__item">Analytics</button>
|
|
89
|
+
<button class="pa-tabs__item">Reports</button>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="pa-tabs__content">
|
|
92
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="pills-1">
|
|
93
|
+
Dashboard content
|
|
94
|
+
</div>
|
|
95
|
+
<div class="pa-tabs__panel" id="pills-2">
|
|
96
|
+
Analytics content
|
|
97
|
+
</div>
|
|
98
|
+
<div class="pa-tabs__panel" id="pills-3">
|
|
99
|
+
Reports content
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<!-- Pills with Icons -->
|
|
104
|
+
<div class="pa-tabs pa-tabs--pills">
|
|
105
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
106
|
+
<i class="fa-solid fa-chart-line"></i>
|
|
107
|
+
<span>Dashboard</span>
|
|
108
|
+
</button>
|
|
109
|
+
<button class="pa-tabs__item">
|
|
110
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
111
|
+
<span>Analytics</span>
|
|
112
|
+
</button>
|
|
113
|
+
<button class="pa-tabs__item">
|
|
114
|
+
<i class="fa-solid fa-file-lines"></i>
|
|
115
|
+
<span>Reports</span>
|
|
116
|
+
</button>
|
|
117
|
+
</div>
|
|
118
|
+
<div class="pa-tabs__content">
|
|
119
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="icon-pills-1">
|
|
120
|
+
Dashboard content
|
|
121
|
+
</div>
|
|
122
|
+
<div class="pa-tabs__panel" id="icon-pills-2">
|
|
123
|
+
Analytics content
|
|
124
|
+
</div>
|
|
125
|
+
<div class="pa-tabs__panel" id="icon-pills-3">
|
|
126
|
+
Reports content
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<!-- BOXED STYLE TABS -->
|
|
132
|
+
|
|
133
|
+
<!-- Boxed Tabs -->
|
|
134
|
+
<div class="pa-tabs pa-tabs--boxed">
|
|
135
|
+
<button class="pa-tabs__item pa-tabs__item--active">Code</button>
|
|
136
|
+
<button class="pa-tabs__item">Issues</button>
|
|
137
|
+
<button class="pa-tabs__item">Pull Requests</button>
|
|
138
|
+
</div>
|
|
139
|
+
<div class="pa-tabs__content">
|
|
140
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="boxed-1">
|
|
141
|
+
Code repository
|
|
142
|
+
</div>
|
|
143
|
+
<div class="pa-tabs__panel" id="boxed-2">
|
|
144
|
+
Issue tracker
|
|
145
|
+
</div>
|
|
146
|
+
<div class="pa-tabs__panel" id="boxed-3">
|
|
147
|
+
Pull requests
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
<!-- VERTICAL TABS -->
|
|
153
|
+
|
|
154
|
+
<!-- Vertical Tabs with Icons (use vertical layout wrapper) -->
|
|
155
|
+
<div class="pa-tabs__vertical-layout">
|
|
156
|
+
<div class="pa-tabs pa-tabs--vertical">
|
|
157
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
158
|
+
<i class="fa-solid fa-user"></i>
|
|
159
|
+
<span>Account</span>
|
|
160
|
+
</button>
|
|
161
|
+
<button class="pa-tabs__item">
|
|
162
|
+
<i class="fa-solid fa-lock"></i>
|
|
163
|
+
<span>Security</span>
|
|
164
|
+
</button>
|
|
165
|
+
<button class="pa-tabs__item">
|
|
166
|
+
<i class="fa-solid fa-bell"></i>
|
|
167
|
+
<span>Notifications</span>
|
|
168
|
+
</button>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="pa-tabs__content" class="flex-grow-1">
|
|
171
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="vert-1">
|
|
172
|
+
Account settings
|
|
173
|
+
</div>
|
|
174
|
+
<div class="pa-tabs__panel" id="vert-2">
|
|
175
|
+
Security settings
|
|
176
|
+
</div>
|
|
177
|
+
<div class="pa-tabs__panel" id="vert-3">
|
|
178
|
+
Notification preferences
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<!-- Vertical Tabs - Centered (for icon-only or narrow tabs) -->
|
|
184
|
+
<div class="pa-tabs__vertical-layout">
|
|
185
|
+
<div class="pa-tabs pa-tabs--vertical pa-tabs--centered">
|
|
186
|
+
<button class="pa-tabs__item pa-tabs__item--active pa-tooltip" data-tooltip="Dashboard">
|
|
187
|
+
<i class="fa-solid fa-chart-line"></i>
|
|
188
|
+
</button>
|
|
189
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Users">
|
|
190
|
+
<i class="fa-solid fa-users"></i>
|
|
191
|
+
</button>
|
|
192
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Settings">
|
|
193
|
+
<i class="fa-solid fa-gear"></i>
|
|
194
|
+
</button>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="pa-tabs__content" class="flex-grow-1">
|
|
197
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="vert-c-1">
|
|
198
|
+
Dashboard content
|
|
199
|
+
</div>
|
|
200
|
+
<div class="pa-tabs__panel" id="vert-c-2">
|
|
201
|
+
Users content
|
|
202
|
+
</div>
|
|
203
|
+
<div class="pa-tabs__panel" id="vert-c-3">
|
|
204
|
+
Settings content
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
<!-- TABS WITH BADGES -->
|
|
211
|
+
|
|
212
|
+
<!-- Tabs with Count Badges -->
|
|
213
|
+
<div class="pa-tabs">
|
|
214
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
215
|
+
<span>All</span>
|
|
216
|
+
<span class="pa-badge pa-badge--sm">48</span>
|
|
217
|
+
</button>
|
|
218
|
+
<button class="pa-tabs__item">
|
|
219
|
+
<span>Active</span>
|
|
220
|
+
<span class="pa-badge pa-badge--sm pa-badge--success">12</span>
|
|
221
|
+
</button>
|
|
222
|
+
<button class="pa-tabs__item">
|
|
223
|
+
<span>Pending</span>
|
|
224
|
+
<span class="pa-badge pa-badge--sm pa-badge--warning">5</span>
|
|
225
|
+
</button>
|
|
226
|
+
<button class="pa-tabs__item">
|
|
227
|
+
<span>Closed</span>
|
|
228
|
+
<span class="pa-badge pa-badge--sm pa-badge--secondary">31</span>
|
|
229
|
+
</button>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="pa-tabs__content">
|
|
232
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="badge-1">
|
|
233
|
+
All items (48)
|
|
234
|
+
</div>
|
|
235
|
+
<div class="pa-tabs__panel" id="badge-2">
|
|
236
|
+
Active items (12)
|
|
237
|
+
</div>
|
|
238
|
+
<div class="pa-tabs__panel" id="badge-3">
|
|
239
|
+
Pending items (5)
|
|
240
|
+
</div>
|
|
241
|
+
<div class="pa-tabs__panel" id="badge-4">
|
|
242
|
+
Closed items (31)
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
<!-- TAB SIZES -->
|
|
248
|
+
|
|
249
|
+
<!-- Small Tabs -->
|
|
250
|
+
<div class="pa-tabs pa-tabs--sm">
|
|
251
|
+
<button class="pa-tabs__item pa-tabs__item--active">Tab 1</button>
|
|
252
|
+
<button class="pa-tabs__item">Tab 2</button>
|
|
253
|
+
<button class="pa-tabs__item">Tab 3</button>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="pa-tabs__content">
|
|
256
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="sm-1">
|
|
257
|
+
Small tab content
|
|
258
|
+
</div>
|
|
259
|
+
<div class="pa-tabs__panel" id="sm-2">
|
|
260
|
+
Small tab 2
|
|
261
|
+
</div>
|
|
262
|
+
<div class="pa-tabs__panel" id="sm-3">
|
|
263
|
+
Small tab 3
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
|
|
267
|
+
<!-- Default Tabs (no size class) -->
|
|
268
|
+
<div class="pa-tabs">
|
|
269
|
+
<button class="pa-tabs__item pa-tabs__item--active">Tab 1</button>
|
|
270
|
+
<button class="pa-tabs__item">Tab 2</button>
|
|
271
|
+
<button class="pa-tabs__item">Tab 3</button>
|
|
272
|
+
</div>
|
|
273
|
+
<div class="pa-tabs__content">
|
|
274
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="def-1">
|
|
275
|
+
Default tab content
|
|
276
|
+
</div>
|
|
277
|
+
<div class="pa-tabs__panel" id="def-2">
|
|
278
|
+
Default tab 2
|
|
279
|
+
</div>
|
|
280
|
+
<div class="pa-tabs__panel" id="def-3">
|
|
281
|
+
Default tab 3
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<!-- Large Tabs -->
|
|
286
|
+
<div class="pa-tabs pa-tabs--lg">
|
|
287
|
+
<button class="pa-tabs__item pa-tabs__item--active">Tab 1</button>
|
|
288
|
+
<button class="pa-tabs__item">Tab 2</button>
|
|
289
|
+
<button class="pa-tabs__item">Tab 3</button>
|
|
290
|
+
</div>
|
|
291
|
+
<div class="pa-tabs__content">
|
|
292
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="lg-1">
|
|
293
|
+
Large tab content
|
|
294
|
+
</div>
|
|
295
|
+
<div class="pa-tabs__panel" id="lg-2">
|
|
296
|
+
Large tab 2
|
|
297
|
+
</div>
|
|
298
|
+
<div class="pa-tabs__panel" id="lg-3">
|
|
299
|
+
Large tab 3
|
|
300
|
+
</div>
|
|
301
|
+
</div>
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
<!-- TAB ALIGNMENT -->
|
|
305
|
+
|
|
306
|
+
<!-- Centered Tabs -->
|
|
307
|
+
<div class="pa-tabs pa-tabs--centered">
|
|
308
|
+
<button class="pa-tabs__item pa-tabs__item--active">Features</button>
|
|
309
|
+
<button class="pa-tabs__item">Pricing</button>
|
|
310
|
+
<button class="pa-tabs__item">Testimonials</button>
|
|
311
|
+
</div>
|
|
312
|
+
<div class="pa-tabs__content">
|
|
313
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="center-1">
|
|
314
|
+
Features content
|
|
315
|
+
</div>
|
|
316
|
+
<div class="pa-tabs__panel" id="center-2">
|
|
317
|
+
Pricing content
|
|
318
|
+
</div>
|
|
319
|
+
<div class="pa-tabs__panel" id="center-3">
|
|
320
|
+
Testimonials content
|
|
321
|
+
</div>
|
|
322
|
+
</div>
|
|
323
|
+
|
|
324
|
+
<!-- Full Width Tabs -->
|
|
325
|
+
<div class="pa-tabs pa-tabs--full">
|
|
326
|
+
<button class="pa-tabs__item pa-tabs__item--active">
|
|
327
|
+
<i class="fa-solid fa-mobile-screen"></i>
|
|
328
|
+
<span>Mobile</span>
|
|
329
|
+
</button>
|
|
330
|
+
<button class="pa-tabs__item">
|
|
331
|
+
<i class="fa-solid fa-tablet-screen-button"></i>
|
|
332
|
+
<span>Tablet</span>
|
|
333
|
+
</button>
|
|
334
|
+
<button class="pa-tabs__item">
|
|
335
|
+
<i class="fa-solid fa-desktop"></i>
|
|
336
|
+
<span>Desktop</span>
|
|
337
|
+
</button>
|
|
338
|
+
</div>
|
|
339
|
+
<div class="pa-tabs__content">
|
|
340
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="full-1">
|
|
341
|
+
Mobile view
|
|
342
|
+
</div>
|
|
343
|
+
<div class="pa-tabs__panel" id="full-2">
|
|
344
|
+
Tablet view
|
|
345
|
+
</div>
|
|
346
|
+
<div class="pa-tabs__panel" id="full-3">
|
|
347
|
+
Desktop view
|
|
348
|
+
</div>
|
|
349
|
+
</div>
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
<!-- DEFAULT TABS (WRAP TO MULTIPLE LINES) -->
|
|
353
|
+
|
|
354
|
+
<!-- Default Tabs - Wrap When Needed -->
|
|
355
|
+
<div class="pa-tabs">
|
|
356
|
+
<button class="pa-tabs__item pa-tabs__item--active">Organizations Tree</button>
|
|
357
|
+
<button class="pa-tabs__item">User Management System</button>
|
|
358
|
+
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
359
|
+
<button class="pa-tabs__item">Settings & Configuration</button>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="pa-tabs__content">
|
|
362
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="wrap-1">
|
|
363
|
+
Default behavior - tabs wrap to multiple lines when constrained
|
|
364
|
+
</div>
|
|
365
|
+
<div class="pa-tabs__panel" id="wrap-2">
|
|
366
|
+
User Management content
|
|
367
|
+
</div>
|
|
368
|
+
<div class="pa-tabs__panel" id="wrap-3">
|
|
369
|
+
Reports content
|
|
370
|
+
</div>
|
|
371
|
+
<div class="pa-tabs__panel" id="wrap-4">
|
|
372
|
+
Settings content
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
|
|
376
|
+
<!-- Pills Also Wrap by Default -->
|
|
377
|
+
<div class="pa-tabs pa-tabs--pills">
|
|
378
|
+
<button class="pa-tabs__item pa-tabs__item--active">Organizations Tree</button>
|
|
379
|
+
<button class="pa-tabs__item">User Management System</button>
|
|
380
|
+
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
381
|
+
</div>
|
|
382
|
+
<div class="pa-tabs__content">
|
|
383
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="wrap-pills-1">
|
|
384
|
+
Pills wrap by default (no modifier needed)
|
|
385
|
+
</div>
|
|
386
|
+
<div class="pa-tabs__panel" id="wrap-pills-2">
|
|
387
|
+
User Management
|
|
388
|
+
</div>
|
|
389
|
+
<div class="pa-tabs__panel" id="wrap-pills-3">
|
|
390
|
+
Reports
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
<!-- NO-WRAP TABS (PREVENT DEFAULT WRAPPING) -->
|
|
396
|
+
|
|
397
|
+
<!-- No-wrap Tabs - Single Line Overflow -->
|
|
398
|
+
<div class="pa-tabs pa-tabs--nowrap">
|
|
399
|
+
<button class="pa-tabs__item pa-tabs__item--active">Organizations Tree</button>
|
|
400
|
+
<button class="pa-tabs__item">User Management System</button>
|
|
401
|
+
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
402
|
+
<button class="pa-tabs__item">Settings & Configuration</button>
|
|
403
|
+
</div>
|
|
404
|
+
<div class="pa-tabs__content">
|
|
405
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="nowrap-1">
|
|
406
|
+
No-wrap modifier prevents wrapping - tabs overflow in single line (use when you want horizontal scroll)
|
|
407
|
+
</div>
|
|
408
|
+
<div class="pa-tabs__panel" id="nowrap-2">
|
|
409
|
+
User Management content
|
|
410
|
+
</div>
|
|
411
|
+
<div class="pa-tabs__panel" id="nowrap-3">
|
|
412
|
+
Reports content
|
|
413
|
+
</div>
|
|
414
|
+
<div class="pa-tabs__panel" id="nowrap-4">
|
|
415
|
+
Settings content
|
|
416
|
+
</div>
|
|
417
|
+
</div>
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
<!-- SCROLLABLE TABS (HORIZONTAL SCROLL WITH ARROWS) -->
|
|
421
|
+
|
|
422
|
+
<!-- Scrollable Tabs - Underline Style -->
|
|
423
|
+
<div class="pa-tabs pa-tabs--scrollable" data-tabs-scroll>
|
|
424
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--left" onclick="scrollTabs(this, 'left')">
|
|
425
|
+
<i class="fa-solid fa-chevron-left"></i>
|
|
426
|
+
</button>
|
|
427
|
+
<div class="pa-tabs__scroll-container">
|
|
428
|
+
<button class="pa-tabs__item pa-tabs__item--active">Dashboard Overview</button>
|
|
429
|
+
<button class="pa-tabs__item">Organizations Tree</button>
|
|
430
|
+
<button class="pa-tabs__item">User Management System</button>
|
|
431
|
+
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
432
|
+
<button class="pa-tabs__item">Settings & Configuration</button>
|
|
433
|
+
</div>
|
|
434
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--right" onclick="scrollTabs(this, 'right')">
|
|
435
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
436
|
+
</button>
|
|
437
|
+
</div>
|
|
438
|
+
<div class="pa-tabs__content">
|
|
439
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="scroll-1">
|
|
440
|
+
Dashboard - arrows appear when tabs overflow
|
|
441
|
+
</div>
|
|
442
|
+
<div class="pa-tabs__panel" id="scroll-2">
|
|
443
|
+
Organizations content
|
|
444
|
+
</div>
|
|
445
|
+
<!-- more panels -->
|
|
446
|
+
</div>
|
|
447
|
+
|
|
448
|
+
<!-- Scrollable Pills -->
|
|
449
|
+
<div class="pa-tabs pa-tabs--pills pa-tabs--scrollable" data-tabs-scroll>
|
|
450
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--left" onclick="scrollTabs(this, 'left')">
|
|
451
|
+
<i class="fa-solid fa-chevron-left"></i>
|
|
452
|
+
</button>
|
|
453
|
+
<div class="pa-tabs__scroll-container">
|
|
454
|
+
<button class="pa-tabs__item pa-tabs__item--active">Organizations Tree</button>
|
|
455
|
+
<button class="pa-tabs__item">User Management System</button>
|
|
456
|
+
<button class="pa-tabs__item">Reports & Analytics</button>
|
|
457
|
+
</div>
|
|
458
|
+
<button class="pa-tabs__scroll-btn pa-tabs__scroll-btn--right" onclick="scrollTabs(this, 'right')">
|
|
459
|
+
<i class="fa-solid fa-chevron-right"></i>
|
|
460
|
+
</button>
|
|
461
|
+
</div>
|
|
462
|
+
<div class="pa-tabs__content">
|
|
463
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="scroll-pills-1">
|
|
464
|
+
Pills with horizontal scroll
|
|
465
|
+
</div>
|
|
466
|
+
<!-- more panels -->
|
|
467
|
+
</div>
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
<!-- COLLAPSE TABS (ICON-ONLY, ACTIVE SHOWS TITLE) -->
|
|
471
|
+
|
|
472
|
+
<!-- Collapse Tabs - Active Tab Shows Title -->
|
|
473
|
+
<div class="pa-tabs pa-tabs--collapse">
|
|
474
|
+
<button class="pa-tabs__item pa-tabs__item--active pa-tooltip" data-tooltip="Organizations Tree">
|
|
475
|
+
<i class="fa-solid fa-sitemap"></i>
|
|
476
|
+
<span>Organizations Tree</span>
|
|
477
|
+
</button>
|
|
478
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="User Management System">
|
|
479
|
+
<i class="fa-solid fa-users"></i>
|
|
480
|
+
<span>User Management System</span>
|
|
481
|
+
</button>
|
|
482
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Reports & Analytics">
|
|
483
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
484
|
+
<span>Reports & Analytics</span>
|
|
485
|
+
</button>
|
|
486
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Settings">
|
|
487
|
+
<i class="fa-solid fa-gear"></i>
|
|
488
|
+
<span>Settings</span>
|
|
489
|
+
</button>
|
|
490
|
+
</div>
|
|
491
|
+
<div class="pa-tabs__content">
|
|
492
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="collapse-1">
|
|
493
|
+
Organizations - inactive tabs show only icons
|
|
494
|
+
</div>
|
|
495
|
+
<div class="pa-tabs__panel" id="collapse-2">
|
|
496
|
+
User Management
|
|
497
|
+
</div>
|
|
498
|
+
<div class="pa-tabs__panel" id="collapse-3">
|
|
499
|
+
Reports
|
|
500
|
+
</div>
|
|
501
|
+
<div class="pa-tabs__panel" id="collapse-4">
|
|
502
|
+
Settings
|
|
503
|
+
</div>
|
|
504
|
+
</div>
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
<!-- ICON-ONLY TABS -->
|
|
508
|
+
|
|
509
|
+
<!-- Horizontal Icon-Only Tabs -->
|
|
510
|
+
<div class="pa-tabs">
|
|
511
|
+
<button class="pa-tabs__item pa-tabs__item--active pa-tooltip" data-tooltip="Dashboard">
|
|
512
|
+
<i class="fa-solid fa-chart-line"></i>
|
|
513
|
+
</button>
|
|
514
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Analytics">
|
|
515
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
516
|
+
</button>
|
|
517
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Users">
|
|
518
|
+
<i class="fa-solid fa-users"></i>
|
|
519
|
+
</button>
|
|
520
|
+
<button class="pa-tabs__item pa-tooltip" data-tooltip="Settings">
|
|
521
|
+
<i class="fa-solid fa-gear"></i>
|
|
522
|
+
</button>
|
|
523
|
+
</div>
|
|
524
|
+
<div class="pa-tabs__content">
|
|
525
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="icon1">
|
|
526
|
+
Dashboard content
|
|
527
|
+
</div>
|
|
528
|
+
<div class="pa-tabs__panel" id="icon2">
|
|
529
|
+
Analytics content
|
|
530
|
+
</div>
|
|
531
|
+
<div class="pa-tabs__panel" id="icon3">
|
|
532
|
+
Users content
|
|
533
|
+
</div>
|
|
534
|
+
<div class="pa-tabs__panel" id="icon4">
|
|
535
|
+
Settings content
|
|
536
|
+
</div>
|
|
537
|
+
</div>
|
|
538
|
+
|
|
539
|
+
<!-- Vertical Icon-Only Tabs (use vertical layout wrapper, centered for icon-only, square 3x3) -->
|
|
540
|
+
<div class="pa-tabs__vertical-layout">
|
|
541
|
+
<div class="pa-tabs pa-tabs--vertical pa-tabs--centered">
|
|
542
|
+
<button class="pa-tabs__item pa-tabs__item--w-3x pa-tabs__item--h-3x pa-tabs__item--active pa-tooltip" data-tooltip="Home">
|
|
543
|
+
<i class="fa-solid fa-house"></i>
|
|
544
|
+
</button>
|
|
545
|
+
<button class="pa-tabs__item pa-tabs__item--w-3x pa-tabs__item--h-3x pa-tooltip" data-tooltip="Profile">
|
|
546
|
+
<i class="fa-solid fa-user"></i>
|
|
547
|
+
</button>
|
|
548
|
+
<button class="pa-tabs__item pa-tabs__item--w-3x pa-tabs__item--h-3x pa-tooltip" data-tooltip="Messages">
|
|
549
|
+
<i class="fa-solid fa-envelope"></i>
|
|
550
|
+
</button>
|
|
551
|
+
</div>
|
|
552
|
+
<div class="pa-tabs__content" class="flex-grow-1">
|
|
553
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="vicon1">
|
|
554
|
+
Home content
|
|
555
|
+
</div>
|
|
556
|
+
<div class="pa-tabs__panel" id="vicon2">
|
|
557
|
+
Profile content
|
|
558
|
+
</div>
|
|
559
|
+
<div class="pa-tabs__panel" id="vicon3">
|
|
560
|
+
Messages content
|
|
561
|
+
</div>
|
|
562
|
+
</div>
|
|
563
|
+
</div>
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
<!-- FIXED WIDTH TABS -->
|
|
567
|
+
|
|
568
|
+
<!-- Fixed Width Tab Items (6rem each) -->
|
|
569
|
+
<div class="pa-tabs">
|
|
570
|
+
<button class="pa-tabs__item pa-tabs__item--w-6x pa-tabs__item--active">View</button>
|
|
571
|
+
<button class="pa-tabs__item pa-tabs__item--w-6x">Edit</button>
|
|
572
|
+
<button class="pa-tabs__item pa-tabs__item--w-6x">Delete</button>
|
|
573
|
+
</div>
|
|
574
|
+
<div class="pa-tabs__content">
|
|
575
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="fixed-1">
|
|
576
|
+
View content
|
|
577
|
+
</div>
|
|
578
|
+
<div class="pa-tabs__panel" id="fixed-2">
|
|
579
|
+
Edit content
|
|
580
|
+
</div>
|
|
581
|
+
<div class="pa-tabs__panel" id="fixed-3">
|
|
582
|
+
Delete content
|
|
583
|
+
</div>
|
|
584
|
+
</div>
|
|
585
|
+
|
|
586
|
+
<!-- Fixed Width with Icons (8rem each) -->
|
|
587
|
+
<div class="pa-tabs">
|
|
588
|
+
<button class="pa-tabs__item pa-tabs__item--w-8x pa-tabs__item--active">
|
|
589
|
+
<i class="fa-solid fa-chart-line"></i>
|
|
590
|
+
<span>Dashboard</span>
|
|
591
|
+
</button>
|
|
592
|
+
<button class="pa-tabs__item pa-tabs__item--w-8x">
|
|
593
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
594
|
+
<span>Analytics</span>
|
|
595
|
+
</button>
|
|
596
|
+
<button class="pa-tabs__item pa-tabs__item--w-8x">
|
|
597
|
+
<i class="fa-solid fa-file-lines"></i>
|
|
598
|
+
<span>Reports</span>
|
|
599
|
+
</button>
|
|
600
|
+
</div>
|
|
601
|
+
<div class="pa-tabs__content">
|
|
602
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="fixed-icon-1">
|
|
603
|
+
Dashboard content
|
|
604
|
+
</div>
|
|
605
|
+
<div class="pa-tabs__panel" id="fixed-icon-2">
|
|
606
|
+
Analytics content
|
|
607
|
+
</div>
|
|
608
|
+
<div class="pa-tabs__panel" id="fixed-icon-3">
|
|
609
|
+
Reports content
|
|
610
|
+
</div>
|
|
611
|
+
</div>
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
<!-- STANDALONE TABS (OUTSIDE CARDS) -->
|
|
615
|
+
|
|
616
|
+
<!-- Horizontal Standalone Tabs - Page Level Navigation -->
|
|
617
|
+
<div class="pa-tabs">
|
|
618
|
+
<button class="pa-tabs__item pa-tabs__item--active">Overview</button>
|
|
619
|
+
<button class="pa-tabs__item">Details</button>
|
|
620
|
+
<button class="pa-tabs__item">Reports</button>
|
|
621
|
+
</div>
|
|
622
|
+
<div class="pa-tabs__content">
|
|
623
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="sa1">
|
|
624
|
+
<div class="pa-card">
|
|
625
|
+
<div class="pa-card__body">
|
|
626
|
+
Overview content - tabs can exist outside cards for page-level navigation
|
|
627
|
+
</div>
|
|
628
|
+
</div>
|
|
629
|
+
</div>
|
|
630
|
+
<div class="pa-tabs__panel" id="sa2">
|
|
631
|
+
<div class="pa-card">
|
|
632
|
+
<div class="pa-card__body">
|
|
633
|
+
Details content
|
|
634
|
+
</div>
|
|
635
|
+
</div>
|
|
636
|
+
</div>
|
|
637
|
+
<div class="pa-tabs__panel" id="sa3">
|
|
638
|
+
<div class="pa-card">
|
|
639
|
+
<div class="pa-card__body">
|
|
640
|
+
Reports content
|
|
641
|
+
</div>
|
|
642
|
+
</div>
|
|
643
|
+
</div>
|
|
644
|
+
</div>
|
|
645
|
+
|
|
646
|
+
<!-- Vertical Standalone Tabs - Sidebar Style Navigation (use vertical layout wrapper) -->
|
|
647
|
+
<div class="pa-tabs__vertical-layout">
|
|
648
|
+
<div class="pa-tabs pa-tabs--vertical">
|
|
649
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x pa-tabs__item--active">
|
|
650
|
+
<i class="fa-solid fa-house"></i>
|
|
651
|
+
<span>Dashboard</span>
|
|
652
|
+
</button>
|
|
653
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x">
|
|
654
|
+
<i class="fa-solid fa-chart-bar"></i>
|
|
655
|
+
<span>Analytics</span>
|
|
656
|
+
</button>
|
|
657
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x">
|
|
658
|
+
<i class="fa-solid fa-users"></i>
|
|
659
|
+
<span>Users</span>
|
|
660
|
+
</button>
|
|
661
|
+
</div>
|
|
662
|
+
<div class="pa-tabs__content" class="flex-grow-1">
|
|
663
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="sav1">
|
|
664
|
+
<div class="pa-card">
|
|
665
|
+
<div class="pa-card__header">
|
|
666
|
+
<h3>Dashboard</h3>
|
|
667
|
+
</div>
|
|
668
|
+
<div class="pa-card__body">
|
|
669
|
+
Vertical standalone tabs work great for sidebar-style navigation
|
|
670
|
+
</div>
|
|
671
|
+
</div>
|
|
672
|
+
</div>
|
|
673
|
+
<div class="pa-tabs__panel" id="sav2">
|
|
674
|
+
<div class="pa-card">
|
|
675
|
+
<div class="pa-card__body">Analytics content</div>
|
|
676
|
+
</div>
|
|
677
|
+
</div>
|
|
678
|
+
<div class="pa-tabs__panel" id="sav3">
|
|
679
|
+
<div class="pa-card">
|
|
680
|
+
<div class="pa-card__body">Users content</div>
|
|
681
|
+
</div>
|
|
682
|
+
</div>
|
|
683
|
+
</div>
|
|
684
|
+
</div>
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
<!-- BORDERED TABS -->
|
|
688
|
+
|
|
689
|
+
<!-- Bordered Horizontal Tabs - Card-Like Wrapper -->
|
|
690
|
+
<div class="pa-tabs__container pa-tabs__container--bordered">
|
|
691
|
+
<div class="pa-tabs">
|
|
692
|
+
<button class="pa-tabs__item pa-tabs__item--active">Dashboard</button>
|
|
693
|
+
<button class="pa-tabs__item">Settings</button>
|
|
694
|
+
<button class="pa-tabs__item">Profile</button>
|
|
695
|
+
</div>
|
|
696
|
+
<div class="pa-tabs__content">
|
|
697
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="bc1">
|
|
698
|
+
Dashboard content - entire tab system wrapped in card-like border
|
|
699
|
+
</div>
|
|
700
|
+
<div class="pa-tabs__panel" id="bc2">
|
|
701
|
+
Settings content
|
|
702
|
+
</div>
|
|
703
|
+
<div class="pa-tabs__panel" id="bc3">
|
|
704
|
+
Profile content
|
|
705
|
+
</div>
|
|
706
|
+
</div>
|
|
707
|
+
</div>
|
|
708
|
+
|
|
709
|
+
<!-- Bordered Vertical Tabs - Card-Like Wrapper -->
|
|
710
|
+
<div class="pa-tabs__vertical-layout pa-tabs__vertical-layout--bordered">
|
|
711
|
+
<div class="pa-tabs pa-tabs--vertical">
|
|
712
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x pa-tabs__item--active">
|
|
713
|
+
<i class="fa-solid fa-gauge"></i>
|
|
714
|
+
<span>Overview</span>
|
|
715
|
+
</button>
|
|
716
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x">
|
|
717
|
+
<i class="fa-solid fa-chart-pie"></i>
|
|
718
|
+
<span>Reports</span>
|
|
719
|
+
</button>
|
|
720
|
+
<button class="pa-tabs__item pa-tabs__item--h-3x">
|
|
721
|
+
<i class="fa-solid fa-gear"></i>
|
|
722
|
+
<span>Settings</span>
|
|
723
|
+
</button>
|
|
724
|
+
</div>
|
|
725
|
+
<div class="pa-tabs__content" class="flex-grow-1">
|
|
726
|
+
<div class="pa-tabs__panel pa-tabs__panel--active" id="bv1">
|
|
727
|
+
Overview - bordered vertical tabs with divider
|
|
728
|
+
</div>
|
|
729
|
+
<div class="pa-tabs__panel" id="bv2">
|
|
730
|
+
Reports content
|
|
731
|
+
</div>
|
|
732
|
+
<div class="pa-tabs__panel" id="bv3">
|
|
733
|
+
Settings content
|
|
734
|
+
</div>
|
|
735
|
+
</div>
|
|
736
|
+
</div>
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
<!-- JAVASCRIPT FOR TAB SWITCHING -->
|
|
740
|
+
|
|
741
|
+
<script>
|
|
742
|
+
// Scrollable tabs functionality
|
|
743
|
+
function scrollTabs(button, direction) {
|
|
744
|
+
const tabsContainer = button.closest('.pa-tabs--scrollable');
|
|
745
|
+
const scrollContainer = tabsContainer.querySelector('.pa-tabs__scroll-container');
|
|
746
|
+
const scrollAmount = 200;
|
|
747
|
+
|
|
748
|
+
if (direction === 'left') {
|
|
749
|
+
scrollContainer.scrollLeft -= scrollAmount;
|
|
750
|
+
} else {
|
|
751
|
+
scrollContainer.scrollLeft += scrollAmount;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
setTimeout(() => updateScrollArrows(tabsContainer), 100);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
function updateScrollArrows(tabsContainer) {
|
|
758
|
+
const scrollContainer = tabsContainer.querySelector('.pa-tabs__scroll-container');
|
|
759
|
+
const leftBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--left');
|
|
760
|
+
const rightBtn = tabsContainer.querySelector('.pa-tabs__scroll-btn--right');
|
|
761
|
+
|
|
762
|
+
if (!scrollContainer || !leftBtn || !rightBtn) return;
|
|
763
|
+
|
|
764
|
+
const isAtStart = scrollContainer.scrollLeft <= 0;
|
|
765
|
+
const isAtEnd = scrollContainer.scrollLeft + scrollContainer.clientWidth >= scrollContainer.scrollWidth - 1;
|
|
766
|
+
|
|
767
|
+
if (isAtStart) {
|
|
768
|
+
leftBtn.classList.remove('pa-tabs__scroll-btn--visible');
|
|
769
|
+
} else {
|
|
770
|
+
leftBtn.classList.add('pa-tabs__scroll-btn--visible');
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
if (isAtEnd) {
|
|
774
|
+
rightBtn.classList.remove('pa-tabs__scroll-btn--visible');
|
|
775
|
+
} else {
|
|
776
|
+
rightBtn.classList.add('pa-tabs__scroll-btn--visible');
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
// Initialize scrollable tabs on page load
|
|
781
|
+
document.addEventListener('DOMContentLoaded', function() {
|
|
782
|
+
const scrollableTabs = document.querySelectorAll('[data-tabs-scroll]');
|
|
783
|
+
scrollableTabs.forEach(tabsContainer => {
|
|
784
|
+
const scrollContainer = tabsContainer.querySelector('.pa-tabs__scroll-container');
|
|
785
|
+
updateScrollArrows(tabsContainer);
|
|
786
|
+
scrollContainer.addEventListener('scroll', () => updateScrollArrows(tabsContainer));
|
|
787
|
+
window.addEventListener('resize', () => updateScrollArrows(tabsContainer));
|
|
788
|
+
});
|
|
789
|
+
});
|
|
790
|
+
|
|
791
|
+
// Standalone tabs switching
|
|
792
|
+
function switchTab(button, panelId) {
|
|
793
|
+
// Handle both regular tabs and scrollable tabs
|
|
794
|
+
let tabsContainer = button.closest('.pa-tabs__scroll-container');
|
|
795
|
+
if (tabsContainer) {
|
|
796
|
+
tabsContainer = tabsContainer.parentElement;
|
|
797
|
+
} else {
|
|
798
|
+
tabsContainer = button.closest('.pa-tabs');
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
// Find content container - handle both sibling and wrapped layouts
|
|
802
|
+
let contentContainer = tabsContainer.nextElementSibling;
|
|
803
|
+
|
|
804
|
+
// If nextElementSibling is not the content container (wrapped layouts)
|
|
805
|
+
if (!contentContainer || !contentContainer.classList.contains('pa-tabs__content')) {
|
|
806
|
+
// Search in parent scope (card body, vertical layout wrapper, or container)
|
|
807
|
+
const parent = tabsContainer.closest('.pa-card__body, .pa-tabs__vertical-layout, .pa-tabs__container');
|
|
808
|
+
if (parent) {
|
|
809
|
+
contentContainer = parent.querySelector('.pa-tabs__content');
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
if (!contentContainer) return;
|
|
814
|
+
|
|
815
|
+
// Remove active class from all tabs
|
|
816
|
+
const tabs = tabsContainer.querySelectorAll('.pa-tabs__item');
|
|
817
|
+
tabs.forEach(tab => tab.classList.remove('pa-tabs__item--active'));
|
|
818
|
+
|
|
819
|
+
// Add active class to clicked tab
|
|
820
|
+
button.classList.add('pa-tabs__item--active');
|
|
821
|
+
|
|
822
|
+
// Hide all panels
|
|
823
|
+
const panels = contentContainer.querySelectorAll('.pa-tabs__panel');
|
|
824
|
+
panels.forEach(panel => panel.classList.remove('pa-tabs__panel--active'));
|
|
825
|
+
|
|
826
|
+
// Show selected panel
|
|
827
|
+
const selectedPanel = contentContainer.querySelector(`#${panelId}`);
|
|
828
|
+
if (selectedPanel) {
|
|
829
|
+
selectedPanel.classList.add('pa-tabs__panel--active');
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
// Card tabs switching
|
|
834
|
+
function switchCardTab(button, panelId) {
|
|
835
|
+
const card = button.closest('.pa-card');
|
|
836
|
+
|
|
837
|
+
// Remove active class from all card tabs
|
|
838
|
+
const tabs = card.querySelectorAll('.pa-card__tab');
|
|
839
|
+
tabs.forEach(tab => tab.classList.remove('pa-card__tab--active'));
|
|
840
|
+
|
|
841
|
+
// Add active class to clicked tab
|
|
842
|
+
button.classList.add('pa-card__tab--active');
|
|
843
|
+
|
|
844
|
+
// Hide all tab content
|
|
845
|
+
const contents = card.querySelectorAll('.pa-card__tab-content');
|
|
846
|
+
contents.forEach(content => content.classList.remove('pa-card__tab-content--active'));
|
|
847
|
+
|
|
848
|
+
// Show selected tab content
|
|
849
|
+
const selectedContent = card.querySelector(`#${panelId}`);
|
|
850
|
+
if (selectedContent) {
|
|
851
|
+
selectedContent.classList.add('pa-card__tab-content--active');
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
</script>
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
<!-- AVAILABLE TAB MODIFIERS -->
|
|
858
|
+
|
|
859
|
+
<!--
|
|
860
|
+
CARD TABS:
|
|
861
|
+
- pa-card__tabs (tabs container within card)
|
|
862
|
+
- pa-card__tab (individual tab button)
|
|
863
|
+
- pa-card__tab--active (active tab)
|
|
864
|
+
- pa-card__tab-content (tab panel content)
|
|
865
|
+
- pa-card__tab-content--active (active panel)
|
|
866
|
+
|
|
867
|
+
STANDALONE TABS:
|
|
868
|
+
- pa-tabs (tabs container, default underline style)
|
|
869
|
+
- pa-tabs__item (individual tab button)
|
|
870
|
+
- pa-tabs__item--active (active tab)
|
|
871
|
+
- pa-tabs__content (container for all panels)
|
|
872
|
+
- pa-tabs__panel (individual tab panel)
|
|
873
|
+
- pa-tabs__panel--active (active panel)
|
|
874
|
+
|
|
875
|
+
STYLES:
|
|
876
|
+
- pa-tabs--pills (pill-style tabs with rounded backgrounds)
|
|
877
|
+
- pa-tabs--boxed (boxed tabs with container border)
|
|
878
|
+
- pa-tabs--vertical (vertical tab orientation)
|
|
879
|
+
|
|
880
|
+
ALIGNMENT:
|
|
881
|
+
- pa-tabs--centered (center-align tabs)
|
|
882
|
+
- pa-tabs--full (full-width tabs, equal distribution)
|
|
883
|
+
|
|
884
|
+
OVERFLOW HANDLING:
|
|
885
|
+
- (default) (tabs wrap to multiple lines when constrained)
|
|
886
|
+
- pa-tabs--nowrap (prevent wrapping, tabs overflow in single line)
|
|
887
|
+
- pa-tabs--scrollable (horizontal scroll with arrow navigation)
|
|
888
|
+
- pa-tabs--collapse (show only icons, active tab shows full title - requires icons on all tabs)
|
|
889
|
+
- Use for long tab titles in narrow containers
|
|
890
|
+
|
|
891
|
+
SIZES:
|
|
892
|
+
- pa-tabs--sm (small tabs with compact padding)
|
|
893
|
+
- (no class) (default size)
|
|
894
|
+
- pa-tabs--lg (large tabs with generous padding)
|
|
895
|
+
|
|
896
|
+
FIXED WIDTH (for individual tab items):
|
|
897
|
+
- pa-tabs__item--w-1x through pa-tabs__item--w-10x (1rem to 10rem min-width)
|
|
898
|
+
- Examples: pa-tabs__item--w-6x (6rem), pa-tabs__item--w-8x (8rem)
|
|
899
|
+
- Use for consistent tab sizing across navigation
|
|
900
|
+
|
|
901
|
+
FIXED HEIGHT (for individual tab items):
|
|
902
|
+
- pa-tabs__item--h-1x through pa-tabs__item--h-10x (1rem to 10rem min-height)
|
|
903
|
+
- Examples: pa-tabs__item--h-3x (3rem), pa-tabs__item--h-4x (4rem)
|
|
904
|
+
- Useful for vertical tabs with consistent heights
|
|
905
|
+
|
|
906
|
+
LAYOUT WRAPPERS:
|
|
907
|
+
- pa-tabs__container (wrapper for horizontal tabs + content)
|
|
908
|
+
- pa-tabs__container--bordered (card-like border around entire tabs system)
|
|
909
|
+
- pa-tabs__vertical-layout (flexbox wrapper for vertical tabs + content)
|
|
910
|
+
- pa-tabs__vertical-layout--bordered (card-like border around entire tabs system)
|
|
911
|
+
- Use wrappers for all vertical tab layouts instead of grid
|
|
912
|
+
- Provides proper spacing and alignment
|
|
913
|
+
|
|
914
|
+
BORDERED VARIANTS:
|
|
915
|
+
- Add --bordered modifier to wrapper for card-like appearance
|
|
916
|
+
- Wraps entire tab system (navigation + content) in single border
|
|
917
|
+
- Horizontal: pa-tabs__container--bordered
|
|
918
|
+
- Vertical: pa-tabs__vertical-layout--bordered
|
|
919
|
+
- Perfect for standalone tabs that need visual separation
|
|
920
|
+
|
|
921
|
+
USAGE NOTES:
|
|
922
|
+
- Use pa-card__tabs for tabs integrated into cards
|
|
923
|
+
- Use pa-tabs for standalone tab navigation
|
|
924
|
+
- Combine modifiers (e.g., pa-tabs--pills pa-tabs--sm)
|
|
925
|
+
- Icons work with all tab styles
|
|
926
|
+
- Badges can be added to tabs for counts/status
|
|
927
|
+
- Vertical tabs use pa-tabs__vertical-layout wrapper
|
|
928
|
+
- Icon-only vertical tabs should use pa-tabs--centered modifier
|
|
929
|
+
- First panel in vertical layouts automatically has no top padding
|
|
930
|
+
-->
|