odoro 1.0.0 → 1.0.2

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 (33) hide show
  1. package/README.md +73 -0
  2. package/dist/cli.js +3 -3
  3. package/dist/{commands-PT3NS65O.js → commands-AHMXBWQQ.js} +25 -5
  4. package/dist/{create-IOFAPDBO.js → create-GD6O2TPL.js} +118 -70
  5. package/dist/{package-6ADADETZ.js → package-VMTZDORI.js} +1 -1
  6. package/dist/registry/index.d.ts +2 -2
  7. package/package.json +1 -1
  8. package/templates/react-ts/_variantes/avec-moteur/src/fond.tsx +118 -0
  9. package/templates/react-ts/_variantes/sans-libs/src/App.tsx +245 -45
  10. package/templates/react-ts/_variantes/sans-libs/src/fond.tsx +23 -0
  11. package/templates/react-ts/_variantes/sans-libs/src/styles.css +357 -42
  12. package/templates/react-ts/_variantes/sans-routeur/src/App.tsx +305 -62
  13. package/templates/react-ts/public/favicon.svg +2 -3
  14. package/templates/react-ts/src/App.tsx +443 -43
  15. package/templates/react-ts/src/fond.tsx +42 -0
  16. package/templates/react-ts/src/router.tsx +72 -0
  17. package/templates/react-ts/src/styles.css +4 -5
  18. package/templates/react-ts-server/_variantes/avec-moteur/client/src/fond.tsx +118 -0
  19. package/templates/react-ts-server/_variantes/sans-libs/client/src/App.tsx +245 -45
  20. package/templates/react-ts-server/_variantes/sans-libs/client/src/fond.tsx +23 -0
  21. package/templates/react-ts-server/_variantes/sans-libs/client/src/styles.css +357 -42
  22. package/templates/react-ts-server/_variantes/sans-routeur/client/src/App.tsx +305 -62
  23. package/templates/react-ts-server/client/public/favicon.svg +2 -3
  24. package/templates/react-ts-server/client/src/App.tsx +443 -43
  25. package/templates/react-ts-server/client/src/fond.tsx +42 -0
  26. package/templates/react-ts-server/client/src/router.tsx +72 -0
  27. package/templates/react-ts-server/client/src/styles.css +4 -5
  28. package/templates/react-ts/src/routes/About.tsx +0 -19
  29. package/templates/react-ts/src/routes/Home.tsx +0 -80
  30. package/templates/react-ts/src/routes/NotFound.tsx +0 -14
  31. package/templates/react-ts-server/client/src/routes/About.tsx +0 -19
  32. package/templates/react-ts-server/client/src/routes/Home.tsx +0 -148
  33. package/templates/react-ts-server/client/src/routes/NotFound.tsx +0 -14
@@ -1,18 +1,23 @@
1
1
  /* Styles de l'application.
2
2
 
3
3
  Les bibliotheques Odoro n'ont pas ete retenues a la creation : il n'y a donc
4
- ni jetons ni classes utilitaires, et cette feuille porte tout. C'est du CSS
5
- ordinaire, a remplacer par ce que vous voulez.
4
+ ni jetons ni classes utilitaires, et cette feuille porte tout. Le dessin est
5
+ celui de la version complete meme barre en gelules, meme typographie,
6
+ memes cartes, meme teinte de marque — en CSS ordinaire.
7
+
8
+ Une seule variable commande la couleur : `--marque`. La changer repeint le
9
+ signe, les accents et les boutons d'un seul coup.
6
10
 
7
11
  Pour passer aux jetons plus tard : `npm i @odoro-cli/libs`, puis importer
8
12
  `@odoro-cli/libs/styles.css` dans `main.tsx` avant cette feuille. */
9
13
 
10
14
  :root {
15
+ --marque: #3b82f6;
11
16
  --fond: #ffffff;
12
17
  --encre: #18181b;
13
18
  --doux: #71717a;
14
19
  --filet: #e4e4e7;
15
- --accent: #4f46e5;
20
+ --surface: #fafafa;
16
21
  color-scheme: light dark;
17
22
  }
18
23
 
@@ -25,7 +30,7 @@
25
30
  --encre: #fafafa;
26
31
  --doux: #a1a1aa;
27
32
  --filet: #27272a;
28
- --accent: #818cf8;
33
+ --surface: #18181b;
29
34
  }
30
35
  }
31
36
 
@@ -37,102 +42,412 @@ body {
37
42
  margin: 0;
38
43
  background: var(--fond);
39
44
  color: var(--encre);
40
- font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;
45
+ font-family: system-ui, -apple-system, Segoe UI, sans-serif;
41
46
  line-height: 1.6;
42
47
  }
43
48
 
49
+ code,
50
+ pre {
51
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
52
+ }
53
+
44
54
  .app-shell {
45
55
  min-height: 100dvh;
46
56
  display: grid;
47
57
  grid-template-rows: auto 1fr auto;
48
58
  }
49
59
 
50
- .nav,
51
- .pied {
52
- padding: 1rem 1.5rem;
60
+ /* ----- Barre en gelules --------------------------------------------------- */
61
+
62
+ /* La barre ne peint pas de bandeau : ce sont les gelules qui portent la
63
+ surface, posees sur ce qu'il y a derriere. Le fond decoratif continue donc
64
+ de passer dessous, au lieu d'etre coupe par une bande opaque. */
65
+
66
+ .barre {
67
+ position: sticky;
68
+ top: 0;
69
+ z-index: 20;
70
+ padding: 0 1.25rem;
53
71
  }
54
72
 
55
- .nav {
56
- border-bottom: 1px solid var(--filet);
73
+ .barre-contenu {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 0.75rem;
77
+ height: 5rem;
78
+ width: 100%;
79
+ max-width: 64rem;
80
+ margin: 0 auto;
81
+ }
82
+
83
+ .gelule {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ height: 3.5rem;
87
+ flex-shrink: 0;
88
+ padding: 0 1.25rem;
89
+ border: 1px solid color-mix(in oklab, var(--encre) 12%, transparent);
90
+ border-radius: 9999px;
91
+ background: color-mix(in oklab, var(--fond) 72%, transparent);
92
+ backdrop-filter: blur(16px);
93
+ text-decoration: none;
94
+ }
95
+
96
+ .gelule-lien {
97
+ margin-left: auto;
98
+ color: var(--doux);
99
+ font-size: 0.875rem;
100
+ }
101
+
102
+ .gelule-lien:hover {
103
+ color: var(--encre);
104
+ }
105
+
106
+ /* ----- Marque ------------------------------------------------------------- */
107
+
108
+ .marque {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ gap: 0.625rem;
112
+ }
113
+
114
+ .marque-signe {
115
+ color: var(--marque);
116
+ display: inline-flex;
117
+ }
118
+
119
+ .marque-mot {
120
+ font-size: 1.125rem;
121
+ font-weight: 700;
122
+ letter-spacing: 0.025em;
123
+ color: var(--encre);
124
+ }
125
+
126
+ /* ----- Coquille ----------------------------------------------------------- */
127
+
128
+ .principal {
129
+ position: relative;
57
130
  }
58
131
 
59
132
  .pied {
133
+ display: flex;
134
+ align-items: center;
135
+ justify-content: space-between;
136
+ gap: 1rem;
137
+ padding: 2rem 1.5rem;
60
138
  border-top: 1px solid var(--filet);
61
139
  color: var(--doux);
62
140
  font-size: 0.875rem;
63
141
  }
64
142
 
65
- .marque {
66
- font-weight: 600;
67
- color: var(--accent);
143
+ .pied .marque-mot {
144
+ font-size: 0.875rem;
145
+ color: inherit;
68
146
  }
69
147
 
70
- .contenu {
148
+ /* ----- Fond decoratif ----------------------------------------------------- */
149
+
150
+ .fond {
151
+ position: absolute;
152
+ inset-inline: 0;
153
+ top: 0;
154
+ height: 42rem;
155
+ overflow: hidden;
156
+ pointer-events: none;
157
+ }
158
+
159
+ .fond-nappe {
160
+ position: absolute;
161
+ border-radius: 9999px;
162
+ filter: blur(64px);
163
+ }
164
+
165
+ .fond-nappe-haute {
166
+ left: 50%;
167
+ top: -18rem;
168
+ width: 46rem;
169
+ height: 46rem;
170
+ transform: translateX(-50%);
171
+ opacity: 0.3;
172
+ background: radial-gradient(closest-side, var(--marque), transparent);
173
+ }
174
+
175
+ .fond-nappe-droite {
176
+ right: -10rem;
177
+ top: 6rem;
178
+ width: 30rem;
179
+ height: 30rem;
180
+ opacity: 0.18;
181
+ background: radial-gradient(closest-side, var(--marque), transparent);
182
+ }
183
+
184
+ /* ----- Mise en page ------------------------------------------------------- */
185
+
186
+ .contenu,
187
+ .contenu-etroit {
71
188
  width: 100%;
72
- max-width: 48rem;
73
189
  margin: 0 auto;
74
- padding: 3rem 1.5rem;
190
+ position: relative;
75
191
  }
76
192
 
77
- h1 {
78
- font-size: 2.25rem;
79
- letter-spacing: -0.02em;
80
- margin: 0;
193
+ .contenu {
194
+ max-width: 64rem;
81
195
  }
82
196
 
83
- .chapeau {
84
- color: var(--doux);
197
+ .contenu-etroit {
198
+ max-width: 48rem;
199
+ text-align: center;
200
+ }
201
+
202
+ .hero {
203
+ padding: 4rem 1.5rem 5rem;
204
+ }
205
+
206
+ .section {
207
+ padding: 5rem 1.5rem;
208
+ border-top: 1px solid var(--filet);
209
+ }
210
+
211
+ .section-centre {
212
+ padding: 6rem 1.5rem;
213
+ }
214
+
215
+ /* ----- Hero --------------------------------------------------------------- */
216
+
217
+ .pastille-marque {
218
+ display: inline-flex;
219
+ align-items: center;
220
+ gap: 0.5rem;
221
+ white-space: nowrap;
222
+ padding: 0.25rem 0.75rem;
223
+ border-radius: 9999px;
224
+ border: 1px solid color-mix(in oklab, var(--marque) 30%, transparent);
225
+ background: color-mix(in oklab, var(--marque) 10%, transparent);
226
+ color: var(--marque);
227
+ font-size: 0.75rem;
228
+ font-weight: 500;
229
+ }
230
+
231
+ .hero-titre {
232
+ margin: 1.5rem 0 0;
233
+ max-width: 46rem;
234
+ font-size: clamp(2.5rem, 6vw, 3.75rem);
235
+ font-weight: 700;
236
+ letter-spacing: -0.03em;
237
+ line-height: 1.05;
238
+ }
239
+
240
+ .accent {
241
+ color: var(--marque);
242
+ }
243
+
244
+ .hero-chapeau {
245
+ margin: 1.25rem 0 0;
246
+ max-width: 36rem;
85
247
  font-size: 1.125rem;
86
- max-width: 60ch;
248
+ color: var(--doux);
249
+ }
250
+
251
+ .hero-actions {
252
+ display: flex;
253
+ flex-wrap: wrap;
254
+ gap: 0.75rem;
255
+ margin-top: 2rem;
87
256
  }
88
257
 
89
- code {
258
+ .faits {
259
+ display: flex;
260
+ flex-wrap: wrap;
261
+ gap: 0.5rem;
262
+ margin-top: 1.5rem;
263
+ }
264
+
265
+ .fait {
266
+ padding: 0.25rem 0.75rem;
267
+ border-radius: 9999px;
268
+ border: 1px solid var(--filet);
269
+ color: var(--doux);
270
+ font-size: 0.75rem;
271
+ }
272
+
273
+ .hero-fenetre {
274
+ margin-top: 3.5rem;
275
+ }
276
+
277
+ /* ----- Fenetre du produit ------------------------------------------------- */
278
+
279
+ .fenetre {
280
+ overflow: hidden;
281
+ border-radius: 1rem;
282
+ border: 1px solid var(--filet);
283
+ background: var(--surface);
284
+ box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
285
+ }
286
+
287
+ .fenetre-barre {
288
+ display: flex;
289
+ align-items: center;
290
+ gap: 0.5rem;
291
+ padding: 0.625rem 1rem;
292
+ border-bottom: 1px solid var(--filet);
293
+ }
294
+
295
+ .fenetre-pastilles {
296
+ display: flex;
297
+ gap: 0.375rem;
298
+ }
299
+
300
+ .fenetre-pastilles span {
301
+ width: 0.625rem;
302
+ height: 0.625rem;
303
+ border-radius: 9999px;
304
+ background: var(--filet);
305
+ }
306
+
307
+ .fenetre-chemin {
308
+ margin-left: 0.5rem;
309
+ color: var(--doux);
90
310
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
91
- font-size: 0.9em;
311
+ font-size: 0.75rem;
312
+ }
313
+
314
+ .fenetre-code {
315
+ margin: 0;
316
+ padding: 1.25rem;
317
+ overflow-x: auto;
318
+ font-size: 0.75rem;
319
+ line-height: 1.7;
320
+ color: var(--doux);
321
+ }
322
+
323
+ /* ----- Cartes ------------------------------------------------------------- */
324
+
325
+ .sur-titre {
326
+ margin: 0;
327
+ font-size: 0.8125rem;
328
+ font-weight: 600;
329
+ letter-spacing: 0.12em;
330
+ text-transform: uppercase;
331
+ color: var(--doux);
92
332
  }
93
333
 
94
334
  .grille {
95
335
  display: grid;
96
336
  gap: 1rem;
97
- grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
98
- margin: 3rem 0;
337
+ grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
338
+ margin-top: 2rem;
99
339
  }
100
340
 
101
341
  .carte {
102
342
  border: 1px solid var(--filet);
103
- border-radius: 0.5rem;
104
- padding: 1.25rem;
343
+ border-radius: 0.75rem;
344
+ background: var(--surface);
345
+ padding: 1.5rem;
105
346
  }
106
347
 
107
- .carte h2 {
108
- font-size: 1rem;
109
- margin: 0;
348
+ .carte-numero {
349
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
350
+ font-size: 0.75rem;
351
+ color: var(--marque);
352
+ }
353
+
354
+ .carte h3 {
355
+ margin: 0.75rem 0 0;
356
+ font-size: 1.125rem;
357
+ letter-spacing: -0.01em;
110
358
  }
111
359
 
112
360
  .carte p {
113
- color: var(--doux);
114
- font-size: 0.875rem;
115
361
  margin: 0.5rem 0 0;
362
+ font-size: 0.875rem;
363
+ color: var(--doux);
364
+ }
365
+
366
+ /* ----- Cloture ------------------------------------------------------------ */
367
+
368
+ .cloture-titre {
369
+ margin: 0;
370
+ font-size: clamp(1.75rem, 4vw, 2.25rem);
371
+ font-weight: 700;
372
+ letter-spacing: -0.02em;
116
373
  }
117
374
 
118
- .ligne {
375
+ .cloture-chapeau {
376
+ margin: 1rem auto 0;
377
+ max-width: 40rem;
378
+ color: var(--doux);
379
+ }
380
+
381
+ .commande {
119
382
  display: flex;
120
383
  align-items: center;
121
- gap: 1rem;
384
+ gap: 0.5rem;
385
+ max-width: 28rem;
386
+ margin: 2rem auto 0;
387
+ padding: 0.5rem 0.5rem 0.5rem 1rem;
388
+ border: 1px solid var(--filet);
389
+ border-radius: 0.75rem;
390
+ background: var(--surface);
391
+ }
392
+
393
+ .commande code {
394
+ flex: 1;
395
+ text-align: left;
396
+ font-size: 0.875rem;
397
+ }
398
+
399
+ .lien-discret {
400
+ display: inline-block;
401
+ margin: 1.5rem auto 0;
402
+ color: var(--doux);
403
+ font-size: 0.875rem;
404
+ text-decoration: none;
405
+ }
406
+
407
+ .lien-discret:hover {
408
+ color: var(--marque);
122
409
  }
123
410
 
411
+ /* ----- Boutons ------------------------------------------------------------ */
412
+
124
413
  .bouton {
125
- background: var(--accent);
126
- color: var(--fond);
414
+ display: inline-flex;
415
+ align-items: center;
416
+ justify-content: center;
417
+ height: 2.5rem;
418
+ padding: 0 1rem;
127
419
  border: 0;
128
420
  border-radius: 0.5rem;
129
- padding: 0.5rem 1rem;
130
421
  font: inherit;
422
+ font-size: 0.9375rem;
131
423
  font-weight: 500;
424
+ text-decoration: none;
132
425
  cursor: pointer;
133
426
  }
134
427
 
135
- .compteur {
136
- font-size: 1.125rem;
137
- font-variant-numeric: tabular-nums;
428
+ .bouton-primaire {
429
+ background: var(--marque);
430
+ color: #ffffff;
431
+ }
432
+
433
+ .bouton-primaire:hover {
434
+ background: color-mix(in oklab, var(--marque) 85%, black);
435
+ }
436
+
437
+ .bouton-secondaire {
438
+ background: var(--surface);
439
+ color: var(--encre);
440
+ border: 1px solid var(--filet);
441
+ }
442
+
443
+ .bouton-fantome {
444
+ height: 2rem;
445
+ padding: 0 0.75rem;
446
+ background: transparent;
447
+ color: var(--encre);
448
+ font-size: 0.875rem;
449
+ }
450
+
451
+ .bouton-fantome:hover {
452
+ background: var(--filet);
138
453
  }