@keenmate/pure-admin-core 2.3.1 → 2.3.2
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 +5 -5
- package/dist/css/main.css +187 -178
- package/package.json +1 -1
- package/snippets/buttons.html +375 -365
- package/src/scss/_base-css-variables.scss +8 -0
- package/src/scss/_core.scss +121 -121
- package/src/scss/core-components/_alerts.scss +227 -227
- package/src/scss/core-components/_badges.scss +16 -16
- package/src/scss/core-components/_base.scss +125 -125
- package/src/scss/core-components/_buttons.scss +31 -16
- package/src/scss/core-components/_callouts.scss +152 -152
- package/src/scss/core-components/_cards.scss +488 -488
- package/src/scss/core-components/_checkbox-lists.scss +289 -289
- package/src/scss/core-components/_code.scss +141 -141
- package/src/scss/core-components/_command-palette.scss +509 -509
- package/src/scss/core-components/_comparison.scss +172 -172
- package/src/scss/core-components/_data-display.scss +9 -9
- package/src/scss/core-components/_data-viz.scss +9 -9
- package/src/scss/core-components/_detail-panel.scss +1 -1
- package/src/scss/core-components/_file-selector.scss +780 -780
- package/src/scss/core-components/_filter-card.scss +58 -58
- package/src/scss/core-components/_forms.scss +16 -16
- package/src/scss/core-components/_grid.scss +293 -293
- package/src/scss/core-components/_layout.scss +15 -15
- package/src/scss/core-components/_lists.scss +211 -211
- package/src/scss/core-components/_loaders.scss +277 -277
- package/src/scss/core-components/_logic-tree.scss +280 -280
- package/src/scss/core-components/_modals.scss +203 -203
- package/src/scss/core-components/_notifications.scss +320 -320
- package/src/scss/core-components/_pagers.scss +141 -141
- package/src/scss/core-components/_popconfirm.scss +170 -170
- package/src/scss/core-components/_profile.scss +405 -405
- package/src/scss/core-components/_scrollbars.scss +40 -40
- package/src/scss/core-components/_settings-panel.scss +141 -141
- package/src/scss/core-components/_statistics.scss +200 -201
- package/src/scss/core-components/_tables.scss +900 -900
- package/src/scss/core-components/_tabs.scss +504 -504
- package/src/scss/core-components/_timeline.scss +589 -589
- package/src/scss/core-components/_toasts.scss +425 -425
- package/src/scss/core-components/_tooltips.scss +605 -605
- package/src/scss/core-components/_utilities.scss +1 -1
- package/src/scss/core-components/_web-components-theme.scss +21 -21
- package/src/scss/core-components/badges/_badge-base.scss +121 -121
- package/src/scss/core-components/badges/_badge-group.scss +25 -25
- package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
- package/src/scss/core-components/badges/_composite-badge.scss +70 -70
- package/src/scss/core-components/badges/_index.scss +10 -10
- package/src/scss/core-components/badges/_labels.scss +155 -155
- package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
- package/src/scss/core-components/forms/_form-inputs.scss +3 -3
- package/src/scss/core-components/forms/_form-layout.scss +66 -66
- package/src/scss/core-components/forms/_form-states.scss +115 -115
- package/src/scss/core-components/forms/_index.scss +12 -12
- package/src/scss/core-components/forms/_input-groups.scss +154 -154
- package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
- package/src/scss/core-components/forms/_query-editor.scss +313 -313
- package/src/scss/core-components/layout/_index.scss +11 -11
- package/src/scss/core-components/layout/_layout-container.scss +168 -168
- package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
- package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
- package/src/scss/core-components/layout/_navbar.scss +83 -83
- package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
- package/src/scss/core-components/layout/_sidebar.scss +234 -234
- package/src/scss/main.scss +7 -7
- package/src/scss/utilities.scss +740 -740
- package/src/scss/variables/_base.scss +228 -228
- package/src/scss/variables/_components.scss +748 -748
- package/src/scss/variables/_layout.scss +65 -65
- package/src/scss/variables/_typography.scss +37 -37
|
@@ -1,168 +1,168 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Layout Container
|
|
3
|
-
Main layout wrapper, content areas, sticky/scroll modes
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Layout wrapper - applied to body for mode-specific classes
|
|
8
|
-
body.pa-layout--sticky {
|
|
9
|
-
height: 100vh;
|
|
10
|
-
overflow: hidden;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// Layout Container - centered, starts below navbar
|
|
14
|
-
.pa-layout {
|
|
15
|
-
max-width: 100%;
|
|
16
|
-
margin: $header-height auto 0;
|
|
17
|
-
background-color: var(--pa-main-bg);
|
|
18
|
-
overflow: visible; // Allow tooltips to escape
|
|
19
|
-
display: flex;
|
|
20
|
-
flex-direction: column;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Constrained widths - controlled by body class
|
|
24
|
-
body.pa-container-sm .pa-layout {
|
|
25
|
-
max-width: $layout-container-sm;
|
|
26
|
-
box-shadow: $shadow-2xl;
|
|
27
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
28
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
body.pa-container-md .pa-layout {
|
|
32
|
-
max-width: $layout-container-md;
|
|
33
|
-
box-shadow: $shadow-2xl;
|
|
34
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
35
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
body.pa-container-lg .pa-layout {
|
|
39
|
-
max-width: $layout-container-lg;
|
|
40
|
-
box-shadow: $shadow-2xl;
|
|
41
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
42
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
body.pa-container-xl .pa-layout {
|
|
46
|
-
max-width: $layout-container-xl;
|
|
47
|
-
box-shadow: $shadow-xl;
|
|
48
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
49
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
body.pa-container-2xl .pa-layout {
|
|
53
|
-
max-width: $layout-container-2xl;
|
|
54
|
-
box-shadow: $shadow-xl;
|
|
55
|
-
border-left: $border-width-base solid var(--pa-border-color);
|
|
56
|
-
border-right: $border-width-base solid var(--pa-border-color);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Sticky mode - fixed height
|
|
60
|
-
body.pa-layout--sticky .pa-layout {
|
|
61
|
-
height: calc(100vh - #{$header-height}); // Full viewport minus top margin
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Scroll mode - minimum height
|
|
65
|
-
body:not(.pa-layout--sticky) .pa-layout {
|
|
66
|
-
min-height: calc(100vh - #{$header-height}); // Ensure footer reaches bottom
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Layout inner container - flex wrapper for sidebar + content
|
|
70
|
-
.pa-layout__inner {
|
|
71
|
-
display: flex;
|
|
72
|
-
width: 100%;
|
|
73
|
-
flex: 1; // Take available space, pushing footer to bottom
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Sticky mode - inner container takes full height minus footer
|
|
77
|
-
body.pa-layout--sticky .pa-layout__inner {
|
|
78
|
-
flex: 1;
|
|
79
|
-
overflow: hidden; // Prevent overflow, let content wrapper scroll
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Content wrapper - wraps main content only
|
|
83
|
-
.pa-layout__content {
|
|
84
|
-
flex: 1;
|
|
85
|
-
display: flex;
|
|
86
|
-
flex-direction: column;
|
|
87
|
-
overflow-y: auto; // Always scrollable
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Main content area
|
|
91
|
-
.pa-layout__main {
|
|
92
|
-
flex: 1;
|
|
93
|
-
padding: $spacing-base;
|
|
94
|
-
container-type: inline-size;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Footer - outside inner, sibling to inner
|
|
98
|
-
.pa-layout__footer {
|
|
99
|
-
min-height: $footer-height;
|
|
100
|
-
background-color: var(--pa-footer-bg);
|
|
101
|
-
border-top: $border-width-base solid var(--pa-footer-border-color);
|
|
102
|
-
display: flex;
|
|
103
|
-
align-items: center;
|
|
104
|
-
padding: $spacing-xs $spacing-base;
|
|
105
|
-
flex-shrink: 0; // Don't shrink footer
|
|
106
|
-
gap: $spacing-base;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Footer sections - Start/Center/End layout (mirrors navbar structure)
|
|
110
|
-
.pa-footer__start {
|
|
111
|
-
display: flex;
|
|
112
|
-
align-items: center;
|
|
113
|
-
gap: $spacing-base;
|
|
114
|
-
flex-shrink: 0;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.pa-footer__center {
|
|
118
|
-
flex: 1;
|
|
119
|
-
min-width: 0; // Allow shrinking for ellipsis
|
|
120
|
-
display: flex;
|
|
121
|
-
align-items: center;
|
|
122
|
-
justify-content: center;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.pa-footer__end {
|
|
126
|
-
display: flex;
|
|
127
|
-
align-items: center;
|
|
128
|
-
gap: $spacing-base;
|
|
129
|
-
flex-shrink: 0;
|
|
130
|
-
|
|
131
|
-
&--vertical {
|
|
132
|
-
flex-direction: column;
|
|
133
|
-
align-items: flex-end;
|
|
134
|
-
gap: $spacing-xs;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Responsive footer - stack sections on mobile
|
|
139
|
-
@media (max-width: $mobile-breakpoint) {
|
|
140
|
-
.pa-layout__footer {
|
|
141
|
-
flex-wrap: wrap;
|
|
142
|
-
min-height: auto;
|
|
143
|
-
padding: $spacing-sm $spacing-base;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
.pa-footer__start,
|
|
147
|
-
.pa-footer__center,
|
|
148
|
-
.pa-footer__end {
|
|
149
|
-
flex-shrink: 1;
|
|
150
|
-
min-width: 0;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.pa-footer__start {
|
|
154
|
-
flex: 1 1 auto;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
.pa-footer__center {
|
|
158
|
-
display: none; // Hide empty center on mobile
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.pa-footer__end {
|
|
162
|
-
flex: 0 1 auto;
|
|
163
|
-
|
|
164
|
-
&--vertical {
|
|
165
|
-
align-items: flex-end;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Layout Container
|
|
3
|
+
Main layout wrapper, content areas, sticky/scroll modes
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Layout wrapper - applied to body for mode-specific classes
|
|
8
|
+
body.pa-layout--sticky {
|
|
9
|
+
height: 100vh;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Layout Container - centered, starts below navbar
|
|
14
|
+
.pa-layout {
|
|
15
|
+
max-width: 100%;
|
|
16
|
+
margin: $header-height auto 0;
|
|
17
|
+
background-color: var(--pa-main-bg);
|
|
18
|
+
overflow: visible; // Allow tooltips to escape
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Constrained widths - controlled by body class
|
|
24
|
+
body.pa-container-sm .pa-layout {
|
|
25
|
+
max-width: $layout-container-sm;
|
|
26
|
+
box-shadow: $shadow-2xl;
|
|
27
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
28
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
body.pa-container-md .pa-layout {
|
|
32
|
+
max-width: $layout-container-md;
|
|
33
|
+
box-shadow: $shadow-2xl;
|
|
34
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
35
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
body.pa-container-lg .pa-layout {
|
|
39
|
+
max-width: $layout-container-lg;
|
|
40
|
+
box-shadow: $shadow-2xl;
|
|
41
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
42
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
body.pa-container-xl .pa-layout {
|
|
46
|
+
max-width: $layout-container-xl;
|
|
47
|
+
box-shadow: $shadow-xl;
|
|
48
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
49
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
body.pa-container-2xl .pa-layout {
|
|
53
|
+
max-width: $layout-container-2xl;
|
|
54
|
+
box-shadow: $shadow-xl;
|
|
55
|
+
border-left: $border-width-base solid var(--pa-border-color);
|
|
56
|
+
border-right: $border-width-base solid var(--pa-border-color);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Sticky mode - fixed height
|
|
60
|
+
body.pa-layout--sticky .pa-layout {
|
|
61
|
+
height: calc(100vh - #{$header-height}); // Full viewport minus top margin
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Scroll mode - minimum height
|
|
65
|
+
body:not(.pa-layout--sticky) .pa-layout {
|
|
66
|
+
min-height: calc(100vh - #{$header-height}); // Ensure footer reaches bottom
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Layout inner container - flex wrapper for sidebar + content
|
|
70
|
+
.pa-layout__inner {
|
|
71
|
+
display: flex;
|
|
72
|
+
width: 100%;
|
|
73
|
+
flex: 1; // Take available space, pushing footer to bottom
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Sticky mode - inner container takes full height minus footer
|
|
77
|
+
body.pa-layout--sticky .pa-layout__inner {
|
|
78
|
+
flex: 1;
|
|
79
|
+
overflow: hidden; // Prevent overflow, let content wrapper scroll
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Content wrapper - wraps main content only
|
|
83
|
+
.pa-layout__content {
|
|
84
|
+
flex: 1;
|
|
85
|
+
display: flex;
|
|
86
|
+
flex-direction: column;
|
|
87
|
+
overflow-y: auto; // Always scrollable
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Main content area
|
|
91
|
+
.pa-layout__main {
|
|
92
|
+
flex: 1;
|
|
93
|
+
padding: $spacing-base;
|
|
94
|
+
container-type: inline-size;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Footer - outside inner, sibling to inner
|
|
98
|
+
.pa-layout__footer {
|
|
99
|
+
min-height: $footer-height;
|
|
100
|
+
background-color: var(--pa-footer-bg);
|
|
101
|
+
border-top: $border-width-base solid var(--pa-footer-border-color);
|
|
102
|
+
display: flex;
|
|
103
|
+
align-items: center;
|
|
104
|
+
padding: $spacing-xs $spacing-base;
|
|
105
|
+
flex-shrink: 0; // Don't shrink footer
|
|
106
|
+
gap: $spacing-base;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Footer sections - Start/Center/End layout (mirrors navbar structure)
|
|
110
|
+
.pa-footer__start {
|
|
111
|
+
display: flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
gap: $spacing-base;
|
|
114
|
+
flex-shrink: 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.pa-footer__center {
|
|
118
|
+
flex: 1;
|
|
119
|
+
min-width: 0; // Allow shrinking for ellipsis
|
|
120
|
+
display: flex;
|
|
121
|
+
align-items: center;
|
|
122
|
+
justify-content: center;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.pa-footer__end {
|
|
126
|
+
display: flex;
|
|
127
|
+
align-items: center;
|
|
128
|
+
gap: $spacing-base;
|
|
129
|
+
flex-shrink: 0;
|
|
130
|
+
|
|
131
|
+
&--vertical {
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
align-items: flex-end;
|
|
134
|
+
gap: $spacing-xs;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Responsive footer - stack sections on mobile
|
|
139
|
+
@media (max-width: $mobile-breakpoint) {
|
|
140
|
+
.pa-layout__footer {
|
|
141
|
+
flex-wrap: wrap;
|
|
142
|
+
min-height: auto;
|
|
143
|
+
padding: $spacing-sm $spacing-base;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.pa-footer__start,
|
|
147
|
+
.pa-footer__center,
|
|
148
|
+
.pa-footer__end {
|
|
149
|
+
flex-shrink: 1;
|
|
150
|
+
min-width: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.pa-footer__start {
|
|
154
|
+
flex: 1 1 auto;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.pa-footer__center {
|
|
158
|
+
display: none; // Hide empty center on mobile
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.pa-footer__end {
|
|
162
|
+
flex: 0 1 auto;
|
|
163
|
+
|
|
164
|
+
&--vertical {
|
|
165
|
+
align-items: flex-end;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
/* ========================================
|
|
2
|
-
Layout Responsive
|
|
3
|
-
Mobile and tablet media queries
|
|
4
|
-
======================================== */
|
|
5
|
-
@use '../../variables' as *;
|
|
6
|
-
|
|
7
|
-
// Responsive Design - Mobile and Tablet
|
|
8
|
-
@media (max-width: $mobile-breakpoint) {
|
|
9
|
-
// Mobile: Auto-hide sidebar, content takes full width
|
|
10
|
-
body:not(.sidebar-visible) {
|
|
11
|
-
.pa-layout__sidebar {
|
|
12
|
-
width: 0;
|
|
13
|
-
opacity: 0;
|
|
14
|
-
overflow: hidden;
|
|
15
|
-
border-inline-end: none; // RTL: flips to left
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Override icon-collapse mode on mobile - sidebar should be fully hidden
|
|
19
|
-
.pa-layout__sidebar--icon-collapse {
|
|
20
|
-
width: 0 !important;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Mobile: Fullscreen sidebar overlay when visible
|
|
25
|
-
.sidebar-visible {
|
|
26
|
-
// Use fixed positioning for mobile overlay
|
|
27
|
-
.pa-layout__inner {
|
|
28
|
-
position: relative;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.pa-layout__sidebar {
|
|
32
|
-
position: fixed;
|
|
33
|
-
top: $header-height;
|
|
34
|
-
inset-inline-start: 0; // RTL: flips to right
|
|
35
|
-
bottom: 0;
|
|
36
|
-
width: $mobile-sidebar-width;
|
|
37
|
-
z-index: 1050;
|
|
38
|
-
background-color: var(--pa-sidebar-bg);
|
|
39
|
-
opacity: 1;
|
|
40
|
-
overflow-y: auto;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Override icon-collapse mode on mobile - show full width overlay
|
|
44
|
-
.pa-layout__sidebar--icon-collapse {
|
|
45
|
-
width: $mobile-sidebar-width !important;
|
|
46
|
-
overflow-y: auto !important;
|
|
47
|
-
|
|
48
|
-
.pa-sidebar__label {
|
|
49
|
-
opacity: 1 !important;
|
|
50
|
-
width: auto !important;
|
|
51
|
-
overflow: visible !important;
|
|
52
|
-
position: static !important;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Add backdrop overlay
|
|
57
|
-
&::before {
|
|
58
|
-
content: "";
|
|
59
|
-
position: fixed;
|
|
60
|
-
top: $header-height;
|
|
61
|
-
inset-inline: 0; // RTL: covers full width
|
|
62
|
-
bottom: 0;
|
|
63
|
-
background-color: $mobile-backdrop-bg;
|
|
64
|
-
z-index: 1040;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Adjust header for mobile
|
|
69
|
-
.pa-header {
|
|
70
|
-
gap: $spacing-sm;
|
|
71
|
-
|
|
72
|
-
&__nav {
|
|
73
|
-
display: none; // Hide navigation links on mobile
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&__title h2 {
|
|
77
|
-
font-size: $font-size-sm;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Hide theme switcher label on mobile
|
|
82
|
-
.theme-switcher {
|
|
83
|
-
label {
|
|
84
|
-
display: none;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
@media (max-width: $tablet-breakpoint) and (min-width: $tablet-breakpoint-min) {
|
|
90
|
-
// Tablet: Reduce sidebar width
|
|
91
|
-
.pa-layout__sidebar {
|
|
92
|
-
width: $sidebar-width-tablet;
|
|
93
|
-
|
|
94
|
-
&__nav ul li a {
|
|
95
|
-
padding: $spacing-sm $spacing-md;
|
|
96
|
-
font-size: $font-size-sm;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
1
|
+
/* ========================================
|
|
2
|
+
Layout Responsive
|
|
3
|
+
Mobile and tablet media queries
|
|
4
|
+
======================================== */
|
|
5
|
+
@use '../../variables' as *;
|
|
6
|
+
|
|
7
|
+
// Responsive Design - Mobile and Tablet
|
|
8
|
+
@media (max-width: $mobile-breakpoint) {
|
|
9
|
+
// Mobile: Auto-hide sidebar, content takes full width
|
|
10
|
+
body:not(.sidebar-visible) {
|
|
11
|
+
.pa-layout__sidebar {
|
|
12
|
+
width: 0;
|
|
13
|
+
opacity: 0;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
border-inline-end: none; // RTL: flips to left
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Override icon-collapse mode on mobile - sidebar should be fully hidden
|
|
19
|
+
.pa-layout__sidebar--icon-collapse {
|
|
20
|
+
width: 0 !important;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Mobile: Fullscreen sidebar overlay when visible
|
|
25
|
+
.sidebar-visible {
|
|
26
|
+
// Use fixed positioning for mobile overlay
|
|
27
|
+
.pa-layout__inner {
|
|
28
|
+
position: relative;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.pa-layout__sidebar {
|
|
32
|
+
position: fixed;
|
|
33
|
+
top: $header-height;
|
|
34
|
+
inset-inline-start: 0; // RTL: flips to right
|
|
35
|
+
bottom: 0;
|
|
36
|
+
width: $mobile-sidebar-width;
|
|
37
|
+
z-index: 1050;
|
|
38
|
+
background-color: var(--pa-sidebar-bg);
|
|
39
|
+
opacity: 1;
|
|
40
|
+
overflow-y: auto;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Override icon-collapse mode on mobile - show full width overlay
|
|
44
|
+
.pa-layout__sidebar--icon-collapse {
|
|
45
|
+
width: $mobile-sidebar-width !important;
|
|
46
|
+
overflow-y: auto !important;
|
|
47
|
+
|
|
48
|
+
.pa-sidebar__label {
|
|
49
|
+
opacity: 1 !important;
|
|
50
|
+
width: auto !important;
|
|
51
|
+
overflow: visible !important;
|
|
52
|
+
position: static !important;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Add backdrop overlay
|
|
57
|
+
&::before {
|
|
58
|
+
content: "";
|
|
59
|
+
position: fixed;
|
|
60
|
+
top: $header-height;
|
|
61
|
+
inset-inline: 0; // RTL: covers full width
|
|
62
|
+
bottom: 0;
|
|
63
|
+
background-color: $mobile-backdrop-bg;
|
|
64
|
+
z-index: 1040;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Adjust header for mobile
|
|
69
|
+
.pa-header {
|
|
70
|
+
gap: $spacing-sm;
|
|
71
|
+
|
|
72
|
+
&__nav {
|
|
73
|
+
display: none; // Hide navigation links on mobile
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&__title h2 {
|
|
77
|
+
font-size: $font-size-sm;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Hide theme switcher label on mobile
|
|
82
|
+
.theme-switcher {
|
|
83
|
+
label {
|
|
84
|
+
display: none;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@media (max-width: $tablet-breakpoint) and (min-width: $tablet-breakpoint-min) {
|
|
90
|
+
// Tablet: Reduce sidebar width
|
|
91
|
+
.pa-layout__sidebar {
|
|
92
|
+
width: $sidebar-width-tablet;
|
|
93
|
+
|
|
94
|
+
&__nav ul li a {
|
|
95
|
+
padding: $spacing-sm $spacing-md;
|
|
96
|
+
font-size: $font-size-sm;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|