create-elit 3.6.5 → 3.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +32 -68
  2. package/dist/index.js +121 -8
  3. package/dist/templates/{elit.config.ts → auth-fullstack-example/elit.config.ts} +51 -0
  4. package/dist/templates/auth-fullstack-example/package.json +26 -0
  5. package/dist/templates/auth-fullstack-example/src/native-screen.ts +10 -0
  6. package/dist/templates/auth-fullstack-example/wapkignore +10 -0
  7. package/dist/templates/auth-fullstack-example/wapkpatch +1 -0
  8. package/dist/templates/basic-example/README.md +39 -0
  9. package/dist/templates/basic-example/elit.config.ts +114 -0
  10. package/dist/templates/basic-example/gitignore +7 -0
  11. package/dist/templates/basic-example/package.json +26 -0
  12. package/dist/templates/basic-example/public/favicon.svg +22 -0
  13. package/dist/templates/basic-example/public/index.html +14 -0
  14. package/dist/templates/basic-example/src/client.ts +15 -0
  15. package/dist/templates/basic-example/src/main.ts +89 -0
  16. package/dist/templates/basic-example/src/mobile.ts +35 -0
  17. package/dist/templates/basic-example/src/styles.ts +273 -0
  18. package/dist/templates/basic-example/tsconfig.json +24 -0
  19. package/dist/templates/basic-example/wapkignore +10 -0
  20. package/dist/templates/basic-example/wapkpatch +1 -0
  21. package/dist/templates/todo-fullstack-example/README.md +39 -0
  22. package/dist/templates/todo-fullstack-example/databases/todo.ts +41 -0
  23. package/dist/templates/todo-fullstack-example/elit.config.ts +123 -0
  24. package/dist/templates/todo-fullstack-example/gitignore +7 -0
  25. package/dist/templates/todo-fullstack-example/package.json +26 -0
  26. package/dist/templates/todo-fullstack-example/public/favicon.svg +22 -0
  27. package/dist/templates/todo-fullstack-example/public/index.html +14 -0
  28. package/dist/templates/todo-fullstack-example/src/client.ts +15 -0
  29. package/dist/templates/todo-fullstack-example/src/components/AppFooter.ts +16 -0
  30. package/dist/templates/todo-fullstack-example/src/components/AppHeader.ts +23 -0
  31. package/dist/templates/todo-fullstack-example/src/main.ts +7 -0
  32. package/dist/templates/todo-fullstack-example/src/mobile.ts +36 -0
  33. package/dist/templates/todo-fullstack-example/src/pages/TodoPage.ts +491 -0
  34. package/dist/templates/todo-fullstack-example/src/router.ts +16 -0
  35. package/dist/templates/todo-fullstack-example/src/server.ts +226 -0
  36. package/dist/templates/todo-fullstack-example/src/styles.ts +768 -0
  37. package/dist/templates/todo-fullstack-example/src/todo-types.ts +19 -0
  38. package/dist/templates/todo-fullstack-example/src/web.ts +16 -0
  39. package/dist/templates/todo-fullstack-example/tsconfig.json +24 -0
  40. package/dist/templates/todo-fullstack-example/wapkignore +10 -0
  41. package/dist/templates/todo-fullstack-example/wapkpatch +1 -0
  42. package/package.json +1 -1
  43. package/dist/templates/package.json +0 -17
  44. package/dist/templates/src/client.test.ts +0 -292
  45. package/dist/templates/src/components/Footer.test.ts +0 -226
  46. package/dist/templates/src/components/Header.test.ts +0 -493
  47. package/dist/templates/src/pages/ChatListPage.test.ts +0 -603
  48. package/dist/templates/src/pages/ChatPage.test.ts +0 -530
  49. package/dist/templates/src/pages/ForgotPasswordPage.test.ts +0 -484
  50. package/dist/templates/src/pages/HomePage.test.ts +0 -601
  51. package/dist/templates/src/pages/LoginPage.test.ts +0 -619
  52. package/dist/templates/src/pages/PrivateChatPage.test.ts +0 -556
  53. package/dist/templates/src/pages/ProfilePage.test.ts +0 -628
  54. package/dist/templates/src/pages/RegisterPage.test.ts +0 -661
  55. /package/dist/templates/{README.md → auth-fullstack-example/README.md} +0 -0
  56. /package/dist/templates/{databases → auth-fullstack-example/databases}/users.ts +0 -0
  57. /package/dist/templates/{gitignore → auth-fullstack-example/gitignore} +0 -0
  58. /package/dist/templates/{public → auth-fullstack-example/public}/favicon.svg +0 -0
  59. /package/dist/templates/{public → auth-fullstack-example/public}/index.html +0 -0
  60. /package/dist/templates/{src → auth-fullstack-example/src}/client.ts +0 -0
  61. /package/dist/templates/{src → auth-fullstack-example/src}/components/Footer.ts +0 -0
  62. /package/dist/templates/{src → auth-fullstack-example/src}/components/Header.ts +0 -0
  63. /package/dist/templates/{src → auth-fullstack-example/src}/components/index.ts +0 -0
  64. /package/dist/templates/{src → auth-fullstack-example/src}/main.ts +0 -0
  65. /package/dist/templates/{src → auth-fullstack-example/src}/pages/ChatListPage.ts +0 -0
  66. /package/dist/templates/{src → auth-fullstack-example/src}/pages/ChatPage.ts +0 -0
  67. /package/dist/templates/{src → auth-fullstack-example/src}/pages/ForgotPasswordPage.ts +0 -0
  68. /package/dist/templates/{src → auth-fullstack-example/src}/pages/HomePage.ts +0 -0
  69. /package/dist/templates/{src → auth-fullstack-example/src}/pages/LoginPage.ts +0 -0
  70. /package/dist/templates/{src → auth-fullstack-example/src}/pages/PrivateChatPage.ts +0 -0
  71. /package/dist/templates/{src → auth-fullstack-example/src}/pages/ProfilePage.ts +0 -0
  72. /package/dist/templates/{src → auth-fullstack-example/src}/pages/RegisterPage.ts +0 -0
  73. /package/dist/templates/{src → auth-fullstack-example/src}/router.ts +0 -0
  74. /package/dist/templates/{src → auth-fullstack-example/src}/server.ts +0 -0
  75. /package/dist/templates/{src → auth-fullstack-example/src}/styles.ts +0 -0
  76. /package/dist/templates/{tsconfig.json → auth-fullstack-example/tsconfig.json} +0 -0
@@ -0,0 +1,768 @@
1
+ import styles from 'elit/style';
2
+
3
+ styles.addTag('*', {
4
+ margin: 0,
5
+ padding: 0,
6
+ boxSizing: 'border-box'
7
+ });
8
+
9
+ styles.addTag('body', {
10
+ minHeight: '100vh',
11
+ fontFamily: "'Aptos', 'Trebuchet MS', sans-serif",
12
+ color: '#173447',
13
+ background: 'radial-gradient(circle at top left, #fff6ef 0%, #f4ede5 45%, #eadfd5 100%)'
14
+ });
15
+
16
+ styles.addTag('button', {
17
+ fontFamily: 'inherit'
18
+ });
19
+
20
+ styles.addTag('input', {
21
+ fontFamily: 'inherit'
22
+ });
23
+
24
+ styles.addTag('textarea', {
25
+ fontFamily: 'inherit'
26
+ });
27
+
28
+ styles.addTag('select', {
29
+ fontFamily: 'inherit'
30
+ });
31
+
32
+ styles.addTag('a', {
33
+ color: 'inherit'
34
+ });
35
+
36
+ styles.addClass('app-shell', {
37
+ minHeight: '100vh',
38
+ position: 'relative',
39
+ overflow: 'hidden'
40
+ });
41
+
42
+ styles.addClass('app-main', {
43
+ width: '100%',
44
+ padding: '0 1.5rem 3rem',
45
+ position: 'relative',
46
+ zIndex: 1
47
+ });
48
+
49
+ styles.addClass('ambient-orb', {
50
+ position: 'fixed',
51
+ borderRadius: '999px',
52
+ filter: 'blur(0px)',
53
+ opacity: 0.75,
54
+ pointerEvents: 'none',
55
+ zIndex: 0
56
+ });
57
+
58
+ styles.addClass('ambient-orb-one', {
59
+ width: '22rem',
60
+ height: '22rem',
61
+ top: '-7rem',
62
+ right: '-5rem',
63
+ background: 'radial-gradient(circle, rgba(244, 91, 72, 0.34) 0%, rgba(244, 91, 72, 0) 72%)'
64
+ });
65
+
66
+ styles.addClass('ambient-orb-two', {
67
+ width: '18rem',
68
+ height: '18rem',
69
+ bottom: '4rem',
70
+ left: '-6rem',
71
+ background: 'radial-gradient(circle, rgba(63, 166, 138, 0.24) 0%, rgba(63, 166, 138, 0) 74%)'
72
+ });
73
+
74
+ styles.addClass('btn', {
75
+ border: 'none',
76
+ borderRadius: '999px',
77
+ padding: '0.85rem 1.2rem',
78
+ fontSize: '0.95rem',
79
+ fontWeight: 700,
80
+ cursor: 'pointer',
81
+ display: 'inline-flex',
82
+ alignItems: 'center',
83
+ justifyContent: 'center',
84
+ gap: '0.5rem',
85
+ transition: 'transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, color 0.2s ease'
86
+ });
87
+
88
+ styles.addClass('btn-primary', {
89
+ color: '#fffaf4',
90
+ background: 'linear-gradient(135deg, #f45b48 0%, #ff8f5a 100%)',
91
+ boxShadow: '0 14px 28px rgba(244, 91, 72, 0.22)'
92
+ });
93
+
94
+ styles.addPseudoClass('hover', {
95
+ transform: 'translateY(-1px)',
96
+ boxShadow: '0 18px 34px rgba(244, 91, 72, 0.28)'
97
+ }, '.btn-primary');
98
+
99
+ styles.addClass('btn-secondary', {
100
+ color: '#173447',
101
+ background: 'rgba(255, 250, 244, 0.8)',
102
+ border: '1px solid rgba(23, 52, 71, 0.12)',
103
+ boxShadow: '0 8px 22px rgba(23, 52, 71, 0.08)'
104
+ });
105
+
106
+ styles.addPseudoClass('hover', {
107
+ transform: 'translateY(-1px)',
108
+ background: '#fffaf4'
109
+ }, '.btn-secondary');
110
+
111
+ styles.addClass('btn-ghost', {
112
+ color: '#173447',
113
+ background: 'transparent',
114
+ border: '1px solid rgba(23, 52, 71, 0.14)'
115
+ });
116
+
117
+ styles.addPseudoClass('hover', {
118
+ background: 'rgba(23, 52, 71, 0.05)'
119
+ }, '.btn-ghost');
120
+
121
+ styles.addClass('btn-danger', {
122
+ color: '#b64031',
123
+ background: 'rgba(244, 91, 72, 0.1)',
124
+ border: '1px solid rgba(244, 91, 72, 0.18)'
125
+ });
126
+
127
+ styles.addPseudoClass('hover', {
128
+ background: 'rgba(244, 91, 72, 0.16)'
129
+ }, '.btn-danger');
130
+
131
+ styles.addClass('btn[disabled]', {
132
+ cursor: 'not-allowed',
133
+ opacity: 0.6,
134
+ boxShadow: 'none',
135
+ transform: 'none'
136
+ });
137
+
138
+ styles.addClass('app-header', {
139
+ position: 'relative',
140
+ zIndex: 1,
141
+ padding: '1.5rem'
142
+ });
143
+
144
+ styles.addClass('app-header-inner', {
145
+ maxWidth: '1180px',
146
+ margin: '0 auto',
147
+ borderRadius: '28px',
148
+ background: 'rgba(255, 250, 244, 0.72)',
149
+ border: '1px solid rgba(255, 255, 255, 0.7)',
150
+ boxShadow: '0 18px 44px rgba(23, 52, 71, 0.08)',
151
+ backdropFilter: 'blur(14px)',
152
+ padding: '1.25rem 1.5rem',
153
+ display: 'flex',
154
+ justifyContent: 'space-between',
155
+ alignItems: 'center',
156
+ gap: '1rem',
157
+ flexWrap: 'wrap'
158
+ });
159
+
160
+ styles.addClass('brand-block', {
161
+ display: 'flex',
162
+ flexDirection: 'column',
163
+ gap: '0.45rem'
164
+ });
165
+
166
+ styles.addClass('brand-link', {
167
+ display: 'inline-flex',
168
+ alignItems: 'center',
169
+ gap: '0.85rem',
170
+ textDecoration: 'none'
171
+ });
172
+
173
+ styles.addPseudoClass('hover', {
174
+ transform: 'translateY(-1px)'
175
+ }, '.brand-link');
176
+
177
+ styles.addClass('brand-mark', {
178
+ display: 'inline-flex',
179
+ alignItems: 'center',
180
+ justifyContent: 'center',
181
+ width: '2.75rem',
182
+ height: '2.75rem',
183
+ borderRadius: '18px',
184
+ background: 'linear-gradient(135deg, #173447 0%, #26566f 100%)',
185
+ color: '#fffaf4',
186
+ fontWeight: 800,
187
+ letterSpacing: '0.08em'
188
+ });
189
+
190
+ styles.addClass('brand-title-group', {
191
+ display: 'flex',
192
+ flexDirection: 'column',
193
+ gap: '0.15rem'
194
+ });
195
+
196
+ styles.addClass('brand-title', {
197
+ fontSize: '1.1rem',
198
+ lineHeight: 1.2,
199
+ color: '#173447'
200
+ });
201
+
202
+ styles.addClass('brand-subtitle', {
203
+ fontSize: '0.92rem',
204
+ color: '#526575',
205
+ maxWidth: '40rem'
206
+ });
207
+
208
+ styles.addClass('header-pill', {
209
+ display: 'inline-flex',
210
+ alignItems: 'center',
211
+ gap: '0.55rem',
212
+ padding: '0.85rem 1rem',
213
+ borderRadius: '999px',
214
+ background: 'rgba(23, 52, 71, 0.05)',
215
+ border: '1px solid rgba(23, 52, 71, 0.08)',
216
+ color: '#173447',
217
+ fontSize: '0.92rem',
218
+ fontWeight: 700
219
+ });
220
+
221
+ styles.addClass('header-pill-label', {
222
+ color: '#7a6c62',
223
+ fontWeight: 600,
224
+ textTransform: 'uppercase',
225
+ letterSpacing: '0.06em',
226
+ fontSize: '0.74rem'
227
+ });
228
+
229
+ styles.addClass('header-pill-value', {
230
+ color: '#173447'
231
+ });
232
+
233
+ styles.addClass('app-footer', {
234
+ position: 'relative',
235
+ zIndex: 1,
236
+ padding: '0 1.5rem 2rem'
237
+ });
238
+
239
+ styles.addClass('app-footer-inner', {
240
+ maxWidth: '1180px',
241
+ margin: '0 auto',
242
+ padding: '1.25rem 1.5rem',
243
+ borderRadius: '24px',
244
+ background: 'rgba(255, 250, 244, 0.65)',
245
+ border: '1px solid rgba(255, 255, 255, 0.72)',
246
+ display: 'flex',
247
+ justifyContent: 'space-between',
248
+ gap: '1rem',
249
+ flexWrap: 'wrap',
250
+ color: '#667686'
251
+ });
252
+
253
+ styles.addClass('footer-copy', {
254
+ fontSize: '0.92rem',
255
+ lineHeight: 1.5,
256
+ maxWidth: '36rem'
257
+ });
258
+
259
+ styles.addClass('footer-links', {
260
+ display: 'flex',
261
+ alignItems: 'center',
262
+ gap: '1rem',
263
+ flexWrap: 'wrap'
264
+ });
265
+
266
+ styles.addClass('footer-link', {
267
+ textDecoration: 'none',
268
+ color: '#173447',
269
+ fontWeight: 700,
270
+ fontSize: '0.92rem'
271
+ });
272
+
273
+ styles.addPseudoClass('hover', {
274
+ color: '#f45b48'
275
+ }, '.footer-link');
276
+
277
+ styles.addClass('todo-page', {
278
+ maxWidth: '1180px',
279
+ margin: '0 auto',
280
+ display: 'flex',
281
+ flexDirection: 'column',
282
+ gap: '1.5rem'
283
+ });
284
+
285
+ styles.addClass('todo-panel', {
286
+ position: 'relative',
287
+ background: 'rgba(255, 250, 244, 0.82)',
288
+ borderRadius: '30px',
289
+ border: '1px solid rgba(255, 255, 255, 0.72)',
290
+ boxShadow: '0 22px 48px rgba(23, 52, 71, 0.08)',
291
+ backdropFilter: 'blur(18px)',
292
+ padding: '1.5rem'
293
+ });
294
+
295
+ styles.addClass('todo-hero', {
296
+ display: 'grid',
297
+ gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
298
+ gap: '1.25rem',
299
+ alignItems: 'stretch'
300
+ });
301
+
302
+ styles.addClass('todo-hero-copy', {
303
+ display: 'flex',
304
+ flexDirection: 'column',
305
+ gap: '1rem'
306
+ });
307
+
308
+ styles.addClass('todo-kicker', {
309
+ display: 'inline-flex',
310
+ alignItems: 'center',
311
+ width: 'fit-content',
312
+ padding: '0.45rem 0.85rem',
313
+ borderRadius: '999px',
314
+ background: 'rgba(244, 91, 72, 0.12)',
315
+ color: '#b64031',
316
+ fontWeight: 800,
317
+ letterSpacing: '0.06em',
318
+ fontSize: '0.75rem',
319
+ textTransform: 'uppercase'
320
+ });
321
+
322
+ styles.addClass('todo-headline', {
323
+ fontSize: 'clamp(2.3rem, 4vw, 4.4rem)',
324
+ lineHeight: 0.96,
325
+ color: '#173447',
326
+ maxWidth: '10ch'
327
+ });
328
+
329
+ styles.addClass('todo-description', {
330
+ fontSize: '1.02rem',
331
+ lineHeight: 1.7,
332
+ color: '#566879',
333
+ maxWidth: '42rem'
334
+ });
335
+
336
+ styles.addClass('todo-hero-actions', {
337
+ display: 'flex',
338
+ gap: '0.85rem',
339
+ flexWrap: 'wrap',
340
+ alignItems: 'center'
341
+ });
342
+
343
+ styles.addClass('storage-tag', {
344
+ display: 'inline-flex',
345
+ alignItems: 'center',
346
+ padding: '0.7rem 0.95rem',
347
+ borderRadius: '999px',
348
+ background: 'rgba(23, 52, 71, 0.06)',
349
+ color: '#526575',
350
+ fontWeight: 700,
351
+ fontSize: '0.88rem'
352
+ });
353
+
354
+ styles.addClass('todo-hero-card', {
355
+ background: 'linear-gradient(160deg, #173447 0%, #24556c 100%)',
356
+ color: '#fffaf4',
357
+ borderRadius: '28px',
358
+ padding: '1.5rem',
359
+ display: 'flex',
360
+ flexDirection: 'column',
361
+ justifyContent: 'space-between',
362
+ minHeight: '100%'
363
+ });
364
+
365
+ styles.addClass('todo-hero-card-title', {
366
+ fontSize: '1.3rem',
367
+ marginBottom: '0.45rem',
368
+ color: '#fffaf4'
369
+ });
370
+
371
+ styles.addClass('todo-hero-card-text', {
372
+ fontSize: '0.95rem',
373
+ lineHeight: 1.7,
374
+ color: 'rgba(255, 250, 244, 0.82)',
375
+ marginBottom: '1.25rem'
376
+ });
377
+
378
+ styles.addClass('hero-metrics', {
379
+ display: 'grid',
380
+ gridTemplateColumns: 'repeat(auto-fit, minmax(120px, 1fr))',
381
+ gap: '0.85rem'
382
+ });
383
+
384
+ styles.addClass('hero-metric', {
385
+ padding: '0.9rem',
386
+ borderRadius: '20px',
387
+ background: 'rgba(255, 255, 255, 0.08)',
388
+ display: 'flex',
389
+ flexDirection: 'column',
390
+ gap: '0.25rem'
391
+ });
392
+
393
+ styles.addClass('hero-metric-value', {
394
+ fontSize: '1.5rem',
395
+ fontWeight: 800,
396
+ color: '#fffaf4'
397
+ });
398
+
399
+ styles.addClass('hero-metric-label', {
400
+ fontSize: '0.85rem',
401
+ color: 'rgba(255, 250, 244, 0.72)'
402
+ });
403
+
404
+ styles.addClass('todo-workspace', {
405
+ display: 'grid',
406
+ gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
407
+ gap: '1.25rem'
408
+ });
409
+
410
+ styles.addClass('todo-section-title', {
411
+ fontSize: '1.4rem',
412
+ color: '#173447',
413
+ marginBottom: '0.35rem'
414
+ });
415
+
416
+ styles.addClass('todo-section-copy', {
417
+ color: '#6a7a88',
418
+ fontSize: '0.95rem',
419
+ lineHeight: 1.6,
420
+ marginBottom: '1.2rem'
421
+ });
422
+
423
+ styles.addClass('todo-form', {
424
+ display: 'flex',
425
+ flexDirection: 'column',
426
+ gap: '1rem'
427
+ });
428
+
429
+ styles.addClass('todo-field', {
430
+ display: 'flex',
431
+ flexDirection: 'column',
432
+ gap: '0.45rem'
433
+ });
434
+
435
+ styles.addClass('todo-field-row', {
436
+ display: 'grid',
437
+ gridTemplateColumns: 'repeat(auto-fit, minmax(160px, 1fr))',
438
+ gap: '0.9rem'
439
+ });
440
+
441
+ styles.addClass('todo-label', {
442
+ fontSize: '0.83rem',
443
+ textTransform: 'uppercase',
444
+ letterSpacing: '0.06em',
445
+ fontWeight: 800,
446
+ color: '#7a6c62'
447
+ });
448
+
449
+ styles.addClass('todo-input', {
450
+ width: '100%',
451
+ border: '1px solid rgba(23, 52, 71, 0.12)',
452
+ background: '#fffaf4',
453
+ color: '#173447',
454
+ borderRadius: '18px',
455
+ padding: '0.95rem 1rem',
456
+ fontSize: '0.96rem',
457
+ outline: 'none',
458
+ boxShadow: 'inset 0 1px 0 rgba(255, 255, 255, 0.6)'
459
+ });
460
+
461
+ styles.addClass('todo-textarea', {
462
+ minHeight: '120px',
463
+ resize: 'vertical'
464
+ });
465
+
466
+ styles.addClass('todo-input:focus', {
467
+ borderColor: 'rgba(244, 91, 72, 0.5)',
468
+ boxShadow: '0 0 0 4px rgba(244, 91, 72, 0.12)'
469
+ });
470
+
471
+ styles.addClass('todo-submit-row', {
472
+ display: 'flex',
473
+ justifyContent: 'space-between',
474
+ alignItems: 'center',
475
+ gap: '1rem',
476
+ flexWrap: 'wrap'
477
+ });
478
+
479
+ styles.addClass('todo-hint', {
480
+ color: '#7a6c62',
481
+ fontSize: '0.84rem',
482
+ lineHeight: 1.5,
483
+ maxWidth: '22rem'
484
+ });
485
+
486
+ styles.addClass('summary-grid', {
487
+ display: 'grid',
488
+ gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))',
489
+ gap: '0.85rem',
490
+ marginBottom: '1rem'
491
+ });
492
+
493
+ styles.addClass('summary-card', {
494
+ padding: '1rem',
495
+ borderRadius: '22px',
496
+ background: 'rgba(23, 52, 71, 0.04)',
497
+ border: '1px solid rgba(23, 52, 71, 0.05)',
498
+ display: 'flex',
499
+ flexDirection: 'column',
500
+ gap: '0.25rem'
501
+ });
502
+
503
+ styles.addClass('summary-value', {
504
+ fontSize: '1.55rem',
505
+ fontWeight: 800,
506
+ color: '#173447'
507
+ });
508
+
509
+ styles.addClass('summary-label', {
510
+ fontSize: '0.84rem',
511
+ color: '#677887'
512
+ });
513
+
514
+ styles.addClass('filter-label', {
515
+ fontSize: '0.83rem',
516
+ fontWeight: 800,
517
+ color: '#7a6c62',
518
+ textTransform: 'uppercase',
519
+ letterSpacing: '0.06em',
520
+ marginBottom: '0.6rem'
521
+ });
522
+
523
+ styles.addClass('filter-group', {
524
+ display: 'flex',
525
+ gap: '0.7rem',
526
+ flexWrap: 'wrap'
527
+ });
528
+
529
+ styles.addClass('filter-chip', {
530
+ border: '1px solid rgba(23, 52, 71, 0.1)',
531
+ background: '#fffaf4',
532
+ color: '#526575',
533
+ borderRadius: '999px',
534
+ padding: '0.7rem 0.95rem',
535
+ fontSize: '0.88rem',
536
+ fontWeight: 700,
537
+ cursor: 'pointer',
538
+ transition: 'background 0.2s ease, color 0.2s ease, transform 0.2s ease'
539
+ });
540
+
541
+ styles.addPseudoClass('hover', {
542
+ transform: 'translateY(-1px)',
543
+ background: 'rgba(23, 52, 71, 0.05)'
544
+ }, '.filter-chip');
545
+
546
+ styles.addClass('filter-chip-active', {
547
+ color: '#fffaf4',
548
+ background: '#173447',
549
+ borderColor: '#173447'
550
+ });
551
+
552
+ styles.addClass('todo-banner', {
553
+ borderRadius: '22px',
554
+ padding: '0.9rem 1.1rem',
555
+ fontWeight: 700,
556
+ boxShadow: '0 10px 24px rgba(23, 52, 71, 0.06)'
557
+ });
558
+
559
+ styles.addClass('todo-banner-error', {
560
+ background: 'rgba(244, 91, 72, 0.12)',
561
+ color: '#b64031',
562
+ border: '1px solid rgba(244, 91, 72, 0.18)'
563
+ });
564
+
565
+ styles.addClass('todo-banner-success', {
566
+ background: 'rgba(63, 166, 138, 0.12)',
567
+ color: '#1f7b63',
568
+ border: '1px solid rgba(63, 166, 138, 0.2)'
569
+ });
570
+
571
+ styles.addClass('todo-board-toolbar', {
572
+ display: 'flex',
573
+ justifyContent: 'space-between',
574
+ gap: '1rem',
575
+ flexWrap: 'wrap',
576
+ alignItems: 'center',
577
+ marginBottom: '1.1rem'
578
+ });
579
+
580
+ styles.addClass('todo-search-wrap', {
581
+ flex: 1,
582
+ minWidth: '240px'
583
+ });
584
+
585
+ styles.addClass('todo-toolbar-actions', {
586
+ display: 'flex',
587
+ alignItems: 'center',
588
+ gap: '0.75rem',
589
+ flexWrap: 'wrap'
590
+ });
591
+
592
+ styles.addClass('todo-toolbar-note', {
593
+ fontSize: '0.84rem',
594
+ color: '#7a6c62'
595
+ });
596
+
597
+ styles.addClass('todo-list', {
598
+ display: 'grid',
599
+ gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
600
+ gap: '1rem'
601
+ });
602
+
603
+ styles.addClass('todo-card', {
604
+ background: '#fffaf4',
605
+ borderRadius: '24px',
606
+ border: '1px solid rgba(23, 52, 71, 0.08)',
607
+ padding: '1rem',
608
+ display: 'flex',
609
+ flexDirection: 'column',
610
+ gap: '1rem',
611
+ transition: 'transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease'
612
+ });
613
+
614
+ styles.addPseudoClass('hover', {
615
+ transform: 'translateY(-2px)',
616
+ borderColor: 'rgba(244, 91, 72, 0.18)',
617
+ boxShadow: '0 16px 36px rgba(23, 52, 71, 0.08)'
618
+ }, '.todo-card');
619
+
620
+ styles.addClass('todo-card-done', {
621
+ background: 'rgba(255, 250, 244, 0.74)',
622
+ borderColor: 'rgba(23, 52, 71, 0.06)'
623
+ });
624
+
625
+ styles.addClass('todo-card-done .todo-card-title', {
626
+ color: '#7f8b97',
627
+ textDecoration: 'line-through'
628
+ });
629
+
630
+ styles.addClass('todo-card-done .todo-card-notes', {
631
+ color: '#8f9aa5'
632
+ });
633
+
634
+ styles.addClass('todo-card-main', {
635
+ display: 'flex',
636
+ gap: '0.9rem',
637
+ alignItems: 'flex-start'
638
+ });
639
+
640
+ styles.addClass('todo-check', {
641
+ width: '2.15rem',
642
+ height: '2.15rem',
643
+ borderRadius: '999px',
644
+ border: '1px solid rgba(23, 52, 71, 0.14)',
645
+ background: '#fffaf4',
646
+ color: '#173447',
647
+ fontWeight: 800,
648
+ fontSize: '0.82rem',
649
+ cursor: 'pointer',
650
+ flexShrink: 0
651
+ });
652
+
653
+ styles.addClass('todo-check-active', {
654
+ background: '#1f7b63',
655
+ borderColor: '#1f7b63',
656
+ color: '#fffaf4'
657
+ });
658
+
659
+ styles.addClass('todo-card-copy', {
660
+ display: 'flex',
661
+ flexDirection: 'column',
662
+ gap: '0.55rem',
663
+ minWidth: 0,
664
+ flex: 1
665
+ });
666
+
667
+ styles.addClass('todo-card-meta', {
668
+ display: 'flex',
669
+ justifyContent: 'space-between',
670
+ gap: '0.75rem',
671
+ alignItems: 'center',
672
+ flexWrap: 'wrap'
673
+ });
674
+
675
+ styles.addClass('todo-priority', {
676
+ display: 'inline-flex',
677
+ alignItems: 'center',
678
+ borderRadius: '999px',
679
+ padding: '0.38rem 0.72rem',
680
+ fontSize: '0.76rem',
681
+ fontWeight: 800,
682
+ textTransform: 'uppercase',
683
+ letterSpacing: '0.05em'
684
+ });
685
+
686
+ styles.addClass('todo-priority-high', {
687
+ color: '#b64031',
688
+ background: 'rgba(244, 91, 72, 0.12)'
689
+ });
690
+
691
+ styles.addClass('todo-priority-medium', {
692
+ color: '#9b6b12',
693
+ background: 'rgba(255, 190, 92, 0.18)'
694
+ });
695
+
696
+ styles.addClass('todo-priority-low', {
697
+ color: '#1f7b63',
698
+ background: 'rgba(63, 166, 138, 0.14)'
699
+ });
700
+
701
+ styles.addClass('todo-date', {
702
+ fontSize: '0.8rem',
703
+ color: '#7a8792',
704
+ fontWeight: 700
705
+ });
706
+
707
+ styles.addClass('todo-card-title', {
708
+ fontSize: '1.08rem',
709
+ lineHeight: 1.35,
710
+ color: '#173447'
711
+ });
712
+
713
+ styles.addClass('todo-card-notes', {
714
+ fontSize: '0.92rem',
715
+ lineHeight: 1.6,
716
+ color: '#607180'
717
+ });
718
+
719
+ styles.addClass('todo-card-notes-muted', {
720
+ color: '#90a0aa'
721
+ });
722
+
723
+ styles.addClass('todo-card-actions', {
724
+ display: 'flex',
725
+ justifyContent: 'space-between',
726
+ gap: '0.75rem',
727
+ flexWrap: 'wrap'
728
+ });
729
+
730
+ styles.addClass('todo-empty', {
731
+ padding: '2.5rem 1rem',
732
+ textAlign: 'center',
733
+ display: 'flex',
734
+ flexDirection: 'column',
735
+ alignItems: 'center',
736
+ gap: '0.65rem'
737
+ });
738
+
739
+ styles.addClass('todo-empty-mark', {
740
+ width: '4rem',
741
+ height: '4rem',
742
+ borderRadius: '22px',
743
+ background: 'rgba(23, 52, 71, 0.06)',
744
+ display: 'flex',
745
+ alignItems: 'center',
746
+ justifyContent: 'center',
747
+ color: '#173447',
748
+ fontSize: '1.5rem',
749
+ fontWeight: 800
750
+ });
751
+
752
+ styles.addClass('todo-empty-title', {
753
+ fontSize: '1.1rem',
754
+ color: '#173447'
755
+ });
756
+
757
+ styles.addClass('todo-empty-copy', {
758
+ color: '#6f7f8b',
759
+ maxWidth: '30rem',
760
+ lineHeight: 1.6,
761
+ fontSize: '0.94rem'
762
+ });
763
+
764
+ export function injectStyles() {
765
+ styles.inject('todo-fullstack-styles');
766
+ }
767
+
768
+ export default styles;