@keenmate/pure-css 1.0.0-rc06 → 1.0.0-rc08

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.
@@ -1,168 +1,168 @@
1
- @use 'variables/index' as *;
2
- /* ========================================
3
- Layout Container
4
- Main layout wrapper, content areas, sticky/scroll modes
5
- ======================================== */
6
-
7
- // Layout wrapper - applied to body for mode-specific classes
8
- body.pc-layout--sticky {
9
- height: 100vh;
10
- overflow: hidden;
11
- }
12
-
13
- // Layout Container - centered, starts below navbar
14
- .pc-layout {
15
- max-width: 100%;
16
- margin: $navbar-height auto 0;
17
- background-color: var(--pc-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.pc-container-sm .pc-layout {
25
- max-width: $layout-container-sm;
26
- box-shadow: $shadow-2xl;
27
- border-left: $border-width-base solid var(--pc-border-color);
28
- border-right: $border-width-base solid var(--pc-border-color);
29
- }
30
-
31
- body.pc-container-md .pc-layout {
32
- max-width: $layout-container-md;
33
- box-shadow: $shadow-2xl;
34
- border-left: $border-width-base solid var(--pc-border-color);
35
- border-right: $border-width-base solid var(--pc-border-color);
36
- }
37
-
38
- body.pc-container-lg .pc-layout {
39
- max-width: $layout-container-lg;
40
- box-shadow: $shadow-2xl;
41
- border-left: $border-width-base solid var(--pc-border-color);
42
- border-right: $border-width-base solid var(--pc-border-color);
43
- }
44
-
45
- body.pc-container-xl .pc-layout {
46
- max-width: $layout-container-xl;
47
- box-shadow: $shadow-xl;
48
- border-left: $border-width-base solid var(--pc-border-color);
49
- border-right: $border-width-base solid var(--pc-border-color);
50
- }
51
-
52
- body.pc-container-2xl .pc-layout {
53
- max-width: $layout-container-2xl;
54
- box-shadow: $shadow-xl;
55
- border-left: $border-width-base solid var(--pc-border-color);
56
- border-right: $border-width-base solid var(--pc-border-color);
57
- }
58
-
59
- // Sticky mode - fixed height
60
- body.pc-layout--sticky .pc-layout {
61
- height: calc(100vh - #{$navbar-height}); // Full viewport minus top margin
62
- }
63
-
64
- // Scroll mode - minimum height
65
- body:not(.pc-layout--sticky) .pc-layout {
66
- min-height: calc(100vh - #{$navbar-height}); // Ensure footer reaches bottom
67
- }
68
-
69
- // Layout inner container - flex wrapper for sidebar + content
70
- .pc-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.pc-layout--sticky .pc-layout__inner {
78
- flex: 1;
79
- overflow: hidden; // Prevent overflow, let content wrapper scroll
80
- }
81
-
82
- // Content wrapper - wraps main content only
83
- .pc-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
- .pc-layout__main {
92
- flex: 1;
93
- padding: $spacing-base;
94
- container-type: inline-size;
95
- }
96
-
97
- // Footer - outside inner, sibling to inner
98
- .pc-layout__footer {
99
- min-height: $footer-height;
100
- background-color: var(--pc-footer-bg, var(--base-main-bg));
101
- border-top: $border-width-base solid var(--pc-footer-border-color, var(--base-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
- .pc-footer__start {
111
- display: flex;
112
- align-items: center;
113
- gap: $spacing-base;
114
- flex-shrink: 0;
115
- }
116
-
117
- .pc-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
- .pc-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
- .pc-layout__footer {
141
- flex-wrap: wrap;
142
- min-height: auto;
143
- padding: $spacing-sm $spacing-base;
144
- }
145
-
146
- .pc-footer__start,
147
- .pc-footer__center,
148
- .pc-footer__end {
149
- flex-shrink: 1;
150
- min-width: 0;
151
- }
152
-
153
- .pc-footer__start {
154
- flex: 1 1 auto;
155
- }
156
-
157
- .pc-footer__center {
158
- display: none; // Hide empty center on mobile
159
- }
160
-
161
- .pc-footer__end {
162
- flex: 0 1 auto;
163
-
164
- &--vertical {
165
- align-items: flex-end;
166
- }
167
- }
168
- }
1
+ @use 'variables/index' as *;
2
+ /* ========================================
3
+ Layout Container
4
+ Main layout wrapper, content areas, sticky/scroll modes
5
+ ======================================== */
6
+
7
+ // Layout wrapper - applied to body for mode-specific classes
8
+ body.pc-layout--sticky {
9
+ height: 100vh;
10
+ overflow: hidden;
11
+ }
12
+
13
+ // Layout Container - centered, starts below navbar
14
+ .pc-layout {
15
+ max-width: 100%;
16
+ margin: $navbar-height auto 0;
17
+ background-color: var(--pc-page-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.pc-container-sm .pc-layout {
25
+ max-width: $layout-container-sm;
26
+ box-shadow: $shadow-2xl;
27
+ border-left: $border-width-base solid var(--pc-border-color);
28
+ border-right: $border-width-base solid var(--pc-border-color);
29
+ }
30
+
31
+ body.pc-container-md .pc-layout {
32
+ max-width: $layout-container-md;
33
+ box-shadow: $shadow-2xl;
34
+ border-left: $border-width-base solid var(--pc-border-color);
35
+ border-right: $border-width-base solid var(--pc-border-color);
36
+ }
37
+
38
+ body.pc-container-lg .pc-layout {
39
+ max-width: $layout-container-lg;
40
+ box-shadow: $shadow-2xl;
41
+ border-left: $border-width-base solid var(--pc-border-color);
42
+ border-right: $border-width-base solid var(--pc-border-color);
43
+ }
44
+
45
+ body.pc-container-xl .pc-layout {
46
+ max-width: $layout-container-xl;
47
+ box-shadow: $shadow-xl;
48
+ border-left: $border-width-base solid var(--pc-border-color);
49
+ border-right: $border-width-base solid var(--pc-border-color);
50
+ }
51
+
52
+ body.pc-container-2xl .pc-layout {
53
+ max-width: $layout-container-2xl;
54
+ box-shadow: $shadow-xl;
55
+ border-left: $border-width-base solid var(--pc-border-color);
56
+ border-right: $border-width-base solid var(--pc-border-color);
57
+ }
58
+
59
+ // Sticky mode - fixed height
60
+ body.pc-layout--sticky .pc-layout {
61
+ height: calc(100vh - #{$navbar-height}); // Full viewport minus top margin
62
+ }
63
+
64
+ // Scroll mode - minimum height
65
+ body:not(.pc-layout--sticky) .pc-layout {
66
+ min-height: calc(100vh - #{$navbar-height}); // Ensure footer reaches bottom
67
+ }
68
+
69
+ // Layout inner container - flex wrapper for sidebar + content
70
+ .pc-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.pc-layout--sticky .pc-layout__inner {
78
+ flex: 1;
79
+ overflow: hidden; // Prevent overflow, let content wrapper scroll
80
+ }
81
+
82
+ // Content wrapper - wraps main content only
83
+ .pc-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
+ .pc-layout__main {
92
+ flex: 1;
93
+ padding: $spacing-base;
94
+ container-type: inline-size;
95
+ }
96
+
97
+ // Footer - outside inner, sibling to inner
98
+ .pc-layout__footer {
99
+ min-height: $footer-height;
100
+ background-color: var(--pc-footer-bg, var(--base-main-bg));
101
+ border-top: $border-width-base solid var(--pc-footer-border-color, var(--base-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
+ .pc-footer__start {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: $spacing-base;
114
+ flex-shrink: 0;
115
+ }
116
+
117
+ .pc-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
+ .pc-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
+ .pc-layout__footer {
141
+ flex-wrap: wrap;
142
+ min-height: auto;
143
+ padding: $spacing-sm $spacing-base;
144
+ }
145
+
146
+ .pc-footer__start,
147
+ .pc-footer__center,
148
+ .pc-footer__end {
149
+ flex-shrink: 1;
150
+ min-width: 0;
151
+ }
152
+
153
+ .pc-footer__start {
154
+ flex: 1 1 auto;
155
+ }
156
+
157
+ .pc-footer__center {
158
+ display: none; // Hide empty center on mobile
159
+ }
160
+
161
+ .pc-footer__end {
162
+ flex: 0 1 auto;
163
+
164
+ &--vertical {
165
+ align-items: flex-end;
166
+ }
167
+ }
168
+ }
@@ -256,10 +256,19 @@
256
256
  position: relative;
257
257
  }
258
258
 
259
+ // SVG mask chevron (was a "›" text glyph). Shares --base-icon-chevron with the
260
+ // sidebar + components; --pc-icon-chevron overrides, #{$base-icon-chevron} is
261
+ // the standalone fallback. `font-size: 0` hides any legacy "›" in old markup.
259
262
  &__more-chevron {
260
263
  display: inline-block;
261
264
  margin-inline-start: $spacing-xs;
262
- font-size: $font-size-xs;
265
+ inline-size: 1.4rem;
266
+ block-size: 1.4rem;
267
+ flex-shrink: 0;
268
+ font-size: 0;
269
+ background-color: currentColor;
270
+ -webkit-mask: var(--pc-icon-chevron, var(--base-icon-chevron, #{$base-icon-chevron})) center / 1.1rem no-repeat;
271
+ mask: var(--pc-icon-chevron, var(--base-icon-chevron, #{$base-icon-chevron})) center / 1.1rem no-repeat;
263
272
  transition: transform $transition-fast $easing-snappy;
264
273
  }
265
274
 
@@ -120,11 +120,11 @@
120
120
  width: 100%;
121
121
 
122
122
  &:hover {
123
- background-color: var(--pc-sidebar-submenu-hover-bg, var(--base-subtle-bg));
123
+ background-color: var(--pc-sidebar-submenu-hover-bg, var(--base-hover-bg));
124
124
  }
125
125
 
126
126
  &--active {
127
- background-color: var(--pc-sidebar-submenu-active-bg, var(--base-subtle-bg));
127
+ background-color: var(--pc-sidebar-submenu-active-bg, var(--base-active-bg));
128
128
  color: var(--pc-sidebar-submenu-active-text, var(--base-text-color-1));
129
129
  }
130
130
  }