kimu-core 0.4.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 (146) hide show
  1. package/.editorconfig +30 -0
  2. package/.gitattributes +11 -0
  3. package/.github/FUNDING.yml +8 -0
  4. package/.github/copilot-instructions.md +103 -0
  5. package/.github/kimu-copilot-instructions.md +3779 -0
  6. package/.github/workflows/deploy-demo.yml +39 -0
  7. package/AUTHORS.md +20 -0
  8. package/CHANGELOG.md +20 -0
  9. package/CODE_GUIDELINES.md +165 -0
  10. package/CODE_OF_CONDUCT.md +47 -0
  11. package/CONTRIBUTING.md +62 -0
  12. package/FUNDING.md +31 -0
  13. package/ISSUE_GUIDELINES.md +74 -0
  14. package/LICENSE +17 -0
  15. package/LICENSE.it.md +17 -0
  16. package/MPL-2.0.txt +373 -0
  17. package/NOTICE +65 -0
  18. package/README-KIMU.md +40 -0
  19. package/README.it.md +208 -0
  20. package/README.md +266 -0
  21. package/SECURITY.md +64 -0
  22. package/docs/get-started-en.md +207 -0
  23. package/docs/images/icon.svg +64 -0
  24. package/docs/images/logo_kimu.png +0 -0
  25. package/docs/index.md +29 -0
  26. package/env/dev.config.json +6 -0
  27. package/env/local.config.json +6 -0
  28. package/env/prod.config.json +6 -0
  29. package/env/staging.config.json +6 -0
  30. package/env/test.config.json +4 -0
  31. package/icon.svg +10 -0
  32. package/logo_kimu.png +0 -0
  33. package/package.json +79 -0
  34. package/public/favicon.svg +64 -0
  35. package/public/logo_kimu.svg +1 -0
  36. package/scripts/build-all-config.js +59 -0
  37. package/scripts/build-all-core.js +65 -0
  38. package/scripts/build-all-extensions.js +64 -0
  39. package/scripts/build-all-modules.js +99 -0
  40. package/scripts/build-extension.js +60 -0
  41. package/scripts/clear-kimu-build.js +31 -0
  42. package/scripts/generate-kimu-build-config.js +79 -0
  43. package/scripts/install-module.js +162 -0
  44. package/scripts/list-modules.js +109 -0
  45. package/scripts/minify-css-assets.js +82 -0
  46. package/scripts/remove-module.js +122 -0
  47. package/scripts/utils/fix-imports.js +85 -0
  48. package/src/assets/index.css +43 -0
  49. package/src/assets/kimu-style.css +84 -0
  50. package/src/assets/style.css +116 -0
  51. package/src/config/kimu-base-config.json +5 -0
  52. package/src/core/index.ts +47 -0
  53. package/src/core/kimu-app.ts +76 -0
  54. package/src/core/kimu-asset-manager.ts +167 -0
  55. package/src/core/kimu-component-element.ts +325 -0
  56. package/src/core/kimu-component.ts +33 -0
  57. package/src/core/kimu-engine.ts +188 -0
  58. package/src/core/kimu-extension-manager.ts +281 -0
  59. package/src/core/kimu-global-styles.ts +136 -0
  60. package/src/core/kimu-module-manager.ts +69 -0
  61. package/src/core/kimu-module.ts +21 -0
  62. package/src/core/kimu-path-config.ts +127 -0
  63. package/src/core/kimu-reactive.ts +196 -0
  64. package/src/core/kimu-render.ts +91 -0
  65. package/src/core/kimu-store.ts +147 -0
  66. package/src/core/kimu-types.ts +65 -0
  67. package/src/extensions/.gitkeep +0 -0
  68. package/src/extensions/extensions-manifest.json +13 -0
  69. package/src/extensions/kimu-home/component.ts +80 -0
  70. package/src/extensions/kimu-home/lang/en.json +5 -0
  71. package/src/extensions/kimu-home/lang/it.json +5 -0
  72. package/src/extensions/kimu-home/style.css +61 -0
  73. package/src/extensions/kimu-home/view.html +51 -0
  74. package/src/index.html +26 -0
  75. package/src/main.ts +68 -0
  76. package/src/modules/.gitkeep +0 -0
  77. package/src/modules/README.md +79 -0
  78. package/src/modules/i18n/README.it.md +63 -0
  79. package/src/modules/i18n/README.md +63 -0
  80. package/src/modules/i18n/kimu-global-lang.ts +26 -0
  81. package/src/modules/i18n/kimu-i18n-service.ts +108 -0
  82. package/src/modules/i18n/manifest.json +22 -0
  83. package/src/modules/i18n/module.ts +39 -0
  84. package/src/modules/modules-manifest.json +12 -0
  85. package/src/modules-repository/README.md +108 -0
  86. package/src/modules-repository/api-axios/CHANGELOG.md +48 -0
  87. package/src/modules-repository/api-axios/QUICK-REFERENCE.md +178 -0
  88. package/src/modules-repository/api-axios/README.md +304 -0
  89. package/src/modules-repository/api-axios/api-axios-service.ts +355 -0
  90. package/src/modules-repository/api-axios/examples.ts +293 -0
  91. package/src/modules-repository/api-axios/index.ts +19 -0
  92. package/src/modules-repository/api-axios/interfaces.ts +71 -0
  93. package/src/modules-repository/api-axios/module.ts +41 -0
  94. package/src/modules-repository/api-core/CHANGELOG.md +42 -0
  95. package/src/modules-repository/api-core/QUICK-REFERENCE.md +192 -0
  96. package/src/modules-repository/api-core/README.md +435 -0
  97. package/src/modules-repository/api-core/api-core-service.ts +289 -0
  98. package/src/modules-repository/api-core/examples.ts +432 -0
  99. package/src/modules-repository/api-core/index.ts +8 -0
  100. package/src/modules-repository/api-core/interfaces.ts +83 -0
  101. package/src/modules-repository/api-core/module.ts +30 -0
  102. package/src/modules-repository/event-bus/README.md +273 -0
  103. package/src/modules-repository/event-bus/event-bus-service.ts +176 -0
  104. package/src/modules-repository/event-bus/module.ts +30 -0
  105. package/src/modules-repository/i18n/README.it.md +63 -0
  106. package/src/modules-repository/i18n/README.md +63 -0
  107. package/src/modules-repository/i18n/kimu-global-lang.ts +26 -0
  108. package/src/modules-repository/i18n/kimu-i18n-service.ts +108 -0
  109. package/src/modules-repository/i18n/manifest.json +22 -0
  110. package/src/modules-repository/i18n/module.ts +39 -0
  111. package/src/modules-repository/notification/README.md +423 -0
  112. package/src/modules-repository/notification/module.ts +30 -0
  113. package/src/modules-repository/notification/notification-service.ts +436 -0
  114. package/src/modules-repository/router/README.it.md +39 -0
  115. package/src/modules-repository/router/README.md +39 -0
  116. package/src/modules-repository/router/manifest.json +21 -0
  117. package/src/modules-repository/router/module.ts +23 -0
  118. package/src/modules-repository/router/router.ts +144 -0
  119. package/src/modules-repository/state/README.md +409 -0
  120. package/src/modules-repository/state/module.ts +30 -0
  121. package/src/modules-repository/state/state-service.ts +296 -0
  122. package/src/modules-repository/theme/README.md +267 -0
  123. package/src/modules-repository/theme/module.ts +30 -0
  124. package/src/modules-repository/theme/pre-build.js +40 -0
  125. package/src/modules-repository/theme/theme-service.ts +389 -0
  126. package/src/modules-repository/theme/themes/theme-cherry-blossom.css +78 -0
  127. package/src/modules-repository/theme/themes/theme-cozy.css +111 -0
  128. package/src/modules-repository/theme/themes/theme-cyberpunk.css +150 -0
  129. package/src/modules-repository/theme/themes/theme-dark.css +79 -0
  130. package/src/modules-repository/theme/themes/theme-forest.css +171 -0
  131. package/src/modules-repository/theme/themes/theme-gold.css +100 -0
  132. package/src/modules-repository/theme/themes/theme-high-contrast.css +126 -0
  133. package/src/modules-repository/theme/themes/theme-lava.css +101 -0
  134. package/src/modules-repository/theme/themes/theme-lavender.css +90 -0
  135. package/src/modules-repository/theme/themes/theme-light.css +79 -0
  136. package/src/modules-repository/theme/themes/theme-matrix.css +103 -0
  137. package/src/modules-repository/theme/themes/theme-midnight.css +81 -0
  138. package/src/modules-repository/theme/themes/theme-nord.css +94 -0
  139. package/src/modules-repository/theme/themes/theme-ocean.css +84 -0
  140. package/src/modules-repository/theme/themes/theme-retro80s.css +343 -0
  141. package/src/modules-repository/theme/themes/theme-sunset.css +62 -0
  142. package/src/modules-repository/theme/themes-config.d.ts +27 -0
  143. package/src/modules-repository/theme/themes-config.json +213 -0
  144. package/src/vite-env.d.ts +1 -0
  145. package/tsconfig.json +33 -0
  146. package/vite.config.ts +99 -0
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Retro 80s Theme - Nostalgic 1980s aesthetic
3
+ *
4
+ * Inspired by 80s aesthetics with neon grids, LED displays,
5
+ * laser effects, and retro-futuristic vibes
6
+ *
7
+ * Color Palette inspired by:
8
+ * - VHS tapes and CRT monitors
9
+ * - Neon signs and arcade machines
10
+ * - Synthwave and outrun aesthetics
11
+ */
12
+
13
+ :root {
14
+ /* Primary Colors - Hot Pink/Magenta */
15
+ --kimu-primary: #FF10F0;
16
+ --kimu-primary-hover: #FF44F4;
17
+ --kimu-primary-active: #DD00CC;
18
+ --kimu-primary-light: rgba(255, 16, 240, 0.15);
19
+
20
+ /* Secondary Colors - Electric Cyan */
21
+ --kimu-secondary: #00FFFF;
22
+ --kimu-secondary-hover: #33FFFF;
23
+ --kimu-secondary-active: #00DDDD;
24
+
25
+ /* Accent Colors - Laser Orange */
26
+ --kimu-accent: #FF6600;
27
+ --kimu-accent-hover: #FF8833;
28
+ --kimu-accent-active: #DD5500;
29
+
30
+ /* Background Colors - Dark with Grid */
31
+ --kimu-bg-primary: #0D0221;
32
+ --kimu-bg-secondary: #190F33;
33
+ --kimu-bg-tertiary: #240F3F;
34
+ --kimu-bg-hover: #2F1456;
35
+
36
+ /* Text Colors - Bright LED style */
37
+ --kimu-text-primary: #FFFFFF;
38
+ --kimu-text-secondary: #FFE5FF;
39
+ --kimu-text-tertiary: #CCAAFF;
40
+ --kimu-text-disabled: #7744AA;
41
+
42
+ /* Border Colors - Glowing neon */
43
+ --kimu-border: #FF10F0;
44
+ --kimu-border-light: rgba(255, 16, 240, 0.4);
45
+ --kimu-border-strong: #00FFFF;
46
+
47
+ /* Status Colors - 80s Palette */
48
+ --kimu-success: #00FF00;
49
+ --kimu-warning: #FFFF00;
50
+ --kimu-error: #FF0055;
51
+ --kimu-info: #00DDFF;
52
+
53
+ /* Shadows - Neon glow effects */
54
+ --kimu-shadow-sm: 0 0 10px rgba(255, 16, 240, 0.5), 0 0 20px rgba(0, 255, 255, 0.3);
55
+ --kimu-shadow-md: 0 0 15px rgba(255, 16, 240, 0.6), 0 0 30px rgba(0, 255, 255, 0.4);
56
+ --kimu-shadow-lg: 0 0 25px rgba(255, 16, 240, 0.7), 0 0 50px rgba(0, 255, 255, 0.5);
57
+
58
+ /* Additional Component Colors */
59
+ --kimu-card-bg: var(--kimu-bg-secondary);
60
+ --kimu-input-bg: var(--kimu-bg-tertiary);
61
+ --kimu-input-border: var(--kimu-border-light);
62
+ --kimu-input-focus: var(--kimu-primary);
63
+
64
+ /* Links - Neon glow */
65
+ --kimu-link: var(--kimu-secondary);
66
+ --kimu-link-hover: var(--kimu-primary);
67
+
68
+ /* Overlays */
69
+ --kimu-overlay: rgba(13, 2, 33, 0.9);
70
+ }
71
+
72
+ /* 80s Retro Styling */
73
+ body {
74
+ color: var(--kimu-text-primary);
75
+ background: var(--kimu-bg-primary);
76
+ font-family: 'Orbitron', 'Share Tech Mono', 'Courier New', monospace;
77
+ }
78
+
79
+ /* Classic 80s Grid Background */
80
+ body::before {
81
+ content: '';
82
+ position: fixed;
83
+ top: 0;
84
+ left: 0;
85
+ width: 100%;
86
+ height: 100%;
87
+ background:
88
+ /* Horizontal lines */
89
+ repeating-linear-gradient(
90
+ 0deg,
91
+ transparent,
92
+ transparent 39px,
93
+ rgba(255, 16, 240, 0.15) 39px,
94
+ rgba(255, 16, 240, 0.15) 40px
95
+ ),
96
+ /* Vertical lines */
97
+ repeating-linear-gradient(
98
+ 90deg,
99
+ transparent,
100
+ transparent 39px,
101
+ rgba(0, 255, 255, 0.1) 39px,
102
+ rgba(0, 255, 255, 0.1) 40px
103
+ ),
104
+ /* Gradient horizon */
105
+ linear-gradient(
106
+ 180deg,
107
+ rgba(13, 2, 33, 0) 0%,
108
+ rgba(13, 2, 33, 0) 50%,
109
+ rgba(255, 16, 240, 0.05) 70%,
110
+ rgba(0, 255, 255, 0.05) 100%
111
+ );
112
+ pointer-events: none;
113
+ z-index: -1;
114
+ animation: gridScroll 20s linear infinite;
115
+ }
116
+
117
+ @keyframes gridScroll {
118
+ 0% {
119
+ background-position: 0 0, 0 0, 0 0;
120
+ }
121
+ 100% {
122
+ background-position: 0 40px, 0 0, 0 100px;
123
+ }
124
+ }
125
+
126
+ /* LED-style text with scan lines effect */
127
+ body::after {
128
+ content: '';
129
+ position: fixed;
130
+ top: 0;
131
+ left: 0;
132
+ width: 100%;
133
+ height: 100%;
134
+ background: repeating-linear-gradient(
135
+ 0deg,
136
+ rgba(0, 0, 0, 0.1) 0px,
137
+ transparent 1px,
138
+ transparent 2px,
139
+ rgba(0, 0, 0, 0.1) 3px
140
+ );
141
+ pointer-events: none;
142
+ z-index: 9999;
143
+ opacity: 0.3;
144
+ }
145
+
146
+ /* Headers with neon glow */
147
+ h1, h2, h3, h4, h5, h6 {
148
+ color: var(--kimu-primary);
149
+ text-shadow:
150
+ 0 0 10px rgba(255, 16, 240, 0.8),
151
+ 0 0 20px rgba(255, 16, 240, 0.6),
152
+ 0 0 30px rgba(255, 16, 240, 0.4);
153
+ font-weight: bold;
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.1em;
156
+ }
157
+
158
+ /* Buttons with laser effect */
159
+ button {
160
+ background: linear-gradient(135deg, var(--kimu-primary), var(--kimu-secondary));
161
+ border: 2px solid var(--kimu-primary);
162
+ box-shadow:
163
+ 0 0 10px rgba(255, 16, 240, 0.5),
164
+ inset 0 0 10px rgba(255, 255, 255, 0.2);
165
+ text-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
166
+ text-transform: uppercase;
167
+ letter-spacing: 0.05em;
168
+ font-weight: bold;
169
+ transition: all 0.3s ease;
170
+ position: relative;
171
+ overflow: hidden;
172
+ }
173
+
174
+ /* Laser sweep animation on hover */
175
+ button::before {
176
+ content: '';
177
+ position: absolute;
178
+ top: -50%;
179
+ left: -50%;
180
+ width: 200%;
181
+ height: 200%;
182
+ background: linear-gradient(
183
+ 45deg,
184
+ transparent 30%,
185
+ rgba(255, 255, 255, 0.3) 50%,
186
+ transparent 70%
187
+ );
188
+ transform: translateX(-100%) translateY(-100%) rotate(45deg);
189
+ transition: transform 0.6s ease;
190
+ }
191
+
192
+ button:hover::before {
193
+ transform: translateX(100%) translateY(100%) rotate(45deg);
194
+ }
195
+
196
+ button:hover {
197
+ box-shadow:
198
+ 0 0 20px rgba(255, 16, 240, 0.8),
199
+ 0 0 40px rgba(0, 255, 255, 0.6),
200
+ inset 0 0 15px rgba(255, 255, 255, 0.3);
201
+ transform: translateY(-2px);
202
+ border-color: var(--kimu-secondary);
203
+ }
204
+
205
+ button:active {
206
+ transform: translateY(0);
207
+ box-shadow:
208
+ 0 0 15px rgba(255, 16, 240, 0.6),
209
+ inset 0 0 10px rgba(0, 0, 0, 0.3);
210
+ }
211
+
212
+ /* Input fields with LED display style */
213
+ input,
214
+ textarea,
215
+ select {
216
+ background: var(--kimu-input-bg);
217
+ border: 2px solid var(--kimu-border-light);
218
+ color: var(--kimu-secondary);
219
+ box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
220
+ font-family: 'Share Tech Mono', 'Courier New', monospace;
221
+ }
222
+
223
+ input:focus,
224
+ textarea:focus,
225
+ select:focus {
226
+ border-color: var(--kimu-primary);
227
+ box-shadow:
228
+ 0 0 10px rgba(255, 16, 240, 0.5),
229
+ inset 0 0 15px rgba(255, 16, 240, 0.3);
230
+ color: var(--kimu-primary);
231
+ }
232
+
233
+ /* Cards with retro frame */
234
+ .card,
235
+ [class*="card"] {
236
+ background: var(--kimu-bg-secondary);
237
+ border: 2px solid var(--kimu-primary);
238
+ box-shadow:
239
+ 0 0 15px rgba(255, 16, 240, 0.4),
240
+ inset 0 0 20px rgba(255, 16, 240, 0.1);
241
+ position: relative;
242
+ }
243
+
244
+ /* Corner decorations for cards */
245
+ .card::before,
246
+ .card::after,
247
+ [class*="card"]::before,
248
+ [class*="card"]::after {
249
+ content: '';
250
+ position: absolute;
251
+ width: 15px;
252
+ height: 15px;
253
+ border: 2px solid var(--kimu-secondary);
254
+ }
255
+
256
+ .card::before,
257
+ [class*="card"]::before {
258
+ top: -2px;
259
+ left: -2px;
260
+ border-right: none;
261
+ border-bottom: none;
262
+ box-shadow: -5px -5px 10px rgba(0, 255, 255, 0.3);
263
+ }
264
+
265
+ .card::after,
266
+ [class*="card"]::after {
267
+ bottom: -2px;
268
+ right: -2px;
269
+ border-left: none;
270
+ border-top: none;
271
+ box-shadow: 5px 5px 10px rgba(0, 255, 255, 0.3);
272
+ }
273
+
274
+ /* Links with neon underline */
275
+ a {
276
+ color: var(--kimu-link);
277
+ text-decoration: none;
278
+ text-shadow: 0 0 5px rgba(0, 255, 255, 0.5);
279
+ border-bottom: 1px solid transparent;
280
+ transition: all 0.3s ease;
281
+ }
282
+
283
+ a:hover {
284
+ color: var(--kimu-primary);
285
+ text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
286
+ border-bottom: 1px solid var(--kimu-primary);
287
+ }
288
+
289
+ /* Scrollbar - Retro LED style */
290
+ ::-webkit-scrollbar {
291
+ width: 14px;
292
+ height: 14px;
293
+ }
294
+
295
+ ::-webkit-scrollbar-track {
296
+ background: var(--kimu-bg-secondary);
297
+ border: 1px solid var(--kimu-border-light);
298
+ box-shadow: inset 0 0 10px rgba(255, 16, 240, 0.2);
299
+ }
300
+
301
+ ::-webkit-scrollbar-thumb {
302
+ background: linear-gradient(180deg, var(--kimu-primary), var(--kimu-secondary));
303
+ border: 2px solid var(--kimu-bg-secondary);
304
+ box-shadow:
305
+ 0 0 10px rgba(255, 16, 240, 0.6),
306
+ inset 0 0 5px rgba(255, 255, 255, 0.3);
307
+ }
308
+
309
+ ::-webkit-scrollbar-thumb:hover {
310
+ background: linear-gradient(180deg, var(--kimu-secondary), var(--kimu-accent));
311
+ box-shadow:
312
+ 0 0 15px rgba(0, 255, 255, 0.8),
313
+ inset 0 0 10px rgba(255, 255, 255, 0.5);
314
+ }
315
+
316
+ /* Selection with laser highlight */
317
+ ::selection {
318
+ background: rgba(255, 16, 240, 0.4);
319
+ color: var(--kimu-text-primary);
320
+ text-shadow: 0 0 10px rgba(255, 16, 240, 0.8);
321
+ }
322
+
323
+ /* Pulse animation for interactive elements */
324
+ @keyframes neonPulse {
325
+ 0%, 100% {
326
+ box-shadow:
327
+ 0 0 10px rgba(255, 16, 240, 0.5),
328
+ 0 0 20px rgba(0, 255, 255, 0.3);
329
+ }
330
+ 50% {
331
+ box-shadow:
332
+ 0 0 20px rgba(255, 16, 240, 0.8),
333
+ 0 0 40px rgba(0, 255, 255, 0.6);
334
+ }
335
+ }
336
+
337
+ /* Apply pulse to focused/active elements */
338
+ button:focus,
339
+ input:focus,
340
+ textarea:focus,
341
+ select:focus {
342
+ animation: neonPulse 2s ease-in-out infinite;
343
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Sunset Theme - Warm orange and pink sunset colors
3
+ * A warm and energetic theme inspired by beautiful sunsets
4
+ */
5
+
6
+ :root {
7
+ /* Main colors */
8
+ --kimu-background: linear-gradient(135deg, #FF6B35 0%, #F7931E 50%, #FFA07A 100%);
9
+ --kimu-surface: rgba(255, 107, 53, 0.1);
10
+ --kimu-surface-elevated: rgba(255, 107, 53, 0.15);
11
+
12
+ /* Text colors */
13
+ --kimu-text-primary: #2D1B00;
14
+ --kimu-text-secondary: #5D3A1A;
15
+ --kimu-text-tertiary: #8B5A2B;
16
+ --kimu-text-disabled: #A67C52;
17
+
18
+ /* Border colors */
19
+ --kimu-border: #FF8C52;
20
+ --kimu-border-light: #FFB088;
21
+ --kimu-divider: rgba(255, 107, 53, 0.2);
22
+
23
+ /* Accent colors */
24
+ --kimu-primary: #FF6B35;
25
+ --kimu-primary-dark: #E55B2B;
26
+ --kimu-primary-light: #FF8C52;
27
+ --kimu-secondary: #F7931E;
28
+ --kimu-accent: #FFA07A;
29
+
30
+ /* State colors */
31
+ --kimu-success: #FFD700;
32
+ --kimu-warning: #FF8C00;
33
+ --kimu-error: #DC143C;
34
+ --kimu-info: #FF7F50;
35
+
36
+ /* Shadow */
37
+ --kimu-shadow: rgba(255, 107, 53, 0.3);
38
+ --kimu-shadow-strong: rgba(255, 107, 53, 0.5);
39
+
40
+ /* Component colors */
41
+ --kimu-input-bg: #FFF5EE;
42
+ --kimu-input-border: #FF8C52;
43
+ --kimu-button-bg: #FF6B35;
44
+ --kimu-button-hover: #E55B2B;
45
+ --kimu-card-bg: rgba(255, 255, 255, 0.95);
46
+
47
+ /* Font */
48
+ --kimu-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
49
+ }
50
+
51
+ /* Body background with gradient */
52
+ body {
53
+ background: linear-gradient(135deg, #FF6B35 0%, #F7931E 50%, #FFA07A 100%);
54
+ background-attachment: fixed;
55
+ color: var(--kimu-text-primary);
56
+ }
57
+
58
+ /* Glow effect for interactive elements */
59
+ button:hover,
60
+ a:hover {
61
+ box-shadow: 0 0 15px rgba(255, 107, 53, 0.6);
62
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Type definitions for themes configuration
3
+ */
4
+
5
+ export interface ThemeColors {
6
+ background: string;
7
+ backgroundEnd: string;
8
+ text: string;
9
+ border: string;
10
+ }
11
+
12
+ export interface ThemeConfig {
13
+ name: string;
14
+ mode: 'light' | 'dark';
15
+ cssPath: string;
16
+ description?: string;
17
+ icon?: string;
18
+ colors?: ThemeColors;
19
+ }
20
+
21
+ export interface ThemesConfiguration {
22
+ themes: ThemeConfig[];
23
+ defaultTheme: string;
24
+ }
25
+
26
+ declare const themesConfig: ThemesConfiguration;
27
+ export default themesConfig;
@@ -0,0 +1,213 @@
1
+ {
2
+ "themes": [
3
+ {
4
+ "name": "light",
5
+ "mode": "light",
6
+ "cssPath": "theme-light.css",
7
+ "description": "Clean and bright theme",
8
+ "icon": "â˜€ī¸",
9
+ "colors": {
10
+ "background": "#ffffff",
11
+ "backgroundEnd": "#f7fafc",
12
+ "text": "#1a202c",
13
+ "border": "#e2e8f0"
14
+ }
15
+ },
16
+ {
17
+ "name": "dark",
18
+ "mode": "dark",
19
+ "cssPath": "theme-dark.css",
20
+ "description": "Dark theme for low-light environments",
21
+ "icon": "🌙",
22
+ "colors": {
23
+ "background": "#1a202c",
24
+ "backgroundEnd": "#2d3748",
25
+ "text": "#f7fafc",
26
+ "border": "#4a5568"
27
+ }
28
+ },
29
+ {
30
+ "name": "ocean",
31
+ "mode": "dark",
32
+ "cssPath": "theme-ocean.css",
33
+ "description": "Ocean-inspired dark theme",
34
+ "icon": "🌊",
35
+ "colors": {
36
+ "background": "#0c1821",
37
+ "backgroundEnd": "#1b3a4b",
38
+ "text": "#e0f2fe",
39
+ "border": "#155e75"
40
+ }
41
+ },
42
+ {
43
+ "name": "cozy",
44
+ "mode": "light",
45
+ "cssPath": "theme-cozy.css",
46
+ "description": "Warm and cozy feminine theme",
47
+ "icon": "🌸",
48
+ "colors": {
49
+ "background": "#fef3f2",
50
+ "backgroundEnd": "#fff1f0",
51
+ "text": "#431407",
52
+ "border": "#fed7d7"
53
+ }
54
+ },
55
+ {
56
+ "name": "nord",
57
+ "mode": "dark",
58
+ "cssPath": "theme-nord.css",
59
+ "description": "Cold and relaxing Nordic theme",
60
+ "icon": "â„ī¸",
61
+ "colors": {
62
+ "background": "#2E3440",
63
+ "backgroundEnd": "#3B4252",
64
+ "text": "#88C0D0",
65
+ "border": "#4C566A"
66
+ }
67
+ },
68
+ {
69
+ "name": "forest",
70
+ "mode": "light",
71
+ "cssPath": "theme-forest.css",
72
+ "description": "Natural green theme",
73
+ "icon": "🌲",
74
+ "colors": {
75
+ "background": "#F5F3EF",
76
+ "backgroundEnd": "#EAE7E0",
77
+ "text": "#2D5016",
78
+ "border": "#B8B3A7"
79
+ }
80
+ },
81
+ {
82
+ "name": "high-contrast",
83
+ "mode": "light",
84
+ "cssPath": "theme-high-contrast.css",
85
+ "description": "High contrast theme for accessibility",
86
+ "icon": "⚡",
87
+ "colors": {
88
+ "background": "#FFFFFF",
89
+ "backgroundEnd": "#F5F5F5",
90
+ "text": "#000000",
91
+ "border": "#000000"
92
+ }
93
+ },
94
+ {
95
+ "name": "cyberpunk",
96
+ "mode": "dark",
97
+ "cssPath": "theme-cyberpunk.css",
98
+ "description": "Futuristic neon theme",
99
+ "icon": "🎮",
100
+ "colors": {
101
+ "background": "#0A0A0F",
102
+ "backgroundEnd": "#14141F",
103
+ "text": "#00F0FF",
104
+ "border": "#FF006E"
105
+ }
106
+ },
107
+ {
108
+ "name": "retro80s",
109
+ "mode": "dark",
110
+ "cssPath": "theme-retro80s.css",
111
+ "description": "Nostalgic 80s aesthetic with LED and laser effects",
112
+ "icon": "đŸ•šī¸",
113
+ "colors": {
114
+ "background": "#0D0221",
115
+ "backgroundEnd": "#190F33",
116
+ "text": "#FF10F0",
117
+ "border": "#00FFFF"
118
+ }
119
+ },
120
+ {
121
+ "name": "sunset",
122
+ "mode": "light",
123
+ "cssPath": "theme-sunset.css",
124
+ "description": "Warm orange and pink sunset colors",
125
+ "icon": "🌅",
126
+ "colors": {
127
+ "background": "#FF6B35",
128
+ "backgroundEnd": "#FFA07A",
129
+ "text": "#2D1B00",
130
+ "border": "#FF8C52"
131
+ }
132
+ },
133
+ {
134
+ "name": "midnight",
135
+ "mode": "dark",
136
+ "cssPath": "theme-midnight.css",
137
+ "description": "Deep blue night colors with stars",
138
+ "icon": "🌃",
139
+ "colors": {
140
+ "background": "#0B1D3D",
141
+ "backgroundEnd": "#2A4A7C",
142
+ "text": "#E0E7FF",
143
+ "border": "#3D5A8C"
144
+ }
145
+ },
146
+ {
147
+ "name": "cherry-blossom",
148
+ "mode": "light",
149
+ "cssPath": "theme-cherry-blossom.css",
150
+ "description": "Delicate pink sakura colors",
151
+ "icon": "🌸",
152
+ "colors": {
153
+ "background": "#FFE5EC",
154
+ "backgroundEnd": "#FFC2D4",
155
+ "text": "#6B2E4F",
156
+ "border": "#FFB3C6"
157
+ }
158
+ },
159
+ {
160
+ "name": "lava",
161
+ "mode": "dark",
162
+ "cssPath": "theme-lava.css",
163
+ "description": "Intense red and orange fire colors",
164
+ "icon": "🌋",
165
+ "colors": {
166
+ "background": "#1A0000",
167
+ "backgroundEnd": "#660000",
168
+ "text": "#FFE5D9",
169
+ "border": "#FF4500"
170
+ }
171
+ },
172
+ {
173
+ "name": "matrix",
174
+ "mode": "dark",
175
+ "cssPath": "theme-matrix.css",
176
+ "description": "Green phosphorescent hacker theme",
177
+ "icon": "💚",
178
+ "colors": {
179
+ "background": "#000000",
180
+ "backgroundEnd": "#001100",
181
+ "text": "#00FF41",
182
+ "border": "#00FF41"
183
+ }
184
+ },
185
+ {
186
+ "name": "gold",
187
+ "mode": "dark",
188
+ "cssPath": "theme-gold.css",
189
+ "description": "Elegant gold and luxury colors",
190
+ "icon": "👑",
191
+ "colors": {
192
+ "background": "#1A1410",
193
+ "backgroundEnd": "#3A3020",
194
+ "text": "#FFD700",
195
+ "border": "#DAA520"
196
+ }
197
+ },
198
+ {
199
+ "name": "lavender",
200
+ "mode": "light",
201
+ "cssPath": "theme-lavender.css",
202
+ "description": "Relaxing purple lavender colors",
203
+ "icon": "💜",
204
+ "colors": {
205
+ "background": "#F4ECFA",
206
+ "backgroundEnd": "#D8C6F0",
207
+ "text": "#4A2C5B",
208
+ "border": "#C8B2E0"
209
+ }
210
+ }
211
+ ],
212
+ "defaultTheme": "light"
213
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/tsconfig.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ /* Enable support for decorators. */
5
+ "experimentalDecorators": true,
6
+ "useDefineForClassFields": false,
7
+ "module": "ESNext",
8
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
9
+ "skipLibCheck": true,
10
+
11
+ /* Bundler mode */
12
+ "moduleResolution": "bundler",
13
+ "allowImportingTsExtensions": true,
14
+ "isolatedModules": true,
15
+ "moduleDetection": "force",
16
+ "noEmit": true,
17
+
18
+ /* Tree shaking optimization */
19
+ "importsNotUsedAsValues": "remove",
20
+ "preserveValueImports": false,
21
+
22
+ /* Linting */
23
+ "strict": true,
24
+ "noUnusedLocals": true,
25
+ "noUnusedParameters": true,
26
+ "noFallthroughCasesInSwitch": true,
27
+ "noUncheckedSideEffectImports": true,
28
+
29
+ /* Emit type metadata for decorators, required for using the reflect-metadata library. */
30
+ "emitDecoratorMetadata": true,
31
+ },
32
+ "include": ["src"]
33
+ }