@keenmate/pure-admin-core 1.0.0 → 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 (76) hide show
  1. package/README.md +77 -7
  2. package/dist/css/main.css +792 -431
  3. package/package.json +1 -1
  4. package/snippets/customization.html +1 -1
  5. package/snippets/layout.html +4 -4
  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/_layout.scss +15 -15
  24. package/src/scss/core-components/_lists.scss +7 -7
  25. package/src/scss/core-components/_logic-tree.scss +280 -280
  26. package/src/scss/core-components/_modals.scss +2 -2
  27. package/src/scss/core-components/_notifications.scss +7 -7
  28. package/src/scss/core-components/_pagers.scss +3 -3
  29. package/src/scss/core-components/_popconfirm.scss +1 -1
  30. package/src/scss/core-components/_profile.scss +400 -389
  31. package/src/scss/core-components/_scrollbars.scss +40 -40
  32. package/src/scss/core-components/_settings-panel.scss +5 -5
  33. package/src/scss/core-components/_statistics.scss +6 -6
  34. package/src/scss/core-components/_tables.scss +566 -566
  35. package/src/scss/core-components/_tabs.scss +493 -493
  36. package/src/scss/core-components/_timeline.scss +15 -15
  37. package/src/scss/core-components/_toasts.scss +4 -4
  38. package/src/scss/core-components/_tooltips.scss +8 -8
  39. package/src/scss/core-components/_utilities.scss +11 -30
  40. package/src/scss/core-components/_web-components-theme.scss +294 -294
  41. package/src/scss/core-components/badges/_composite-badge-variants.scss +3 -3
  42. package/src/scss/core-components/badges/_labels.scss +1 -1
  43. package/src/scss/core-components/forms/_checkboxes-radios.scss +2 -2
  44. package/src/scss/core-components/forms/_form-inputs.scss +4 -4
  45. package/src/scss/core-components/forms/_form-layout.scss +2 -2
  46. package/src/scss/core-components/forms/_form-states.scss +1 -1
  47. package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
  48. package/src/scss/core-components/forms/_query-editor.scss +17 -17
  49. package/src/scss/core-components/layout/_layout-container.scss +1 -1
  50. package/src/scss/core-components/layout/_navbar-elements.scss +1 -1
  51. package/src/scss/core-components/layout/_sidebar.scss +5 -5
  52. package/src/scss/utilities.scss +24 -0
  53. package/src/scss/variables/_base.scss +20 -10
  54. package/src/scss/variables/_colors.scss +7 -6
  55. package/src/scss/variables/_components.scss +8 -11
  56. package/src/scss/variables/_index.scss +11 -7
  57. package/src/scss/variables/_spacing.scss +12 -0
  58. package/src/scss/variables/_typography.scss +2 -2
  59. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  60. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  61. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  62. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  63. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  64. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  65. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  66. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  67. package/src/scss/themes/_dark-base.scss +0 -207
  68. package/src/scss/themes/audi-light.scss +0 -341
  69. package/src/scss/themes/audi.scss +0 -303
  70. package/src/scss/themes/corporate.scss +0 -229
  71. package/src/scss/themes/dark-blue.scss +0 -165
  72. package/src/scss/themes/dark-green.scss +0 -169
  73. package/src/scss/themes/dark-red.scss +0 -173
  74. package/src/scss/themes/dark.scss +0 -158
  75. package/src/scss/themes/express.scss +0 -294
  76. 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);
@@ -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)
@@ -1,207 +0,0 @@
1
- /* Dark Theme Base Template - Reusable mixin for dark theme variants */
2
-
3
- @mixin dark-theme-base(
4
- $theme-name,
5
- $primary-bg,
6
- $content-bg,
7
- $header-bg,
8
- $sidebar-bg,
9
- $footer-bg,
10
- $border-color,
11
- $text-primary,
12
- $text-secondary,
13
- $accent-color,
14
- $accent-hover,
15
- $accent-light,
16
- $card-bg,
17
- $card-header-bg,
18
- $card-footer-bg,
19
- $card-tabs-bg,
20
- $input-bg,
21
- $table-bg,
22
- $table-header-bg,
23
- $table-hover-bg,
24
- $table-stripe,
25
- $btn-colors,
26
- $modal-overlay-bg,
27
- $modal-content-bg
28
- ) {
29
- [data-theme="#{$theme-name}"] {
30
- // Layout dimensions (same across themes)
31
- --header-height: 2.5rem;
32
- --footer-height: 2rem;
33
- --sidebar-width: 12rem;
34
-
35
- // Theme colors
36
- --primary-bg: #{$primary-bg};
37
- --content-background-color: #{$content-bg};
38
- --header-bg: #{$header-bg};
39
- --sidebar-bg: #{$sidebar-bg};
40
- --footer-bg: #{$footer-bg};
41
- --border-color: #{$border-color};
42
- --text-primary: #{$text-primary};
43
- --text-secondary: #{$text-secondary};
44
- --accent-color: #{$accent-color};
45
- --accent-hover: #{$accent-hover};
46
- --accent-light: #{$accent-light};
47
-
48
- // Card colors
49
- --card-bg: #{$card-bg};
50
- --card-header-bg: #{$card-header-bg};
51
- --card-footer-bg: #{$card-footer-bg};
52
- --card-tabs-bg: #{$card-tabs-bg};
53
-
54
- // Input colors
55
- --input-bg: #{$input-bg};
56
- --input-border: var(--border-color);
57
- --input-text: var(--text-primary);
58
-
59
- // Table colors
60
- --table-bg: #{$table-bg};
61
- --table-header-bg: #{$table-header-bg};
62
- --table-hover-bg: #{$table-hover-bg};
63
- --table-stripe: #{$table-stripe};
64
-
65
- // Button colors
66
- --btn-primary-bg: #{map-get($btn-colors, primary)};
67
- --btn-primary-bg-hover: #{map-get($btn-colors, primary-hover)};
68
- --btn-secondary-bg: #{map-get($btn-colors, secondary)};
69
- --btn-secondary-bg-hover: #{map-get($btn-colors, secondary-hover)};
70
- --btn-success-bg: #{map-get($btn-colors, success)};
71
- --btn-success-bg-hover: #{map-get($btn-colors, success-hover)};
72
- --btn-warning-bg: #{map-get($btn-colors, warning)};
73
- --btn-warning-text: #ffffff;
74
- --btn-danger-bg: #{map-get($btn-colors, danger)};
75
- --btn-danger-bg-hover: #{map-get($btn-colors, danger-hover)};
76
- --btn-info-bg: #{map-get($btn-colors, info)};
77
- --btn-info-bg-hover: #{map-get($btn-colors, info-hover)};
78
- --btn-light-bg: #{map-get($btn-colors, light)};
79
- --btn-light-text: #{map-get($btn-colors, light-text)};
80
- --btn-light-bg-hover: #{map-get($btn-colors, light-hover)};
81
- --btn-dark-bg: #{map-get($btn-colors, dark)};
82
- --btn-dark-bg-hover: #{map-get($btn-colors, dark-hover)};
83
-
84
- // Modal colors
85
- --modal-overlay-bg: #{$modal-overlay-bg};
86
- --modal-content-bg: #{$modal-content-bg};
87
- }
88
-
89
- [data-theme="#{$theme-name}"] {
90
- body {
91
- background-color: var(--content-background-color);
92
- }
93
-
94
- .admin-content {
95
- background-color: var(--content-background-color);
96
- }
97
-
98
- .content-section {
99
- background: #{$card-bg};
100
- border: 1px solid var(--border-color);
101
- }
102
-
103
- .long-content .content-block {
104
- background: #{$card-bg};
105
- border: 1px solid var(--border-color);
106
- }
107
-
108
- .pa-card {
109
- background: var(--card-bg);
110
- border-color: var(--border-color);
111
-
112
- &__header {
113
- background: var(--card-header-bg);
114
- border-color: var(--border-color);
115
- }
116
-
117
- &__footer {
118
- background: var(--card-footer-bg);
119
- border-color: var(--border-color);
120
- }
121
- }
122
-
123
- .pa-input,
124
- .pa-select,
125
- .pa-textarea {
126
- background-color: var(--input-bg);
127
- border-color: var(--border-color);
128
- color: var(--text-primary);
129
-
130
- &:focus {
131
- border-color: var(--accent-color);
132
- box-shadow: 0 0 0 3px var(--accent-light);
133
- }
134
- }
135
-
136
- /* Table styling - comprehensive overrides */
137
- .pa-table {
138
- background-color: var(--table-bg);
139
- color: var(--text-primary);
140
-
141
- th {
142
- background-color: var(--table-header-bg);
143
- color: var(--text-primary);
144
- border-color: var(--border-color);
145
- }
146
-
147
- td {
148
- background-color: var(--table-bg);
149
- color: var(--text-primary);
150
- border-color: var(--border-color);
151
- }
152
-
153
- tr {
154
- background-color: var(--table-bg);
155
-
156
- &:hover {
157
- background-color: var(--table-hover-bg);
158
- }
159
- }
160
-
161
- tbody {
162
- tr {
163
- background-color: var(--table-bg) !important;
164
-
165
- &:hover {
166
- background-color: var(--table-hover-bg) !important;
167
- }
168
- }
169
-
170
- td {
171
- background-color: transparent !important;
172
- color: var(--text-primary);
173
- }
174
- }
175
- }
176
-
177
- /* Pure CSS table overrides */
178
- .pure-table {
179
- background-color: var(--table-bg);
180
- color: var(--text-primary);
181
-
182
- td,
183
- th {
184
- background-color: var(--table-bg);
185
- color: var(--text-primary);
186
- border-color: var(--border-color);
187
- }
188
-
189
- thead th {
190
- background-color: var(--table-header-bg);
191
- }
192
-
193
- &-striped tr:nth-child(2n-1) td {
194
- background-color: var(--table-stripe);
195
- }
196
-
197
- tr:hover td {
198
- background-color: var(--table-hover-bg);
199
- }
200
- }
201
-
202
- .component-card {
203
- background: var(--card-bg);
204
- border-color: var(--border-color);
205
- }
206
- }
207
- }