kedhar-ui 0.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.
@@ -0,0 +1,96 @@
1
+ ---
2
+ /**
3
+ * ThemeToggle — Shared dark/light mode toggle.
4
+ *
5
+ * Usage:
6
+ * import ThemeToggle from '@kedharsairam/kedhar-ui/src/components/ThemeToggle.astro';
7
+ * <ThemeToggle />
8
+ *
9
+ * Requires the site to have .dark class on <html> for dark mode.
10
+ * Persists preference in localStorage under 'theme' key.
11
+ */
12
+
13
+ // Import component styles (bundled by Astro/Vite)
14
+ import '../styles/components.css';
15
+ ---
16
+
17
+ <div class="ks-theme-toggle ks-ripple" id="ks-theme-toggle" role="switch" aria-checked="false" aria-label="Toggle dark mode" tabindex="0">
18
+ <div class="ks-toggle-track">
19
+ <span aria-hidden="true">
20
+ <svg viewBox="0 0 24 24" width="12" height="12">
21
+ <circle cx="12" cy="12" r="5" />
22
+ <line x1="12" y1="1" x2="12" y2="3" />
23
+ <line x1="12" y1="21" x2="12" y2="23" />
24
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
25
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
26
+ <line x1="1" y1="12" x2="3" y2="12" />
27
+ <line x1="21" y1="12" x2="23" y2="12" />
28
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
29
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
30
+ </svg>
31
+ </span>
32
+ <span aria-hidden="true">
33
+ <svg viewBox="0 0 24 24" width="12" height="12">
34
+ <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" />
35
+ </svg>
36
+ </span>
37
+ </div>
38
+ <div class="ks-toggle-knob" aria-hidden="true">
39
+ <svg viewBox="0 0 24 24" fill="none">
40
+ <circle cx="12" cy="12" r="5" />
41
+ <line x1="12" y1="1" x2="12" y2="3" />
42
+ <line x1="12" y1="21" x2="12" y2="23" />
43
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
44
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
45
+ <line x1="1" y1="12" x2="3" y2="12" />
46
+ <line x1="21" y1="12" x2="23" y2="12" />
47
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
48
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
49
+ </svg>
50
+ </div>
51
+ </div>
52
+
53
+ <script>
54
+ (function () {
55
+ const toggle = document.getElementById('ks-theme-toggle');
56
+ if (!toggle) return;
57
+
58
+ const html = document.documentElement;
59
+ const knob = toggle.querySelector('.ks-toggle-knob');
60
+
61
+ function setTheme(dark) {
62
+ if (dark) {
63
+ html.classList.add('dark');
64
+ toggle.setAttribute('aria-checked', 'true');
65
+ } else {
66
+ html.classList.remove('dark');
67
+ toggle.setAttribute('aria-checked', 'false');
68
+ }
69
+ try {
70
+ localStorage.setItem('theme', dark ? 'dark' : 'light');
71
+ } catch (_) {}
72
+ }
73
+
74
+ // Restore saved preference
75
+ try {
76
+ const saved = localStorage.getItem('theme');
77
+ if (saved === 'dark') setTheme(true);
78
+ else if (saved === 'light') setTheme(false);
79
+ // No saved preference — respect system
80
+ else setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches);
81
+ } catch (_) {
82
+ setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches);
83
+ }
84
+
85
+ toggle.addEventListener('click', () => {
86
+ setTheme(!html.classList.contains('dark'));
87
+ });
88
+
89
+ toggle.addEventListener('keydown', (e) => {
90
+ if (e.key === 'Enter' || e.key === ' ') {
91
+ e.preventDefault();
92
+ setTheme(!html.classList.contains('dark'));
93
+ }
94
+ });
95
+ })();
96
+ </script>
package/src/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * kedhar-ui — Shared Design System
3
+ *
4
+ * This is primarily a CSS package. Import the styles you need:
5
+ *
6
+ * // All styles + theme
7
+ * import '@kedharsairamnpm/kedhar-ui/src/styles/index.css';
8
+ *
9
+ * // Or individually:
10
+ * import '@kedharsairamnpm/kedhar-ui/src/styles/tokens.css';
11
+ * import '@kedharsairamnpm/kedhar-ui/src/styles/base.css';
12
+ * import '@kedharsairamnpm/kedhar-ui/src/styles/components.css';
13
+ * import '@kedharsairamnpm/kedhar-ui/src/styles/themes/indigo.css';
14
+ *
15
+ * Astro components:
16
+ * import ThemeToggle from '@kedharsairamnpm/kedhar-ui/src/components/ThemeToggle.astro';
17
+ * import ScrollToTop from '@kedharsairamnpm/kedhar-ui/src/components/ScrollToTop.astro';
18
+ *
19
+ * For plain HTML sites, use the dist bundles from unpkg:
20
+ * <link rel="stylesheet" href="https://unpkg.com/@kedharsairam/kedhar-ui/dist/kedhar-ui.css">
21
+ * <link rel="stylesheet" href="https://unpkg.com/@kedharsairam/kedhar-ui/dist/theme-indigo.css">
22
+ */
23
+
24
+ export default {};
@@ -0,0 +1,77 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ kedhar-ui — Base Styles
3
+ ══════════════════════════════════════════════════════════════
4
+ Reset + base element styling. Import tokens.css first.
5
+ ══════════════════════════════════════════════════════════════ */
6
+
7
+ /* ─── Box-Sizing Reset ─────────────────────────────────────── */
8
+ *,
9
+ *::before,
10
+ *::after {
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ /* ─── Body Defaults ────────────────────────────────────────── */
15
+ html {
16
+ scroll-behavior: smooth;
17
+ -webkit-text-size-adjust: 100%;
18
+ }
19
+
20
+ body {
21
+ margin: 0;
22
+ padding: 0;
23
+ font-family: var(--ks-font-sans);
24
+ font-size: var(--ks-text-base);
25
+ line-height: var(--ks-leading-normal);
26
+ color: var(--ks-color-text);
27
+ background-color: var(--ks-color-bg);
28
+ -webkit-font-smoothing: antialiased;
29
+ -moz-osx-font-smoothing: grayscale;
30
+ transition:
31
+ background-color var(--ks-duration-normal) var(--ks-ease-out),
32
+ color var(--ks-duration-normal) var(--ks-ease-out);
33
+ }
34
+
35
+ /* ─── Links ────────────────────────────────────────────────── */
36
+ a {
37
+ color: var(--ks-color-primary);
38
+ text-decoration: none;
39
+ transition: color var(--ks-duration-fast) var(--ks-ease-out);
40
+ }
41
+
42
+ a:hover {
43
+ color: var(--ks-color-primary-hover);
44
+ }
45
+
46
+ /* ─── Images ───────────────────────────────────────────────── */
47
+ img {
48
+ max-width: 100%;
49
+ height: auto;
50
+ display: block;
51
+ }
52
+
53
+ /* ─── Buttons ──────────────────────────────────────────────── */
54
+ button {
55
+ font-family: inherit;
56
+ font-size: inherit;
57
+ cursor: pointer;
58
+ }
59
+
60
+ /* ─── Code ─────────────────────────────────────────────────── */
61
+ code,
62
+ pre {
63
+ font-family: var(--ks-font-mono);
64
+ }
65
+
66
+ /* ─── Focus Visible ────────────────────────────────────────── */
67
+ :focus-visible {
68
+ outline: 2px solid var(--ks-color-primary);
69
+ outline-offset: 2px;
70
+ border-radius: var(--ks-radius-sm);
71
+ }
72
+
73
+ /* ─── Selection ────────────────────────────────────────────── */
74
+ ::selection {
75
+ background-color: var(--ks-color-primary);
76
+ color: #ffffff;
77
+ }
@@ -0,0 +1,285 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ kedhar-ui — Component Styles
3
+ ══════════════════════════════════════════════════════════════
4
+ Ripple, scroll-to-top, theme toggle, and other shared components.
5
+ Import tokens.css and base.css first.
6
+ ══════════════════════════════════════════════════════════════ */
7
+
8
+ /* ══════════════════════════════════════════════════════════════
9
+ 1. CSS Ripple Effect
10
+ ══════════════════════════════════════════════════════════════
11
+ Pure CSS — no JavaScript required.
12
+ Expands a circle from center on :active.
13
+ ══════════════════════════════════════════════════════════════ */
14
+ .ks-ripple {
15
+ position: relative;
16
+ overflow: hidden;
17
+ cursor: pointer;
18
+ -webkit-tap-highlight-color: transparent;
19
+ }
20
+
21
+ .ks-ripple::after {
22
+ content: '';
23
+ position: absolute;
24
+ top: 50%;
25
+ left: 50%;
26
+ width: 0;
27
+ height: 0;
28
+ border-radius: 50%;
29
+ background: currentColor;
30
+ opacity: 0.15;
31
+ transform: translate(-50%, -50%);
32
+ pointer-events: none;
33
+ will-change: width, height, opacity;
34
+ }
35
+
36
+ .ks-ripple:active::after {
37
+ width: 300%;
38
+ height: 300%;
39
+ opacity: 0;
40
+ transition:
41
+ width 0.4s var(--ks-ease-out),
42
+ height 0.4s var(--ks-ease-out),
43
+ opacity 0.4s var(--ks-ease-out);
44
+ }
45
+
46
+
47
+ /* ══════════════════════════════════════════════════════════════
48
+ 2. Scroll-to-Top Button
49
+ ══════════════════════════════════════════════════════════════
50
+ Requires JS to toggle .visible class.
51
+ ══════════════════════════════════════════════════════════════ */
52
+ .ks-scroll-top {
53
+ position: fixed;
54
+ bottom: var(--ks-space-8);
55
+ right: var(--ks-space-8);
56
+ width: 44px;
57
+ height: 44px;
58
+ border-radius: var(--ks-radius-full);
59
+ border: none;
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ cursor: pointer;
64
+ opacity: 0;
65
+ visibility: hidden;
66
+ transform: translateY(12px);
67
+ pointer-events: none;
68
+ z-index: var(--ks-z-sticky);
69
+ box-shadow: var(--ks-shadow-lg);
70
+ background: var(--ks-color-surface);
71
+ color: var(--ks-color-text-muted);
72
+ transition:
73
+ opacity var(--ks-duration-normal) var(--ks-ease-out),
74
+ visibility var(--ks-duration-normal) var(--ks-ease-out),
75
+ transform var(--ks-duration-normal) var(--ks-ease-out),
76
+ background var(--ks-duration-normal) var(--ks-ease-out),
77
+ color var(--ks-duration-normal) var(--ks-ease-out);
78
+ overflow: hidden;
79
+ }
80
+
81
+ .ks-scroll-top.visible {
82
+ opacity: 1;
83
+ visibility: visible;
84
+ transform: translateY(0);
85
+ pointer-events: auto;
86
+ }
87
+
88
+ .ks-scroll-top:hover {
89
+ background: var(--ks-color-surface-hover);
90
+ color: var(--ks-color-primary);
91
+ box-shadow: var(--ks-shadow-lg), 0 0 0 2px var(--ks-color-primary-alpha);
92
+ }
93
+
94
+ .ks-scroll-top svg {
95
+ width: 20px;
96
+ height: 20px;
97
+ stroke: currentColor;
98
+ fill: none;
99
+ stroke-width: 2;
100
+ stroke-linecap: round;
101
+ stroke-linejoin: round;
102
+ }
103
+
104
+
105
+ /* ══════════════════════════════════════════════════════════════
106
+ 3. Theme Toggle (Light / Dark)
107
+ ══════════════════════════════════════════════════════════════
108
+ Animated pill switch with sun/moon icons on the knob.
109
+ ══════════════════════════════════════════════════════════════ */
110
+ .ks-theme-toggle {
111
+ position: relative;
112
+ width: 56px;
113
+ height: 30px;
114
+ border-radius: var(--ks-radius-full);
115
+ border: 2px solid var(--ks-color-border);
116
+ background: var(--ks-color-surface);
117
+ cursor: pointer;
118
+ display: flex;
119
+ align-items: center;
120
+ padding: 0;
121
+ flex-shrink: 0;
122
+ transition:
123
+ background var(--ks-duration-normal) var(--ks-ease-spring),
124
+ border-color var(--ks-duration-normal) var(--ks-ease-out);
125
+ overflow: hidden;
126
+ -webkit-tap-highlight-color: transparent;
127
+ }
128
+
129
+ .ks-theme-toggle:hover {
130
+ border-color: var(--ks-color-primary);
131
+ }
132
+
133
+ /* Knob */
134
+ .ks-toggle-knob {
135
+ position: absolute;
136
+ top: 2px;
137
+ left: 2px;
138
+ width: 22px;
139
+ height: 22px;
140
+ border-radius: var(--ks-radius-full);
141
+ display: flex;
142
+ align-items: center;
143
+ justify-content: center;
144
+ transition:
145
+ transform var(--ks-duration-normal) var(--ks-ease-spring),
146
+ background var(--ks-duration-normal) var(--ks-ease-out);
147
+ z-index: 2;
148
+ background: var(--ks-color-primary);
149
+ color: #ffffff;
150
+ box-shadow: var(--ks-shadow-sm);
151
+ }
152
+
153
+ /* Dark position */
154
+ .dark .ks-toggle-knob {
155
+ transform: translateX(26px);
156
+ }
157
+
158
+ /* Icons inside knob */
159
+ .ks-toggle-knob svg {
160
+ width: 13px;
161
+ height: 13px;
162
+ fill: none;
163
+ stroke: currentColor;
164
+ stroke-width: 2;
165
+ stroke-linecap: round;
166
+ stroke-linejoin: round;
167
+ transition: transform var(--ks-duration-normal) var(--ks-ease-spring);
168
+ }
169
+
170
+ .dark .ks-toggle-knob svg {
171
+ transform: rotate(90deg);
172
+ }
173
+
174
+ /* Track background halves */
175
+ .ks-toggle-track {
176
+ display: flex;
177
+ width: 100%;
178
+ height: 100%;
179
+ }
180
+
181
+ .ks-toggle-track span {
182
+ flex: 1;
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ font-size: 12px;
187
+ color: var(--ks-color-text-muted);
188
+ transition: color var(--ks-duration-fast) var(--ks-ease-out);
189
+ }
190
+
191
+ .dark .ks-toggle-track span:first-child {
192
+ color: transparent;
193
+ }
194
+
195
+ .dark .ks-toggle-track span:last-child {
196
+ color: var(--ks-color-text-muted);
197
+ }
198
+
199
+ .ks-toggle-track span:first-child {
200
+ color: var(--ks-color-text-muted);
201
+ }
202
+
203
+ .ks-toggle-track span:last-child {
204
+ color: transparent;
205
+ }
206
+
207
+
208
+ /* ══════════════════════════════════════════════════════════════
209
+ 4. Card
210
+ ══════════════════════════════════════════════════════════════
211
+ Reusable card component with consistent styling.
212
+ ══════════════════════════════════════════════════════════════ */
213
+ .ks-card {
214
+ background: var(--ks-color-surface);
215
+ border: 1px solid var(--ks-color-border);
216
+ border-radius: var(--ks-radius-lg);
217
+ padding: var(--ks-space-6);
218
+ transition:
219
+ box-shadow var(--ks-duration-normal) var(--ks-ease-out),
220
+ border-color var(--ks-duration-normal) var(--ks-ease-out),
221
+ transform var(--ks-duration-normal) var(--ks-ease-out);
222
+ }
223
+
224
+ .ks-card:hover {
225
+ border-color: var(--ks-color-primary-alpha);
226
+ box-shadow: var(--ks-shadow-md);
227
+ transform: translateY(-2px);
228
+ }
229
+
230
+
231
+ /* ══════════════════════════════════════════════════════════════
232
+ 5. Badge / Tag
233
+ ══════════════════════════════════════════════════════════════
234
+ Small label for status, tags, metadata.
235
+ ══════════════════════════════════════════════════════════════ */
236
+ .ks-badge {
237
+ display: inline-flex;
238
+ align-items: center;
239
+ padding: 2px var(--ks-space-2);
240
+ border-radius: var(--ks-radius-sm);
241
+ font-size: var(--ks-text-xs);
242
+ font-weight: var(--ks-weight-medium);
243
+ line-height: 1.4;
244
+ background: var(--ks-color-surface-hover);
245
+ color: var(--ks-color-text-muted);
246
+ border: 1px solid var(--ks-color-border);
247
+ }
248
+
249
+
250
+ /* ══════════════════════════════════════════════════════════════
251
+ 6. Section Container
252
+ ══════════════════════════════════════════════════════════════ */
253
+ .ks-section {
254
+ padding: var(--ks-space-16) var(--ks-space-4);
255
+ max-width: var(--ks-max-width);
256
+ margin: 0 auto;
257
+ }
258
+
259
+ @media (min-width: 640px) {
260
+ .ks-section {
261
+ padding: var(--ks-space-20) var(--ks-space-6);
262
+ }
263
+ }
264
+
265
+ @media (min-width: 1024px) {
266
+ .ks-section {
267
+ padding: var(--ks-space-20) var(--ks-space-8);
268
+ }
269
+ }
270
+
271
+
272
+ /* ══════════════════════════════════════════════════════════════
273
+ 7. Utility Classes
274
+ ══════════════════════════════════════════════════════════════ */
275
+ .ks-sr-only {
276
+ position: absolute;
277
+ width: 1px;
278
+ height: 1px;
279
+ padding: 0;
280
+ margin: -1px;
281
+ overflow: hidden;
282
+ clip: rect(0, 0, 0, 0);
283
+ white-space: nowrap;
284
+ border: 0;
285
+ }
@@ -0,0 +1,10 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ kedhar-ui — All Styles (import everything)
3
+ ══════════════════════════════════════════════════════════════
4
+ Import this in your project's main CSS for the full system.
5
+ Your theme file should be imported AFTER this.
6
+ ══════════════════════════════════════════════════════════════ */
7
+
8
+ @import './tokens.css';
9
+ @import './base.css';
10
+ @import './components.css';
@@ -0,0 +1,35 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ Theme: Amber — Projects site
3
+ ══════════════════════════════════════════════════════════════ */
4
+
5
+ :root {
6
+ --ks-color-primary: #d97706;
7
+ --ks-color-primary-hover: #b45309;
8
+ --ks-color-primary-light: #fef3c7;
9
+ --ks-color-primary-dark: #92400e;
10
+ --ks-color-primary-alpha: rgba(217, 119, 6, 0.15);
11
+
12
+ --ks-color-bg: #faf8f5;
13
+ --ks-color-surface: #ffffff;
14
+ --ks-color-surface-hover: #f5f2ed;
15
+ --ks-color-border: #e8e2d8;
16
+ --ks-color-text: #1c1917;
17
+ --ks-color-text-muted: #78716c;
18
+ --ks-color-text-inverse: #ffffff;
19
+ }
20
+
21
+ .dark {
22
+ --ks-color-primary: #f59e0b;
23
+ --ks-color-primary-hover: #d97706;
24
+ --ks-color-primary-light: #292524;
25
+ --ks-color-primary-dark: #fbbf24;
26
+ --ks-color-primary-alpha: rgba(245, 158, 11, 0.15);
27
+
28
+ --ks-color-bg: #0f0d0a;
29
+ --ks-color-surface: #1c1917;
30
+ --ks-color-surface-hover: #292524;
31
+ --ks-color-border: #3f3a36;
32
+ --ks-color-text: #f5f0eb;
33
+ --ks-color-text-muted: #a8a29e;
34
+ --ks-color-text-inverse: #0f0d0a;
35
+ }
@@ -0,0 +1,35 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ Theme: Emerald — Blog site
3
+ ══════════════════════════════════════════════════════════════ */
4
+
5
+ :root {
6
+ --ks-color-primary: #059669;
7
+ --ks-color-primary-hover: #047857;
8
+ --ks-color-primary-light: #d1fae5;
9
+ --ks-color-primary-dark: #065f46;
10
+ --ks-color-primary-alpha: rgba(5, 150, 105, 0.15);
11
+
12
+ --ks-color-bg: #f4f9f7;
13
+ --ks-color-surface: #ffffff;
14
+ --ks-color-surface-hover: #edf5f1;
15
+ --ks-color-border: #dce8e2;
16
+ --ks-color-text: #0f1a16;
17
+ --ks-color-text-muted: #6b7d76;
18
+ --ks-color-text-inverse: #ffffff;
19
+ }
20
+
21
+ .dark {
22
+ --ks-color-primary: #10b981;
23
+ --ks-color-primary-hover: #059669;
24
+ --ks-color-primary-light: #0a1f18;
25
+ --ks-color-primary-dark: #34d399;
26
+ --ks-color-primary-alpha: rgba(16, 185, 129, 0.15);
27
+
28
+ --ks-color-bg: #080f0c;
29
+ --ks-color-surface: #111f19;
30
+ --ks-color-surface-hover: #1a2f26;
31
+ --ks-color-border: #2d4036;
32
+ --ks-color-text: #e2f0e9;
33
+ --ks-color-text-muted: #94a89e;
34
+ --ks-color-text-inverse: #080f0c;
35
+ }
@@ -0,0 +1,35 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ Theme: Indigo — Portfolio site
3
+ ══════════════════════════════════════════════════════════════ */
4
+
5
+ :root {
6
+ --ks-color-primary: #6366f1;
7
+ --ks-color-primary-hover: #4f46e5;
8
+ --ks-color-primary-light: #e0e7ff;
9
+ --ks-color-primary-dark: #4338ca;
10
+ --ks-color-primary-alpha: rgba(99, 102, 241, 0.15);
11
+
12
+ --ks-color-bg: #f8f9fc;
13
+ --ks-color-surface: #ffffff;
14
+ --ks-color-surface-hover: #f1f3f9;
15
+ --ks-color-border: #e2e5f0;
16
+ --ks-color-text: #1e1e2e;
17
+ --ks-color-text-muted: #6b7280;
18
+ --ks-color-text-inverse: #ffffff;
19
+ }
20
+
21
+ .dark {
22
+ --ks-color-primary: #818cf8;
23
+ --ks-color-primary-hover: #6366f1;
24
+ --ks-color-primary-light: #1e1b4b;
25
+ --ks-color-primary-dark: #a5b4fc;
26
+ --ks-color-primary-alpha: rgba(129, 140, 248, 0.15);
27
+
28
+ --ks-color-bg: #0f0f1a;
29
+ --ks-color-surface: #1a1a2e;
30
+ --ks-color-surface-hover: #242440;
31
+ --ks-color-border: #2d2d4a;
32
+ --ks-color-text: #e2e4f0;
33
+ --ks-color-text-muted: #9ca3af;
34
+ --ks-color-text-inverse: #0f0f1a;
35
+ }
@@ -0,0 +1,35 @@
1
+ /* ══════════════════════════════════════════════════════════════
2
+ Theme: Slate — mssql-scripts site (neutral / technical)
3
+ ══════════════════════════════════════════════════════════════ */
4
+
5
+ :root {
6
+ --ks-color-primary: #64748b;
7
+ --ks-color-primary-hover: #475569;
8
+ --ks-color-primary-light: #f1f5f9;
9
+ --ks-color-primary-dark: #334155;
10
+ --ks-color-primary-alpha: rgba(100, 116, 139, 0.15);
11
+
12
+ --ks-color-bg: #f8fafc;
13
+ --ks-color-surface: #ffffff;
14
+ --ks-color-surface-hover: #f1f5f9;
15
+ --ks-color-border: #e2e8f0;
16
+ --ks-color-text: #0f172a;
17
+ --ks-color-text-muted: #64748b;
18
+ --ks-color-text-inverse: #ffffff;
19
+ }
20
+
21
+ .dark {
22
+ --ks-color-primary: #94a3b8;
23
+ --ks-color-primary-hover: #64748b;
24
+ --ks-color-primary-light: #1e293b;
25
+ --ks-color-primary-dark: #cbd5e1;
26
+ --ks-color-primary-alpha: rgba(148, 163, 184, 0.15);
27
+
28
+ --ks-color-bg: #0b1120;
29
+ --ks-color-surface: #151d2b;
30
+ --ks-color-surface-hover: #1e293b;
31
+ --ks-color-border: #2d3748;
32
+ --ks-color-text: #e2e8f0;
33
+ --ks-color-text-muted: #94a3b8;
34
+ --ks-color-text-inverse: #0b1120;
35
+ }