@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.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/dist/css/main.css +11542 -0
  4. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  5. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  6. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  7. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  8. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  9. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  10. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  11. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  12. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
  13. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
  14. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
  15. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
  16. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
  17. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
  18. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
  19. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
  20. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
  21. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
  22. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
  23. package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
  24. package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
  25. package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
  26. package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
  27. package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
  28. package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
  29. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
  30. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
  31. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
  32. package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
  33. package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
  34. package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
  35. package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
  36. package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
  37. package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
  38. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
  39. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
  40. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
  41. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
  42. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
  43. package/dist/fonts/google/fonts-tracklist.txt +48 -0
  44. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
  45. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
  46. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
  47. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
  48. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
  49. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
  50. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
  51. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
  52. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
  53. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
  54. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
  55. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
  56. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
  57. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
  58. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
  59. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
  60. package/package.json +60 -0
  61. package/snippets/alerts.html +281 -0
  62. package/snippets/badges.html +212 -0
  63. package/snippets/buttons.html +287 -0
  64. package/snippets/cards.html +393 -0
  65. package/snippets/checkbox-lists.html +490 -0
  66. package/snippets/code.html +225 -0
  67. package/snippets/command-palette.html +210 -0
  68. package/snippets/comparison.html +428 -0
  69. package/snippets/customization.html +142 -0
  70. package/snippets/forms.html +477 -0
  71. package/snippets/grid.html +338 -0
  72. package/snippets/layout.html +598 -0
  73. package/snippets/lists.html +232 -0
  74. package/snippets/loaders.html +183 -0
  75. package/snippets/manifest.json +388 -0
  76. package/snippets/modal-dialogs.html +411 -0
  77. package/snippets/modals.html +310 -0
  78. package/snippets/popconfirm.html +253 -0
  79. package/snippets/profile.html +264 -0
  80. package/snippets/tables.html +317 -0
  81. package/snippets/tabs.html +930 -0
  82. package/snippets/timeline.html +364 -0
  83. package/snippets/toasts.html +154 -0
  84. package/snippets/tooltips.html +411 -0
  85. package/snippets/typography.html +101 -0
  86. package/snippets/utilities.html +595 -0
  87. package/snippets/virtual-scroll.html +322 -0
  88. package/snippets/web-daterangepicker.html +634 -0
  89. package/snippets/web-multiselect.html +362 -0
  90. package/src/scss/.claude/settings.local.json +11 -0
  91. package/src/scss/_base-css-variables.scss +348 -0
  92. package/src/scss/_core.scss +99 -0
  93. package/src/scss/_fonts.scss +67 -0
  94. package/src/scss/_purecss-grid-responsive.scss +138 -0
  95. package/src/scss/_purecss-grid.scss +58 -0
  96. package/src/scss/_variables.scss +14 -0
  97. package/src/scss/core-components/_alerts.scss +212 -0
  98. package/src/scss/core-components/_badges.scss +16 -0
  99. package/src/scss/core-components/_base.scss +124 -0
  100. package/src/scss/core-components/_buttons.scss +473 -0
  101. package/src/scss/core-components/_cards.scss +285 -0
  102. package/src/scss/core-components/_checkbox-lists.scss +289 -0
  103. package/src/scss/core-components/_code.scss +141 -0
  104. package/src/scss/core-components/_command-palette.scss +518 -0
  105. package/src/scss/core-components/_comparison.scss +172 -0
  106. package/src/scss/core-components/_file-selector.scss +780 -0
  107. package/src/scss/core-components/_forms.scss +16 -0
  108. package/src/scss/core-components/_grid.scss +264 -0
  109. package/src/scss/core-components/_layout.scss +15 -0
  110. package/src/scss/core-components/_lists.scss +211 -0
  111. package/src/scss/core-components/_loaders.scss +277 -0
  112. package/src/scss/core-components/_logic-tree.scss +280 -0
  113. package/src/scss/core-components/_modals.scss +209 -0
  114. package/src/scss/core-components/_notifications.scss +253 -0
  115. package/src/scss/core-components/_pagers.scss +141 -0
  116. package/src/scss/core-components/_popconfirm.scss +170 -0
  117. package/src/scss/core-components/_profile.scss +281 -0
  118. package/src/scss/core-components/_settings-panel.scss +128 -0
  119. package/src/scss/core-components/_statistics.scss +200 -0
  120. package/src/scss/core-components/_tables.scss +555 -0
  121. package/src/scss/core-components/_tabs.scss +438 -0
  122. package/src/scss/core-components/_timeline.scss +589 -0
  123. package/src/scss/core-components/_toasts.scss +281 -0
  124. package/src/scss/core-components/_tooltips.scss +503 -0
  125. package/src/scss/core-components/_utilities.scss +241 -0
  126. package/src/scss/core-components/_web-components-theme.scss +294 -0
  127. package/src/scss/core-components/badges/_badge-base.scss +131 -0
  128. package/src/scss/core-components/badges/_badge-group.scss +25 -0
  129. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
  130. package/src/scss/core-components/badges/_composite-badge.scss +70 -0
  131. package/src/scss/core-components/badges/_index.scss +10 -0
  132. package/src/scss/core-components/badges/_labels.scss +155 -0
  133. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
  134. package/src/scss/core-components/forms/_form-inputs.scss +100 -0
  135. package/src/scss/core-components/forms/_form-layout.scss +66 -0
  136. package/src/scss/core-components/forms/_form-states.scss +89 -0
  137. package/src/scss/core-components/forms/_index.scss +12 -0
  138. package/src/scss/core-components/forms/_input-groups.scss +149 -0
  139. package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
  140. package/src/scss/core-components/forms/_query-editor.scss +313 -0
  141. package/src/scss/core-components/layout/_index.scss +11 -0
  142. package/src/scss/core-components/layout/_layout-container.scss +105 -0
  143. package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
  144. package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
  145. package/src/scss/core-components/layout/_navbar.scss +71 -0
  146. package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
  147. package/src/scss/core-components/layout/_sidebar.scss +177 -0
  148. package/src/scss/main.scss +7 -0
  149. package/src/scss/themes/_dark-base.scss +207 -0
  150. package/src/scss/themes/audi-light.scss +311 -0
  151. package/src/scss/themes/audi.scss +288 -0
  152. package/src/scss/themes/corporate.scss +203 -0
  153. package/src/scss/themes/dark-blue.scss +152 -0
  154. package/src/scss/themes/dark-green.scss +156 -0
  155. package/src/scss/themes/dark-red.scss +160 -0
  156. package/src/scss/themes/dark.scss +145 -0
  157. package/src/scss/themes/express.scss +281 -0
  158. package/src/scss/themes/minimal.scss +121 -0
  159. package/src/scss/utilities.scss +481 -0
  160. package/src/scss/variables/_base.scss +81 -0
  161. package/src/scss/variables/_colors.scss +148 -0
  162. package/src/scss/variables/_components.scss +509 -0
  163. package/src/scss/variables/_index.scss +13 -0
  164. package/src/scss/variables/_layout.scss +65 -0
  165. package/src/scss/variables/_spacing.scss +66 -0
  166. package/src/scss/variables/_system.scss +80 -0
  167. 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
+ -->