@keenmate/pure-css 1.0.0-rc01

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.
@@ -0,0 +1,232 @@
1
+ // ============================================================================
2
+ // BASE VARIABLES - Single Source of Truth for Theming
3
+ // ============================================================================
4
+ // These $base-* SCSS variables are the PRIMARY source for all theme colors.
5
+ // Framework variables in _colors.scss, _typography.scss, etc. DERIVE from these.
6
+ // Web components consume these via --base-* CSS custom properties.
7
+ //
8
+ // To create a theme: Override these variables, everything else auto-derives.
9
+ // ============================================================================
10
+
11
+ @use 'sass:color';
12
+
13
+ // =============================================================================
14
+ // ACCENT COLORS
15
+ // Primary brand/interactive color and its variants
16
+ // =============================================================================
17
+
18
+ $base-accent-color: #007bff !default;
19
+ $base-accent-color-hover: color.adjust($base-accent-color, $lightness: 10%) !default;
20
+ $base-accent-color-active: color.adjust($base-accent-color, $lightness: 20%) !default;
21
+ $base-accent-color-light: rgba($base-accent-color, 0.05) !default;
22
+ $base-accent-color-light-hover: rgba($base-accent-color, 0.12) !default;
23
+
24
+ // =============================================================================
25
+ // TEXT COLORS
26
+ // Hierarchical text colors for different emphasis levels
27
+ // =============================================================================
28
+
29
+ $base-text-color-1: #2c3e50 !default; // Primary text (strongest)
30
+ $base-text-color-2: #6c757d !default; // Secondary text (muted)
31
+ $base-text-color-3: #7a8a99 !default; // Tertiary text (lighter)
32
+ $base-text-color-4: #a3b1bf !default; // Quaternary text (lightest)
33
+ $base-text-color-on-accent: #ffffff !default; // Text on accent backgrounds
34
+
35
+ // =============================================================================
36
+ // BACKGROUND COLORS
37
+ // Semantic background colors for different purposes
38
+ // =============================================================================
39
+
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
+ $base-overlay-bg: rgba(0, 0, 0, 0.5) !default; // Modal/overlay background
45
+ $base-shadow-color: rgba(0, 0, 0, 0.15) !default; // Shadow color for elevation
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
+ // =============================================================================
54
+ // BORDER COLORS
55
+ // Border colors and shorthand
56
+ // =============================================================================
57
+
58
+ $base-border-color: #e1e5e9 !default;
59
+ $base-border: 1px solid $base-border-color !default;
60
+
61
+ // =============================================================================
62
+ // INPUT FIELDS
63
+ // Input field styling and states
64
+ // =============================================================================
65
+
66
+ $base-input-bg: $base-main-bg !default;
67
+ $base-input-color: #495057 !default;
68
+ $base-input-border: 1px solid #ced4da !default;
69
+ $base-input-border-hover: 1px solid #b8bfc6 !default;
70
+ $base-input-border-focus: 1px solid $base-accent-color !default;
71
+ $base-input-placeholder-color: $base-text-color-4 !default;
72
+ $base-input-bg-disabled: rgba($base-input-bg, 0.5) !default;
73
+
74
+ // Input size heights (unitless multipliers for x10px base)
75
+ $base-input-size-xs-height: 3.1 !default; // 31px
76
+ $base-input-size-sm-height: 3.3 !default; // 33px
77
+ $base-input-size-md-height: 3.5 !default; // 35px
78
+ $base-input-size-lg-height: 3.8 !default; // 38px
79
+ $base-input-size-xl-height: 4.1 !default; // 41px
80
+
81
+ // =============================================================================
82
+ // DROPDOWN / POPOVER
83
+ // Floating element styling
84
+ // =============================================================================
85
+
86
+ $base-dropdown-bg: $base-main-bg !default;
87
+ $base-dropdown-border: 1px solid $base-border-color !default;
88
+ $base-dropdown-box-shadow: 0 8px 16px $base-shadow-color !default;
89
+
90
+ // =============================================================================
91
+ // TOOLTIP
92
+ // Tooltip styling
93
+ // =============================================================================
94
+
95
+ $base-tooltip-bg: $base-inverse-bg !default;
96
+ $base-tooltip-text-color: #ffffff !default;
97
+
98
+ // =============================================================================
99
+ // CONTEXTUAL COLORS - SUCCESS
100
+ // Success/positive semantic colors
101
+ // =============================================================================
102
+
103
+ $base-success-color: #22c55e !default; // Tailwind green-500 — aligns with --pa-positive in the sentiment scale
104
+ $base-success-color-hover: color.adjust($base-success-color, $lightness: -10%) !default;
105
+ $base-success-bg-light: rgba($base-success-color, 0.1) !default;
106
+ $base-success-bg-subtle: rgba($base-success-color, 0.08) !default;
107
+ $base-success-border: rgba($base-success-color, 0.2) !default;
108
+ $base-success-text: #155724 !default;
109
+ $base-success-text-light: #d4edda !default;
110
+ $base-text-on-success: #ffffff !default;
111
+
112
+ // =============================================================================
113
+ // CONTEXTUAL COLORS - DANGER
114
+ // Danger/error semantic colors
115
+ // =============================================================================
116
+
117
+ $base-danger-color: #ef4444 !default; // Tailwind red-500 — aligns with --pa-negative in the sentiment scale
118
+ $base-danger-color-hover: color.adjust($base-danger-color, $lightness: -10%) !default;
119
+ $base-danger-bg-light: rgba($base-danger-color, 0.1) !default;
120
+ $base-danger-bg-subtle: rgba($base-danger-color, 0.08) !default;
121
+ $base-danger-border: rgba($base-danger-color, 0.2) !default;
122
+ $base-danger-text: #721c24 !default;
123
+ $base-danger-text-light: #f8d7da !default;
124
+ $base-text-on-danger: #ffffff !default;
125
+
126
+ // =============================================================================
127
+ // CONTEXTUAL COLORS - WARNING
128
+ // Warning semantic colors
129
+ // =============================================================================
130
+
131
+ $base-warning-color: #f97316 !default; // Tailwind orange-500 — also serves as the off-target axis in KPI components
132
+ $base-warning-color-hover: color.adjust($base-warning-color, $lightness: -10%) !default;
133
+ $base-warning-bg-light: rgba($base-warning-color, 0.1) !default;
134
+ $base-warning-bg-subtle: rgba($base-warning-color, 0.08) !default;
135
+ $base-warning-border: rgba($base-warning-color, 0.2) !default;
136
+ $base-warning-text: #856404 !default;
137
+ $base-warning-text-light: #fff3cd !default;
138
+ $base-text-on-warning: #212529 !default; // Dark text for yellow backgrounds
139
+
140
+ // =============================================================================
141
+ // CONTEXTUAL COLORS - INFO
142
+ // Info semantic colors
143
+ // =============================================================================
144
+
145
+ $base-info-color: #17a2b8 !default;
146
+ $base-info-color-hover: color.adjust($base-info-color, $lightness: -10%) !default;
147
+ $base-info-bg-light: rgba($base-info-color, 0.1) !default;
148
+ $base-info-bg-subtle: rgba($base-info-color, 0.08) !default;
149
+ $base-info-border: rgba($base-info-color, 0.2) !default;
150
+ $base-info-text: #0c5460 !default;
151
+ $base-info-text-light: #d1ecf1 !default;
152
+ $base-text-on-info: #ffffff !default;
153
+
154
+ // =============================================================================
155
+ // SENTIMENT SCALE — 5-step direction-of-change
156
+ // Used by KPI / data-display components to indicate movement direction.
157
+ // `--pa-positive` and `--pa-negative` alias the role colours above; the
158
+ // outlier shades (`very-positive` / `very-negative`) are explicit darker
159
+ // stops since they're not derivable cleanly via color.adjust.
160
+ // =============================================================================
161
+
162
+ $base-very-positive: #16a34a !default; // Tailwind green-600 — outlier positive
163
+ $base-very-negative: #dc2626 !default; // Tailwind red-600 — outlier negative
164
+ $base-neutral: #9ca3af !default; // Tailwind gray-400 — "no meaningful change"
165
+
166
+ // =============================================================================
167
+ // INTERACTIVE STATES
168
+ // Generic interaction feedback colors
169
+ // =============================================================================
170
+
171
+ $base-hover-overlay: rgba(0, 0, 0, 0.04) !default;
172
+ $base-active-overlay: rgba(0, 0, 0, 0.08) !default;
173
+ $base-focus-ring-color: $base-accent-color !default;
174
+ $base-focus-ring-width: 3px !default;
175
+
176
+ // =============================================================================
177
+ // TYPOGRAPHY
178
+ // Font families, sizes, weights, and line heights
179
+ // =============================================================================
180
+
181
+ $base-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !default;
182
+ $base-font-family-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace !default;
183
+
184
+ // Font sizes (unitless multipliers for x10px base)
185
+ $base-font-size-2xs: 1.0 !default; // 10px
186
+ $base-font-size-xs: 1.2 !default; // 12px
187
+ $base-font-size-sm: 1.4 !default; // 14px
188
+ $base-font-size-base: 1.6 !default; // 16px
189
+ $base-font-size-lg: 1.8 !default; // 18px
190
+ $base-font-size-xl: 2.0 !default; // 20px
191
+ $base-font-size-2xl: 2.4 !default; // 24px
192
+
193
+ // Font weights
194
+ $base-font-weight-normal: 400 !default;
195
+ $base-font-weight-medium: 500 !default;
196
+ $base-font-weight-semibold: 600 !default;
197
+ $base-font-weight-bold: 700 !default;
198
+
199
+ // Line heights
200
+ $base-line-height-tight: 1.25 !default;
201
+ $base-line-height-normal: 1.5 !default;
202
+ $base-line-height-relaxed: 1.75 !default;
203
+
204
+ // =============================================================================
205
+ // BORDER RADIUS
206
+ // Border radius sizes (unitless multipliers for x10px base)
207
+ // =============================================================================
208
+
209
+ $base-border-radius-sm: 0.4 !default; // 4px
210
+ $base-border-radius-md: 0.6 !default; // 6px
211
+ $base-border-radius-lg: 0.8 !default; // 8px
212
+
213
+ // =============================================================================
214
+ // COMPONENT-SPECIFIC DERIVED VALUES
215
+ // Variables that components need, derived from base
216
+ // =============================================================================
217
+
218
+ // Command palette input height (must be after $base-input-size-* variables)
219
+ $command-palette-input-height: #{$base-input-size-lg-height}rem !default;
220
+
221
+ // =============================================================================
222
+ // ALERT COLOR DERIVATION PARAMETERS
223
+ // Used by color-mix() mixins to derive alert colors from semantic base colors
224
+ // Themes can override these to customize alert appearance
225
+ // =============================================================================
226
+
227
+ $alert-bg-opacity-light: 15 !default; // Light mode: subtle bg (%)
228
+ $alert-bg-opacity-dark: 45 !default; // Dark mode: punchy, vibrant bg (%)
229
+ $alert-border-opacity-light: 30 !default; // Light mode border (%)
230
+ $alert-border-opacity-dark: 70 !default; // Dark mode border - more visible (%)
231
+ $alert-text-mix-light: 60% !default; // Mix with black for dark text
232
+ $alert-text-mix-dark: 80% !default; // Mix with white for light text
@@ -0,0 +1,231 @@
1
+ // ============================================================================
2
+ // COLOR VARIABLES
3
+ // Theme colors, button colors, contextual colors, component colors
4
+ // These variables DERIVE from base variables for unified theming
5
+ // ============================================================================
6
+
7
+ @use 'sass:color';
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
10
+
11
+ // =============================================================================
12
+ // LAYOUT COLORS (derived from base)
13
+ // =============================================================================
14
+
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;
20
+ $border-color: $base-border-color !default;
21
+
22
+ // Header colors
23
+ $header-bg: $base-main-bg !default;
24
+ $header-border-color: $base-border-color !default;
25
+ $header-text: $base-text-color-1 !default;
26
+ $header-text-secondary: $base-text-color-2 !default;
27
+ $header-profile-name-color: $base-text-color-1 !default;
28
+
29
+ // Sidebar colors
30
+ $sidebar-bg: $base-page-bg !default;
31
+ $sidebar-text: $base-text-color-1 !default;
32
+ $sidebar-text-secondary: $base-text-color-2 !default;
33
+ $sidebar-submenu-bg: $base-subtle-bg !default;
34
+ $sidebar-submenu-hover-bg: color.adjust($base-subtle-bg, $lightness: -5%) !default;
35
+ $sidebar-submenu-active-bg: color.adjust($base-subtle-bg, $lightness: -10%) !default;
36
+ $sidebar-submenu-active-text: $sidebar-text !default;
37
+
38
+ // Footer colors
39
+ $footer-bg: $base-main-bg !default;
40
+ $footer-border-color: $base-border-color !default;
41
+
42
+ // Accent colors (derived from base)
43
+ $accent-color: $base-accent-color !default;
44
+ $accent-hover: $base-accent-color-light-hover !default;
45
+ $accent-light: $base-accent-color-light !default;
46
+
47
+ // =============================================================================
48
+ // CARD COLORS (derived from base surfaces)
49
+ // =============================================================================
50
+
51
+ $card-bg: $base-main-bg !default;
52
+ $card-header-bg: $base-page-bg !default;
53
+ $card-footer-bg: $base-main-bg !default;
54
+ $card-tabs-bg: $base-page-bg !default;
55
+
56
+ // =============================================================================
57
+ // INPUT COLORS (derived from base input vars)
58
+ // =============================================================================
59
+
60
+ $input-bg: $base-input-bg !default;
61
+ $input-border: #ced4da !default; // Extracted from base-input-border
62
+ $input-text: $base-input-color !default;
63
+
64
+ // =============================================================================
65
+ // TABLE COLORS (derived from base surfaces)
66
+ // =============================================================================
67
+
68
+ $table-stripe: $base-page-bg !default;
69
+ $table-bg: $base-main-bg !default;
70
+ $table-header-bg: $base-page-bg !default;
71
+ $table-hover-bg: $base-page-bg !default;
72
+
73
+ // Table row hover accent (border)
74
+ $table-hover-accent-width: 0 !default;
75
+ $table-hover-accent-color: $base-accent-color !default;
76
+ $table-hover-accent-position: left !default;
77
+
78
+ // =============================================================================
79
+ // BUTTON COLORS (derived from base contextual colors)
80
+ // =============================================================================
81
+
82
+ // Primary button (uses accent)
83
+ $btn-primary-bg: $base-accent-color !default;
84
+ $btn-primary-bg-hover: $base-accent-color-hover !default;
85
+ $btn-primary-text: $base-text-color-on-accent !default;
86
+
87
+ // Secondary button
88
+ $btn-secondary-bg: #6c757d !default;
89
+ $btn-secondary-bg-hover: #545b62 !default;
90
+ $btn-secondary-text: #ffffff !default;
91
+
92
+ // Success button (derived from base success)
93
+ $btn-success-bg: $base-success-color !default;
94
+ $btn-success-bg-hover: $base-success-color-hover !default;
95
+ $btn-success-text: $base-text-on-success !default;
96
+
97
+ // Danger button (derived from base danger)
98
+ $btn-danger-bg: $base-danger-color !default;
99
+ $btn-danger-bg-hover: $base-danger-color-hover !default;
100
+ $btn-danger-text: $base-text-on-danger !default;
101
+
102
+ // Warning button (derived from base warning)
103
+ $btn-warning-bg: $base-warning-color !default;
104
+ $btn-warning-bg-hover: $base-warning-color-hover !default;
105
+ $btn-warning-text: $base-text-on-warning !default;
106
+ $btn-warning-color: $base-text-on-warning !default;
107
+
108
+ // Info button (derived from base info)
109
+ $btn-info-bg: $base-info-color !default;
110
+ $btn-info-bg-hover: $base-info-color-hover !default;
111
+ $btn-info-text: $base-text-on-info !default;
112
+
113
+ // Light button
114
+ $btn-light-bg: $base-page-bg !default;
115
+ $btn-light-bg-hover: $base-subtle-bg !default;
116
+ $btn-light-text: $base-text-color-1 !default;
117
+
118
+ // Dark button
119
+ $btn-dark-bg: #343a40 !default;
120
+ $btn-dark-bg-hover: #1d2124 !default;
121
+ $btn-dark-text: #ffffff !default;
122
+
123
+ // =============================================================================
124
+ // CONTEXTUAL COLORS (derived from base contextual)
125
+ // =============================================================================
126
+
127
+ // Success colors
128
+ $success-bg: $base-success-color !default;
129
+ $success-bg-hover: $base-success-color-hover !default;
130
+ $success-bg-light: $base-success-bg-light !default;
131
+ $success-bg-subtle: $base-success-bg-subtle !default;
132
+ $success-border: $base-success-border !default;
133
+ $success-text: $base-success-text !default;
134
+ $success-text-light: $base-success-text-light !default;
135
+
136
+ // Danger colors
137
+ $danger-bg: $base-danger-color !default;
138
+ $danger-bg-hover: $base-danger-color-hover !default;
139
+ $danger-bg-light: $base-danger-bg-light !default;
140
+ $danger-bg-subtle: $base-danger-bg-subtle !default;
141
+ $danger-border: $base-danger-border !default;
142
+ $danger-text: $base-danger-text !default;
143
+ $danger-text-light: $base-danger-text-light !default;
144
+
145
+ // Warning colors
146
+ $warning-bg: $base-warning-color !default;
147
+ $warning-bg-hover: $base-warning-color-hover !default;
148
+ $warning-bg-light: $base-warning-bg-light !default;
149
+ $warning-bg-subtle: $base-warning-bg-subtle !default;
150
+ $warning-border: $base-warning-border !default;
151
+ $warning-text: $base-warning-text !default;
152
+ $warning-text-light: $base-warning-text-light !default;
153
+
154
+ // Info colors
155
+ $info-bg: $base-info-color !default;
156
+ $info-bg-hover: $base-info-color-hover !default;
157
+ $info-bg-light: $base-info-bg-light !default;
158
+ $info-bg-subtle: $base-info-bg-subtle !default;
159
+ $info-border: $base-info-border !default;
160
+ $info-text: $base-info-text !default;
161
+ $info-text-light: $base-info-text-light !default;
162
+
163
+ // Secondary colors
164
+ $secondary-bg: $btn-secondary-bg !default;
165
+ $secondary-bg-hover: $btn-secondary-bg-hover !default;
166
+ $secondary-text: #383d41 !default;
167
+ $secondary-light-bg: $base-subtle-bg !default;
168
+ $secondary-light-text: $base-text-color-1 !default;
169
+ $secondary-lighter-bg: $base-subtle-bg !default;
170
+
171
+ // =============================================================================
172
+ // TOOLTIP & POPOVER COLORS (derived from base)
173
+ // =============================================================================
174
+
175
+ $tooltip-bg: $base-tooltip-bg !default;
176
+ $tooltip-text: $base-tooltip-text-color !default;
177
+
178
+ $popover-text-light: #ffffff !default;
179
+ $popover-text-dark: #000000 !default;
180
+ $popover-content-bg: $base-main-bg !default;
181
+
182
+ // =============================================================================
183
+ // CODE LANGUAGE COLORS (standalone - not themed)
184
+ // =============================================================================
185
+
186
+ $code-language-json: #f59e0b !default;
187
+ $code-language-javascript: #f0db4f !default;
188
+ $code-language-html: #e34c26 !default;
189
+ $code-language-css: #264de4 !default;
190
+ $code-language-bash: #4eaa25 !default;
191
+ $code-language-sql: #00758f !default;
192
+ $code-language-python: #3776ab !default;
193
+ $code-syntax-keyword: #0077aa !default;
194
+ $code-syntax-string: #669900 !default;
195
+ $code-syntax-number: #ff6600 !default;
196
+ $code-syntax-function: #9933cc !default;
197
+ $code-syntax-property: #dd4a68 !default;
198
+
199
+ // =============================================================================
200
+ // COMPARISON TABLE COLORS
201
+ // =============================================================================
202
+
203
+ $comparison-accent-pink: #ec4899 !default;
204
+ $comparison-accent-orange: #f97316 !default;
205
+
206
+ // =============================================================================
207
+ // CUSTOM THEME COLOR SLOTS (1-9)
208
+ // Themes can override these to provide additional branded colors
209
+ // =============================================================================
210
+
211
+ $color-1: transparent !default;
212
+ $color-2: transparent !default;
213
+ $color-3: transparent !default;
214
+ $color-4: transparent !default;
215
+ $color-5: transparent !default;
216
+ $color-6: transparent !default;
217
+ $color-7: transparent !default;
218
+ $color-8: transparent !default;
219
+ $color-9: transparent !default;
220
+
221
+ // Theme color slots - text/contrast colors
222
+ // These define the text color to use when color-N is used as a background
223
+ $color-1-text: #ffffff !default;
224
+ $color-2-text: #ffffff !default;
225
+ $color-3-text: #ffffff !default;
226
+ $color-4-text: #ffffff !default;
227
+ $color-5-text: #ffffff !default;
228
+ $color-6-text: #ffffff !default;
229
+ $color-7-text: #ffffff !default;
230
+ $color-8-text: #ffffff !default;
231
+ $color-9-text: #ffffff !default;