diff --git a/.next/dev/cache/turbopack/23c46498/00000313.sst b/.next/dev/cache/turbopack/23c46498/00000313.sst deleted file mode 100644 index 9da4217..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000313.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000314.sst b/.next/dev/cache/turbopack/23c46498/00000314.sst deleted file mode 100644 index 7ce2606..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000314.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000315.meta b/.next/dev/cache/turbopack/23c46498/00000315.meta deleted file mode 100644 index 7788733..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000315.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000318.sst b/.next/dev/cache/turbopack/23c46498/00000318.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000318.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000321.meta b/.next/dev/cache/turbopack/23c46498/00000321.meta deleted file mode 100644 index 906a298..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000321.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000324.sst b/.next/dev/cache/turbopack/23c46498/00000324.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000324.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000328.meta b/.next/dev/cache/turbopack/23c46498/00000328.meta deleted file mode 100644 index 13c446b..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000328.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000330.sst b/.next/dev/cache/turbopack/23c46498/00000330.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000330.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000334.meta b/.next/dev/cache/turbopack/23c46498/00000334.meta deleted file mode 100644 index 62690b9..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000334.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000336.sst b/.next/dev/cache/turbopack/23c46498/00000336.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000336.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000340.meta b/.next/dev/cache/turbopack/23c46498/00000340.meta deleted file mode 100644 index 5eb39db..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000340.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000342.sst b/.next/dev/cache/turbopack/23c46498/00000342.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000342.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000346.meta b/.next/dev/cache/turbopack/23c46498/00000346.meta deleted file mode 100644 index e27f7af..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000346.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000348.sst b/.next/dev/cache/turbopack/23c46498/00000348.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000348.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000352.meta b/.next/dev/cache/turbopack/23c46498/00000352.meta deleted file mode 100644 index 7e09071..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000352.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000354.sst b/.next/dev/cache/turbopack/23c46498/00000354.sst deleted file mode 100644 index d93c841..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000354.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000358.meta b/.next/dev/cache/turbopack/23c46498/00000358.meta deleted file mode 100644 index ca140e0..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000358.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000360.sst b/.next/dev/cache/turbopack/23c46498/00000360.sst deleted file mode 100644 index 52d9b86..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000360.sst and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/00000364.meta b/.next/dev/cache/turbopack/23c46498/00000364.meta deleted file mode 100644 index 46b48fa..0000000 Binary files a/.next/dev/cache/turbopack/23c46498/00000364.meta and /dev/null differ diff --git a/.next/dev/cache/turbopack/23c46498/CURRENT b/.next/dev/cache/turbopack/23c46498/CURRENT index c32c19f..dc29b81 100644 Binary files a/.next/dev/cache/turbopack/23c46498/CURRENT and b/.next/dev/cache/turbopack/23c46498/CURRENT differ diff --git a/.next/dev/cache/turbopack/23c46498/LOG b/.next/dev/cache/turbopack/23c46498/LOG index 4a78cf2..fe5f0be 100644 --- a/.next/dev/cache/turbopack/23c46498/LOG +++ b/.next/dev/cache/turbopack/23c46498/LOG @@ -1328,3 +1328,468 @@ FAM | META SEQ | SST SEQ | RANGE 0 | 00001236 | 00001235 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) 1 | 00001237 | 00001234 SST | [====================================================================================] | 14f643c3d8584875-ef63e6a8b41c1ab5 (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) diff --git a/.next/dev/prerender-manifest.json b/.next/dev/prerender-manifest.json index caa6ce7..354cded 100644 --- a/.next/dev/prerender-manifest.json +++ b/.next/dev/prerender-manifest.json @@ -4,8 +4,8 @@ "dynamicRoutes": {}, "notFoundRoutes": [], "preview": { - "previewModeId": "64ea03a229f653828766a3654a7623ec", - "previewModeSigningKey": "477cbefb1eecc6237c332fd49918940f0b1f05d16c6d81d9be2d54305396dfd2", - "previewModeEncryptionKey": "9891e33f98087cd438ebe3cf068e3cf30985af06afb29929d98c4209d4b3e460" + "previewModeId": "85c5dd029fc132e677dde52feee3a288", + "previewModeSigningKey": "ffc22f9173cac7ecd73711e78a81e6adea61899ace90508970a207b08fc09bb1", + "previewModeEncryptionKey": "ead7791e10b63610d136d15a2f80bca03f7ffb8faa5b672e422467464d362d9a" } } \ No newline at end of file diff --git a/.next/dev/server/app-paths-manifest.json b/.next/dev/server/app-paths-manifest.json index 1588d1c..42a11de 100644 --- a/.next/dev/server/app-paths-manifest.json +++ b/.next/dev/server/app-paths-manifest.json @@ -1,11 +1,18 @@ { "/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/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/user/profile/route": "app/api/user/profile/route.js", "/dashboard/page": "app/dashboard/page.js", "/login/page": "app/login/page.js", - "/page": "app/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" } \ No newline at end of file diff --git a/.next/dev/server/app/dashboard/page_client-reference-manifest.js b/.next/dev/server/app/dashboard/page_client-reference-manifest.js index 88f0341..5bec407 100644 --- a/.next/dev/server/app/dashboard/page_client-reference-manifest.js +++ b/.next/dev/server/app/dashboard/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/dashboard/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_c4c2fd93._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_dashboard_page_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_c4c2fd93._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_dashboard_page_tsx_57fdf10e._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/549ce_4a830693._.js","server/chunks/ssr/[root-of-the-server]__2aea0639._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js","static/chunks/Documents_00 - projet_plumeia_src_app_dashboard_page_tsx_57fdf10e._.js"]}} +globalThis.__RSC_MANIFEST["/dashboard/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_c4c2fd93._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_dashboard_page_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_c4c2fd93._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_dashboard_page_tsx_28afda27._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/549ce_4a830693._.js","server/chunks/ssr/[root-of-the-server]__2aea0639._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js","static/chunks/Documents_00 - projet_plumeia_src_app_dashboard_page_tsx_28afda27._.js"]}} diff --git a/.next/dev/server/app/login/page_client-reference-manifest.js b/.next/dev/server/app/login/page_client-reference-manifest.js index eb7fc3f..ff113ec 100644 --- a/.next/dev/server/app/login/page_client-reference-manifest.js +++ b/.next/dev/server/app/login/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/login/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_18e0a14d._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_login_page_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_18e0a14d._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_login_page_tsx_57fdf10e._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__6e203a48._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/login/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/login/page":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_18e0a14d._.js","static/chunks/Documents_00 - projet_plumeia_src_app_login_page_tsx_57fdf10e._.js"]}} +globalThis.__RSC_MANIFEST["/login/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_18e0a14d._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_login_page_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_18e0a14d._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_login_page_tsx_28afda27._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__6e203a48._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/login/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/login/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/login/page":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_18e0a14d._.js","static/chunks/Documents_00 - projet_plumeia_src_app_login_page_tsx_28afda27._.js"]}} diff --git a/.next/dev/server/app/project/[id]/page_client-reference-manifest.js b/.next/dev/server/app/project/[id]/page_client-reference-manifest.js index 53d3866..f1c2501 100644 --- a/.next/dev/server/app/project/[id]/page_client-reference-manifest.js +++ b/.next/dev/server/app/project/[id]/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_e45494cc._.js","/_next/static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_page_tsx_db2c5166._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_e45494cc._.js","/_next/static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_page_tsx_db2c5166._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_5e4edcdd._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_57fdf10e._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_57fdf10e._.js","static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js","static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_db2c5166._.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_e45494cc._.js","/_next/static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_page_tsx_e72be616._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_e45494cc._.js","/_next/static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_page_tsx_e72be616._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js","server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js","server/chunks/ssr/549ce_lucide-react_dist_esm_icons_5e4edcdd._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_28afda27._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_28afda27._.js","static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js","static/chunks/549ce_lucide-react_dist_esm_icons_c75057b8._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_page_tsx_e72be616._.js"]}} diff --git a/.next/dev/server/app/project/[id]/settings/page_client-reference-manifest.js b/.next/dev/server/app/project/[id]/settings/page_client-reference-manifest.js index 248acfa..241120b 100644 --- a/.next/dev/server/app/project/[id]/settings/page_client-reference-manifest.js +++ b/.next/dev/server/app/project/[id]/settings/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/project/[id]/settings/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_d99083a0._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_settings_page_tsx_db2c5166._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_57fdf10e._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_d99083a0._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_settings_page_tsx_db2c5166._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_57fdf10e._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_57fdf10e._.js","static/chunks/Documents_00 - projet_plumeia_d99083a0._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_settings_page_tsx_db2c5166._.js"]}} +globalThis.__RSC_MANIFEST["/project/[id]/settings/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_d99083a0._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_settings_page_tsx_e72be616._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_74b79b3f._.js","/_next/static/chunks/549ce_f5078f76._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_layout_tsx_28afda27._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_d99083a0._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_project_%5Bid%5D_settings_page_tsx_e72be616._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__661e4e50._.js","server/chunks/ssr/549ce_f74facf4._.js","server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_28afda27._.js"],"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js","static/chunks/549ce_f5078f76._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_layout_tsx_28afda27._.js","static/chunks/Documents_00 - projet_plumeia_d99083a0._.js","static/chunks/Documents_00 - projet_plumeia_src_app_project_[id]_settings_page_tsx_e72be616._.js"]}} diff --git a/.next/dev/server/app/signup/page_client-reference-manifest.js b/.next/dev/server/app/signup/page_client-reference-manifest.js index fda450e..ad75722 100644 --- a/.next/dev/server/app/signup/page_client-reference-manifest.js +++ b/.next/dev/server/app/signup/page_client-reference-manifest.js @@ -1,2 +1,2 @@ globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {}; -globalThis.__RSC_MANIFEST["/signup/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_7cf628a2._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_signup_page_tsx_57fdf10e._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_0ae2c1c3._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_7cf628a2._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_signup_page_tsx_57fdf10e._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__de10d535._.js","server/chunks/ssr/[root-of-the-server]__7dcb81a9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":["static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_7cf628a2._.js","static/chunks/Documents_00 - projet_plumeia_src_app_signup_page_tsx_57fdf10e._.js"]}} +globalThis.__RSC_MANIFEST["/signup/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js ":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/549ce_next_dist_52b68393._.js","/_next/static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx ":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_7cf628a2._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_signup_page_tsx_28afda27._.js"],"async":false},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)","name":"*","chunks":["/_next/static/chunks/Documents_00%20-%20projet_plumeia_79f2801f._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_7cf628a2._.js","/_next/static/chunks/Documents_00%20-%20projet_plumeia_src_app_signup_page_tsx_28afda27._.js"],"async":false}},"ssrModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/549ce_next_dist_ebf1966f._.js","server/chunks/ssr/[externals]_next_dist_1aaf5479._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js"],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-ssr] (ecmascript)","name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__ab714b47._.js","server/chunks/ssr/[root-of-the-server]__7dcb81a9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/layout-router.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/render-from-template-context.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-page.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-page.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/client-segment.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/client-segment.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/lib/framework/boundary-components.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/next-devtools/userspace/app/segment-explorer-node.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error.js [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}},"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-client] (ecmascript)":{"*":{"id":"[project]/Documents/00 - projet/plumeia/src/app/signup/page.tsx [app-rsc] (client reference proxy)","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":[],"[project]/Documents/00 - projet/plumeia/src/app/layout":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":[{"path":"static/chunks/[root-of-the-server]__c391f813._.css","inlined":false}]},"entryJSFiles":{"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/client/components/builtin/global-error":["static/chunks/549ce_next_dist_52b68393._.js","static/chunks/549ce_next_dist_client_components_builtin_global-error_b5f8e6df.js"],"[project]/Documents/00 - projet/plumeia/src/app/layout":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js"],"[project]/Documents/00 - projet/plumeia/src/app/signup/page":["static/chunks/Documents_00 - projet_plumeia_79f2801f._.js","static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js","static/chunks/Documents_00 - projet_plumeia_7cf628a2._.js","static/chunks/Documents_00 - projet_plumeia_src_app_signup_page_tsx_28afda27._.js"]}} diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js index 0e05a29..656ca66 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js @@ -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", { - 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", { - 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: [ /*#__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", @@ -117,7 +117,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -154,7 +154,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ ...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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -183,7 +183,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ ...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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", 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", { 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", { - 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" }, void 0, false, { 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", { value: settings.synopsis, 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 ?" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -237,7 +237,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -272,7 +272,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ list: "genre-suggestions", value: settings.genre, 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" }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -313,7 +313,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.subGenre || '', 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" }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -340,7 +340,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.targetAudience, 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..." }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -374,7 +374,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ 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"], { size: 14, - className: "absolute left-3 top-3 text-slate-400" + className: "absolute left-3 top-3 text-theme-muted" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", lineNumber: 138, @@ -384,7 +384,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.themes, 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..." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -413,7 +413,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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: [ /*#__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 @@ -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", { value: settings.pov, 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: [ /*#__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: "", @@ -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", { 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", { - 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: [ /*#__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 @@ -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", { value: settings.tense, 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: [ /*#__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: "", @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -552,7 +552,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ list: "tone-suggestions", value: settings.tone, 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..." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -589,7 +589,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "mt-4", 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", { - 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)" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -597,7 +597,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ columnNumber: 29 }, ("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", { - 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").' }, void 0, false, { 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", { value: project.styleGuide || '', 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." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -667,10 +667,10 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ columnNumber: 29 }, ("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", { - 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: [ /*#__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 ?" }, void 0, false, { 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)), /*#__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, - 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" }, void 0, false, { 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)), /*#__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), - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -702,7 +702,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ 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", { 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" }, void 0, false, { 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$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$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)"); 'use client'; ; ; ; ; -; -; 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 { 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 { 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 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"], { project: project, onUpdate: (updates)=>updateProject(updates), onDeleteProject: async ()=>{ - await deleteProject(projectId); + await deleteProject(); router.push('/dashboard'); } }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx", - lineNumber: 16, + lineNumber: 12, columnNumber: 9 }, this); } diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js.map b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js.map index 4febfd3..1712614 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js.map +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_6fd8b93a._.js.map @@ -2,11 +2,11 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n 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\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n 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]\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n 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]\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n 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\").\n

\n handleStyleGuideChange(e.target.value)}\n 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\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n className=\"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;"],"names":[],"mappings":"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"}}, - {"offset": {"line": 746, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function SettingsPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const { user } = useAuthContext();\r\n const { deleteProject } = useProjects(user);\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject(projectId);\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AANA;;;;;;;AAQe,SAAS;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,qMAAiB;IAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,+LAAc;IAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,sLAAW,EAAC;IACtC,MAAM,SAAS,IAAA,2LAAS;IAExB,qBACI,0RAAC,yLAAqB;QAClB,SAAS;QACT,UAAU,CAAC,UAAY,cAAc;QACrC,iBAAiB;YACb,MAAM,cAAc;YACpB,OAAO,IAAI,CAAC;QAChB;;;;;;AAGZ"}}, - {"offset": {"line": 785, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/feather.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KAET;IACA;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAS;KAAA;IAC1C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC7C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 837, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/users.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA8B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC3D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,GAAA,CAAA;YAAK,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,OAAA;QAAA,CAAS;KAAA;CACvD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 898, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/clock.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAe,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC3D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 945, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1003, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/hash.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACjE;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAChE;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CACnE;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n 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\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n 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\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n 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\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n 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\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n 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\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n 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\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n 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\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n 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\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n 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\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n 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\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n 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\").\n

\n handleStyleGuideChange(e.target.value)}\n 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\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-theme-bg text-theme-text border border-theme-border rounded hover:opacity-80 text-sm transition-opacity\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n 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\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 746, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function SettingsPage() {\r\n const { project, updateProject, deleteProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject();\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AAJA;;;;;AAMe,SAAS;IACpB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAA,qMAAiB;IACnE,MAAM,SAAS,IAAA,2LAAS;IAExB,qBACI,0RAAC,yLAAqB;QAClB,SAAS;QACT,UAAU,CAAC,UAAY,cAAc;QACrC,iBAAiB;YACb,MAAM;YACN,OAAO,IAAI,CAAC;QAChB;;;;;;AAGZ"}}, + {"offset": {"line": 779, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/feather.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KAET;IACA;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAS;KAAA;IAC1C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC7C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 831, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/users.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA8B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC3D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,GAAA,CAAA;YAAK,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,OAAA;QAAA,CAAS;KAAA;CACvD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 892, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/clock.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAe,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC3D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 939, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 997, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/hash.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACjE;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAChE;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CACnE;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,0MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js index 5b7e658..7996976 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js @@ -291,7 +291,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj }, ("TURBOPACK compile-time value", void 0)); 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", { - 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: [ /*#__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: ` @@ -308,7 +308,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj columnNumber: 7 }, ("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", { - 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: [ /*#__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"], @@ -488,7 +488,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj columnNumber: 7 }, ("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", { - 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, 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", @@ -497,7 +497,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj ref: contentRef, contentEditable: 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, onBlur: ()=>{ setIsFocused(false); diff --git a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js.map b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js.map index 5097db7..af1d4ba 100644 --- a/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js.map +++ b/.next/dev/server/chunks/ssr/Documents_00 - projet_plumeia_src_47fff37c._.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 979, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useRef } from 'react';\r\nimport RichTextEditor, { RichTextEditorHandle } from '@/components/RichTextEditor';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport api from '@/lib/api';\r\n\r\nexport default function WritePage() {\r\n const editorRef = useRef(null);\r\n const { project, user, currentChapterId, updateChapter, incrementUsage } = useProjectContext();\r\n\r\n if (!currentChapterId) return null;\r\n\r\n const currentChapter = project.chapters?.find(c => c.id === currentChapterId);\r\n\r\n return (\r\n updateChapter(currentChapterId, { content: html })}\r\n onAiTransform={async (text, mode) => {\r\n const result = await api.ai.transform(text, mode, currentChapter?.content || '', user);\r\n incrementUsage();\r\n return result;\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AALA;;;;;;AAOe,SAAS;IACpB,MAAM,YAAY,IAAA,2PAAM,EAAuB;IAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,qMAAiB;IAE5F,IAAI,CAAC,kBAAkB,OAAO;IAE9B,MAAM,iBAAiB,QAAQ,QAAQ,EAAE,KAAK,CAAA,IAAK,EAAE,EAAE,KAAK;IAE5D,qBACI,0RAAC,2LAAc;QACX,KAAK;QACL,gBAAgB,gBAAgB,WAAW;QAC3C,QAAQ,CAAC,OAAS,cAAc,kBAAkB;gBAAE,SAAS;YAAK;QAClE,eAAe,OAAO,MAAM;YACxB,MAAM,SAAS,MAAM,wKAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,MAAM,gBAAgB,WAAW,IAAI;YACjF;YACA,OAAO;QACX;;;;;;AAGZ"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js index fd35bb0..41ca6be 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js @@ -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 })=>{ 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", { className: "max-w-6xl mx-auto space-y-8", 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 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: [ /*#__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", @@ -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", { 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", { - className: "text-3xl font-black text-slate-900", + className: "text-3xl font-black text-theme-text", children: [ "Bonjour, ", user.name, @@ -559,7 +559,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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"])("span", { - className: "text-slate-400 text-xs font-medium", + className: "text-theme-muted text-xs font-medium", children: "Membre depuis le 24 janv." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", @@ -589,7 +589,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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", { 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: [ /*#__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 @@ -607,13 +607,13 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on }, ("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: 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"], { size: 20 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", lineNumber: 42, - columnNumber: 149 + columnNumber: 155 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { 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", 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-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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: [ user.stats.writingStreak, " Jours" @@ -686,7 +686,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 21 }, ("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", { - 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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: user.stats.totalWordsWritten.toLocaleString() }, void 0, false, { 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 }, ("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", { - 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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: [ user.preferences.dailyWordGoal, " Mots" @@ -798,7 +798,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on className: "flex justify-between items-center mb-6", 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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: "Mes Romans" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", @@ -834,12 +834,12 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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", { 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: [ /*#__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-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"], { size: 24 }, void 0, false, { @@ -853,7 +853,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 41 }, ("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", { - 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 }, void 0, false, { 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 }, ("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", { - className: "text-slate-400 text-sm", + className: "text-theme-muted text-sm", children: [ "Dernière modification : ", new Date(p.lastModified).toLocaleDateString() @@ -878,7 +878,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 37 }, ("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", { - 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: [ /*#__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: [ @@ -911,7 +911,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 33 }, ("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", { - 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: [ /*#__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, diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map index 80da606..45ff27c 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__2aea0639._.js.map @@ -5,6 +5,6 @@ {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport interface PlanData {\n id: string;\n name: string;\n displayName: string;\n price: number;\n description: string;\n features: string[];\n isPopular: boolean;\n maxProjects: number;\n maxAiActions: number;\n}\n\nexport interface Subscription {\n plan: string; // The ID of the plan\n planDetails?: PlanData; // The populated plan details from DB\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 37, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, {"offset": {"line": 158, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n // Use _count for display before full details are loaded\r\n chapters: Array.from({ length: p._count?.chapters || 0 }, (_, i) => ({ id: `placeholder-${i}`, title: '', content: '' })),\r\n entities: Array.from({ length: p._count?.entities || 0 }, (_, i) => ({ id: `placeholder-${i}`, type: 'character' as any, name: '', description: '' })),\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 481, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n\n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.planDetails?.displayName || user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n Écrire un nouveau livre\n \n
\n\n
\n {projects.map(p => (\n onSelect(p.id)}\n 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\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n \n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 481, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n\n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.planDetails?.displayName || user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n Écrire un nouveau livre\n \n
\n\n
\n {projects.map(p => (\n onSelect(p.id)}\n 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\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n \n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 1144, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n try {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n } catch (err: any) {\r\n if (err?.message?.includes('Limite')) {\r\n alert(err.message);\r\n router.push('/pricing');\r\n } else {\r\n alert('Erreur lors de la création du projet');\r\n }\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAPA;;;;;;;;AASe,SAAS;IACpB,MAAM,SAAS,IAAA,2LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,+LAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,sLAAW,EAAC;IAErE,IAAA,8PAAS,EAAC;QACN,IAAI,CAAC,WAAW,CAAC,MAAM;YACnB,OAAO,OAAO,CAAC;QACnB;IACJ,GAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,0RAAC;YAAI,WAAU;;8BACX,0RAAC,wQAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,0RAAC;oBAAI,WAAU;;sCACX,0RAAC,sQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,0RAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,0RAAC,sLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,IAAI;gBACA,MAAM,KAAK,MAAM;gBACjB,IAAI,IAAI;oBACJ,oBAAoB;oBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;gBAChC;YACJ,EAAE,OAAO,KAAU;gBACf,IAAI,KAAK,SAAS,SAAS,WAAW;oBAClC,MAAM,IAAI,OAAO;oBACjB,OAAO,IAAI,CAAC;gBAChB,OAAO;oBACH,MAAM;gBACV;YACJ;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC"}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js index 5dff77b..d280ad0 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js @@ -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", { 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", { - 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: children }, void 0, false, { diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js.map index dc94438..4eb6427 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__31132813._.js.map @@ -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 \",\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,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": 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 \r\n \r\n \r\n {children}\r\n \r\n \r\n \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 \r\n \r\n \r\n {children}\r\n \r\n \r\n \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]}}] } \ No newline at end of file diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js index 9461d78..7b83b25 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js @@ -605,7 +605,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }; 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", { - 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: [ /*#__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", @@ -619,7 +619,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 39, - columnNumber: 13 + columnNumber: 11 }, ("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", { className: "font-bold tracking-tight", @@ -627,7 +627,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 40, - columnNumber: 13 + columnNumber: 11 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { @@ -644,7 +644,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 44, - columnNumber: 17 + columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)), " ", usage.aiActionsCurrent, @@ -654,7 +654,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 43, - columnNumber: 13 + columnNumber: 11 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { @@ -701,10 +701,10 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen columnNumber: 9 }, ("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", { - 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: [ 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: [ /*#__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, @@ -728,7 +728,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 62, - columnNumber: 17 + columnNumber: 15 }, ("TURBOPACK compile-time value", void 0)) ] }, 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", { 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", { - 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: [ 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", @@ -749,14 +749,14 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 73, - columnNumber: 131 + columnNumber: 129 }, ("TURBOPACK compile-time value", void 0)), " Réflexion" ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 73, - columnNumber: 19 + columnNumber: 17 }, ("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", { 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", { 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", { - 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: [ /*#__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, @@ -816,7 +816,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen columnNumber: 7 }, ("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", { - 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", { onSubmit: handleSubmit, className: "relative", @@ -826,7 +826,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen value: input, onChange: (e)=>setInput(e.target.value), 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 }, void 0, false, { 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 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", { - 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: [ /*#__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`, @@ -1246,20 +1246,20 @@ const EditorShell = (props)=>{ className: "flex-1 flex flex-col h-full overflow-hidden", 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", { - 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: [ /*#__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", 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", { 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"], { size: 20 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", lineNumber: 100, - columnNumber: 130 + columnNumber: 133 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", @@ -1378,7 +1378,7 @@ const EditorShell = (props)=>{ columnNumber: 13 }, ("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", { - 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"], { chatHistory: props.chatHistory, onSendMessage: props.onSendMessage, diff --git a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map index f1dcf45..63ecac3 100644 --- a/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map +++ b/.next/dev/server/chunks/ssr/[root-of-the-server]__661e4e50._.js.map @@ -7,8 +7,8 @@ {"offset": {"line": 68, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,6KAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,6KAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,6KAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,6KAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, {"offset": {"line": 189, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n // Use _count for display before full details are loaded\r\n chapters: Array.from({ length: p._count?.chapters || 0 }, (_, i) => ({ id: `placeholder-${i}`, title: '', content: '' })),\r\n entities: Array.from({ length: p._count?.entities || 0 }, (_, i) => ({ id: `placeholder-${i}`, type: 'character' as any, name: '', description: '' })),\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAQA;AACA;AAXA;;;;AAiBO,MAAM,cAAc,CAAC;IACxB,MAAM,CAAC,UAAU,YAAY,GAAG,IAAA,6PAAQ,EAAgB,EAAE;IAC1D,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,IAAA,6PAAQ,EAAgB;IACxE,MAAM,CAAC,SAAS,WAAW,GAAG,IAAA,6PAAQ,EAAC;IAEvC,gBAAgB;IAChB,IAAA,8PAAS,EAAC;QACN,IAAI,CAAC,MAAM;YACP,YAAY,EAAE;YACd;QACJ;QACA,MAAM,eAAe;YACjB,WAAW;YACX,IAAI;gBACA,MAAM,OAAO,MAAM,wKAAG,CAAC,QAAQ,CAAC,IAAI;gBACpC,MAAM,SAAwB,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;wBACxD,IAAI,EAAE,EAAE;wBACR,OAAO,EAAE,KAAK;wBACd,QAAQ,EAAE,MAAM;wBAChB,cAAc,IAAI,KAAK,EAAE,SAAS,EAAE,OAAO;wBAC3C,wDAAwD;wBACxD,UAAU,MAAM,IAAI,CAAC;4BAAE,QAAQ,EAAE,MAAM,EAAE,YAAY;wBAAE,GAAG,CAAC,GAAG,IAAM,CAAC;gCAAE,IAAI,CAAC,YAAY,EAAE,GAAG;gCAAE,OAAO;gCAAI,SAAS;4BAAG,CAAC;wBACvH,UAAU,MAAM,IAAI,CAAC;4BAAE,QAAQ,EAAE,MAAM,EAAE,YAAY;wBAAE,GAAG,CAAC,GAAG,IAAM,CAAC;gCAAE,IAAI,CAAC,YAAY,EAAE,GAAG;gCAAE,MAAM;gCAAoB,MAAM;gCAAI,aAAa;4BAAG,CAAC;wBACpJ,OAAO,EAAE;wBACT,UAAU,EAAE,QAAQ,IAAI;oBAC5B,CAAC;gBACD,YAAY;YAChB,EAAE,OAAO,KAAK;gBACV,QAAQ,KAAK,CAAC,2BAA2B;YAC7C,SAAU;gBACN,WAAW;YACf;QACJ;QACA;IACJ,GAAG;QAAC;KAAK;IAET,wCAAwC;IACxC,IAAA,8PAAS,EAAC;QACN,IAAI,CAAC,kBAAkB;QAEvB,MAAM,qBAAqB;YACvB,IAAI;gBACA,MAAM,cAAc,MAAM,wKAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC3C,MAAM,SAAsB;oBACxB,IAAI,YAAY,EAAE;oBAClB,OAAO,YAAY,KAAK;oBACxB,QAAQ,YAAY,MAAM;oBAC1B,cAAc,IAAI,KAAK,YAAY,SAAS,EAAE,OAAO;oBACrD,UAAU,YAAY,QAAQ,IAAI;oBAClC,YAAY,YAAY,UAAU,IAAI;oBACtC,UAAU,CAAC,YAAY,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;4BACpD,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,KAAK;4BACd,SAAS,EAAE,OAAO;4BAClB,SAAS,EAAE,OAAO;wBACtB,CAAC;oBACD,UAAU,CAAC,YAAY,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;4BACpD,IAAI,EAAE,EAAE;4BACR,MAAM,EAAE,IAAI;4BACZ,MAAM,EAAE,IAAI;4BACZ,aAAa,EAAE,WAAW;4BAC1B,SAAS,EAAE,OAAO;4BAClB,cAAc,EAAE,YAAY;4BAC5B,YAAY,EAAE,UAAU;4BACxB,cAAc,EAAE,YAAY;wBAChC,CAAC;oBACD,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;4BAC9C,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,KAAK;4BACd,aAAa,EAAE,WAAW;4BAC1B,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,QAAQ;4BACpB,WAAW,IAAI,KAAK,EAAE,SAAS,EAAE,OAAO;wBAC5C,CAAC;oBACD,UAAU;wBACN,OAAO,CAAC,YAAY,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;gCAClD,IAAI,EAAE,EAAE;gCACR,GAAG,EAAE,CAAC;gCACN,GAAG,EAAE,CAAC;gCACN,OAAO,EAAE,KAAK;gCACd,aAAa,EAAE,WAAW;gCAC1B,OAAO,EAAE,KAAK;gCACd,MAAM,EAAE,IAAI;4BAChB,CAAC;wBACD,aAAa,CAAC,YAAY,eAAe,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAW,CAAC;gCAC9D,IAAI,EAAE,EAAE;gCACR,QAAQ,EAAE,MAAM;gCAChB,QAAQ,EAAE,MAAM;4BACpB,CAAC;oBACL;gBACJ;gBACA,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,mBAAmB,SAAS;YAC3E,EAAE,OAAO,KAAK;gBACV,QAAQ,KAAK,CAAC,kCAAkC;YACpD;QACJ;QACA;IACJ,GAAG;QAAC;KAAiB;IAErB,MAAM,gBAAgB;QAClB,IAAI,CAAC,MAAM;QAEX,IAAI;YACA,MAAM,UAAU,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtC,OAAO,yLAAkB;gBACzB,QAAQ,KAAK,IAAI,IAAI,qLAAc;gBACnC,UAAU;oBAAE,OAAO;oBAAW,gBAAgB;oBAAS,MAAM;gBAAO;YACxE;YAEA,MAAM,aAA0B;gBAC5B,IAAI,QAAQ,EAAE;gBACd,OAAO,QAAQ,KAAK;gBACpB,QAAQ,QAAQ,MAAM;gBACtB,cAAc,KAAK,GAAG;gBACtB,UAAU,EAAE;gBACZ,UAAU,EAAE;gBACZ,OAAO,EAAE;gBACT,UAAU,QAAQ,QAAQ;YAC9B;YAEA,YAAY,CAAA,OAAQ;uBAAI;oBAAM;iBAAW;YACzC,MAAM,WAAW,QAAQ,EAAE,EAAE,sLAAe;YAC5C,OAAO,QAAQ,EAAE;QACrB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;YAC1C,MAAM;QACV;IACJ;IAEA,MAAM,gBAAgB,OAAO,IAAY;QACrC,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,KAAK;oBAAE,GAAG,CAAC;oBAAE,GAAG,IAAI;gBAAC,IAAI;QAEpE,IAAI;YACA,yBAAyB;YACzB,MAAM,UAAe,CAAC;YACtB,IAAI,KAAK,KAAK,KAAK,WAAW,QAAQ,KAAK,GAAG,KAAK,KAAK;YACxD,IAAI,KAAK,MAAM,KAAK,WAAW,QAAQ,MAAM,GAAG,KAAK,MAAM;YAC3D,IAAI,KAAK,QAAQ,KAAK,WAAW,QAAQ,QAAQ,GAAG,KAAK,QAAQ;YACjE,IAAI,KAAK,UAAU,KAAK,WAAW,QAAQ,UAAU,GAAG,KAAK,UAAU;YACvE,IAAI,OAAO,IAAI,CAAC,SAAS,MAAM,GAAG,GAAG;gBACjC,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;YAClC;YAEA,oDAAoD;YACpD,IAAI,KAAK,QAAQ,EAAE;gBACf,MAAM,wKAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;oBAChC,OAAO,KAAK,QAAQ,CAAC,KAAK,IAAI,EAAE;oBAChC,aAAa,KAAK,QAAQ,CAAC,WAAW,IAAI,EAAE;gBAChD;YACJ;QACJ,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;QAC9C;IACJ;IAEA,MAAM,aAAa,OAAO,WAAmB;QACzC,IAAI;YACA,MAAM,UAAU,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtC;gBACA,OAAO,YAAY,KAAK,IAAI;gBAC5B,SAAS,YAAY,OAAO,IAAI;gBAChC,SAAS,YAAY,OAAO,IAAI;YACpC;YAEA,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;oBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;oBAC/B,OAAO;wBACH,GAAG,CAAC;wBACJ,UAAU;+BAAI,EAAE,QAAQ;4BAAE;gCACtB,IAAI,QAAQ,EAAE;gCACd,OAAO,QAAQ,KAAK;gCACpB,SAAS,QAAQ,OAAO;gCACxB,SAAS,QAAQ,OAAO;4BAC5B;yBAAE;oBACN;gBACJ;YACA,OAAO,QAAQ,EAAE;QACrB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,yBAAyB;YACvC,OAAO;QACX;IACJ;IAEA,MAAM,gBAAgB,OAAO,WAAmB,WAAmB;QAC/D,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,YAAY;4BAAE,GAAG,CAAC;4BAAE,GAAG,IAAI;wBAAC,IAAI;gBAC3E;YACJ;QAEA,IAAI;YACA,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW;QACzC,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,4BAA4B;QAC9C;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB,MAAkB;QAC7D,IAAI;YACA,MAAM,YAAY,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxC;gBACA;gBACA,MAAM,aAAa,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAC5C,aAAa,aAAa,eAAe;gBACzC,SAAS,aAAa,WAAW;gBACjC,YAAY,aAAa,cAAc;gBACvC,cAAc,aAAa,gBAAgB;YAC/C;YAEA,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;oBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;oBAC/B,OAAO;wBACH,GAAG,CAAC;wBACJ,UAAU;+BAAI,EAAE,QAAQ;4BAAE;gCACtB,IAAI,UAAU,EAAE;gCAChB,MAAM,UAAU,IAAI;gCACpB,MAAM,UAAU,IAAI;gCACpB,aAAa,UAAU,WAAW;gCAClC,SAAS,UAAU,OAAO;gCAC1B,YAAY,UAAU,UAAU;gCAChC,cAAc,UAAU,YAAY,IAAI,CAAC;4BAC7C;yBAAE;oBACN;gBACJ;YACA,OAAO,UAAU,EAAE;QACvB,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;YACzC,MAAM;QACV;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB,UAAkB;QAC7D,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,WAAW;4BAAE,GAAG,CAAC;4BAAE,GAAG,IAAI;wBAAC,IAAI;gBAC1E;YACJ;QAEA,IAAI;YACA,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;QACxC,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;QAC7C;IACJ;IAEA,MAAM,eAAe,OAAO,WAAmB;QAC3C,YAAY,CAAA,OAAQ,KAAK,GAAG,CAAC,CAAA;gBACzB,IAAI,EAAE,EAAE,KAAK,WAAW,OAAO;gBAC/B,OAAO;oBACH,GAAG,CAAC;oBACJ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;gBAC9C;YACJ;QAEA,IAAI;YACA,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,EAAE,OAAO,KAAK;YACV,QAAQ,KAAK,CAAC,2BAA2B;QAC7C;IACJ;IAEA,OAAO;QACH;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,eAAe,OAAO;YAClB,IAAI;gBACA,+DAA+D;gBAC/D,MAAM,wKAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAE1B,YAAY,CAAA,OAAQ,KAAK,MAAM,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;gBAC9C,IAAI,qBAAqB,WAAW;oBAChC,oBAAoB;gBACxB;YACJ,EAAE,OAAO,KAAK;gBACV,QAAQ,KAAK,CAAC,4BAA4B;YAC9C;QACJ;IACJ;AACJ"}}, {"offset": {"line": 512, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;AARA;;;AAUO,MAAM,UAAU;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,6PAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,6PAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,wKAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD"}}, - {"offset": {"line": 571, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n 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\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 874, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 571, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n\n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n 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\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 874, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 1410, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Open print dialog with the formatted content\n const content = generateContentHTML();\n const printWindow = window.open('', '_blank');\n if (printWindow) {\n printWindow.document.write(content);\n printWindow.document.close();\n printWindow.focus();\n setTimeout(() => {\n printWindow.print();\n }, 300);\n }\n onClose();\n }\n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n }\n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n\n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n\n {/* Format Selection */}\n
\n setFormat('pdf')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'pdf' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
PDF (Impression)
\n \n\n setFormat('word')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'word' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
Microsoft Word
\n \n\n setFormat('epub')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'epub' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
EPUB / Ebook
\n \n\n setFormat('markdown')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'markdown' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
Markdown
\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n Annuler\n \n \n {format === 'pdf' ? : }\n {format === 'pdf' ? 'Imprimer / Enregistrer PDF' : `Télécharger .${format === 'word' ? 'doc' : format === 'epub' ? 'xhtml' : 'md'}`}\n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":"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"}}, {"offset": {"line": 1916, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, {"offset": {"line": 3270, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n createEntity, updateEntity, deleteEntity, deleteProject\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n createEntity: (type, data) => createEntity(projectId, type, data),\r\n updateEntity: (entityId, data) => updateEntity(projectId, entityId, data),\r\n deleteEntity: (entityId) => deleteEntity(projectId, entityId),\r\n deleteProject: () => deleteProject(projectId),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] diff --git a/.next/dev/server/next-font-manifest.js b/.next/dev/server/next-font-manifest.js index ad9244d..bbec8fb 100644 --- a/.next/dev/server/next-font-manifest.js +++ b/.next/dev/server/next-font-manifest.js @@ -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}" \ No newline at end of file +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}" \ No newline at end of file diff --git a/.next/dev/server/next-font-manifest.json b/.next/dev/server/next-font-manifest.json index c9da055..f1f0bb1 100644 --- a/.next/dev/server/next-font-manifest.json +++ b/.next/dev/server/next-font-manifest.json @@ -8,11 +8,27 @@ "static/media/83afe278b6a6bb3c-s.p.3a6ba036.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/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/248e1dc0efc99276-s.p.8a6b2436.woff2" ], diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js index 1a1f1e8..bacb324 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js @@ -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 })=>{ 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", { className: "max-w-6xl mx-auto space-y-8", 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 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: [ /*#__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", @@ -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", { 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", { - className: "text-3xl font-black text-slate-900", + className: "text-3xl font-black text-theme-text", children: [ "Bonjour, ", user.name, @@ -581,7 +581,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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"])("span", { - className: "text-slate-400 text-xs font-medium", + className: "text-theme-muted text-xs font-medium", children: "Membre depuis le 24 janv." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", @@ -611,7 +611,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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", { 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: [ /*#__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 @@ -629,13 +629,13 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on }, ("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: 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"], { size: 20 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", lineNumber: 42, - columnNumber: 149 + columnNumber: 155 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { 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", 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-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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: [ user.stats.writingStreak, " Jours" @@ -708,7 +708,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 21 }, ("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", { - 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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: user.stats.totalWordsWritten.toLocaleString() }, void 0, false, { 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 }, ("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", { - 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: [ /*#__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", @@ -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", { 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", { - 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" }, void 0, false, { 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 }, ("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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: [ user.preferences.dailyWordGoal, " Mots" @@ -820,7 +820,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on className: "flex justify-between items-center mb-6", 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", { - className: "text-2xl font-black text-slate-900", + className: "text-2xl font-black text-theme-text", children: "Mes Romans" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx", @@ -856,12 +856,12 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on 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", { 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: [ /*#__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-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"], { size: 24 }, void 0, false, { @@ -875,7 +875,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 41 }, ("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", { - 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 }, void 0, false, { 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 }, ("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", { - className: "text-slate-400 text-sm", + className: "text-theme-muted text-sm", children: [ "Dernière modification : ", new Date(p.lastModified).toLocaleDateString() @@ -900,7 +900,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 37 }, ("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", { - 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: [ /*#__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: [ @@ -933,7 +933,7 @@ const Dashboard = ({ user, projects, onSelect, onCreate, onLogout, onPricing, on columnNumber: 33 }, ("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", { - 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: [ /*#__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, diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map index 53d63e3..e28a935 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_c4c2fd93._.js.map @@ -5,7 +5,7 @@ {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/types.ts"],"sourcesContent":["\nexport enum EntityType {\n CHARACTER = 'Personnage',\n LOCATION = 'Lieu',\n OBJECT = 'Objet',\n NOTE = 'Note'\n}\n\nexport interface CharacterAttributes {\n age: number;\n height: number;\n hair: string;\n eyes: string;\n archetype: string;\n role: 'protagonist' | 'antagonist' | 'support' | 'extra';\n personality: {\n spectrumIntrovertExtravert: number;\n spectrumEmotionalRational: number;\n spectrumChaoticLawful: number;\n };\n physicalQuirk: string;\n behavioralQuirk: string;\n}\n\nexport type CustomFieldType = 'text' | 'textarea' | 'number' | 'boolean' | 'select';\n\nexport interface CustomFieldDefinition {\n id: string;\n label: string;\n type: CustomFieldType;\n options?: string[];\n placeholder?: string;\n}\n\nexport interface EntityTemplate {\n entityType: EntityType;\n fields: CustomFieldDefinition[];\n}\n\nexport interface Entity {\n id: string;\n type: EntityType;\n name: string;\n description: string;\n details: string;\n storyContext?: string;\n attributes?: CharacterAttributes;\n customValues?: Record;\n}\n\nexport interface Chapter {\n id: string;\n title: string;\n content: string;\n summary?: string;\n}\n\nexport type PlotNodeType = 'story' | 'dialogue' | 'action';\n\nexport interface PlotNode {\n id: string;\n x: number;\n y: number;\n title: string;\n description: string;\n color: string;\n type?: PlotNodeType;\n}\n\nexport interface PlotConnection {\n id: string;\n source: string;\n target: string;\n}\n\nexport interface WorkflowData {\n nodes: PlotNode[];\n connections: PlotConnection[];\n}\n\nexport type IdeaStatus = 'todo' | 'progress' | 'done';\nexport type IdeaCategory = 'plot' | 'character' | 'research' | 'todo';\n\nexport interface Idea {\n id: string;\n title: string;\n description: string;\n status: IdeaStatus;\n category: IdeaCategory;\n createdAt: number;\n}\n\nexport interface BookSettings {\n genre: string;\n subGenre?: string;\n targetAudience: string;\n tone: string;\n pov: string;\n tense: string;\n synopsis: string;\n themes: string;\n}\n\nexport interface BookProject {\n id: string;\n title: string;\n author: string;\n lastModified: number;\n settings?: BookSettings;\n // Direct fields sometimes used in creation/updates before settings normalization\n genre?: string;\n pov?: string;\n tense?: string;\n chapters: Chapter[];\n entities: Entity[];\n workflow?: WorkflowData;\n templates?: EntityTemplate[];\n styleGuide?: string;\n ideas?: Idea[];\n}\n\nexport interface ChatMessage {\n id: string;\n role: 'user' | 'model';\n text: string;\n responseType?: 'draft' | 'reflection';\n isLoading?: boolean;\n}\n\n// --- SAAS TYPES ---\n\nexport interface PlanData {\n id: string;\n name: string;\n displayName: string;\n price: number;\n description: string;\n features: string[];\n isPopular: boolean;\n maxProjects: number;\n maxAiActions: number;\n}\n\nexport interface Subscription {\n plan: string; // The ID of the plan\n planDetails?: PlanData; // The populated plan details from DB\n startDate: number;\n status: 'active' | 'canceled' | 'past_due';\n}\n\nexport interface UserUsage {\n aiActionsCurrent: number;\n aiActionsLimit: number;\n projectsLimit: number;\n}\n\nexport interface UserPreferences {\n theme: 'light' | 'dark' | 'sepia';\n dailyWordGoal: number;\n language: 'fr' | 'en';\n}\n\nexport interface UserStats {\n totalWordsWritten: number;\n writingStreak: number;\n lastWriteDate: number;\n}\n\nexport interface UserProfile {\n id: string;\n email: string;\n name: string;\n avatar?: string;\n bio?: string;\n subscription: Subscription;\n usage: UserUsage;\n preferences: UserPreferences;\n stats: UserStats;\n}\n\nexport type ViewMode = 'write' | 'world_building' | 'workflow' | 'settings' | 'preview' | 'ideas' | 'landing' | 'features' | 'pricing' | 'checkout' | 'dashboard' | 'auth' | 'signup' | 'profile';\n"],"names":[],"mappings":";;;;AACO,IAAA,AAAK,oCAAA;;;;;WAAA"}}, {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, {"offset": {"line": 146, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n // Use _count for display before full details are loaded\r\n chapters: Array.from({ length: p._count?.chapters || 0 }, (_, i) => ({ id: `placeholder-${i}`, title: '', content: '' })),\r\n entities: Array.from({ length: p._count?.entities || 0 }, (_, i) => ({ id: `placeholder-${i}`, type: 'character' as any, name: '', description: '' })),\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 503, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n\n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.planDetails?.displayName || user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n Écrire un nouveau livre\n \n
\n\n
\n {projects.map(p => (\n onSelect(p.id)}\n 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\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n \n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 503, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Dashboard.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { BookProject, UserProfile } from '@/lib/types';\nimport { Plus, Book, Clock, Star, ChevronRight, LogOut, LayoutDashboard, User, Target, Flame, Edit3 } from 'lucide-react';\n\ninterface DashboardProps {\n user: UserProfile;\n projects: BookProject[];\n onSelect: (id: string) => void;\n onCreate: () => void;\n onLogout: () => void;\n onPricing: () => void;\n onProfile: () => void;\n}\n\nconst Dashboard: React.FC = ({ user, projects, onSelect, onCreate, onLogout, onPricing, onProfile }) => {\n return (\n
\n
\n\n {/* User Card */}\n
\n
\n
\n \"Avatar\"\n
\n
\n
\n

Bonjour, {user.name} 👋

\n
\n {user.subscription.planDetails?.displayName || user.subscription.plan}\n Membre depuis le 24 janv.\n
\n
\n
\n
\n \n \n
\n
\n\n {/* Stats Section */}\n
\n
\n
\n
\n

Série actuelle

\n

{user.stats.writingStreak} Jours

\n
\n
\n
\n
\n
\n

Mots écrits

\n

{user.stats.totalWordsWritten.toLocaleString()}

\n
\n
\n
\n
\n
\n

Objectif du jour

\n

{user.preferences.dailyWordGoal} Mots

\n
\n
\n
\n\n
\n {/* Project List */}\n
\n
\n

Mes Romans

\n \n Écrire un nouveau livre\n \n
\n\n
\n {projects.map(p => (\n onSelect(p.id)}\n 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\"\n >\n
\n
\n \n
\n

{p.title}

\n

Dernière modification : {new Date(p.lastModified).toLocaleDateString()}

\n
\n
\n {p.chapters.length} Chapitres\n \n
\n
\n ))}\n {projects.length === 0 && (\n
\n \n

Prêt à commencer votre premier roman ?

\n \n
\n )}\n
\n
\n\n {/* Sidebar Stats & Plan */}\n
\n
\n
\n

Utilisation

\n
\n
\n
\n Actions IA\n {user.usage.aiActionsCurrent} / {user.usage.aiActionsLimit === 999999 ? '∞' : user.usage.aiActionsLimit}\n
\n
\n \n
\n
\n
\n
\n Emplacements Roman\n {projects.length} / {user.usage.projectsLimit}\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 1172, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/dashboard/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport Dashboard from '@/components/Dashboard';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\nimport { useEffect } from 'react';\r\n\r\nexport default function DashboardPage() {\r\n const router = useRouter();\r\n const { user, logout, loading } = useAuthContext();\r\n const { projects, setCurrentProjectId, createProject } = useProjects(user);\r\n\r\n useEffect(() => {\r\n if (!loading && !user) {\r\n router.replace('/login');\r\n }\r\n }, [user, loading, router]);\r\n\r\n if (loading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }}\r\n onCreate={async () => {\r\n try {\r\n const id = await createProject();\r\n if (id) {\r\n setCurrentProjectId(id);\r\n router.push(`/project/${id}`);\r\n }\r\n } catch (err: any) {\r\n if (err?.message?.includes('Limite')) {\r\n alert(err.message);\r\n router.push('/pricing');\r\n } else {\r\n alert('Erreur lors de la création du projet');\r\n }\r\n }\r\n }}\r\n onLogout={() => {\r\n logout();\r\n router.push('/');\r\n }}\r\n onPricing={() => router.push('/pricing')}\r\n onProfile={() => router.push('/profile')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;;;AAPA;;;;;;;AASe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kMAAc;IAChD,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAA,yLAAW,EAAC;IAErE,IAAA,sNAAS;mCAAC;YACN,IAAI,CAAC,WAAW,CAAC,MAAM;gBACnB,OAAO,OAAO,CAAC;YACnB;QACJ;kCAAG;QAAC;QAAM;QAAS;KAAO;IAE1B,IAAI,WAAW,CAAC,MAAM;QAClB,qBACI,yOAAC;YAAI,WAAU;;8BACX,yOAAC,2QAAO;oBAAC,WAAU;oBAAkC,MAAM;;;;;;8BAC3D,yOAAC;oBAAI,WAAU;;sCACX,yOAAC,yQAAQ;4BAAC,WAAU;4BAAgB,MAAM;;;;;;sCAC1C,yOAAC;4BAAK,WAAU;sCAAoB;;;;;;;;;;;;;;;;;;IAIpD;IAEA,qBACI,yOAAC,yLAAS;QACN,MAAM;QACN,UAAU;QACV,UAAU,CAAC;YACP,oBAAoB;YACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;QAChC;QACA,UAAU;YACN,IAAI;gBACA,MAAM,KAAK,MAAM;gBACjB,IAAI,IAAI;oBACJ,oBAAoB;oBACpB,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI;gBAChC;YACJ,EAAE,OAAO,KAAU;gBACf,IAAI,KAAK,SAAS,SAAS,WAAW;oBAClC,MAAM,IAAI,OAAO;oBACjB,OAAO,IAAI,CAAC;gBAChB,OAAO;oBACH,MAAM;gBACV;YACJ;QACJ;QACA,UAAU;YACN;YACA,OAAO,IAAI,CAAC;QAChB;QACA,WAAW,IAAM,OAAO,IAAI,CAAC;QAC7B,WAAW,IAAM,OAAO,IAAI,CAAC;;;;;;AAGzC;GAvDwB;;QACL,8LAAS;QACU,kMAAc;QACS,yLAAW;;;KAHhD"}}, {"offset": {"line": 1304, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/next/navigation.js"],"sourcesContent":["module.exports = require('./dist/client/components/navigation')\n"],"names":[],"mappings":"AAAA,OAAO,OAAO","ignoreList":[0]}}, {"offset": {"line": 1309, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/mergeClasses.ts"],"sourcesContent":["/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAA,CAAA,CAAA,CAAe,CAAA,GAA2C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACrE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,GAAO,KAAA,CAAA,CAAA,CAAA,CAAA,CAAU;QACnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACE,OAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAChB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CACjC,KAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,KAAM,CAAA,CAAA,CAAA,CAAA,CAAA;IAEjC,CAAC,CAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAG,CAAA,CACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}}, diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js index 734f631..db01b13 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js @@ -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", { - 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", { - 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: [ /*#__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", @@ -121,7 +121,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -158,7 +158,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ ...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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -187,7 +187,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ ...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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", 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", { 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", { - 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" }, void 0, false, { 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", { value: settings.synopsis, 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 ?" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -241,7 +241,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -276,7 +276,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ list: "genre-suggestions", value: settings.genre, 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" }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -317,7 +317,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.subGenre || '', 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" }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -344,7 +344,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.targetAudience, 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..." }, void 0, false, { 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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -378,7 +378,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ 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"], { size: 14, - className: "absolute left-3 top-3 text-slate-400" + className: "absolute left-3 top-3 text-theme-muted" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", lineNumber: 138, @@ -388,7 +388,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ type: "text", value: settings.themes, 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..." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -417,7 +417,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "space-y-4", 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", { - 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: [ /*#__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, @@ -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", { 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", { - 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: [ /*#__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 @@ -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", { value: settings.pov, 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: [ /*#__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: "", @@ -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", { 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", { - 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: [ /*#__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 @@ -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", { value: settings.tense, 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: [ /*#__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: "", @@ -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", { 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", { - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -556,7 +556,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ list: "tone-suggestions", value: settings.tone, 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..." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -593,7 +593,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ className: "mt-4", 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", { - 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)" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -601,7 +601,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ columnNumber: 29 }, ("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", { - 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").' }, void 0, false, { 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", { value: project.styleGuide || '', 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." }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -671,10 +671,10 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ columnNumber: 29 }, ("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", { - 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: [ /*#__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 ?" }, void 0, false, { 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)), /*#__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, - 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" }, void 0, false, { 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)), /*#__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), - 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" }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/BookSettings.tsx", @@ -706,7 +706,7 @@ const BookSettingsComponent = ({ project, onUpdate, onDeleteProject })=>{ 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", { 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" }, void 0, false, { 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$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$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 _s = __turbopack_context__.k.signature(); @@ -771,32 +769,26 @@ var _s = __turbopack_context__.k.signature(); ; ; ; -; -; function SettingsPage() { _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 { 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 { 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 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"], { project: project, onUpdate: (updates)=>updateProject(updates), onDeleteProject: async ()=>{ - await deleteProject(projectId); + await deleteProject(); router.push('/dashboard'); } }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page.tsx", - lineNumber: 16, + lineNumber: 12, columnNumber: 9 }, this); } -_s(SettingsPage, "py5duf4J+5ixrZd5CDtP46crjTA=", false, function() { +_s(SettingsPage, "iosVZdilTb+M2ZD6lSwYyf9JEmQ=", false, function() { 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$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"] ]; }); diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js.map index efd7a60..174edb0 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_d99083a0._.js.map @@ -2,11 +2,11 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n 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\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n 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]\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n 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]\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n className=\"w-full p-2.5 bg-[#eef2ff] border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n className=\"w-full p-2.5 border border-slate-300 rounded-lg focus:ring-2 focus:ring-blue-500 outline-none bg-[#eef2ff]\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n 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\").\n

\n handleStyleGuideChange(e.target.value)}\n 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\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-slate-200 text-slate-700 rounded hover:bg-slate-300 text-sm\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n className=\"px-4 py-2 bg-white border border-red-300 text-red-600 rounded hover:bg-red-50 text-sm font-bold\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;"],"names":[],"mappings":"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"}}, - {"offset": {"line": 757, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function SettingsPage() {\r\n const { project, projectId, updateProject } = useProjectContext();\r\n const { user } = useAuthContext();\r\n const { deleteProject } = useProjects(user);\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject(projectId);\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;AACA;;;AANA;;;;;;AAQe,SAAS;;IACpB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAA,wMAAiB;IAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,kMAAc;IAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,yLAAW,EAAC;IACtC,MAAM,SAAS,IAAA,8LAAS;IAExB,qBACI,yOAAC,4LAAqB;QAClB,SAAS;QACT,UAAU,CAAC,UAAY,cAAc;QACrC,iBAAiB;YACb,MAAM,cAAc;YACpB,OAAO,IAAI,CAAC;QAChB;;;;;;AAGZ;GAhBwB;;QAC0B,wMAAiB;QAC9C,kMAAc;QACL,yLAAW;QACtB,8LAAS;;;KAJJ"}}, - {"offset": {"line": 812, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/feather.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KAET;IACA;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAS;KAAA;IAC1C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC7C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 864, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/users.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA8B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC3D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,GAAA,CAAA;YAAK,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,OAAA;QAAA,CAAS;KAAA;CACvD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 925, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/clock.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAe,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC3D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 972, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, - {"offset": {"line": 1030, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/hash.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACjE;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAChE;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CACnE;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/BookSettings.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { BookProject, BookSettings } from '@/lib/types';\nimport { GENRES, TONES, POV_OPTIONS, TENSE_OPTIONS } from '@/lib/constants';\nimport { Settings, Book, Feather, Users, Clock, Target, Hash } from 'lucide-react';\n\ninterface BookSettingsProps {\n project: BookProject;\n onUpdate: (project: BookProject) => void;\n onDeleteProject: () => void;\n}\n\nconst DEFAULT_SETTINGS: BookSettings = {\n genre: '',\n subGenre: '',\n targetAudience: '',\n tone: '',\n pov: '',\n tense: '',\n synopsis: '',\n themes: ''\n};\n\nconst BookSettingsComponent: React.FC = ({ project, onUpdate, onDeleteProject }) => {\n const [settings, setSettings] = useState(project.settings || DEFAULT_SETTINGS);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n useEffect(() => {\n if (project.settings) {\n setSettings(project.settings);\n }\n }, [project.settings]);\n\n const handleChange = (key: keyof BookSettings, value: string) => {\n const newSettings = { ...settings, [key]: value };\n setSettings(newSettings);\n onUpdate({ ...project, settings: newSettings });\n };\n\n const handleStyleGuideChange = (value: string) => {\n onUpdate({ ...project, styleGuide: value });\n };\n\n return (\n
\n
\n\n
\n
\n \n
\n
\n

Paramètres Généraux du Roman

\n

Définissez l'identité, le ton et les règles de votre œuvre pour guider l'IA.

\n
\n
\n\n
\n
\n

\n Informations de Base\n

\n
\n
\n \n onUpdate({ ...project, title: e.target.value })}\n 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\"\n />\n
\n
\n \n onUpdate({ ...project, author: e.target.value })}\n 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\"\n />\n
\n
\n
\n \n handleChange('synopsis', e.target.value)}\n 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\"\n placeholder=\"De quoi parle votre histoire dans les grandes lignes ?\"\n />\n
\n
\n\n
\n

\n Genre & Public\n

\n
\n
\n \n handleChange('genre', e.target.value)}\n 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\"\n placeholder=\"Ex: Fantasy\"\n />\n \n {GENRES.map(g => \n
\n
\n \n handleChange('subGenre', e.target.value)}\n 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\"\n placeholder=\"Ex: Dark Fantasy\"\n />\n
\n
\n \n handleChange('targetAudience', e.target.value)}\n 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\"\n placeholder=\"Ex: Jeune Adulte, Adulte...\"\n />\n
\n
\n
\n \n
\n \n handleChange('themes', e.target.value)}\n 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\"\n placeholder=\"Ex: Vengeance, Rédemption, Voyage initiatique...\"\n />\n
\n
\n
\n\n
\n

\n Narration & Style\n

\n
\n
\n \n handleChange('pov', e.target.value)}\n 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\"\n >\n \n {POV_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tense', e.target.value)}\n 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\"\n >\n \n {TENSE_OPTIONS.map(o => )}\n \n
\n
\n \n handleChange('tone', e.target.value)}\n 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\"\n placeholder=\"Ex: Sombre, Ironique...\"\n />\n \n {TONES.map(t => \n
\n
\n\n
\n \n

\n 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\").\n

\n handleStyleGuideChange(e.target.value)}\n 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\"\n placeholder=\"Ex: Utilise un style descriptif et sensoriel. Évite les adverbes. Le narrateur est cynique.\"\n />\n
\n
\n\n
\n

\n ⚠️ Zone de Danger\n

\n
\n

Supprimer le projet

\n

\n Cette action est irréversible. Toutes les données associées à ce projet (chapitres, entités, idées) seront définitivement effacées.\n

\n {showDeleteConfirm ? (\n
\n Êtes-vous sûr ?\n \n Oui, supprimer définitivement\n \n setShowDeleteConfirm(false)}\n className=\"px-4 py-2 bg-theme-bg text-theme-text border border-theme-border rounded hover:opacity-80 text-sm transition-opacity\"\n >\n Annuler\n \n
\n ) : (\n setShowDeleteConfirm(true)}\n 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\"\n >\n Supprimer ce projet\n \n )}\n
\n
\n
\n
\n
\n );\n};\n\nexport default BookSettingsComponent;"],"names":[],"mappings":"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"}}, + {"offset": {"line": 757, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/settings/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport BookSettingsComponent from '@/components/BookSettings';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport { useRouter } from 'next/navigation';\r\n\r\nexport default function SettingsPage() {\r\n const { project, updateProject, deleteProject } = useProjectContext();\r\n const router = useRouter();\r\n\r\n return (\r\n updateProject(updates)}\r\n onDeleteProject={async () => {\r\n await deleteProject();\r\n router.push('/dashboard');\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMe,SAAS;;IACpB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAA,wMAAiB;IACnE,MAAM,SAAS,IAAA,8LAAS;IAExB,qBACI,yOAAC,4LAAqB;QAClB,SAAS;QACT,UAAU,CAAC,UAAY,cAAc;QACrC,iBAAiB;YACb,MAAM;YACN,OAAO,IAAI,CAAC;QAChB;;;;;;AAGZ;GAdwB;;QAC8B,wMAAiB;QACpD,8LAAS;;;KAFJ"}}, + {"offset": {"line": 804, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/feather.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/feather.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z',\n key: '18jl4k',\n },\n ],\n ['path', { d: 'M16 8 2 22', key: 'vp34q' }],\n ['path', { d: 'M17.5 15H9', key: '1oz8nu' }],\n];\n\n/**\n * @component @name Feather\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIuNjcgMTlhMiAyIDAgMCAwIDEuNDE2LS41ODhsNi4xNTQtNi4xNzJhNiA2IDAgMCAwLTguNDktOC40OUw1LjU4NiA5LjkxNEEyIDIgMCAwIDAgNSAxMS4zMjhWMThhMSAxIDAgMCAwIDEgMXoiIC8+CiAgPHBhdGggZD0iTTE2IDggMiAyMiIgLz4KICA8cGF0aCBkPSJNMTcuNSAxNUg5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/feather\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Feather = createLucideIcon('feather', __iconNode);\n\nexport default Feather;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QACE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA;YACE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACH,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA;KAET;IACA;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAS;KAAA;IAC1C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAc,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC7C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 856, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/users.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/users.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2', key: '1yyitq' }],\n ['path', { d: 'M16 3.128a4 4 0 0 1 0 7.744', key: '16gr8j' }],\n ['path', { d: 'M22 21v-2a4 4 0 0 0-3-3.87', key: 'kshegd' }],\n ['circle', { cx: '9', cy: '7', r: '4', key: 'nufk8' }],\n];\n\n/**\n * @component @name Users\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MiIgLz4KICA8cGF0aCBkPSJNMTYgMy4xMjhhNCA0IDAgMCAxIDAgNy43NDQiIC8+CiAgPHBhdGggZD0iTTIyIDIxdi0yYTQgNCAwIDAgMC0zLTMuODciIC8+CiAgPGNpcmNsZSBjeD0iOSIgY3k9IjciIHI9IjQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/users\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Users = createLucideIcon('users', __iconNode);\n\nexport default Users;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA6C,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC1E;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA+B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAA8B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC3D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,GAAA,CAAA;YAAK,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,OAAA;QAAA,CAAS;KAAA;CACvD;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 917, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/clock.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/clock.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n];\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgNnY2bDQgMiIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon('clock', __iconNode);\n\nexport default Clock;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAe,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC5C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC3D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAA,CAAA,CAAA,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 964, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/target.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/target.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['circle', { cx: '12', cy: '12', r: '6', key: '1vlfrh' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n];\n\n/**\n * @component @name Target\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI2IiAvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/target\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Target = createLucideIcon('target', __iconNode);\n\nexport default Target;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACzD;QAAC,QAAA,CAAA;QAAU,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA;YAAK,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACxD;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAU;YAAE,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,QAAA;QAAA,CAAU;KAAA;CAC1D;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,MAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}, + {"offset": {"line": 1022, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/hash.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/hash.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '4', x2: '20', y1: '9', y2: '9', key: '4lhtct' }],\n ['line', { x1: '4', x2: '20', y1: '15', y2: '15', key: 'vyu0kd' }],\n ['line', { x1: '10', x2: '8', y1: '3', y2: '21', key: '1ggp8o' }],\n ['line', { x1: '16', x2: '14', y1: '3', y2: '21', key: 'weycgp' }],\n];\n\n/**\n * @component @name Hash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNCIgeDI9IjIwIiB5MT0iOSIgeTI9IjkiIC8+CiAgPGxpbmUgeDE9IjQiIHgyPSIyMCIgeTE9IjE1IiB5Mj0iMTUiIC8+CiAgPGxpbmUgeDE9IjEwIiB4Mj0iOCIgeTE9IjMiIHkyPSIyMSIgLz4KICA8bGluZSB4MT0iMTYiIHgyPSIxNCIgeTE9IjMiIHkyPSIyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/hash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Hash = createLucideIcon('hash', __iconNode);\n\nexport default Hash;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAA,CAAA,CAAA,CAAuB;IAClC;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/D;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IACjE;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,CAAA,CAAA,EAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAChE;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,EAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA;YAAK,CAAA,CAAA,CAAA,CAAI,IAAA,CAAA;YAAM,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CACnE;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAA,CAAA,CAAA,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js index 7619006..0ca54f0 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js @@ -646,7 +646,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }; 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", { - 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: [ /*#__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", @@ -660,7 +660,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 39, - columnNumber: 13 + columnNumber: 11 }, ("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", { className: "font-bold tracking-tight", @@ -668,7 +668,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 40, - columnNumber: 13 + columnNumber: 11 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { @@ -685,7 +685,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 44, - columnNumber: 17 + columnNumber: 13 }, ("TURBOPACK compile-time value", void 0)), " ", usage.aiActionsCurrent, @@ -695,7 +695,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 43, - columnNumber: 13 + columnNumber: 11 }, ("TURBOPACK compile-time value", void 0)) ] }, void 0, true, { @@ -742,10 +742,10 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen columnNumber: 9 }, ("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", { - 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: [ 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: [ /*#__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, @@ -769,7 +769,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 62, - columnNumber: 17 + columnNumber: 15 }, ("TURBOPACK compile-time value", void 0)) ] }, 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", { 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", { - 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: [ 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", @@ -790,14 +790,14 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 73, - columnNumber: 131 + columnNumber: 129 }, ("TURBOPACK compile-time value", void 0)), " Réflexion" ] }, void 0, true, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/AIPanel.tsx", lineNumber: 73, - columnNumber: 19 + columnNumber: 17 }, ("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", { 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", { 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", { - 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: [ /*#__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, @@ -857,7 +857,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen columnNumber: 7 }, ("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", { - 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", { onSubmit: handleSubmit, className: "relative", @@ -867,7 +867,7 @@ const AIPanel = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGen value: input, onChange: (e)=>setInput(e.target.value), 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 }, void 0, false, { 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 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", { - 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: [ /*#__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`, @@ -1296,20 +1296,20 @@ const EditorShell = (props)=>{ className: "flex-1 flex flex-col h-full overflow-hidden", 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", { - 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: [ /*#__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", 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", { 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"], { size: 20 }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", lineNumber: 100, - columnNumber: 130 + columnNumber: 133 }, ("TURBOPACK compile-time value", void 0)) }, void 0, false, { fileName: "[project]/Documents/00 - projet/plumeia/src/components/layout/EditorShell.tsx", @@ -1428,7 +1428,7 @@ const EditorShell = (props)=>{ columnNumber: 13 }, ("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", { - 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"], { chatHistory: props.chatHistory, onSendMessage: props.onSendMessage, diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map index cad428b..474f8b2 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_74b79b3f._.js.map @@ -7,8 +7,8 @@ {"offset": {"line": 62, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/constants.ts"],"sourcesContent":["\nimport { EntityType } from \"./types\";\n\nexport const DEFAULT_BOOK_TITLE = \"Nouveau Roman\";\nexport const DEFAULT_AUTHOR = \"Auteur Inconnu\";\n\nexport const INITIAL_CHAPTER = {\n id: 'chap-1',\n title: 'Chapitre 1',\n content: '

Il était une fois...

',\n summary: 'Début de l\\'histoire.'\n};\n\nexport const ENTITY_ICONS: Record = {\n [EntityType.CHARACTER]: '👤',\n [EntityType.LOCATION]: '🏰',\n [EntityType.OBJECT]: '🗝️',\n [EntityType.NOTE]: '📝',\n};\n\n// Colors for tags\nexport const ENTITY_COLORS: Record = {\n [EntityType.CHARACTER]: 'bg-blue-100 text-blue-800 border-blue-200',\n [EntityType.LOCATION]: 'bg-green-100 text-green-800 border-green-200',\n [EntityType.OBJECT]: 'bg-amber-100 text-amber-800 border-amber-200',\n [EntityType.NOTE]: 'bg-gray-100 text-gray-800 border-gray-200',\n};\n\n// --- Character Creation Lists ---\n\nexport const HAIR_COLORS = [\n \"Brun\", \"Noir\", \"Blond\", \"Roux\", \"Auburn\", \"Gris\", \"Blanc\", \"Châtain\", \"Chauve\", \"Teinture (Bleu/Rose/Etc)\"\n];\n\nexport const EYE_COLORS = [\n \"Marron\", \"Bleu\", \"Vert\", \"Noisette\", \"Gris\", \"Noir\", \"Vairons\", \"Ambre\"\n];\n\nexport const ARCHETYPES = [\n \"Le Héros\", \"L'Ombre / Le Méchant\", \"Le Mentor\", \"Le Gardien du Seuil\",\n \"Le Shapeshifter (Changeforme)\", \"Le Trickster (Farceur)\", \"L'Allié\", \"L'Élu\",\n \"Le Rebelle\", \"Le Séducteur\", \"Le Sage\", \"Le Guerrier\", \"L'Innocent\"\n];\n\n// --- Book Settings Lists ---\n\nexport const GENRES = [\n \"Fantasy\", \"Science-Fiction\", \"Thriller / Polar\", \"Romance\", \"Historique\",\n \"Horreur\", \"Aventure\", \"Contemporain\", \"Jeunesse / Young Adult\", \"Dystopie\"\n];\n\nexport const TONES = [\n \"Sombre & Sérieux\", \"Léger & Humoristique\", \"Épique & Grandiose\",\n \"Mélancolique\", \"Mystérieux\", \"Optimiste\", \"Cynique\", \"Romantique\"\n];\n\nexport const POV_OPTIONS = [\n \"1ère personne (Je)\",\n \"3ème personne (Limitée au protagoniste)\",\n \"3ème personne (Omnisciente)\",\n \"Multi-points de vue (Alterné)\"\n];\n\nexport const TENSE_OPTIONS = [\n \"Passé (Passé simple / Imparfait)\",\n \"Présent de narration\"\n];"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEO,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAEvB,MAAM,kBAAkB;IAC7B,IAAI;IACJ,OAAO;IACP,SAAS;IACT,SAAS;AACX;AAEO,MAAM,eAA2C;IACtD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAGO,MAAM,gBAA4C;IACvD,CAAC,gLAAU,CAAC,SAAS,CAAC,EAAE;IACxB,CAAC,gLAAU,CAAC,QAAQ,CAAC,EAAE;IACvB,CAAC,gLAAU,CAAC,MAAM,CAAC,EAAE;IACrB,CAAC,gLAAU,CAAC,IAAI,CAAC,EAAE;AACrB;AAIO,MAAM,cAAc;IACzB;IAAQ;IAAQ;IAAS;IAAQ;IAAU;IAAQ;IAAS;IAAW;IAAU;CAClF;AAEM,MAAM,aAAa;IACxB;IAAU;IAAQ;IAAQ;IAAY;IAAQ;IAAQ;IAAW;CAClE;AAEM,MAAM,aAAa;IACxB;IAAY;IAAwB;IAAa;IACjD;IAAiC;IAA0B;IAAW;IACtE;IAAc;IAAgB;IAAW;IAAe;CACzD;AAIM,MAAM,SAAS;IACpB;IAAW;IAAmB;IAAoB;IAAW;IAC7D;IAAW;IAAY;IAAgB;IAA0B;CAClE;AAEM,MAAM,QAAQ;IACnB;IAAoB;IAAwB;IAC5C;IAAgB;IAAc;IAAa;IAAW;CACvD;AAEM,MAAM,cAAc;IACzB;IACA;IACA;IACA;CACD;AAEM,MAAM,gBAAgB;IAC3B;IACA;CACD"}}, {"offset": {"line": 186, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useProjects.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport {\r\n BookProject,\r\n Chapter,\r\n Entity,\r\n EntityType,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\nimport {\r\n DEFAULT_BOOK_TITLE,\r\n DEFAULT_AUTHOR,\r\n INITIAL_CHAPTER\r\n} from '@/lib/constants';\r\n\r\nexport const useProjects = (user: UserProfile | null) => {\r\n const [projects, setProjects] = useState([]);\r\n const [currentProjectId, setCurrentProjectId] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Load Projects\r\n useEffect(() => {\r\n if (!user) {\r\n setProjects([]);\r\n return;\r\n }\r\n const loadProjects = async () => {\r\n setLoading(true);\r\n try {\r\n const data = await api.projects.list();\r\n const mapped: BookProject[] = (data || []).map((p: any) => ({\r\n id: p.id,\r\n title: p.title,\r\n author: p.author,\r\n lastModified: new Date(p.updatedAt).getTime(),\r\n // Use _count for display before full details are loaded\r\n chapters: Array.from({ length: p._count?.chapters || 0 }, (_, i) => ({ id: `placeholder-${i}`, title: '', content: '' })),\r\n entities: Array.from({ length: p._count?.entities || 0 }, (_, i) => ({ id: `placeholder-${i}`, type: 'character' as any, name: '', description: '' })),\r\n ideas: [],\r\n settings: p.settings || undefined\r\n }));\r\n setProjects(mapped);\r\n } catch (err) {\r\n console.error('Failed to load projects', err);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n loadProjects();\r\n }, [user]);\r\n\r\n // Load details when project is selected\r\n useEffect(() => {\r\n if (!currentProjectId) return;\r\n\r\n const loadProjectDetails = async () => {\r\n try {\r\n const fullProject = await api.projects.get(currentProjectId);\r\n const mapped: BookProject = {\r\n id: fullProject.id,\r\n title: fullProject.title,\r\n author: fullProject.author,\r\n lastModified: new Date(fullProject.updatedAt).getTime(),\r\n settings: fullProject.settings || undefined,\r\n styleGuide: fullProject.styleGuide || undefined,\r\n chapters: (fullProject.chapters || []).map((c: any) => ({\r\n id: c.id,\r\n title: c.title,\r\n content: c.content,\r\n summary: c.summary,\r\n })),\r\n entities: (fullProject.entities || []).map((e: any) => ({\r\n id: e.id,\r\n type: e.type,\r\n name: e.name,\r\n description: e.description,\r\n details: e.details,\r\n storyContext: e.storyContext,\r\n attributes: e.attributes,\r\n customValues: e.customValues,\r\n })),\r\n ideas: (fullProject.ideas || []).map((i: any) => ({\r\n id: i.id,\r\n title: i.title,\r\n description: i.description,\r\n status: i.status,\r\n category: i.category,\r\n createdAt: new Date(i.createdAt).getTime(),\r\n })),\r\n workflow: {\r\n nodes: (fullProject.plotNodes || []).map((n: any) => ({\r\n id: n.id,\r\n x: n.x,\r\n y: n.y,\r\n title: n.title,\r\n description: n.description,\r\n color: n.color,\r\n type: n.type,\r\n })),\r\n connections: (fullProject.plotConnections || []).map((c: any) => ({\r\n id: c.id,\r\n source: c.source,\r\n target: c.target,\r\n })),\r\n },\r\n };\r\n setProjects(prev => prev.map(p => p.id === currentProjectId ? mapped : p));\r\n } catch (err) {\r\n console.error(\"Failed to load project details\", err);\r\n }\r\n };\r\n loadProjectDetails();\r\n }, [currentProjectId]);\r\n\r\n const createProject = async () => {\r\n if (!user) return;\r\n\r\n try {\r\n const created = await api.projects.create({\r\n title: DEFAULT_BOOK_TITLE,\r\n author: user.name || DEFAULT_AUTHOR,\r\n settings: { genre: 'Fantasy', targetAudience: 'Adult', tone: 'Epic' },\r\n });\r\n\r\n const newProject: BookProject = {\r\n id: created.id,\r\n title: created.title,\r\n author: created.author,\r\n lastModified: Date.now(),\r\n chapters: [],\r\n entities: [],\r\n ideas: [],\r\n settings: created.settings,\r\n };\r\n\r\n setProjects(prev => [...prev, newProject]);\r\n await addChapter(created.id, INITIAL_CHAPTER);\r\n return created.id;\r\n } catch (err) {\r\n console.error('Failed to create project', err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateProject = async (id: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => p.id === id ? { ...p, ...data } : p));\r\n\r\n try {\r\n // Persist project fields\r\n const payload: any = {};\r\n if (data.title !== undefined) payload.title = data.title;\r\n if (data.author !== undefined) payload.author = data.author;\r\n if (data.settings !== undefined) payload.settings = data.settings;\r\n if (data.styleGuide !== undefined) payload.styleGuide = data.styleGuide;\r\n if (Object.keys(payload).length > 0) {\r\n await api.projects.update(id, payload);\r\n }\r\n\r\n // Persist workflow (nodes + connections) separately\r\n if (data.workflow) {\r\n await api.projects.syncWorkflow(id, {\r\n nodes: data.workflow.nodes || [],\r\n connections: data.workflow.connections || [],\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to update project\", err);\r\n }\r\n };\r\n\r\n const addChapter = async (projectId: string, chapterData: Partial) => {\r\n try {\r\n const newChap = await api.chapters.create({\r\n projectId,\r\n title: chapterData.title || 'New Chapter',\r\n content: chapterData.content || '',\r\n summary: chapterData.summary || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: [...p.chapters, {\r\n id: newChap.id,\r\n title: newChap.title,\r\n content: newChap.content,\r\n summary: newChap.summary,\r\n }]\r\n };\r\n }));\r\n return newChap.id;\r\n } catch (err) {\r\n console.error(\"Failed to add chapter\", err);\r\n return null;\r\n }\r\n };\r\n\r\n const updateChapter = async (projectId: string, chapterId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n chapters: p.chapters.map(c => c.id === chapterId ? { ...c, ...data } : c)\r\n };\r\n }));\r\n\r\n try {\r\n await api.chapters.update(chapterId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update chapter\", err);\r\n }\r\n };\r\n\r\n const createEntity = async (projectId: string, type: EntityType, initialData?: Partial) => {\r\n try {\r\n const newEntity = await api.entities.create({\r\n projectId,\r\n type,\r\n name: initialData?.name || `Nouveau ${type}`,\r\n description: initialData?.description || '',\r\n details: initialData?.details || '',\r\n attributes: initialData?.attributes || undefined,\r\n customValues: initialData?.customValues || undefined,\r\n });\r\n\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: [...p.entities, {\r\n id: newEntity.id,\r\n type: newEntity.type,\r\n name: newEntity.name,\r\n description: newEntity.description,\r\n details: newEntity.details,\r\n attributes: newEntity.attributes,\r\n customValues: newEntity.customValues || {},\r\n }]\r\n };\r\n }));\r\n return newEntity.id;\r\n } catch (err) {\r\n console.error(\"Failed to create entity\", err);\r\n throw err;\r\n }\r\n };\r\n\r\n const updateEntity = async (projectId: string, entityId: string, data: Partial) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.map(e => e.id === entityId ? { ...e, ...data } : e)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.update(entityId, data);\r\n } catch (err) {\r\n console.error(\"Failed to update entity\", err);\r\n }\r\n };\r\n\r\n const deleteEntity = async (projectId: string, entityId: string) => {\r\n setProjects(prev => prev.map(p => {\r\n if (p.id !== projectId) return p;\r\n return {\r\n ...p,\r\n entities: p.entities.filter(e => e.id !== entityId)\r\n };\r\n }));\r\n\r\n try {\r\n await api.entities.delete(entityId);\r\n } catch (err) {\r\n console.error(\"Failed to delete entity\", err);\r\n }\r\n };\r\n\r\n return {\r\n projects,\r\n currentProjectId,\r\n setCurrentProjectId,\r\n createProject,\r\n updateProject,\r\n addChapter,\r\n updateChapter,\r\n createEntity,\r\n updateEntity,\r\n deleteEntity,\r\n deleteProject: async (projectId: string) => {\r\n try {\r\n // Cascade delete is handled by Prisma, just delete the project\r\n await api.projects.delete(projectId);\r\n\r\n setProjects(prev => prev.filter(p => p.id !== projectId));\r\n if (currentProjectId === projectId) {\r\n setCurrentProjectId(null);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to delete project\", err);\r\n }\r\n }\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 543, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/hooks/useChat.ts"],"sourcesContent":["'use client';\r\n\r\nimport { useState } from 'react';\r\nimport {\r\n BookProject,\r\n ChatMessage,\r\n UserProfile,\r\n} from '@/lib/types';\r\nimport api from '@/lib/api';\r\n\r\nexport const useChat = () => {\r\n const [chatHistory, setChatHistory] = useState([]);\r\n const [isGenerating, setIsGenerating] = useState(false);\r\n\r\n const sendMessage = async (\r\n project: BookProject,\r\n context: string,\r\n text: string,\r\n user: UserProfile,\r\n incrementUsage: () => void\r\n ) => {\r\n const userMsg: ChatMessage = {\r\n id: Date.now().toString(),\r\n role: 'user',\r\n text: text\r\n };\r\n setChatHistory(prev => [...prev, userMsg]);\r\n setIsGenerating(true);\r\n\r\n try {\r\n const response = await api.ai.generate(\r\n project,\r\n context === 'global' ? '' : context,\r\n text,\r\n user\r\n );\r\n\r\n incrementUsage();\r\n\r\n const aiMsg: ChatMessage = {\r\n id: (Date.now() + 1).toString(),\r\n role: 'model',\r\n text: response.text,\r\n responseType: response.type\r\n };\r\n setChatHistory(prev => [...prev, aiMsg]);\r\n } catch {\r\n setChatHistory(prev => [...prev, {\r\n id: Date.now().toString(),\r\n role: 'model',\r\n text: \"Désolé, une erreur est survenue lors de la génération.\"\r\n }]);\r\n } finally {\r\n setIsGenerating(false);\r\n }\r\n };\r\n\r\n return { chatHistory, isGenerating, sendMessage };\r\n};\r\n"],"names":[],"mappings":";;;;AAEA;AAMA;;AARA;;;AAUO,MAAM,UAAU;;IACnB,MAAM,CAAC,aAAa,eAAe,GAAG,IAAA,qNAAQ,EAAgB,EAAE;IAChE,MAAM,CAAC,cAAc,gBAAgB,GAAG,IAAA,qNAAQ,EAAC;IAEjD,MAAM,cAAc,OAChB,SACA,SACA,MACA,MACA;QAEA,MAAM,UAAuB;YACzB,IAAI,KAAK,GAAG,GAAG,QAAQ;YACvB,MAAM;YACN,MAAM;QACV;QACA,eAAe,CAAA,OAAQ;mBAAI;gBAAM;aAAQ;QACzC,gBAAgB;QAEhB,IAAI;YACA,MAAM,WAAW,MAAM,2KAAG,CAAC,EAAE,CAAC,QAAQ,CAClC,SACA,YAAY,WAAW,KAAK,SAC5B,MACA;YAGJ;YAEA,MAAM,QAAqB;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,QAAQ;gBAC7B,MAAM;gBACN,MAAM,SAAS,IAAI;gBACnB,cAAc,SAAS,IAAI;YAC/B;YACA,eAAe,CAAA,OAAQ;uBAAI;oBAAM;iBAAM;QAC3C,EAAE,OAAM;YACJ,eAAe,CAAA,OAAQ;uBAAI;oBAAM;wBAC7B,IAAI,KAAK,GAAG,GAAG,QAAQ;wBACvB,MAAM;wBACN,MAAM;oBACV;iBAAE;QACN,SAAU;YACN,gBAAgB;QACpB;IACJ;IAEA,OAAO;QAAE;QAAa;QAAc;IAAY;AACpD;GAhDa"}}, - {"offset": {"line": 608, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n \n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n 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\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, - {"offset": {"line": 922, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":";;;;;AAGA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AANA;;;;AA4BA,MAAM,cAA0C,CAAC;;IAC7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG;IAChE,MAAM,CAAC,eAAe,iBAAiB,GAAG,IAAA,qNAAQ,EAAC;IACnD,MAAM,CAAC,eAAe,iBAAiB,GAAG,IAAA,qNAAQ,EAAC;IAEnD,MAAM,iBAAiB,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK;IAE3D,qBACI,yOAAC;QAAI,WAAW,CAAC,uCAAuC,EAAE,KAAK,WAAW,CAAC,KAAK,KAAK,SAAS,4BAA4B,KAAK,WAAW,CAAC,KAAK,KAAK,UAAU,iBAAiB,gBAAgB;;0BAG5L,yOAAC;gBAAM,WAAW,GAAG,gBAAgB,SAAS,MAAM,8HAA8H,CAAC;;kCAC/K,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAG,WAAU;gCAAmE,SAAS,IAAM,MAAM,gBAAgB,CAAC;;kDACnH,yOAAC,yPAAI;wCAAC,WAAU;;;;;;oCAAkB;;;;;;;0CAEtC,yOAAC;gCACG,MAAK;gCACL,OAAO,QAAQ,KAAK;gCACpB,UAAU,CAAC,IAAM,MAAM,eAAe,CAAC;wCAAE,OAAO,EAAE,MAAM,CAAC,KAAK;oCAAC;gCAC/D,WAAU;gCACV,aAAY;;;;;;0CAEhB,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAc,WAAU;;kDAClE,yOAAC,8RAAe;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;kCAIrC,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAI,WAAU;;oCAA6F;kDAC9F,yOAAC;wCAAO,SAAS,MAAM,YAAY;wCAAE,WAAU;kDAAsB,cAAA,yOAAC,yPAAI;4CAAC,MAAM;;;;;;;;;;;;;;;;;4BAE9F,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,oBACzB,yOAAC;oCAAkB,WAAU;;sDACzB,yOAAC;4CACG,SAAS,IAAM,MAAM,eAAe,CAAC,KAAK,EAAE;4CAC5C,WAAW,CAAC,8DAA8D,EAAE,qBAAqB,KAAK,EAAE,IAAI,aAAa,UAAU,sDAAsD,sBAAsB;;gDAE9M,MAAM;gDAAE;gDAAG,KAAK,KAAK;;;;;;;sDAE1B,yOAAC;4CAAO,SAAS,IAAM,MAAM,eAAe,CAAC,KAAK,EAAE;4CAAG,WAAU;sDAA6F,cAAA,yOAAC,mQAAM;gDAAC,MAAM;;;;;;;;;;;;mCAPtK,KAAK,EAAE;;;;;0CAWrB,yOAAC;gCAAI,WAAU;0CAAgE;;;;;;0CAC/E,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAU,WAAW,CAAC,2DAA2D,EAAE,aAAa,UAAU,2BAA2B,sBAAsB;;kDAAE,yOAAC,yQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACjO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAmB,WAAW,CAAC,2DAA2D,EAAE,aAAa,mBAAmB,6BAA6B,sBAAsB;;kDAAE,yOAAC,4PAAK;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CAClP,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAa,WAAW,CAAC,2DAA2D,EAAE,aAAa,aAAa,6BAA6B,sBAAsB;;kDAAE,yOAAC,yQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACzO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAU,WAAW,CAAC,2DAA2D,EAAE,aAAa,UAAU,6BAA6B,sBAAsB;;kDAAE,yOAAC,wQAAS;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACpO,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAa,WAAW,CAAC,2DAA2D,EAAE,aAAa,aAAa,6BAA6B,sBAAsB;;kDAAE,yOAAC,qQAAQ;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;kCAG7O,yOAAC;wBAAI,WAAU;;0CACX,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAI,WAAU;;0DACX,yOAAC;0DAAK;;;;;;0DACN,yOAAC;;oDAAM,KAAK,KAAK,CAAC,gBAAgB;oDAAC;oDAAI,KAAK,KAAK,CAAC,cAAc,KAAK,SAAS,MAAM,KAAK,KAAK,CAAC,cAAc;;;;;;;;;;;;;kDAEjH,yOAAC;wCAAI,WAAU;kDACX,cAAA,yOAAC;4CAAI,WAAU;4CAAqB,OAAO;gDAAE,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,AAAC,KAAK,KAAK,CAAC,gBAAgB,GAAG,KAAK,KAAK,CAAC,cAAc,GAAI,KAAK,CAAC,CAAC;4CAAC;;;;;;;;;;;;;;;;;0CAGjJ,yOAAC;gCAAO,SAAS,IAAM,MAAM,gBAAgB,CAAC;gCAAY,WAAU;;kDAAkG,yOAAC,yPAAI;wCAAC,MAAM;;;;;;oCAAM;;;;;;;0CACxL,yOAAC;gCAAO,SAAS,MAAM,QAAQ;gCAAE,WAAU;;kDAA4F,yOAAC,mQAAM;wCAAC,MAAM;;;;;;oCAAM;;;;;;;;;;;;;;;;;;;0BAKnK,yOAAC;gBAAI,WAAU;;kCACX,yOAAC;wBAAO,WAAU;;0CACd,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAO,SAAS,IAAM,iBAAiB,CAAC;wCAAgB,WAAU;kDAAsC,cAAA,yOAAC,yPAAI;4CAAC,MAAM;;;;;;;;;;;oCACpH,aAAa,wBACV,yOAAC;wCACG,MAAK;wCACL,OAAO,gBAAgB,SAAS;wCAChC,UAAU,CAAC,IAAM,MAAM,eAAe,CAAC;gDAAE,UAAU,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAA,IAAK,EAAE,EAAE,KAAK,mBAAmB;wDAAE,GAAG,CAAC;wDAAE,OAAO,EAAE,MAAM,CAAC,KAAK;oDAAC,IAAI;4CAAG;wCAC9I,WAAU;;;;;iGAGd,yOAAC;wCAAK,WAAU;kDAA+C;;;;;;;;;;;;0CAGvE,yOAAC;gCAAI,WAAU;;kDACX,yOAAC;wCAAO,SAAS,MAAM,YAAY;wCAAE,WAAU;;0DAA8G,yOAAC,mQAAM;gDAAC,MAAM;;;;;;4CAAM;;;;;;;kDACjL,yOAAC;wCAAO,SAAS,MAAM,UAAU;wCAAE,WAAU;kDAAsD,cAAA,yOAAC,2RAAU;4CAAC,MAAM;;;;;;;;;;;kDACrH,yOAAC;wCAAO,SAAS,IAAM,iBAAiB,CAAC;wCAAgB,WAAW,CAAC,iBAAiB,EAAE,gBAAgB,kCAAkC,qCAAqC;kDAC1K,8BAAgB,yOAAC,qRAAY;4CAAC,MAAM;;;;;qGAAS,yOAAC,kRAAW;4CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;kCAK7E,yOAAC;wBAAK,WAAU;kCACX;;;;;;;;;;;;0BAKT,yOAAC;gBAAI,WAAW,GAAG,gBAAgB,iBAAiB,MAAM,oFAAoF,CAAC;0BAC1I,+BAAiB,yOAAC,uLAAO;oBAAC,aAAa,MAAM,WAAW;oBAAE,eAAe,MAAM,aAAa;oBAAE,cAAc,MAAM,YAAY;oBAAE,cAAa;oBAAG,cAAc,MAAM,YAAY;oBAAE,OAAO,KAAK,KAAK;;;;;;;;;;;;;;;;;AAIpN;GAvGM;KAAA;uCAyGS"}}, + {"offset": {"line": 608, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/AIPanel.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react';\nimport { ChatMessage, UserUsage } from '@/lib/types';\n\ninterface AIPanelProps {\n chatHistory: ChatMessage[];\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n selectedText: string;\n isGenerating: boolean;\n usage?: UserUsage;\n}\n\nconst AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => {\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [chatHistory, isGenerating]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!input.trim() || isGenerating) return;\n onSendMessage(input);\n setInput(\"\");\n };\n\n const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false;\n\n return (\n
\n {/* Header with Usage Counter */}\n
\n
\n \n

Assistant IA

\n
\n {usage && (\n
\n {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}\n
\n )}\n
\n\n {selectedText && (\n
\n
Contexte :
\n
\"{selectedText.substring(0, 60)}...\"
\n
\n )}\n\n
\n {chatHistory.length === 0 && (\n
\n \n

Bonjour ! Comment puis-je vous aider aujourd'hui ?

\n {isLimitReached && (\n
\n Limite atteinte ! Améliorez votre plan.\n
\n )}\n
\n )}\n\n {chatHistory.map((msg) => (\n
\n
\n {msg.role === 'model' && msg.responseType === 'reflection' && (\n
Réflexion
\n )}\n
{msg.text}
\n
\n
\n ))}\n\n {isGenerating && (\n
\n
\n L'IA travaille...\n
\n
\n )}\n
\n
\n\n
\n
\n setInput(e.target.value)}\n placeholder={isLimitReached ? \"Limite atteinte...\" : \"Votre message...\"}\n 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\"\n disabled={isGenerating || isLimitReached}\n />\n \n \n \n \n
\n
\n );\n};\n\nexport default AIPanel;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 922, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/layout/EditorShell.tsx"],"sourcesContent":["'use client';\n\n\nimport React, { useState } from 'react';\nimport { BookProject, UserProfile, ViewMode, ChatMessage } from '@/lib/types';\nimport AIPanel from '@/components/AIPanel';\nimport { Book, FileText, Globe, GitGraph, Lightbulb, Settings, Menu, ChevronRight, ChevronLeft, Share2, HelpCircle, LogOut, LayoutDashboard, User, Plus, Trash2 } from 'lucide-react';\n\ninterface EditorShellProps {\n project: BookProject;\n user: UserProfile;\n viewMode: ViewMode;\n currentChapterId: string;\n chatHistory: ChatMessage[];\n isGenerating: boolean;\n onViewModeChange: (mode: ViewMode) => void;\n onChapterSelect: (id: string) => void;\n onUpdateProject: (updates: Partial) => void;\n onAddChapter: () => Promise;\n onDeleteChapter: (id: string) => void;\n onLogout: () => void;\n onSendMessage: (msg: string) => void;\n onInsertText: (text: string) => void;\n onOpenExport: () => void;\n onOpenHelp: () => void;\n children: React.ReactNode;\n}\n\nconst EditorShell: React.FC = (props) => {\n const { project, user, viewMode, currentChapterId, children } = props;\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const [isAiPanelOpen, setIsAiPanelOpen] = useState(true);\n\n const currentChapter = project.chapters.find(c => c.id === currentChapterId);\n\n return (\n
\n\n {/* SIDEBAR */}\n \n\n {/* MAIN CONTENT */}\n
\n
\n
\n \n {viewMode === 'write' ? (\n props.onUpdateProject({ chapters: project.chapters.map(c => c.id === currentChapterId ? { ...c, title: e.target.value } : c) })}\n className=\"font-serif font-bold text-lg bg-transparent border-b border-transparent focus:border-blue-500 focus:outline-none\"\n />\n ) : (\n {viewMode}\n )}\n
\n
\n \n \n \n
\n
\n\n
\n {children}\n
\n
\n\n {/* AI PANEL */}\n
\n {isAiPanelOpen && }\n
\n
\n );\n};\n\nexport default EditorShell;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 1467, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/ExportModal.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { BookProject } from '@/lib/types';\nimport { FileText, FileType, Printer, X, Download, Book, FileJson } from 'lucide-react';\n\ninterface ExportModalProps {\n isOpen: boolean;\n onClose: () => void;\n project: BookProject;\n onPrint: (options: { includeCover: boolean, includeTOC: boolean }) => void;\n}\n\ntype ExportFormat = 'pdf' | 'word' | 'epub' | 'markdown';\ntype PageSize = 'A4' | 'A5' | 'Letter';\n\nconst ExportModal: React.FC = ({ isOpen, onClose, project, onPrint }) => {\n const [format, setFormat] = useState('pdf');\n const [pageSize, setPageSize] = useState('A4');\n const [includeCover, setIncludeCover] = useState(true);\n const [includeTOC, setIncludeTOC] = useState(true);\n\n if (!isOpen) return null;\n\n const generateContentHTML = () => {\n let html = `\n \n \n \n \n ${project.title}\n \n \n \n `;\n\n if (includeCover) {\n html += `\n
\n

${project.title}

\n

${project.author}

\n
\n `;\n }\n\n if (includeTOC) {\n html += `

Table des Matières

    `;\n project.chapters.forEach((chap, idx) => {\n html += `
  • ${chap.title}
  • `;\n });\n html += `
`;\n }\n\n project.chapters.forEach((chap, idx) => {\n html += `\n
\n

${chap.title}

\n ${chap.content}\n
\n `;\n });\n\n html += ``;\n return html;\n };\n\n const handleExport = () => {\n const filename = project.title.replace(/[^a-z0-9]/gi, '_').toLowerCase();\n\n if (format === 'pdf') {\n // Open print dialog with the formatted content\n const content = generateContentHTML();\n const printWindow = window.open('', '_blank');\n if (printWindow) {\n printWindow.document.write(content);\n printWindow.document.close();\n printWindow.focus();\n setTimeout(() => {\n printWindow.print();\n }, 300);\n }\n onClose();\n }\n else if (format === 'word') {\n // Export as HTML with specific Word namespaces -> interpreted as doc by Word\n const content = generateContentHTML();\n const blob = new Blob(['\\ufeff', content], {\n type: 'application/msword'\n });\n downloadBlob(blob, `${filename}.doc`);\n }\n else if (format === 'epub') {\n // Export as a single XHTML file (Ebook ready)\n const content = generateContentHTML();\n const blob = new Blob([content], {\n type: 'application/xhtml+xml'\n });\n downloadBlob(blob, `${filename}.xhtml`);\n }\n else if (format === 'markdown') {\n let md = `# ${project.title}\\nBy ${project.author}\\n\\n`;\n project.chapters.forEach(c => {\n // Very basic HTML to Text conversion\n const text = c.content.replace(/<[^>]+>/g, '\\n');\n md += `## ${c.title}\\n\\n${text}\\n\\n---\\n\\n`;\n });\n const blob = new Blob([md], { type: 'text/markdown' });\n downloadBlob(blob, `${filename}.md`);\n }\n };\n\n const downloadBlob = (blob: Blob, name: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n onClose();\n };\n\n return (\n
\n
\n\n {/* Header */}\n
\n
\n

\n Exporter le livre\n

\n

{project.title}

\n
\n \n
\n\n {/* Body */}\n
\n\n {/* Format Selection */}\n
\n setFormat('pdf')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'pdf' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
PDF (Impression)
\n \n\n setFormat('word')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'word' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
Microsoft Word
\n \n\n setFormat('epub')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'epub' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
EPUB / Ebook
\n \n\n setFormat('markdown')}\n className={`p-4 rounded-lg border-2 flex flex-col items-center gap-3 transition-all ${format === 'markdown' ? 'border-blue-600 bg-blue-50 text-blue-800' : 'border-slate-200 hover:border-slate-300 text-slate-600'}`}\n >\n \n
Markdown
\n \n
\n\n {/* Options Section */}\n
\n

\n Paramètres d'exportation ({format.toUpperCase()})\n

\n\n
\n {format === 'pdf' && (\n
\n
\n \n Géré par l'imprimante (A4, A5...)\n
\n
Auto
\n
\n )}\n\n
\n \n setIncludeCover(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n
\n \n setIncludeTOC(e.target.checked)}\n className=\"w-5 h-5 rounded border-slate-300 text-blue-600 focus:ring-blue-500\"\n />\n
\n\n {format === 'epub' && (\n

\n Note: L'export EPUB génère un fichier XHTML optimisé prêt à être converti par Calibre ou Kindle Previewer.\n

\n )}\n
\n
\n
\n\n {/* Footer */}\n
\n \n Annuler\n \n \n {format === 'pdf' ? : }\n {format === 'pdf' ? 'Imprimer / Enregistrer PDF' : `Télécharger .${format === 'word' ? 'doc' : format === 'epub' ? 'xhtml' : 'md'}`}\n \n
\n
\n
\n );\n};\n\nexport default ExportModal;"],"names":[],"mappings":"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"}}, {"offset": {"line": 1982, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/HelpModal.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { X, Keyboard, MousePointerClick, MessageCircle, Sparkles, GitGraph, BookOpen, Command, Globe, Layout, Settings, Lightbulb } from 'lucide-react';\nimport { ViewMode } from '@/lib/types';\n\ninterface HelpModalProps {\n isOpen: boolean;\n onClose: () => void;\n viewMode: ViewMode;\n}\n\nconst Kbd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n \n {children}\n \n);\n\nconst HelpModal: React.FC = ({ isOpen, onClose, viewMode }) => {\n if (!isOpen) return null;\n\n const renderContent = () => {\n switch (viewMode) {\n case 'ideas':\n return (\n
\n

\n Boîte à Idées & Tâches\n

\n
\n

\n Un espace de type Kanban pour ne rien oublier. Utilisez-le pour noter des idées fugaces, planifier des recherches ou lister les scènes à écrire.\n

\n
    \n
  • \n \n \n Glisser-Déposer : Déplacez les cartes d'une colonne à l'autre (À faire → En cours → Validé) pour suivre votre progression.\n \n
  • \n
  • \n \n \n Catégories : Utilisez les catégories (Intrigue, Personnage, Recherche) pour filtrer visuellement vos tâches grâce aux codes couleurs.\n \n
  • \n
\n
\n
\n );\n\n case 'workflow':\n return (\n <>\n {/* Workflow Section */}\n
\n

\n Organisation Narrative\n

\n
\n
    \n
  • \n \n \n Sélection : Ctrl + Clic pour sélectionner plusieurs cartes. Glissez pour déplacer tout un groupe.\n \n
  • \n
  • \n \n \n Copier / Coller : Ctrl + C pour copier les nœuds sélectionnés, Ctrl + V pour coller.\n \n
  • \n
  • \n \n \n Connexions : Tirez depuis le cercle à droite d'une carte pour lier les événements.\n \n
  • \n
\n
\n
\n\n {/* Dialogue Intelligent */}\n
\n

\n Mode Dialogue (Workflow)\n

\n
\n
\n
Écriture Rapide
\n

\n Tapez un nom et Entrée : le formatage Nom: s'ajoute seul.\n

\n

\n Dans un dialogue, Entrée change de ligne et devine le prochain interlocuteur automatiquement.\n

\n
\n
\n
Rotation & Insertion
\n

\n Tab permute instantanément entre les personnages présents dans la scène.\n

\n

\n Utilisez @ pour insérer un personnage, # pour un lieu.\n

\n
\n
\n
\n \n );\n\n case 'world_building':\n return (\n
\n

\n Bible du Monde\n

\n
\n

\n La bible du monde permet de centraliser toutes les informations sur vos personnages et lieux.\n Ces informations sont lues par l'IA pour assurer la cohérence de l'histoire.\n

\n
\n
\n

Modèles Personnalisés

\n

\n Cliquez sur le bouton \"Modèles\" pour ajouter des champs spécifiques (ex: \"Type de Magie\", \"Allégeance\") à tous vos personnages ou lieux.\n

\n
\n
\n

Contexte Automatique

\n

\n Le champ \"Contexte Narratif\" se remplit automatiquement au fur et à mesure que vous écrivez votre histoire et que l'IA détecte l'évolution des personnages.\n

\n
\n
\n
\n
\n );\n\n case 'settings':\n return (\n
\n

\n Paramètres du Livre\n

\n

\n Ces réglages sont cruciaux pour l'Assistant IA. Ils définissent le \"ton\" de toutes les générations de texte.\n

\n
    \n
  • Style Guide : Soyez précis sur le style (ex: \"phrases courtes\", \"beaucoup de métaphores\", \"humour noir\").
  • \n
  • POV (Point de Vue) : Définit si l'IA doit écrire en \"Je\" ou \"Il/Elle\".
  • \n
\n
\n );\n\n case 'write':\n default:\n return (\n
\n

\n Éditeur & Assistant IA\n

\n
\n
\n

Menu Contextuel Intelligent

\n

Sélectionnez du texte et faites un clic droit pour :

\n
    \n
  • Corriger l'orthographe
  • \n
  • Reformuler / Améliorer
  • \n
  • Développer (Show, don't tell)
  • \n
  • Continuer l'écriture
  • \n
\n
\n

\n Historique des versions : Activez la marge de droite (icône horloge) pour voir toutes les interventions de l'IA et revenir en arrière si nécessaire.\n

\n

\n Chat Latéral : Posez des questions sur votre histoire, demandez des résumés ou des idées de rebondissements. L'IA connaît le contexte de vos chapitres précédents et de vos fiches personnages.\n

\n \n
\n

\n Raccourcis Clavier (Éditeur)\n

\n
\n
\n
\n Mettre en Gras\n Ctrl + B\n
\n
\n Mettre en Italique\n Ctrl + I\n
\n
\n Souligner\n Ctrl + U\n
\n
\n
\n
\n Tout sélectionner\n Ctrl + A\n
\n
\n Annuler\n Ctrl + Z\n
\n
\n Rétablir\n Ctrl + Shift + Z\n
\n
\n
\n
\n
\n
\n );\n }\n };\n\n return (\n
\n
\n \n {/* Header */}\n
\n
\n

\n Aide : {\n viewMode === 'workflow' ? 'Workflow & Dialogues' :\n viewMode === 'world_building' ? 'Bible du Monde' :\n viewMode === 'settings' ? 'Paramètres' :\n viewMode === 'ideas' ? 'Boîte à Idées' :\n 'Éditeur & IA'\n }\n

\n

Astuces pour l'écran actuel.

\n
\n \n
\n\n {/* Content */}\n
\n \n {/* Context Specific Content */}\n {renderContent()}\n\n {/* General Footer Section (Always visible) */}\n
\n

Raccourcis Généraux

\n
\n
\n Sauvegarde Automatique\n Permanente\n
\n
\n Menu Latéral\n Clic sur le burger\n
\n
\n
\n\n
\n\n {/* Footer */}\n
\n \n
\n\n
\n
\n );\n};\n\nexport default HelpModal;"],"names":[],"mappings":"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"}}, {"offset": {"line": 3344, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/layout.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useParams, useRouter, usePathname } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\nimport { ProjectProvider } from '@/providers/ProjectProvider';\r\nimport { useProjects } from '@/hooks/useProjects';\r\nimport { useChat } from '@/hooks/useChat';\r\nimport { ViewMode } from '@/lib/types';\r\nimport EditorShell from '@/components/layout/EditorShell';\r\nimport ExportModal from '@/components/ExportModal';\r\nimport HelpModal from '@/components/HelpModal';\r\nimport { Loader2, BookOpen } from 'lucide-react';\r\n\r\nfunction getViewModeFromPath(pathname: string): ViewMode {\r\n if (pathname.endsWith('/world')) return 'world_building';\r\n if (pathname.endsWith('/ideas')) return 'ideas';\r\n if (pathname.endsWith('/workflow')) return 'workflow';\r\n if (pathname.endsWith('/settings')) return 'settings';\r\n return 'write';\r\n}\r\n\r\nexport default function ProjectLayout({ children }: { children: React.ReactNode }) {\r\n const params = useParams();\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const projectId = params.id as string;\r\n\r\n const { user, logout, incrementUsage, loading: authLoading } = useAuthContext();\r\n const {\r\n projects, setCurrentProjectId,\r\n updateProject, updateChapter, addChapter,\r\n createEntity, updateEntity, deleteEntity, deleteProject\r\n } = useProjects(user);\r\n const { chatHistory, isGenerating, sendMessage } = useChat();\r\n\r\n const [currentChapterId, setCurrentChapterId] = useState('');\r\n const [isExportModalOpen, setIsExportModalOpen] = useState(false);\r\n const [isHelpModalOpen, setIsHelpModalOpen] = useState(false);\r\n\r\n const viewMode = getViewModeFromPath(pathname);\r\n\r\n useEffect(() => {\r\n if (projectId) setCurrentProjectId(projectId);\r\n }, [projectId, setCurrentProjectId]);\r\n\r\n useEffect(() => {\r\n if (!authLoading && !user) router.replace('/login');\r\n }, [user, authLoading, router]);\r\n\r\n const project = projects.find(p => p.id === projectId);\r\n\r\n useEffect(() => {\r\n if (project && (!currentChapterId || !project.chapters.some(c => c.id === currentChapterId))) {\r\n setCurrentChapterId(project.chapters[0]?.id || '');\r\n }\r\n }, [project, currentChapterId]);\r\n\r\n if (authLoading || !user) {\r\n return (\r\n
\r\n \r\n
\r\n \r\n PlumeIA\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n
\r\n \r\n

Chargement du projet...

\r\n
\r\n );\r\n }\r\n\r\n const handleViewModeChange = (mode: ViewMode) => {\r\n const base = `/project/${projectId}`;\r\n switch (mode) {\r\n case 'write': router.push(base); break;\r\n case 'world_building': router.push(`${base}/world`); break;\r\n case 'ideas': router.push(`${base}/ideas`); break;\r\n case 'workflow': router.push(`${base}/workflow`); break;\r\n case 'settings': router.push(`${base}/settings`); break;\r\n case 'dashboard': router.push('/dashboard'); break;\r\n default: router.push(base);\r\n }\r\n };\r\n\r\n return (\r\n updateProject(projectId, updates),\r\n updateChapter: (chapterId, data) => updateChapter(projectId, chapterId, data),\r\n createEntity: (type, data) => createEntity(projectId, type, data),\r\n updateEntity: (entityId, data) => updateEntity(projectId, entityId, data),\r\n deleteEntity: (entityId) => deleteEntity(projectId, entityId),\r\n deleteProject: () => deleteProject(projectId),\r\n incrementUsage,\r\n }}>\r\n { setCurrentChapterId(id); router.push(`/project/${projectId}`); }}\r\n onUpdateProject={(updates) => updateProject(projectId, updates)}\r\n onAddChapter={async () => {\r\n const id = await addChapter(projectId, {});\r\n if (id) {\r\n setCurrentChapterId(id);\r\n router.push(`/project/${projectId}`);\r\n }\r\n }}\r\n onDeleteChapter={(id) => {\r\n if (project.chapters.length > 1) {\r\n const newChapters = project.chapters.filter(c => c.id !== id);\r\n updateProject(projectId, { chapters: newChapters });\r\n if (currentChapterId === id) setCurrentChapterId(newChapters[0].id);\r\n }\r\n }}\r\n onLogout={() => { logout(); router.push('/'); }}\r\n onSendMessage={(msg) => {\r\n if (project && user) sendMessage(project, 'global', msg, user, incrementUsage);\r\n }}\r\n onInsertText={() => { }}\r\n onOpenExport={() => setIsExportModalOpen(true)}\r\n onOpenHelp={() => setIsHelpModalOpen(true)}\r\n >\r\n setIsExportModalOpen(false)} project={project} onPrint={() => { }} />\r\n setIsHelpModalOpen(false)} viewMode={viewMode} />\r\n {children}\r\n \r\n \r\n );\r\n}\r\n"],"names":[],"mappings":"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"}}] diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css index 7bd45a6..176b90d 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css @@ -201,6 +201,13 @@ --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: var(--font-sans); --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)) { @@ -754,6 +761,10 @@ } } + .-m-8 { + margin: calc(var(--spacing) * -8); + } + .m-1 { margin: calc(var(--spacing) * 1); } @@ -818,6 +829,10 @@ margin-top: calc(var(--spacing) * 20); } + .mt-auto { + margin-top: auto; + } + .mr-4 { margin-right: calc(var(--spacing) * 4); } @@ -1545,6 +1560,18 @@ border-style: dashed; } + .border-\[\#dfcdae\] { + border-color: #dfcdae; + } + + .border-\[\#eaddc4\] { + border-color: #eaddc4; + } + + .border-\[\#f4ecd8\] { + border-color: #f4ecd8; + } + .border-amber-100 { border-color: var(--color-amber-100); } @@ -1649,6 +1676,10 @@ border-color: var(--color-slate-800); } + .border-theme-border { + border-color: var(--color-theme-border); + } + .border-transparent { border-color: #0000; } @@ -1661,6 +1692,14 @@ border-color: var(--color-yellow-100); } + .bg-\[\#5c4731\] { + background-color: #5c4731; + } + + .bg-\[\#eaddc4\] { + background-color: #eaddc4; + } + .bg-\[\#eef2ff\] { background-color: #eef2ff; } @@ -1669,6 +1708,10 @@ background-color: #f4ecd8; } + .bg-\[\#fbf8f1\] { + background-color: #fbf8f1; + } + .bg-amber-50 { background-color: var(--color-amber-50); } @@ -1723,6 +1766,16 @@ 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 { background-color: var(--color-blue-600); } @@ -1751,6 +1804,16 @@ 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 { background-color: var(--color-indigo-50); } @@ -1773,6 +1836,16 @@ 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 { background-color: #625fff33; } @@ -1853,6 +1926,42 @@ 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 { background-color: #0000; } @@ -2350,6 +2459,18 @@ white-space: pre-wrap; } + .text-\[\#735e44\] { + color: #735e44; + } + + .text-\[\#332616\] { + color: #332616; + } + + .text-\[\#433422\] { + color: #433422; + } + .text-amber-500 { color: var(--color-amber-500); } @@ -2490,6 +2611,18 @@ 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 { color: #0000; } @@ -2573,6 +2706,10 @@ opacity: .8; } + .opacity-90 { + opacity: .9; + } + .shadow-2xl { --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); @@ -2860,6 +2997,12 @@ } } + @media (hover: hover) { + .hover\:border-\[\#cfbd9e\]:hover { + border-color: #cfbd9e; + } + } + @media (hover: hover) { .hover\:border-blue-200:hover { 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) { .hover\:bg-amber-50:hover { 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) { .hover\:bg-blue-600:hover { 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) { .hover\:bg-indigo-700:hover { 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) { .hover\:bg-red-700:hover { 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) { .hover\:bg-white:hover { background-color: var(--color-white); @@ -3052,6 +3273,12 @@ } } + @media (hover: hover) { + .hover\:text-\[\#332616\]:hover { + color: #332616; + } + } + @media (hover: hover) { .hover\:text-blue-400:hover { 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) { .hover\:text-white:hover { 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) { .hover\:shadow-2xl:hover { --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 { content: attr(placeholder); color: #9ca3af; diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css.map index afbe7a5..dd36477 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_globals_css_bad6b30c._.single.css.map @@ -2,5 +2,5 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/Documents/00 - projet/plumeia/src/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: 'Inter', sans-serif;\n --font-serif: 'Merriweather', serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-orange-100: oklch(95.4% 0.038 75.164);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-indigo-800: oklch(39.8% 0.195 277.366);\n --color-indigo-900: oklch(35.9% 0.144 278.697);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-rose-100: oklch(94.1% 0.03 12.58);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-800: oklch(45.5% 0.188 13.697);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-relaxed: 1.625;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-3xl: 64px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-4 {\n inset: calc(var(--spacing) * -4);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-3 {\n right: calc(var(--spacing) * -3);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-10 {\n right: calc(var(--spacing) * 10);\n }\n .right-\\[-10px\\] {\n right: -10px;\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-10 {\n bottom: calc(var(--spacing) * 10);\n }\n .bottom-full {\n bottom: 100%;\n }\n .-left-2 {\n left: calc(var(--spacing) * -2);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-10 {\n left: calc(var(--spacing) * 10);\n }\n .left-\\[calc\\(50\\%\\+420px\\)\\] {\n left: calc(50% + 420px);\n }\n .-z-1 {\n z-index: calc(1 * -1);\n }\n .-z-10 {\n z-index: calc(10 * -1);\n }\n .z-0 {\n z-index: 0;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-3 {\n grid-column: span 3 / span 3;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-20 {\n margin-top: calc(var(--spacing) * 20);\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-6 {\n margin-right: calc(var(--spacing) * 6);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-12 {\n margin-bottom: calc(var(--spacing) * 12);\n }\n .mb-16 {\n margin-bottom: calc(var(--spacing) * 16);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[4000px\\] {\n height: 4000px;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-\\[90\\%\\] {\n max-height: 90%;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[1000px\\] {\n min-height: 1000px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1 / 2 * 100%);\n }\n .w-1\\/3 {\n width: calc(1 / 3 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[800px\\] {\n width: 800px;\n }\n .w-\\[4000px\\] {\n width: 4000px;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[85\\%\\] {\n max-width: 85%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-105 {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-\\[1\\.01\\] {\n scale: 1.01;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .resize-none {\n resize: none;\n }\n .list-disc {\n list-style-type: disc;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-slate-50 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-50);\n }\n }\n .divide-slate-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-100);\n }\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[2\\.5rem\\] {\n border-radius: 2.5rem;\n }\n .rounded-\\[2rem\\] {\n border-radius: 2rem;\n }\n .rounded-\\[3rem\\] {\n border-radius: 3rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\n }\n .rounded-br-none {\n border-bottom-right-radius: 0;\n }\n .rounded-bl-none {\n border-bottom-left-radius: 0;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-2 {\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-amber-100 {\n border-color: var(--color-amber-100);\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-400 {\n border-color: var(--color-blue-400);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-100 {\n border-color: var(--color-green-100);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-indigo-50 {\n border-color: var(--color-indigo-50);\n }\n .border-indigo-100 {\n border-color: var(--color-indigo-100);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-indigo-400 {\n border-color: var(--color-indigo-400);\n }\n .border-indigo-600 {\n border-color: var(--color-indigo-600);\n }\n .border-red-100 {\n border-color: var(--color-red-100);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-slate-50 {\n border-color: var(--color-slate-50);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-700 {\n border-color: var(--color-slate-700);\n }\n .border-slate-800 {\n border-color: var(--color-slate-800);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-100 {\n border-color: var(--color-yellow-100);\n }\n .bg-\\[\\#eef2ff\\] {\n background-color: #eef2ff;\n }\n .bg-\\[\\#f4ecd8\\] {\n background-color: #f4ecd8;\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-400 {\n background-color: var(--color-amber-400);\n }\n .bg-black\\/5 {\n background-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n .bg-blue-900 {\n background-color: var(--color-blue-900);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/30 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 30%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-indigo-500\\/20 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n }\n .bg-indigo-600 {\n background-color: var(--color-indigo-600);\n }\n .bg-indigo-900 {\n background-color: var(--color-indigo-900);\n }\n .bg-indigo-900\\/50 {\n background-color: color-mix(in srgb, oklch(35.9% 0.144 278.697) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-900) 50%, transparent);\n }\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-100 {\n background-color: var(--color-rose-100);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-300 {\n background-color: var(--color-slate-300);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-800 {\n background-color: var(--color-slate-800);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/50 {\n background-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n .bg-white\\/70 {\n background-color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .bg-white\\/80 {\n background-color: color-mix(in srgb, #fff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 80%, transparent);\n }\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-blue-500\\/20 {\n --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-600 {\n --tw-gradient-from: var(--color-blue-600);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-orange-200 {\n --tw-gradient-from: var(--color-orange-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-red-200 {\n --tw-gradient-from: var(--color-red-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-300 {\n --tw-gradient-from: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-indigo-200 {\n --tw-gradient-via: var(--color-indigo-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-purple-200 {\n --tw-gradient-via: var(--color-purple-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-yellow-100 {\n --tw-gradient-via: var(--color-yellow-100);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-blue-200 {\n --tw-gradient-to: var(--color-blue-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-green-200 {\n --tw-gradient-to: var(--color-green-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500 {\n --tw-gradient-to: var(--color-indigo-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500\\/20 {\n --tw-gradient-to: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-300 {\n --tw-gradient-to: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-clip-text {\n background-clip: text;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-32 {\n padding-top: calc(var(--spacing) * 32);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-12 {\n padding-left: calc(var(--spacing) * 12);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .font-serif {\n font-family: var(--font-serif);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-indigo-300 {\n color: var(--color-indigo-300);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-indigo-800 {\n color: var(--color-indigo-800);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-800 {\n color: var(--color-rose-800);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-transparent {\n color: transparent;\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-blue-500 {\n text-decoration-color: var(--color-blue-500);\n }\n .decoration-indigo-300 {\n text-decoration-color: var(--color-indigo-300);\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .accent-blue-600 {\n accent-color: var(--color-blue-600);\n }\n .accent-indigo-600 {\n accent-color: var(--color-indigo-600);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(59,130,246,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(99\\,102\\,241\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(99,102,241,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_2px_0px_0px_rgba\\(203\\,213\\,225\\,1\\)\\] {\n --tw-shadow: 0px 2px 0px 0px var(--tw-shadow-color, rgba(203,213,225,1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-blue-200 {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n .shadow-indigo-100 {\n --tw-shadow-color: oklch(93% 0.034 272.788);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-amber-200 {\n --tw-ring-color: var(--color-amber-200);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-indigo-200 {\n --tw-ring-color: var(--color-indigo-200);\n }\n .ring-indigo-400 {\n --tw-ring-color: var(--color-indigo-400);\n }\n .ring-indigo-500 {\n --tw-ring-color: var(--color-indigo-500);\n }\n .ring-offset-1 {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[1px\\] {\n --tw-blur: blur(1px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[60px\\] {\n --tw-blur: blur(60px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[120px\\] {\n --tw-blur: blur(120px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[150px\\] {\n --tw-blur: blur(150px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:bg-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-white {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .selection\\:bg-blue-200 {\n & *::selection {\n background-color: var(--color-blue-200);\n }\n &::selection {\n background-color: var(--color-blue-200);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-110 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.02\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.02;\n }\n }\n }\n .hover\\:border-blue-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-indigo-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:border-indigo-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-400);\n }\n }\n }\n .hover\\:border-indigo-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-500);\n }\n }\n }\n .hover\\:border-slate-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:border-slate-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-amber-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-50);\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-black\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-50);\n }\n }\n }\n .hover\\:bg-blue-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-blue-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-800);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-100);\n }\n }\n }\n .hover\\:bg-indigo-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:bg-indigo-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-red-900\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:bg-slate-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-slate-900 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-900);\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:text-blue-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-400);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-indigo-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:text-indigo-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-800);\n }\n }\n }\n .hover\\:text-red-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-slate-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-500);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-slate-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-900);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:decoration-indigo-600 {\n &:hover {\n @media (hover: hover) {\n text-decoration-color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:shadow-2xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-blue-200 {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .focus\\:border-b {\n &:focus {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .focus\\:border-blue-500 {\n &:focus {\n border-color: var(--color-blue-500);\n }\n }\n .focus\\:border-indigo-400 {\n &:focus {\n border-color: var(--color-indigo-400);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-4 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-blue-300 {\n &:focus {\n --tw-ring-color: var(--color-blue-300);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-indigo-500 {\n &:focus {\n --tw-ring-color: var(--color-indigo-500);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .active\\:cursor-grabbing {\n &:active {\n cursor: grabbing;\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-1\\/3 {\n @media (width >= 48rem) {\n width: calc(1 / 3 * 100%);\n }\n }\n .md\\:w-64 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 64);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-7xl {\n @media (width >= 48rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:w-1\\/2 {\n @media (width >= 64rem) {\n width: calc(1 / 2 * 100%);\n }\n }\n .lg\\:w-96 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 96);\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n}\n.editor-content:empty:before {\n content: attr(placeholder);\n color: #9ca3af;\n pointer-events: none;\n}\n::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n@media print {\n @page {\n margin: 2cm;\n size: auto;\n }\n html, body {\n height: auto !important;\n overflow: visible !important;\n margin: 0 !important;\n padding: 0 !important;\n background: white !important;\n color: black !important;\n }\n #__next {\n height: auto !important;\n overflow: visible !important;\n display: block !important;\n position: relative !important;\n }\n .no-print {\n display: none !important;\n }\n .print-only {\n display: block !important;\n }\n .break-before-page {\n page-break-before: always;\n break-before: page;\n }\n .break-after-page {\n page-break-after: always;\n break-after: page;\n }\n p {\n text-align: justify;\n widows: 3;\n orphans: 3;\n color: black !important;\n }\n h1, h2, h3, h4 {\n color: black !important;\n page-break-after: avoid;\n }\n a {\n text-decoration: none;\n color: black !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\r\n"],"names":[],"mappings":"AACA;EAy4FE;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAz4FJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EAwIE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;;AAvRF;;AAAA;EA4RE;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;EAKA;;;;EAIF;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAGA;;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAAA;IAAA;;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAAA;IAAA;;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAMI;IAAuB;;;;;;EAQvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAMzB;;;;EASE;IAAuB;;;;;;;;EAUvB;IAAuB;;;;;;;;EAUvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;IAErB;MAAgD;;;;;;EAQlD;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;IAErB;MAAgD;;;;;;EAQlD;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;IAErB;MAAgD;;;;;;EAQlD;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;EAOvB;IAAuB;;;;;;EAOvB;IAAuB;;;;;;EAQvB;IAAuB;;;;;;EAQvB;IAAuB;;;;IAErB;MAAgD;;;;;;EAOpD;;;;;EAMA;;;;EAKA;;;;EAKA;;;;EAKA;;;;;EAMA;;;;;EAMA;;;;EAKA;;;;EAKA;;;;EAKA;;;;;EAMA;;;;EAKA;;;;EAKA;;;;EAKA;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;;EAMzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;EAKzB;IAAyB;;;;;;AAK7B;;;;;;AAKA;;;;;AAIA;;;;AAGA;;;;;AAIA;;;;AAGA;EACE;;;;;EAIA;;;;;;;;;EAQA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;EAMA;;;;;EAIA;;;;;;AAKF;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;AAIA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;AAIA;;;;;;AAKA;;;;;;AAKA;;;;;;AAKA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;;AAKA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;AAIA;;;;;;AAKA"}}] + {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/Documents/00 - projet/plumeia/src/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: 'Inter', sans-serif;\n --font-serif: 'Merriweather', serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-orange-100: oklch(95.4% 0.038 75.164);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-indigo-800: oklch(39.8% 0.195 277.366);\n --color-indigo-900: oklch(35.9% 0.144 278.697);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-rose-100: oklch(94.1% 0.03 12.58);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-800: oklch(45.5% 0.188 13.697);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-relaxed: 1.625;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-3xl: 64px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-theme-bg: var(--theme-bg);\n --color-theme-panel: var(--theme-panel);\n --color-theme-text: var(--theme-text);\n --color-theme-muted: var(--theme-muted);\n --color-theme-border: var(--theme-border);\n --color-theme-editor-bg: var(--theme-editor-bg);\n --color-theme-editor-text: var(--theme-editor-text);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-4 {\n inset: calc(var(--spacing) * -4);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-3 {\n right: calc(var(--spacing) * -3);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-10 {\n right: calc(var(--spacing) * 10);\n }\n .right-\\[-10px\\] {\n right: -10px;\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-10 {\n bottom: calc(var(--spacing) * 10);\n }\n .bottom-full {\n bottom: 100%;\n }\n .-left-2 {\n left: calc(var(--spacing) * -2);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-10 {\n left: calc(var(--spacing) * 10);\n }\n .left-\\[calc\\(50\\%\\+420px\\)\\] {\n left: calc(50% + 420px);\n }\n .-z-1 {\n z-index: calc(1 * -1);\n }\n .-z-10 {\n z-index: calc(10 * -1);\n }\n .z-0 {\n z-index: 0;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-3 {\n grid-column: span 3 / span 3;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .-m-8 {\n margin: calc(var(--spacing) * -8);\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-20 {\n margin-top: calc(var(--spacing) * 20);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-6 {\n margin-right: calc(var(--spacing) * 6);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-12 {\n margin-bottom: calc(var(--spacing) * 12);\n }\n .mb-16 {\n margin-bottom: calc(var(--spacing) * 16);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[4000px\\] {\n height: 4000px;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-\\[90\\%\\] {\n max-height: 90%;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[1000px\\] {\n min-height: 1000px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1 / 2 * 100%);\n }\n .w-1\\/3 {\n width: calc(1 / 3 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[800px\\] {\n width: 800px;\n }\n .w-\\[4000px\\] {\n width: 4000px;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[85\\%\\] {\n max-width: 85%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-105 {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-\\[1\\.01\\] {\n scale: 1.01;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .resize-none {\n resize: none;\n }\n .list-disc {\n list-style-type: disc;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-slate-50 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-50);\n }\n }\n .divide-slate-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-100);\n }\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[2\\.5rem\\] {\n border-radius: 2.5rem;\n }\n .rounded-\\[2rem\\] {\n border-radius: 2rem;\n }\n .rounded-\\[3rem\\] {\n border-radius: 3rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\n }\n .rounded-br-none {\n border-bottom-right-radius: 0;\n }\n .rounded-bl-none {\n border-bottom-left-radius: 0;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-2 {\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-\\[\\#dfcdae\\] {\n border-color: #dfcdae;\n }\n .border-\\[\\#eaddc4\\] {\n border-color: #eaddc4;\n }\n .border-\\[\\#f4ecd8\\] {\n border-color: #f4ecd8;\n }\n .border-amber-100 {\n border-color: var(--color-amber-100);\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-400 {\n border-color: var(--color-blue-400);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-100 {\n border-color: var(--color-green-100);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-indigo-50 {\n border-color: var(--color-indigo-50);\n }\n .border-indigo-100 {\n border-color: var(--color-indigo-100);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-indigo-400 {\n border-color: var(--color-indigo-400);\n }\n .border-indigo-600 {\n border-color: var(--color-indigo-600);\n }\n .border-red-100 {\n border-color: var(--color-red-100);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-slate-50 {\n border-color: var(--color-slate-50);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-700 {\n border-color: var(--color-slate-700);\n }\n .border-slate-800 {\n border-color: var(--color-slate-800);\n }\n .border-theme-border {\n border-color: var(--color-theme-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-100 {\n border-color: var(--color-yellow-100);\n }\n .bg-\\[\\#5c4731\\] {\n background-color: #5c4731;\n }\n .bg-\\[\\#eaddc4\\] {\n background-color: #eaddc4;\n }\n .bg-\\[\\#eef2ff\\] {\n background-color: #eef2ff;\n }\n .bg-\\[\\#f4ecd8\\] {\n background-color: #f4ecd8;\n }\n .bg-\\[\\#fbf8f1\\] {\n background-color: #fbf8f1;\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-400 {\n background-color: var(--color-amber-400);\n }\n .bg-black\\/5 {\n background-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-500\\/10 {\n background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);\n }\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n .bg-blue-900 {\n background-color: var(--color-blue-900);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-green-500\\/10 {\n background-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-green-500) 10%, transparent);\n }\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/30 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 30%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-indigo-500\\/10 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);\n }\n }\n .bg-indigo-500\\/20 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n }\n .bg-indigo-600 {\n background-color: var(--color-indigo-600);\n }\n .bg-indigo-900 {\n background-color: var(--color-indigo-900);\n }\n .bg-indigo-900\\/50 {\n background-color: color-mix(in srgb, oklch(35.9% 0.144 278.697) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-900) 50%, transparent);\n }\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-100 {\n background-color: var(--color-rose-100);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-300 {\n background-color: var(--color-slate-300);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-800 {\n background-color: var(--color-slate-800);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-theme-bg {\n background-color: var(--color-theme-bg);\n }\n .bg-theme-bg\\/50 {\n background-color: var(--color-theme-bg);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-bg) 50%, transparent);\n }\n }\n .bg-theme-border {\n background-color: var(--color-theme-border);\n }\n .bg-theme-editor-bg {\n background-color: var(--color-theme-editor-bg);\n }\n .bg-theme-panel {\n background-color: var(--color-theme-panel);\n }\n .bg-theme-panel\\/50 {\n background-color: var(--color-theme-panel);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);\n }\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/50 {\n background-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n .bg-white\\/70 {\n background-color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .bg-white\\/80 {\n background-color: color-mix(in srgb, #fff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 80%, transparent);\n }\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-blue-500\\/20 {\n --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-600 {\n --tw-gradient-from: var(--color-blue-600);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-orange-200 {\n --tw-gradient-from: var(--color-orange-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-red-200 {\n --tw-gradient-from: var(--color-red-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-300 {\n --tw-gradient-from: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-indigo-200 {\n --tw-gradient-via: var(--color-indigo-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-purple-200 {\n --tw-gradient-via: var(--color-purple-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-yellow-100 {\n --tw-gradient-via: var(--color-yellow-100);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-blue-200 {\n --tw-gradient-to: var(--color-blue-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-green-200 {\n --tw-gradient-to: var(--color-green-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500 {\n --tw-gradient-to: var(--color-indigo-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500\\/20 {\n --tw-gradient-to: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-300 {\n --tw-gradient-to: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-clip-text {\n background-clip: text;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-32 {\n padding-top: calc(var(--spacing) * 32);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-12 {\n padding-left: calc(var(--spacing) * 12);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .font-serif {\n font-family: var(--font-serif);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-\\[\\#735e44\\] {\n color: #735e44;\n }\n .text-\\[\\#332616\\] {\n color: #332616;\n }\n .text-\\[\\#433422\\] {\n color: #433422;\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-indigo-300 {\n color: var(--color-indigo-300);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-indigo-800 {\n color: var(--color-indigo-800);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-800 {\n color: var(--color-rose-800);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-theme-editor-text {\n color: var(--color-theme-editor-text);\n }\n .text-theme-muted {\n color: var(--color-theme-muted);\n }\n .text-theme-text {\n color: var(--color-theme-text);\n }\n .text-transparent {\n color: transparent;\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-blue-500 {\n text-decoration-color: var(--color-blue-500);\n }\n .decoration-indigo-300 {\n text-decoration-color: var(--color-indigo-300);\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .accent-blue-600 {\n accent-color: var(--color-blue-600);\n }\n .accent-indigo-600 {\n accent-color: var(--color-indigo-600);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(59,130,246,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(99\\,102\\,241\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(99,102,241,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_2px_0px_0px_rgba\\(203\\,213\\,225\\,1\\)\\] {\n --tw-shadow: 0px 2px 0px 0px var(--tw-shadow-color, rgba(203,213,225,1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-blue-200 {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n .shadow-indigo-100 {\n --tw-shadow-color: oklch(93% 0.034 272.788);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-amber-200 {\n --tw-ring-color: var(--color-amber-200);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-indigo-200 {\n --tw-ring-color: var(--color-indigo-200);\n }\n .ring-indigo-400 {\n --tw-ring-color: var(--color-indigo-400);\n }\n .ring-indigo-500 {\n --tw-ring-color: var(--color-indigo-500);\n }\n .ring-offset-1 {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[1px\\] {\n --tw-blur: blur(1px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[60px\\] {\n --tw-blur: blur(60px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[120px\\] {\n --tw-blur: blur(120px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[150px\\] {\n --tw-blur: blur(150px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:bg-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-white {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .selection\\:bg-blue-200 {\n & *::selection {\n background-color: var(--color-blue-200);\n }\n &::selection {\n background-color: var(--color-blue-200);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-110 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.02\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.02;\n }\n }\n }\n .hover\\:border-\\[\\#cfbd9e\\] {\n &:hover {\n @media (hover: hover) {\n border-color: #cfbd9e;\n }\n }\n }\n .hover\\:border-blue-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-indigo-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:border-indigo-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-400);\n }\n }\n }\n .hover\\:border-indigo-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-500);\n }\n }\n }\n .hover\\:border-slate-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:border-slate-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:border-slate-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-600);\n }\n }\n }\n .hover\\:bg-\\[\\#eaddc4\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #eaddc4;\n }\n }\n }\n .hover\\:bg-amber-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-50);\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-black\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-50);\n }\n }\n }\n .hover\\:bg-blue-500 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-500);\n }\n }\n }\n .hover\\:bg-blue-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-blue-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-800);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-100);\n }\n }\n }\n .hover\\:bg-indigo-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:bg-indigo-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-indigo-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-red-900\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:bg-slate-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-slate-900 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-900);\n }\n }\n }\n .hover\\:bg-theme-border {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-border);\n }\n }\n }\n .hover\\:bg-theme-panel {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-panel);\n }\n }\n }\n .hover\\:bg-theme-panel\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-panel);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:text-\\[\\#332616\\] {\n &:hover {\n @media (hover: hover) {\n color: #332616;\n }\n }\n }\n .hover\\:text-blue-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-400);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-indigo-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:text-indigo-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-800);\n }\n }\n }\n .hover\\:text-red-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-slate-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-500);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-slate-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-900);\n }\n }\n }\n .hover\\:text-theme-text {\n &:hover {\n @media (hover: hover) {\n color: var(--color-theme-text);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:decoration-indigo-600 {\n &:hover {\n @media (hover: hover) {\n text-decoration-color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-2xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-blue-200 {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .focus\\:border-b {\n &:focus {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .focus\\:border-blue-500 {\n &:focus {\n border-color: var(--color-blue-500);\n }\n }\n .focus\\:border-indigo-400 {\n &:focus {\n border-color: var(--color-indigo-400);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-4 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-blue-300 {\n &:focus {\n --tw-ring-color: var(--color-blue-300);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-indigo-500 {\n &:focus {\n --tw-ring-color: var(--color-indigo-500);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .active\\:cursor-grabbing {\n &:active {\n cursor: grabbing;\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-1\\/3 {\n @media (width >= 48rem) {\n width: calc(1 / 3 * 100%);\n }\n }\n .md\\:w-64 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 64);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-7xl {\n @media (width >= 48rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:w-1\\/2 {\n @media (width >= 64rem) {\n width: calc(1 / 2 * 100%);\n }\n }\n .lg\\:w-96 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 96);\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n}\n:root,\r\n.theme-light {\n --theme-bg: #eef2ff;\n --theme-panel: #ffffff;\n --theme-text: #0f172a;\n --theme-muted: #64748b;\n --theme-border: #e2e8f0;\n --theme-editor-bg: #ffffff;\n --theme-editor-text: #0f172a;\n}\n.theme-dark {\n --theme-bg: #0f172a;\n --theme-panel: #1e293b;\n --theme-text: #f8fafc;\n --theme-muted: #94a3b8;\n --theme-border: #334155;\n --theme-editor-bg: #1e293b;\n --theme-editor-text: #e2e8f0;\n}\n.theme-sepia {\n --theme-bg: #eaddc4;\n --theme-panel: #fbf8f1;\n --theme-text: #332616;\n --theme-muted: #735e44;\n --theme-border: #dfcdae;\n --theme-editor-bg: #fbf8f1;\n --theme-editor-text: #332616;\n}\n.editor-content:empty:before {\n content: attr(placeholder);\n color: #9ca3af;\n pointer-events: none;\n}\n::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n@media print {\n @page {\n margin: 2cm;\n size: auto;\n }\n html,\r\n body {\n height: auto !important;\n overflow: visible !important;\n margin: 0 !important;\n padding: 0 !important;\n background: white !important;\n color: black !important;\n }\n #__next {\n height: auto !important;\n overflow: visible !important;\n display: block !important;\n position: relative !important;\n }\n .no-print {\n display: none !important;\n }\n .print-only {\n display: block !important;\n }\n .break-before-page {\n page-break-before: always;\n break-before: page;\n }\n .break-after-page {\n page-break-after: always;\n break-after: page;\n }\n p {\n text-align: justify;\n widows: 3;\n orphans: 3;\n color: black !important;\n }\n h1,\r\n h2,\r\n h3,\r\n h4 {\n color: black !important;\n page-break-after: avoid;\n }\n a {\n text-decoration: none;\n color: black !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}"],"names":[],"mappings":"AACA;EAwnGE;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxnGJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA+IE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;;AA9RF;;AAAA;EAmSE;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;EAKA;;;;EAIF;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;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"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js index 0bd2386..94c24c2 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_app_layout_tsx_b5f8e6df._.js @@ -2,7 +2,7 @@ script: typeof document === "object" ? document.currentScript : undefined, chunks: [ "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" }); diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js index 16d9ae7..c9548cf 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js @@ -309,7 +309,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p }, ("TURBOPACK compile-time value", void 0)); 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", { - 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: [ /*#__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: ` @@ -326,7 +326,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p columnNumber: 7 }, ("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", { - 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: [ /*#__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"], @@ -506,7 +506,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p columnNumber: 7 }, ("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", { - 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, 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", @@ -515,7 +515,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p ref: contentRef, contentEditable: 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, onBlur: ()=>{ setIsFocused(false); diff --git a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js.map b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js.map index 950dec7..fdc5168 100644 --- a/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js.map +++ b/.next/dev/static/chunks/Documents_00 - projet_plumeia_src_e45494cc._.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": [], "sections": [ - {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n"],"names":[],"mappings":"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"}}, + {"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/RichTextEditor.tsx"],"sourcesContent":["'use client';\n\nimport React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';\nimport {\n Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,\n Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,\n ChevronDown, ChevronUp, Layers\n} from 'lucide-react';\n\nexport interface RichTextEditorHandle {\n insertHtml: (html: string) => void;\n}\n\ninterface RichTextEditorProps {\n initialContent: string;\n onChange?: (html: string) => void;\n onSave?: (html: string) => void;\n onSelectionChange?: (text: string) => void;\n onAiTransform?: (text: string, mode: 'correct' | 'rewrite' | 'expand' | 'continue') => Promise;\n}\n\ninterface Version {\n id: string;\n timestamp: number;\n type: string;\n content: string; // Full HTML snapshot\n snippet: string; // Selected text snippet before change\n topOffset: number; // Y position relative to editor top\n}\n\ninterface VersionGroup {\n id: string;\n topOffset: number;\n versions: Version[];\n}\n\nconst RichTextEditor = forwardRef(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {\n const contentRef = useRef(null);\n const scrollContainerRef = useRef(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-Save State\n const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved');\n const saveTimeoutRef = useRef(null);\n\n // Context Menu State\n const [contextMenu, setContextMenu] = useState<{ x: number; y: number } | null>(null);\n const [isAiLoading, setIsAiLoading] = useState(false);\n\n // History State\n const [versions, setVersions] = useState([]);\n const [showHistoryMargin, setShowHistoryMargin] = useState(true);\n const [expandedGroupIds, setExpandedGroupIds] = useState>(new Set());\n\n // Refs to track selection\n const savedRange = useRef(null);\n const lastCursorPosition = useRef(null);\n\n // --- Helpers ---\n\n // Group versions by proximity (within 60px) to stack them\n const versionGroups = useMemo(() => {\n const sortedVersions = [...versions].sort((a, b) => b.timestamp - a.timestamp);\n const groups: VersionGroup[] = [];\n\n sortedVersions.forEach(v => {\n // Find an existing group close to this version\n const existingGroup = groups.find(g => Math.abs(g.topOffset - v.topOffset) < 60);\n\n if (existingGroup) {\n existingGroup.versions.push(v);\n // Keep the group timestamp sorted\n existingGroup.versions.sort((a, b) => b.timestamp - a.timestamp);\n } else {\n groups.push({\n id: `group-${v.id}`,\n topOffset: v.topOffset,\n versions: [v]\n });\n }\n });\n\n return groups;\n }, [versions]);\n\n const toggleGroup = (groupId: string) => {\n const newSet = new Set(expandedGroupIds);\n if (newSet.has(groupId)) {\n newSet.delete(groupId);\n } else {\n newSet.add(groupId);\n }\n setExpandedGroupIds(newSet);\n };\n\n const getSelectionTopOffset = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current) {\n const range = sel.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n // We need offset relative to the content container (contentRef)\n // contentRef is the white page div.\n const containerRect = contentRef.current.getBoundingClientRect();\n return rect.top - containerRect.top;\n }\n return 0;\n };\n\n const saveVersion = (type: string, textSnippet: string) => {\n if (!contentRef.current) return;\n\n const topOffset = getSelectionTopOffset();\n\n const newVersion: Version = {\n id: Date.now().toString(),\n timestamp: Date.now(),\n type: type,\n content: contentRef.current.innerHTML,\n snippet: textSnippet.substring(0, 80) + (textSnippet.length > 80 ? '...' : ''),\n topOffset\n };\n\n setVersions(prev => [newVersion, ...prev]);\n setShowHistoryMargin(true);\n };\n\n const restoreVersion = (version: Version) => {\n if (!contentRef.current) return;\n if (confirm('Restaurer cette version ? Le contenu actuel sera remplacé.')) {\n contentRef.current.innerHTML = version.content;\n handleInput();\n }\n };\n\n // --- Exposed Methods ---\n\n useImperativeHandle(ref, () => ({\n insertHtml: (text: string) => {\n saveVersion('Insertion Chat', 'Insertion depuis le panneau IA');\n\n contentRef.current?.focus();\n\n const sel = window.getSelection();\n if (lastCursorPosition.current) {\n sel?.removeAllRanges();\n sel?.addRange(lastCursorPosition.current);\n } else if (contentRef.current) {\n const range = document.createRange();\n range.selectNodeContents(contentRef.current);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n\n const htmlToInsert = text.includes('<') ? text : text.replace(/\\n/g, '
');\n document.execCommand('insertHTML', false, htmlToInsert);\n handleInput();\n }\n }));\n\n // --- Effects ---\n\n useEffect(() => {\n if (contentRef.current && contentRef.current.innerHTML !== initialContent) {\n // Only update if difference is significant to avoid cursor jumps on small re-renders?\n // OR better: Only update if NOT focused?\n if (!isFocused && Math.abs(contentRef.current.innerHTML.length - initialContent.length) > 5) {\n contentRef.current.innerHTML = initialContent;\n }\n }\n }, [initialContent, isFocused]);\n\n // --- Event Handlers ---\n\n const execCommand = (command: string, value: string | undefined = undefined) => {\n document.execCommand(command, false, value);\n handleInput();\n contentRef.current?.focus();\n };\n\n const handleInput = () => {\n if (contentRef.current) {\n if (onChange) onChange(contentRef.current.innerHTML);\n\n // Auto-Save Debounce\n if (onSave) {\n setSaveStatus('unsaved');\n if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);\n\n saveTimeoutRef.current = setTimeout(async () => {\n setSaveStatus('saving');\n await onSave(contentRef.current?.innerHTML || \"\");\n setSaveStatus('saved');\n }, 2000); // 2 seconds\n }\n }\n };\n\n const saveSelection = () => {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0 && contentRef.current?.contains(sel.anchorNode)) {\n lastCursorPosition.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleSelection = () => {\n const selection = window.getSelection();\n saveSelection();\n\n if (selection && selection.toString().length > 0 && onSelectionChange) {\n onSelectionChange(selection.toString());\n } else if (onSelectionChange) {\n onSelectionChange(\"\");\n }\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n if (contentRef.current?.contains(range.commonAncestorContainer)) {\n savedRange.current = range.cloneRange();\n setContextMenu({ x: e.clientX, y: e.clientY });\n return;\n }\n }\n\n savedRange.current = null;\n setContextMenu({ x: e.clientX, y: e.clientY });\n };\n\n const handleAiAction = async (mode: 'correct' | 'rewrite' | 'expand' | 'continue') => {\n if (!onAiTransform) return;\n\n const range = savedRange.current;\n const text = range?.toString() || \"\";\n\n if (!text && mode !== 'continue') return;\n\n const typeLabels: Record = {\n correct: 'Correction',\n rewrite: 'Reformulation',\n expand: 'Développement',\n continue: 'Continuation'\n };\n saveVersion(typeLabels[mode], text || \"Position curseur\");\n\n setIsAiLoading(true);\n try {\n const result = await onAiTransform(text, mode);\n\n if (result) {\n contentRef.current?.focus();\n const sel = window.getSelection();\n sel?.removeAllRanges();\n\n if (range) {\n sel?.addRange(range);\n }\n\n if (mode === 'continue') {\n sel?.collapseToEnd();\n document.execCommand('insertText', false, \" \" + result);\n } else {\n document.execCommand('insertText', false, result);\n }\n\n handleInput();\n }\n } catch (e) {\n console.error(\"AI Action failed\", e);\n } finally {\n setIsAiLoading(false);\n setContextMenu(null);\n }\n };\n\n const handleCopy = () => {\n if (savedRange.current) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(savedRange.current);\n document.execCommand('copy');\n }\n setContextMenu(null);\n };\n\n const handleSelectAll = () => {\n contentRef.current?.focus();\n document.execCommand('selectAll');\n handleSelection();\n setContextMenu(null);\n }\n\n const ToolbarButton = ({ icon: Icon, cmd, arg, label, onClick, isActive }: any) => (\n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n execCommand(cmd, arg);\n }\n }}\n className={`p-1.5 rounded transition-colors ${isActive ? 'bg-indigo-100 text-indigo-700' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200'}`}\n title={label}\n >\n \n \n );\n\n const hasSelection = savedRange.current && !savedRange.current.collapsed;\n\n return (\n
\n \n\n {/* Toolbar */}\n
\n \n \n \n
\n \n \n
\n \n \n \n
\n \n\n
\n\n {/* Save Status Indicator */}\n
\n {saveStatus === 'saving' && <> Sauvegarde...}\n {saveStatus === 'saved' && <> Sauvegardé}\n {saveStatus === 'unsaved' && Modifications non enregistrées...}\n
\n\n
\n setShowHistoryMargin(!showHistoryMargin)}\n isActive={showHistoryMargin}\n />\n
\n\n {/* Main Container - Scrollable Area */}\n \n
\n\n {/* Editor Content Page */}\n { setIsFocused(false); saveSelection(); }}\n onFocus={() => setIsFocused(true)}\n onKeyUp={saveSelection}\n onMouseUp={saveSelection}\n onSelect={handleSelection}\n onClick={() => contentRef.current?.focus()}\n onContextMenu={handleContextMenu}\n data-placeholder=\"Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)\"\n />\n\n {/* History Track - Moving with the page */}\n {showHistoryMargin && (\n
\n {/* Placeholder for empty history */}\n {versionGroups.length === 0 && (\n
\n \n

L'historique des modifications IA apparaîtra ici, aligné avec votre texte.

\n
\n )}\n\n {/* Render Groups */}\n {versionGroups.map((group) => {\n const isExpanded = expandedGroupIds.has(group.id);\n const isStack = group.versions.length > 1;\n const latest = group.versions[0];\n\n return (\n \n
\n\n {/* Stack Effect Background Card */}\n {isStack && !isExpanded && (\n
\n )}\n\n {/* Main Card Header */}\n isStack && toggleGroup(group.id)}\n >\n
\n {isStack && (\n \n )}\n \n {latest.type}\n \n
\n
\n \n {new Date(latest.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}\n \n {isStack && (\n isExpanded ? : \n )}\n
\n
\n\n {/* Card Content (Latest) */}\n {!isExpanded && (\n
\n
\n \"{latest.snippet}\"\n
\n restoreVersion(latest)}\n className=\"mt-2 w-full flex items-center justify-center gap-1 text-[10px] bg-slate-50 hover:bg-indigo-50 text-slate-600 hover:text-indigo-700 py-1 rounded transition-colors\"\n >\n Restaurer\n \n
\n )}\n\n {/* Expanded Stack View */}\n {isExpanded && (\n
\n {group.versions.map((v, i) => (\n
\n
\n \n {i === 0 ? 'Dernière version' : `Version -${i}`}\n \n \n {new Date(v.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n \n
\n
\n \"{v.snippet}\"\n
\n restoreVersion(v)}\n className=\"w-full flex items-center justify-center gap-1 text-[10px] bg-white border border-slate-200 text-slate-600 hover:text-indigo-600 hover:border-indigo-200 py-1 rounded transition-colors\"\n >\n Restaurer cette version\n \n
\n ))}\n
\n )}\n
\n
\n );\n })}\n
\n )}\n
\n
\n\n {/* Context Menu Overlay */}\n {contextMenu && (\n <>\n setContextMenu(null)}\n onContextMenu={(e) => { e.preventDefault(); setContextMenu(null); }}\n />\n \n {isAiLoading ? (\n
\n \n L'IA travaille...\n
\n ) : (\n <>\n
\n Outils IA\n
\n\n handleAiAction('correct')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Corriger l'orthographe\n \n\n handleAiAction('rewrite')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Reformuler\n \n\n handleAiAction('expand')}\n disabled={!hasSelection}\n className={`flex items-center gap-2 px-3 py-2 text-sm text-left transition-colors ${!hasSelection ? 'text-slate-300 cursor-not-allowed' : 'text-slate-700 hover:bg-indigo-50 hover:text-indigo-700'}`}\n >\n Développer\n \n\n handleAiAction('continue')}\n className=\"flex items-center gap-2 px-3 py-2 text-sm text-slate-700 hover:bg-indigo-50 hover:text-indigo-700 text-left transition-colors\"\n >\n Continuer l'écriture\n \n\n
\n\n
\n Édition\n
\n\n \n Copier\n \n\n \n Tout sélectionner\n \n \n )}\n
\n \n )}\n
\n );\n});\n\nexport default RichTextEditor;\n"],"names":[],"mappings":"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"}}, {"offset": {"line": 1004, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/project/%5Bid%5D/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useRef } from 'react';\r\nimport RichTextEditor, { RichTextEditorHandle } from '@/components/RichTextEditor';\r\nimport { useProjectContext } from '@/providers/ProjectProvider';\r\nimport api from '@/lib/api';\r\n\r\nexport default function WritePage() {\r\n const editorRef = useRef(null);\r\n const { project, user, currentChapterId, updateChapter, incrementUsage } = useProjectContext();\r\n\r\n if (!currentChapterId) return null;\r\n\r\n const currentChapter = project.chapters?.find(c => c.id === currentChapterId);\r\n\r\n return (\r\n updateChapter(currentChapterId, { content: html })}\r\n onAiTransform={async (text, mode) => {\r\n const result = await api.ai.transform(text, mode, currentChapter?.content || '', user);\r\n incrementUsage();\r\n return result;\r\n }}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;;;AALA;;;;;AAOe,SAAS;;IACpB,MAAM,YAAY,IAAA,mNAAM,EAAuB;IAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,wMAAiB;IAE5F,IAAI,CAAC,kBAAkB,OAAO;IAE9B,MAAM,iBAAiB,QAAQ,QAAQ,EAAE,KAAK,CAAA,IAAK,EAAE,EAAE,KAAK;IAE5D,qBACI,yOAAC,8LAAc;QACX,KAAK;QACL,gBAAgB,gBAAgB,WAAW;QAC3C,QAAQ,CAAC,OAAS,cAAc,kBAAkB;gBAAE,SAAS;YAAK;QAClE,eAAe,OAAO,MAAM;YACxB,MAAM,SAAS,MAAM,2KAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,MAAM,gBAAgB,WAAW,IAAI;YACjF;YACA,OAAO;QACX;;;;;;AAGZ;GApBwB;;QAEuD,wMAAiB;;;KAFxE"}}] } \ No newline at end of file diff --git a/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css b/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css index e8e5385..278d946 100644 --- a/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css +++ b/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css @@ -502,6 +502,13 @@ --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); --default-font-family: var(--font-sans); --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)) { @@ -1055,6 +1062,10 @@ } } + .-m-8 { + margin: calc(var(--spacing) * -8); + } + .m-1 { margin: calc(var(--spacing) * 1); } @@ -1119,6 +1130,10 @@ margin-top: calc(var(--spacing) * 20); } + .mt-auto { + margin-top: auto; + } + .mr-4 { margin-right: calc(var(--spacing) * 4); } @@ -1846,6 +1861,18 @@ border-style: dashed; } + .border-\[\#dfcdae\] { + border-color: #dfcdae; + } + + .border-\[\#eaddc4\] { + border-color: #eaddc4; + } + + .border-\[\#f4ecd8\] { + border-color: #f4ecd8; + } + .border-amber-100 { border-color: var(--color-amber-100); } @@ -1950,6 +1977,10 @@ border-color: var(--color-slate-800); } + .border-theme-border { + border-color: var(--color-theme-border); + } + .border-transparent { border-color: #0000; } @@ -1962,6 +1993,14 @@ border-color: var(--color-yellow-100); } + .bg-\[\#5c4731\] { + background-color: #5c4731; + } + + .bg-\[\#eaddc4\] { + background-color: #eaddc4; + } + .bg-\[\#eef2ff\] { background-color: #eef2ff; } @@ -1970,6 +2009,10 @@ background-color: #f4ecd8; } + .bg-\[\#fbf8f1\] { + background-color: #fbf8f1; + } + .bg-amber-50 { background-color: var(--color-amber-50); } @@ -2024,6 +2067,16 @@ 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 { background-color: var(--color-blue-600); } @@ -2052,6 +2105,16 @@ 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 { background-color: var(--color-indigo-50); } @@ -2074,6 +2137,16 @@ 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 { background-color: #625fff33; } @@ -2154,6 +2227,42 @@ 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 { background-color: #0000; } @@ -2651,6 +2760,18 @@ white-space: pre-wrap; } + .text-\[\#735e44\] { + color: #735e44; + } + + .text-\[\#332616\] { + color: #332616; + } + + .text-\[\#433422\] { + color: #433422; + } + .text-amber-500 { color: var(--color-amber-500); } @@ -2791,6 +2912,18 @@ 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 { color: #0000; } @@ -2874,6 +3007,10 @@ opacity: .8; } + .opacity-90 { + opacity: .9; + } + .shadow-2xl { --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); @@ -3161,6 +3298,12 @@ } } + @media (hover: hover) { + .hover\:border-\[\#cfbd9e\]:hover { + border-color: #cfbd9e; + } + } + @media (hover: hover) { .hover\:border-blue-200:hover { 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) { .hover\:bg-amber-50:hover { 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) { .hover\:bg-blue-600:hover { 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) { .hover\:bg-indigo-700:hover { 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) { .hover\:bg-red-700:hover { 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) { .hover\:bg-white:hover { background-color: var(--color-white); @@ -3353,6 +3574,12 @@ } } + @media (hover: hover) { + .hover\:text-\[\#332616\]:hover { + color: #332616; + } + } + @media (hover: hover) { .hover\:text-blue-400:hover { 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) { .hover\:text-white:hover { 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) { .hover\:shadow-2xl:hover { --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 { content: attr(placeholder); color: #9ca3af; diff --git a/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css.map b/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css.map index 52dea87..6c960b7 100644 --- a/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css.map +++ b/.next/dev/static/chunks/[root-of-the-server]__c391f813._.css.map @@ -4,5 +4,5 @@ "sections": [ {"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["turbopack:///[next]/internal/font/google/inter_b2991b2.module.css"],"sourcesContent":["/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 100 900;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: 'Inter Fallback';\n src: local(\"Arial\");\n ascent-override: 90.44%;\ndescent-override: 22.52%;\nline-gap-override: 0.00%;\nsize-adjust: 107.12%;\n\n}\n.className {\n font-family: 'Inter', 'Inter Fallback';\n font-style: normal;\n\n}\n.variable {\n --font-sans: 'Inter', 'Inter Fallback';\n}\n"],"names":[],"mappings":"AACA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AASA;;;;;;;;;AAQA;;;;;;;;;AASA;;;;;AAKA","ignoreList":[0]}}, {"offset": {"line": 83, "column": 0}, "map": {"version":3,"sources":["turbopack:///[next]/internal/font/google/merriweather_6ee6941f.module.css"],"sourcesContent":["/* cyrillic-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 300;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqnJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 300;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSequJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 300;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqlJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 300;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqkJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 300;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqqJ-mXq1Gi.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqnJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSequJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqlJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqkJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqqJ-mXq1Gi.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqnJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSequJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqlJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqkJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqqJ-mXq1Gi.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 900;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqnJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 900;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSequJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 900;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqlJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 900;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqkJ-mXq1Gi3iE.woff2%22,%22preload%22:false,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Merriweather';\n font-style: normal;\n font-weight: 900;\n font-stretch: 100%;\n font-display: swap;\n src: url(@vercel/turbopack-next/internal/font/google/font?{%22url%22:%22https://fonts.gstatic.com/s/merriweather/v33/u-4e0qyriQwlOrhSvowK_l5UcA6zuSYEqOzpPe3HOZJ5eX1WtLaQwmYiSeqqJ-mXq1Gi.woff2%22,%22preload%22:true,%22has_size_adjust%22:true}) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: 'Merriweather Fallback';\n src: local(\"Times New Roman\");\n ascent-override: 80.59%;\ndescent-override: 22.36%;\nline-gap-override: 0.00%;\nsize-adjust: 122.09%;\n\n}\n.className {\n font-family: 'Merriweather', 'Merriweather Fallback';\n font-style: normal;\n\n}\n.variable {\n --font-serif: 'Merriweather', 'Merriweather Fallback';\n}\n"],"names":[],"mappings":"AACA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AAUA;;;;;;;;;;AASA;;;;;;;;;AASA;;;;;AAKA","ignoreList":[0]}}, - {"offset": {"line": 302, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: 'Inter', sans-serif;\n --font-serif: 'Merriweather', serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-orange-100: oklch(95.4% 0.038 75.164);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-indigo-800: oklch(39.8% 0.195 277.366);\n --color-indigo-900: oklch(35.9% 0.144 278.697);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-rose-100: oklch(94.1% 0.03 12.58);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-800: oklch(45.5% 0.188 13.697);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-relaxed: 1.625;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-3xl: 64px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-4 {\n inset: calc(var(--spacing) * -4);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-3 {\n right: calc(var(--spacing) * -3);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-10 {\n right: calc(var(--spacing) * 10);\n }\n .right-\\[-10px\\] {\n right: -10px;\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-10 {\n bottom: calc(var(--spacing) * 10);\n }\n .bottom-full {\n bottom: 100%;\n }\n .-left-2 {\n left: calc(var(--spacing) * -2);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-10 {\n left: calc(var(--spacing) * 10);\n }\n .left-\\[calc\\(50\\%\\+420px\\)\\] {\n left: calc(50% + 420px);\n }\n .-z-1 {\n z-index: calc(1 * -1);\n }\n .-z-10 {\n z-index: calc(10 * -1);\n }\n .z-0 {\n z-index: 0;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-3 {\n grid-column: span 3 / span 3;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-20 {\n margin-top: calc(var(--spacing) * 20);\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-6 {\n margin-right: calc(var(--spacing) * 6);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-12 {\n margin-bottom: calc(var(--spacing) * 12);\n }\n .mb-16 {\n margin-bottom: calc(var(--spacing) * 16);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[4000px\\] {\n height: 4000px;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-\\[90\\%\\] {\n max-height: 90%;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[1000px\\] {\n min-height: 1000px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1 / 2 * 100%);\n }\n .w-1\\/3 {\n width: calc(1 / 3 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[800px\\] {\n width: 800px;\n }\n .w-\\[4000px\\] {\n width: 4000px;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[85\\%\\] {\n max-width: 85%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-105 {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-\\[1\\.01\\] {\n scale: 1.01;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .resize-none {\n resize: none;\n }\n .list-disc {\n list-style-type: disc;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-slate-50 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-50);\n }\n }\n .divide-slate-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-100);\n }\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[2\\.5rem\\] {\n border-radius: 2.5rem;\n }\n .rounded-\\[2rem\\] {\n border-radius: 2rem;\n }\n .rounded-\\[3rem\\] {\n border-radius: 3rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\n }\n .rounded-br-none {\n border-bottom-right-radius: 0;\n }\n .rounded-bl-none {\n border-bottom-left-radius: 0;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-2 {\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-amber-100 {\n border-color: var(--color-amber-100);\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-400 {\n border-color: var(--color-blue-400);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-100 {\n border-color: var(--color-green-100);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-indigo-50 {\n border-color: var(--color-indigo-50);\n }\n .border-indigo-100 {\n border-color: var(--color-indigo-100);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-indigo-400 {\n border-color: var(--color-indigo-400);\n }\n .border-indigo-600 {\n border-color: var(--color-indigo-600);\n }\n .border-red-100 {\n border-color: var(--color-red-100);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-slate-50 {\n border-color: var(--color-slate-50);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-700 {\n border-color: var(--color-slate-700);\n }\n .border-slate-800 {\n border-color: var(--color-slate-800);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-100 {\n border-color: var(--color-yellow-100);\n }\n .bg-\\[\\#eef2ff\\] {\n background-color: #eef2ff;\n }\n .bg-\\[\\#f4ecd8\\] {\n background-color: #f4ecd8;\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-400 {\n background-color: var(--color-amber-400);\n }\n .bg-black\\/5 {\n background-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n .bg-blue-900 {\n background-color: var(--color-blue-900);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/30 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 30%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-indigo-500\\/20 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n }\n .bg-indigo-600 {\n background-color: var(--color-indigo-600);\n }\n .bg-indigo-900 {\n background-color: var(--color-indigo-900);\n }\n .bg-indigo-900\\/50 {\n background-color: color-mix(in srgb, oklch(35.9% 0.144 278.697) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-900) 50%, transparent);\n }\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-100 {\n background-color: var(--color-rose-100);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-300 {\n background-color: var(--color-slate-300);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-800 {\n background-color: var(--color-slate-800);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/50 {\n background-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n .bg-white\\/70 {\n background-color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .bg-white\\/80 {\n background-color: color-mix(in srgb, #fff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 80%, transparent);\n }\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-blue-500\\/20 {\n --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-600 {\n --tw-gradient-from: var(--color-blue-600);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-orange-200 {\n --tw-gradient-from: var(--color-orange-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-red-200 {\n --tw-gradient-from: var(--color-red-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-300 {\n --tw-gradient-from: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-indigo-200 {\n --tw-gradient-via: var(--color-indigo-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-purple-200 {\n --tw-gradient-via: var(--color-purple-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-yellow-100 {\n --tw-gradient-via: var(--color-yellow-100);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-blue-200 {\n --tw-gradient-to: var(--color-blue-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-green-200 {\n --tw-gradient-to: var(--color-green-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500 {\n --tw-gradient-to: var(--color-indigo-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500\\/20 {\n --tw-gradient-to: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-300 {\n --tw-gradient-to: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-clip-text {\n background-clip: text;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-32 {\n padding-top: calc(var(--spacing) * 32);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-12 {\n padding-left: calc(var(--spacing) * 12);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .font-serif {\n font-family: var(--font-serif);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-indigo-300 {\n color: var(--color-indigo-300);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-indigo-800 {\n color: var(--color-indigo-800);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-800 {\n color: var(--color-rose-800);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-transparent {\n color: transparent;\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-blue-500 {\n text-decoration-color: var(--color-blue-500);\n }\n .decoration-indigo-300 {\n text-decoration-color: var(--color-indigo-300);\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .accent-blue-600 {\n accent-color: var(--color-blue-600);\n }\n .accent-indigo-600 {\n accent-color: var(--color-indigo-600);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(59,130,246,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(99\\,102\\,241\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(99,102,241,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_2px_0px_0px_rgba\\(203\\,213\\,225\\,1\\)\\] {\n --tw-shadow: 0px 2px 0px 0px var(--tw-shadow-color, rgba(203,213,225,1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-blue-200 {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n .shadow-indigo-100 {\n --tw-shadow-color: oklch(93% 0.034 272.788);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-amber-200 {\n --tw-ring-color: var(--color-amber-200);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-indigo-200 {\n --tw-ring-color: var(--color-indigo-200);\n }\n .ring-indigo-400 {\n --tw-ring-color: var(--color-indigo-400);\n }\n .ring-indigo-500 {\n --tw-ring-color: var(--color-indigo-500);\n }\n .ring-offset-1 {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[1px\\] {\n --tw-blur: blur(1px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[60px\\] {\n --tw-blur: blur(60px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[120px\\] {\n --tw-blur: blur(120px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[150px\\] {\n --tw-blur: blur(150px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:bg-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-white {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .selection\\:bg-blue-200 {\n & *::selection {\n background-color: var(--color-blue-200);\n }\n &::selection {\n background-color: var(--color-blue-200);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-110 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.02\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.02;\n }\n }\n }\n .hover\\:border-blue-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-indigo-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:border-indigo-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-400);\n }\n }\n }\n .hover\\:border-indigo-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-500);\n }\n }\n }\n .hover\\:border-slate-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:border-slate-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-amber-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-50);\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-black\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-50);\n }\n }\n }\n .hover\\:bg-blue-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-blue-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-800);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-100);\n }\n }\n }\n .hover\\:bg-indigo-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:bg-indigo-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-red-900\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:bg-slate-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-slate-900 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-900);\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:text-blue-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-400);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-indigo-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:text-indigo-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-800);\n }\n }\n }\n .hover\\:text-red-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-slate-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-500);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-slate-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-900);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:decoration-indigo-600 {\n &:hover {\n @media (hover: hover) {\n text-decoration-color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:shadow-2xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-blue-200 {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .focus\\:border-b {\n &:focus {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .focus\\:border-blue-500 {\n &:focus {\n border-color: var(--color-blue-500);\n }\n }\n .focus\\:border-indigo-400 {\n &:focus {\n border-color: var(--color-indigo-400);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-4 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-blue-300 {\n &:focus {\n --tw-ring-color: var(--color-blue-300);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-indigo-500 {\n &:focus {\n --tw-ring-color: var(--color-indigo-500);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .active\\:cursor-grabbing {\n &:active {\n cursor: grabbing;\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-1\\/3 {\n @media (width >= 48rem) {\n width: calc(1 / 3 * 100%);\n }\n }\n .md\\:w-64 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 64);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-7xl {\n @media (width >= 48rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:w-1\\/2 {\n @media (width >= 64rem) {\n width: calc(1 / 2 * 100%);\n }\n }\n .lg\\:w-96 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 96);\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n}\n.editor-content:empty:before {\n content: attr(placeholder);\n color: #9ca3af;\n pointer-events: none;\n}\n::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n@media print {\n @page {\n margin: 2cm;\n size: auto;\n }\n html, body {\n height: auto !important;\n overflow: visible !important;\n margin: 0 !important;\n padding: 0 !important;\n background: white !important;\n color: black !important;\n }\n #__next {\n height: auto !important;\n overflow: visible !important;\n display: block !important;\n position: relative !important;\n }\n .no-print {\n display: none !important;\n }\n .print-only {\n display: block !important;\n }\n .break-before-page {\n page-break-before: always;\n break-before: page;\n }\n .break-after-page {\n page-break-after: always;\n break-after: page;\n }\n p {\n text-align: justify;\n widows: 3;\n orphans: 3;\n color: black !important;\n }\n h1, h2, h3, h4 {\n color: black !important;\n page-break-after: avoid;\n }\n a {\n text-decoration: none;\n color: black !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\r\n"],"names":[],"mappings":"AACA;EAy4FE;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAz4FJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EAwIE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;;AAvRF;;AAAA;EA4RE;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;EAKA;;;;EAIF;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAGA;;;;;EAGA;;;;EAGA;;;;;EAIA;;;;E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"}}] + {"offset": {"line": 302, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/globals.css"],"sourcesContent":["/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: 'Inter', sans-serif;\n --font-serif: 'Merriweather', serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-red-900: oklch(39.6% 0.141 25.723);\n --color-orange-100: oklch(95.4% 0.038 75.164);\n --color-orange-200: oklch(90.1% 0.076 70.697);\n --color-orange-500: oklch(70.5% 0.213 47.604);\n --color-orange-600: oklch(64.6% 0.222 41.116);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-100: oklch(96.2% 0.059 95.617);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-600: oklch(66.6% 0.179 58.318);\n --color-amber-800: oklch(47.3% 0.137 46.201);\n --color-yellow-100: oklch(97.3% 0.071 103.193);\n --color-yellow-400: oklch(85.2% 0.199 91.936);\n --color-yellow-500: oklch(79.5% 0.184 86.047);\n --color-yellow-600: oklch(68.1% 0.162 75.834);\n --color-green-50: oklch(98.2% 0.018 155.826);\n --color-green-100: oklch(96.2% 0.044 156.743);\n --color-green-200: oklch(92.5% 0.084 155.995);\n --color-green-500: oklch(72.3% 0.219 149.579);\n --color-green-700: oklch(52.7% 0.154 150.069);\n --color-green-800: oklch(44.8% 0.119 151.328);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-100: oklch(93.2% 0.032 255.585);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-400: oklch(70.7% 0.165 254.624);\n --color-blue-500: oklch(62.3% 0.214 259.815);\n --color-blue-600: oklch(54.6% 0.245 262.881);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-blue-800: oklch(42.4% 0.199 265.638);\n --color-blue-900: oklch(37.9% 0.146 265.522);\n --color-indigo-50: oklch(96.2% 0.018 272.314);\n --color-indigo-100: oklch(93% 0.034 272.788);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-300: oklch(78.5% 0.115 274.713);\n --color-indigo-400: oklch(67.3% 0.182 276.935);\n --color-indigo-500: oklch(58.5% 0.233 277.117);\n --color-indigo-600: oklch(51.1% 0.262 276.966);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-indigo-800: oklch(39.8% 0.195 277.366);\n --color-indigo-900: oklch(35.9% 0.144 278.697);\n --color-purple-100: oklch(94.6% 0.033 307.174);\n --color-purple-200: oklch(90.2% 0.063 306.703);\n --color-purple-600: oklch(55.8% 0.288 302.321);\n --color-purple-700: oklch(49.6% 0.265 301.924);\n --color-rose-100: oklch(94.1% 0.03 12.58);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-800: oklch(45.5% 0.188 13.697);\n --color-slate-50: oklch(98.4% 0.003 247.858);\n --color-slate-100: oklch(96.8% 0.007 247.896);\n --color-slate-200: oklch(92.9% 0.013 255.508);\n --color-slate-300: oklch(86.9% 0.022 252.894);\n --color-slate-400: oklch(70.4% 0.04 256.788);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-slate-600: oklch(44.6% 0.043 257.281);\n --color-slate-700: oklch(37.2% 0.044 257.287);\n --color-slate-800: oklch(27.9% 0.041 260.031);\n --color-slate-900: oklch(20.8% 0.042 265.755);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-tight: -0.025em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-relaxed: 1.625;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-3xl: 64px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-theme-bg: var(--theme-bg);\n --color-theme-panel: var(--theme-panel);\n --color-theme-text: var(--theme-text);\n --color-theme-muted: var(--theme-muted);\n --color-theme-border: var(--theme-border);\n --color-theme-editor-bg: var(--theme-editor-bg);\n --color-theme-editor-text: var(--theme-editor-text);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-inset-4 {\n inset: calc(var(--spacing) * -4);\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1\\.5 {\n top: calc(var(--spacing) * 1.5);\n }\n .top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n .top-3\\.5 {\n top: calc(var(--spacing) * 3.5);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-8 {\n top: calc(var(--spacing) * 8);\n }\n .top-10 {\n top: calc(var(--spacing) * 10);\n }\n .-right-1 {\n right: calc(var(--spacing) * -1);\n }\n .-right-3 {\n right: calc(var(--spacing) * -3);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .right-10 {\n right: calc(var(--spacing) * 10);\n }\n .right-\\[-10px\\] {\n right: -10px;\n }\n .-bottom-1 {\n bottom: calc(var(--spacing) * -1);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-2 {\n bottom: calc(var(--spacing) * 2);\n }\n .bottom-10 {\n bottom: calc(var(--spacing) * 10);\n }\n .bottom-full {\n bottom: 100%;\n }\n .-left-2 {\n left: calc(var(--spacing) * -2);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .left-10 {\n left: calc(var(--spacing) * 10);\n }\n .left-\\[calc\\(50\\%\\+420px\\)\\] {\n left: calc(50% + 420px);\n }\n .-z-1 {\n z-index: calc(1 * -1);\n }\n .-z-10 {\n z-index: calc(10 * -1);\n }\n .z-0 {\n z-index: 0;\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-40 {\n z-index: 40;\n }\n .z-50 {\n z-index: 50;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .col-span-3 {\n grid-column: span 3 / span 3;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .-m-8 {\n margin: calc(var(--spacing) * -8);\n }\n .m-1 {\n margin: calc(var(--spacing) * 1);\n }\n .mx-1 {\n margin-inline: calc(var(--spacing) * 1);\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .mt-10 {\n margin-top: calc(var(--spacing) * 10);\n }\n .mt-12 {\n margin-top: calc(var(--spacing) * 12);\n }\n .mt-20 {\n margin-top: calc(var(--spacing) * 20);\n }\n .mt-auto {\n margin-top: auto;\n }\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n .mr-6 {\n margin-right: calc(var(--spacing) * 6);\n }\n .mr-auto {\n margin-right: auto;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-12 {\n margin-bottom: calc(var(--spacing) * 12);\n }\n .mb-16 {\n margin-bottom: calc(var(--spacing) * 16);\n }\n .ml-1 {\n margin-left: calc(var(--spacing) * 1);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-1\\.5 {\n height: calc(var(--spacing) * 1.5);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-32 {\n height: calc(var(--spacing) * 32);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[500px\\] {\n height: 500px;\n }\n .h-\\[4000px\\] {\n height: 4000px;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .h-screen {\n height: 100vh;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-64 {\n max-height: calc(var(--spacing) * 64);\n }\n .max-h-\\[90\\%\\] {\n max-height: 90%;\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n .min-h-\\[120px\\] {\n min-height: 120px;\n }\n .min-h-\\[1000px\\] {\n min-height: 1000px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-1\\.5 {\n width: calc(var(--spacing) * 1.5);\n }\n .w-1\\/2 {\n width: calc(1 / 2 * 100%);\n }\n .w-1\\/3 {\n width: calc(1 / 3 * 100%);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[600px\\] {\n width: 600px;\n }\n .w-\\[800px\\] {\n width: 800px;\n }\n .w-\\[4000px\\] {\n width: 4000px;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .w-px {\n width: 1px;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\n }\n .max-w-5xl {\n max-width: var(--container-5xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[85\\%\\] {\n max-width: 85%;\n }\n .max-w-lg {\n max-width: var(--container-lg);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-105 {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-\\[1\\.01\\] {\n scale: 1.01;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-grab {\n cursor: grab;\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .cursor-text {\n cursor: text;\n }\n .resize-none {\n resize: none;\n }\n .list-disc {\n list-style-type: disc;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-8 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-slate-50 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-50);\n }\n }\n .divide-slate-100 {\n :where(& > :not(:last-child)) {\n border-color: var(--color-slate-100);\n }\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-3xl {\n border-radius: var(--radius-3xl);\n }\n .rounded-\\[2\\.5rem\\] {\n border-radius: 2.5rem;\n }\n .rounded-\\[2rem\\] {\n border-radius: 2rem;\n }\n .rounded-\\[3rem\\] {\n border-radius: 3rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\n }\n .rounded-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\n }\n .rounded-br-none {\n border-bottom-right-radius: 0;\n }\n .rounded-bl-none {\n border-bottom-left-radius: 0;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-y {\n border-block-style: var(--tw-border-style);\n border-block-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-2 {\n border-right-style: var(--tw-border-style);\n border-right-width: 2px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-l-2 {\n border-left-style: var(--tw-border-style);\n border-left-width: 2px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-\\[\\#dfcdae\\] {\n border-color: #dfcdae;\n }\n .border-\\[\\#eaddc4\\] {\n border-color: #eaddc4;\n }\n .border-\\[\\#f4ecd8\\] {\n border-color: #f4ecd8;\n }\n .border-amber-100 {\n border-color: var(--color-amber-100);\n }\n .border-amber-200 {\n border-color: var(--color-amber-200);\n }\n .border-blue-100 {\n border-color: var(--color-blue-100);\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-blue-400 {\n border-color: var(--color-blue-400);\n }\n .border-blue-500 {\n border-color: var(--color-blue-500);\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-green-100 {\n border-color: var(--color-green-100);\n }\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n .border-indigo-50 {\n border-color: var(--color-indigo-50);\n }\n .border-indigo-100 {\n border-color: var(--color-indigo-100);\n }\n .border-indigo-200 {\n border-color: var(--color-indigo-200);\n }\n .border-indigo-300 {\n border-color: var(--color-indigo-300);\n }\n .border-indigo-400 {\n border-color: var(--color-indigo-400);\n }\n .border-indigo-600 {\n border-color: var(--color-indigo-600);\n }\n .border-red-100 {\n border-color: var(--color-red-100);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-rose-200 {\n border-color: var(--color-rose-200);\n }\n .border-slate-50 {\n border-color: var(--color-slate-50);\n }\n .border-slate-100 {\n border-color: var(--color-slate-100);\n }\n .border-slate-200 {\n border-color: var(--color-slate-200);\n }\n .border-slate-300 {\n border-color: var(--color-slate-300);\n }\n .border-slate-700 {\n border-color: var(--color-slate-700);\n }\n .border-slate-800 {\n border-color: var(--color-slate-800);\n }\n .border-theme-border {\n border-color: var(--color-theme-border);\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-white {\n border-color: var(--color-white);\n }\n .border-yellow-100 {\n border-color: var(--color-yellow-100);\n }\n .bg-\\[\\#5c4731\\] {\n background-color: #5c4731;\n }\n .bg-\\[\\#eaddc4\\] {\n background-color: #eaddc4;\n }\n .bg-\\[\\#eef2ff\\] {\n background-color: #eef2ff;\n }\n .bg-\\[\\#f4ecd8\\] {\n background-color: #f4ecd8;\n }\n .bg-\\[\\#fbf8f1\\] {\n background-color: #fbf8f1;\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-100 {\n background-color: var(--color-amber-100);\n }\n .bg-amber-400 {\n background-color: var(--color-amber-400);\n }\n .bg-black\\/5 {\n background-color: color-mix(in srgb, #000 5%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 5%, transparent);\n }\n }\n .bg-black\\/40 {\n background-color: color-mix(in srgb, #000 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 40%, transparent);\n }\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-blue-100 {\n background-color: var(--color-blue-100);\n }\n .bg-blue-500 {\n background-color: var(--color-blue-500);\n }\n .bg-blue-500\\/10 {\n background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);\n }\n }\n .bg-blue-600 {\n background-color: var(--color-blue-600);\n }\n .bg-blue-700 {\n background-color: var(--color-blue-700);\n }\n .bg-blue-900 {\n background-color: var(--color-blue-900);\n }\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n .bg-green-100 {\n background-color: var(--color-green-100);\n }\n .bg-green-500 {\n background-color: var(--color-green-500);\n }\n .bg-green-500\\/10 {\n background-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-green-500) 10%, transparent);\n }\n }\n .bg-indigo-50 {\n background-color: var(--color-indigo-50);\n }\n .bg-indigo-50\\/30 {\n background-color: color-mix(in srgb, oklch(96.2% 0.018 272.314) 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-50) 30%, transparent);\n }\n }\n .bg-indigo-100 {\n background-color: var(--color-indigo-100);\n }\n .bg-indigo-500 {\n background-color: var(--color-indigo-500);\n }\n .bg-indigo-500\\/10 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);\n }\n }\n .bg-indigo-500\\/20 {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n }\n .bg-indigo-600 {\n background-color: var(--color-indigo-600);\n }\n .bg-indigo-900 {\n background-color: var(--color-indigo-900);\n }\n .bg-indigo-900\\/50 {\n background-color: color-mix(in srgb, oklch(35.9% 0.144 278.697) 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-900) 50%, transparent);\n }\n }\n .bg-orange-100 {\n background-color: var(--color-orange-100);\n }\n .bg-purple-100 {\n background-color: var(--color-purple-100);\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-rose-100 {\n background-color: var(--color-rose-100);\n }\n .bg-slate-50 {\n background-color: var(--color-slate-50);\n }\n .bg-slate-100 {\n background-color: var(--color-slate-100);\n }\n .bg-slate-200 {\n background-color: var(--color-slate-200);\n }\n .bg-slate-300 {\n background-color: var(--color-slate-300);\n }\n .bg-slate-700 {\n background-color: var(--color-slate-700);\n }\n .bg-slate-800 {\n background-color: var(--color-slate-800);\n }\n .bg-slate-900 {\n background-color: var(--color-slate-900);\n }\n .bg-theme-bg {\n background-color: var(--color-theme-bg);\n }\n .bg-theme-bg\\/50 {\n background-color: var(--color-theme-bg);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-bg) 50%, transparent);\n }\n }\n .bg-theme-border {\n background-color: var(--color-theme-border);\n }\n .bg-theme-editor-bg {\n background-color: var(--color-theme-editor-bg);\n }\n .bg-theme-panel {\n background-color: var(--color-theme-panel);\n }\n .bg-theme-panel\\/50 {\n background-color: var(--color-theme-panel);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);\n }\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-white\\/10 {\n background-color: color-mix(in srgb, #fff 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 10%, transparent);\n }\n }\n .bg-white\\/50 {\n background-color: color-mix(in srgb, #fff 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 50%, transparent);\n }\n }\n .bg-white\\/70 {\n background-color: color-mix(in srgb, #fff 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 70%, transparent);\n }\n }\n .bg-white\\/80 {\n background-color: color-mix(in srgb, #fff 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 80%, transparent);\n }\n }\n .bg-gradient-to-r {\n --tw-gradient-position: to right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-blue-500\\/20 {\n --tw-gradient-from: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-blue-600 {\n --tw-gradient-from: var(--color-blue-600);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-orange-200 {\n --tw-gradient-from: var(--color-orange-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-red-200 {\n --tw-gradient-from: var(--color-red-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-slate-300 {\n --tw-gradient-from: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .via-indigo-200 {\n --tw-gradient-via: var(--color-indigo-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-purple-200 {\n --tw-gradient-via: var(--color-purple-200);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .via-yellow-100 {\n --tw-gradient-via: var(--color-yellow-100);\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n .to-blue-200 {\n --tw-gradient-to: var(--color-blue-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-green-200 {\n --tw-gradient-to: var(--color-green-200);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500 {\n --tw-gradient-to: var(--color-indigo-500);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-indigo-500\\/20 {\n --tw-gradient-to: color-mix(in srgb, oklch(58.5% 0.233 277.117) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-to: color-mix(in oklab, var(--color-indigo-500) 20%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-slate-300 {\n --tw-gradient-to: var(--color-slate-300);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-clip-text {\n background-clip: text;\n }\n .object-cover {\n object-fit: cover;\n }\n .p-0\\.5 {\n padding: calc(var(--spacing) * 0.5);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .p-12 {\n padding: calc(var(--spacing) * 12);\n }\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * 0.5);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-5 {\n padding-block: calc(var(--spacing) * 5);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-10 {\n padding-block: calc(var(--spacing) * 10);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .py-20 {\n padding-block: calc(var(--spacing) * 20);\n }\n .py-24 {\n padding-block: calc(var(--spacing) * 24);\n }\n .pt-1 {\n padding-top: calc(var(--spacing) * 1);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pt-32 {\n padding-top: calc(var(--spacing) * 32);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-12 {\n padding-right: calc(var(--spacing) * 12);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-8 {\n padding-bottom: calc(var(--spacing) * 8);\n }\n .pb-20 {\n padding-bottom: calc(var(--spacing) * 20);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-9 {\n padding-left: calc(var(--spacing) * 9);\n }\n .pl-12 {\n padding-left: calc(var(--spacing) * 12);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .font-serif {\n font-family: var(--font-serif);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n .text-4xl {\n font-size: var(--text-4xl);\n line-height: var(--tw-leading, var(--text-4xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-6xl {\n font-size: var(--text-6xl);\n line-height: var(--tw-leading, var(--text-6xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[9px\\] {\n font-size: 9px;\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .leading-\\[1\\.1\\] {\n --tw-leading: 1.1;\n line-height: 1.1;\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n .font-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-\\[\\#735e44\\] {\n color: #735e44;\n }\n .text-\\[\\#332616\\] {\n color: #332616;\n }\n .text-\\[\\#433422\\] {\n color: #433422;\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-600 {\n color: var(--color-amber-600);\n }\n .text-amber-800 {\n color: var(--color-amber-800);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-blue-500 {\n color: var(--color-blue-500);\n }\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n .text-blue-900 {\n color: var(--color-blue-900);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-500 {\n color: var(--color-green-500);\n }\n .text-green-700 {\n color: var(--color-green-700);\n }\n .text-green-800 {\n color: var(--color-green-800);\n }\n .text-indigo-300 {\n color: var(--color-indigo-300);\n }\n .text-indigo-500 {\n color: var(--color-indigo-500);\n }\n .text-indigo-600 {\n color: var(--color-indigo-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-indigo-800 {\n color: var(--color-indigo-800);\n }\n .text-orange-500 {\n color: var(--color-orange-500);\n }\n .text-orange-600 {\n color: var(--color-orange-600);\n }\n .text-purple-600 {\n color: var(--color-purple-600);\n }\n .text-purple-700 {\n color: var(--color-purple-700);\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-600 {\n color: var(--color-red-600);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-red-900 {\n color: var(--color-red-900);\n }\n .text-rose-800 {\n color: var(--color-rose-800);\n }\n .text-slate-300 {\n color: var(--color-slate-300);\n }\n .text-slate-400 {\n color: var(--color-slate-400);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-slate-600 {\n color: var(--color-slate-600);\n }\n .text-slate-700 {\n color: var(--color-slate-700);\n }\n .text-slate-800 {\n color: var(--color-slate-800);\n }\n .text-slate-900 {\n color: var(--color-slate-900);\n }\n .text-theme-editor-text {\n color: var(--color-theme-editor-text);\n }\n .text-theme-muted {\n color: var(--color-theme-muted);\n }\n .text-theme-text {\n color: var(--color-theme-text);\n }\n .text-transparent {\n color: transparent;\n }\n .text-white {\n color: var(--color-white);\n }\n .text-yellow-400 {\n color: var(--color-yellow-400);\n }\n .text-yellow-500 {\n color: var(--color-yellow-500);\n }\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .italic {\n font-style: italic;\n }\n .underline {\n text-decoration-line: underline;\n }\n .decoration-blue-500 {\n text-decoration-color: var(--color-blue-500);\n }\n .decoration-indigo-300 {\n text-decoration-color: var(--color-indigo-300);\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .accent-blue-600 {\n accent-color: var(--color-blue-600);\n }\n .accent-indigo-600 {\n accent-color: var(--color-indigo-600);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-60 {\n opacity: 60%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .opacity-90 {\n opacity: 90%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(59,130,246,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0_0_10px_rgba\\(99\\,102\\,241\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 10px var(--tw-shadow-color, rgba(99,102,241,0.5));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-\\[0px_2px_0px_0px_rgba\\(203\\,213\\,225\\,1\\)\\] {\n --tw-shadow: 0px 2px 0px 0px var(--tw-shadow-color, rgba(203,213,225,1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-blue-200 {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n .shadow-indigo-100 {\n --tw-shadow-color: oklch(93% 0.034 272.788);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-indigo-100) var(--tw-shadow-alpha), transparent);\n }\n }\n .ring-amber-200 {\n --tw-ring-color: var(--color-amber-200);\n }\n .ring-blue-200 {\n --tw-ring-color: var(--color-blue-200);\n }\n .ring-indigo-200 {\n --tw-ring-color: var(--color-indigo-200);\n }\n .ring-indigo-400 {\n --tw-ring-color: var(--color-indigo-400);\n }\n .ring-indigo-500 {\n --tw-ring-color: var(--color-indigo-500);\n }\n .ring-offset-1 {\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n .blur-3xl {\n --tw-blur: blur(var(--blur-3xl));\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[1px\\] {\n --tw-blur: blur(1px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[60px\\] {\n --tw-blur: blur(60px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[120px\\] {\n --tw-blur: blur(120px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .blur-\\[150px\\] {\n --tw-blur: blur(150px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-100 {\n --tw-duration: 100ms;\n transition-duration: 100ms;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\n }\n .duration-1000 {\n --tw-duration: 1000ms;\n transition-duration: 1000ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:bg-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-blue-600 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .group-hover\\:text-white {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .group-hover\\:opacity-100 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .selection\\:bg-blue-200 {\n & *::selection {\n background-color: var(--color-blue-200);\n }\n &::selection {\n background-color: var(--color-blue-200);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-110 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.02\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.02;\n }\n }\n }\n .hover\\:border-\\[\\#cfbd9e\\] {\n &:hover {\n @media (hover: hover) {\n border-color: #cfbd9e;\n }\n }\n }\n .hover\\:border-blue-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-200);\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-indigo-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:border-indigo-400 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-400);\n }\n }\n }\n .hover\\:border-indigo-500 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-indigo-500);\n }\n }\n }\n .hover\\:border-slate-200 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:border-slate-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:border-slate-600 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-slate-600);\n }\n }\n }\n .hover\\:bg-\\[\\#eaddc4\\] {\n &:hover {\n @media (hover: hover) {\n background-color: #eaddc4;\n }\n }\n }\n .hover\\:bg-amber-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-50);\n }\n }\n }\n .hover\\:bg-amber-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-amber-100);\n }\n }\n }\n .hover\\:bg-black\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #000 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-50);\n }\n }\n }\n .hover\\:bg-blue-500 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-500);\n }\n }\n }\n .hover\\:bg-blue-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-blue-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-blue-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-600);\n }\n }\n }\n .hover\\:bg-blue-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-700);\n }\n }\n }\n .hover\\:bg-blue-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-blue-800);\n }\n }\n }\n .hover\\:bg-indigo-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-50);\n }\n }\n }\n .hover\\:bg-indigo-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-100);\n }\n }\n }\n .hover\\:bg-indigo-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-200);\n }\n }\n }\n .hover\\:bg-indigo-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(58.5% 0.233 277.117) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-indigo-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-indigo-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:bg-red-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-50);\n }\n }\n }\n .hover\\:bg-red-500\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-red-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-700);\n }\n }\n }\n .hover\\:bg-red-900\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-red-900) 20%, transparent);\n }\n }\n }\n }\n .hover\\:bg-slate-50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-50);\n }\n }\n }\n .hover\\:bg-slate-100 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-100);\n }\n }\n }\n .hover\\:bg-slate-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-200);\n }\n }\n }\n .hover\\:bg-slate-300 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-300);\n }\n }\n }\n .hover\\:bg-slate-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-800);\n }\n }\n }\n .hover\\:bg-slate-900 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-slate-900);\n }\n }\n }\n .hover\\:bg-theme-border {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-border);\n }\n }\n }\n .hover\\:bg-theme-panel {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-panel);\n }\n }\n }\n .hover\\:bg-theme-panel\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-theme-panel);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-theme-panel) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-white {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-white);\n }\n }\n }\n .hover\\:bg-white\\/20 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, #fff 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-white) 20%, transparent);\n }\n }\n }\n }\n .hover\\:text-\\[\\#332616\\] {\n &:hover {\n @media (hover: hover) {\n color: #332616;\n }\n }\n }\n .hover\\:text-blue-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-400);\n }\n }\n }\n .hover\\:text-blue-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-500);\n }\n }\n }\n .hover\\:text-blue-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-600);\n }\n }\n }\n .hover\\:text-blue-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-blue-800);\n }\n }\n }\n .hover\\:text-indigo-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:text-indigo-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-700);\n }\n }\n }\n .hover\\:text-indigo-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-indigo-800);\n }\n }\n }\n .hover\\:text-red-400 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-400);\n }\n }\n }\n .hover\\:text-red-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-500);\n }\n }\n }\n .hover\\:text-red-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-red-700 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-red-700);\n }\n }\n }\n .hover\\:text-slate-500 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-500);\n }\n }\n }\n .hover\\:text-slate-600 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-600);\n }\n }\n }\n .hover\\:text-slate-800 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-800);\n }\n }\n }\n .hover\\:text-slate-900 {\n &:hover {\n @media (hover: hover) {\n color: var(--color-slate-900);\n }\n }\n }\n .hover\\:text-theme-text {\n &:hover {\n @media (hover: hover) {\n color: var(--color-theme-text);\n }\n }\n }\n .hover\\:text-white {\n &:hover {\n @media (hover: hover) {\n color: var(--color-white);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:decoration-indigo-600 {\n &:hover {\n @media (hover: hover) {\n text-decoration-color: var(--color-indigo-600);\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .hover\\:shadow-2xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-blue-200 {\n &:hover {\n @media (hover: hover) {\n --tw-shadow-color: oklch(88.2% 0.059 254.128);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-shadow-color: color-mix(in oklab, var(--color-blue-200) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n }\n .focus\\:border-b {\n &:focus {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n .focus\\:border-blue-500 {\n &:focus {\n border-color: var(--color-blue-500);\n }\n }\n .focus\\:border-indigo-400 {\n &:focus {\n border-color: var(--color-indigo-400);\n }\n }\n .focus\\:border-indigo-500 {\n &:focus {\n border-color: var(--color-indigo-500);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-4 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-blue-300 {\n &:focus {\n --tw-ring-color: var(--color-blue-300);\n }\n }\n .focus\\:ring-blue-500 {\n &:focus {\n --tw-ring-color: var(--color-blue-500);\n }\n }\n .focus\\:ring-indigo-500 {\n &:focus {\n --tw-ring-color: var(--color-indigo-500);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .active\\:cursor-grabbing {\n &:active {\n cursor: grabbing;\n }\n }\n .disabled\\:opacity-30 {\n &:disabled {\n opacity: 30%;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:w-auto {\n @media (width >= 40rem) {\n width: auto;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:w-1\\/3 {\n @media (width >= 48rem) {\n width: calc(1 / 3 * 100%);\n }\n }\n .md\\:w-64 {\n @media (width >= 48rem) {\n width: calc(var(--spacing) * 64);\n }\n }\n .md\\:w-auto {\n @media (width >= 48rem) {\n width: auto;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-4 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n .md\\:flex-row {\n @media (width >= 48rem) {\n flex-direction: row;\n }\n }\n .md\\:items-center {\n @media (width >= 48rem) {\n align-items: center;\n }\n }\n .md\\:p-12 {\n @media (width >= 48rem) {\n padding: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-7xl {\n @media (width >= 48rem) {\n font-size: var(--text-7xl);\n line-height: var(--tw-leading, var(--text-7xl--line-height));\n }\n }\n .lg\\:col-span-2 {\n @media (width >= 64rem) {\n grid-column: span 2 / span 2;\n }\n }\n .lg\\:flex {\n @media (width >= 64rem) {\n display: flex;\n }\n }\n .lg\\:w-1\\/2 {\n @media (width >= 64rem) {\n width: calc(1 / 2 * 100%);\n }\n }\n .lg\\:w-96 {\n @media (width >= 64rem) {\n width: calc(var(--spacing) * 96);\n }\n }\n .lg\\:grid-cols-3 {\n @media (width >= 64rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n}\n:root,\r\n.theme-light {\n --theme-bg: #eef2ff;\n --theme-panel: #ffffff;\n --theme-text: #0f172a;\n --theme-muted: #64748b;\n --theme-border: #e2e8f0;\n --theme-editor-bg: #ffffff;\n --theme-editor-text: #0f172a;\n}\n.theme-dark {\n --theme-bg: #0f172a;\n --theme-panel: #1e293b;\n --theme-text: #f8fafc;\n --theme-muted: #94a3b8;\n --theme-border: #334155;\n --theme-editor-bg: #1e293b;\n --theme-editor-text: #e2e8f0;\n}\n.theme-sepia {\n --theme-bg: #eaddc4;\n --theme-panel: #fbf8f1;\n --theme-text: #332616;\n --theme-muted: #735e44;\n --theme-border: #dfcdae;\n --theme-editor-bg: #fbf8f1;\n --theme-editor-text: #332616;\n}\n.editor-content:empty:before {\n content: attr(placeholder);\n color: #9ca3af;\n pointer-events: none;\n}\n::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n}\n::-webkit-scrollbar-track {\n background: transparent;\n}\n::-webkit-scrollbar-thumb {\n background: #cbd5e1;\n border-radius: 3px;\n}\n::-webkit-scrollbar-thumb:hover {\n background: #94a3b8;\n}\n@media print {\n @page {\n margin: 2cm;\n size: auto;\n }\n html,\r\n body {\n height: auto !important;\n overflow: visible !important;\n margin: 0 !important;\n padding: 0 !important;\n background: white !important;\n color: black !important;\n }\n #__next {\n height: auto !important;\n overflow: visible !important;\n display: block !important;\n position: relative !important;\n }\n .no-print {\n display: none !important;\n }\n .print-only {\n display: block !important;\n }\n .break-before-page {\n page-break-before: always;\n break-before: page;\n }\n .break-after-page {\n page-break-after: always;\n break-after: page;\n }\n p {\n text-align: justify;\n widows: 3;\n orphans: 3;\n color: black !important;\n }\n h1,\r\n h2,\r\n h3,\r\n h4 {\n color: black !important;\n page-break-after: avoid;\n }\n a {\n text-decoration: none;\n color: black !important;\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: \"\";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: \"\";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: \"\";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: \"\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}"],"names":[],"mappings":"AACA;EAwnGE;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxnGJ;EAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAFF;EA+IE;;;;;;;EAAA;;;;;;;EAMA;;;;;;;;;;EASA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;;;EAKA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;;;;;;;EAAA;;;;;;;;;;;EAUA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;IACE;;;;IAEE;MAAgD;;;;;;EAKpD;;;;EAGA;;;;EAGA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAAA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAAA;;;;EAGA;;;;EAAA;;;;EAGA;;;;;AA9RF;;AAAA;EAmSE;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAGzB;IAAyB;;;;;EAI3B;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;;;EAMA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAMA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;;EAMA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAIE;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;EAOA;;;;;;;;EASA;;;;EAKA;;;;EAIF;;;;;;EAKA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAGA;;;;EAGA;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;EAEE;IAAgD;;;;;EAIlD;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;;EAKA;;;;;;EAKA;;;;;;EAKA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAEE;IAAgD;;;;;EAG5B;;;;EAEtB;;;;;EAIA;;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;;EAIA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;;;;EAGA;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"}}] } \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/src/app/globals.css b/src/app/globals.css index 1a0f42d..e0914ed 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,10 +1,49 @@ @import "tailwindcss"; -/* Custom Theme */ @theme { --font-sans: 'Inter', sans-serif; --font-serif: 'Merriweather', serif; --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 */ @@ -19,13 +58,16 @@ width: 6px; height: 6px; } + ::-webkit-scrollbar-track { background: transparent; } + ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } + ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } @@ -37,7 +79,8 @@ size: auto; } - html, body { + html, + body { height: auto !important; overflow: visible !important; margin: 0 !important; @@ -53,11 +96,23 @@ position: relative !important; } - .no-print { display: none !important; } - .print-only { display: block !important; } + .no-print { + display: none !important; + } - .break-before-page { page-break-before: always; break-before: page; } - .break-after-page { page-break-after: always; break-after: page; } + .print-only { + display: block !important; + } + + .break-before-page { + page-break-before: always; + break-before: page; + } + + .break-after-page { + page-break-after: always; + break-after: page; + } p { text-align: justify; @@ -66,10 +121,16 @@ color: black !important; } - h1, h2, h3, h4 { + h1, + h2, + h3, + h4 { color: black !important; page-break-after: avoid; } - a { text-decoration: none; color: black !important; } -} + a { + text-decoration: none; + color: black !important; + } +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 98a440a..a78dd02 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -26,7 +26,7 @@ export default function RootLayout({ }) { return ( - + {children} diff --git a/src/components/AIPanel.tsx b/src/components/AIPanel.tsx index 5e68d88..f00cd96 100644 --- a/src/components/AIPanel.tsx +++ b/src/components/AIPanel.tsx @@ -32,17 +32,17 @@ const AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertT const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false; return ( -
+
{/* Header with Usage Counter */}
- -

Assistant IA

+ +

Assistant IA

{usage && ( -
- {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit} -
+
+ {usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit} +
)}
@@ -53,33 +53,33 @@ const AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertT
)} -
+
{chatHistory.length === 0 && ( -
+

Bonjour ! Comment puis-je vous aider aujourd'hui ?

{isLimitReached && ( -
- Limite atteinte ! Améliorez votre plan. -
+
+ Limite atteinte ! Améliorez votre plan. +
)}
)} {chatHistory.map((msg) => (
-
+
{msg.role === 'model' && msg.responseType === 'reflection' && ( -
Réflexion
+
Réflexion
)}
{msg.text}
))} - + {isGenerating && (
-
+
L'IA travaille...
@@ -87,17 +87,17 @@ const AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertT
-
+
setInput(e.target.value)} 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} /> -