@keenmate/pure-admin-core 1.0.0 → 1.1.1

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 (77) hide show
  1. package/README.md +85 -7
  2. package/dist/css/main.css +970 -434
  3. package/package.json +1 -1
  4. package/snippets/customization.html +1 -1
  5. package/snippets/forms.html +65 -8
  6. package/snippets/layout.html +4 -4
  7. package/snippets/manifest.json +329 -219
  8. package/snippets/profile.html +51 -3
  9. package/src/scss/_base-css-variables.scss +432 -422
  10. package/src/scss/_core.scss +105 -105
  11. package/src/scss/_fonts.scss +0 -14
  12. package/src/scss/_variables.scss +12 -14
  13. package/src/scss/core-components/_alerts.scss +7 -7
  14. package/src/scss/core-components/_base.scss +3 -3
  15. package/src/scss/core-components/_buttons.scss +425 -425
  16. package/src/scss/core-components/_callouts.scss +139 -139
  17. package/src/scss/core-components/_cards.scss +321 -321
  18. package/src/scss/core-components/_checkbox-lists.scss +2 -2
  19. package/src/scss/core-components/_code.scss +4 -4
  20. package/src/scss/core-components/_command-palette.scss +518 -518
  21. package/src/scss/core-components/_comparison.scss +3 -3
  22. package/src/scss/core-components/_file-selector.scss +780 -780
  23. package/src/scss/core-components/_forms.scss +16 -16
  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 +7 -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 -389
  32. package/src/scss/core-components/_scrollbars.scss +40 -40
  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 +11 -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 +33 -4
  46. package/src/scss/core-components/forms/_form-layout.scss +2 -2
  47. package/src/scss/core-components/forms/_form-states.scss +27 -1
  48. package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
  49. package/src/scss/core-components/forms/_query-editor.scss +17 -17
  50. package/src/scss/core-components/layout/_layout-container.scss +1 -1
  51. package/src/scss/core-components/layout/_navbar-elements.scss +1 -1
  52. package/src/scss/core-components/layout/_sidebar.scss +5 -5
  53. package/src/scss/utilities.scss +24 -0
  54. package/src/scss/variables/_base.scss +20 -10
  55. package/src/scss/variables/_colors.scss +7 -6
  56. package/src/scss/variables/_components.scss +8 -11
  57. package/src/scss/variables/_index.scss +11 -7
  58. package/src/scss/variables/_spacing.scss +12 -0
  59. package/src/scss/variables/_typography.scss +2 -2
  60. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  61. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  62. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  63. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  64. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  65. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  66. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  67. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  68. package/src/scss/themes/_dark-base.scss +0 -207
  69. package/src/scss/themes/audi-light.scss +0 -341
  70. package/src/scss/themes/audi.scss +0 -303
  71. package/src/scss/themes/corporate.scss +0 -229
  72. package/src/scss/themes/dark-blue.scss +0 -165
  73. package/src/scss/themes/dark-green.scss +0 -169
  74. package/src/scss/themes/dark-red.scss +0 -173
  75. package/src/scss/themes/dark.scss +0 -158
  76. package/src/scss/themes/express.scss +0 -294
  77. package/src/scss/themes/minimal.scss +0 -134
@@ -12,7 +12,7 @@
12
12
  border-radius: $border-radius;
13
13
  font-size: $font-size-sm;
14
14
  background-color: var(--pa-input-bg);
15
- color: var(--pa-text-primary);
15
+ color: var(--pa-text-color-1);
16
16
  transition: border-color $transition-fast $easing-snappy;
17
17
 
18
18
  &:focus {
@@ -30,7 +30,7 @@
30
30
  border-radius: $border-radius;
31
31
  font-size: $font-size-sm;
32
32
  background-color: var(--pa-input-bg);
33
- color: var(--pa-text-primary);
33
+ color: var(--pa-text-color-1);
34
34
  transition: border-color $transition-fast $easing-snappy;
35
35
 
36
36
  &:focus {
@@ -47,7 +47,7 @@
47
47
  border-radius: $border-radius;
48
48
  font-size: $font-size-sm;
49
49
  background-color: var(--pa-input-bg);
50
- color: var(--pa-text-primary);
50
+ color: var(--pa-text-color-1);
51
51
  transition: border-color $transition-fast $easing-snappy;
52
52
  resize: vertical;
53
53
  min-height: $textarea-min-height;
@@ -59,7 +59,7 @@
59
59
  }
60
60
 
61
61
  &::placeholder {
62
- color: var(--pa-text-secondary);
62
+ color: var(--pa-text-color-2);
63
63
  }
64
64
  }
65
65
 
@@ -92,6 +92,35 @@
92
92
  font-size: $font-size-lg;
93
93
  }
94
94
 
95
+ // Textarea Sizes - height sets initial size, min-height prevents shrinking below that
96
+ .pa-textarea--xs {
97
+ height: 4rem;
98
+ min-height: 4rem;
99
+ padding: $input-padding-xs-v $input-padding-h;
100
+ font-size: $font-size-xs;
101
+ }
102
+
103
+ .pa-textarea--sm {
104
+ height: 6rem;
105
+ min-height: 6rem;
106
+ padding: $input-padding-v $input-padding-h;
107
+ font-size: $font-size-sm;
108
+ }
109
+
110
+ .pa-textarea--lg {
111
+ height: 12rem;
112
+ min-height: 12rem;
113
+ padding: $input-padding-v $input-padding-h;
114
+ font-size: $font-size-base;
115
+ }
116
+
117
+ .pa-textarea--xl {
118
+ height: 16rem;
119
+ min-height: 16rem;
120
+ padding: $input-padding-v $input-padding-h;
121
+ font-size: $font-size-lg;
122
+ }
123
+
95
124
  // Dark mode: invert native date/time picker icons for visibility
96
125
  .pa-mode-dark {
97
126
  input[type="date"],
@@ -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);
@@ -86,4 +86,30 @@
86
86
  &--success {
87
87
  color: var(--pa-success-bg);
88
88
  }
89
+
90
+ &--warning {
91
+ color: var(--pa-warning-bg);
92
+ }
93
+ }
94
+
95
+ // Theme Color Variants for Help Text (color-1 through color-9)
96
+ @for $i from 1 through 9 {
97
+ .pa-form-help--color-#{$i} {
98
+ color: var(--pa-color-#{$i});
99
+ }
100
+ }
101
+
102
+ // Theme Color Variants for Inputs (color-1 through color-9)
103
+ // These use theme-customizable colors from --pa-color-* CSS variables
104
+ @for $i from 1 through 9 {
105
+ .pa-input--color-#{$i},
106
+ .pa-select--color-#{$i},
107
+ .pa-textarea--color-#{$i} {
108
+ border-color: var(--pa-color-#{$i});
109
+
110
+ &:focus {
111
+ border-color: var(--pa-color-#{$i});
112
+ box-shadow: 0 0 0 $focus-ring-width color-mix(in srgb, var(--pa-color-#{$i}) 25%, transparent);
113
+ }
114
+ }
89
115
  }
@@ -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;
@@ -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,16 +4,16 @@
4
4
  ======================================== */
5
5
  @use '../../variables' as *;
6
6
 
7
- // CSS variable for sidebar width (allows JS resize)
7
+ // Local CSS variables for sidebar (runtime state, modified by JS for resize)
8
8
  :root {
9
- --pa-sidebar-width: #{$sidebar-width};
10
- --pa-sidebar-min-width: 18rem;
11
- --pa-sidebar-max-width: 50rem;
9
+ --pa-local-sidebar-width: #{$sidebar-width};
10
+ --pa-local-sidebar-min-width: 18rem;
11
+ --pa-local-sidebar-max-width: 50rem;
12
12
  }
13
13
 
14
14
  // Sidebar layout element - width in :where() for low specificity (utility classes can override)
15
15
  :where(.pa-layout__sidebar) {
16
- width: var(--pa-sidebar-width);
16
+ width: var(--pa-local-sidebar-width);
17
17
  }
18
18
 
19
19
  .pa-layout__sidebar {
@@ -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;
@@ -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;
@@ -6,14 +6,18 @@
6
6
  // IMPORTANT: Order matters for dependencies!
7
7
  // 1. Base variables are the SOURCE OF TRUTH (standalone, no imports)
8
8
  // 2. All other modules can import from base and derive their values
9
+ //
10
+ // NOTE: We use @import (not @forward) to ensure variables share the global
11
+ // scope. This allows themes to set variables BEFORE importing, and the
12
+ // !default flags will skip already-defined variables.
9
13
 
10
14
  // Base variables FIRST - single source of truth for theming
11
- @forward 'base';
15
+ @import 'base';
12
16
 
13
17
  // Derived framework variables (can use base values)
14
- @forward 'typography';
15
- @forward 'spacing';
16
- @forward 'colors';
17
- @forward 'layout';
18
- @forward 'system';
19
- @forward 'components';
18
+ @import 'typography';
19
+ @import 'spacing';
20
+ @import 'colors';
21
+ @import 'layout';
22
+ @import 'system';
23
+ @import 'components';
@@ -14,6 +14,18 @@ $spacing-lg: 2.4rem !default; // 24px (was 1.5rem)
14
14
  $spacing-xl: 3.2rem !default; // 32px (was 2rem)
15
15
  $spacing-2xl: 4.8rem !default; // 48px (was 3rem)
16
16
 
17
+ // Semantic spacers map (for utility class generation)
18
+ $semantic-spacers: (
19
+ '0': 0,
20
+ 'xs': $spacing-xs,
21
+ 'sm': $spacing-sm,
22
+ 'md': $spacing-md,
23
+ 'base': $spacing-base,
24
+ 'lg': $spacing-lg,
25
+ 'xl': $spacing-xl,
26
+ '2xl': $spacing-2xl
27
+ ) !default;
28
+
17
29
  // Border widths
18
30
  $border-width-thin: 1px !default;
19
31
  $border-width-base: 1px !default;
@@ -10,8 +10,8 @@ $font-stack-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxyge
10
10
  $font-stack-serif: Georgia, "Times New Roman", Times, serif !default;
11
11
  $font-stack-mono: "Courier New", Courier, monospace !default;
12
12
 
13
- // Body font (defaults to system, themes can override)
14
- $body-font-family: $font-stack-system !default;
13
+ // Body font (derived from $base-font-family, themes override that)
14
+ $body-font-family: $base-font-family !default;
15
15
 
16
16
  // Font sizes (all in rem for consistency) - 10px base
17
17
  $font-size-2xs: 1rem !default; // 10px (was 0.625rem)