@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.
Files changed (78) hide show
  1. package/README.md +77 -7
  2. package/dist/css/main.css +1313 -452
  3. package/package.json +1 -1
  4. package/snippets/customization.html +1 -1
  5. package/snippets/layout.html +66 -0
  6. package/snippets/manifest.json +0 -50
  7. package/snippets/profile.html +51 -3
  8. package/src/scss/_base-css-variables.scss +432 -422
  9. package/src/scss/_core.scss +105 -105
  10. package/src/scss/_fonts.scss +0 -14
  11. package/src/scss/_variables.scss +12 -14
  12. package/src/scss/core-components/_alerts.scss +7 -7
  13. package/src/scss/core-components/_base.scss +3 -3
  14. package/src/scss/core-components/_buttons.scss +425 -425
  15. package/src/scss/core-components/_callouts.scss +139 -139
  16. package/src/scss/core-components/_cards.scss +321 -321
  17. package/src/scss/core-components/_checkbox-lists.scss +2 -2
  18. package/src/scss/core-components/_code.scss +4 -4
  19. package/src/scss/core-components/_command-palette.scss +518 -518
  20. package/src/scss/core-components/_comparison.scss +3 -3
  21. package/src/scss/core-components/_file-selector.scss +780 -780
  22. package/src/scss/core-components/_forms.scss +16 -16
  23. package/src/scss/core-components/_grid.scss +25 -0
  24. package/src/scss/core-components/_layout.scss +15 -15
  25. package/src/scss/core-components/_lists.scss +7 -7
  26. package/src/scss/core-components/_logic-tree.scss +280 -280
  27. package/src/scss/core-components/_modals.scss +2 -2
  28. package/src/scss/core-components/_notifications.scss +74 -7
  29. package/src/scss/core-components/_pagers.scss +3 -3
  30. package/src/scss/core-components/_popconfirm.scss +1 -1
  31. package/src/scss/core-components/_profile.scss +400 -379
  32. package/src/scss/core-components/_scrollbars.scss +40 -41
  33. package/src/scss/core-components/_settings-panel.scss +5 -5
  34. package/src/scss/core-components/_statistics.scss +6 -6
  35. package/src/scss/core-components/_tables.scss +566 -566
  36. package/src/scss/core-components/_tabs.scss +493 -493
  37. package/src/scss/core-components/_timeline.scss +15 -15
  38. package/src/scss/core-components/_toasts.scss +4 -4
  39. package/src/scss/core-components/_tooltips.scss +8 -8
  40. package/src/scss/core-components/_utilities.scss +35 -30
  41. package/src/scss/core-components/_web-components-theme.scss +294 -294
  42. package/src/scss/core-components/badges/_composite-badge-variants.scss +3 -3
  43. package/src/scss/core-components/badges/_labels.scss +1 -1
  44. package/src/scss/core-components/forms/_checkboxes-radios.scss +2 -2
  45. package/src/scss/core-components/forms/_form-inputs.scss +4 -4
  46. package/src/scss/core-components/forms/_form-layout.scss +2 -2
  47. package/src/scss/core-components/forms/_form-states.scss +1 -1
  48. package/src/scss/core-components/forms/_input-groups.scss +13 -11
  49. package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
  50. package/src/scss/core-components/forms/_query-editor.scss +17 -17
  51. package/src/scss/core-components/layout/_layout-container.scss +33 -1
  52. package/src/scss/core-components/layout/_navbar-elements.scss +1 -1
  53. package/src/scss/core-components/layout/_sidebar.scss +53 -2
  54. package/src/scss/utilities.scss +81 -2
  55. package/src/scss/variables/_base.scss +20 -10
  56. package/src/scss/variables/_colors.scss +7 -6
  57. package/src/scss/variables/_components.scss +8 -11
  58. package/src/scss/variables/_index.scss +11 -7
  59. package/src/scss/variables/_spacing.scss +12 -0
  60. package/src/scss/variables/_typography.scss +2 -2
  61. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  62. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  63. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  64. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  65. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  66. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  67. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  68. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  69. package/src/scss/themes/_dark-base.scss +0 -207
  70. package/src/scss/themes/audi-light.scss +0 -341
  71. package/src/scss/themes/audi.scss +0 -303
  72. package/src/scss/themes/corporate.scss +0 -229
  73. package/src/scss/themes/dark-blue.scss +0 -165
  74. package/src/scss/themes/dark-green.scss +0 -169
  75. package/src/scss/themes/dark-red.scss +0 -173
  76. package/src/scss/themes/dark.scss +0 -158
  77. package/src/scss/themes/express.scss +0 -294
  78. package/src/scss/themes/minimal.scss +0 -134
@@ -31,7 +31,7 @@
31
31
  flex-shrink: 0;
32
32
  padding-top: $input-padding-v;
33
33
  margin-bottom: 0;
34
- color: var(--pa-text-primary);
34
+ color: var(--pa-text-color-1);
35
35
  font-weight: $font-weight-medium;
36
36
  font-size: $font-size-sm;
37
37
  }
@@ -51,7 +51,7 @@
51
51
  align-items: center;
52
52
  gap: $form-scale;
53
53
  margin-bottom: $form-label-margin-bottom;
54
- color: var(--pa-text-primary);
54
+ color: var(--pa-text-color-1);
55
55
  font-weight: $font-weight-medium;
56
56
  font-size: $font-size-sm;
57
57
  }
@@ -77,7 +77,7 @@
77
77
  display: block;
78
78
  margin-top: $form-help-margin-top;
79
79
  font-size: $font-size-xs;
80
- color: var(--pa-text-secondary);
80
+ color: var(--pa-text-color-2);
81
81
 
82
82
  &--error {
83
83
  color: var(--pa-danger-bg);
@@ -35,10 +35,11 @@
35
35
  &__append {
36
36
  display: flex;
37
37
  align-items: center;
38
- padding: $input-padding-v $input-padding-h;
38
+ height: #{$base-input-size-md-height}rem;
39
+ line-height: #{$base-input-size-md-height}rem;
40
+ padding: 0 $input-padding-h;
39
41
  border: $border-width-base solid var(--pa-border-color);
40
42
  font-size: $font-size-sm;
41
- line-height: 1;
42
43
  white-space: nowrap;
43
44
  border-radius: 0;
44
45
  }
@@ -74,8 +75,8 @@
74
75
  border-left: $border-width-base solid var(--pa-border-color);
75
76
  }
76
77
 
77
- // When input is focused, only show focus border on edges adjacent to input
78
- &:focus-within {
78
+ // When input is focused, show focus border on adjacent prepend/append
79
+ &:has(.pa-input:focus) {
79
80
  // Last prepend (one before input) gets focus border
80
81
  .pa-input-group__prepend {
81
82
  border-right: $border-width-base solid var(--pa-input-focus-border-color);
@@ -99,13 +100,10 @@
99
100
 
100
101
  &__button {
101
102
  border-radius: 0;
102
- border-color: var(--pa-border-color);
103
- border-left: none;
104
103
 
105
104
  &:first-child {
106
105
  border-top-left-radius: $border-radius;
107
106
  border-bottom-left-radius: $border-radius;
108
- border-left: $border-width-base solid var(--pa-border-color);
109
107
  }
110
108
 
111
109
  &:last-child {
@@ -118,7 +116,8 @@
118
116
  &--xs {
119
117
  .pa-input-group__prepend,
120
118
  .pa-input-group__append {
121
- padding: $input-padding-xs-v $input-padding-h;
119
+ height: #{$base-input-size-xs-height}rem;
120
+ line-height: #{$base-input-size-xs-height}rem;
122
121
  font-size: $font-size-xs;
123
122
  }
124
123
  }
@@ -126,7 +125,8 @@
126
125
  &--sm {
127
126
  .pa-input-group__prepend,
128
127
  .pa-input-group__append {
129
- padding: $input-padding-v $input-padding-h;
128
+ height: #{$base-input-size-sm-height}rem;
129
+ line-height: #{$base-input-size-sm-height}rem;
130
130
  font-size: $font-size-sm;
131
131
  }
132
132
  }
@@ -134,7 +134,8 @@
134
134
  &--lg {
135
135
  .pa-input-group__prepend,
136
136
  .pa-input-group__append {
137
- padding: $input-padding-v $input-padding-h;
137
+ height: #{$base-input-size-lg-height}rem;
138
+ line-height: #{$base-input-size-lg-height}rem;
138
139
  font-size: $font-size-base;
139
140
  }
140
141
  }
@@ -142,7 +143,8 @@
142
143
  &--xl {
143
144
  .pa-input-group__prepend,
144
145
  .pa-input-group__append {
145
- padding: $input-padding-v $input-padding-h;
146
+ height: #{$base-input-size-xl-height}rem;
147
+ line-height: #{$base-input-size-xl-height}rem;
146
148
  font-size: $font-size-lg;
147
149
  }
148
150
  }
@@ -28,7 +28,7 @@
28
28
  transform: translateY(-50%);
29
29
  background: transparent;
30
30
  border: none;
31
- color: var(--pa-text-secondary);
31
+ color: var(--pa-text-color-2);
32
32
  cursor: pointer;
33
33
  padding: $spacing-xs;
34
34
  font-size: $font-size-base;
@@ -31,7 +31,7 @@
31
31
  position: relative;
32
32
  z-index: 1;
33
33
  background: transparent;
34
- color: var(--pa-text-primary);
34
+ color: var(--pa-text-color-1);
35
35
  }
36
36
 
37
37
  &__field {
@@ -87,7 +87,7 @@
87
87
  &-type {
88
88
  margin-left: auto;
89
89
  font-size: $font-size-xs;
90
- color: var(--pa-text-secondary);
90
+ color: var(--pa-text-color-2);
91
91
  opacity: 0.7;
92
92
  }
93
93
  }
@@ -96,7 +96,7 @@
96
96
  padding: $spacing-xs $spacing-md;
97
97
  font-size: $font-size-xs;
98
98
  font-weight: $font-weight-medium;
99
- color: var(--pa-text-secondary);
99
+ color: var(--pa-text-color-2);
100
100
  text-transform: uppercase;
101
101
  letter-spacing: 0.05em;
102
102
  background-color: var(--pa-card-header-bg);
@@ -106,7 +106,7 @@
106
106
  &__empty {
107
107
  padding: $spacing-md;
108
108
  text-align: center;
109
- color: var(--pa-text-secondary);
109
+ color: var(--pa-text-color-2);
110
110
  font-size: $font-size-sm;
111
111
  }
112
112
  }
@@ -120,7 +120,7 @@
120
120
  border-radius: $border-radius;
121
121
  font-size: $font-size-sm;
122
122
  background-color: var(--pa-input-bg);
123
- color: var(--pa-text-primary);
123
+ color: var(--pa-text-color-1);
124
124
  cursor: text;
125
125
  overflow-wrap: break-word;
126
126
  word-wrap: break-word;
@@ -135,7 +135,7 @@
135
135
 
136
136
  &:empty::before {
137
137
  content: attr(data-placeholder);
138
- color: var(--pa-text-secondary);
138
+ color: var(--pa-text-color-2);
139
139
  opacity: 0.7;
140
140
  pointer-events: none;
141
141
  }
@@ -195,7 +195,7 @@
195
195
  font-family: $body-font-family;
196
196
  background: transparent;
197
197
  color: transparent;
198
- caret-color: var(--pa-text-primary);
198
+ caret-color: var(--pa-text-color-1);
199
199
  resize: none;
200
200
  overflow: hidden;
201
201
  line-height: 1.5;
@@ -209,7 +209,7 @@
209
209
  }
210
210
 
211
211
  &::placeholder {
212
- color: var(--pa-text-secondary);
212
+ color: var(--pa-text-color-2);
213
213
  opacity: 0.7;
214
214
  }
215
215
  }
@@ -222,28 +222,28 @@
222
222
 
223
223
  &--field {
224
224
  background-color: rgba($accent-color, 0.15);
225
- color: var(--pa-text-primary);
225
+ color: var(--pa-text-color-1);
226
226
 
227
227
  &.pa-inline-query-token--invalid {
228
228
  background-color: rgba($danger-bg, 0.15);
229
- color: var(--pa-text-primary);
229
+ color: var(--pa-text-color-1);
230
230
  text-decoration: wavy underline;
231
231
  }
232
232
  }
233
233
 
234
234
  &--operator {
235
- background-color: rgba(var(--pa-text-secondary), 0.15);
236
- color: var(--pa-text-primary);
235
+ background-color: rgba(var(--pa-text-color-2), 0.15);
236
+ color: var(--pa-text-color-1);
237
237
  }
238
238
 
239
239
  &--value {
240
240
  background-color: rgba($success-bg, 0.15);
241
- color: var(--pa-text-primary);
241
+ color: var(--pa-text-color-1);
242
242
  }
243
243
 
244
244
  &--keyword {
245
245
  background-color: rgba($warning-bg, 0.15);
246
- color: var(--pa-text-primary);
246
+ color: var(--pa-text-color-1);
247
247
  font-style: italic;
248
248
  }
249
249
  }
@@ -295,7 +295,7 @@
295
295
  &-type {
296
296
  display: block;
297
297
  font-size: $font-size-xs;
298
- color: var(--pa-text-secondary);
298
+ color: var(--pa-text-color-2);
299
299
  opacity: 0.7;
300
300
  line-height: 1.3;
301
301
  }
@@ -304,8 +304,8 @@
304
304
  flex-shrink: 0;
305
305
  font-size: $font-size-xs;
306
306
  padding: 0.2rem 0.6rem;
307
- background-color: rgba(var(--pa-text-secondary), 0.1);
308
- color: var(--pa-text-secondary);
307
+ background-color: rgba(var(--pa-text-color-2), 0.1);
308
+ color: var(--pa-text-color-2);
309
309
  border-radius: 0.4rem;
310
310
  font-family: $body-font-family;
311
311
  }
@@ -14,7 +14,7 @@ body.pa-layout--sticky {
14
14
  .pa-layout {
15
15
  max-width: 100%;
16
16
  margin: $header-height auto 0;
17
- background-color: var(--pa-primary-bg);
17
+ background-color: var(--pa-main-bg);
18
18
  overflow: visible; // Allow tooltips to escape
19
19
  display: flex;
20
20
  flex-direction: column;
@@ -133,3 +133,35 @@ body.pa-layout--sticky .pa-layout__inner {
133
133
  gap: $spacing-xs;
134
134
  }
135
135
  }
136
+
137
+ // Responsive footer - stack sections on mobile
138
+ @media (max-width: $mobile-breakpoint) {
139
+ .pa-layout__footer {
140
+ flex-wrap: wrap;
141
+ min-height: auto;
142
+ padding: $spacing-sm $spacing-base;
143
+ }
144
+
145
+ .pa-footer__left,
146
+ .pa-footer__center,
147
+ .pa-footer__right {
148
+ flex-shrink: 1;
149
+ min-width: 0;
150
+ }
151
+
152
+ .pa-footer__left {
153
+ flex: 1 1 auto;
154
+ }
155
+
156
+ .pa-footer__center {
157
+ display: none; // Hide empty center on mobile
158
+ }
159
+
160
+ .pa-footer__right {
161
+ flex: 0 1 auto;
162
+
163
+ &--vertical {
164
+ align-items: flex-end;
165
+ }
166
+ }
167
+ }
@@ -128,7 +128,7 @@
128
128
  a {
129
129
  display: block;
130
130
  padding: $spacing-sm $spacing-base;
131
- color: var(--pa-text-primary);
131
+ color: var(--pa-text-color-1);
132
132
  border-radius: 0;
133
133
  white-space: nowrap;
134
134
  text-decoration: none;
@@ -4,17 +4,68 @@
4
4
  ======================================== */
5
5
  @use '../../variables' as *;
6
6
 
7
- // Sidebar layout element
7
+ // Local CSS variables for sidebar (runtime state, modified by JS for resize)
8
+ :root {
9
+ --pa-local-sidebar-width: #{$sidebar-width};
10
+ --pa-local-sidebar-min-width: 18rem;
11
+ --pa-local-sidebar-max-width: 50rem;
12
+ }
13
+
14
+ // Sidebar layout element - width in :where() for low specificity (utility classes can override)
15
+ :where(.pa-layout__sidebar) {
16
+ width: var(--pa-local-sidebar-width);
17
+ }
18
+
8
19
  .pa-layout__sidebar {
9
- width: $sidebar-width;
10
20
  background-color: var(--pa-sidebar-bg);
11
21
  border-right: $border-width-base solid var(--pa-border-color);
12
22
  flex-shrink: 0;
23
+ position: relative;
24
+ }
25
+
26
+ // Resize handle on sidebar edge
27
+ .pa-sidebar-resize {
28
+ position: absolute;
29
+ top: 0;
30
+ right: 0;
31
+ width: 6px;
32
+ height: 100%;
33
+ cursor: ew-resize;
34
+ z-index: 100;
35
+
36
+ // Visual indicator on hover
37
+ &::after {
38
+ content: '';
39
+ position: absolute;
40
+ top: 0;
41
+ left: 50%;
42
+ transform: translateX(-50%);
43
+ width: 2px;
44
+ height: 100%;
45
+ background-color: transparent;
46
+ transition: background-color $transition-fast $easing-snappy;
47
+ }
48
+
49
+ &:hover::after,
50
+ &--active::after {
51
+ background-color: var(--pa-accent);
52
+ }
53
+ }
54
+
55
+ // Disable text selection during resize
56
+ body.pa-sidebar-resizing {
57
+ cursor: ew-resize !important;
58
+ user-select: none;
59
+
60
+ * {
61
+ cursor: ew-resize !important;
62
+ }
13
63
  }
14
64
 
15
65
  // Sticky mode - sidebar scrolls
16
66
  body.pa-layout--sticky .pa-layout__sidebar {
17
67
  overflow-y: auto;
68
+ overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
18
69
  overflow-x: visible; // Allow tooltips to escape right
19
70
  }
20
71
 
@@ -2,6 +2,8 @@
2
2
  // Spacing utilities similar to Bootstrap/Tailwind
3
3
  // Based on rem units: 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 2.5, 3, 4, 5
4
4
 
5
+ @use './variables' as *;
6
+
5
7
  // Spacing scale
6
8
  $spacers: (
7
9
  0: 0,
@@ -129,6 +131,28 @@ $spacers: (
129
131
  margin-bottom: auto !important;
130
132
  }
131
133
 
134
+ // Semantic margin utilities (using spacing variables)
135
+ @each $name, $value in $semantic-spacers {
136
+ .m-#{$name} { margin: #{$value} !important; }
137
+ .mt-#{$name} { margin-top: #{$value} !important; }
138
+ .mr-#{$name} { margin-right: #{$value} !important; }
139
+ .mb-#{$name} { margin-bottom: #{$value} !important; }
140
+ .ml-#{$name} { margin-left: #{$value} !important; }
141
+ .mx-#{$name} { margin-left: #{$value} !important; margin-right: #{$value} !important; }
142
+ .my-#{$name} { margin-top: #{$value} !important; margin-bottom: #{$value} !important; }
143
+ }
144
+
145
+ // Semantic padding utilities (using spacing variables)
146
+ @each $name, $value in $semantic-spacers {
147
+ .p-#{$name} { padding: #{$value} !important; }
148
+ .pt-#{$name} { padding-top: #{$value} !important; }
149
+ .pr-#{$name} { padding-right: #{$value} !important; }
150
+ .pb-#{$name} { padding-bottom: #{$value} !important; }
151
+ .pl-#{$name} { padding-left: #{$value} !important; }
152
+ .px-#{$name} { padding-left: #{$value} !important; padding-right: #{$value} !important; }
153
+ .py-#{$name} { padding-top: #{$value} !important; padding-bottom: #{$value} !important; }
154
+ }
155
+
132
156
  // Display utilities
133
157
  .d-none {
134
158
  display: none !important;
@@ -277,9 +301,12 @@ $spacers: (
277
301
  .w-100 { width: 100% !important; }
278
302
  .w-auto { width: auto !important; }
279
303
 
280
- // Width utilities (fractions) - matches grid naming: pa-col-1-3, pa-col-2-3
304
+ // Width utilities (fractions) - matches grid naming
305
+ .w-1-2 { width: 50% !important; }
281
306
  .w-1-3 { width: 33.333333% !important; }
282
307
  .w-2-3 { width: 66.666667% !important; }
308
+ .w-1-4 { width: 25% !important; }
309
+ .w-3-4 { width: 75% !important; }
283
310
 
284
311
  // Min-width utilities
285
312
  .mw-25 { min-width: 25% !important; }
@@ -287,16 +314,22 @@ $spacers: (
287
314
  .mw-75 { min-width: 75% !important; }
288
315
  .mw-100 { min-width: 100% !important; }
289
316
  .mw-auto { min-width: auto !important; }
317
+ .mw-1-2 { min-width: 50% !important; }
290
318
  .mw-1-3 { min-width: 33.333333% !important; }
291
319
  .mw-2-3 { min-width: 66.666667% !important; }
320
+ .mw-1-4 { min-width: 25% !important; }
321
+ .mw-3-4 { min-width: 75% !important; }
292
322
 
293
323
  // Fixed width utilities (min-width + width locked)
294
324
  .w-25-fixed { min-width: 25% !important; width: 25% !important; }
295
325
  .w-50-fixed { min-width: 50% !important; width: 50% !important; }
296
326
  .w-75-fixed { min-width: 75% !important; width: 75% !important; }
297
327
  .w-100-fixed { min-width: 100% !important; width: 100% !important; }
328
+ .w-1-2-fixed { min-width: 50% !important; width: 50% !important; }
298
329
  .w-1-3-fixed { min-width: 33.333333% !important; width: 33.333333% !important; }
299
330
  .w-2-3-fixed { min-width: 66.666667% !important; width: 66.666667% !important; }
331
+ .w-1-4-fixed { min-width: 25% !important; width: 25% !important; }
332
+ .w-3-4-fixed { min-width: 75% !important; width: 75% !important; }
300
333
 
301
334
  // Height utilities
302
335
  .h-25 {
@@ -319,10 +352,17 @@ $spacers: (
319
352
  height: auto !important;
320
353
  }
321
354
 
355
+ // Height utilities (fractions)
356
+ .h-1-2 { height: 50% !important; }
357
+ .h-1-3 { height: 33.333333% !important; }
358
+ .h-2-3 { height: 66.666667% !important; }
359
+ .h-1-4 { height: 25% !important; }
360
+ .h-3-4 { height: 75% !important; }
361
+
322
362
  // ============================================================================
323
363
  // REM-BASED SIZING UTILITIES
324
364
  // Use 'r' suffix to distinguish from percentage-based utilities
325
- // Values: 1-10, 15, 20, 25 (rem)
365
+ // Values: 1-10, 15, 20, 25, 30, 35, 40, 45, 50 (rem)
326
366
  // ============================================================================
327
367
 
328
368
  // Width (rem)
@@ -339,6 +379,11 @@ $spacers: (
339
379
  .wr-15 { width: 15rem !important; }
340
380
  .wr-20 { width: 20rem !important; }
341
381
  .wr-25 { width: 25rem !important; }
382
+ .wr-30 { width: 30rem !important; }
383
+ .wr-35 { width: 35rem !important; }
384
+ .wr-40 { width: 40rem !important; }
385
+ .wr-45 { width: 45rem !important; }
386
+ .wr-50 { width: 50rem !important; }
342
387
 
343
388
  // Min-width (rem)
344
389
  .minwr-1 { min-width: 1rem !important; }
@@ -354,6 +399,11 @@ $spacers: (
354
399
  .minwr-15 { min-width: 15rem !important; }
355
400
  .minwr-20 { min-width: 20rem !important; }
356
401
  .minwr-25 { min-width: 25rem !important; }
402
+ .minwr-30 { min-width: 30rem !important; }
403
+ .minwr-35 { min-width: 35rem !important; }
404
+ .minwr-40 { min-width: 40rem !important; }
405
+ .minwr-45 { min-width: 45rem !important; }
406
+ .minwr-50 { min-width: 50rem !important; }
357
407
 
358
408
  // Max-width (rem)
359
409
  .maxwr-1 { max-width: 1rem !important; }
@@ -369,6 +419,11 @@ $spacers: (
369
419
  .maxwr-15 { max-width: 15rem !important; }
370
420
  .maxwr-20 { max-width: 20rem !important; }
371
421
  .maxwr-25 { max-width: 25rem !important; }
422
+ .maxwr-30 { max-width: 30rem !important; }
423
+ .maxwr-35 { max-width: 35rem !important; }
424
+ .maxwr-40 { max-width: 40rem !important; }
425
+ .maxwr-45 { max-width: 45rem !important; }
426
+ .maxwr-50 { max-width: 50rem !important; }
372
427
 
373
428
  // Height (rem)
374
429
  .hr-1 { height: 1rem !important; }
@@ -384,6 +439,11 @@ $spacers: (
384
439
  .hr-15 { height: 15rem !important; }
385
440
  .hr-20 { height: 20rem !important; }
386
441
  .hr-25 { height: 25rem !important; }
442
+ .hr-30 { height: 30rem !important; }
443
+ .hr-35 { height: 35rem !important; }
444
+ .hr-40 { height: 40rem !important; }
445
+ .hr-45 { height: 45rem !important; }
446
+ .hr-50 { height: 50rem !important; }
387
447
 
388
448
  // Min-height (rem)
389
449
  .minhr-1 { min-height: 1rem !important; }
@@ -399,6 +459,11 @@ $spacers: (
399
459
  .minhr-15 { min-height: 15rem !important; }
400
460
  .minhr-20 { min-height: 20rem !important; }
401
461
  .minhr-25 { min-height: 25rem !important; }
462
+ .minhr-30 { min-height: 30rem !important; }
463
+ .minhr-35 { min-height: 35rem !important; }
464
+ .minhr-40 { min-height: 40rem !important; }
465
+ .minhr-45 { min-height: 45rem !important; }
466
+ .minhr-50 { min-height: 50rem !important; }
402
467
 
403
468
  // Max-height (rem)
404
469
  .maxhr-1 { max-height: 1rem !important; }
@@ -414,6 +479,11 @@ $spacers: (
414
479
  .maxhr-15 { max-height: 15rem !important; }
415
480
  .maxhr-20 { max-height: 20rem !important; }
416
481
  .maxhr-25 { max-height: 25rem !important; }
482
+ .maxhr-30 { max-height: 30rem !important; }
483
+ .maxhr-35 { max-height: 35rem !important; }
484
+ .maxhr-40 { max-height: 40rem !important; }
485
+ .maxhr-45 { max-height: 45rem !important; }
486
+ .maxhr-50 { max-height: 50rem !important; }
417
487
 
418
488
  // ============================================================================
419
489
  // PERCENTAGE-BASED MIN/MAX UTILITIES
@@ -465,8 +535,11 @@ $spacers: (
465
535
  .maxw-90 { max-width: 90% !important; }
466
536
  .maxw-95 { max-width: 95% !important; }
467
537
  .maxw-100 { max-width: 100% !important; }
538
+ .maxw-1-2 { max-width: 50% !important; }
468
539
  .maxw-1-3 { max-width: 33.333333% !important; }
469
540
  .maxw-2-3 { max-width: 66.666667% !important; }
541
+ .maxw-1-4 { max-width: 25% !important; }
542
+ .maxw-3-4 { max-width: 75% !important; }
470
543
 
471
544
  // Min-height (percentage)
472
545
  .minh-5 { min-height: 5% !important; }
@@ -489,8 +562,11 @@ $spacers: (
489
562
  .minh-90 { min-height: 90% !important; }
490
563
  .minh-95 { min-height: 95% !important; }
491
564
  .minh-100 { min-height: 100% !important; }
565
+ .minh-1-2 { min-height: 50% !important; }
492
566
  .minh-1-3 { min-height: 33.333333% !important; }
493
567
  .minh-2-3 { min-height: 66.666667% !important; }
568
+ .minh-1-4 { min-height: 25% !important; }
569
+ .minh-3-4 { min-height: 75% !important; }
494
570
 
495
571
  // Max-height (percentage)
496
572
  .maxh-5 { max-height: 5% !important; }
@@ -513,8 +589,11 @@ $spacers: (
513
589
  .maxh-90 { max-height: 90% !important; }
514
590
  .maxh-95 { max-height: 95% !important; }
515
591
  .maxh-100 { max-height: 100% !important; }
592
+ .maxh-1-2 { max-height: 50% !important; }
516
593
  .maxh-1-3 { max-height: 33.333333% !important; }
517
594
  .maxh-2-3 { max-height: 66.666667% !important; }
595
+ .maxh-1-4 { max-height: 25% !important; }
596
+ .maxh-3-4 { max-height: 75% !important; }
518
597
 
519
598
  // Position utilities
520
599
  .position-static {
@@ -33,20 +33,30 @@ $base-text-color-4: #a3b1bf !default; // Quaternary text (lightest)
33
33
  $base-text-color-on-accent: #ffffff !default; // Text on accent backgrounds
34
34
 
35
35
  // =============================================================================
36
- // SURFACE COLORS
37
- // Background colors for different surface levels
36
+ // BACKGROUND COLORS
37
+ // Semantic background colors for different purposes
38
38
  // =============================================================================
39
39
 
40
- $base-surface-1: #ffffff !default; // Primary surface (cards, modals)
41
- $base-surface-2: #f8f9fa !default; // Secondary surface (subtle backgrounds)
42
- $base-surface-3: #e9ecef !default; // Tertiary surface (dividers, borders)
43
- $base-surface-inverse: #2c3e50 !default; // Inverse surface (tooltips, dark elements)
40
+ $base-main-bg: #ffffff !default; // Primary background (cards, modals, content)
41
+ $base-page-bg: #f8f9fa !default; // Page background, subtle sections
42
+ $base-subtle-bg: #e9ecef !default; // Muted areas, dividers
43
+ $base-inverse-bg: #2c3e50 !default; // Inverse background (tooltips, dark elements)
44
44
  $base-overlay-bg: rgba(0, 0, 0, 0.5) !default; // Modal/overlay background
45
45
  $base-shadow-color: rgba(0, 0, 0, 0.15) !default; // Shadow color for elevation
46
-
47
- // Backward compatibility mappings
48
- $base-primary-bg: $base-surface-1 !default;
49
- $base-primary-bg-hover: color.adjust($base-primary-bg, $lightness: -5%) !default;
46
+ $base-elevated-bg: #f5f5f5 !default; // Header row, striped rows, elevated surfaces
47
+
48
+ // Interactive state backgrounds
49
+ $base-hover-bg: $base-subtle-bg !default; // Hover state background
50
+ $base-active-bg: color.adjust($base-subtle-bg, $lightness: -5%) !default; // Active/pressed state
51
+ $base-disabled-bg: $base-subtle-bg !default; // Disabled element background
52
+
53
+ // Legacy aliases (backward compatibility)
54
+ $base-surface-1: $base-main-bg !default;
55
+ $base-surface-2: $base-page-bg !default;
56
+ $base-surface-3: $base-subtle-bg !default;
57
+ $base-surface-inverse: $base-inverse-bg !default;
58
+ $base-primary-bg: $base-main-bg !default;
59
+ $base-primary-bg-hover: color.adjust($base-main-bg, $lightness: -5%) !default;
50
60
 
51
61
  // =============================================================================
52
62
  // BORDER COLORS
@@ -5,18 +5,19 @@
5
5
  // ============================================================================
6
6
 
7
7
  @use 'sass:color';
8
- @use 'base' as *;
8
+ // NOTE: Base variables are available in global scope via @import in _index.scss
9
+ // No @use 'base' needed since we use @import for proper !default cascading
9
10
 
10
11
  // =============================================================================
11
12
  // LAYOUT COLORS (derived from base)
12
13
  // =============================================================================
13
14
 
14
- $primary-bg: $base-surface-2 !default;
15
- $bg-secondary: $base-surface-2 !default;
16
- $text-primary: $base-text-color-1 !default;
17
- $text-secondary: $base-text-color-2 !default;
15
+ $main-bg: $base-page-bg !default;
16
+ $page-bg: $base-page-bg !default;
17
+ $subtle-bg: $base-main-bg !default;
18
+ $text-color-1: $base-text-color-1 !default;
19
+ $text-color-2: $base-text-color-2 !default;
18
20
  $border-color: $base-border-color !default;
19
- $content-background-color: $base-surface-1 !default;
20
21
 
21
22
  // Header colors
22
23
  $header-bg: $base-surface-1 !default;
@@ -3,12 +3,9 @@
3
3
  // Component-specific dimensions, paddings, and settings
4
4
  // ============================================================================
5
5
 
6
- @use 'base' as *;
7
- @use 'layout' as *;
8
- @use 'typography' as *;
9
- @use 'spacing' as *;
10
- @use 'colors' as *;
11
- @use 'system' as *;
6
+ // NOTE: All base, layout, typography, spacing, colors, and system variables
7
+ // are available in global scope via @import in _index.scss
8
+ // No @use needed since we use @import for proper !default cascading
12
9
 
13
10
  // NOTE: 10px rem base - all rem values are now in 10px units (1rem = 10px)
14
11
 
@@ -229,9 +226,9 @@ $input-focus-border-color: $accent-color !default;
229
226
  $select-focus-border-color: $accent-color !default;
230
227
  $textarea-focus-border-color: $accent-color !default;
231
228
  $input-group-prepend-bg: $secondary-bg !default;
232
- $input-group-prepend-text: $text-secondary !default;
229
+ $input-group-prepend-text: $text-color-2 !default;
233
230
  $input-group-append-bg: $secondary-bg !default;
234
- $input-group-append-text: $text-secondary !default;
231
+ $input-group-append-text: $text-color-2 !default;
235
232
  $checkbox-margin-top: 0.2rem !default; // 2px (was 0.125rem)
236
233
  $checkbox-size-xs: 1.2rem !default; // 12px (was 0.75rem)
237
234
  $checkbox-size-sm: 1.4rem !default; // 14px (was 0.875rem)
@@ -260,15 +257,15 @@ $multiselect-input-padding-v: $input-padding-v !default;
260
257
  $multiselect-input-padding-h: $input-padding-h !default;
261
258
  $multiselect-dropdown-bg: $card-bg !default;
262
259
  $multiselect-dropdown-border: $border-color !default;
263
- $multiselect-dropdown-text: $text-primary !default;
260
+ $multiselect-dropdown-text: $text-color-1 !default;
264
261
  $multiselect-dropdown-shadow: $shadow-lg !default;
265
262
  $multiselect-dropdown-max-height: 32rem !default; // 320px (was 20rem)
266
- $multiselect-hint-bg: $primary-bg !default;
263
+ $multiselect-hint-bg: $main-bg !default;
267
264
  $multiselect-hint-border: $border-color !default;
268
265
  $multiselect-hint-padding: $spacing-sm !default;
269
266
  $multiselect-option-padding-v: $spacing-sm !default;
270
267
  $multiselect-option-padding-h: $spacing-md !default;
271
- $multiselect-option-hover-bg: $primary-bg !default;
268
+ $multiselect-option-hover-bg: $main-bg !default;
272
269
  $multiselect-pill-bg: $accent-light !default;
273
270
  $multiselect-pill-border: $accent-color !default;
274
271
  $multiselect-pill-padding: $spacing-xs $spacing-sm !default;