@floegence/floe-webapp-core 0.1.16 → 0.1.17

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.
package/dist/floe.css ADDED
@@ -0,0 +1,442 @@
1
+ /*
2
+ * Floe design tokens + base styles + custom utilities.
3
+ *
4
+ * This file is Tailwind v4 input CSS (it uses @theme/@layer) and is consumed by:
5
+ * - `@floegence/floe-webapp-core/styles` (precompiled bundle via `globals.css`)
6
+ * - `@floegence/floe-webapp-core/tailwind` (downstream Tailwind integration entry)
7
+ *
8
+ * It intentionally does NOT include:
9
+ * - `@import 'tailwindcss'` (owned by the application / precompiled entry)
10
+ * - any `@source` directives (owned by the entry that imports this file)
11
+ */
12
+
13
+
14
+ /* Import theme definitions - they define the CSS variables */
15
+ @import './themes/light.css';
16
+ @import './themes/dark.css';
17
+
18
+ /*
19
+ * TailwindCSS v4 requires @theme for utilities. However, CSS variable
20
+ * references don't work properly for background/text color utilities.
21
+ * Instead, we use @utility to define custom utilities that reference
22
+ * CSS variables at runtime.
23
+ */
24
+
25
+ /* Border radius - these work fine with var() */
26
+ @theme {
27
+ --radius-sm: calc(var(--radius) - 4px);
28
+ --radius-md: calc(var(--radius) - 2px);
29
+ --radius-lg: var(--radius);
30
+ --radius-xl: calc(var(--radius) + 4px);
31
+ }
32
+
33
+ /* Custom color utilities using CSS variables */
34
+ @layer utilities {
35
+ /* Background colors */
36
+ .bg-background { background-color: var(--background); }
37
+ .bg-foreground { background-color: var(--foreground); }
38
+ .bg-primary { background-color: var(--primary); }
39
+ .bg-primary-foreground { background-color: var(--primary-foreground); }
40
+ .bg-secondary { background-color: var(--secondary); }
41
+ .bg-secondary-foreground { background-color: var(--secondary-foreground); }
42
+ .bg-muted { background-color: var(--muted); }
43
+ .bg-muted-foreground { background-color: var(--muted-foreground); }
44
+ .bg-accent { background-color: var(--accent); }
45
+ .bg-accent-foreground { background-color: var(--accent-foreground); }
46
+ .bg-card { background-color: var(--card); }
47
+ .bg-card-foreground { background-color: var(--card-foreground); }
48
+ .bg-popover { background-color: var(--popover); }
49
+ .bg-popover-foreground { background-color: var(--popover-foreground); }
50
+ .bg-border { background-color: var(--border); }
51
+ .bg-input { background-color: var(--input); }
52
+ .bg-ring { background-color: var(--ring); }
53
+ .bg-success { background-color: var(--success); }
54
+ .bg-success-foreground { background-color: var(--success-foreground); }
55
+ .bg-warning { background-color: var(--warning); }
56
+ .bg-warning-foreground { background-color: var(--warning-foreground); }
57
+ .bg-error { background-color: var(--error); }
58
+ .bg-error-foreground { background-color: var(--error-foreground); }
59
+ /* Alias: destructive == error (VSCode-style danger actions) */
60
+ .bg-destructive { background-color: var(--error); }
61
+ .bg-destructive-foreground { background-color: var(--error-foreground); }
62
+ .bg-info { background-color: var(--info); }
63
+ .bg-info-foreground { background-color: var(--info-foreground); }
64
+ .bg-sidebar { background-color: var(--sidebar); }
65
+ .bg-sidebar-foreground { background-color: var(--sidebar-foreground); }
66
+ .bg-sidebar-primary { background-color: var(--sidebar-primary); }
67
+ .bg-sidebar-primary-foreground { background-color: var(--sidebar-primary-foreground); }
68
+ .bg-sidebar-accent { background-color: var(--sidebar-accent); }
69
+ .bg-sidebar-accent-foreground { background-color: var(--sidebar-accent-foreground); }
70
+ .bg-sidebar-border { background-color: var(--sidebar-border); }
71
+ .bg-sidebar-ring { background-color: var(--sidebar-ring); }
72
+ .bg-activity-bar { background-color: var(--activity-bar); }
73
+ .bg-activity-bar-foreground { background-color: var(--activity-bar-foreground); }
74
+ .bg-activity-bar-foreground-active { background-color: var(--activity-bar-foreground-active); }
75
+ .bg-activity-bar-badge { background-color: var(--activity-bar-badge); }
76
+ .bg-activity-bar-badge-foreground { background-color: var(--activity-bar-badge-foreground); }
77
+ .bg-terminal-background { background-color: var(--terminal-background); }
78
+ .bg-terminal-foreground { background-color: var(--terminal-foreground); }
79
+
80
+ /* Text colors */
81
+ .text-background { color: var(--background); }
82
+ .text-foreground { color: var(--foreground); }
83
+ .text-primary { color: var(--primary); }
84
+ .text-primary-foreground { color: var(--primary-foreground); }
85
+ .text-secondary { color: var(--secondary); }
86
+ .text-secondary-foreground { color: var(--secondary-foreground); }
87
+ .text-muted { color: var(--muted); }
88
+ .text-muted-foreground { color: var(--muted-foreground); }
89
+ .text-accent { color: var(--accent); }
90
+ .text-accent-foreground { color: var(--accent-foreground); }
91
+ .text-card { color: var(--card); }
92
+ .text-card-foreground { color: var(--card-foreground); }
93
+ .text-popover { color: var(--popover); }
94
+ .text-popover-foreground { color: var(--popover-foreground); }
95
+ .text-border { color: var(--border); }
96
+ .text-input { color: var(--input); }
97
+ .text-ring { color: var(--ring); }
98
+ .text-success { color: var(--success); }
99
+ .text-success-foreground { color: var(--success-foreground); }
100
+ .text-warning { color: var(--warning); }
101
+ .text-warning-foreground { color: var(--warning-foreground); }
102
+ .text-error { color: var(--error); }
103
+ .text-error-foreground { color: var(--error-foreground); }
104
+ /* Alias: destructive == error */
105
+ .text-destructive { color: var(--error); }
106
+ .text-destructive-foreground { color: var(--error-foreground); }
107
+ .text-info { color: var(--info); }
108
+ .text-info-foreground { color: var(--info-foreground); }
109
+ .text-sidebar { color: var(--sidebar); }
110
+ .text-sidebar-foreground { color: var(--sidebar-foreground); }
111
+ .text-sidebar-primary { color: var(--sidebar-primary); }
112
+ .text-sidebar-primary-foreground { color: var(--sidebar-primary-foreground); }
113
+ .text-sidebar-accent { color: var(--sidebar-accent); }
114
+ .text-sidebar-accent-foreground { color: var(--sidebar-accent-foreground); }
115
+ .text-sidebar-border { color: var(--sidebar-border); }
116
+ .text-sidebar-ring { color: var(--sidebar-ring); }
117
+ .text-activity-bar { color: var(--activity-bar); }
118
+ .text-activity-bar-foreground { color: var(--activity-bar-foreground); }
119
+ .text-activity-bar-foreground-active { color: var(--activity-bar-foreground-active); }
120
+ .text-activity-bar-badge { color: var(--activity-bar-badge); }
121
+ .text-activity-bar-badge-foreground { color: var(--activity-bar-badge-foreground); }
122
+ .text-terminal-background { color: var(--terminal-background); }
123
+ .text-terminal-foreground { color: var(--terminal-foreground); }
124
+
125
+ /* Border colors */
126
+ .border-border { border-color: var(--border); }
127
+ .border-input { border-color: var(--input); }
128
+ .border-ring { border-color: var(--ring); }
129
+ .border-primary { border-color: var(--primary); }
130
+ .border-secondary { border-color: var(--secondary); }
131
+ .border-muted { border-color: var(--muted); }
132
+ .border-accent { border-color: var(--accent); }
133
+ .border-sidebar-border { border-color: var(--sidebar-border); }
134
+
135
+ /* Ring colors */
136
+ .ring-ring { --tw-ring-color: var(--ring); }
137
+ .ring-primary { --tw-ring-color: var(--primary); }
138
+ .ring-sidebar-ring { --tw-ring-color: var(--sidebar-ring); }
139
+
140
+ /* Hover states for primary */
141
+ .hover\:bg-primary\/90:hover { background-color: color-mix(in srgb, var(--primary) 90%, transparent); }
142
+ .hover\:bg-secondary\/80:hover { background-color: color-mix(in srgb, var(--secondary) 80%, transparent); }
143
+ .hover\:bg-accent:hover { background-color: var(--accent); }
144
+ .hover\:bg-accent\/50:hover { background-color: color-mix(in srgb, var(--accent) 50%, transparent); }
145
+ .hover\:bg-muted:hover { background-color: var(--muted); }
146
+ .hover\:text-accent-foreground:hover { color: var(--accent-foreground); }
147
+ .hover\:bg-error\/90:hover { background-color: color-mix(in srgb, var(--error) 90%, transparent); }
148
+ .hover\:bg-destructive\/10:hover { background-color: color-mix(in srgb, var(--error) 10%, transparent); }
149
+ .hover\:text-destructive:hover { color: var(--error); }
150
+
151
+ /* Opacity variants for overlays */
152
+ .bg-background\/60 { background-color: color-mix(in srgb, var(--background) 60%, transparent); }
153
+ .bg-background\/80 { background-color: color-mix(in srgb, var(--background) 80%, transparent); }
154
+ .bg-muted\/40 { background-color: color-mix(in srgb, var(--muted) 40%, transparent); }
155
+ .bg-muted\/50 { background-color: color-mix(in srgb, var(--muted) 50%, transparent); }
156
+ .bg-muted\/70 { background-color: color-mix(in srgb, var(--muted) 70%, transparent); }
157
+ .bg-muted\/80 { background-color: color-mix(in srgb, var(--muted) 80%, transparent); }
158
+ .bg-muted-foreground\/30 { background-color: color-mix(in srgb, var(--muted-foreground) 30%, transparent); }
159
+ .bg-primary\/70 { background-color: color-mix(in srgb, var(--primary) 70%, transparent); }
160
+ .bg-accent\/40 { background-color: color-mix(in srgb, var(--accent) 40%, transparent); }
161
+ .bg-accent\/80 { background-color: color-mix(in srgb, var(--accent) 80%, transparent); }
162
+ .text-muted-foreground\/70 { color: color-mix(in srgb, var(--muted-foreground) 70%, transparent); }
163
+ .placeholder\:text-muted-foreground\/60::placeholder { color: color-mix(in srgb, var(--muted-foreground) 60%, transparent); }
164
+
165
+ /* Additional hover states */
166
+ .hover\:bg-primary\/50:hover { background-color: color-mix(in srgb, var(--primary) 50%, transparent); }
167
+ .hover\:bg-muted\/70:hover { background-color: color-mix(in srgb, var(--muted) 70%, transparent); }
168
+ .hover\:bg-muted\/80:hover { background-color: color-mix(in srgb, var(--muted) 80%, transparent); }
169
+ .hover\:bg-accent\/40:hover { background-color: color-mix(in srgb, var(--accent) 40%, transparent); }
170
+ .hover\:bg-sidebar-accent\/80:hover { background-color: color-mix(in srgb, var(--sidebar-accent) 80%, transparent); }
171
+ .hover\:border-border\/50:hover { border-color: color-mix(in srgb, var(--border) 50%, transparent); }
172
+ .border-border\/50 { border-color: color-mix(in srgb, var(--border) 50%, transparent); }
173
+
174
+ /* Gradient utilities with CSS variables */
175
+ .from-primary {
176
+ --tw-gradient-from: var(--primary);
177
+ --tw-gradient-to: transparent;
178
+ --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
179
+ }
180
+ .to-primary\/70 {
181
+ --tw-gradient-to: color-mix(in srgb, var(--primary) 70%, transparent);
182
+ }
183
+ }
184
+
185
+ /* Base styles */
186
+ @layer base {
187
+ * {
188
+ border-color: var(--border);
189
+ scrollbar-width: thin;
190
+ scrollbar-color: var(--muted) transparent;
191
+ }
192
+
193
+ *::-webkit-scrollbar {
194
+ width: 0.5rem;
195
+ height: 0.5rem;
196
+ }
197
+
198
+ *::-webkit-scrollbar-track {
199
+ background: transparent;
200
+ }
201
+
202
+ *::-webkit-scrollbar-thumb {
203
+ background: var(--muted);
204
+ border-radius: 9999px;
205
+ }
206
+
207
+ *::-webkit-scrollbar-thumb:hover {
208
+ background: color-mix(in srgb, var(--muted-foreground) 50%, transparent);
209
+ }
210
+
211
+ html {
212
+ height: 100%;
213
+ -webkit-font-smoothing: antialiased;
214
+ -moz-osx-font-smoothing: grayscale;
215
+ font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
216
+ /* Prevent the viewport from rubber-banding; scroll should be inside app panels. */
217
+ overscroll-behavior: none;
218
+ }
219
+
220
+ body {
221
+ height: 100%;
222
+ overflow: hidden;
223
+ overscroll-behavior: none;
224
+ background-color: var(--background);
225
+ color: var(--foreground);
226
+ font-family:
227
+ 'Inter',
228
+ -apple-system,
229
+ BlinkMacSystemFont,
230
+ 'Segoe UI',
231
+ Roboto,
232
+ sans-serif;
233
+ }
234
+
235
+ #root {
236
+ height: 100%;
237
+ }
238
+
239
+ /* Monospace for code and terminal */
240
+ code,
241
+ pre,
242
+ .font-mono {
243
+ font-family:
244
+ 'JetBrains Mono',
245
+ 'Fira Code',
246
+ 'SF Mono',
247
+ Menlo,
248
+ Monaco,
249
+ Consolas,
250
+ monospace;
251
+ }
252
+
253
+ /* Focus styles */
254
+ :focus-visible {
255
+ outline: none;
256
+ box-shadow: 0 0 0 2px var(--background), 0 0 0 4px var(--ring);
257
+ }
258
+
259
+ :focus:not(:focus-visible) {
260
+ outline: none;
261
+ }
262
+
263
+ /* Selection */
264
+ ::selection {
265
+ background: color-mix(in srgb, var(--primary) 20%, transparent);
266
+ color: var(--foreground);
267
+ }
268
+ }
269
+
270
+ /* Animation utilities */
271
+ @layer utilities {
272
+ .animate-in {
273
+ animation: animate-in 200ms ease-out;
274
+ }
275
+
276
+ .animate-out {
277
+ animation: animate-out 150ms ease-in;
278
+ }
279
+
280
+ .slide-in-from-top {
281
+ --tw-enter-translate-y: -100%;
282
+ }
283
+
284
+ .slide-in-from-bottom {
285
+ --tw-enter-translate-y: 100%;
286
+ }
287
+
288
+ .slide-in-from-left {
289
+ --tw-enter-translate-x: -100%;
290
+ }
291
+
292
+ .slide-in-from-right {
293
+ --tw-enter-translate-x: 100%;
294
+ }
295
+
296
+ .slide-in-from-top-2 {
297
+ --tw-enter-translate-y: -0.5rem;
298
+ }
299
+
300
+ .slide-in-from-top-4 {
301
+ --tw-enter-translate-y: -1rem;
302
+ }
303
+
304
+ .fade-in {
305
+ --tw-enter-opacity: 0;
306
+ }
307
+
308
+ .zoom-in-95 {
309
+ --tw-enter-scale: 0.95;
310
+ }
311
+
312
+ .scrollbar-hide {
313
+ -ms-overflow-style: none;
314
+ scrollbar-width: none;
315
+ }
316
+
317
+ .scrollbar-hide::-webkit-scrollbar {
318
+ display: none;
319
+ }
320
+ }
321
+
322
+ @keyframes animate-in {
323
+ from {
324
+ opacity: var(--tw-enter-opacity, 1);
325
+ transform: translate(
326
+ var(--tw-enter-translate-x, 0),
327
+ var(--tw-enter-translate-y, 0)
328
+ )
329
+ scale(var(--tw-enter-scale, 1));
330
+ }
331
+ }
332
+
333
+ @keyframes animate-out {
334
+ to {
335
+ opacity: var(--tw-exit-opacity, 0);
336
+ transform: translate(
337
+ var(--tw-exit-translate-x, 0),
338
+ var(--tw-exit-translate-y, 0)
339
+ )
340
+ scale(var(--tw-exit-scale, 1));
341
+ }
342
+ }
343
+
344
+ /* Loading animation keyframes */
345
+ @keyframes snake-move {
346
+ 0%,
347
+ 100% {
348
+ transform: scale(0.8);
349
+ opacity: 0.3;
350
+ }
351
+ 50% {
352
+ transform: scale(1);
353
+ opacity: 1;
354
+ }
355
+ }
356
+
357
+ /* Safe area insets for mobile */
358
+ @layer utilities {
359
+ .safe-bottom {
360
+ padding-bottom: env(safe-area-inset-bottom, 0);
361
+ }
362
+
363
+ .safe-top {
364
+ padding-top: env(safe-area-inset-top, 0);
365
+ }
366
+
367
+ .safe-left {
368
+ padding-left: env(safe-area-inset-left, 0);
369
+ }
370
+
371
+ .safe-right {
372
+ padding-right: env(safe-area-inset-right, 0);
373
+ }
374
+ }
375
+
376
+ /* Advanced Card animations */
377
+ @keyframes gradient-shift {
378
+ 0% {
379
+ background-position: 0% 50%;
380
+ }
381
+ 50% {
382
+ background-position: 100% 50%;
383
+ }
384
+ 100% {
385
+ background-position: 0% 50%;
386
+ }
387
+ }
388
+
389
+ @keyframes shimmer {
390
+ 0% {
391
+ transform: translateX(-100%);
392
+ }
393
+ 100% {
394
+ transform: translateX(100%);
395
+ }
396
+ }
397
+
398
+ @keyframes spin {
399
+ from {
400
+ transform: rotate(0deg);
401
+ }
402
+ to {
403
+ transform: rotate(360deg);
404
+ }
405
+ }
406
+
407
+ @keyframes morph {
408
+ 0%, 100% {
409
+ border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
410
+ transform: translate(0, 0) rotate(0deg);
411
+ }
412
+ 25% {
413
+ border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%;
414
+ transform: translate(10%, 10%) rotate(90deg);
415
+ }
416
+ 50% {
417
+ border-radius: 50% 60% 30% 60% / 30% 60% 70% 40%;
418
+ transform: translate(0, 20%) rotate(180deg);
419
+ }
420
+ 75% {
421
+ border-radius: 60% 40% 60% 30% / 60% 30% 40% 70%;
422
+ transform: translate(-10%, 10%) rotate(270deg);
423
+ }
424
+ }
425
+
426
+ @keyframes float {
427
+ 0%, 100% {
428
+ transform: translateY(0);
429
+ }
430
+ 50% {
431
+ transform: translateY(-10px);
432
+ }
433
+ }
434
+
435
+ @keyframes glow-pulse {
436
+ 0%, 100% {
437
+ box-shadow: 0 0 5px var(--primary), 0 0 20px var(--primary);
438
+ }
439
+ 50% {
440
+ box-shadow: 0 0 20px var(--primary), 0 0 40px var(--primary);
441
+ }
442
+ }
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Tailwind v4 integration entry for downstream apps.
3
+ *
4
+ * - Do NOT `@import 'tailwindcss'` here. The application owns Tailwind base/utilities.
5
+ * - Scan this package's published dist JS output so core component utilities are generated.
6
+ */
7
+
8
+ @source './**/*.{js}';
9
+ @import './floe.css';
@@ -0,0 +1,75 @@
1
+ /* Dark theme - Blue-black ink */
2
+ .dark {
3
+ color-scheme: dark;
4
+
5
+ /* Base - Blue-black ink */
6
+ --background: hsl(222 30% 8%);
7
+ --foreground: hsl(210 20% 98%);
8
+
9
+ /* Primary - Light text */
10
+ --primary: hsl(210 20% 98%);
11
+ --primary-foreground: hsl(222 30% 10%);
12
+
13
+ /* Secondary */
14
+ --secondary: hsl(220 25% 14%);
15
+ --secondary-foreground: hsl(210 20% 98%);
16
+
17
+ /* Muted */
18
+ --muted: hsl(220 25% 14%);
19
+ --muted-foreground: hsl(215 20% 60%);
20
+
21
+ /* Accent */
22
+ --accent: hsl(220 25% 16%);
23
+ --accent-foreground: hsl(210 20% 98%);
24
+
25
+ /* Border */
26
+ --border: hsl(220 20% 18%);
27
+ --input: hsl(220 25% 14%);
28
+ --ring: hsl(215 25% 70%);
29
+
30
+ /* Card */
31
+ --card: hsl(222 28% 10%);
32
+ --card-foreground: hsl(210 20% 98%);
33
+
34
+ /* Popover */
35
+ --popover: hsl(222 28% 10%);
36
+ --popover-foreground: hsl(210 20% 98%);
37
+
38
+ /* Status colors */
39
+ --success: oklch(0.72 0.19 150);
40
+ --success-foreground: hsl(222 30% 10%);
41
+ --warning: oklch(0.82 0.16 80);
42
+ --warning-foreground: hsl(222 30% 10%);
43
+ --error: oklch(0.7 0.22 25);
44
+ --error-foreground: hsl(0 0% 100%);
45
+ --info: oklch(0.7 0.15 250);
46
+ --info-foreground: hsl(0 0% 100%);
47
+
48
+ /* Sidebar */
49
+ --sidebar: hsl(222 28% 10%);
50
+ --sidebar-foreground: hsl(210 20% 98%);
51
+ --sidebar-primary: hsl(217 80% 55%);
52
+ --sidebar-primary-foreground: hsl(0 0% 100%);
53
+ --sidebar-accent: hsl(220 25% 16%);
54
+ --sidebar-accent-foreground: hsl(210 20% 98%);
55
+ --sidebar-border: hsl(220 20% 18%);
56
+ --sidebar-ring: hsl(217 80% 55%);
57
+
58
+ /* Activity bar */
59
+ --activity-bar: hsl(222 30% 9%);
60
+ --activity-bar-foreground: hsl(215 20% 55%);
61
+ --activity-bar-foreground-active: hsl(210 20% 98%);
62
+ --activity-bar-badge: hsl(217 80% 55%);
63
+ --activity-bar-badge-foreground: hsl(0 0% 100%);
64
+
65
+ /* Terminal */
66
+ --terminal-background: hsl(222 32% 7%);
67
+ --terminal-foreground: hsl(210 15% 92%);
68
+
69
+ /* Chart colors */
70
+ --chart-1: hsl(210 20% 98%);
71
+ --chart-2: hsl(215 20% 60%);
72
+ --chart-3: oklch(0.7 0.15 250);
73
+ --chart-4: oklch(0.72 0.19 150);
74
+ --chart-5: oklch(0.82 0.16 80);
75
+ }
@@ -0,0 +1,79 @@
1
+ /* Light theme - Warm paper aesthetic */
2
+ :root,
3
+ .light {
4
+ color-scheme: light;
5
+
6
+ /* Base - Warm creamy paper */
7
+ --background: hsl(38 20% 98%);
8
+ --foreground: hsl(215 40% 13%);
9
+
10
+ /* Primary - Deep blue-black ink */
11
+ --primary: hsl(215 40% 13%);
12
+ --primary-foreground: hsl(0 0% 98%);
13
+
14
+ /* Secondary - Warm muted */
15
+ --secondary: hsl(38 10% 94%);
16
+ --secondary-foreground: hsl(215 30% 26%);
17
+
18
+ /* Muted - Warm gray */
19
+ --muted: hsl(38 10% 94%);
20
+ --muted-foreground: hsl(215 20% 46%);
21
+
22
+ /* Accent - Subtle warm highlight */
23
+ --accent: hsl(38 15% 94%);
24
+ --accent-foreground: hsl(215 40% 13%);
25
+
26
+ /* Border - Warm gray */
27
+ --border: hsl(38 8% 88%);
28
+ --input: hsl(38 8% 88%);
29
+ --ring: hsl(215 40% 13%);
30
+
31
+ /* Card */
32
+ --card: hsl(38 15% 99%);
33
+ --card-foreground: hsl(215 40% 13%);
34
+
35
+ /* Popover */
36
+ --popover: hsl(38 15% 99%);
37
+ --popover-foreground: hsl(215 40% 13%);
38
+
39
+ /* Status colors - Using OKLCH for perceptual consistency */
40
+ --success: oklch(0.68 0.16 150);
41
+ --success-foreground: hsl(0 0% 100%);
42
+ --warning: oklch(0.78 0.14 80);
43
+ --warning-foreground: hsl(240 5% 10%);
44
+ --error: oklch(0.65 0.2 25);
45
+ --error-foreground: hsl(0 0% 100%);
46
+ --info: oklch(0.65 0.13 250);
47
+ --info-foreground: hsl(0 0% 100%);
48
+
49
+ /* Sidebar - Slightly warmer */
50
+ --sidebar: hsl(38 15% 97.5%);
51
+ --sidebar-foreground: hsl(215 40% 13%);
52
+ --sidebar-primary: hsl(215 40% 13%);
53
+ --sidebar-primary-foreground: hsl(0 0% 98%);
54
+ --sidebar-accent: hsl(38 15% 94%);
55
+ --sidebar-accent-foreground: hsl(215 40% 13%);
56
+ --sidebar-border: hsl(38 8% 90%);
57
+ --sidebar-ring: hsl(215 40% 13%);
58
+
59
+ /* Activity bar */
60
+ --activity-bar: hsl(38 10% 96%);
61
+ --activity-bar-foreground: hsl(215 20% 46%);
62
+ --activity-bar-foreground-active: hsl(215 40% 13%);
63
+ --activity-bar-badge: hsl(215 40% 13%);
64
+ --activity-bar-badge-foreground: hsl(0 0% 98%);
65
+
66
+ /* Terminal */
67
+ --terminal-background: hsl(215 40% 13%);
68
+ --terminal-foreground: hsl(0 0% 92%);
69
+
70
+ /* Chart colors */
71
+ --chart-1: hsl(215 40% 13%);
72
+ --chart-2: hsl(38 15% 60%);
73
+ --chart-3: oklch(0.65 0.13 250);
74
+ --chart-4: oklch(0.68 0.16 150);
75
+ --chart-5: oklch(0.78 0.14 80);
76
+
77
+ /* Radius - Slightly smaller for refined look */
78
+ --radius: 0.375rem;
79
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -10,14 +10,16 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
12
  },
13
- "./styles": "./dist/styles.css"
13
+ "./styles": "./dist/styles.css",
14
+ "./tailwind": "./dist/tailwind.css"
14
15
  },
15
16
  "files": [
16
17
  "dist"
17
18
  ],
18
19
  "scripts": {
19
20
  "dev": "node ./scripts/dev.mjs",
20
- "build": "pnpm clean && vite build && tsc -p tsconfig.build.json && pnpm build:styles",
21
+ "build": "pnpm clean && vite build && tsc -p tsconfig.build.json && pnpm build:styles && pnpm build:assets",
22
+ "build:assets": "node ./scripts/copy-style-assets.mjs",
21
23
  "build:styles": "vite build -c vite.styles.config.ts",
22
24
  "typecheck": "tsc --noEmit",
23
25
  "clean": "rm -rf dist *.tsbuildinfo"