@keenmate/pure-admin-core 1.0.0-rc06 → 1.1.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 +77 -7
- package/dist/css/main.css +1313 -452
- package/package.json +1 -1
- package/snippets/customization.html +1 -1
- package/snippets/layout.html +66 -0
- package/snippets/manifest.json +0 -50
- package/snippets/profile.html +51 -3
- package/src/scss/_base-css-variables.scss +432 -422
- package/src/scss/_core.scss +105 -105
- package/src/scss/_fonts.scss +0 -14
- package/src/scss/_variables.scss +12 -14
- package/src/scss/core-components/_alerts.scss +7 -7
- package/src/scss/core-components/_base.scss +3 -3
- package/src/scss/core-components/_buttons.scss +425 -425
- package/src/scss/core-components/_callouts.scss +139 -139
- package/src/scss/core-components/_cards.scss +321 -321
- package/src/scss/core-components/_checkbox-lists.scss +2 -2
- package/src/scss/core-components/_code.scss +4 -4
- package/src/scss/core-components/_command-palette.scss +518 -518
- package/src/scss/core-components/_comparison.scss +3 -3
- package/src/scss/core-components/_file-selector.scss +780 -780
- package/src/scss/core-components/_forms.scss +16 -16
- package/src/scss/core-components/_grid.scss +25 -0
- package/src/scss/core-components/_layout.scss +15 -15
- package/src/scss/core-components/_lists.scss +7 -7
- package/src/scss/core-components/_logic-tree.scss +280 -280
- package/src/scss/core-components/_modals.scss +2 -2
- package/src/scss/core-components/_notifications.scss +74 -7
- package/src/scss/core-components/_pagers.scss +3 -3
- package/src/scss/core-components/_popconfirm.scss +1 -1
- package/src/scss/core-components/_profile.scss +400 -379
- package/src/scss/core-components/_scrollbars.scss +40 -41
- package/src/scss/core-components/_settings-panel.scss +5 -5
- package/src/scss/core-components/_statistics.scss +6 -6
- package/src/scss/core-components/_tables.scss +566 -566
- package/src/scss/core-components/_tabs.scss +493 -493
- package/src/scss/core-components/_timeline.scss +15 -15
- package/src/scss/core-components/_toasts.scss +4 -4
- package/src/scss/core-components/_tooltips.scss +8 -8
- package/src/scss/core-components/_utilities.scss +35 -30
- package/src/scss/core-components/_web-components-theme.scss +294 -294
- package/src/scss/core-components/badges/_composite-badge-variants.scss +3 -3
- package/src/scss/core-components/badges/_labels.scss +1 -1
- package/src/scss/core-components/forms/_checkboxes-radios.scss +2 -2
- package/src/scss/core-components/forms/_form-inputs.scss +4 -4
- package/src/scss/core-components/forms/_form-layout.scss +2 -2
- package/src/scss/core-components/forms/_form-states.scss +1 -1
- package/src/scss/core-components/forms/_input-groups.scss +13 -11
- package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
- package/src/scss/core-components/forms/_query-editor.scss +17 -17
- package/src/scss/core-components/layout/_layout-container.scss +33 -1
- package/src/scss/core-components/layout/_navbar-elements.scss +1 -1
- package/src/scss/core-components/layout/_sidebar.scss +53 -2
- package/src/scss/utilities.scss +81 -2
- package/src/scss/variables/_base.scss +20 -10
- package/src/scss/variables/_colors.scss +7 -6
- package/src/scss/variables/_components.scss +8 -11
- package/src/scss/variables/_index.scss +11 -7
- package/src/scss/variables/_spacing.scss +12 -0
- package/src/scss/variables/_typography.scss +2 -2
- 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/src/scss/themes/_dark-base.scss +0 -207
- package/src/scss/themes/audi-light.scss +0 -341
- package/src/scss/themes/audi.scss +0 -303
- package/src/scss/themes/corporate.scss +0 -229
- package/src/scss/themes/dark-blue.scss +0 -165
- package/src/scss/themes/dark-green.scss +0 -169
- package/src/scss/themes/dark-red.scss +0 -173
- package/src/scss/themes/dark.scss +0 -158
- package/src/scss/themes/express.scss +0 -294
- package/src/scss/themes/minimal.scss +0 -134
|
@@ -1,493 +1,493 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Tabs Component
|
|
3
|
-
Standalone tabs for organizing content into separate sections
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Tabs container
|
|
8
|
-
.pa-tabs {
|
|
9
|
-
display: flex;
|
|
10
|
-
flex-wrap: wrap;
|
|
11
|
-
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
12
|
-
gap: $spacing-sm;
|
|
13
|
-
margin-bottom: $tabs-margin-bottom;
|
|
14
|
-
|
|
15
|
-
// Tab items
|
|
16
|
-
&__item {
|
|
17
|
-
padding: $btn-padding-v $btn-padding-h;
|
|
18
|
-
border: none;
|
|
19
|
-
background: none;
|
|
20
|
-
color: var(--pa-text-
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
transition: all $transition-fast $easing-snappy;
|
|
23
|
-
border-bottom: $border-width-medium solid transparent;
|
|
24
|
-
display: flex;
|
|
25
|
-
align-items: center;
|
|
26
|
-
gap: $spacing-sm;
|
|
27
|
-
font-size: $font-size-sm;
|
|
28
|
-
white-space: nowrap;
|
|
29
|
-
|
|
30
|
-
&:hover {
|
|
31
|
-
color: var(--pa-text-
|
|
32
|
-
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
&--active {
|
|
36
|
-
color: $accent-color;
|
|
37
|
-
border-bottom-color: $accent-color;
|
|
38
|
-
font-weight: $font-weight-semibold;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Icons in tabs
|
|
42
|
-
i {
|
|
43
|
-
font-size: $font-size-sm;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Tab content container
|
|
48
|
-
&__content {
|
|
49
|
-
// No specific styling needed, just a wrapper
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Tab panels
|
|
53
|
-
&__panel {
|
|
54
|
-
display: none;
|
|
55
|
-
padding-top: $tabs-panel-padding-top;
|
|
56
|
-
|
|
57
|
-
&--active {
|
|
58
|
-
display: block;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Remove top margin from first heading
|
|
62
|
-
h4 {
|
|
63
|
-
margin-top: 0;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Pills variant
|
|
68
|
-
&--pills {
|
|
69
|
-
border-bottom: none;
|
|
70
|
-
gap: $spacing-sm;
|
|
71
|
-
|
|
72
|
-
.pa-tabs__item {
|
|
73
|
-
border-radius: $border-radius-lg;
|
|
74
|
-
border: $border-width-base solid transparent;
|
|
75
|
-
background-color: var(--pa-
|
|
76
|
-
|
|
77
|
-
&:hover {
|
|
78
|
-
background-color: rgba($accent-color, $tabs-pill-hover-opacity);
|
|
79
|
-
border-color: rgba($accent-color, $tabs-pill-border-opacity);
|
|
80
|
-
color: var(--pa-text-
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
&--active {
|
|
84
|
-
background-color: var(--pa-accent);
|
|
85
|
-
color: white;
|
|
86
|
-
border-color: var(--pa-accent);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Boxed variant
|
|
92
|
-
&--boxed {
|
|
93
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
94
|
-
border-radius: $border-radius-lg;
|
|
95
|
-
padding: $spacing-xs;
|
|
96
|
-
background-color: var(--pa-
|
|
97
|
-
gap: $spacing-xs;
|
|
98
|
-
|
|
99
|
-
.pa-tabs__item {
|
|
100
|
-
border-radius: $border-radius;
|
|
101
|
-
border: none;
|
|
102
|
-
border-bottom: none;
|
|
103
|
-
padding: $spacing-sm $spacing-md;
|
|
104
|
-
|
|
105
|
-
&:hover {
|
|
106
|
-
background-color: rgba($accent-color, $tabs-boxed-hover-opacity);
|
|
107
|
-
color: var(--pa-text-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
&--active {
|
|
111
|
-
background-color: var(--pa-card-bg);
|
|
112
|
-
color: var(--pa-text-
|
|
113
|
-
box-shadow: $shadow-sm;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Vertical tabs
|
|
119
|
-
&--vertical {
|
|
120
|
-
flex-direction: column;
|
|
121
|
-
border-bottom: none;
|
|
122
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
123
|
-
gap: 0;
|
|
124
|
-
margin-bottom: 0;
|
|
125
|
-
padding-right: 0;
|
|
126
|
-
width: fit-content;
|
|
127
|
-
min-width: max-content;
|
|
128
|
-
|
|
129
|
-
.pa-tabs__item {
|
|
130
|
-
justify-content: flex-start;
|
|
131
|
-
border-bottom: none;
|
|
132
|
-
border-right: $border-width-medium solid transparent;
|
|
133
|
-
padding: $spacing-sm;
|
|
134
|
-
border-radius: $border-radius 0 0 $border-radius;
|
|
135
|
-
gap: $tabs-vertical-item-gap;
|
|
136
|
-
white-space: nowrap;
|
|
137
|
-
min-height: 4rem; // Default height for vertical tabs
|
|
138
|
-
|
|
139
|
-
&:hover {
|
|
140
|
-
background-color: rgba($accent-color, $tabs-vertical-hover-opacity);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
&--active {
|
|
144
|
-
border-right-color: $accent-color;
|
|
145
|
-
background-color: rgba($accent-color, $tabs-vertical-active-opacity);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Icon with fixed width (follows sidebar pattern)
|
|
149
|
-
i {
|
|
150
|
-
width: $tabs-vertical-icon-size;
|
|
151
|
-
min-width: $tabs-vertical-icon-size;
|
|
152
|
-
display: flex;
|
|
153
|
-
align-items: center;
|
|
154
|
-
justify-content: center;
|
|
155
|
-
flex-shrink: 0;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Text with ellipsis overflow (follows sidebar pattern)
|
|
159
|
-
span {
|
|
160
|
-
overflow: hidden;
|
|
161
|
-
text-overflow: ellipsis;
|
|
162
|
-
white-space: nowrap;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Centered tabs
|
|
168
|
-
&--centered {
|
|
169
|
-
justify-content: center;
|
|
170
|
-
|
|
171
|
-
// For vertical tabs, center the content within each item
|
|
172
|
-
&.pa-tabs--vertical {
|
|
173
|
-
.pa-tabs__item {
|
|
174
|
-
display: flex !important;
|
|
175
|
-
justify-content: center;
|
|
176
|
-
align-items: center;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// No-wrap tabs - prevent wrapping (opt-out of default behavior)
|
|
182
|
-
&--nowrap {
|
|
183
|
-
flex-wrap: nowrap;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// Scrollable tabs - horizontal scroll with arrow navigation
|
|
187
|
-
&--scrollable {
|
|
188
|
-
position: relative;
|
|
189
|
-
overflow: hidden;
|
|
190
|
-
flex-wrap: nowrap; // Force no-wrap for scrolling to work
|
|
191
|
-
|
|
192
|
-
// Inner scrollable container
|
|
193
|
-
.pa-tabs__scroll-container {
|
|
194
|
-
display: flex;
|
|
195
|
-
overflow-x: auto;
|
|
196
|
-
scroll-behavior: smooth;
|
|
197
|
-
scrollbar-width: none; // Firefox
|
|
198
|
-
gap: $spacing-sm;
|
|
199
|
-
|
|
200
|
-
&::-webkit-scrollbar {
|
|
201
|
-
display: none; // Chrome, Safari
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Scroll arrows
|
|
206
|
-
.pa-tabs__scroll-btn {
|
|
207
|
-
position: absolute;
|
|
208
|
-
top: 0;
|
|
209
|
-
bottom: 0;
|
|
210
|
-
width: $tabs-scroll-btn-width;
|
|
211
|
-
border: none;
|
|
212
|
-
background: linear-gradient(to right, color-mix(in srgb, var(--pa-
|
|
213
|
-
color: var(--pa-text-
|
|
214
|
-
cursor: pointer;
|
|
215
|
-
z-index: 1;
|
|
216
|
-
display: flex;
|
|
217
|
-
align-items: center;
|
|
218
|
-
justify-content: center;
|
|
219
|
-
transition: opacity $transition-fast;
|
|
220
|
-
opacity: 0;
|
|
221
|
-
pointer-events: none;
|
|
222
|
-
|
|
223
|
-
&:hover {
|
|
224
|
-
background: linear-gradient(to right, var(--pa-
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
&--left {
|
|
228
|
-
left: 0;
|
|
229
|
-
background: linear-gradient(to right, color-mix(in srgb, var(--pa-
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
&--right {
|
|
233
|
-
right: 0;
|
|
234
|
-
background: linear-gradient(to left, color-mix(in srgb, var(--pa-
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
&--visible {
|
|
238
|
-
opacity: 1;
|
|
239
|
-
pointer-events: auto;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
i {
|
|
243
|
-
font-size: $font-size-lg;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// Collapse tabs - show only icons when constrained, active tab shows full title
|
|
249
|
-
&--collapse {
|
|
250
|
-
flex-wrap: nowrap; // Don't wrap collapsed tabs
|
|
251
|
-
|
|
252
|
-
// Hide text spans by default (only show icons)
|
|
253
|
-
.pa-tabs__item {
|
|
254
|
-
span {
|
|
255
|
-
display: none;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Active tab shows both icon and text
|
|
259
|
-
&--active {
|
|
260
|
-
span {
|
|
261
|
-
display: inline;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// Tooltips on collapsed tabs
|
|
266
|
-
position: relative;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Full width tabs
|
|
271
|
-
&--full {
|
|
272
|
-
.pa-tabs__item {
|
|
273
|
-
flex: 1;
|
|
274
|
-
justify-content: center;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Border top variant - active indicator on top instead of bottom
|
|
279
|
-
&--border-top {
|
|
280
|
-
border-bottom: none;
|
|
281
|
-
border-top: $border-width-base solid var(--pa-border-color);
|
|
282
|
-
|
|
283
|
-
.pa-tabs__item {
|
|
284
|
-
border-bottom: none;
|
|
285
|
-
border-top: $border-width-medium solid transparent;
|
|
286
|
-
|
|
287
|
-
&--active {
|
|
288
|
-
border-top-color: $accent-color;
|
|
289
|
-
border-bottom-color: transparent;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// Size variants
|
|
295
|
-
&--sm {
|
|
296
|
-
.pa-tabs__item {
|
|
297
|
-
padding: $btn-padding-sm-v $btn-padding-sm-h;
|
|
298
|
-
font-size: $font-size-xs;
|
|
299
|
-
|
|
300
|
-
i {
|
|
301
|
-
font-size: $font-size-xs;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
&--lg {
|
|
307
|
-
.pa-tabs__item {
|
|
308
|
-
padding: $btn-padding-lg-v $btn-padding-lg-h;
|
|
309
|
-
font-size: $font-size-lg;
|
|
310
|
-
|
|
311
|
-
i {
|
|
312
|
-
font-size: $font-size-lg;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
// Horizontal tabs container (for wrapping tabs + content)
|
|
318
|
-
&__container {
|
|
319
|
-
// Bordered variant - wraps entire tabs system in card-like border
|
|
320
|
-
&--bordered {
|
|
321
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
322
|
-
border-radius: $border-radius-lg;
|
|
323
|
-
padding: $card-body-padding-v $card-body-padding-h;
|
|
324
|
-
background-color: var(--pa-card-bg);
|
|
325
|
-
margin-bottom: $spacing-base; // Match pa-card margin
|
|
326
|
-
|
|
327
|
-
// Remove bottom border from tabs since wrapper has border
|
|
328
|
-
.pa-tabs {
|
|
329
|
-
border-bottom: none;
|
|
330
|
-
padding-bottom: $spacing-md;
|
|
331
|
-
margin-bottom: 0;
|
|
332
|
-
border-bottom: $border-width-base solid var(--pa-border-color); // Divider between tabs and content
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Remove top padding from content since wrapper provides spacing
|
|
336
|
-
.pa-tabs__content {
|
|
337
|
-
padding-top: $spacing-md;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
// Card variant - tabs act as card header (same height as pa-card__header)
|
|
342
|
-
&--card {
|
|
343
|
-
position: relative; // For dropdown positioning
|
|
344
|
-
border: $card-border-width solid var(--pa-border-color);
|
|
345
|
-
border-radius: $card-border-radius;
|
|
346
|
-
background-color: var(--pa-card-bg);
|
|
347
|
-
box-shadow: $shadow-sm;
|
|
348
|
-
margin-bottom: $spacing-base; // Match pa-card margin
|
|
349
|
-
|
|
350
|
-
.pa-tabs {
|
|
351
|
-
height: $card-header-min-height;
|
|
352
|
-
padding: $card-header-padding-v $card-header-padding-h;
|
|
353
|
-
background: var(--pa-card-header-bg);
|
|
354
|
-
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
355
|
-
box-sizing: border-box;
|
|
356
|
-
border-top-left-radius: $card-border-radius;
|
|
357
|
-
border-top-right-radius: $card-border-radius;
|
|
358
|
-
margin-bottom: 0;
|
|
359
|
-
align-items: center;
|
|
360
|
-
gap: $spacing-xs;
|
|
361
|
-
flex-wrap: nowrap;
|
|
362
|
-
overflow: visible; // Allow dropdown to overflow
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.pa-tabs__content {
|
|
366
|
-
padding: $card-body-padding-v $card-body-padding-h;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
.pa-tabs__panel {
|
|
370
|
-
padding-top: 0;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
// Overflow toggle for tabs that don't fit
|
|
374
|
-
.pa-tabs__overflow {
|
|
375
|
-
position: relative;
|
|
376
|
-
margin-left: auto;
|
|
377
|
-
flex-shrink: 0;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
.pa-tabs__overflow-toggle {
|
|
381
|
-
position: relative;
|
|
382
|
-
display: flex;
|
|
383
|
-
align-items: center;
|
|
384
|
-
justify-content: center;
|
|
385
|
-
width: $card-header-min-height;
|
|
386
|
-
height: 100%;
|
|
387
|
-
padding: 0;
|
|
388
|
-
border: none;
|
|
389
|
-
background: transparent;
|
|
390
|
-
color: var(--pa-text-
|
|
391
|
-
cursor: pointer;
|
|
392
|
-
transition: all $transition-fast $easing-snappy;
|
|
393
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
394
|
-
margin: (-$card-header-padding-v) (-$card-header-padding-h) (-$card-header-padding-v) 0;
|
|
395
|
-
box-sizing: content-box;
|
|
396
|
-
height: $card-header-min-height;
|
|
397
|
-
|
|
398
|
-
&:hover {
|
|
399
|
-
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
400
|
-
color: var(--pa-text-
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// When overflow contains the active tab
|
|
404
|
-
&--has-active {
|
|
405
|
-
color: var(--pa-accent);
|
|
406
|
-
|
|
407
|
-
&::after {
|
|
408
|
-
content: '';
|
|
409
|
-
position: absolute;
|
|
410
|
-
bottom: 0;
|
|
411
|
-
left: 0;
|
|
412
|
-
right: 0;
|
|
413
|
-
height: $border-width-medium;
|
|
414
|
-
background: var(--pa-accent);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
i {
|
|
419
|
-
font-size: $font-size-sm;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
.pa-tabs__overflow-menu {
|
|
424
|
-
position: absolute;
|
|
425
|
-
top: $card-header-min-height;
|
|
426
|
-
right: 0;
|
|
427
|
-
min-width: 15rem;
|
|
428
|
-
background: var(--pa-card-bg);
|
|
429
|
-
border: $card-border-width solid var(--pa-border-color);
|
|
430
|
-
border-radius: $border-radius;
|
|
431
|
-
box-shadow: $shadow-lg;
|
|
432
|
-
z-index: $z-index-dropdown;
|
|
433
|
-
display: none;
|
|
434
|
-
flex-direction: column;
|
|
435
|
-
padding: $spacing-xs 0;
|
|
436
|
-
|
|
437
|
-
&--open {
|
|
438
|
-
display: flex;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
.pa-tabs__item {
|
|
442
|
-
padding: $spacing-sm $spacing-base;
|
|
443
|
-
border: none;
|
|
444
|
-
border-bottom: none;
|
|
445
|
-
border-radius: 0;
|
|
446
|
-
text-align: left;
|
|
447
|
-
white-space: nowrap;
|
|
448
|
-
|
|
449
|
-
&:hover {
|
|
450
|
-
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
&--active {
|
|
454
|
-
background-color: rgba($accent-color, 0.1);
|
|
455
|
-
border-bottom: none;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
// Vertical tabs layout wrapper (for proper spacing with content)
|
|
463
|
-
&__vertical-layout {
|
|
464
|
-
display: flex;
|
|
465
|
-
gap: $spacing-base;
|
|
466
|
-
align-items: flex-start;
|
|
467
|
-
|
|
468
|
-
// All panels in vertical layout should have no top padding (aligned horizontally with tabs)
|
|
469
|
-
.pa-tabs__content .pa-tabs__panel {
|
|
470
|
-
padding-top: 0;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
// Bordered variant - wraps entire tabs system in card-like border
|
|
474
|
-
&--bordered {
|
|
475
|
-
border: $border-width-base solid var(--pa-border-color);
|
|
476
|
-
border-radius: $border-radius-lg;
|
|
477
|
-
padding: $card-body-padding-v $card-body-padding-h;
|
|
478
|
-
background-color: var(--pa-card-bg);
|
|
479
|
-
margin-bottom: $spacing-base; // Match pa-card margin
|
|
480
|
-
|
|
481
|
-
// Add divider between tabs and content (gap already provides spacing)
|
|
482
|
-
.pa-tabs--vertical {
|
|
483
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
484
|
-
|
|
485
|
-
// Make tab items full width so active border reaches divider
|
|
486
|
-
.pa-tabs__item {
|
|
487
|
-
width: 100%;
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Tabs Component
|
|
3
|
+
Standalone tabs for organizing content into separate sections
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Tabs container
|
|
8
|
+
.pa-tabs {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-wrap: wrap;
|
|
11
|
+
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
12
|
+
gap: $spacing-sm;
|
|
13
|
+
margin-bottom: $tabs-margin-bottom;
|
|
14
|
+
|
|
15
|
+
// Tab items
|
|
16
|
+
&__item {
|
|
17
|
+
padding: $btn-padding-v $btn-padding-h;
|
|
18
|
+
border: none;
|
|
19
|
+
background: none;
|
|
20
|
+
color: var(--pa-text-color-2);
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
transition: all $transition-fast $easing-snappy;
|
|
23
|
+
border-bottom: $border-width-medium solid transparent;
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: $spacing-sm;
|
|
27
|
+
font-size: $font-size-sm;
|
|
28
|
+
white-space: nowrap;
|
|
29
|
+
|
|
30
|
+
&:hover {
|
|
31
|
+
color: var(--pa-text-color-1);
|
|
32
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&--active {
|
|
36
|
+
color: $accent-color;
|
|
37
|
+
border-bottom-color: $accent-color;
|
|
38
|
+
font-weight: $font-weight-semibold;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Icons in tabs
|
|
42
|
+
i {
|
|
43
|
+
font-size: $font-size-sm;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Tab content container
|
|
48
|
+
&__content {
|
|
49
|
+
// No specific styling needed, just a wrapper
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Tab panels
|
|
53
|
+
&__panel {
|
|
54
|
+
display: none;
|
|
55
|
+
padding-top: $tabs-panel-padding-top;
|
|
56
|
+
|
|
57
|
+
&--active {
|
|
58
|
+
display: block;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Remove top margin from first heading
|
|
62
|
+
h4 {
|
|
63
|
+
margin-top: 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Pills variant
|
|
68
|
+
&--pills {
|
|
69
|
+
border-bottom: none;
|
|
70
|
+
gap: $spacing-sm;
|
|
71
|
+
|
|
72
|
+
.pa-tabs__item {
|
|
73
|
+
border-radius: $border-radius-lg;
|
|
74
|
+
border: $border-width-base solid transparent;
|
|
75
|
+
background-color: var(--pa-main-bg);
|
|
76
|
+
|
|
77
|
+
&:hover {
|
|
78
|
+
background-color: rgba($accent-color, $tabs-pill-hover-opacity);
|
|
79
|
+
border-color: rgba($accent-color, $tabs-pill-border-opacity);
|
|
80
|
+
color: var(--pa-text-color-1);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&--active {
|
|
84
|
+
background-color: var(--pa-accent);
|
|
85
|
+
color: white;
|
|
86
|
+
border-color: var(--pa-accent);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Boxed variant
|
|
92
|
+
&--boxed {
|
|
93
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
94
|
+
border-radius: $border-radius-lg;
|
|
95
|
+
padding: $spacing-xs;
|
|
96
|
+
background-color: var(--pa-main-bg);
|
|
97
|
+
gap: $spacing-xs;
|
|
98
|
+
|
|
99
|
+
.pa-tabs__item {
|
|
100
|
+
border-radius: $border-radius;
|
|
101
|
+
border: none;
|
|
102
|
+
border-bottom: none;
|
|
103
|
+
padding: $spacing-sm $spacing-md;
|
|
104
|
+
|
|
105
|
+
&:hover {
|
|
106
|
+
background-color: rgba($accent-color, $tabs-boxed-hover-opacity);
|
|
107
|
+
color: var(--pa-text-color-1);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
&--active {
|
|
111
|
+
background-color: var(--pa-card-bg);
|
|
112
|
+
color: var(--pa-text-color-1);
|
|
113
|
+
box-shadow: $shadow-sm;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Vertical tabs
|
|
119
|
+
&--vertical {
|
|
120
|
+
flex-direction: column;
|
|
121
|
+
border-bottom: none;
|
|
122
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
123
|
+
gap: 0;
|
|
124
|
+
margin-bottom: 0;
|
|
125
|
+
padding-right: 0;
|
|
126
|
+
width: fit-content;
|
|
127
|
+
min-width: max-content;
|
|
128
|
+
|
|
129
|
+
.pa-tabs__item {
|
|
130
|
+
justify-content: flex-start;
|
|
131
|
+
border-bottom: none;
|
|
132
|
+
border-right: $border-width-medium solid transparent;
|
|
133
|
+
padding: $spacing-sm;
|
|
134
|
+
border-radius: $border-radius 0 0 $border-radius;
|
|
135
|
+
gap: $tabs-vertical-item-gap;
|
|
136
|
+
white-space: nowrap;
|
|
137
|
+
min-height: 4rem; // Default height for vertical tabs
|
|
138
|
+
|
|
139
|
+
&:hover {
|
|
140
|
+
background-color: rgba($accent-color, $tabs-vertical-hover-opacity);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&--active {
|
|
144
|
+
border-right-color: $accent-color;
|
|
145
|
+
background-color: rgba($accent-color, $tabs-vertical-active-opacity);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Icon with fixed width (follows sidebar pattern)
|
|
149
|
+
i {
|
|
150
|
+
width: $tabs-vertical-icon-size;
|
|
151
|
+
min-width: $tabs-vertical-icon-size;
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
justify-content: center;
|
|
155
|
+
flex-shrink: 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Text with ellipsis overflow (follows sidebar pattern)
|
|
159
|
+
span {
|
|
160
|
+
overflow: hidden;
|
|
161
|
+
text-overflow: ellipsis;
|
|
162
|
+
white-space: nowrap;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Centered tabs
|
|
168
|
+
&--centered {
|
|
169
|
+
justify-content: center;
|
|
170
|
+
|
|
171
|
+
// For vertical tabs, center the content within each item
|
|
172
|
+
&.pa-tabs--vertical {
|
|
173
|
+
.pa-tabs__item {
|
|
174
|
+
display: flex !important;
|
|
175
|
+
justify-content: center;
|
|
176
|
+
align-items: center;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// No-wrap tabs - prevent wrapping (opt-out of default behavior)
|
|
182
|
+
&--nowrap {
|
|
183
|
+
flex-wrap: nowrap;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Scrollable tabs - horizontal scroll with arrow navigation
|
|
187
|
+
&--scrollable {
|
|
188
|
+
position: relative;
|
|
189
|
+
overflow: hidden;
|
|
190
|
+
flex-wrap: nowrap; // Force no-wrap for scrolling to work
|
|
191
|
+
|
|
192
|
+
// Inner scrollable container
|
|
193
|
+
.pa-tabs__scroll-container {
|
|
194
|
+
display: flex;
|
|
195
|
+
overflow-x: auto;
|
|
196
|
+
scroll-behavior: smooth;
|
|
197
|
+
scrollbar-width: none; // Firefox
|
|
198
|
+
gap: $spacing-sm;
|
|
199
|
+
|
|
200
|
+
&::-webkit-scrollbar {
|
|
201
|
+
display: none; // Chrome, Safari
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Scroll arrows
|
|
206
|
+
.pa-tabs__scroll-btn {
|
|
207
|
+
position: absolute;
|
|
208
|
+
top: 0;
|
|
209
|
+
bottom: 0;
|
|
210
|
+
width: $tabs-scroll-btn-width;
|
|
211
|
+
border: none;
|
|
212
|
+
background: linear-gradient(to right, color-mix(in srgb, var(--pa-main-bg) 95%, transparent), transparent);
|
|
213
|
+
color: var(--pa-text-color-1);
|
|
214
|
+
cursor: pointer;
|
|
215
|
+
z-index: 1;
|
|
216
|
+
display: flex;
|
|
217
|
+
align-items: center;
|
|
218
|
+
justify-content: center;
|
|
219
|
+
transition: opacity $transition-fast;
|
|
220
|
+
opacity: 0;
|
|
221
|
+
pointer-events: none;
|
|
222
|
+
|
|
223
|
+
&:hover {
|
|
224
|
+
background: linear-gradient(to right, var(--pa-main-bg), color-mix(in srgb, var(--pa-main-bg) 80%, transparent));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
&--left {
|
|
228
|
+
left: 0;
|
|
229
|
+
background: linear-gradient(to right, color-mix(in srgb, var(--pa-main-bg) 95%, transparent), transparent);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
&--right {
|
|
233
|
+
right: 0;
|
|
234
|
+
background: linear-gradient(to left, color-mix(in srgb, var(--pa-main-bg) 95%, transparent), transparent);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
&--visible {
|
|
238
|
+
opacity: 1;
|
|
239
|
+
pointer-events: auto;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
i {
|
|
243
|
+
font-size: $font-size-lg;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Collapse tabs - show only icons when constrained, active tab shows full title
|
|
249
|
+
&--collapse {
|
|
250
|
+
flex-wrap: nowrap; // Don't wrap collapsed tabs
|
|
251
|
+
|
|
252
|
+
// Hide text spans by default (only show icons)
|
|
253
|
+
.pa-tabs__item {
|
|
254
|
+
span {
|
|
255
|
+
display: none;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Active tab shows both icon and text
|
|
259
|
+
&--active {
|
|
260
|
+
span {
|
|
261
|
+
display: inline;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Tooltips on collapsed tabs
|
|
266
|
+
position: relative;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Full width tabs
|
|
271
|
+
&--full {
|
|
272
|
+
.pa-tabs__item {
|
|
273
|
+
flex: 1;
|
|
274
|
+
justify-content: center;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Border top variant - active indicator on top instead of bottom
|
|
279
|
+
&--border-top {
|
|
280
|
+
border-bottom: none;
|
|
281
|
+
border-top: $border-width-base solid var(--pa-border-color);
|
|
282
|
+
|
|
283
|
+
.pa-tabs__item {
|
|
284
|
+
border-bottom: none;
|
|
285
|
+
border-top: $border-width-medium solid transparent;
|
|
286
|
+
|
|
287
|
+
&--active {
|
|
288
|
+
border-top-color: $accent-color;
|
|
289
|
+
border-bottom-color: transparent;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Size variants
|
|
295
|
+
&--sm {
|
|
296
|
+
.pa-tabs__item {
|
|
297
|
+
padding: $btn-padding-sm-v $btn-padding-sm-h;
|
|
298
|
+
font-size: $font-size-xs;
|
|
299
|
+
|
|
300
|
+
i {
|
|
301
|
+
font-size: $font-size-xs;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
&--lg {
|
|
307
|
+
.pa-tabs__item {
|
|
308
|
+
padding: $btn-padding-lg-v $btn-padding-lg-h;
|
|
309
|
+
font-size: $font-size-lg;
|
|
310
|
+
|
|
311
|
+
i {
|
|
312
|
+
font-size: $font-size-lg;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Horizontal tabs container (for wrapping tabs + content)
|
|
318
|
+
&__container {
|
|
319
|
+
// Bordered variant - wraps entire tabs system in card-like border
|
|
320
|
+
&--bordered {
|
|
321
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
322
|
+
border-radius: $border-radius-lg;
|
|
323
|
+
padding: $card-body-padding-v $card-body-padding-h;
|
|
324
|
+
background-color: var(--pa-card-bg);
|
|
325
|
+
margin-bottom: $spacing-base; // Match pa-card margin
|
|
326
|
+
|
|
327
|
+
// Remove bottom border from tabs since wrapper has border
|
|
328
|
+
.pa-tabs {
|
|
329
|
+
border-bottom: none;
|
|
330
|
+
padding-bottom: $spacing-md;
|
|
331
|
+
margin-bottom: 0;
|
|
332
|
+
border-bottom: $border-width-base solid var(--pa-border-color); // Divider between tabs and content
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Remove top padding from content since wrapper provides spacing
|
|
336
|
+
.pa-tabs__content {
|
|
337
|
+
padding-top: $spacing-md;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// Card variant - tabs act as card header (same height as pa-card__header)
|
|
342
|
+
&--card {
|
|
343
|
+
position: relative; // For dropdown positioning
|
|
344
|
+
border: $card-border-width solid var(--pa-border-color);
|
|
345
|
+
border-radius: $card-border-radius;
|
|
346
|
+
background-color: var(--pa-card-bg);
|
|
347
|
+
box-shadow: $shadow-sm;
|
|
348
|
+
margin-bottom: $spacing-base; // Match pa-card margin
|
|
349
|
+
|
|
350
|
+
.pa-tabs {
|
|
351
|
+
height: $card-header-min-height;
|
|
352
|
+
padding: $card-header-padding-v $card-header-padding-h;
|
|
353
|
+
background: var(--pa-card-header-bg);
|
|
354
|
+
border-bottom: $border-width-base solid var(--pa-border-color);
|
|
355
|
+
box-sizing: border-box;
|
|
356
|
+
border-top-left-radius: $card-border-radius;
|
|
357
|
+
border-top-right-radius: $card-border-radius;
|
|
358
|
+
margin-bottom: 0;
|
|
359
|
+
align-items: center;
|
|
360
|
+
gap: $spacing-xs;
|
|
361
|
+
flex-wrap: nowrap;
|
|
362
|
+
overflow: visible; // Allow dropdown to overflow
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.pa-tabs__content {
|
|
366
|
+
padding: $card-body-padding-v $card-body-padding-h;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.pa-tabs__panel {
|
|
370
|
+
padding-top: 0;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// Overflow toggle for tabs that don't fit
|
|
374
|
+
.pa-tabs__overflow {
|
|
375
|
+
position: relative;
|
|
376
|
+
margin-left: auto;
|
|
377
|
+
flex-shrink: 0;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.pa-tabs__overflow-toggle {
|
|
381
|
+
position: relative;
|
|
382
|
+
display: flex;
|
|
383
|
+
align-items: center;
|
|
384
|
+
justify-content: center;
|
|
385
|
+
width: $card-header-min-height;
|
|
386
|
+
height: 100%;
|
|
387
|
+
padding: 0;
|
|
388
|
+
border: none;
|
|
389
|
+
background: transparent;
|
|
390
|
+
color: var(--pa-text-color-2);
|
|
391
|
+
cursor: pointer;
|
|
392
|
+
transition: all $transition-fast $easing-snappy;
|
|
393
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
394
|
+
margin: (-$card-header-padding-v) (-$card-header-padding-h) (-$card-header-padding-v) 0;
|
|
395
|
+
box-sizing: content-box;
|
|
396
|
+
height: $card-header-min-height;
|
|
397
|
+
|
|
398
|
+
&:hover {
|
|
399
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
400
|
+
color: var(--pa-text-color-1);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// When overflow contains the active tab
|
|
404
|
+
&--has-active {
|
|
405
|
+
color: var(--pa-accent);
|
|
406
|
+
|
|
407
|
+
&::after {
|
|
408
|
+
content: '';
|
|
409
|
+
position: absolute;
|
|
410
|
+
bottom: 0;
|
|
411
|
+
left: 0;
|
|
412
|
+
right: 0;
|
|
413
|
+
height: $border-width-medium;
|
|
414
|
+
background: var(--pa-accent);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
i {
|
|
419
|
+
font-size: $font-size-sm;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.pa-tabs__overflow-menu {
|
|
424
|
+
position: absolute;
|
|
425
|
+
top: $card-header-min-height;
|
|
426
|
+
right: 0;
|
|
427
|
+
min-width: 15rem;
|
|
428
|
+
background: var(--pa-card-bg);
|
|
429
|
+
border: $card-border-width solid var(--pa-border-color);
|
|
430
|
+
border-radius: $border-radius;
|
|
431
|
+
box-shadow: $shadow-lg;
|
|
432
|
+
z-index: $z-index-dropdown;
|
|
433
|
+
display: none;
|
|
434
|
+
flex-direction: column;
|
|
435
|
+
padding: $spacing-xs 0;
|
|
436
|
+
|
|
437
|
+
&--open {
|
|
438
|
+
display: flex;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.pa-tabs__item {
|
|
442
|
+
padding: $spacing-sm $spacing-base;
|
|
443
|
+
border: none;
|
|
444
|
+
border-bottom: none;
|
|
445
|
+
border-radius: 0;
|
|
446
|
+
text-align: left;
|
|
447
|
+
white-space: nowrap;
|
|
448
|
+
|
|
449
|
+
&:hover {
|
|
450
|
+
background-color: rgba($accent-color, $card-tab-hover-opacity);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
&--active {
|
|
454
|
+
background-color: rgba($accent-color, 0.1);
|
|
455
|
+
border-bottom: none;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Vertical tabs layout wrapper (for proper spacing with content)
|
|
463
|
+
&__vertical-layout {
|
|
464
|
+
display: flex;
|
|
465
|
+
gap: $spacing-base;
|
|
466
|
+
align-items: flex-start;
|
|
467
|
+
|
|
468
|
+
// All panels in vertical layout should have no top padding (aligned horizontally with tabs)
|
|
469
|
+
.pa-tabs__content .pa-tabs__panel {
|
|
470
|
+
padding-top: 0;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// Bordered variant - wraps entire tabs system in card-like border
|
|
474
|
+
&--bordered {
|
|
475
|
+
border: $border-width-base solid var(--pa-border-color);
|
|
476
|
+
border-radius: $border-radius-lg;
|
|
477
|
+
padding: $card-body-padding-v $card-body-padding-h;
|
|
478
|
+
background-color: var(--pa-card-bg);
|
|
479
|
+
margin-bottom: $spacing-base; // Match pa-card margin
|
|
480
|
+
|
|
481
|
+
// Add divider between tabs and content (gap already provides spacing)
|
|
482
|
+
.pa-tabs--vertical {
|
|
483
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
484
|
+
|
|
485
|
+
// Make tab items full width so active border reaches divider
|
|
486
|
+
.pa-tabs__item {
|
|
487
|
+
width: 100%;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
}
|