correction des themes

This commit is contained in:
2026-02-28 00:15:54 +01:00
parent 521e529ab0
commit 82c4d1cfe1
67 changed files with 1861 additions and 742 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1328,3 +1328,468 @@ FAM | META SEQ | SST SEQ | RANGE
0 | 00001236 | 00001235 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) 0 | 00001236 | 00001235 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001237 | 00001234 SST | [====================================================================================] | 14f643c3d8584875-ef63e6a8b41c1ab5 (0 MiB, fresh) 1 | 00001237 | 00001234 SST | [====================================================================================] | 14f643c3d8584875-ef63e6a8b41c1ab5 (0 MiB, fresh)
2 | 00001238 | 00001233 SST | [=======================================================================] | 14f643c3d8584875-cd73069ab87dfc3d (0 MiB, fresh) 2 | 00001238 | 00001233 SST | [=======================================================================] | 14f643c3d8584875-cd73069ab87dfc3d (0 MiB, fresh)
Time 2026-02-27T22:58:47.3218593Z
Commit 00001244 1167 keys in 6ms 701µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001242 | 00001241 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001243 | 00001239 SST | [=================================================================================================] | 0315bd6ef0760e1f-ff1373558b528b52 (0 MiB, fresh)
1 | 00001244 | 00001240 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
Time 2026-02-27T22:59:03.5450818Z
Commit 00001250 1333 keys in 6ms 527µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001248 | 00001247 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001249 | 00001246 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
2 | 00001250 | 00001245 SST | [=================================================================================================] | 015aa7af8c46be57-fcc735cb29041d9f (0 MiB, fresh)
Time 2026-02-27T22:59:11.4494605Z
Commit 00001256 68 keys in 6ms 770µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001254 | 00001253 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001255 | 00001252 SST | [============================================================================================] | 0f121abadc431dcc-fc55757bb72f299c (0 MiB, fresh)
2 | 00001256 | 00001251 SST | [=======================================================================================] | 142f56664d33ae26-f5ac1904a39713c5 (0 MiB, fresh)
Time 2026-02-27T22:59:22.1968537Z
Commit 00001262 20 keys in 7ms 25µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001260 | 00001259 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001261 | 00001257 SST | [================================================] | 51397423a6488881-cd73069ab87dfc3d (0 MiB, fresh)
2 | 00001262 | 00001258 SST | [================================================] | 51397423a6488881-cd73069ab87dfc3d (0 MiB, fresh)
Time 2026-02-27T22:59:27.8214001Z
Commit 00001268 8 keys in 8ms 273µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001266 | 00001265 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001267 | 00001263 SST | [===============================================================] | 44f541408e0edcb6-e8337425000cb255 (0 MiB, fresh)
2 | 00001268 | 00001264 SST | [===============================================================] | 44f541408e0edcb6-e8337425000cb255 (0 MiB, fresh)
Time 2026-02-27T22:59:49.7348427Z
Commit 00001274 4 keys in 15ms 566µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001272 | 00001271 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001273 | 00001269 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001274 | 00001270 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:00:56.9064742Z
Commit 00001280 4 keys in 8ms 633µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001278 | 00001277 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001279 | 00001275 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001280 | 00001276 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:01:59.8522138Z
Commit 00001286 676 keys in 6ms 914µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001284 | 00001283 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001285 | 00001281 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001286 | 00001282 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (1 MiB, fresh)
Time 2026-02-27T23:02:06.5383045Z
Commit 00001292 4 keys in 6ms 427µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001290 | 00001289 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001291 | 00001287 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001292 | 00001288 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:02:40.6510847Z
Commit 00001298 511 keys in 6ms 801µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001296 | 00001295 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001297 | 00001294 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001298 | 00001293 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (1 MiB, fresh)
Time 2026-02-27T23:02:52.6361915Z
Commit 00001304 156 keys in 6ms 558µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001302 | 00001301 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001303 | 00001299 SST | [================================================================================================] | 0122a8bf9145a429-fa0c8e3889b99225 (0 MiB, fresh)
2 | 00001304 | 00001300 SST | [================================================================================================] | 0122a8bf9145a429-fa0c8e3889b99225 (0 MiB, fresh)
Time 2026-02-27T23:04:08.23609Z
Commit 00001310 4 keys in 7ms 762µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001308 | 00001307 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001309 | 00001305 SST | O | 9c27d2b5acd6b310-9c27d2b5acd6b310 (0 MiB, fresh)
2 | 00001310 | 00001306 SST | O | 9c27d2b5acd6b310-9c27d2b5acd6b310 (0 MiB, fresh)
Time 2026-02-27T23:04:10.9649264Z
Commit 00001316 4 keys in 17ms 42µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001314 | 00001313 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001315 | 00001311 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
2 | 00001316 | 00001312 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
Time 2026-02-27T23:04:30.1388742Z
Commit 00001322 4 keys in 16ms 407µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001320 | 00001319 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001321 | 00001317 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001322 | 00001318 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:05:42.1190997Z
Commit 00001328 114 keys in 6ms 169µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001326 | 00001325 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001327 | 00001324 SST | [==================================================================================================] | 016409dcc3e1f6df-fd8767054879a7cc (0 MiB, fresh)
2 | 00001328 | 00001323 SST | [==============================================================================================] | 016409dcc3e1f6df-f4e7b7ad50190fac (0 MiB, fresh)
Time 2026-02-27T23:06:23.813682Z
Commit 00001338 3508 keys in 9ms 760µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001334 | 00001331 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001335 | 00001332 SST | [=================================================================================================] | 048a038d85e76eca-ff343b7a2826da4e (0 MiB, fresh)
3 | 00001336 | 00001333 SST | [==================================================================================================] | 00b2132e5e3ea34b-ff853fcb809f098a (0 MiB, fresh)
1 | 00001337 | 00001330 SST | [==================================================================================================] | 0039ff5f24cca69a-ffd2128295feedf0 (0 MiB, fresh)
2 | 00001338 | 00001329 SST | [==================================================================================================] | 0039ff5f24cca69a-ffcf6c033e7f009d (1 MiB, fresh)
Time 2026-02-27T23:06:37.4896695Z
Commit 00001348 12998 keys in 11ms 49µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001344 | 00001341 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001345 | 00001343 SST | [==================================================================================================] | 0004a39c2fee8846-ff73e16ef41df6ed (0 MiB, fresh)
2 | 00001346 | 00001339 SST | [==================================================================================================] | 0004a39c2fee8846-ffd966598c8595fa (7 MiB, fresh)
1 | 00001347 | 00001340 SST | [==================================================================================================] | 0004a39c2fee8846-ffd966598c8595fa (1 MiB, fresh)
3 | 00001348 | 00001342 SST | [==================================================================================================] | 000dfa90d653daa5-ffe78e6e1b68be28 (0 MiB, fresh)
Time 2026-02-27T23:06:53.3230843Z
Commit 00001358 717 keys in 12ms 325µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001354 | 00001351 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001355 | 00001350 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001356 | 00001349 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (1 MiB, fresh)
3 | 00001357 | 00001352 SST | [=========================================================================================] | 0c2c464b30aae2bd-f11ea48a584eded7 (0 MiB, fresh)
4 | 00001358 | 00001353 SST | [================================================================] | 3863221fd831e128-dfb3df25d6ba7e62 (0 MiB, fresh)
2 | 00001361 | Compaction:
2 | 00001361 | MERGE (35309 keys):
2 | 00001361 | 00000492 INPUT | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633
2 | 00001361 | 00000501 INPUT | [=================================================================================================] | 038551e4bbed3e04-fdac997cbf24ab54
2 | 00001361 | 00000507 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001361 | 00000514 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000520 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000525 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000531 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001361 | 00000537 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000548 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000554 INPUT | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633
2 | 00001361 | 00000559 INPUT | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633
2 | 00001361 | 00000566 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00000572 INPUT | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7
2 | 00001361 | 00000578 INPUT | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d
2 | 00001361 | 00000583 INPUT | [==================================================================================================] | 0027752eca537b46-feba7f3a99a42bc4
2 | 00001361 | 00000594 INPUT | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633
2 | 00001361 | 00000599 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00001361 | 00000609 INPUT | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633
2 | 00001361 | 00001060 INPUT | [==================================================================================================] | 00078b2aad45711c-fffdad0e4861d73a
2 | 00001361 | 00001059 INPUT | [==================================================================================================] | 000358d0de9d25d6-fff73bb502d5418e
2 | 00001361 | 00001064 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001070 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001076 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001082 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001088 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001361 | 00001094 INPUT | O | 7c65b158fbf615ea-7c65b158fbf615ea
2 | 00001361 | 00001100 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001105 INPUT | [==================================================================================================] | 000358d0de9d25d6-fff3b56bbe0e6b22
2 | 00001361 | 00001116 INPUT | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633
2 | 00001361 | 00001122 INPUT | [==================================================================================================] | 0122a8bf9145a429-ffcb3bca70a06a01
2 | 00001361 | 00001132 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001138 INPUT | O | 9c27d2b5acd6b310-9c27d2b5acd6b310
2 | 00001361 | 00001144 INPUT | [==================================================================================================] | 0051cad80c47e3ca-fff3b56bbe0e6b22
2 | 00001361 | 00001154 INPUT | O | 9c27d2b5acd6b310-9c27d2b5acd6b310
2 | 00001361 | 00001160 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001165 INPUT | [=================================================================================================] | 039acc1b0fc6d7ba-ff244bc5fc918227
2 | 00001361 | 00001175 INPUT | [=================================================================================================] | 033155d55f9205e6-fde1fb32301a48a2
2 | 00001361 | 00001181 INPUT | [==============================================================================================] | 091a4d0e7a459a63-fd685e31821a9a2a
2 | 00001361 | 00001188 INPUT | O | 801410113b08be83-801410113b08be83
2 | 00001361 | 00001194 INPUT | [==============================================================================================] | 079dd3476a605273-fa0c8e3889b99225
2 | 00001361 | 00001199 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001361 | 00001209 INPUT | [=================================================================================================] | 0315bd6ef0760e1f-ff1373558b528b52
2 | 00001361 | 00001215 INPUT | [=================================================================================================] | 015aa7af8c46be57-fcc735cb29041d9f
2 | 00001361 | 00001221 INPUT | [==================================================================================================] | 0145c5bca32c1494-ffe64bbd36bacfc8
2 | 00001361 | 00001227 INPUT | [==========================================================================] | 069e2de91159e9cb-c5c647feca328c20
2 | 00001361 | 00001233 INPUT | [=======================================================================] | 14f643c3d8584875-cd73069ab87dfc3d
2 | 00001361 | 00001239 INPUT | [=================================================================================================] | 0315bd6ef0760e1f-ff1373558b528b52
2 | 00001361 | 00001245 INPUT | [=================================================================================================] | 015aa7af8c46be57-fcc735cb29041d9f
2 | 00001361 | 00001251 INPUT | [=======================================================================================] | 142f56664d33ae26-f5ac1904a39713c5
2 | 00001361 | 00001258 INPUT | [================================================] | 51397423a6488881-cd73069ab87dfc3d
2 | 00001361 | 00001264 INPUT | [===============================================================] | 44f541408e0edcb6-e8337425000cb255
2 | 00001361 | 00001270 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001276 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001282 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00001361 | 00001288 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001293 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00001361 | 00001300 INPUT | [================================================================================================] | 0122a8bf9145a429-fa0c8e3889b99225
2 | 00001361 | 00001306 INPUT | O | 9c27d2b5acd6b310-9c27d2b5acd6b310
2 | 00001361 | 00001312 INPUT | O | 801410113b08be83-801410113b08be83
2 | 00001361 | 00001318 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001361 | 00001323 INPUT | [==============================================================================================] | 016409dcc3e1f6df-f4e7b7ad50190fac
2 | 00001361 | 00001329 INPUT | [==================================================================================================] | 0039ff5f24cca69a-ffcf6c033e7f009d
2 | 00001361 | 00001339 INPUT | [==================================================================================================] | 0004a39c2fee8846-ffd966598c8595fa
2 | 00001361 | 00001349 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00001361 | 00001360 OUTPUT | [==================================================================================================] | 000358d0de9d25d6-fffdad0e4861d73a (cold)
2 | 00001361 | 00001359 OUTPUT | [==================================================================================================] | 0004de5e3469c610-fff49d0b9a706a34 (warm)
Time 2026-02-27T23:06:53.4333259Z
Commit 00001362 35309 keys in 33ms 883µs 100ns
FAM | META SEQ | SST SEQ | RANGE
2 | 00001361 | 00001360 SST | [==================================================================================================] | 000358d0de9d25d6-fffdad0e4861d73a (11 MiB, cold)
2 | 00001361 | 00001359 SST | [==================================================================================================] | 0004de5e3469c610-fff49d0b9a706a34 (14 MiB, warm)
2 | 00001361 | 00000492 00000501 00000507 00000514 00000520 00000525 00000531 00000537 00000548 00000554 00000559 00000566 00000572 00000578 00000583 OBSOLETE SST
2 | 00001361 | 00000594 00000599 00000609 00001059 00001060 00001064 00001070 00001076 00001082 00001088 00001094 00001100 00001105 00001116 00001122 OBSOLETE SST
2 | 00001361 | 00001132 00001138 00001144 00001154 00001160 00001165 00001175 00001181 00001188 00001194 00001199 00001209 00001215 00001221 00001227 OBSOLETE SST
2 | 00001361 | 00001233 00001239 00001245 00001251 00001258 00001264 00001270 00001276 00001282 00001288 00001293 00001300 00001306 00001312 00001318 OBSOLETE SST
2 | 00001361 | 00001323 00001329 00001339 00001349 OBSOLETE SST
| | 00000492 00000501 00000507 00000514 00000520 00000525 00000531 00000537 00000548 00000554 00000559 00000566 00000572 00000578 00000583 SST DELETED
| | 00000594 00000599 00000609 00001059 00001060 00001064 00001070 00001076 00001082 00001088 00001094 00001100 00001105 00001116 00001122 SST DELETED
| | 00001132 00001138 00001144 00001154 00001160 00001165 00001175 00001181 00001188 00001194 00001199 00001209 00001215 00001221 00001227 SST DELETED
| | 00001233 00001239 00001245 00001251 00001258 00001264 00001270 00001276 00001282 00001288 00001293 00001300 00001306 00001312 00001318 SST DELETED
| | 00001323 00001329 00001339 00001349 SST DELETED
| | 00000498 00000506 00000511 00000518 00000524 00000530 00000535 00000544 00000552 00000558 00000564 00000570 00000576 00000582 00000591 META DELETED
| | 00000598 00000605 00000614 00001061 00001068 00001073 00001080 00001086 00001092 00001098 00001104 00001113 00001120 00001128 00001136 META DELETED
| | 00001142 00001151 00001158 00001164 00001172 00001180 00001186 00001192 00001198 00001206 00001213 00001219 00001226 00001231 00001238 META DELETED
| | 00001243 00001250 00001256 00001262 00001268 00001274 00001280 00001286 00001292 00001298 00001304 00001310 00001316 00001322 00001328 META DELETED
| | 00001338 00001346 00001356 META DELETED
Time 2026-02-27T23:06:59.3954032Z
Commit 00001372 2790 keys in 12ms 715µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001368 | 00001365 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001369 | 00001364 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
2 | 00001370 | 00001363 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (5 MiB, fresh)
3 | 00001371 | 00001366 SST | [================================================================================] | 01f754f53e5714e5-d048cdff62148b95 (0 MiB, fresh)
4 | 00001372 | 00001367 SST | [=========================================================================] | 09beed22945bdb16-c567d627b549bacd (0 MiB, fresh)
Time 2026-02-27T23:07:30.756945Z
Commit 00001378 661 keys in 8ms 3µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001376 | 00001375 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001377 | 00001374 SST | [==================================================================================================] | 00431eb00a999d62-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001378 | 00001373 SST | [==================================================================================================] | 00431eb00a999d62-ffe64bbd36bacfc8 (1 MiB, fresh)
Time 2026-02-27T23:07:38.5120754Z
Commit 00001388 2153 keys in 12ms 533µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001384 | 00001381 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001385 | 00001380 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (4 MiB, fresh)
1 | 00001386 | 00001379 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
4 | 00001387 | 00001383 SST | [====================================================================================] | 0fbd3aec0f537227-eb44a063cd62c608 (0 MiB, fresh)
3 | 00001388 | 00001382 SST | [=================================================================================] | 04b5b420ca333ff5-d48c0f4847af485b (0 MiB, fresh)
Time 2026-02-27T23:07:44.1815765Z
Commit 00001398 69117 keys in 14ms 326µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001394 | 00001391 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001395 | 00001392 SST | [==================================================================================================] | 0004686477778735-fff808c2b13822a1 (0 MiB, fresh)
3 | 00001396 | 00001393 SST | [==================================================================================================] | 000214683bef0477-fffcf9aef2416edc (0 MiB, fresh)
2 | 00001397 | 00001389 SST | [==================================================================================================] | 000358d0de9d25d6-fff808c2b13822a1 (15 MiB, fresh)
1 | 00001398 | 00001390 SST | [==================================================================================================] | 000358d0de9d25d6-ffffc8b261a62b07 (4 MiB, fresh)
2 | 00001401 | Compaction:
2 | 00001401 | MERGE (195208 keys):
2 | 00001401 | 00000314 INPUT | [==================================================================================================] | 00005b386d02964f-ffffc8b261a62b07
2 | 00001401 | 00000313 INPUT | [==================================================================================================] | 00026f12745ee1f1-fffaa1a23510a6ba
2 | 00001401 | 00000318 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000324 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000330 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000336 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000342 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000348 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000354 INPUT | O | 8ec66124a62fe873-8ec66124a62fe873
2 | 00001401 | 00000360 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000366 INPUT | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52
2 | 00001401 | 00000371 INPUT | [=================================================================================================] | 038551e4bbed3e04-fe395009436c0ad9
2 | 00001401 | 00000378 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000384 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000390 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000396 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000402 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000408 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000414 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000420 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000426 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000431 INPUT | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633
2 | 00001401 | 00000438 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000443 INPUT | [=================================================================================================] | 038551e4bbed3e04-fdac997cbf24ab54
2 | 00001401 | 00000450 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000456 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001401 | 00000462 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001401 | 00000468 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001401 | 00000474 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001401 | 00000480 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001401 | 00000485 INPUT | [========================================================================================] | 1b57cfa037b9ece9-fdac997cbf24ab54
2 | 00001401 | 00001360 INPUT | [==================================================================================================] | 000358d0de9d25d6-fffdad0e4861d73a
2 | 00001401 | 00001359 INPUT | [==================================================================================================] | 0004de5e3469c610-fff49d0b9a706a34
2 | 00001401 | 00001363 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001401 | 00001373 INPUT | [==================================================================================================] | 00431eb00a999d62-ffe64bbd36bacfc8
2 | 00001401 | 00001380 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001401 | 00001389 INPUT | [==================================================================================================] | 000358d0de9d25d6-fff808c2b13822a1
2 | 00001401 | 00001400 OUTPUT | [==================================================================================================] | 00005b386d02964f-ffffc8b261a62b07 (cold)
2 | 00001401 | 00001399 OUTPUT | [==================================================================================================] | 00026f12745ee1f1-fffa7cd5097e8a6a (warm)
Time 2026-02-27T23:07:44.4777838Z
Commit 00001402 195208 keys in 63ms 444µs 300ns
FAM | META SEQ | SST SEQ | RANGE
2 | 00001401 | 00001400 SST | [==================================================================================================] | 00005b386d02964f-ffffc8b261a62b07 (88 MiB, cold)
2 | 00001401 | 00001399 SST | [==================================================================================================] | 00026f12745ee1f1-fffa7cd5097e8a6a (24 MiB, warm)
2 | 00001401 | 00000313 00000314 00000318 00000324 00000330 00000336 00000342 00000348 00000354 00000360 00000366 00000371 00000378 00000384 00000390 OBSOLETE SST
2 | 00001401 | 00000396 00000402 00000408 00000414 00000420 00000426 00000431 00000438 00000443 00000450 00000456 00000462 00000468 00000474 00000480 OBSOLETE SST
2 | 00001401 | 00000485 00001359 00001360 00001363 00001373 00001380 00001389 OBSOLETE SST
| | 00000313 00000314 00000318 00000324 00000330 00000336 00000342 00000348 00000354 00000360 00000366 00000371 00000378 00000384 00000390 SST DELETED
| | 00000396 00000402 00000408 00000414 00000420 00000426 00000431 00000438 00000443 00000450 00000456 00000462 00000468 00000474 00000480 SST DELETED
| | 00000485 00001359 00001360 00001363 00001373 00001380 00001389 SST DELETED
| | 00000315 00000321 00000328 00000334 00000340 00000346 00000352 00000358 00000364 00000369 00000376 00000382 00000388 00000394 00000400 META DELETED
| | 00000406 00000412 00000418 00000423 00000430 00000435 00000442 00000448 00000454 00000460 00000466 00000472 00000478 00000484 00000490 META DELETED
| | 00001361 00001370 00001378 00001385 00001397 META DELETED
Time 2026-02-27T23:08:00.762944Z
Commit 00001412 943 keys in 12ms 720µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001408 | 00001405 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001409 | 00001407 SST | [==============================] | a5db3feec0ee2ba5-f51c622efd850f17 (0 MiB, fresh)
3 | 00001410 | 00001406 SST | [=========================] | 1d39e1c8487bf5a8-606870e91194c4ec (0 MiB, fresh)
1 | 00001411 | 00001404 SST | [==================================================================================================] | 0029e3cce1b51f25-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001412 | 00001403 SST | [==================================================================================================] | 0029e3cce1b51f25-ffe64bbd36bacfc8 (2 MiB, fresh)
Time 2026-02-27T23:08:05.7949465Z
Commit 00001418 6 keys in 16ms 939µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001416 | 00001415 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001417 | 00001413 SST | [=====] | 7c65b158fbf615ea-8cbc9c7f55b00340 (0 MiB, fresh)
2 | 00001418 | 00001414 SST | [=====] | 7c65b158fbf615ea-8cbc9c7f55b00340 (0 MiB, fresh)
Time 2026-02-27T23:08:13.4371557Z
Commit 00001424 8 keys in 16ms 754µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001422 | 00001421 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001423 | 00001419 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
2 | 00001424 | 00001420 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
Time 2026-02-27T23:08:37.3479525Z
Commit 00001434 1146 keys in 11ms 859µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001430 | 00001427 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001431 | 00001429 SST | [=====================================================] | 27d07fefba4e3b92-b1504609bb84a4f5 (0 MiB, fresh)
1 | 00001432 | 00001425 SST | [==================================================================================================] | 00eac999f8125084-fff068465974022c (0 MiB, fresh)
2 | 00001433 | 00001426 SST | [==================================================================================================] | 00eac999f8125084-fff068465974022c (2 MiB, fresh)
3 | 00001434 | 00001428 SST | [====================================================] | 0450db27000d2d1d-8aa0fc427859f9a1 (0 MiB, fresh)
Time 2026-02-27T23:08:47.727701Z
Commit 00001440 6 keys in 16ms 183µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001438 | 00001437 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001439 | 00001435 SST | [=====] | 7c65b158fbf615ea-8cbc9c7f55b00340 (0 MiB, fresh)
2 | 00001440 | 00001436 SST | [=====] | 7c65b158fbf615ea-8cbc9c7f55b00340 (0 MiB, fresh)
Time 2026-02-27T23:08:54.3669427Z
Commit 00001446 6 keys in 7ms 90µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001444 | 00001443 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001445 | 00001441 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
2 | 00001446 | 00001442 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
Time 2026-02-27T23:09:05.6147108Z
Commit 00001452 4 keys in 8ms 354µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001450 | 00001449 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001451 | 00001447 SST | O | 1b53c1a0c3009276-1b53c1a0c3009276 (0 MiB, fresh)
2 | 00001452 | 00001448 SST | O | 1b53c1a0c3009276-1b53c1a0c3009276 (0 MiB, fresh)
Time 2026-02-27T23:10:19.1195813Z
Commit 00001462 313 keys in 10ms 270µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001458 | 00001455 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001459 | 00001453 SST | [==================================================================================================] | 0131fb5602651ef0-ff1ad0c236dc7dd8 (0 MiB, fresh)
3 | 00001460 | 00001456 SST | [=====================] | 41573d7bf1199bf2-7a518913a3b5bfa4 (0 MiB, fresh)
2 | 00001461 | 00001454 SST | [==================================================================================================] | 0131fb5602651ef0-ff1ad0c236dc7dd8 (0 MiB, fresh)
4 | 00001462 | 00001457 SST | [==========] | 4ed141f835399400-6ab4e996faf10a59 (0 MiB, fresh)
Time 2026-02-27T23:10:31.4620557Z
Commit 00001468 10 keys in 17ms 184µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001466 | 00001465 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001467 | 00001463 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
2 | 00001468 | 00001464 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
Time 2026-02-27T23:11:20.0938633Z
Commit 00001474 4 keys in 16ms 831µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001472 | 00001471 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001473 | 00001469 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001474 | 00001470 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:11:26.9015996Z
Commit 00001484 1082 keys in 11ms 591µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001480 | 00001477 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001481 | 00001475 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001482 | 00001476 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (2 MiB, fresh)
4 | 00001483 | 00001478 SST | [========================================================================================] | 1402ffae5f580915-f6e88f1a995e1564 (0 MiB, fresh)
3 | 00001484 | 00001479 SST | [===========================================================] | 1e442a53aed1ace2-b5f4e3dfa9a0ea51 (0 MiB, fresh)
Time 2026-02-27T23:12:30.9233634Z
Commit 00001494 1173 keys in 12ms 634µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001490 | 00001487 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001491 | 00001486 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001492 | 00001485 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (2 MiB, fresh)
3 | 00001493 | 00001488 SST | [===============================================] | 2e200bef44f93ebb-ab0158e7bc03a82f (0 MiB, fresh)
4 | 00001494 | 00001489 SST | [=] | 75d6a4a0cd8abf63-7d05922c9c6bdb28 (0 MiB, fresh)
Time 2026-02-27T23:12:43.8253171Z
Commit 00001500 4 keys in 7ms 965µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001498 | 00001497 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001499 | 00001495 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
2 | 00001500 | 00001496 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
Time 2026-02-27T23:12:56.0437549Z
Commit 00001506 8 keys in 8ms 238µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001504 | 00001503 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001505 | 00001502 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
1 | 00001506 | 00001501 SST | [================================================================================] | 10331667c816da66-dee0722ea9204e83 (0 MiB, fresh)
Time 2026-02-27T23:13:00.9290386Z
Commit 00001512 4 keys in 7ms 920µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001510 | 00001509 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001511 | 00001507 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
2 | 00001512 | 00001508 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
Time 2026-02-27T23:13:09.571437Z
Commit 00001522 1309 keys in 10ms 882µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001518 | 00001515 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001519 | 00001514 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001520 | 00001513 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (3 MiB, fresh)
3 | 00001521 | 00001516 SST | [=================================] | 53069246ff282f5e-ab632ee8c25788d8 (0 MiB, fresh)
4 | 00001522 | 00001517 SST | [========================] | 302e0b1750ab1727-6e229dc6a5119230 (0 MiB, fresh)
Time 2026-02-27T23:13:12.5225258Z
Commit 00001528 4 keys in 7ms 807µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001526 | 00001525 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001527 | 00001523 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
2 | 00001528 | 00001524 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
Time 2026-02-27T23:13:18.8970684Z
Commit 00001534 4 keys in 16ms 496µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001532 | 00001531 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001533 | 00001529 SST | O | dee0722ea9204e83-dee0722ea9204e83 (0 MiB, fresh)
2 | 00001534 | 00001530 SST | O | dee0722ea9204e83-dee0722ea9204e83 (0 MiB, fresh)
Time 2026-02-27T23:13:29.1664124Z
Commit 00001544 13204 keys in 11ms 184µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001540 | 00001537 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001541 | 00001539 SST | [==================================================================================================] | 0038d445c533f911-fde391acae55ec8b (0 MiB, fresh)
2 | 00001542 | 00001535 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (4 MiB, fresh)
3 | 00001543 | 00001538 SST | [==================================================================================================] | 003a0b3fb39836cb-ffef63a55bf29798 (0 MiB, fresh)
1 | 00001544 | 00001536 SST | [==================================================================================================] | 000d168784b3a904-fffe2cca550ad65f (1 MiB, fresh)
Time 2026-02-27T23:14:02.837608Z
Commit 00001550 4252 keys in 12ms 792µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001548 | 00001547 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001549 | 00001546 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (1 MiB, fresh)
2 | 00001550 | 00001545 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (8 MiB, fresh)
Time 2026-02-27T23:14:14.6001972Z
Commit 00001560 861 keys in 10ms 280µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001556 | 00001553 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001557 | 00001552 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
2 | 00001558 | 00001551 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (2 MiB, fresh)
4 | 00001559 | 00001555 SST | [====================================================================] | 0e2b20b49d4f72d7-bdff9c3a9e1234fa (0 MiB, fresh)
3 | 00001560 | 00001554 SST | [============================] | ab50acb65b21f75b-f5ade7da8a92039d (0 MiB, fresh)
Time 2026-02-27T23:14:32.0870348Z
Commit 00001566 10 keys in 7ms 426µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001564 | 00001563 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001565 | 00001561 SST | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633 (0 MiB, fresh)
1 | 00001566 | 00001562 SST | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T23:14:36.2447106Z
Commit 00001572 4 keys in 8ms 623µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001570 | 00001569 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001571 | 00001567 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
2 | 00001572 | 00001568 SST | O | 8cbc9c7f55b00340-8cbc9c7f55b00340 (0 MiB, fresh)
Time 2026-02-27T23:14:38.9175866Z
Commit 00001578 3756 keys in 9ms 294µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001576 | 00001575 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001577 | 00001573 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (8 MiB, fresh)
1 | 00001578 | 00001574 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (1 MiB, fresh)
Time 2026-02-27T23:14:59.7778955Z
Commit 00001584 4 keys in 7ms 236µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001582 | 00001581 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001583 | 00001580 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
1 | 00001584 | 00001579 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T23:15:11.2315402Z
Commit 00001590 476 keys in 6ms 350µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001588 | 00001587 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001589 | 00001585 SST | [==================================================================================================] | 009342c7e4d63035-ffd3d02202c1f375 (0 MiB, fresh)
2 | 00001590 | 00001586 SST | [==================================================================================================] | 009342c7e4d63035-ffd3d02202c1f375 (0 MiB, fresh)
Time 2026-02-27T23:15:14.8870226Z
Commit 00001596 4 keys in 7ms 503µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001594 | 00001593 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001595 | 00001591 SST | O | 9c27d2b5acd6b310-9c27d2b5acd6b310 (0 MiB, fresh)
2 | 00001596 | 00001592 SST | O | 9c27d2b5acd6b310-9c27d2b5acd6b310 (0 MiB, fresh)

View File

@@ -4,8 +4,8 @@
"dynamicRoutes": {}, "dynamicRoutes": {},
"notFoundRoutes": [], "notFoundRoutes": [],
"preview": { "preview": {
"previewModeId": "64ea03a229f653828766a3654a7623ec", "previewModeId": "85c5dd029fc132e677dde52feee3a288",
"previewModeSigningKey": "477cbefb1eecc6237c332fd49918940f0b1f05d16c6d81d9be2d54305396dfd2", "previewModeSigningKey": "ffc22f9173cac7ecd73711e78a81e6adea61899ace90508970a207b08fc09bb1",
"previewModeEncryptionKey": "9891e33f98087cd438ebe3cf068e3cf30985af06afb29929d98c4209d4b3e460" "previewModeEncryptionKey": "ead7791e10b63610d136d15a2f80bca03f7ffb8faa5b672e422467464d362d9a"
} }
} }

View File

@@ -1,11 +1,18 @@
{ {
"/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js", "/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js",
"/api/auth/register/route": "app/api/auth/register/route.js", "/api/auth/register/route": "app/api/auth/register/route.js",
"/api/chapters/route": "app/api/chapters/route.js",
"/api/projects/[id]/route": "app/api/projects/[id]/route.js",
"/api/projects/[id]/workflow/route": "app/api/projects/[id]/workflow/route.js",
"/api/projects/route": "app/api/projects/route.js", "/api/projects/route": "app/api/projects/route.js",
"/api/user/profile/route": "app/api/user/profile/route.js", "/api/user/profile/route": "app/api/user/profile/route.js",
"/dashboard/page": "app/dashboard/page.js", "/dashboard/page": "app/dashboard/page.js",
"/login/page": "app/login/page.js", "/login/page": "app/login/page.js",
"/page": "app/page.js",
"/profile/page": "app/profile/page.js", "/profile/page": "app/profile/page.js",
"/project/[id]/ideas/page": "app/project/[id]/ideas/page.js",
"/project/[id]/page": "app/project/[id]/page.js",
"/project/[id]/settings/page": "app/project/[id]/settings/page.js",
"/project/[id]/workflow/page": "app/project/[id]/workflow/page.js",
"/project/[id]/world/page": "app/project/[id]/world/page.js",
"/signup/page": "app/signup/page.js" "/signup/page": "app/signup/page.js"
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -59,9 +59,9 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}); });
}; };
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-full bg-[#eef2ff] p-8 overflow-y-auto", className: "h-full bg-theme-bg p-8 overflow-y-auto transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden", className: "max-w-4xl mx-auto bg-theme-panel rounded-xl shadow-lg border border-theme-border overflow-hidden transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4", className: "bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",
@@ -117,7 +117,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 18, size: 18,
@@ -140,7 +140,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Titre du Roman" children: "Titre du Roman"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -154,7 +154,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
...project, ...project,
title: e.target.value title: e.target.value
}), }),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg" className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg transition-colors duration-300"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 67, lineNumber: 67,
@@ -169,7 +169,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Nom d'Auteur" children: "Nom d'Auteur"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -183,7 +183,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
...project, ...project,
author: e.target.value author: e.target.value
}), }),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none" className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 76, lineNumber: 76,
@@ -204,7 +204,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Synopsis Global" children: "Synopsis Global"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -214,7 +214,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", {
value: settings.synopsis, value: settings.synopsis,
onChange: (e)=>handleChange('synopsis', e.target.value), onChange: (e)=>handleChange('synopsis', e.target.value),
className: "w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]", className: "w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm transition-colors duration-300",
placeholder: "De quoi parle votre histoire dans les grandes lignes ?" placeholder: "De quoi parle votre histoire dans les grandes lignes ?"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -237,7 +237,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__["Target"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__["Target"], {
size: 18, size: 18,
@@ -260,7 +260,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Genre Principal" children: "Genre Principal"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -272,7 +272,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
list: "genre-suggestions", list: "genre-suggestions",
value: settings.genre, value: settings.genre,
onChange: (e)=>handleChange('genre', e.target.value), onChange: (e)=>handleChange('genre', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Fantasy" placeholder: "Ex: Fantasy"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -302,7 +302,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Sous-Genre" children: "Sous-Genre"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -313,7 +313,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.subGenre || '', value: settings.subGenre || '',
onChange: (e)=>handleChange('subGenre', e.target.value), onChange: (e)=>handleChange('subGenre', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Dark Fantasy" placeholder: "Ex: Dark Fantasy"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -329,7 +329,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Public Cible" children: "Public Cible"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -340,7 +340,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.targetAudience, value: settings.targetAudience,
onChange: (e)=>handleChange('targetAudience', e.target.value), onChange: (e)=>handleChange('targetAudience', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Jeune Adulte, Adulte..." placeholder: "Ex: Jeune Adulte, Adulte..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -362,7 +362,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Thèmes Clés" children: "Thèmes Clés"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -374,7 +374,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hash$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Hash$3e$__["Hash"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hash$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Hash$3e$__["Hash"], {
size: 14, size: 14,
className: "absolute left-3 top-3 text-slate-400" className: "absolute left-3 top-3 text-theme-muted"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 138, lineNumber: 138,
@@ -384,7 +384,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.themes, value: settings.themes,
onChange: (e)=>handleChange('themes', e.target.value), onChange: (e)=>handleChange('themes', e.target.value),
className: "w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full pl-9 p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Vengeance, Rédemption, Voyage initiatique..." placeholder: "Ex: Vengeance, Rédemption, Voyage initiatique..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -413,7 +413,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$feather$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Feather$3e$__["Feather"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$feather$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Feather$3e$__["Feather"], {
size: 18, size: 18,
@@ -436,7 +436,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1", className: "block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], {
size: 14 size: 14
@@ -455,7 +455,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("select", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("select", {
value: settings.pov, value: settings.pov,
onChange: (e)=>handleChange('pov', e.target.value), onChange: (e)=>handleChange('pov', e.target.value),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("option", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("option", {
value: "", value: "",
@@ -488,7 +488,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1", className: "block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], {
size: 14 size: 14
@@ -507,7 +507,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("select", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("select", {
value: settings.tense, value: settings.tense,
onChange: (e)=>handleChange('tense', e.target.value), onChange: (e)=>handleChange('tense', e.target.value),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("option", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("option", {
value: "", value: "",
@@ -540,7 +540,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Ton Général" children: "Ton Général"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -552,7 +552,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
list: "tone-suggestions", list: "tone-suggestions",
value: settings.tone, value: settings.tone,
onChange: (e)=>handleChange('tone', e.target.value), onChange: (e)=>handleChange('tone', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Sombre, Ironique..." placeholder: "Ex: Sombre, Ironique..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -589,7 +589,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "mt-4", className: "mt-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Guide de Style & Instructions IA (Prompt Système)" children: "Guide de Style & Instructions IA (Prompt Système)"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -597,7 +597,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs text-slate-400 mb-2", className: "text-xs text-theme-muted mb-2",
children: 'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").' children: 'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -607,7 +607,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", {
value: project.styleGuide || '', value: project.styleGuide || '',
onChange: (e)=>handleStyleGuideChange(e.target.value), onChange: (e)=>handleStyleGuideChange(e.target.value),
className: "w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700", className: "w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono transition-colors duration-300",
placeholder: "Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique." placeholder: "Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -667,10 +667,10 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
showDeleteConfirm ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { showDeleteConfirm ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-4 bg-white p-4 rounded border border-red-200", className: "flex items-center gap-4 bg-theme-panel p-4 rounded border border-red-200",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm font-bold text-slate-700", className: "text-sm font-bold text-theme-text",
children: "Êtes-vous sûr ?" children: "Êtes-vous sûr ?"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -679,7 +679,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onDeleteProject, onClick: onDeleteProject,
className: "px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold", className: "px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold opacity-90 transition-opacity",
children: "Oui, supprimer définitivement" children: "Oui, supprimer définitivement"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -688,7 +688,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setShowDeleteConfirm(false), onClick: ()=>setShowDeleteConfirm(false),
className: "px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm", className: "px-4 py-2 bg-theme-bg text-theme-text border border-theme-border rounded hover:opacity-80 text-sm transition-opacity",
children: "Annuler" children: "Annuler"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -702,7 +702,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setShowDeleteConfirm(true), onClick: ()=>setShowDeleteConfirm(true),
className: "px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold", className: "px-4 py-2 bg-theme-panel border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold transition-colors duration-300",
children: "Supprimer ce projet" children: "Supprimer ce projet"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -751,31 +751,25 @@ __turbopack_context__.s([
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx [app-ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/hooks/useProjects.ts [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-ssr] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-ssr] (ecmascript)");
'use client'; 'use client';
; ;
; ;
; ;
; ;
;
;
function SettingsPage() { function SettingsPage() {
const { project, projectId, updateProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useProjectContext"])(); const { project, updateProject, deleteProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useProjectContext"])();
const { user } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useAuthContext"])();
const { deleteProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useProjects"])(user);
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRouter"])(); const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRouter"])();
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], {
project: project, project: project,
onUpdate: (updates)=>updateProject(updates), onUpdate: (updates)=>updateProject(updates),
onDeleteProject: async ()=>{ onDeleteProject: async ()=>{
await deleteProject(projectId); await deleteProject();
router.push('/dashboard'); router.push('/dashboard');
} }
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx",
lineNumber: 16, lineNumber: 12,
columnNumber: 9 columnNumber: 9
}, this); }, this);
} }

File diff suppressed because one or more lines are too long

View File

@@ -291,7 +291,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
const hasSelection = savedRange.current && !savedRange.current.collapsed; const hasSelection = savedRange.current && !savedRange.current.collapsed;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col h-full bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden relative", className: "flex flex-col h-full bg-theme-panel rounded-lg shadow-sm border border-theme-border overflow-hidden relative transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("style", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("style", {
children: ` children: `
@@ -308,7 +308,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm", className: "flex items-center gap-1 p-2 bg-theme-bg border-b border-theme-border flex-wrap relative z-20 shadow-sm transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
icon: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bold$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Bold$3e$__["Bold"], icon: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bold$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Bold$3e$__["Bold"],
@@ -488,7 +488,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 overflow-y-auto relative bg-slate-100", className: "flex-1 overflow-y-auto relative bg-theme-bg/50 transition-colors duration-300",
ref: scrollContainerRef, ref: scrollContainerRef,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-center relative min-h-full py-8", className: "flex justify-center relative min-h-full py-8",
@@ -497,7 +497,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
ref: contentRef, ref: contentRef,
contentEditable: true, contentEditable: true,
suppressContentEditableWarning: true, suppressContentEditableWarning: true,
className: "bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content", className: "bg-theme-editor-bg shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-theme-editor-text editor-content transition-colors duration-300",
onInput: handleInput, onInput: handleInput,
onBlur: ()=>{ onBlur: ()=>{
setIsFocused(false); setIsFocused(false);

File diff suppressed because one or more lines are too long

View File

@@ -498,12 +498,12 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
; ;
const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile })=>{ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile })=>{
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "min-h-screen bg-[#eef2ff] p-8 font-sans", className: "min-h-screen bg-theme-bg p-8 font-sans transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "max-w-6xl mx-auto space-y-8", className: "max-w-6xl mx-auto space-y-8",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6", className: "flex flex-col md:flex-row justify-between items-center bg-theme-panel p-8 rounded-[2rem] shadow-sm border border-theme-border gap-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-6", className: "flex items-center gap-6",
@@ -536,7 +536,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h2", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h2", {
className: "text-3xl font-black text-slate-900", className: "text-3xl font-black text-theme-text",
children: [ children: [
"Bonjour, ", "Bonjour, ",
user.name, user.name,
@@ -559,7 +559,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-slate-400 text-xs font-medium", className: "text-theme-muted text-xs font-medium",
children: "Membre depuis le 24 janv." children: "Membre depuis le 24 janv."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -589,7 +589,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onProfile, onClick: onProfile,
className: "bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200", className: "bg-theme-bg text-theme-text px-5 py-2.5 rounded-xl text-sm font-bold hover:opacity-80 transition-all flex items-center gap-2 border border-theme-border",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__User$3e$__["User"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__User$3e$__["User"], {
size: 18 size: 18
@@ -607,13 +607,13 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onLogout, onClick: onLogout,
className: "p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors", className: "p-3 text-theme-muted hover:text-red-500 rounded-full hover:bg-red-500/10 transition-colors",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__["LogOut"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__["LogOut"], {
size: 20 size: 20
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
lineNumber: 42, lineNumber: 42,
columnNumber: 149 columnNumber: 155
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -636,7 +636,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
className: "grid grid-cols-1 md:grid-cols-3 gap-6", className: "grid grid-cols-1 md:grid-cols-3 gap-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-orange-100 p-3 rounded-2xl text-orange-600", className: "bg-orange-100 p-3 rounded-2xl text-orange-600",
@@ -655,7 +655,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Série actuelle" children: "Série actuelle"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -663,7 +663,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: [ children: [
user.stats.writingStreak, user.stats.writingStreak,
" Jours" " Jours"
@@ -686,7 +686,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-blue-100 p-3 rounded-2xl text-blue-600", className: "bg-blue-100 p-3 rounded-2xl text-blue-600",
@@ -705,7 +705,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Mots écrits" children: "Mots écrits"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -713,7 +713,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: user.stats.totalWordsWritten.toLocaleString() children: user.stats.totalWordsWritten.toLocaleString()
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -733,7 +733,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-indigo-100 p-3 rounded-2xl text-indigo-600", className: "bg-indigo-100 p-3 rounded-2xl text-indigo-600",
@@ -752,7 +752,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Objectif du jour" children: "Objectif du jour"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -760,7 +760,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: [ children: [
user.preferences.dailyWordGoal, user.preferences.dailyWordGoal,
" Mots" " Mots"
@@ -798,7 +798,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
className: "flex justify-between items-center mb-6", className: "flex justify-between items-center mb-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: "Mes Romans" children: "Mes Romans"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -834,12 +834,12 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
children: [ children: [
projects.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { projects.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
onClick: ()=>onSelect(p.id), onClick: ()=>onSelect(p.id),
className: "bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64", className: "bg-theme-panel p-8 rounded-[2.5rem] border border-theme-border shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors", className: "bg-blue-500/10 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-500 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 24 size: 24
}, void 0, false, { }, void 0, false, {
@@ -853,7 +853,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", {
className: "font-black text-slate-900 text-xl truncate mb-1", className: "font-black text-theme-text text-xl truncate mb-1",
children: p.title children: p.title
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -861,7 +861,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-slate-400 text-sm", className: "text-theme-muted text-sm",
children: [ children: [
"Dernière modification : ", "Dernière modification : ",
new Date(p.lastModified).toLocaleDateString() new Date(p.lastModified).toLocaleDateString()
@@ -878,7 +878,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 37 columnNumber: 37
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4", className: "flex justify-between items-center text-[10px] text-theme-muted font-black uppercase tracking-widest border-t border-theme-border pt-4 mt-auto",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
children: [ children: [
@@ -911,7 +911,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0))), }, ("TURBOPACK compile-time value", void 0))),
projects.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { projects.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300", className: "col-span-2 py-24 bg-theme-panel rounded-[3rem] border-2 border-dashed border-theme-border flex flex-col items-center justify-center text-theme-muted",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 64, size: 64,

File diff suppressed because one or more lines are too long

View File

@@ -127,7 +127,7 @@ function RootLayout({ children }) {
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("html", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("html", {
lang: "fr", lang: "fr",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("body", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("body", {
className: `${__TURBOPACK__imported__module__$5b$next$5d2f$internal$2f$font$2f$google$2f$inter_b2991b2$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"].variable} ${__TURBOPACK__imported__module__$5b$next$5d2f$internal$2f$font$2f$google$2f$merriweather_6ee6941f$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"].variable} font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased`, className: `${__TURBOPACK__imported__module__$5b$next$5d2f$internal$2f$font$2f$google$2f$inter_b2991b2$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"].variable} ${__TURBOPACK__imported__module__$5b$next$5d2f$internal$2f$font$2f$google$2f$merriweather_6ee6941f$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"].variable} font-sans h-screen overflow-hidden antialiased bg-theme-bg text-theme-text transition-colors duration-300`,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["AuthProvider"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["AuthProvider"], {
children: children children: children
}, void 0, false, { }, void 0, false, {

View File

@@ -9,6 +9,6 @@
{"offset": {"line": 60, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AuthProvider = registerClientReference(\n function() { throw new Error(\"Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx <module evaluation>\",\n \"AuthProvider\",\n);\nexport const useAuthContext = registerClientReference(\n function() { throw new Error(\"Attempted to call useAuthContext() from the server but useAuthContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx <module evaluation>\",\n \"useAuthContext\",\n);\n"],"names":[],"mappings":";;;;;;AAAA,uEAAuE;AACvE;;AACO,MAAM,eAAe,IAAA,oTAAuB,EAC/C;IAAa,MAAM,IAAI,MAAM;AAAwO,GACrQ,8FACA;AAEG,MAAM,iBAAiB,IAAA,oTAAuB,EACjD;IAAa,MAAM,IAAI,MAAM;AAA4O,GACzQ,8FACA","ignoreList":[0]}}, {"offset": {"line": 60, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AuthProvider = registerClientReference(\n function() { throw new Error(\"Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx <module evaluation>\",\n \"AuthProvider\",\n);\nexport const useAuthContext = registerClientReference(\n function() { throw new Error(\"Attempted to call useAuthContext() from the server but useAuthContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx <module evaluation>\",\n \"useAuthContext\",\n);\n"],"names":[],"mappings":";;;;;;AAAA,uEAAuE;AACvE;;AACO,MAAM,eAAe,IAAA,oTAAuB,EAC/C;IAAa,MAAM,IAAI,MAAM;AAAwO,GACrQ,8FACA;AAEG,MAAM,iBAAiB,IAAA,oTAAuB,EACjD;IAAa,MAAM,IAAI,MAAM;AAA4O,GACzQ,8FACA","ignoreList":[0]}},
{"offset": {"line": 79, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AuthProvider = registerClientReference(\n function() { throw new Error(\"Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx\",\n \"AuthProvider\",\n);\nexport const useAuthContext = registerClientReference(\n function() { throw new Error(\"Attempted to call useAuthContext() from the server but useAuthContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx\",\n \"useAuthContext\",\n);\n"],"names":[],"mappings":";;;;;;AAAA,uEAAuE;AACvE;;AACO,MAAM,eAAe,IAAA,oTAAuB,EAC/C;IAAa,MAAM,IAAI,MAAM;AAAwO,GACrQ,0EACA;AAEG,MAAM,iBAAiB,IAAA,oTAAuB,EACjD;IAAa,MAAM,IAAI,MAAM;AAA4O,GACzQ,0EACA","ignoreList":[0]}}, {"offset": {"line": 79, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/providers/AuthProvider.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const AuthProvider = registerClientReference(\n function() { throw new Error(\"Attempted to call AuthProvider() from the server but AuthProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx\",\n \"AuthProvider\",\n);\nexport const useAuthContext = registerClientReference(\n function() { throw new Error(\"Attempted to call useAuthContext() from the server but useAuthContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx\",\n \"useAuthContext\",\n);\n"],"names":[],"mappings":";;;;;;AAAA,uEAAuE;AACvE;;AACO,MAAM,eAAe,IAAA,oTAAuB,EAC/C;IAAa,MAAM,IAAI,MAAM;AAAwO,GACrQ,0EACA;AAEG,MAAM,iBAAiB,IAAA,oTAAuB,EACjD;IAAa,MAAM,IAAI,MAAM;AAA4O,GACzQ,0EACA","ignoreList":[0]}},
{"offset": {"line": 98, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}}, {"offset": {"line": 98, "column": 0}, "map": {"version":3,"sources":[],"names":[],"mappings":""}},
{"offset": {"line": 106, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/layout.tsx"],"sourcesContent":["import type { Metadata } from \"next\";\r\nimport { Inter, Merriweather } from \"next/font/google\";\r\nimport { AuthProvider } from \"@/providers/AuthProvider\";\r\nimport \"./globals.css\";\r\n\r\nconst inter = Inter({\r\n subsets: [\"latin\"],\r\n variable: \"--font-sans\",\r\n});\r\n\r\nconst merriweather = Merriweather({\r\n subsets: [\"latin\"],\r\n weight: [\"300\", \"400\", \"700\", \"900\"],\r\n variable: \"--font-serif\",\r\n});\r\n\r\nexport const metadata: Metadata = {\r\n title: \"PlumeIA - Éditeur Intelligent\",\r\n description: \"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman.\",\r\n};\r\n\r\nexport default function RootLayout({\r\n children,\r\n}: {\r\n children: React.ReactNode;\r\n}) {\r\n return (\r\n <html lang=\"fr\">\r\n <body className={`${inter.variable} ${merriweather.variable} font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased`}>\r\n <AuthProvider>\r\n {children}\r\n </AuthProvider>\r\n </body>\r\n </html>\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;AAEA;;;;;;AAcO,MAAM,WAAqB;IAC9B,OAAO;IACP,aAAa;AACjB;AAEe,SAAS,WAAW,EAC/B,QAAQ,EAGX;IACG,qBACI,0RAAC;QAAK,MAAK;kBACP,cAAA,0RAAC;YAAK,WAAW,GAAG,mJAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,2JAAY,CAAC,QAAQ,CAAC,0EAA0E,CAAC;sBACnI,cAAA,0RAAC,6LAAY;0BACR;;;;;;;;;;;;;;;;AAKrB"}}, {"offset": {"line": 106, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/layout.tsx"],"sourcesContent":["import type { Metadata } from \"next\";\r\nimport { Inter, Merriweather } from \"next/font/google\";\r\nimport { AuthProvider } from \"@/providers/AuthProvider\";\r\nimport \"./globals.css\";\r\n\r\nconst inter = Inter({\r\n subsets: [\"latin\"],\r\n variable: \"--font-sans\",\r\n});\r\n\r\nconst merriweather = Merriweather({\r\n subsets: [\"latin\"],\r\n weight: [\"300\", \"400\", \"700\", \"900\"],\r\n variable: \"--font-serif\",\r\n});\r\n\r\nexport const metadata: Metadata = {\r\n title: \"PlumeIA - Éditeur Intelligent\",\r\n description: \"Votre assistant éditorial intelligent propulsé par l'IA pour écrire votre prochain roman.\",\r\n};\r\n\r\nexport default function RootLayout({\r\n children,\r\n}: {\r\n children: React.ReactNode;\r\n}) {\r\n return (\r\n <html lang=\"fr\">\r\n <body className={`${inter.variable} ${merriweather.variable} font-sans h-screen overflow-hidden antialiased bg-theme-bg text-theme-text transition-colors duration-300`}>\r\n <AuthProvider>\r\n {children}\r\n </AuthProvider>\r\n </body>\r\n </html>\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;AAEA;;;;;;AAcO,MAAM,WAAqB;IAC9B,OAAO;IACP,aAAa;AACjB;AAEe,SAAS,WAAW,EAC/B,QAAQ,EAGX;IACG,qBACI,0RAAC;QAAK,MAAK;kBACP,cAAA,0RAAC;YAAK,WAAW,GAAG,mJAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,2JAAY,CAAC,QAAQ,CAAC,0GAA0G,CAAC;sBACnK,cAAA,0RAAC,6LAAY;0BACR;;;;;;;;;;;;;;;;AAKrB"}},
{"offset": {"line": 152, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.ReactJsxDevRuntime\n"],"names":["module","exports","require","vendored","ReactJsxDevRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,kBAAkB","ignoreList":[0]}}] {"offset": {"line": 152, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/src/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.ts"],"sourcesContent":["module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-rsc']!.ReactJsxDevRuntime\n"],"names":["module","exports","require","vendored","ReactJsxDevRuntime"],"mappings":"AAAAA,OAAOC,OAAO,GACZC,QAAQ,0JACRC,QAAQ,CAAC,YAAY,CAAEC,kBAAkB","ignoreList":[0]}}]
} }

View File

@@ -605,7 +605,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}; };
const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false; const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96", className: "flex flex-col h-full bg-theme-panel border-l border-theme-border shadow-xl w-80 lg:w-96 transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md", className: "p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",
@@ -619,7 +619,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 39, lineNumber: 39,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "font-bold tracking-tight", className: "font-bold tracking-tight",
@@ -627,7 +627,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 40, lineNumber: 40,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -644,7 +644,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 44, lineNumber: 44,
columnNumber: 17 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" ", " ",
usage.aiActionsCurrent, usage.aiActionsCurrent,
@@ -654,7 +654,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 43, lineNumber: 43,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -701,10 +701,10 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50", className: "flex-1 overflow-y-auto p-4 space-y-4 bg-theme-bg transition-colors duration-300",
children: [ children: [
chatHistory.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { chatHistory.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-center text-slate-400 mt-10", className: "text-center text-theme-muted mt-10",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bot$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Bot$3e$__["Bot"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bot$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Bot$3e$__["Bot"], {
size: 48, size: 48,
@@ -728,7 +728,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 62, lineNumber: 62,
columnNumber: 17 columnNumber: 15
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -739,7 +739,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
chatHistory.map((msg)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { chatHistory.map((msg)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`, className: `flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-white text-slate-700 border border-slate-100 rounded-bl-none'}`, className: `max-w-[85%] rounded-2xl p-4 text-sm shadow-sm transition-colors duration-300 ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-theme-panel text-theme-text border border-theme-border rounded-bl-none'}`,
children: [ children: [
msg.role === 'model' && msg.responseType === 'reflection' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { msg.role === 'model' && msg.responseType === 'reflection' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide", className: "flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",
@@ -749,14 +749,14 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 73, lineNumber: 73,
columnNumber: 131 columnNumber: 129
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Réflexion" " Réflexion"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 73, lineNumber: 73,
columnNumber: 19 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "whitespace-pre-wrap leading-relaxed", className: "whitespace-pre-wrap leading-relaxed",
@@ -780,7 +780,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
isGenerating && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { isGenerating && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-start", className: "flex justify-start",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500", className: "bg-theme-panel p-3 rounded-2xl rounded-bl-none shadow-sm border border-theme-border flex items-center gap-2 text-xs text-theme-muted transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__["RefreshCw"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__["RefreshCw"], {
size: 14, size: 14,
@@ -816,7 +816,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "p-4 bg-white border-t border-slate-200", className: "p-4 bg-theme-panel border-t border-theme-border transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("form", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("form", {
onSubmit: handleSubmit, onSubmit: handleSubmit,
className: "relative", className: "relative",
@@ -826,7 +826,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
value: input, value: input,
onChange: (e)=>setInput(e.target.value), onChange: (e)=>setInput(e.target.value),
placeholder: isLimitReached ? "Limite atteinte..." : "Votre message...", placeholder: isLimitReached ? "Limite atteinte..." : "Votre message...",
className: "w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50", className: "w-full pl-4 pr-12 py-3 bg-theme-bg text-theme-text border border-theme-border rounded-2xl text-sm focus:outline-none focus:border-indigo-500 transition-all disabled:opacity-50",
disabled: isGenerating || isLimitReached disabled: isGenerating || isLimitReached
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
@@ -906,7 +906,7 @@ const EditorShell = (props)=>{
const [isAiPanelOpen, setIsAiPanelOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(true); const [isAiPanelOpen, setIsAiPanelOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(true);
const currentChapter = project.chapters.find((c)=>c.id === currentChapterId); const currentChapter = project.chapters.find((c)=>c.id === currentChapterId);
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `flex h-screen overflow-hidden no-print ${user.preferences.theme === 'dark' ? 'bg-slate-900 text-white' : user.preferences.theme === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-[#eef2ff]'}`, className: "flex h-screen overflow-hidden no-print bg-theme-bg text-theme-text transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("aside", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("aside", {
className: `${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`, className: `${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,
@@ -1246,20 +1246,20 @@ const EditorShell = (props)=>{
className: "flex-1 flex flex-col h-full overflow-hidden", className: "flex-1 flex flex-col h-full overflow-hidden",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("header", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("header", {
className: "h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800", className: "h-14 bg-theme-panel border-b border-theme-border flex items-center justify-between px-4 shadow-sm z-10 text-theme-text transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-4", className: "flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setIsSidebarOpen(!isSidebarOpen), onClick: ()=>setIsSidebarOpen(!isSidebarOpen),
className: "text-slate-500 hover:text-slate-800", className: "text-theme-muted hover:text-theme-text",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$menu$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Menu$3e$__["Menu"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$menu$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Menu$3e$__["Menu"], {
size: 20 size: 20
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx",
lineNumber: 100, lineNumber: 100,
columnNumber: 130 columnNumber: 133
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx",
@@ -1378,7 +1378,7 @@ const EditorShell = (props)=>{
columnNumber: 13 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`, className: `${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-theme-border relative bg-theme-panel`,
children: isAiPanelOpen && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$AIPanel$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], { children: isAiPanelOpen && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$AIPanel$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], {
chatHistory: props.chatHistory, chatHistory: props.chatHistory,
onSendMessage: props.onSendMessage, onSendMessage: props.onSendMessage,

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/profile/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/signup/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}" self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/profile/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/signup/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"

View File

@@ -8,11 +8,27 @@
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],
"[project]/Documents/00 - projet/plumeia/src/app/page": [ "[project]/Documents/00 - projet/plumeia/src/app/profile/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],
"[project]/Documents/00 - projet/plumeia/src/app/profile/page": [ "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],

View File

@@ -520,12 +520,12 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
; ;
const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile })=>{ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile })=>{
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "min-h-screen bg-[#eef2ff] p-8 font-sans", className: "min-h-screen bg-theme-bg p-8 font-sans transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "max-w-6xl mx-auto space-y-8", className: "max-w-6xl mx-auto space-y-8",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6", className: "flex flex-col md:flex-row justify-between items-center bg-theme-panel p-8 rounded-[2rem] shadow-sm border border-theme-border gap-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-6", className: "flex items-center gap-6",
@@ -558,7 +558,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h2", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h2", {
className: "text-3xl font-black text-slate-900", className: "text-3xl font-black text-theme-text",
children: [ children: [
"Bonjour, ", "Bonjour, ",
user.name, user.name,
@@ -581,7 +581,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-slate-400 text-xs font-medium", className: "text-theme-muted text-xs font-medium",
children: "Membre depuis le 24 janv." children: "Membre depuis le 24 janv."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -611,7 +611,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onProfile, onClick: onProfile,
className: "bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200", className: "bg-theme-bg text-theme-text px-5 py-2.5 rounded-xl text-sm font-bold hover:opacity-80 transition-all flex items-center gap-2 border border-theme-border",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__User$3e$__["User"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__User$3e$__["User"], {
size: 18 size: 18
@@ -629,13 +629,13 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onLogout, onClick: onLogout,
className: "p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors", className: "p-3 text-theme-muted hover:text-red-500 rounded-full hover:bg-red-500/10 transition-colors",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__["LogOut"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__["LogOut"], {
size: 20 size: 20
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
lineNumber: 42, lineNumber: 42,
columnNumber: 149 columnNumber: 155
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -658,7 +658,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
className: "grid grid-cols-1 md:grid-cols-3 gap-6", className: "grid grid-cols-1 md:grid-cols-3 gap-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-orange-100 p-3 rounded-2xl text-orange-600", className: "bg-orange-100 p-3 rounded-2xl text-orange-600",
@@ -677,7 +677,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Série actuelle" children: "Série actuelle"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -685,7 +685,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: [ children: [
user.stats.writingStreak, user.stats.writingStreak,
" Jours" " Jours"
@@ -708,7 +708,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-blue-100 p-3 rounded-2xl text-blue-600", className: "bg-blue-100 p-3 rounded-2xl text-blue-600",
@@ -727,7 +727,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Mots écrits" children: "Mots écrits"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -735,7 +735,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: user.stats.totalWordsWritten.toLocaleString() children: user.stats.totalWordsWritten.toLocaleString()
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -755,7 +755,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4", className: "bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-indigo-100 p-3 rounded-2xl text-indigo-600", className: "bg-indigo-100 p-3 rounded-2xl text-indigo-600",
@@ -774,7 +774,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs font-bold text-slate-400 uppercase tracking-wider", className: "text-xs font-bold text-theme-muted uppercase tracking-wider",
children: "Objectif du jour" children: "Objectif du jour"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -782,7 +782,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: [ children: [
user.preferences.dailyWordGoal, user.preferences.dailyWordGoal,
" Mots" " Mots"
@@ -820,7 +820,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
className: "flex justify-between items-center mb-6", className: "flex justify-between items-center mb-6",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-2xl font-black text-slate-900", className: "text-2xl font-black text-theme-text",
children: "Mes Romans" children: "Mes Romans"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -856,12 +856,12 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
children: [ children: [
projects.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { projects.map((p)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
onClick: ()=>onSelect(p.id), onClick: ()=>onSelect(p.id),
className: "bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64", className: "bg-theme-panel p-8 rounded-[2.5rem] border border-theme-border shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors", className: "bg-blue-500/10 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-500 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 24 size: 24
}, void 0, false, { }, void 0, false, {
@@ -875,7 +875,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", {
className: "font-black text-slate-900 text-xl truncate mb-1", className: "font-black text-theme-text text-xl truncate mb-1",
children: p.title children: p.title
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
@@ -883,7 +883,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-slate-400 text-sm", className: "text-theme-muted text-sm",
children: [ children: [
"Dernière modification : ", "Dernière modification : ",
new Date(p.lastModified).toLocaleDateString() new Date(p.lastModified).toLocaleDateString()
@@ -900,7 +900,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 37 columnNumber: 37
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4", className: "flex justify-between items-center text-[10px] text-theme-muted font-black uppercase tracking-widest border-t border-theme-border pt-4 mt-auto",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
children: [ children: [
@@ -933,7 +933,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0))), }, ("TURBOPACK compile-time value", void 0))),
projects.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { projects.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300", className: "col-span-2 py-24 bg-theme-panel rounded-[3rem] border-2 border-dashed border-theme-border flex flex-col items-center justify-center text-theme-muted",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 64, size: 64,

File diff suppressed because one or more lines are too long

View File

@@ -63,9 +63,9 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}); });
}; };
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-full bg-[#eef2ff] p-8 overflow-y-auto", className: "h-full bg-theme-bg p-8 overflow-y-auto transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden", className: "max-w-4xl mx-auto bg-theme-panel rounded-xl shadow-lg border border-theme-border overflow-hidden transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4", className: "bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4",
@@ -121,7 +121,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Book$3e$__["Book"], {
size: 18, size: 18,
@@ -144,7 +144,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Titre du Roman" children: "Titre du Roman"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -158,7 +158,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
...project, ...project,
title: e.target.value title: e.target.value
}), }),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg" className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg transition-colors duration-300"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 67, lineNumber: 67,
@@ -173,7 +173,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Nom d'Auteur" children: "Nom d'Auteur"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -187,7 +187,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
...project, ...project,
author: e.target.value author: e.target.value
}), }),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none" className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 76, lineNumber: 76,
@@ -208,7 +208,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Synopsis Global" children: "Synopsis Global"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -218,7 +218,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", {
value: settings.synopsis, value: settings.synopsis,
onChange: (e)=>handleChange('synopsis', e.target.value), onChange: (e)=>handleChange('synopsis', e.target.value),
className: "w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]", className: "w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm transition-colors duration-300",
placeholder: "De quoi parle votre histoire dans les grandes lignes ?" placeholder: "De quoi parle votre histoire dans les grandes lignes ?"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -241,7 +241,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__["Target"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__["Target"], {
size: 18, size: 18,
@@ -264,7 +264,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Genre Principal" children: "Genre Principal"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -276,7 +276,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
list: "genre-suggestions", list: "genre-suggestions",
value: settings.genre, value: settings.genre,
onChange: (e)=>handleChange('genre', e.target.value), onChange: (e)=>handleChange('genre', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Fantasy" placeholder: "Ex: Fantasy"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -306,7 +306,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Sous-Genre" children: "Sous-Genre"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -317,7 +317,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.subGenre || '', value: settings.subGenre || '',
onChange: (e)=>handleChange('subGenre', e.target.value), onChange: (e)=>handleChange('subGenre', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Dark Fantasy" placeholder: "Ex: Dark Fantasy"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -333,7 +333,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Public Cible" children: "Public Cible"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -344,7 +344,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.targetAudience, value: settings.targetAudience,
onChange: (e)=>handleChange('targetAudience', e.target.value), onChange: (e)=>handleChange('targetAudience', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Jeune Adulte, Adulte..." placeholder: "Ex: Jeune Adulte, Adulte..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -366,7 +366,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Thèmes Clés" children: "Thèmes Clés"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -378,7 +378,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hash$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Hash$3e$__["Hash"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hash$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Hash$3e$__["Hash"], {
size: 14, size: 14,
className: "absolute left-3 top-3 text-slate-400" className: "absolute left-3 top-3 text-theme-muted"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
lineNumber: 138, lineNumber: 138,
@@ -388,7 +388,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
type: "text", type: "text",
value: settings.themes, value: settings.themes,
onChange: (e)=>handleChange('themes', e.target.value), onChange: (e)=>handleChange('themes', e.target.value),
className: "w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full pl-9 p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Vengeance, Rédemption, Voyage initiatique..." placeholder: "Ex: Vengeance, Rédemption, Voyage initiatique..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -417,7 +417,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "space-y-4", className: "space-y-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2", className: "text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$feather$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Feather$3e$__["Feather"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$feather$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Feather$3e$__["Feather"], {
size: 18, size: 18,
@@ -440,7 +440,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1", className: "block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], {
size: 14 size: 14
@@ -459,7 +459,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("select", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("select", {
value: settings.pov, value: settings.pov,
onChange: (e)=>handleChange('pov', e.target.value), onChange: (e)=>handleChange('pov', e.target.value),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("option", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("option", {
value: "", value: "",
@@ -492,7 +492,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1", className: "block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], {
size: 14 size: 14
@@ -511,7 +511,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("select", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("select", {
value: settings.tense, value: settings.tense,
onChange: (e)=>handleChange('tense', e.target.value), onChange: (e)=>handleChange('tense', e.target.value),
className: "w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("option", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("option", {
value: "", value: "",
@@ -544,7 +544,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Ton Général" children: "Ton Général"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -556,7 +556,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
list: "tone-suggestions", list: "tone-suggestions",
value: settings.tone, value: settings.tone,
onChange: (e)=>handleChange('tone', e.target.value), onChange: (e)=>handleChange('tone', e.target.value),
className: "w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]", className: "w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300",
placeholder: "Ex: Sombre, Ironique..." placeholder: "Ex: Sombre, Ironique..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -593,7 +593,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
className: "mt-4", className: "mt-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("label", {
className: "block text-sm font-semibold text-slate-600 mb-1", className: "block text-sm font-semibold text-theme-muted mb-1",
children: "Guide de Style & Instructions IA (Prompt Système)" children: "Guide de Style & Instructions IA (Prompt Système)"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -601,7 +601,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-xs text-slate-400 mb-2", className: "text-xs text-theme-muted mb-2",
children: 'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").' children: 'Ces instructions seront envoyées à l\'IA à chaque génération. Décrivez ici le style d\'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").'
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -611,7 +611,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", {
value: project.styleGuide || '', value: project.styleGuide || '',
onChange: (e)=>handleStyleGuideChange(e.target.value), onChange: (e)=>handleStyleGuideChange(e.target.value),
className: "w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700", className: "w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono transition-colors duration-300",
placeholder: "Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique." placeholder: "Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -671,10 +671,10 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
showDeleteConfirm ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { showDeleteConfirm ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-4 bg-white p-4 rounded border border-red-200", className: "flex items-center gap-4 bg-theme-panel p-4 rounded border border-red-200",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm font-bold text-slate-700", className: "text-sm font-bold text-theme-text",
children: "Êtes-vous sûr ?" children: "Êtes-vous sûr ?"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -683,7 +683,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: onDeleteProject, onClick: onDeleteProject,
className: "px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold", className: "px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold opacity-90 transition-opacity",
children: "Oui, supprimer définitivement" children: "Oui, supprimer définitivement"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -692,7 +692,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setShowDeleteConfirm(false), onClick: ()=>setShowDeleteConfirm(false),
className: "px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm", className: "px-4 py-2 bg-theme-bg text-theme-text border border-theme-border rounded hover:opacity-80 text-sm transition-opacity",
children: "Annuler" children: "Annuler"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -706,7 +706,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { }, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setShowDeleteConfirm(true), onClick: ()=>setShowDeleteConfirm(true),
className: "px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold", className: "px-4 py-2 bg-theme-panel border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold transition-colors duration-300",
children: "Supprimer ce projet" children: "Supprimer ce projet"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx",
@@ -762,8 +762,6 @@ __turbopack_context__.s([
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/hooks/useProjects.ts [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-client] (ecmascript)");
; ;
var _s = __turbopack_context__.k.signature(); var _s = __turbopack_context__.k.signature();
@@ -771,32 +769,26 @@ var _s = __turbopack_context__.k.signature();
; ;
; ;
; ;
;
;
function SettingsPage() { function SettingsPage() {
_s(); _s();
const { project, projectId, updateProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"])(); const { project, updateProject, deleteProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"])();
const { user } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"])();
const { deleteProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjects"])(user);
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])(); const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])();
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$BookSettings$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
project: project, project: project,
onUpdate: (updates)=>updateProject(updates), onUpdate: (updates)=>updateProject(updates),
onDeleteProject: async ()=>{ onDeleteProject: async ()=>{
await deleteProject(projectId); await deleteProject();
router.push('/dashboard'); router.push('/dashboard');
} }
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx",
lineNumber: 16, lineNumber: 12,
columnNumber: 9 columnNumber: 9
}, this); }, this);
} }
_s(SettingsPage, "py5duf4J+5ixrZd5CDtP46crjTA=", false, function() { _s(SettingsPage, "iosVZdilTb+M2ZD6lSwYyf9JEmQ=", false, function() {
return [ return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"], __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useProjects$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjects"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"] __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"]
]; ];
}); });

File diff suppressed because one or more lines are too long

View File

@@ -646,7 +646,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}; };
const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false; const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96", className: "flex flex-col h-full bg-theme-panel border-l border-theme-border shadow-xl w-80 lg:w-96 transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md", className: "p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md",
@@ -660,7 +660,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 39, lineNumber: 39,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "font-bold tracking-tight", className: "font-bold tracking-tight",
@@ -668,7 +668,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 40, lineNumber: 40,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -685,7 +685,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 44, lineNumber: 44,
columnNumber: 17 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" ", " ",
usage.aiActionsCurrent, usage.aiActionsCurrent,
@@ -695,7 +695,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 43, lineNumber: 43,
columnNumber: 13 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -742,10 +742,10 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50", className: "flex-1 overflow-y-auto p-4 space-y-4 bg-theme-bg transition-colors duration-300",
children: [ children: [
chatHistory.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { chatHistory.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-center text-slate-400 mt-10", className: "text-center text-theme-muted mt-10",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bot$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Bot$3e$__["Bot"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bot$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Bot$3e$__["Bot"], {
size: 48, size: 48,
@@ -769,7 +769,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 62, lineNumber: 62,
columnNumber: 17 columnNumber: 15
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
@@ -780,7 +780,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
chatHistory.map((msg)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { chatHistory.map((msg)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`, className: `flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-white text-slate-700 border border-slate-100 rounded-bl-none'}`, className: `max-w-[85%] rounded-2xl p-4 text-sm shadow-sm transition-colors duration-300 ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-theme-panel text-theme-text border border-theme-border rounded-bl-none'}`,
children: [ children: [
msg.role === 'model' && msg.responseType === 'reflection' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { msg.role === 'model' && msg.responseType === 'reflection' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide", className: "flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide",
@@ -790,14 +790,14 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 73, lineNumber: 73,
columnNumber: 131 columnNumber: 129
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Réflexion" " Réflexion"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
lineNumber: 73, lineNumber: 73,
columnNumber: 19 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "whitespace-pre-wrap leading-relaxed", className: "whitespace-pre-wrap leading-relaxed",
@@ -821,7 +821,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
isGenerating && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { isGenerating && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-start", className: "flex justify-start",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500", className: "bg-theme-panel p-3 rounded-2xl rounded-bl-none shadow-sm border border-theme-border flex items-center gap-2 text-xs text-theme-muted transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__["RefreshCw"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__["RefreshCw"], {
size: 14, size: 14,
@@ -857,7 +857,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "p-4 bg-white border-t border-slate-200", className: "p-4 bg-theme-panel border-t border-theme-border transition-colors duration-300",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("form", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("form", {
onSubmit: handleSubmit, onSubmit: handleSubmit,
className: "relative", className: "relative",
@@ -867,7 +867,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen
value: input, value: input,
onChange: (e)=>setInput(e.target.value), onChange: (e)=>setInput(e.target.value),
placeholder: isLimitReached ? "Limite atteinte..." : "Votre message...", placeholder: isLimitReached ? "Limite atteinte..." : "Votre message...",
className: "w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50", className: "w-full pl-4 pr-12 py-3 bg-theme-bg text-theme-text border border-theme-border rounded-2xl text-sm focus:outline-none focus:border-indigo-500 transition-all disabled:opacity-50",
disabled: isGenerating || isLimitReached disabled: isGenerating || isLimitReached
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx",
@@ -956,7 +956,7 @@ const EditorShell = (props)=>{
const [isAiPanelOpen, setIsAiPanelOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(true); const [isAiPanelOpen, setIsAiPanelOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(true);
const currentChapter = project.chapters.find((c)=>c.id === currentChapterId); const currentChapter = project.chapters.find((c)=>c.id === currentChapterId);
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `flex h-screen overflow-hidden no-print ${user.preferences.theme === 'dark' ? 'bg-slate-900 text-white' : user.preferences.theme === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-[#eef2ff]'}`, className: "flex h-screen overflow-hidden no-print bg-theme-bg text-theme-text transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("aside", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("aside", {
className: `${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`, className: `${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`,
@@ -1296,20 +1296,20 @@ const EditorShell = (props)=>{
className: "flex-1 flex flex-col h-full overflow-hidden", className: "flex-1 flex flex-col h-full overflow-hidden",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("header", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("header", {
className: "h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800", className: "h-14 bg-theme-panel border-b border-theme-border flex items-center justify-between px-4 shadow-sm z-10 text-theme-text transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-4", className: "flex items-center gap-4",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
onClick: ()=>setIsSidebarOpen(!isSidebarOpen), onClick: ()=>setIsSidebarOpen(!isSidebarOpen),
className: "text-slate-500 hover:text-slate-800", className: "text-theme-muted hover:text-theme-text",
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$menu$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Menu$3e$__["Menu"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$menu$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Menu$3e$__["Menu"], {
size: 20 size: 20
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx",
lineNumber: 100, lineNumber: 100,
columnNumber: 130 columnNumber: 133
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx",
@@ -1428,7 +1428,7 @@ const EditorShell = (props)=>{
columnNumber: 13 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: `${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`, className: `${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-theme-border relative bg-theme-panel`,
children: isAiPanelOpen && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$AIPanel$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { children: isAiPanelOpen && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$AIPanel$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
chatHistory: props.chatHistory, chatHistory: props.chatHistory,
onSendMessage: props.onSendMessage, onSendMessage: props.onSendMessage,

File diff suppressed because one or more lines are too long

View File

@@ -201,6 +201,13 @@
--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
--default-font-family: var(--font-sans); --default-font-family: var(--font-sans);
--default-mono-font-family: var(--font-mono); --default-mono-font-family: var(--font-mono);
--color-theme-bg: var(--theme-bg);
--color-theme-panel: var(--theme-panel);
--color-theme-text: var(--theme-text);
--color-theme-muted: var(--theme-muted);
--color-theme-border: var(--theme-border);
--color-theme-editor-bg: var(--theme-editor-bg);
--color-theme-editor-text: var(--theme-editor-text);
} }
@supports (color: lab(0% 0 0)) { @supports (color: lab(0% 0 0)) {
@@ -754,6 +761,10 @@
} }
} }
.-m-8 {
margin: calc(var(--spacing) * -8);
}
.m-1 { .m-1 {
margin: calc(var(--spacing) * 1); margin: calc(var(--spacing) * 1);
} }
@@ -818,6 +829,10 @@
margin-top: calc(var(--spacing) * 20); margin-top: calc(var(--spacing) * 20);
} }
.mt-auto {
margin-top: auto;
}
.mr-4 { .mr-4 {
margin-right: calc(var(--spacing) * 4); margin-right: calc(var(--spacing) * 4);
} }
@@ -1545,6 +1560,18 @@
border-style: dashed; border-style: dashed;
} }
.border-\[\#dfcdae\] {
border-color: #dfcdae;
}
.border-\[\#eaddc4\] {
border-color: #eaddc4;
}
.border-\[\#f4ecd8\] {
border-color: #f4ecd8;
}
.border-amber-100 { .border-amber-100 {
border-color: var(--color-amber-100); border-color: var(--color-amber-100);
} }
@@ -1649,6 +1676,10 @@
border-color: var(--color-slate-800); border-color: var(--color-slate-800);
} }
.border-theme-border {
border-color: var(--color-theme-border);
}
.border-transparent { .border-transparent {
border-color: #0000; border-color: #0000;
} }
@@ -1661,6 +1692,14 @@
border-color: var(--color-yellow-100); border-color: var(--color-yellow-100);
} }
.bg-\[\#5c4731\] {
background-color: #5c4731;
}
.bg-\[\#eaddc4\] {
background-color: #eaddc4;
}
.bg-\[\#eef2ff\] { .bg-\[\#eef2ff\] {
background-color: #eef2ff; background-color: #eef2ff;
} }
@@ -1669,6 +1708,10 @@
background-color: #f4ecd8; background-color: #f4ecd8;
} }
.bg-\[\#fbf8f1\] {
background-color: #fbf8f1;
}
.bg-amber-50 { .bg-amber-50 {
background-color: var(--color-amber-50); background-color: var(--color-amber-50);
} }
@@ -1723,6 +1766,16 @@
background-color: var(--color-blue-500); background-color: var(--color-blue-500);
} }
.bg-blue-500\/10 {
background-color: #3080ff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-blue-500\/10 {
background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
}
}
.bg-blue-600 { .bg-blue-600 {
background-color: var(--color-blue-600); background-color: var(--color-blue-600);
} }
@@ -1751,6 +1804,16 @@
background-color: var(--color-green-500); background-color: var(--color-green-500);
} }
.bg-green-500\/10 {
background-color: #00c7581a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-green-500\/10 {
background-color: color-mix(in oklab, var(--color-green-500) 10%, transparent);
}
}
.bg-indigo-50 { .bg-indigo-50 {
background-color: var(--color-indigo-50); background-color: var(--color-indigo-50);
} }
@@ -1773,6 +1836,16 @@
background-color: var(--color-indigo-500); background-color: var(--color-indigo-500);
} }
.bg-indigo-500\/10 {
background-color: #625fff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-indigo-500\/10 {
background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);
}
}
.bg-indigo-500\/20 { .bg-indigo-500\/20 {
background-color: #625fff33; background-color: #625fff33;
} }
@@ -1853,6 +1926,42 @@
background-color: var(--color-slate-900); background-color: var(--color-slate-900);
} }
.bg-theme-bg {
background-color: var(--color-theme-bg);
}
.bg-theme-bg\/50 {
background-color: var(--color-theme-bg);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-theme-bg\/50 {
background-color: color-mix(in oklab, var(--color-theme-bg) 50%, transparent);
}
}
.bg-theme-border {
background-color: var(--color-theme-border);
}
.bg-theme-editor-bg {
background-color: var(--color-theme-editor-bg);
}
.bg-theme-panel {
background-color: var(--color-theme-panel);
}
.bg-theme-panel\/50 {
background-color: var(--color-theme-panel);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-theme-panel\/50 {
background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);
}
}
.bg-transparent { .bg-transparent {
background-color: #0000; background-color: #0000;
} }
@@ -2350,6 +2459,18 @@
white-space: pre-wrap; white-space: pre-wrap;
} }
.text-\[\#735e44\] {
color: #735e44;
}
.text-\[\#332616\] {
color: #332616;
}
.text-\[\#433422\] {
color: #433422;
}
.text-amber-500 { .text-amber-500 {
color: var(--color-amber-500); color: var(--color-amber-500);
} }
@@ -2490,6 +2611,18 @@
color: var(--color-slate-900); color: var(--color-slate-900);
} }
.text-theme-editor-text {
color: var(--color-theme-editor-text);
}
.text-theme-muted {
color: var(--color-theme-muted);
}
.text-theme-text {
color: var(--color-theme-text);
}
.text-transparent { .text-transparent {
color: #0000; color: #0000;
} }
@@ -2573,6 +2706,10 @@
opacity: .8; opacity: .8;
} }
.opacity-90 {
opacity: .9;
}
.shadow-2xl { .shadow-2xl {
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040); --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2860,6 +2997,12 @@
} }
} }
@media (hover: hover) {
.hover\:border-\[\#cfbd9e\]:hover {
border-color: #cfbd9e;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:border-blue-200:hover { .hover\:border-blue-200:hover {
border-color: var(--color-blue-200); border-color: var(--color-blue-200);
@@ -2902,6 +3045,18 @@
} }
} }
@media (hover: hover) {
.hover\:border-slate-600:hover {
border-color: var(--color-slate-600);
}
}
@media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-amber-50:hover { .hover\:bg-amber-50:hover {
background-color: var(--color-amber-50); background-color: var(--color-amber-50);
@@ -2932,6 +3087,24 @@
} }
} }
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) {
.hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-blue-500\/10:hover {
background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-blue-600:hover { .hover\:bg-blue-600:hover {
background-color: var(--color-blue-600); background-color: var(--color-blue-600);
@@ -2968,6 +3141,18 @@
} }
} }
@media (hover: hover) {
.hover\:bg-indigo-500\/10:hover {
background-color: #625fff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-indigo-500\/10:hover {
background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-indigo-700:hover { .hover\:bg-indigo-700:hover {
background-color: var(--color-indigo-700); background-color: var(--color-indigo-700);
@@ -2980,6 +3165,18 @@
} }
} }
@media (hover: hover) {
.hover\:bg-red-500\/10:hover {
background-color: #fb2c361a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-red-500\/10:hover {
background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-red-700:hover { .hover\:bg-red-700:hover {
background-color: var(--color-red-700); background-color: var(--color-red-700);
@@ -3034,6 +3231,30 @@
} }
} }
@media (hover: hover) {
.hover\:bg-theme-border:hover {
background-color: var(--color-theme-border);
}
}
@media (hover: hover) {
.hover\:bg-theme-panel:hover {
background-color: var(--color-theme-panel);
}
}
@media (hover: hover) {
.hover\:bg-theme-panel\/50:hover {
background-color: var(--color-theme-panel);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-theme-panel\/50:hover {
background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-white:hover { .hover\:bg-white:hover {
background-color: var(--color-white); background-color: var(--color-white);
@@ -3052,6 +3273,12 @@
} }
} }
@media (hover: hover) {
.hover\:text-\[\#332616\]:hover {
color: #332616;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:text-blue-400:hover { .hover\:text-blue-400:hover {
color: var(--color-blue-400); color: var(--color-blue-400);
@@ -3142,6 +3369,12 @@
} }
} }
@media (hover: hover) {
.hover\:text-theme-text:hover {
color: var(--color-theme-text);
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:text-white:hover { .hover\:text-white:hover {
color: var(--color-white); color: var(--color-white);
@@ -3161,6 +3394,18 @@
} }
} }
@media (hover: hover) {
.hover\:opacity-80:hover {
opacity: .8;
}
}
@media (hover: hover) {
.hover\:opacity-100:hover {
opacity: 1;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:shadow-2xl:hover { .hover\:shadow-2xl:hover {
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040); --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040);
@@ -3353,6 +3598,36 @@
} }
} }
:root, .theme-light {
--theme-bg: #eef2ff;
--theme-panel: #fff;
--theme-text: #0f172a;
--theme-muted: #64748b;
--theme-border: #e2e8f0;
--theme-editor-bg: #fff;
--theme-editor-text: #0f172a;
}
.theme-dark {
--theme-bg: #0f172a;
--theme-panel: #1e293b;
--theme-text: #f8fafc;
--theme-muted: #94a3b8;
--theme-border: #334155;
--theme-editor-bg: #1e293b;
--theme-editor-text: #e2e8f0;
}
.theme-sepia {
--theme-bg: #eaddc4;
--theme-panel: #fbf8f1;
--theme-text: #332616;
--theme-muted: #735e44;
--theme-border: #dfcdae;
--theme-editor-bg: #fbf8f1;
--theme-editor-text: #332616;
}
.editor-content:empty:before { .editor-content:empty:before {
content: attr(placeholder); content: attr(placeholder);
color: #9ca3af; color: #9ca3af;

View File

@@ -2,7 +2,7 @@
script: typeof document === "object" ? document.currentScript : undefined, script: typeof document === "object" ? document.currentScript : undefined,
chunks: [ chunks: [
"static/chunks/[root-of-the-server]__c391f813._.css", "static/chunks/[root-of-the-server]__c391f813._.css",
"static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js" "static/chunks/Documents_00 - projet_plumeia_79f2801f._.js"
], ],
source: "dynamic" source: "dynamic"
}); });

View File

@@ -309,7 +309,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
const hasSelection = savedRange.current && !savedRange.current.collapsed; const hasSelection = savedRange.current && !savedRange.current.collapsed;
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col h-full bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden relative", className: "flex flex-col h-full bg-theme-panel rounded-lg shadow-sm border border-theme-border overflow-hidden relative transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("style", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("style", {
children: ` children: `
@@ -326,7 +326,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm", className: "flex items-center gap-1 p-2 bg-theme-bg border-b border-theme-border flex-wrap relative z-20 shadow-sm transition-colors duration-300",
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
icon: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bold$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Bold$3e$__["Bold"], icon: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$bold$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Bold$3e$__["Bold"],
@@ -506,7 +506,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 overflow-y-auto relative bg-slate-100", className: "flex-1 overflow-y-auto relative bg-theme-bg/50 transition-colors duration-300",
ref: scrollContainerRef, ref: scrollContainerRef,
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex justify-center relative min-h-full py-8", className: "flex justify-center relative min-h-full py-8",
@@ -515,7 +515,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
ref: contentRef, ref: contentRef,
contentEditable: true, contentEditable: true,
suppressContentEditableWarning: true, suppressContentEditableWarning: true,
className: "bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content", className: "bg-theme-editor-bg shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-theme-editor-text editor-content transition-colors duration-300",
onInput: handleInput, onInput: handleInput,
onBlur: ()=>{ onBlur: ()=>{
setIsFocused(false); setIsFocused(false);

File diff suppressed because one or more lines are too long

View File

@@ -502,6 +502,13 @@
--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
--default-font-family: var(--font-sans); --default-font-family: var(--font-sans);
--default-mono-font-family: var(--font-mono); --default-mono-font-family: var(--font-mono);
--color-theme-bg: var(--theme-bg);
--color-theme-panel: var(--theme-panel);
--color-theme-text: var(--theme-text);
--color-theme-muted: var(--theme-muted);
--color-theme-border: var(--theme-border);
--color-theme-editor-bg: var(--theme-editor-bg);
--color-theme-editor-text: var(--theme-editor-text);
} }
@supports (color: lab(0% 0 0)) { @supports (color: lab(0% 0 0)) {
@@ -1055,6 +1062,10 @@
} }
} }
.-m-8 {
margin: calc(var(--spacing) * -8);
}
.m-1 { .m-1 {
margin: calc(var(--spacing) * 1); margin: calc(var(--spacing) * 1);
} }
@@ -1119,6 +1130,10 @@
margin-top: calc(var(--spacing) * 20); margin-top: calc(var(--spacing) * 20);
} }
.mt-auto {
margin-top: auto;
}
.mr-4 { .mr-4 {
margin-right: calc(var(--spacing) * 4); margin-right: calc(var(--spacing) * 4);
} }
@@ -1846,6 +1861,18 @@
border-style: dashed; border-style: dashed;
} }
.border-\[\#dfcdae\] {
border-color: #dfcdae;
}
.border-\[\#eaddc4\] {
border-color: #eaddc4;
}
.border-\[\#f4ecd8\] {
border-color: #f4ecd8;
}
.border-amber-100 { .border-amber-100 {
border-color: var(--color-amber-100); border-color: var(--color-amber-100);
} }
@@ -1950,6 +1977,10 @@
border-color: var(--color-slate-800); border-color: var(--color-slate-800);
} }
.border-theme-border {
border-color: var(--color-theme-border);
}
.border-transparent { .border-transparent {
border-color: #0000; border-color: #0000;
} }
@@ -1962,6 +1993,14 @@
border-color: var(--color-yellow-100); border-color: var(--color-yellow-100);
} }
.bg-\[\#5c4731\] {
background-color: #5c4731;
}
.bg-\[\#eaddc4\] {
background-color: #eaddc4;
}
.bg-\[\#eef2ff\] { .bg-\[\#eef2ff\] {
background-color: #eef2ff; background-color: #eef2ff;
} }
@@ -1970,6 +2009,10 @@
background-color: #f4ecd8; background-color: #f4ecd8;
} }
.bg-\[\#fbf8f1\] {
background-color: #fbf8f1;
}
.bg-amber-50 { .bg-amber-50 {
background-color: var(--color-amber-50); background-color: var(--color-amber-50);
} }
@@ -2024,6 +2067,16 @@
background-color: var(--color-blue-500); background-color: var(--color-blue-500);
} }
.bg-blue-500\/10 {
background-color: #3080ff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-blue-500\/10 {
background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
}
}
.bg-blue-600 { .bg-blue-600 {
background-color: var(--color-blue-600); background-color: var(--color-blue-600);
} }
@@ -2052,6 +2105,16 @@
background-color: var(--color-green-500); background-color: var(--color-green-500);
} }
.bg-green-500\/10 {
background-color: #00c7581a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-green-500\/10 {
background-color: color-mix(in oklab, var(--color-green-500) 10%, transparent);
}
}
.bg-indigo-50 { .bg-indigo-50 {
background-color: var(--color-indigo-50); background-color: var(--color-indigo-50);
} }
@@ -2074,6 +2137,16 @@
background-color: var(--color-indigo-500); background-color: var(--color-indigo-500);
} }
.bg-indigo-500\/10 {
background-color: #625fff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.bg-indigo-500\/10 {
background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);
}
}
.bg-indigo-500\/20 { .bg-indigo-500\/20 {
background-color: #625fff33; background-color: #625fff33;
} }
@@ -2154,6 +2227,42 @@
background-color: var(--color-slate-900); background-color: var(--color-slate-900);
} }
.bg-theme-bg {
background-color: var(--color-theme-bg);
}
.bg-theme-bg\/50 {
background-color: var(--color-theme-bg);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-theme-bg\/50 {
background-color: color-mix(in oklab, var(--color-theme-bg) 50%, transparent);
}
}
.bg-theme-border {
background-color: var(--color-theme-border);
}
.bg-theme-editor-bg {
background-color: var(--color-theme-editor-bg);
}
.bg-theme-panel {
background-color: var(--color-theme-panel);
}
.bg-theme-panel\/50 {
background-color: var(--color-theme-panel);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-theme-panel\/50 {
background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);
}
}
.bg-transparent { .bg-transparent {
background-color: #0000; background-color: #0000;
} }
@@ -2651,6 +2760,18 @@
white-space: pre-wrap; white-space: pre-wrap;
} }
.text-\[\#735e44\] {
color: #735e44;
}
.text-\[\#332616\] {
color: #332616;
}
.text-\[\#433422\] {
color: #433422;
}
.text-amber-500 { .text-amber-500 {
color: var(--color-amber-500); color: var(--color-amber-500);
} }
@@ -2791,6 +2912,18 @@
color: var(--color-slate-900); color: var(--color-slate-900);
} }
.text-theme-editor-text {
color: var(--color-theme-editor-text);
}
.text-theme-muted {
color: var(--color-theme-muted);
}
.text-theme-text {
color: var(--color-theme-text);
}
.text-transparent { .text-transparent {
color: #0000; color: #0000;
} }
@@ -2874,6 +3007,10 @@
opacity: .8; opacity: .8;
} }
.opacity-90 {
opacity: .9;
}
.shadow-2xl { .shadow-2xl {
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040); --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3161,6 +3298,12 @@
} }
} }
@media (hover: hover) {
.hover\:border-\[\#cfbd9e\]:hover {
border-color: #cfbd9e;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:border-blue-200:hover { .hover\:border-blue-200:hover {
border-color: var(--color-blue-200); border-color: var(--color-blue-200);
@@ -3203,6 +3346,18 @@
} }
} }
@media (hover: hover) {
.hover\:border-slate-600:hover {
border-color: var(--color-slate-600);
}
}
@media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-amber-50:hover { .hover\:bg-amber-50:hover {
background-color: var(--color-amber-50); background-color: var(--color-amber-50);
@@ -3233,6 +3388,24 @@
} }
} }
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) {
.hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-blue-500\/10:hover {
background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-blue-600:hover { .hover\:bg-blue-600:hover {
background-color: var(--color-blue-600); background-color: var(--color-blue-600);
@@ -3269,6 +3442,18 @@
} }
} }
@media (hover: hover) {
.hover\:bg-indigo-500\/10:hover {
background-color: #625fff1a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-indigo-500\/10:hover {
background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-indigo-700:hover { .hover\:bg-indigo-700:hover {
background-color: var(--color-indigo-700); background-color: var(--color-indigo-700);
@@ -3281,6 +3466,18 @@
} }
} }
@media (hover: hover) {
.hover\:bg-red-500\/10:hover {
background-color: #fb2c361a;
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-red-500\/10:hover {
background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-red-700:hover { .hover\:bg-red-700:hover {
background-color: var(--color-red-700); background-color: var(--color-red-700);
@@ -3335,6 +3532,30 @@
} }
} }
@media (hover: hover) {
.hover\:bg-theme-border:hover {
background-color: var(--color-theme-border);
}
}
@media (hover: hover) {
.hover\:bg-theme-panel:hover {
background-color: var(--color-theme-panel);
}
}
@media (hover: hover) {
.hover\:bg-theme-panel\/50:hover {
background-color: var(--color-theme-panel);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-theme-panel\/50:hover {
background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);
}
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-white:hover { .hover\:bg-white:hover {
background-color: var(--color-white); background-color: var(--color-white);
@@ -3353,6 +3574,12 @@
} }
} }
@media (hover: hover) {
.hover\:text-\[\#332616\]:hover {
color: #332616;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:text-blue-400:hover { .hover\:text-blue-400:hover {
color: var(--color-blue-400); color: var(--color-blue-400);
@@ -3443,6 +3670,12 @@
} }
} }
@media (hover: hover) {
.hover\:text-theme-text:hover {
color: var(--color-theme-text);
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:text-white:hover { .hover\:text-white:hover {
color: var(--color-white); color: var(--color-white);
@@ -3462,6 +3695,18 @@
} }
} }
@media (hover: hover) {
.hover\:opacity-80:hover {
opacity: .8;
}
}
@media (hover: hover) {
.hover\:opacity-100:hover {
opacity: 1;
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:shadow-2xl:hover { .hover\:shadow-2xl:hover {
--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040); --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040);
@@ -3654,6 +3899,36 @@
} }
} }
:root, .theme-light {
--theme-bg: #eef2ff;
--theme-panel: #fff;
--theme-text: #0f172a;
--theme-muted: #64748b;
--theme-border: #e2e8f0;
--theme-editor-bg: #fff;
--theme-editor-text: #0f172a;
}
.theme-dark {
--theme-bg: #0f172a;
--theme-panel: #1e293b;
--theme-text: #f8fafc;
--theme-muted: #94a3b8;
--theme-border: #334155;
--theme-editor-bg: #1e293b;
--theme-editor-text: #e2e8f0;
}
.theme-sepia {
--theme-bg: #eaddc4;
--theme-panel: #fbf8f1;
--theme-text: #332616;
--theme-muted: #735e44;
--theme-border: #dfcdae;
--theme-editor-bg: #fbf8f1;
--theme-editor-text: #332616;
}
.editor-content:empty:before { .editor-content:empty:before {
content: attr(placeholder); content: attr(placeholder);
color: #9ca3af; color: #9ca3af;

File diff suppressed because one or more lines are too long

2
next-env.d.ts vendored
View File

@@ -1,6 +1,6 @@
/// <reference types="next" /> /// <reference types="next" />
/// <reference types="next/image-types/global" /> /// <reference types="next/image-types/global" />
import "./.next/dev/types/routes.d.ts"; import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited // NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

View File

@@ -1,10 +1,49 @@
@import "tailwindcss"; @import "tailwindcss";
/* Custom Theme */
@theme { @theme {
--font-sans: 'Inter', sans-serif; --font-sans: 'Inter', sans-serif;
--font-serif: 'Merriweather', serif; --font-serif: 'Merriweather', serif;
--color-paper: #fcfbf7; --color-paper: #fcfbf7;
/* Global Theme Colors */
--color-theme-bg: var(--theme-bg);
--color-theme-panel: var(--theme-panel);
--color-theme-text: var(--theme-text);
--color-theme-muted: var(--theme-muted);
--color-theme-border: var(--theme-border);
--color-theme-editor-bg: var(--theme-editor-bg);
--color-theme-editor-text: var(--theme-editor-text);
}
:root,
.theme-light {
--theme-bg: #eef2ff;
--theme-panel: #ffffff;
--theme-text: #0f172a;
--theme-muted: #64748b;
--theme-border: #e2e8f0;
--theme-editor-bg: #ffffff;
--theme-editor-text: #0f172a;
}
.theme-dark {
--theme-bg: #0f172a;
--theme-panel: #1e293b;
--theme-text: #f8fafc;
--theme-muted: #94a3b8;
--theme-border: #334155;
--theme-editor-bg: #1e293b;
--theme-editor-text: #e2e8f0;
}
.theme-sepia {
--theme-bg: #eaddc4;
--theme-panel: #fbf8f1;
--theme-text: #332616;
--theme-muted: #735e44;
--theme-border: #dfcdae;
--theme-editor-bg: #fbf8f1;
--theme-editor-text: #332616;
} }
/* Editor placeholder */ /* Editor placeholder */
@@ -19,13 +58,16 @@
width: 6px; width: 6px;
height: 6px; height: 6px;
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
background: transparent; background: transparent;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: #cbd5e1; background: #cbd5e1;
border-radius: 3px; border-radius: 3px;
} }
::-webkit-scrollbar-thumb:hover { ::-webkit-scrollbar-thumb:hover {
background: #94a3b8; background: #94a3b8;
} }
@@ -37,7 +79,8 @@
size: auto; size: auto;
} }
html, body { html,
body {
height: auto !important; height: auto !important;
overflow: visible !important; overflow: visible !important;
margin: 0 !important; margin: 0 !important;
@@ -53,11 +96,23 @@
position: relative !important; position: relative !important;
} }
.no-print { display: none !important; } .no-print {
.print-only { display: block !important; } display: none !important;
}
.break-before-page { page-break-before: always; break-before: page; } .print-only {
.break-after-page { page-break-after: always; break-after: page; } display: block !important;
}
.break-before-page {
page-break-before: always;
break-before: page;
}
.break-after-page {
page-break-after: always;
break-after: page;
}
p { p {
text-align: justify; text-align: justify;
@@ -66,10 +121,16 @@
color: black !important; color: black !important;
} }
h1, h2, h3, h4 { h1,
h2,
h3,
h4 {
color: black !important; color: black !important;
page-break-after: avoid; page-break-after: avoid;
} }
a { text-decoration: none; color: black !important; } a {
} text-decoration: none;
color: black !important;
}
}

View File

@@ -26,7 +26,7 @@ export default function RootLayout({
}) { }) {
return ( return (
<html lang="fr"> <html lang="fr">
<body className={`${inter.variable} ${merriweather.variable} font-sans bg-gray-100 text-slate-800 h-screen overflow-hidden antialiased`}> <body className={`${inter.variable} ${merriweather.variable} font-sans h-screen overflow-hidden antialiased bg-theme-bg text-theme-text transition-colors duration-300`}>
<AuthProvider> <AuthProvider>
{children} {children}
</AuthProvider> </AuthProvider>

View File

@@ -32,17 +32,17 @@ const AIPanel: React.FC<AIPanelProps> = ({ chatHistory, onSendMessage, onInsertT
const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false; const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;
return ( return (
<div className="flex flex-col h-full bg-white border-l border-slate-200 shadow-xl w-80 lg:w-96"> <div className="flex flex-col h-full bg-theme-panel border-l border-theme-border shadow-xl w-80 lg:w-96 transition-colors duration-300">
{/* Header with Usage Counter */} {/* Header with Usage Counter */}
<div className="p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md"> <div className="p-4 bg-indigo-600 text-white flex items-center justify-between shadow-md">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Sparkles size={20} className="animate-pulse" /> <Sparkles size={20} className="animate-pulse" />
<h3 className="font-bold tracking-tight">Assistant IA</h3> <h3 className="font-bold tracking-tight">Assistant IA</h3>
</div> </div>
{usage && ( {usage && (
<div className="bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1"> <div className="bg-indigo-900/50 px-2 py-1 rounded text-[10px] font-black flex items-center gap-1">
<Zap size={10} fill="currentColor" /> {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit} <Zap size={10} fill="currentColor" /> {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}
</div> </div>
)} )}
</div> </div>
@@ -53,33 +53,33 @@ const AIPanel: React.FC<AIPanelProps> = ({ chatHistory, onSendMessage, onInsertT
</div> </div>
)} )}
<div className="flex-1 overflow-y-auto p-4 space-y-4 bg-slate-50"> <div className="flex-1 overflow-y-auto p-4 space-y-4 bg-theme-bg transition-colors duration-300">
{chatHistory.length === 0 && ( {chatHistory.length === 0 && (
<div className="text-center text-slate-400 mt-10"> <div className="text-center text-theme-muted mt-10">
<Bot size={48} className="mx-auto mb-2 opacity-50" /> <Bot size={48} className="mx-auto mb-2 opacity-50" />
<p className="text-sm">Bonjour ! Comment puis-je vous aider aujourd'hui ?</p> <p className="text-sm">Bonjour ! Comment puis-je vous aider aujourd'hui ?</p>
{isLimitReached && ( {isLimitReached && (
<div className="mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse"> <div className="mt-4 p-4 bg-red-50 border border-red-100 rounded-xl text-red-600 text-xs font-bold uppercase animate-pulse">
Limite atteinte ! Améliorez votre plan. Limite atteinte ! Améliorez votre plan.
</div> </div>
)} )}
</div> </div>
)} )}
{chatHistory.map((msg) => ( {chatHistory.map((msg) => (
<div key={msg.id} className={`flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`}> <div key={msg.id} className={`flex flex-col ${msg.role === 'user' ? 'items-end' : 'items-start'}`}>
<div className={`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-white text-slate-700 border border-slate-100 rounded-bl-none'}`}> <div className={`max-w-[85%] rounded-2xl p-4 text-sm shadow-sm transition-colors duration-300 ${msg.role === 'user' ? 'bg-indigo-600 text-white rounded-br-none' : 'bg-theme-panel text-theme-text border border-theme-border rounded-bl-none'}`}>
{msg.role === 'model' && msg.responseType === 'reflection' && ( {msg.role === 'model' && msg.responseType === 'reflection' && (
<div className="flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide"><BrainCircuit size={12} /> Réflexion</div> <div className="flex items-center gap-1.5 text-[10px] font-black text-amber-600 mb-1.5 uppercase tracking-wide"><BrainCircuit size={12} /> Réflexion</div>
)} )}
<div className="whitespace-pre-wrap leading-relaxed">{msg.text}</div> <div className="whitespace-pre-wrap leading-relaxed">{msg.text}</div>
</div> </div>
</div> </div>
))} ))}
{isGenerating && ( {isGenerating && (
<div className="flex justify-start"> <div className="flex justify-start">
<div className="bg-white p-3 rounded-2xl rounded-bl-none shadow-sm border border-slate-100 flex items-center gap-2 text-xs text-slate-500"> <div className="bg-theme-panel p-3 rounded-2xl rounded-bl-none shadow-sm border border-theme-border flex items-center gap-2 text-xs text-theme-muted transition-colors duration-300">
<RefreshCw size={14} className="animate-spin" /> L'IA travaille... <RefreshCw size={14} className="animate-spin" /> L'IA travaille...
</div> </div>
</div> </div>
@@ -87,17 +87,17 @@ const AIPanel: React.FC<AIPanelProps> = ({ chatHistory, onSendMessage, onInsertT
<div ref={messagesEndRef} /> <div ref={messagesEndRef} />
</div> </div>
<div className="p-4 bg-white border-t border-slate-200"> <div className="p-4 bg-theme-panel border-t border-theme-border transition-colors duration-300">
<form onSubmit={handleSubmit} className="relative"> <form onSubmit={handleSubmit} className="relative">
<input <input
type="text" type="text"
value={input} value={input}
onChange={(e) => setInput(e.target.value)} onChange={(e) => setInput(e.target.value)}
placeholder={isLimitReached ? "Limite atteinte..." : "Votre message..."} placeholder={isLimitReached ? "Limite atteinte..." : "Votre message..."}
className="w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50" className="w-full pl-4 pr-12 py-3 bg-theme-bg text-theme-text border border-theme-border rounded-2xl text-sm focus:outline-none focus:border-indigo-500 transition-all disabled:opacity-50"
disabled={isGenerating || isLimitReached} disabled={isGenerating || isLimitReached}
/> />
<button <button
type="submit" type="submit"
disabled={!input.trim() || isGenerating || isLimitReached} disabled={!input.trim() || isGenerating || isLimitReached}
className="absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md" className="absolute right-1.5 top-1.5 p-2 bg-indigo-600 text-white rounded-xl hover:bg-indigo-700 disabled:opacity-50 transition-colors shadow-md"

View File

@@ -43,8 +43,8 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
}; };
return ( return (
<div className="h-full bg-[#eef2ff] p-8 overflow-y-auto"> <div className="h-full bg-theme-bg p-8 overflow-y-auto transition-colors duration-300">
<div className="max-w-4xl mx-auto bg-white rounded-xl shadow-lg border border-slate-200 overflow-hidden"> <div className="max-w-4xl mx-auto bg-theme-panel rounded-xl shadow-lg border border-theme-border overflow-hidden transition-colors duration-300">
<div className="bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4"> <div className="bg-slate-900 text-white p-6 border-b border-slate-800 flex items-center gap-4">
<div className="bg-blue-600 p-3 rounded-lg"> <div className="bg-blue-600 p-3 rounded-lg">
@@ -58,53 +58,53 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
<div className="p-8 space-y-8"> <div className="p-8 space-y-8">
<section className="space-y-4"> <section className="space-y-4">
<h3 className="text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2"> <h3 className="text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2">
<Book size={18} className="text-blue-600" /> Informations de Base <Book size={18} className="text-blue-600" /> Informations de Base
</h3> </h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6"> <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Titre du Roman</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Titre du Roman</label>
<input <input
type="text" type="text"
value={project.title} value={project.title}
onChange={(e) => onUpdate({ ...project, title: e.target.value })} onChange={(e) => onUpdate({ ...project, title: e.target.value })}
className="w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-serif font-bold text-lg transition-colors duration-300"
/> />
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Nom d'Auteur</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Nom d'Auteur</label>
<input <input
type="text" type="text"
value={project.author} value={project.author}
onChange={(e) => onUpdate({ ...project, author: e.target.value })} onChange={(e) => onUpdate({ ...project, author: e.target.value })}
className="w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
/> />
</div> </div>
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Synopsis Global</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Synopsis Global</label>
<textarea <textarea
value={settings.synopsis} value={settings.synopsis}
onChange={(e) => handleChange('synopsis', e.target.value)} onChange={(e) => handleChange('synopsis', e.target.value)}
className="w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm bg-[#eef2ff]" className="w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none h-24 text-sm transition-colors duration-300"
placeholder="De quoi parle votre histoire dans les grandes lignes ?" placeholder="De quoi parle votre histoire dans les grandes lignes ?"
/> />
</div> </div>
</section> </section>
<section className="space-y-4"> <section className="space-y-4">
<h3 className="text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2"> <h3 className="text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2">
<Target size={18} className="text-red-500" /> Genre & Public <Target size={18} className="text-red-500" /> Genre & Public
</h3> </h3>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Genre Principal</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Genre Principal</label>
<input <input
type="text" type="text"
list="genre-suggestions" list="genre-suggestions"
value={settings.genre} value={settings.genre}
onChange={(e) => handleChange('genre', e.target.value)} onChange={(e) => handleChange('genre', e.target.value)}
className="w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
placeholder="Ex: Fantasy" placeholder="Ex: Fantasy"
/> />
<datalist id="genre-suggestions"> <datalist id="genre-suggestions">
@@ -112,35 +112,35 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
</datalist> </datalist>
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Sous-Genre</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Sous-Genre</label>
<input <input
type="text" type="text"
value={settings.subGenre || ''} value={settings.subGenre || ''}
onChange={(e) => handleChange('subGenre', e.target.value)} onChange={(e) => handleChange('subGenre', e.target.value)}
className="w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
placeholder="Ex: Dark Fantasy" placeholder="Ex: Dark Fantasy"
/> />
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Public Cible</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Public Cible</label>
<input <input
type="text" type="text"
value={settings.targetAudience} value={settings.targetAudience}
onChange={(e) => handleChange('targetAudience', e.target.value)} onChange={(e) => handleChange('targetAudience', e.target.value)}
className="w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
placeholder="Ex: Jeune Adulte, Adulte..." placeholder="Ex: Jeune Adulte, Adulte..."
/> />
</div> </div>
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Thèmes Clés</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Thèmes Clés</label>
<div className="relative"> <div className="relative">
<Hash size={14} className="absolute left-3 top-3 text-slate-400" /> <Hash size={14} className="absolute left-3 top-3 text-theme-muted" />
<input <input
type="text" type="text"
value={settings.themes} value={settings.themes}
onChange={(e) => handleChange('themes', e.target.value)} onChange={(e) => handleChange('themes', e.target.value)}
className="w-full pl-9 p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]" className="w-full pl-9 p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
placeholder="Ex: Vengeance, Rédemption, Voyage initiatique..." placeholder="Ex: Vengeance, Rédemption, Voyage initiatique..."
/> />
</div> </div>
@@ -148,44 +148,44 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
</section> </section>
<section className="space-y-4"> <section className="space-y-4">
<h3 className="text-lg font-bold text-slate-800 flex items-center gap-2 border-b border-slate-100 pb-2"> <h3 className="text-lg font-bold text-theme-text flex items-center gap-2 border-b border-theme-border pb-2">
<Feather size={18} className="text-purple-600" /> Narration & Style <Feather size={18} className="text-purple-600" /> Narration & Style
</h3> </h3>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1"> <label className="block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1">
<Users size={14} /> Point de Vue (POV) <Users size={14} /> Point de Vue (POV)
</label> </label>
<select <select
value={settings.pov} value={settings.pov}
onChange={(e) => handleChange('pov', e.target.value)} onChange={(e) => handleChange('pov', e.target.value)}
className="w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
> >
<option value="">Sélectionner...</option> <option value="">Sélectionner...</option>
{POV_OPTIONS.map(o => <option key={o} value={o}>{o}</option>)} {POV_OPTIONS.map(o => <option key={o} value={o}>{o}</option>)}
</select> </select>
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1 flex items-center gap-1"> <label className="block text-sm font-semibold text-theme-muted mb-1 flex items-center gap-1">
<Clock size={14} /> Temps du récit <Clock size={14} /> Temps du récit
</label> </label>
<select <select
value={settings.tense} value={settings.tense}
onChange={(e) => handleChange('tense', e.target.value)} onChange={(e) => handleChange('tense', e.target.value)}
className="w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
> >
<option value="">Sélectionner...</option> <option value="">Sélectionner...</option>
{TENSE_OPTIONS.map(o => <option key={o} value={o}>{o}</option>)} {TENSE_OPTIONS.map(o => <option key={o} value={o}>{o}</option>)}
</select> </select>
</div> </div>
<div> <div>
<label className="block text-sm font-semibold text-slate-600 mb-1">Ton Général</label> <label className="block text-sm font-semibold text-theme-muted mb-1">Ton Général</label>
<input <input
type="text" type="text"
list="tone-suggestions" list="tone-suggestions"
value={settings.tone} value={settings.tone}
onChange={(e) => handleChange('tone', e.target.value)} onChange={(e) => handleChange('tone', e.target.value)}
className="w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]" className="w-full p-2.5 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none transition-colors duration-300"
placeholder="Ex: Sombre, Ironique..." placeholder="Ex: Sombre, Ironique..."
/> />
<datalist id="tone-suggestions"> <datalist id="tone-suggestions">
@@ -195,16 +195,16 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
</div> </div>
<div className="mt-4"> <div className="mt-4">
<label className="block text-sm font-semibold text-slate-600 mb-1"> <label className="block text-sm font-semibold text-theme-muted mb-1">
Guide de Style & Instructions IA (Prompt Système) Guide de Style & Instructions IA (Prompt Système)
</label> </label>
<p className="text-xs text-slate-400 mb-2"> <p className="text-xs text-theme-muted mb-2">
Ces instructions seront envoyées à l'IA à chaque génération. Décrivez ici le style d'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores"). Ces instructions seront envoyées à l'IA à chaque génération. Décrivez ici le style d'écriture désiré (ex: "phrases courtes", "vocabulaire soutenu", "beaucoup de métaphores").
</p> </p>
<textarea <textarea
value={project.styleGuide || ''} value={project.styleGuide || ''}
onChange={(e) => handleStyleGuideChange(e.target.value)} onChange={(e) => handleStyleGuideChange(e.target.value)}
className="w-full p-3 border border-indigo-100 bg-[#eef2ff] rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono text-slate-700" className="w-full p-3 bg-theme-bg text-theme-text border border-theme-border rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none h-32 text-sm font-mono transition-colors duration-300"
placeholder="Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique." placeholder="Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique."
/> />
</div> </div>
@@ -220,17 +220,17 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées. Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.
</p> </p>
{showDeleteConfirm ? ( {showDeleteConfirm ? (
<div className="flex items-center gap-4 bg-white p-4 rounded border border-red-200"> <div className="flex items-center gap-4 bg-theme-panel p-4 rounded border border-red-200">
<span className="text-sm font-bold text-slate-700">Êtes-vous sûr ?</span> <span className="text-sm font-bold text-theme-text">Êtes-vous sûr ?</span>
<button <button
onClick={onDeleteProject} onClick={onDeleteProject}
className="px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold" className="px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 text-sm font-bold opacity-90 transition-opacity"
> >
Oui, supprimer définitivement Oui, supprimer définitivement
</button> </button>
<button <button
onClick={() => setShowDeleteConfirm(false)} onClick={() => setShowDeleteConfirm(false)}
className="px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm" className="px-4 py-2 bg-theme-bg text-theme-text border border-theme-border rounded hover:opacity-80 text-sm transition-opacity"
> >
Annuler Annuler
</button> </button>
@@ -238,7 +238,7 @@ const BookSettingsComponent: React.FC<BookSettingsProps> = ({ project, onUpdate,
) : ( ) : (
<button <button
onClick={() => setShowDeleteConfirm(true)} onClick={() => setShowDeleteConfirm(true)}
className="px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold" className="px-4 py-2 bg-theme-panel border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold transition-colors duration-300"
> >
Supprimer ce projet Supprimer ce projet
</button> </button>

View File

@@ -17,53 +17,53 @@ interface DashboardProps {
const Dashboard: React.FC<DashboardProps> = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => { const Dashboard: React.FC<DashboardProps> = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {
return ( return (
<div className="min-h-screen bg-[#eef2ff] p-8 font-sans"> <div className="min-h-screen bg-theme-bg p-8 font-sans transition-colors duration-300">
<div className="max-w-6xl mx-auto space-y-8"> <div className="max-w-6xl mx-auto space-y-8">
{/* User Card */} {/* User Card */}
<div className="flex flex-col md:flex-row justify-between items-center bg-white p-8 rounded-[2rem] shadow-sm border border-indigo-100 gap-6"> <div className="flex flex-col md:flex-row justify-between items-center bg-theme-panel p-8 rounded-[2rem] shadow-sm border border-theme-border gap-6">
<div className="flex items-center gap-6"> <div className="flex items-center gap-6">
<div className="relative"> <div className="relative">
<img src={user.avatar} className="w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover" alt="Avatar" /> <img src={user.avatar} className="w-20 h-20 rounded-full border-4 border-slate-50 shadow-lg object-cover" alt="Avatar" />
<div className="absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white" /> <div className="absolute -bottom-1 -right-1 bg-green-500 w-5 h-5 rounded-full border-4 border-white" />
</div> </div>
<div> <div>
<h2 className="text-3xl font-black text-slate-900">Bonjour, {user.name} 👋</h2> <h2 className="text-3xl font-black text-theme-text">Bonjour, {user.name} 👋</h2>
<div className="flex items-center gap-3 mt-1"> <div className="flex items-center gap-3 mt-1">
<span className="px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest">{user.subscription.planDetails?.displayName || user.subscription.plan}</span> <span className="px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest">{user.subscription.planDetails?.displayName || user.subscription.plan}</span>
<span className="text-slate-400 text-xs font-medium">Membre depuis le 24 janv.</span> <span className="text-theme-muted text-xs font-medium">Membre depuis le 24 janv.</span>
</div> </div>
</div> </div>
</div> </div>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<button onClick={onProfile} className="bg-slate-50 text-slate-700 px-5 py-2.5 rounded-xl text-sm font-bold hover:bg-slate-100 transition-all flex items-center gap-2 border border-slate-200"> <button onClick={onProfile} className="bg-theme-bg text-theme-text px-5 py-2.5 rounded-xl text-sm font-bold hover:opacity-80 transition-all flex items-center gap-2 border border-theme-border">
<User size={18} /> Mon Profil <User size={18} /> Mon Profil
</button> </button>
<button onClick={onLogout} className="p-3 text-slate-400 hover:text-red-500 rounded-full hover:bg-red-50 transition-colors"><LogOut size={20} /></button> <button onClick={onLogout} className="p-3 text-theme-muted hover:text-red-500 rounded-full hover:bg-red-500/10 transition-colors"><LogOut size={20} /></button>
</div> </div>
</div> </div>
{/* Stats Section */} {/* Stats Section */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
<div className="bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4"> <div className="bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4">
<div className="bg-orange-100 p-3 rounded-2xl text-orange-600"><Flame size={24} /></div> <div className="bg-orange-100 p-3 rounded-2xl text-orange-600"><Flame size={24} /></div>
<div> <div>
<p className="text-xs font-bold text-slate-400 uppercase tracking-wider">Série actuelle</p> <p className="text-xs font-bold text-theme-muted uppercase tracking-wider">Série actuelle</p>
<p className="text-2xl font-black text-slate-900">{user.stats.writingStreak} Jours</p> <p className="text-2xl font-black text-theme-text">{user.stats.writingStreak} Jours</p>
</div> </div>
</div> </div>
<div className="bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4"> <div className="bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4">
<div className="bg-blue-100 p-3 rounded-2xl text-blue-600"><Edit3 size={24} /></div> <div className="bg-blue-100 p-3 rounded-2xl text-blue-600"><Edit3 size={24} /></div>
<div> <div>
<p className="text-xs font-bold text-slate-400 uppercase tracking-wider">Mots écrits</p> <p className="text-xs font-bold text-theme-muted uppercase tracking-wider">Mots écrits</p>
<p className="text-2xl font-black text-slate-900">{user.stats.totalWordsWritten.toLocaleString()}</p> <p className="text-2xl font-black text-theme-text">{user.stats.totalWordsWritten.toLocaleString()}</p>
</div> </div>
</div> </div>
<div className="bg-white p-6 rounded-3xl shadow-sm border border-indigo-50 flex items-center gap-4"> <div className="bg-theme-panel p-6 rounded-3xl shadow-sm border border-theme-border flex items-center gap-4">
<div className="bg-indigo-100 p-3 rounded-2xl text-indigo-600"><Target size={24} /></div> <div className="bg-indigo-100 p-3 rounded-2xl text-indigo-600"><Target size={24} /></div>
<div> <div>
<p className="text-xs font-bold text-slate-400 uppercase tracking-wider">Objectif du jour</p> <p className="text-xs font-bold text-theme-muted uppercase tracking-wider">Objectif du jour</p>
<p className="text-2xl font-black text-slate-900">{user.preferences.dailyWordGoal} Mots</p> <p className="text-2xl font-black text-theme-text">{user.preferences.dailyWordGoal} Mots</p>
</div> </div>
</div> </div>
</div> </div>
@@ -72,7 +72,7 @@ const Dashboard: React.FC<DashboardProps> = ({ user, projects, onSelect, onCreat
{/* Project List */} {/* Project List */}
<div className="lg:col-span-2 space-y-4"> <div className="lg:col-span-2 space-y-4">
<div className="flex justify-between items-center mb-6"> <div className="flex justify-between items-center mb-6">
<h3 className="text-2xl font-black text-slate-900">Mes Romans</h3> <h3 className="text-2xl font-black text-theme-text">Mes Romans</h3>
<button <button
onClick={onCreate} onClick={onCreate}
className="flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200" className="flex items-center gap-2 bg-blue-600 text-white px-6 py-3 rounded-2xl font-bold hover:bg-blue-700 transition-all shadow-xl shadow-blue-200"
@@ -86,23 +86,23 @@ const Dashboard: React.FC<DashboardProps> = ({ user, projects, onSelect, onCreat
<div <div
key={p.id} key={p.id}
onClick={() => onSelect(p.id)} onClick={() => onSelect(p.id)}
className="bg-white p-8 rounded-[2.5rem] border border-indigo-50 shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64" className="bg-theme-panel p-8 rounded-[2.5rem] border border-theme-border shadow-sm hover:shadow-2xl hover:scale-[1.02] transition-all cursor-pointer group flex flex-col justify-between h-64"
> >
<div> <div>
<div className="bg-blue-50 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-600 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors"> <div className="bg-blue-500/10 w-12 h-12 rounded-2xl flex items-center justify-center text-blue-500 mb-6 group-hover:bg-blue-600 group-hover:text-white transition-colors">
<Book size={24} /> <Book size={24} />
</div> </div>
<h4 className="font-black text-slate-900 text-xl truncate mb-1">{p.title}</h4> <h4 className="font-black text-theme-text text-xl truncate mb-1">{p.title}</h4>
<p className="text-slate-400 text-sm">Dernière modification : {new Date(p.lastModified).toLocaleDateString()}</p> <p className="text-theme-muted text-sm">Dernière modification : {new Date(p.lastModified).toLocaleDateString()}</p>
</div> </div>
<div className="flex justify-between items-center text-[10px] text-slate-400 font-black uppercase tracking-widest border-t border-slate-50 pt-4"> <div className="flex justify-between items-center text-[10px] text-theme-muted font-black uppercase tracking-widest border-t border-theme-border pt-4 mt-auto">
<span>{p.chapters.length} Chapitres</span> <span>{p.chapters.length} Chapitres</span>
<ChevronRight size={20} className="group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300" /> <ChevronRight size={20} className="group-hover:text-blue-600 transition-transform group-hover:translate-x-1 duration-300" />
</div> </div>
</div> </div>
))} ))}
{projects.length === 0 && ( {projects.length === 0 && (
<div className="col-span-2 py-24 bg-white rounded-[3rem] border-2 border-dashed border-indigo-100 flex flex-col items-center justify-center text-indigo-300"> <div className="col-span-2 py-24 bg-theme-panel rounded-[3rem] border-2 border-dashed border-theme-border flex flex-col items-center justify-center text-theme-muted">
<Book size={64} className="mb-6 opacity-20" /> <Book size={64} className="mb-6 opacity-20" />
<p className="font-bold text-lg">Prêt à commencer votre premier roman ?</p> <p className="font-bold text-lg">Prêt à commencer votre premier roman ?</p>
<button onClick={onCreate} className="mt-4 text-blue-600 font-bold hover:underline">Créer un projet maintenant</button> <button onClick={onCreate} className="mt-4 text-blue-600 font-bold hover:underline">Créer un projet maintenant</button>

View File

@@ -5,8 +5,8 @@ import { Idea, IdeaStatus, IdeaCategory } from '@/lib/types';
import { Plus, X, GripVertical, CheckCircle, Circle, Clock, Lightbulb, Search, Trash2, Edit3, Save } from 'lucide-react'; import { Plus, X, GripVertical, CheckCircle, Circle, Clock, Lightbulb, Search, Trash2, Edit3, Save } from 'lucide-react';
interface IdeaBoardProps { interface IdeaBoardProps {
ideas: Idea[]; ideas: Idea[];
onUpdate: (ideas: Idea[]) => void; onUpdate: (ideas: Idea[]) => void;
} }
const CATEGORIES: Record<IdeaCategory, { label: string, color: string, icon: any }> = { const CATEGORIES: Record<IdeaCategory, { label: string, color: string, icon: any }> = {
@@ -25,349 +25,347 @@ const STATUS_LABELS: Record<IdeaStatus, string> = {
const MAX_DESCRIPTION_LENGTH = 500; const MAX_DESCRIPTION_LENGTH = 500;
const IdeaBoard: React.FC<IdeaBoardProps> = ({ ideas, onUpdate }) => { const IdeaBoard: React.FC<IdeaBoardProps> = ({ ideas, onUpdate }) => {
const [newIdeaTitle, setNewIdeaTitle] = useState(''); const [newIdeaTitle, setNewIdeaTitle] = useState('');
const [newIdeaCategory, setNewIdeaCategory] = useState<IdeaCategory>('plot'); const [newIdeaCategory, setNewIdeaCategory] = useState<IdeaCategory>('plot');
// Drag and Drop State // Drag and Drop State
const [draggedIdeaId, setDraggedIdeaId] = useState<string | null>(null); const [draggedIdeaId, setDraggedIdeaId] = useState<string | null>(null);
// Modal State for Edit/Quick Add // Modal State for Edit/Quick Add
const [editingItem, setEditingItem] = useState<Partial<Idea> | null>(null); const [editingItem, setEditingItem] = useState<Partial<Idea> | null>(null);
// --- ACTIONS --- // --- ACTIONS ---
const handleAddIdea = (e: React.FormEvent) => { const handleAddIdea = (e: React.FormEvent) => {
e.preventDefault(); e.preventDefault();
if (!newIdeaTitle.trim()) return; if (!newIdeaTitle.trim()) return;
const newIdea: Idea = { const newIdea: Idea = {
id: `idea-${Date.now()}`, id: `idea-${Date.now()}`,
title: newIdeaTitle, title: newIdeaTitle,
description: '', description: '',
category: newIdeaCategory, category: newIdeaCategory,
status: 'todo', status: 'todo',
createdAt: Date.now() createdAt: Date.now()
};
onUpdate([...ideas, newIdea]);
setNewIdeaTitle('');
}; };
onUpdate([...ideas, newIdea]); const handleDelete = (id: string) => {
setNewIdeaTitle(''); if (confirm("Supprimer cette carte ?")) {
}; onUpdate(ideas.filter(i => i.id !== id));
if (editingItem?.id === id) setEditingItem(null);
}
};
const handleDelete = (id: string) => { const handleSaveEdit = () => {
if(confirm("Supprimer cette carte ?")) { if (!editingItem || !editingItem.title?.trim()) return;
onUpdate(ideas.filter(i => i.id !== id));
if (editingItem?.id === id) setEditingItem(null);
}
};
const handleSaveEdit = () => { if (editingItem.id) {
if (!editingItem || !editingItem.title?.trim()) return; // Update existing
onUpdate(ideas.map(i => i.id === editingItem.id ? { ...i, ...editingItem } as Idea : i));
if (editingItem.id) { } else {
// Update existing // Create new from modal
onUpdate(ideas.map(i => i.id === editingItem.id ? { ...i, ...editingItem } as Idea : i)); const newIdea: Idea = {
} else { id: `idea-${Date.now()}`,
// Create new from modal title: editingItem.title || '',
const newIdea: Idea = { description: editingItem.description || '',
id: `idea-${Date.now()}`, category: editingItem.category || 'plot',
title: editingItem.title || '', status: editingItem.status || 'todo',
description: editingItem.description || '', createdAt: Date.now()
category: editingItem.category || 'plot',
status: editingItem.status || 'todo',
createdAt: Date.now()
}; };
onUpdate([...ideas, newIdea]); onUpdate([...ideas, newIdea]);
} }
setEditingItem(null); setEditingItem(null);
}; };
const openQuickAdd = (status: IdeaStatus) => { const openQuickAdd = (status: IdeaStatus) => {
setEditingItem({ setEditingItem({
title: '', title: '',
description: '', description: '',
category: 'plot', category: 'plot',
status: status status: status
}); });
}; };
const openEdit = (idea: Idea) => { const openEdit = (idea: Idea) => {
setEditingItem({ ...idea }); setEditingItem({ ...idea });
}; };
// --- DRAG HANDLERS --- // --- DRAG HANDLERS ---
const handleDragStart = (e: React.DragEvent, id: string) => { const handleDragStart = (e: React.DragEvent, id: string) => {
setDraggedIdeaId(id); setDraggedIdeaId(id);
e.dataTransfer.effectAllowed = 'move'; e.dataTransfer.effectAllowed = 'move';
}; };
const handleDrop = (e: React.DragEvent, status: IdeaStatus) => { const handleDrop = (e: React.DragEvent, status: IdeaStatus) => {
e.preventDefault(); e.preventDefault();
if (draggedIdeaId) { if (draggedIdeaId) {
const updatedIdeas = ideas.map(idea => const updatedIdeas = ideas.map(idea =>
idea.id === draggedIdeaId ? { ...idea, status } : idea idea.id === draggedIdeaId ? { ...idea, status } : idea
); );
onUpdate(updatedIdeas); onUpdate(updatedIdeas);
setDraggedIdeaId(null); setDraggedIdeaId(null);
} }
}; };
const handleDragOver = (e: React.DragEvent) => { const handleDragOver = (e: React.DragEvent) => {
e.preventDefault(); e.preventDefault();
e.dataTransfer.dropEffect = 'move'; e.dataTransfer.dropEffect = 'move';
}; };
// --- RENDERERS --- // --- RENDERERS ---
const Column = ({ title, status, icon: Icon }: { title: string, status: IdeaStatus, icon: any }) => { const Column = ({ title, status, icon: Icon }: { title: string, status: IdeaStatus, icon: any }) => {
const columnIdeas = ideas.filter(i => i.status === status); const columnIdeas = ideas.filter(i => i.status === status);
return (
<div
className="flex-1 bg-theme-bg/50 rounded-xl border border-theme-border flex flex-col h-full overflow-hidden transition-colors hover:border-blue-300"
onDragOver={handleDragOver}
onDrop={(e) => handleDrop(e, status)}
onDoubleClick={() => openQuickAdd(status)}
title="Double-cliquez dans le vide pour ajouter une carte ici"
>
{/* Column Header */}
<div className={`p-4 border-b border-theme-border flex justify-between items-center transition-colors duration-300 ${status === 'todo' ? 'bg-theme-bg' :
status === 'progress' ? 'bg-indigo-500/10' :
'bg-green-500/10'
}`}>
<div className="flex items-center gap-2 font-bold text-theme-text">
<Icon size={18} />
{title}
</div>
<div className="flex items-center gap-2">
<button
onClick={(e) => { e.stopPropagation(); openQuickAdd(status); }}
className="p-1 hover:bg-theme-panel rounded-full text-theme-muted hover:text-blue-600 transition-colors"
>
<Plus size={16} />
</button>
<span className="text-xs font-semibold bg-theme-panel px-2 py-1 rounded-full border border-theme-border text-theme-muted">
{columnIdeas.length}
</span>
</div>
</div>
{/* Column Body */}
<div className="flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar">
{columnIdeas.map(idea => {
const truncatedDesc = idea.description.length > 300
? idea.description.substring(0, 300) + '...'
: idea.description;
return (
<div
key={idea.id}
draggable
onDragStart={(e) => handleDragStart(e, idea.id)}
onDoubleClick={(e) => {
e.stopPropagation(); // Prevent column double-click
openEdit(idea);
}}
className="bg-theme-panel p-3 rounded-lg shadow-sm border border-theme-border cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200"
>
<div className="flex justify-between items-start mb-2">
<span className={`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${CATEGORIES[idea.category].color}`}>
{CATEGORIES[idea.category].label}
</span>
<div className="flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity">
<button
onClick={(e) => { e.stopPropagation(); openEdit(idea); }}
className="text-slate-300 hover:text-blue-500"
>
<Edit3 size={14} />
</button>
<button
onClick={(e) => { e.stopPropagation(); handleDelete(idea.id); }}
className="text-slate-300 hover:text-red-500"
>
<Trash2 size={14} />
</button>
</div>
</div>
{/* CARD CONTENT */}
<div className="mb-2">
<h4 className="font-bold text-theme-text text-sm mb-1 leading-tight">{idea.title}</h4>
{idea.description && (
<p className="text-xs text-theme-muted line-clamp-3 leading-relaxed" title={idea.description.length > 300 ? "Description tronquée (voir détail)" : undefined}>
{truncatedDesc}
</p>
)}
</div>
<div className="flex justify-between items-center text-xs text-theme-muted border-t border-theme-border pt-2 mt-2 transition-colors duration-300">
<span className="flex items-center gap-1">
<Clock size={10} /> {new Date(idea.createdAt).toLocaleDateString()}
</span>
<GripVertical size={14} className="opacity-20" />
</div>
</div>
);
})}
{columnIdeas.length === 0 && (
<div className="h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1">
<span className="mb-2">Vide</span>
<span className="text-xs opacity-70">Double-cliquez pour ajouter</span>
</div>
)}
</div>
</div>
);
};
return ( return (
<div <div className="flex flex-col h-full bg-theme-bg p-6 gap-6 relative transition-colors duration-300 -m-8">
className="flex-1 bg-[#eef2ff] rounded-xl border border-indigo-100 flex flex-col h-full overflow-hidden transition-colors hover:border-blue-200"
onDragOver={handleDragOver}
onDrop={(e) => handleDrop(e, status)}
onDoubleClick={() => openQuickAdd(status)}
title="Double-cliquez dans le vide pour ajouter une carte ici"
>
{/* Column Header */}
<div className={`p-4 border-b border-indigo-200 flex justify-between items-center ${
status === 'todo' ? 'bg-[#eef2ff]' :
status === 'progress' ? 'bg-indigo-50' :
'bg-green-50'
}`}>
<div className="flex items-center gap-2 font-bold text-slate-700">
<Icon size={18} />
{title}
</div>
<div className="flex items-center gap-2">
<button
onClick={(e) => { e.stopPropagation(); openQuickAdd(status); }}
className="p-1 hover:bg-white rounded-full text-slate-400 hover:text-blue-600 transition-colors"
>
<Plus size={16} />
</button>
<span className="text-xs font-semibold bg-white px-2 py-1 rounded-full border border-indigo-100 text-slate-500">
{columnIdeas.length}
</span>
</div>
</div>
{/* Column Body */} {/* Header & Add Form (Top Bar) */}
<div className="flex-1 overflow-y-auto p-3 space-y-3 custom-scrollbar"> <div className="flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-theme-panel p-4 rounded-xl border border-theme-border shadow-sm shrink-0 transition-colors duration-300">
{columnIdeas.map(idea => { <div>
const truncatedDesc = idea.description.length > 300 <h2 className="text-2xl font-bold text-theme-text flex items-center gap-2">
? idea.description.substring(0, 300) + '...' <Lightbulb className="text-yellow-500" /> Boîte à Idées
: idea.description; </h2>
<p className="text-theme-muted text-sm">Organisez vos tâches, idées de scènes et recherches.</p>
</div>
return ( <form onSubmit={handleAddIdea} className="flex-1 w-full md:w-auto max-w-2xl flex gap-2">
<div <select
key={idea.id} value={newIdeaCategory}
draggable onChange={(e) => setNewIdeaCategory(e.target.value as IdeaCategory)}
onDragStart={(e) => handleDragStart(e, idea.id)} className="bg-theme-bg border border-theme-border text-theme-text text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none transition-colors duration-300"
onDoubleClick={(e) => { >
e.stopPropagation(); // Prevent column double-click {Object.entries(CATEGORIES).map(([key, val]) => (
openEdit(idea); <option key={key} value={key}>{val.label}</option>
}} ))}
className="bg-white p-3 rounded-lg shadow-sm border border-slate-200 cursor-grab active:cursor-grabbing hover:shadow-md hover:border-blue-300 transition-all group relative animate-in zoom-in-95 duration-200" </select>
> <input
<div className="flex justify-between items-start mb-2"> type="text"
<span className={`text-[10px] uppercase font-bold px-2 py-0.5 rounded-full flex items-center gap-1 ${CATEGORIES[idea.category].color}`}> value={newIdeaTitle}
{CATEGORIES[idea.category].label} onChange={(e) => setNewIdeaTitle(e.target.value)}
</span> placeholder="Titre de la nouvelle idée..."
<div className="flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity"> className="flex-1 bg-theme-bg border border-theme-border text-theme-text text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium transition-colors duration-300"
<button />
onClick={(e) => { e.stopPropagation(); openEdit(idea); }} <button
className="text-slate-300 hover:text-blue-500" type="submit"
> disabled={!newIdeaTitle.trim()}
<Edit3 size={14} /> className="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2"
>
<Plus size={18} />
</button>
</form>
</div>
{/* Kanban Board */}
<div className="flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0">
<Column title="Idées / À faire" status="todo" icon={Circle} />
<Column title="En cours" status="progress" icon={Clock} />
<Column title="Terminé" status="done" icon={CheckCircle} />
</div>
{/* EDIT / QUICK ADD MODAL */}
{editingItem && (
<div className="absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200">
<div className="bg-theme-panel rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%] transition-colors duration-300 border border-theme-border">
<div className="bg-theme-bg border-b border-theme-border p-4 flex justify-between items-center">
<h3 className="font-bold text-theme-text flex items-center gap-2">
{editingItem.id ? <Edit3 size={18} /> : <Plus size={18} />}
{editingItem.id ? 'Éditer la carte' : 'Ajouter une carte'}
</h3>
<button onClick={() => setEditingItem(null)} className="text-theme-muted hover:text-theme-text">
<X size={20} />
</button> </button>
<button </div>
onClick={(e) => { e.stopPropagation(); handleDelete(idea.id); }}
className="text-slate-300 hover:text-red-500" <div className="p-6 space-y-4 overflow-y-auto">
<div>
<label className="block text-xs font-bold text-theme-muted uppercase mb-1">Titre</label>
<input
type="text"
value={editingItem.title}
onChange={(e) => setEditingItem({ ...editingItem, title: e.target.value })}
className="w-full p-3 bg-theme-bg border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-theme-text transition-colors duration-300"
placeholder="Titre de la tâche ou de l'idée..."
autoFocus
/>
</div>
<div>
<label className="block text-xs font-bold text-theme-muted uppercase mb-1">Description</label>
<textarea
value={editingItem.description}
onChange={(e) => setEditingItem({ ...editingItem, description: e.target.value })}
maxLength={MAX_DESCRIPTION_LENGTH}
className="w-full p-3 bg-theme-bg border border-theme-border rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-theme-text leading-relaxed resize-none transition-colors duration-300"
placeholder="Détails, notes, liens..."
/>
<div className={`text-right text-xs mt-1 transition-colors ${(editingItem.description?.length || 0) >= MAX_DESCRIPTION_LENGTH ? 'text-red-500 font-bold' :
(editingItem.description?.length || 0) > MAX_DESCRIPTION_LENGTH * 0.9 ? 'text-orange-500' : 'text-slate-400'
}`}>
{editingItem.description?.length || 0} / {MAX_DESCRIPTION_LENGTH} caractères
</div>
</div>
<div className="grid grid-cols-2 gap-4">
<div>
<label className="block text-xs font-bold text-theme-muted uppercase mb-1">Catégorie</label>
<select
value={editingItem.category}
onChange={(e) => setEditingItem({ ...editingItem, category: e.target.value as IdeaCategory })}
className="w-full p-2 bg-theme-bg border border-theme-border rounded-lg text-theme-text text-sm outline-none focus:border-blue-500 transition-colors duration-300"
>
{Object.entries(CATEGORIES).map(([key, val]) => (
<option key={key} value={key}>{val.label}</option>
))}
</select>
</div>
<div>
<label className="block text-xs font-bold text-theme-muted uppercase mb-1">Statut</label>
<select
value={editingItem.status}
onChange={(e) => setEditingItem({ ...editingItem, status: e.target.value as IdeaStatus })}
className="w-full p-2 bg-theme-bg border border-theme-border rounded-lg text-theme-text text-sm outline-none focus:border-blue-500 transition-colors duration-300"
>
{Object.entries(STATUS_LABELS).map(([key, val]) => (
<option key={key} value={key}>{val}</option>
))}
</select>
</div>
</div>
</div>
<div className="p-4 border-t border-theme-border bg-theme-bg flex justify-end gap-2 shrink-0 transition-colors duration-300">
{editingItem.id && (
<button
onClick={() => handleDelete(editingItem.id!)}
className="mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2"
>
Supprimer
</button>
)}
<button
onClick={() => setEditingItem(null)}
className="px-4 py-2 text-theme-text hover:bg-theme-panel border border-transparent rounded-lg text-sm font-medium transition-colors duration-300"
> >
<Trash2 size={14} /> Annuler
</button>
<button
onClick={handleSaveEdit}
disabled={!editingItem.title?.trim()}
className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2"
>
<Save size={16} /> Enregistrer
</button> </button>
</div> </div>
</div> </div>
{/* CARD CONTENT */}
<div className="mb-2">
<h4 className="font-bold text-slate-800 text-sm mb-1 leading-tight">{idea.title}</h4>
{idea.description && (
<p className="text-xs text-slate-500 line-clamp-3 leading-relaxed" title={idea.description.length > 300 ? "Description tronquée (voir détail)" : undefined}>
{truncatedDesc}
</p>
)}
</div>
<div className="flex justify-between items-center text-xs text-slate-400 border-t border-slate-50 pt-2 mt-2">
<span className="flex items-center gap-1">
<Clock size={10} /> {new Date(idea.createdAt).toLocaleDateString()}
</span>
<GripVertical size={14} className="opacity-20" />
</div>
</div> </div>
); )}
})}
{columnIdeas.length === 0 && (
<div className="h-full flex flex-col items-center justify-center text-slate-300 text-sm italic border-2 border-dashed border-indigo-200 rounded-lg m-1">
<span className="mb-2">Vide</span>
<span className="text-xs opacity-70">Double-cliquez pour ajouter</span>
</div>
)}
</div> </div>
</div>
); );
};
return (
<div className="flex flex-col h-full bg-white p-6 gap-6 relative">
{/* Header & Add Form (Top Bar) */}
<div className="flex flex-col md:flex-row justify-between items-start md:items-center gap-4 bg-white p-4 rounded-xl border border-slate-200 shadow-sm shrink-0">
<div>
<h2 className="text-2xl font-bold text-slate-800 flex items-center gap-2">
<Lightbulb className="text-yellow-500" /> Boîte à Idées
</h2>
<p className="text-slate-500 text-sm">Organisez vos tâches, idées de scènes et recherches.</p>
</div>
<form onSubmit={handleAddIdea} className="flex-1 w-full md:w-auto max-w-2xl flex gap-2">
<select
value={newIdeaCategory}
onChange={(e) => setNewIdeaCategory(e.target.value as IdeaCategory)}
className="bg-[#eef2ff] border border-indigo-200 text-slate-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none"
>
{Object.entries(CATEGORIES).map(([key, val]) => (
<option key={key} value={key}>{val.label}</option>
))}
</select>
<input
type="text"
value={newIdeaTitle}
onChange={(e) => setNewIdeaTitle(e.target.value)}
placeholder="Titre de la nouvelle idée..."
className="flex-1 bg-[#eef2ff] border border-indigo-200 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 outline-none font-medium"
/>
<button
type="submit"
disabled={!newIdeaTitle.trim()}
className="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 disabled:opacity-50 transition-colors flex items-center gap-2"
>
<Plus size={18} />
</button>
</form>
</div>
{/* Kanban Board */}
<div className="flex-1 grid grid-cols-1 md:grid-cols-3 gap-6 min-h-0">
<Column title="Idées / À faire" status="todo" icon={Circle} />
<Column title="En cours" status="progress" icon={Clock} />
<Column title="Terminé" status="done" icon={CheckCircle} />
</div>
{/* EDIT / QUICK ADD MODAL */}
{editingItem && (
<div className="absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4 animate-in fade-in duration-200">
<div className="bg-white rounded-xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col max-h-[90%]">
<div className="bg-[#eef2ff] border-b border-indigo-100 p-4 flex justify-between items-center">
<h3 className="font-bold text-slate-700 flex items-center gap-2">
{editingItem.id ? <Edit3 size={18}/> : <Plus size={18}/>}
{editingItem.id ? 'Éditer la carte' : 'Ajouter une carte'}
</h3>
<button onClick={() => setEditingItem(null)} className="text-slate-400 hover:text-slate-600">
<X size={20} />
</button>
</div>
<div className="p-6 space-y-4 overflow-y-auto">
<div>
<label className="block text-xs font-bold text-slate-500 uppercase mb-1">Titre</label>
<input
type="text"
value={editingItem.title}
onChange={(e) => setEditingItem({...editingItem, title: e.target.value})}
className="w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none font-bold text-slate-800"
placeholder="Titre de la tâche ou de l'idée..."
autoFocus
/>
</div>
<div>
<label className="block text-xs font-bold text-slate-500 uppercase mb-1">Description</label>
<textarea
value={editingItem.description}
onChange={(e) => setEditingItem({...editingItem, description: e.target.value})}
maxLength={MAX_DESCRIPTION_LENGTH}
className="w-full p-3 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none min-h-[120px] text-sm text-slate-600 leading-relaxed resize-none"
placeholder="Détails, notes, liens..."
/>
<div className={`text-right text-xs mt-1 transition-colors ${
(editingItem.description?.length || 0) >= MAX_DESCRIPTION_LENGTH ? 'text-red-500 font-bold' :
(editingItem.description?.length || 0) > MAX_DESCRIPTION_LENGTH * 0.9 ? 'text-orange-500' : 'text-slate-400'
}`}>
{editingItem.description?.length || 0} / {MAX_DESCRIPTION_LENGTH} caractères
</div>
</div>
<div className="grid grid-cols-2 gap-4">
<div>
<label className="block text-xs font-bold text-slate-500 uppercase mb-1">Catégorie</label>
<select
value={editingItem.category}
onChange={(e) => setEditingItem({...editingItem, category: e.target.value as IdeaCategory})}
className="w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500"
>
{Object.entries(CATEGORIES).map(([key, val]) => (
<option key={key} value={key}>{val.label}</option>
))}
</select>
</div>
<div>
<label className="block text-xs font-bold text-slate-500 uppercase mb-1">Statut</label>
<select
value={editingItem.status}
onChange={(e) => setEditingItem({...editingItem, status: e.target.value as IdeaStatus})}
className="w-full p-2 bg-white border border-slate-300 rounded-lg text-sm outline-none focus:border-blue-500"
>
{Object.entries(STATUS_LABELS).map(([key, val]) => (
<option key={key} value={key}>{val}</option>
))}
</select>
</div>
</div>
</div>
<div className="p-4 border-t border-slate-200 bg-[#eef2ff] flex justify-end gap-2 shrink-0">
{editingItem.id && (
<button
onClick={() => handleDelete(editingItem.id!)}
className="mr-auto text-red-500 hover:text-red-700 text-sm font-medium px-3 py-2"
>
Supprimer
</button>
)}
<button
onClick={() => setEditingItem(null)}
className="px-4 py-2 text-slate-600 hover:bg-slate-200 rounded-lg text-sm font-medium"
>
Annuler
</button>
<button
onClick={handleSaveEdit}
disabled={!editingItem.title?.trim()}
className="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-medium shadow-sm disabled:opacity-50 flex items-center gap-2"
>
<Save size={16} /> Enregistrer
</button>
</div>
</div>
</div>
)}
</div>
);
}; };
export default IdeaBoard; export default IdeaBoard;

View File

@@ -315,7 +315,7 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
const hasSelection = savedRange.current && !savedRange.current.collapsed; const hasSelection = savedRange.current && !savedRange.current.collapsed;
return ( return (
<div className="flex flex-col h-full bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden relative"> <div className="flex flex-col h-full bg-theme-panel rounded-lg shadow-sm border border-theme-border overflow-hidden relative transition-colors duration-300">
<style>{` <style>{`
.editor-content:empty::before { .editor-content:empty::before {
content: attr(data-placeholder); content: attr(data-placeholder);
@@ -326,7 +326,7 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
`}</style> `}</style>
{/* Toolbar */} {/* Toolbar */}
<div className="flex items-center gap-1 p-2 bg-slate-50 border-b border-slate-200 flex-wrap relative z-20 shadow-sm"> <div className="flex items-center gap-1 p-2 bg-theme-bg border-b border-theme-border flex-wrap relative z-20 shadow-sm transition-colors duration-300">
<ToolbarButton icon={Bold} cmd="bold" label="Gras" /> <ToolbarButton icon={Bold} cmd="bold" label="Gras" />
<ToolbarButton icon={Italic} cmd="italic" label="Italique" /> <ToolbarButton icon={Italic} cmd="italic" label="Italique" />
<ToolbarButton icon={Underline} cmd="underline" label="Souligné" /> <ToolbarButton icon={Underline} cmd="underline" label="Souligné" />
@@ -360,7 +360,7 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
{/* Main Container - Scrollable Area */} {/* Main Container - Scrollable Area */}
<div <div
className="flex-1 overflow-y-auto relative bg-slate-100" className="flex-1 overflow-y-auto relative bg-theme-bg/50 transition-colors duration-300"
ref={scrollContainerRef} ref={scrollContainerRef}
> >
<div className="flex justify-center relative min-h-full py-8"> <div className="flex justify-center relative min-h-full py-8">
@@ -370,7 +370,7 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
ref={contentRef} ref={contentRef}
contentEditable contentEditable
suppressContentEditableWarning suppressContentEditableWarning
className="bg-white shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-slate-900 editor-content" className="bg-theme-editor-bg shadow-sm w-[800px] min-h-[1000px] p-12 outline-none font-serif text-lg leading-relaxed text-theme-editor-text editor-content transition-colors duration-300"
onInput={handleInput} onInput={handleInput}
onBlur={() => { setIsFocused(false); saveSelection(); }} onBlur={() => { setIsFocused(false); saveSelection(); }}
onFocus={() => setIsFocused(true)} onFocus={() => setIsFocused(true)}
@@ -422,8 +422,8 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
<Layers size={14} className="text-indigo-500" /> <Layers size={14} className="text-indigo-500" />
)} )}
<span className={`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${latest.type.includes('Correction') ? 'bg-green-100 text-green-700' : <span className={`text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide ${latest.type.includes('Correction') ? 'bg-green-100 text-green-700' :
latest.type.includes('Insertion') ? 'bg-blue-100 text-blue-700' : latest.type.includes('Insertion') ? 'bg-blue-100 text-blue-700' :
'bg-purple-100 text-purple-700' 'bg-purple-100 text-purple-700'
}`}> }`}>
{latest.type} {latest.type}
</span> </span>

View File

@@ -609,19 +609,19 @@ const StoryWorkflow: React.FC<StoryWorkflowProps> = ({ data, onUpdate, entities,
}; };
return ( return (
<div className="h-full flex flex-col overflow-hidden bg-[#eef2ff] relative"> <div className="h-full flex flex-col overflow-hidden bg-theme-bg relative transition-colors duration-300">
<div className="h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0"> <div className="h-12 bg-theme-panel border-b border-theme-border flex items-center justify-between px-4 z-10 shadow-sm shrink-0 transition-colors duration-300">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<button onClick={handleAddNodeCenter} className="flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100"> <button onClick={handleAddNodeCenter} className="flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100">
<Plus size={14} /> AJOUTER NŒUD <Plus size={14} /> AJOUTER NŒUD
</button> </button>
<div className="w-px h-6 bg-slate-100 mx-2" /> <div className="w-px h-6 bg-theme-border mx-2" />
<div className="text-[10px] uppercase font-bold text-slate-400 tracking-wider"> <div className="text-[10px] uppercase font-bold text-theme-muted tracking-wider">
{selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'} {selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'}
</div> </div>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<button onClick={handleDeleteSelected} disabled={selectedNodeIds.size === 0} className="p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors" title="Supprimer"> <button onClick={handleDeleteSelected} disabled={selectedNodeIds.size === 0} className="p-2 text-red-500 hover:bg-red-500/10 rounded-lg disabled:opacity-30 transition-colors" title="Supprimer">
<Trash2 size={16} /> <Trash2 size={16} />
</button> </button>
</div> </div>
@@ -629,13 +629,13 @@ const StoryWorkflow: React.FC<StoryWorkflowProps> = ({ data, onUpdate, entities,
<div <div
ref={containerRef} ref={containerRef}
className="flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]" className="flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-theme-bg canvas-grid transition-colors duration-300"
onMouseDown={handleCanvasMouseDown} onMouseDown={handleCanvasMouseDown}
onMouseMove={handleMouseMove} onMouseMove={handleMouseMove}
onMouseUp={handleMouseUp} onMouseUp={handleMouseUp}
onDoubleClick={handleCanvasDoubleClick} onDoubleClick={handleCanvasDoubleClick}
style={{ style={{
backgroundImage: 'radial-gradient(#d1d5db 1px, transparent 1px)', backgroundImage: 'radial-gradient(var(--theme-border) 1px, transparent 1px)',
backgroundSize: '24px 24px' backgroundSize: '24px 24px'
}} }}
> >
@@ -649,7 +649,7 @@ const StoryWorkflow: React.FC<StoryWorkflowProps> = ({ data, onUpdate, entities,
const endX = target.x + CARD_WIDTH / 2; const endX = target.x + CARD_WIDTH / 2;
const endY = target.y + CARD_HEIGHT / 2; const endY = target.y + CARD_HEIGHT / 2;
return ( return (
<line key={conn.id} x1={startX} y1={startY} x2={endX} y2={endY} stroke="#cbd5e1" strokeWidth="2" markerEnd="url(#arrowhead)" /> <line key={conn.id} x1={startX} y1={startY} x2={endX} y2={endY} stroke="var(--theme-border)" strokeWidth="2" markerEnd="url(#arrowhead)" />
); );
})} })}
{connectingNodeId && ( {connectingNodeId && (
@@ -662,7 +662,7 @@ const StoryWorkflow: React.FC<StoryWorkflowProps> = ({ data, onUpdate, entities,
)} )}
<defs> <defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="28" refY="3.5" orient="auto"> <marker id="arrowhead" markerWidth="10" markerHeight="7" refX="28" refY="3.5" orient="auto">
<path d="M0,0 L0,7 L10,3.5 Z" fill="#cbd5e1" /> <path d="M0,0 L0,7 L10,3.5 Z" fill="var(--theme-border)" />
</marker> </marker>
<marker id="arrowhead-blue" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto"> <marker id="arrowhead-blue" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<path d="M0,0 L0,7 L10,3.5 Z" fill="#6366f1" /> <path d="M0,0 L0,7 L10,3.5 Z" fill="#6366f1" />

View File

@@ -86,15 +86,26 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
alert("Profil mis à jour !"); alert("Profil mis à jour !");
}; };
const isDark = formData.theme === 'dark';
const isSepia = formData.theme === 'sepia';
const themeOuterClass = isDark ? 'bg-slate-900 text-white' : isSepia ? 'bg-[#eaddc4] text-[#433422]' : 'bg-slate-50 text-slate-900';
const themeInnerClass = isDark ? 'bg-slate-800 border-slate-700' : isSepia ? 'bg-[#f4ecd8] border-[#dfcdae]' : 'bg-white border-slate-200';
const themeTextHeading = isDark ? 'text-white' : isSepia ? 'text-[#332616]' : 'text-slate-900';
const themeTextMuted = isDark ? 'text-slate-400' : isSepia ? 'text-[#735e44]' : 'text-slate-500';
const themeInputBg = isDark ? 'bg-slate-900 border-slate-700 text-white' : isSepia ? 'bg-[#fbf8f1] border-[#eaddc4] text-[#433422]' : 'bg-slate-50 border-slate-200 text-slate-900';
const themeTabActive = isDark ? 'bg-white text-slate-900 shadow-lg' : isSepia ? 'bg-[#5c4731] text-white shadow-lg' : 'bg-slate-900 text-white shadow-lg';
const themeTabInactive = isDark ? 'text-slate-400 hover:bg-slate-800 hover:text-white' : isSepia ? 'text-[#735e44] hover:bg-[#eaddc4] hover:text-[#332616]' : 'text-slate-500 hover:bg-white hover:text-slate-900';
return ( return (
<div className="h-full bg-slate-50 overflow-y-auto p-8 font-sans"> <div className={`h-screen overflow-y-auto p-8 font-sans ${themeOuterClass}`}>
<div className="max-w-4xl mx-auto"> <div className="max-w-4xl mx-auto">
<div className="flex justify-between items-center mb-10"> <div className="flex justify-between items-center mb-10">
<div> <div>
<h1 className="text-3xl font-black text-slate-900">Mon Compte</h1> <h1 className={`text-3xl font-black ${themeTextHeading}`}>Mon Compte</h1>
<p className="text-slate-500">Gérez vos informations personnelles et préférences d'écriture.</p> <p className={themeTextMuted}>Gérez vos informations personnelles et préférences d'écriture.</p>
</div> </div>
<button onClick={onBack} className="bg-white border border-slate-200 px-4 py-2 rounded-lg text-sm font-bold hover:bg-slate-50 transition-colors">Fermer</button> <button onClick={onBack} className={`${themeInnerClass} px-4 py-2 rounded-lg text-sm font-bold opacity-80 hover:opacity-100 transition-opacity`}>Fermer</button>
</div> </div>
<div className="flex flex-col md:flex-row gap-8"> <div className="flex flex-col md:flex-row gap-8">
@@ -102,29 +113,29 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<div className="w-full md:w-64 space-y-1"> <div className="w-full md:w-64 space-y-1">
<button <button
onClick={() => setActiveTab('profile')} onClick={() => setActiveTab('profile')}
className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'profile' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`} className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'profile' ? themeTabActive : themeTabInactive}`}
> >
<User size={18} /> Profil Public <User size={18} /> Profil Public
</button> </button>
<button <button
onClick={() => setActiveTab('preferences')} onClick={() => setActiveTab('preferences')}
className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'preferences' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`} className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'preferences' ? themeTabActive : themeTabInactive}`}
> >
<Layout size={18} /> Interface & Écriture <Layout size={18} /> Interface & Écriture
</button> </button>
<button <button
onClick={() => setActiveTab('account')} onClick={() => setActiveTab('account')}
className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'account' ? 'bg-slate-900 text-white shadow-lg' : 'text-slate-500 hover:bg-white hover:text-slate-900'}`} className={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-bold transition-all ${activeTab === 'account' ? themeTabActive : themeTabInactive}`}
> >
<Shield size={18} /> Sécurité & Plan <Shield size={18} /> Sécurité & Plan
</button> </button>
</div> </div>
{/* Main Content Pane */} {/* Main Content Pane */}
<div className="flex-1 bg-white rounded-2xl shadow-sm border border-slate-200 p-8"> <div className={`flex-1 rounded-2xl shadow-sm border p-8 ${themeInnerClass}`}>
{activeTab === 'profile' && ( {activeTab === 'profile' && (
<div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300"> <div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300">
<div className="flex items-center gap-6 pb-8 border-b border-slate-100"> <div className={`flex items-center gap-6 pb-8 border-b ${isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}>
<div className="relative group cursor-pointer" onClick={() => fileInputRef.current?.click()}> <div className="relative group cursor-pointer" onClick={() => fileInputRef.current?.click()}>
<input <input
type="file" type="file"
@@ -133,14 +144,14 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
accept="image/*" accept="image/*"
className="hidden" className="hidden"
/> />
<img src={formData.avatar || 'https://via.placeholder.com/150'} className="w-24 h-24 rounded-full object-cover border-4 border-slate-50 shadow-md" alt="Avatar" /> <img src={formData.avatar || 'https://via.placeholder.com/150'} className={`w-24 h-24 rounded-full object-cover border-4 shadow-md ${isDark ? 'border-slate-800' : isSepia ? 'border-[#f4ecd8]' : 'border-slate-50'}`} alt="Avatar" />
<div className="absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" title="Changer d'avatar"> <div className="absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" title="Changer d'avatar">
<Camera size={20} /> <Camera size={20} />
</div> </div>
</div> </div>
<div> <div>
<h3 className="font-bold text-slate-900 text-lg">{user.name}</h3> <h3 className={`font-bold text-lg ${themeTextHeading}`}>{user.name}</h3>
<p className="text-slate-400 text-sm">Membre depuis Janvier 2024</p> <p className={`text-sm ${themeTextMuted}`}>Membre depuis {new Date(user.subscription.startDate).toLocaleDateString('fr-FR', { month: 'long', year: 'numeric' })}</p>
<div className="mt-2 flex gap-4"> <div className="mt-2 flex gap-4">
<div className="flex items-center gap-1.5 text-xs font-bold text-orange-500"> <div className="flex items-center gap-1.5 text-xs font-bold text-orange-500">
<Flame size={14} fill="currentColor" /> {user.stats.writingStreak} jours de streak <Flame size={14} fill="currentColor" /> {user.stats.writingStreak} jours de streak
@@ -151,21 +162,21 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<div className="grid grid-cols-1 gap-6"> <div className="grid grid-cols-1 gap-6">
<div className="space-y-1"> <div className="space-y-1">
<label className="text-xs font-black text-slate-400 uppercase tracking-widest">Nom affiché</label> <label className={`text-xs font-black uppercase tracking-widest ${themeTextMuted}`}>Nom affiché</label>
<input <input
type="text" type="text"
value={formData.name} value={formData.name}
onChange={(e) => setFormData({ ...formData, name: e.target.value })} onChange={(e) => setFormData({ ...formData, name: e.target.value })}
className="w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500" className={`w-full p-3 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 ${themeInputBg}`}
/> />
</div> </div>
<div className="space-y-1"> <div className="space-y-1">
<label className="text-xs font-black text-slate-400 uppercase tracking-widest">Bio / Citation inspirante</label> <label className={`text-xs font-black uppercase tracking-widest ${themeTextMuted}`}>Bio / Citation inspirante</label>
<textarea <textarea
value={formData.bio} value={formData.bio}
onChange={(e) => setFormData({ ...formData, bio: e.target.value })} onChange={(e) => setFormData({ ...formData, bio: e.target.value })}
className="w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none" className={`w-full p-3 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 h-24 resize-none ${themeInputBg}`}
placeholder="Partagez quelques mots sur votre style..." placeholder="Partagez quelques mots sur votre style..."
/> />
</div> </div>
@@ -177,7 +188,7 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300"> <div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300">
<div className="grid grid-cols-1 gap-8"> <div className="grid grid-cols-1 gap-8">
<div className="space-y-3"> <div className="space-y-3">
<label className="text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2"> <label className={`text-xs font-black uppercase tracking-widest flex items-center gap-2 ${themeTextMuted}`}>
<Target size={14} /> Objectif quotidien de mots <Target size={14} /> Objectif quotidien de mots
</label> </label>
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
@@ -192,7 +203,7 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
</div> </div>
<div className="space-y-3"> <div className="space-y-3">
<label className="text-xs font-black text-slate-400 uppercase tracking-widest flex items-center gap-2"> <label className={`text-xs font-black uppercase tracking-widest flex items-center gap-2 ${themeTextMuted}`}>
Thème de l'éditeur Thème de l'éditeur
</label> </label>
<div className="grid grid-cols-3 gap-3"> <div className="grid grid-cols-3 gap-3">
@@ -200,10 +211,10 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<button <button
key={t} key={t}
onClick={() => setFormData({ ...formData, theme: t as any })} onClick={() => setFormData({ ...formData, theme: t as any })}
className={`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${formData.theme === t ? 'border-blue-500 bg-blue-50 text-blue-700' : 'border-slate-100 hover:border-slate-200 text-slate-500'}`} className={`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${formData.theme === t ? 'border-blue-500 bg-blue-50 text-blue-700' : isDark ? 'border-slate-700 hover:border-slate-600' : isSepia ? 'border-[#dfcdae] hover:border-[#cfbd9e]' : 'border-slate-100 hover:border-slate-200'}`}
> >
<div className={`w-8 h-8 rounded-full border border-slate-200 ${t === 'light' ? 'bg-white' : t === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-slate-900'}`} /> <div className={`w-8 h-8 rounded-full border border-slate-200 ${t === 'light' ? 'bg-white' : t === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-slate-900'}`} />
<span className="text-[10px] font-bold uppercase">{t}</span> <span className={`text-[10px] font-bold uppercase ${formData.theme !== t ? themeTextMuted : ''}`}>{t}</span>
</button> </button>
))} ))}
</div> </div>
@@ -217,18 +228,18 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<div className="p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center"> <div className="p-4 bg-blue-50 border border-blue-100 rounded-xl flex justify-between items-center">
<div> <div>
<h4 className="font-bold text-blue-900">Plan {(user.subscription.planDetails?.displayName || user.subscription.plan).toUpperCase()}</h4> <h4 className="font-bold text-blue-900">Plan {(user.subscription.planDetails?.displayName || user.subscription.plan).toUpperCase()}</h4>
<p className="text-xs text-blue-700">Prochaine facturation le 15 Mars 2024</p> <p className="text-xs text-blue-700">Abonnement actif</p>
</div> </div>
<button className="bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200">Gérer</button> <button className="bg-blue-600 text-white px-4 py-2 rounded-lg text-xs font-bold hover:bg-blue-700 shadow-md shadow-blue-200">Gérer</button>
</div> </div>
<div className="space-y-1"> <div className="space-y-1">
<label className="text-xs font-black text-slate-400 uppercase tracking-widest">Email du compte</label> <label className={`text-xs font-black uppercase tracking-widest ${themeTextMuted}`}>Email du compte</label>
<input <input
type="email" type="email"
value={formData.email} value={formData.email}
onChange={(e) => setFormData({ ...formData, email: e.target.value })} onChange={(e) => setFormData({ ...formData, email: e.target.value })}
className="w-full p-3 bg-slate-50 border border-slate-200 rounded-xl outline-none focus:ring-2 focus:ring-blue-500" className={`w-full p-3 rounded-xl outline-none focus:ring-2 focus:ring-blue-500 ${themeInputBg}`}
/> />
</div> </div>
@@ -238,10 +249,10 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
</div> </div>
)} )}
<div className="mt-12 pt-8 border-t border-slate-100 flex justify-end"> <div className={`mt-12 pt-8 border-t flex justify-end ${isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}>
<button <button
onClick={handleSave} onClick={handleSave}
className="bg-slate-900 text-white px-8 py-3 rounded-xl font-bold flex items-center gap-2 hover:bg-blue-600 transition-all shadow-xl hover:shadow-blue-200" className={`px-8 py-3 rounded-xl font-bold flex items-center gap-2 transition-all shadow-xl hover:shadow-blue-200 ${isDark ? 'bg-white text-slate-900 hover:bg-blue-500 hover:text-white' : isSepia ? 'bg-[#5c4731] text-white hover:bg-blue-600' : 'bg-slate-900 text-white hover:bg-blue-600'}`}
> >
<Save size={18} /> Sauvegarder les modifications <Save size={18} /> Sauvegarder les modifications
</button> </button>

View File

@@ -204,22 +204,22 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
const attrs = tempEntity.attributes; const attrs = tempEntity.attributes;
return ( return (
<div className="space-y-8 border-t border-slate-100 pt-6 mt-4"> <div className="space-y-8 border-t border-theme-border pt-6 mt-4">
{/* SECTION 1: ROLE & ARCHETYPE */} {/* SECTION 1: ROLE & ARCHETYPE */}
<div className="bg-[#eef2ff] p-4 rounded-lg border border-indigo-100"> <div className="bg-theme-bg p-4 rounded-lg border border-theme-border">
<h3 className="text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2"> <h3 className="text-sm font-bold text-theme-text uppercase mb-4 flex items-center gap-2">
<User size={16} /> Identité Narrative <User size={16} /> Identité Narrative
</h3> </h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6"> <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-2">Archétype</label> <label className="block text-xs font-semibold text-theme-muted mb-2">Archétype</label>
<input <input
type="text" type="text"
list="archetype-suggestions" list="archetype-suggestions"
value={attrs.archetype} value={attrs.archetype}
onChange={(e) => updateAttribute('archetype', e.target.value)} onChange={(e) => updateAttribute('archetype', e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-blue-500" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-blue-500"
placeholder="Ex: Le Héros, Le Sage..." placeholder="Ex: Le Héros, Le Sage..."
/> />
<datalist id="archetype-suggestions"> <datalist id="archetype-suggestions">
@@ -227,7 +227,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</datalist> </datalist>
</div> </div>
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-2">Rôle dans l'histoire</label> <label className="block text-xs font-semibold text-theme-muted mb-2">Rôle dans l'histoire</label>
<div className="flex gap-2 flex-wrap"> <div className="flex gap-2 flex-wrap">
{[ {[
{ val: 'protagonist', label: 'Protagoniste' }, { val: 'protagonist', label: 'Protagoniste' },
@@ -235,7 +235,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
{ val: 'support', label: 'Secondaire' }, { val: 'support', label: 'Secondaire' },
{ val: 'extra', label: 'Figurant' } { val: 'extra', label: 'Figurant' }
].map(opt => ( ].map(opt => (
<label key={opt.val} className={`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${attrs.role === opt.val ? 'bg-indigo-100 border-indigo-300 text-indigo-700 font-bold' : 'bg-[#eef2ff] border-slate-200 text-slate-600 hover:bg-slate-100'}`}> <label key={opt.val} className={`cursor-pointer px-3 py-1.5 rounded text-xs border transition-colors ${attrs.role === opt.val ? 'bg-indigo-100 border-indigo-300 text-indigo-700 font-bold' : 'bg-theme-bg border-theme-border text-theme-muted hover:bg-theme-border'}`}>
<input <input
type="radio" type="radio"
name="role" name="role"
@@ -253,15 +253,15 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
{/* SECTION 2: PHYSIQUE */} {/* SECTION 2: PHYSIQUE */}
<div className="bg-[#eef2ff] p-4 rounded-lg border border-indigo-100"> <div className="bg-theme-bg p-4 rounded-lg border border-theme-border">
<h3 className="text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2"> <h3 className="text-sm font-bold text-theme-text uppercase mb-4 flex items-center gap-2">
<Ruler size={16} /> Apparence Physique <Ruler size={16} /> Apparence Physique
</h3> </h3>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6"> <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="space-y-6"> <div className="space-y-6">
<div> <div>
<div className="flex justify-between text-xs mb-1"> <div className="flex justify-between text-xs mb-1">
<label className="font-semibold text-slate-600">Âge (ans)</label> <label className="font-semibold text-theme-muted">Âge (ans)</label>
</div> </div>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<input <input
@@ -274,14 +274,14 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
type="number" type="number"
value={attrs.age} value={attrs.age}
onChange={(e) => updateAttribute('age', parseInt(e.target.value))} onChange={(e) => updateAttribute('age', parseInt(e.target.value))}
className="w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none" className="w-20 p-1 text-right text-sm border border-theme-border rounded font-mono text-indigo-700 bg-theme-bg focus:border-indigo-500 outline-none"
/> />
</div> </div>
</div> </div>
<div> <div>
<div className="flex justify-between text-xs mb-1"> <div className="flex justify-between text-xs mb-1">
<label className="font-semibold text-slate-600">Taille (cm)</label> <label className="font-semibold text-theme-muted">Taille (cm)</label>
</div> </div>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<input <input
@@ -294,7 +294,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
type="number" type="number"
value={attrs.height} value={attrs.height}
onChange={(e) => updateAttribute('height', parseInt(e.target.value))} onChange={(e) => updateAttribute('height', parseInt(e.target.value))}
className="w-20 p-1 text-right text-sm border border-slate-300 rounded font-mono text-indigo-700 bg-[#eef2ff] focus:border-indigo-500 outline-none" className="w-20 p-1 text-right text-sm border border-theme-border rounded font-mono text-indigo-700 bg-theme-bg focus:border-indigo-500 outline-none"
/> />
</div> </div>
</div> </div>
@@ -303,34 +303,34 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<div className="space-y-4"> <div className="space-y-4">
<div className="grid grid-cols-2 gap-4"> <div className="grid grid-cols-2 gap-4">
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-1">Cheveux</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Cheveux</label>
<select <select
value={attrs.hair} value={attrs.hair}
onChange={(e) => updateAttribute('hair', e.target.value)} onChange={(e) => updateAttribute('hair', e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm"
> >
{HAIR_COLORS.map(c => <option key={c} value={c}>{c}</option>)} {HAIR_COLORS.map(c => <option key={c} value={c}>{c}</option>)}
</select> </select>
</div> </div>
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-1">Yeux</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Yeux</label>
<select <select
value={attrs.eyes} value={attrs.eyes}
onChange={(e) => updateAttribute('eyes', e.target.value)} onChange={(e) => updateAttribute('eyes', e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm"
> >
{EYE_COLORS.map(c => <option key={c} value={c}>{c}</option>)} {EYE_COLORS.map(c => <option key={c} value={c}>{c}</option>)}
</select> </select>
</div> </div>
</div> </div>
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-1">Signe distinctif</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Signe distinctif</label>
<input <input
type="text" type="text"
value={attrs.physicalQuirk} value={attrs.physicalQuirk}
onChange={(e) => updateAttribute('physicalQuirk', e.target.value)} onChange={(e) => updateAttribute('physicalQuirk', e.target.value)}
placeholder="Cicatrice, tatouage..." placeholder="Cicatrice, tatouage..."
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-indigo-400"
/> />
</div> </div>
</div> </div>
@@ -338,15 +338,15 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
{/* SECTION 3: PSYCHOLOGIE */} {/* SECTION 3: PSYCHOLOGIE */}
<div className="bg-[#eef2ff] p-4 rounded-lg border border-indigo-100"> <div className="bg-theme-bg p-4 rounded-lg border border-theme-border">
<h3 className="text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2"> <h3 className="text-sm font-bold text-theme-text uppercase mb-4 flex items-center gap-2">
<Brain size={16} /> Psychologie & Comportement <Brain size={16} /> Psychologie & Comportement
</h3> </h3>
<div className="space-y-6"> <div className="space-y-6">
<div className="space-y-4 px-2"> <div className="space-y-4 px-2">
<div className="relative pt-1"> <div className="relative pt-1">
<div className="flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1"> <div className="flex justify-between text-[10px] uppercase font-bold text-theme-muted mb-1">
<span>Introverti</span> <span>Introverti</span>
<span>Extraverti</span> <span>Extraverti</span>
</div> </div>
@@ -358,7 +358,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
/> />
</div> </div>
<div className="relative pt-1"> <div className="relative pt-1">
<div className="flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1"> <div className="flex justify-between text-[10px] uppercase font-bold text-theme-muted mb-1">
<span>Émotionnel</span> <span>Émotionnel</span>
<span>Rationnel</span> <span>Rationnel</span>
</div> </div>
@@ -370,7 +370,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
/> />
</div> </div>
<div className="relative pt-1"> <div className="relative pt-1">
<div className="flex justify-between text-[10px] uppercase font-bold text-slate-500 mb-1"> <div className="flex justify-between text-[10px] uppercase font-bold text-theme-muted mb-1">
<span>Chaotique</span> <span>Chaotique</span>
<span>Loyal</span> <span>Loyal</span>
</div> </div>
@@ -383,14 +383,14 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
</div> </div>
<div className="border-t border-slate-200 pt-4"> <div className="border-t border-theme-border pt-4">
<label className="block text-xs font-semibold text-slate-500 mb-1">Toc ou habitude comportementale</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Toc ou habitude comportementale</label>
<input <input
type="text" type="text"
value={attrs.behavioralQuirk} value={attrs.behavioralQuirk}
onChange={(e) => updateAttribute('behavioralQuirk', e.target.value)} onChange={(e) => updateAttribute('behavioralQuirk', e.target.value)}
placeholder="Joue avec sa bague, bégaie quand il ment..." placeholder="Joue avec sa bague, bégaie quand il ment..."
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-indigo-400"
/> />
</div> </div>
</div> </div>
@@ -404,8 +404,8 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
if (!currentTemplate || currentTemplate.fields.length === 0) return null; if (!currentTemplate || currentTemplate.fields.length === 0) return null;
return ( return (
<div className="bg-[#eef2ff] p-4 rounded-lg border border-indigo-100 mt-6"> <div className="bg-theme-bg p-4 rounded-lg border border-theme-border mt-6">
<h3 className="text-sm font-bold text-slate-700 uppercase mb-4 flex items-center gap-2"> <h3 className="text-sm font-bold text-theme-text uppercase mb-4 flex items-center gap-2">
<List size={16} /> Champs Personnalisés <List size={16} /> Champs Personnalisés
</h3> </h3>
<div className="grid grid-cols-1 gap-4"> <div className="grid grid-cols-1 gap-4">
@@ -414,20 +414,20 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
return ( return (
<div key={field.id}> <div key={field.id}>
<label className="block text-xs font-semibold text-slate-500 mb-1">{field.label}</label> <label className="block text-xs font-semibold text-theme-muted mb-1">{field.label}</label>
{field.type === 'textarea' ? ( {field.type === 'textarea' ? (
<textarea <textarea
value={value} value={value}
onChange={(e) => updateCustomValue(field.id, e.target.value)} onChange={(e) => updateCustomValue(field.id, e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-indigo-400"
placeholder={field.placeholder} placeholder={field.placeholder}
/> />
) : field.type === 'select' ? ( ) : field.type === 'select' ? (
<select <select
value={value} value={value}
onChange={(e) => updateCustomValue(field.id, e.target.value)} onChange={(e) => updateCustomValue(field.id, e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-indigo-400"
> >
<option value="">Sélectionner...</option> <option value="">Sélectionner...</option>
{field.options?.map(opt => ( {field.options?.map(opt => (
@@ -440,16 +440,16 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
type="checkbox" type="checkbox"
checked={!!value} checked={!!value}
onChange={(e) => updateCustomValue(field.id, e.target.checked)} onChange={(e) => updateCustomValue(field.id, e.target.checked)}
className="w-4 h-4 text-indigo-600 rounded border-slate-300 focus:ring-indigo-500" className="w-4 h-4 text-indigo-600 rounded border-theme-border focus:ring-indigo-500"
/> />
<span className="text-sm text-slate-700">Activé / Oui</span> <span className="text-sm text-theme-text">Activé / Oui</span>
</label> </label>
) : ( ) : (
<input <input
type={field.type === 'number' ? 'number' : 'text'} type={field.type === 'number' ? 'number' : 'text'}
value={value} value={value}
onChange={(e) => updateCustomValue(field.id, e.target.value)} onChange={(e) => updateCustomValue(field.id, e.target.value)}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm outline-none focus:border-indigo-400" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm outline-none focus:border-indigo-400"
placeholder={field.placeholder} placeholder={field.placeholder}
/> />
)} )}
@@ -465,29 +465,29 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
const template = templates.find(t => t.entityType === activeTemplateType) || { entityType: activeTemplateType, fields: [] }; const template = templates.find(t => t.entityType === activeTemplateType) || { entityType: activeTemplateType, fields: [] };
return ( return (
<div className="flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto"> <div className="flex-1 bg-theme-panel rounded-xl shadow-lg border border-theme-border p-8 overflow-y-auto">
<div className="flex justify-between items-start mb-6"> <div className="flex justify-between items-start mb-6">
<div> <div>
<h2 className="text-2xl font-bold text-slate-800 flex items-center gap-2"> <h2 className="text-2xl font-bold text-theme-text flex items-center gap-2">
<Layout size={24} className="text-indigo-600" /> Éditeur de Modèles <Layout size={24} className="text-indigo-600" /> Éditeur de Modèles
</h2> </h2>
<p className="text-slate-500 text-sm mt-1"> <p className="text-theme-muted text-sm mt-1">
Configurez les champs personnalisés pour chaque type de fiche. Configurez les champs personnalisés pour chaque type de fiche.
</p> </p>
</div> </div>
<button onClick={() => setMode('entities')} className="p-2 text-slate-500 hover:bg-slate-100 rounded-full"> <button onClick={() => setMode('entities')} className="p-2 text-theme-muted hover:bg-theme-border rounded-full">
<X size={20} /> <X size={20} />
</button> </button>
</div> </div>
<div className="flex gap-2 mb-8 border-b border-slate-200 pb-1"> <div className="flex gap-2 mb-8 border-b border-theme-border pb-1">
{Object.values(EntityType).map(type => ( {Object.values(EntityType).map(type => (
<button <button
key={type} key={type}
onClick={() => setActiveTemplateType(type)} onClick={() => setActiveTemplateType(type)}
className={`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${activeTemplateType === type className={`px-4 py-2 text-sm font-medium rounded-t-lg transition-colors ${activeTemplateType === type
? 'bg-indigo-50 text-indigo-700 border-b-2 border-indigo-600' ? 'bg-indigo-500/10 text-indigo-700 border-b-2 border-indigo-600'
: 'text-slate-500 hover:text-slate-800 hover:bg-slate-50' : 'text-theme-muted hover:text-theme-text hover:bg-theme-panel/50'
}`} }`}
> >
{type} {type}
@@ -497,23 +497,23 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<div className="space-y-4"> <div className="space-y-4">
{template.fields.map((field, idx) => ( {template.fields.map((field, idx) => (
<div key={field.id} className="bg-[#eef2ff] border border-indigo-100 rounded-lg p-4 flex gap-4 items-start group"> <div key={field.id} className="bg-theme-bg border border-theme-border rounded-lg p-4 flex gap-4 items-start group">
<div className="flex-1 grid grid-cols-2 gap-4"> <div className="flex-1 grid grid-cols-2 gap-4">
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-1">Nom du champ</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Nom du champ</label>
<input <input
type="text" type="text"
value={field.label} value={field.label}
onChange={(e) => updateCustomField(activeTemplateType, field.id, { label: e.target.value })} onChange={(e) => updateCustomField(activeTemplateType, field.id, { label: e.target.value })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm"
/> />
</div> </div>
<div> <div>
<label className="block text-xs font-semibold text-slate-500 mb-1">Type</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Type</label>
<select <select
value={field.type} value={field.type}
onChange={(e) => updateCustomField(activeTemplateType, field.id, { type: e.target.value as CustomFieldType })} onChange={(e) => updateCustomField(activeTemplateType, field.id, { type: e.target.value as CustomFieldType })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm"
> >
<option value="text">Texte court</option> <option value="text">Texte court</option>
<option value="textarea">Texte long</option> <option value="textarea">Texte long</option>
@@ -524,12 +524,12 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
{field.type === 'select' && ( {field.type === 'select' && (
<div className="col-span-2"> <div className="col-span-2">
<label className="block text-xs font-semibold text-slate-500 mb-1">Options (séparées par des virgules)</label> <label className="block text-xs font-semibold text-theme-muted mb-1">Options (séparées par des virgules)</label>
<input <input
type="text" type="text"
value={field.options?.join(',') || ''} value={field.options?.join(',') || ''}
onChange={(e) => updateCustomField(activeTemplateType, field.id, { options: e.target.value.split(',').map(s => s.trim()) })} onChange={(e) => updateCustomField(activeTemplateType, field.id, { options: e.target.value.split(',').map(s => s.trim()) })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded text-sm" className="w-full p-2 bg-theme-bg border border-theme-border rounded text-sm"
placeholder="Option A, Option B, Option C" placeholder="Option A, Option B, Option C"
/> />
</div> </div>
@@ -537,7 +537,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
<button <button
onClick={() => deleteCustomField(activeTemplateType, field.id)} onClick={() => deleteCustomField(activeTemplateType, field.id)}
className="p-2 text-slate-400 hover:text-red-600 hover:bg-red-50 rounded mt-5" className="p-2 text-theme-muted hover:text-red-600 hover:bg-red-50 rounded mt-5"
> >
<Trash2 size={16} /> <Trash2 size={16} />
</button> </button>
@@ -546,7 +546,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<button <button
onClick={() => addCustomField(activeTemplateType)} onClick={() => addCustomField(activeTemplateType)}
className="w-full py-3 border-2 border-dashed border-slate-300 rounded-lg text-slate-500 hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-50 transition-all flex items-center justify-center gap-2" className="w-full py-3 border-2 border-dashed border-theme-border rounded-lg text-theme-muted hover:border-indigo-400 hover:text-indigo-600 hover:bg-indigo-500/10 transition-all flex items-center justify-center gap-2"
> >
<Plus size={20} /> Ajouter un champ <Plus size={20} /> Ajouter un champ
</button> </button>
@@ -557,14 +557,14 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
if (mode === 'templates') { if (mode === 'templates') {
return ( return (
<div className="flex h-full gap-6 p-6 bg-[#eef2ff]"> <div className="flex h-full gap-6 p-6 bg-theme-bg">
<div className="w-1/3 opacity-50 pointer-events-none filter blur-[1px]"> <div className="w-1/3 opacity-50 pointer-events-none filter blur-[1px]">
<div className="bg-white rounded-lg p-6 shadow-sm border border-slate-200"> <div className="bg-theme-panel rounded-lg p-6 shadow-sm border border-theme-border">
<h3 className="font-bold text-slate-700 mb-4">Aperçu Fiches</h3> <h3 className="font-bold text-theme-text mb-4">Aperçu Fiches</h3>
<div className="space-y-2"> <div className="space-y-2">
<div className="h-10 bg-indigo-50 rounded"></div> <div className="h-10 bg-indigo-500/10 rounded"></div>
<div className="h-10 bg-indigo-50 rounded"></div> <div className="h-10 bg-indigo-500/10 rounded"></div>
<div className="h-10 bg-indigo-50 rounded"></div> <div className="h-10 bg-indigo-500/10 rounded"></div>
</div> </div>
</div> </div>
</div> </div>
@@ -574,10 +574,10 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
} }
return ( return (
<div className="flex h-full gap-6 p-6 bg-[#eef2ff]"> <div className="flex h-full gap-6 p-6 bg-theme-bg">
<div className="w-1/3 flex flex-col gap-4"> <div className="w-1/3 flex flex-col gap-4">
<div className="flex justify-between items-center px-1"> <div className="flex justify-between items-center px-1">
<h2 className="text-lg font-bold text-slate-700">Explorateur</h2> <h2 className="text-lg font-bold text-theme-text">Explorateur</h2>
<button <button
onClick={() => setMode('templates')} onClick={() => setMode('templates')}
className="flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors" className="flex items-center gap-1.5 px-3 py-1.5 bg-indigo-100 text-indigo-700 hover:bg-indigo-200 rounded text-xs font-medium transition-colors"
@@ -589,9 +589,9 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<div className="space-y-6 overflow-y-auto pr-2 pb-4 flex-1"> <div className="space-y-6 overflow-y-auto pr-2 pb-4 flex-1">
{Object.values(EntityType).map(type => ( {Object.values(EntityType).map(type => (
<div key={type} className="bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden"> <div key={type} className="bg-theme-panel rounded-lg shadow-sm border border-theme-border overflow-hidden">
<div className="bg-indigo-50 p-3 border-b border-indigo-100 flex justify-between items-center"> <div className="bg-indigo-500/10 p-3 border-b border-theme-border flex justify-between items-center">
<h3 className="font-semibold text-slate-700 flex items-center gap-2"> <h3 className="font-semibold text-theme-text flex items-center gap-2">
<span>{ENTITY_ICONS[type]}</span> {type}s <span>{ENTITY_ICONS[type]}</span> {type}s
</h3> </h3>
<button <button
@@ -603,17 +603,17 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
<div className="divide-y divide-slate-100"> <div className="divide-y divide-slate-100">
{filterByType(type).length === 0 && ( {filterByType(type).length === 0 && (
<p className="p-4 text-sm text-slate-400 italic text-center">Aucun élément</p> <p className="p-4 text-sm text-theme-muted italic text-center">Aucun élément</p>
)} )}
{filterByType(type).map(entity => ( {filterByType(type).map(entity => (
<div <div
key={entity.id} key={entity.id}
onClick={() => handleEdit(entity)} onClick={() => handleEdit(entity)}
className={`p-3 cursor-pointer hover:bg-blue-50 transition-colors flex justify-between group ${editingId === entity.id ? 'bg-blue-50 border-l-4 border-blue-500' : ''}`} className={`p-3 cursor-pointer hover:bg-blue-500/10 transition-colors flex justify-between group ${editingId === entity.id ? 'bg-blue-500/10 border-l-4 border-blue-500' : ''}`}
> >
<div> <div>
<div className="font-medium text-slate-800">{entity.name}</div> <div className="font-medium text-theme-text">{entity.name}</div>
<div className="text-xs text-slate-500 truncate">{entity.description}</div> <div className="text-xs text-theme-muted truncate">{entity.description}</div>
</div> </div>
<button <button
onClick={(e) => { e.stopPropagation(); handleDelete(entity.id); }} onClick={(e) => { e.stopPropagation(); handleDelete(entity.id); }}
@@ -629,7 +629,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
</div> </div>
<div className="flex-1 bg-white rounded-xl shadow-lg border border-slate-200 p-8 overflow-y-auto"> <div className="flex-1 bg-theme-panel rounded-xl shadow-lg border border-theme-border p-8 overflow-y-auto">
{editingId && tempEntity ? ( {editingId && tempEntity ? (
<div className="space-y-6 animate-in fade-in duration-200"> <div className="space-y-6 animate-in fade-in duration-200">
<div className="flex justify-between items-start"> <div className="flex justify-between items-start">
@@ -637,12 +637,12 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<span className={`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${ENTITY_COLORS[tempEntity.type]}`}> <span className={`inline-block px-2 py-1 rounded text-xs font-bold uppercase tracking-wider ${ENTITY_COLORS[tempEntity.type]}`}>
{tempEntity.type} {tempEntity.type}
</span> </span>
<h2 className="text-2xl font-bold text-slate-800"> <h2 className="text-2xl font-bold text-theme-text">
{tempEntity.type === EntityType.CHARACTER ? 'Fiche Personnage' : 'Édition de la fiche'} {tempEntity.type === EntityType.CHARACTER ? 'Fiche Personnage' : 'Édition de la fiche'}
</h2> </h2>
</div> </div>
<div className="flex gap-2"> <div className="flex gap-2">
<button onClick={() => setEditingId(null)} className="p-2 text-slate-500 hover:bg-slate-100 rounded-full"> <button onClick={() => setEditingId(null)} className="p-2 text-theme-muted hover:bg-theme-border rounded-full">
<X size={20} /> <X size={20} />
</button> </button>
</div> </div>
@@ -650,22 +650,22 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<div className="space-y-4"> <div className="space-y-4">
<div> <div>
<label className="block text-sm font-medium text-slate-700 mb-1">Nom</label> <label className="block text-sm font-medium text-theme-text mb-1">Nom</label>
<input <input
type="text" type="text"
value={tempEntity.name} value={tempEntity.name}
onChange={e => setTempEntity({ ...tempEntity, name: e.target.value })} onChange={e => setTempEntity({ ...tempEntity, name: e.target.value })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg" className="w-full p-2 bg-theme-bg border border-theme-border rounded focus:ring-2 focus:ring-blue-500 outline-none font-serif text-lg"
placeholder="Ex: Gandalf le Gris" placeholder="Ex: Gandalf le Gris"
/> />
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-slate-700 mb-1">Description Courte (pour l'IA)</label> <label className="block text-sm font-medium text-theme-text mb-1">Description Courte (pour l'IA)</label>
<textarea <textarea
value={tempEntity.description} value={tempEntity.description}
onChange={e => setTempEntity({ ...tempEntity, description: e.target.value })} onChange={e => setTempEntity({ ...tempEntity, description: e.target.value })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20" className="w-full p-2 bg-theme-bg border border-theme-border rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-20"
placeholder="Un magicien puissant qui guide la communauté..." placeholder="Un magicien puissant qui guide la communauté..."
/> />
</div> </div>
@@ -674,7 +674,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
{renderCustomFieldsEditor()} {renderCustomFieldsEditor()}
<div className="mt-6 border-t border-slate-100 pt-6"> <div className="mt-6 border-t border-theme-border pt-6">
<div> <div>
<label className="block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2"> <label className="block text-sm font-medium text-indigo-700 mb-1 flex items-center gap-2">
<Sparkles size={14} /> Contexte Narratif (Auto-généré) <Sparkles size={14} /> Contexte Narratif (Auto-généré)
@@ -682,17 +682,17 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
<textarea <textarea
value={tempEntity.storyContext || ''} value={tempEntity.storyContext || ''}
onChange={e => setTempEntity({ ...tempEntity, storyContext: e.target.value })} onChange={e => setTempEntity({ ...tempEntity, storyContext: e.target.value })}
className="w-full p-2 border border-indigo-200 bg-indigo-50 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-slate-600" className="w-full p-2 border border-indigo-200 bg-indigo-500/10 rounded focus:ring-2 focus:ring-blue-500 outline-none text-sm h-24 italic text-theme-muted"
placeholder="Les événements vécus par ce personnage apparaîtront ici..." placeholder="Les événements vécus par ce personnage apparaîtront ici..."
/> />
</div> </div>
<div className="mt-4"> <div className="mt-4">
<label className="block text-sm font-medium text-slate-700 mb-1">Notes & Biographie Complète</label> <label className="block text-sm font-medium text-theme-text mb-1">Notes & Biographie Complète</label>
<textarea <textarea
value={tempEntity.details} value={tempEntity.details}
onChange={e => setTempEntity({ ...tempEntity, details: e.target.value })} onChange={e => setTempEntity({ ...tempEntity, details: e.target.value })}
className="w-full p-2 bg-[#eef2ff] border border-slate-300 rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif" className="w-full p-2 bg-theme-bg border border-theme-border rounded focus:ring-2 focus:ring-blue-500 outline-none h-48 font-serif"
placeholder="Histoire détaillée, secrets, origines..." placeholder="Histoire détaillée, secrets, origines..."
/> />
</div> </div>
@@ -710,7 +710,7 @@ const WorldBuilder: React.FC<WorldBuilderProps> = ({ entities, onCreate, onUpdat
</div> </div>
</div> </div>
) : ( ) : (
<div className="h-full flex flex-col items-center justify-center text-slate-400"> <div className="h-full flex flex-col items-center justify-center text-theme-muted">
<div className="text-6xl mb-4 opacity-20">🌍</div> <div className="text-6xl mb-4 opacity-20">🌍</div>
<p className="text-lg">Sélectionnez ou créez une fiche pour commencer.</p> <p className="text-lg">Sélectionnez ou créez une fiche pour commencer.</p>
<p className="text-sm">Ces informations aideront l'IA à rester cohérente.</p> <p className="text-sm">Ces informations aideront l'IA à rester cohérente.</p>

View File

@@ -34,7 +34,7 @@ const EditorShell: React.FC<EditorShellProps> = (props) => {
const currentChapter = project.chapters.find(c => c.id === currentChapterId); const currentChapter = project.chapters.find(c => c.id === currentChapterId);
return ( return (
<div className={`flex h-screen overflow-hidden no-print ${user.preferences.theme === 'dark' ? 'bg-slate-900 text-white' : user.preferences.theme === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-[#eef2ff]'}`}> <div className="flex h-screen overflow-hidden no-print bg-theme-bg text-theme-text transition-colors duration-300">
{/* SIDEBAR */} {/* SIDEBAR */}
<aside className={`${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`}> <aside className={`${isSidebarOpen ? 'w-64' : 'w-0'} bg-slate-900 text-slate-300 flex-shrink-0 transition-all duration-300 overflow-hidden flex flex-col border-r border-slate-800`}>
@@ -95,9 +95,9 @@ const EditorShell: React.FC<EditorShellProps> = (props) => {
{/* MAIN CONTENT */} {/* MAIN CONTENT */}
<div className="flex-1 flex flex-col h-full overflow-hidden"> <div className="flex-1 flex flex-col h-full overflow-hidden">
<header className="h-14 bg-white border-b border-slate-200 flex items-center justify-between px-4 shadow-sm z-10 text-slate-800"> <header className="h-14 bg-theme-panel border-b border-theme-border flex items-center justify-between px-4 shadow-sm z-10 text-theme-text transition-colors duration-300">
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<button onClick={() => setIsSidebarOpen(!isSidebarOpen)} className="text-slate-500 hover:text-slate-800"><Menu size={20} /></button> <button onClick={() => setIsSidebarOpen(!isSidebarOpen)} className="text-theme-muted hover:text-theme-text"><Menu size={20} /></button>
{viewMode === 'write' ? ( {viewMode === 'write' ? (
<input <input
type="text" type="text"
@@ -124,7 +124,7 @@ const EditorShell: React.FC<EditorShellProps> = (props) => {
</div> </div>
{/* AI PANEL */} {/* AI PANEL */}
<div className={`${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-slate-200 relative`}> <div className={`${isAiPanelOpen ? 'w-80 lg:w-96' : 'w-0'} transition-all duration-300 flex-shrink-0 h-full border-l border-theme-border relative bg-theme-panel`}>
{isAiPanelOpen && <AIPanel chatHistory={props.chatHistory} onSendMessage={props.onSendMessage} onInsertText={props.onInsertText} selectedText="" isGenerating={props.isGenerating} usage={user.usage} />} {isAiPanelOpen && <AIPanel chatHistory={props.chatHistory} onSendMessage={props.onSendMessage} onInsertText={props.onInsertText} selectedText="" isGenerating={props.isGenerating} usage={user.usage} />}
</div> </div>
</div> </div>

View File

@@ -3,12 +3,17 @@
import React, { createContext, useContext } from 'react'; import React, { createContext, useContext } from 'react';
import { SessionProvider } from 'next-auth/react'; import { SessionProvider } from 'next-auth/react';
import { useAuth } from '@/hooks/useAuth'; import { useAuth } from '@/hooks/useAuth';
import { ThemeProvider } from './ThemeProvider';
const AuthContext = createContext<any>(null); const AuthContext = createContext<any>(null);
function AuthInner({ children }: { children: React.ReactNode }) { function AuthInner({ children }: { children: React.ReactNode }) {
const auth = useAuth(); const auth = useAuth();
return <AuthContext.Provider value={auth}>{children}</AuthContext.Provider>; return (
<AuthContext.Provider value={auth}>
<ThemeProvider>{children}</ThemeProvider>
</AuthContext.Provider>
);
} }
export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {

View File

@@ -0,0 +1,20 @@
'use client';
import React, { useEffect } from 'react';
import { useAuthContext } from './AuthProvider';
export function ThemeProvider({ children }: { children: React.ReactNode }) {
const { user } = useAuthContext();
useEffect(() => {
if (!user) return;
const theme = user.preferences?.theme || 'light';
const root = document.documentElement;
root.classList.remove('theme-light', 'theme-dark', 'theme-sepia');
root.classList.add(`theme-${theme}`);
}, [user?.preferences?.theme]);
return <>{children}</>;
}