correction bible du mande (store update temps reel)

This commit is contained in:
2026-02-27 23:23:43 +01:00
parent 23560ac9c3
commit 5268a7dd68
40 changed files with 1303 additions and 489 deletions

Binary file not shown.

View File

@@ -532,3 +532,657 @@ FAM | META SEQ | SST SEQ | RANGE
0 | 00000476 | 00000475 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000477 | 00000473 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00000478 | 00000474 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-02-27T12:04:04.83174Z
Commit 00000484 4 keys in 7ms 923µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000482 | 00000481 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000483 | 00000479 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00000484 | 00000480 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-02-27T12:09:15.7143044Z
Commit 00000490 88 keys in 8ms 340µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000488 | 00000487 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000489 | 00000486 SST | [===============================================================================================] | 09d01bbbdb033c72-ff86d89df2e7cda0 (0 MiB, fresh)
2 | 00000490 | 00000485 SST | [========================================================================================] | 1b57cfa037b9ece9-fdac997cbf24ab54 (0 MiB, fresh)
Time 2026-02-27T12:11:09.3036264Z
Commit 00000500 22 keys in 12ms 84µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000496 | 00000493 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000497 | 00000491 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000498 | 00000492 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
3 | 00000499 | 00000494 SST | O | 2497bf47a4cbc925-2497bf47a4cbc925 (0 MiB, fresh)
4 | 00000500 | 00000495 SST | O | 1f75d89a433f9d3d-1f75d89a433f9d3d (0 MiB, fresh)
Time 2026-02-27T12:11:38.1607081Z
Commit 00000506 743 keys in 6ms 120µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000504 | 00000503 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000505 | 00000502 SST | [==================================================================================================] | 017b6b0c5cfd90fa-ff86d89df2e7cda0 (0 MiB, fresh)
2 | 00000506 | 00000501 SST | [=================================================================================================] | 038551e4bbed3e04-fdac997cbf24ab54 (0 MiB, fresh)
Time 2026-02-27T12:11:44.6251547Z
Commit 00000512 4752 keys in 8ms 322µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000510 | 00000509 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000511 | 00000507 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (6 MiB, fresh)
1 | 00000512 | 00000508 SST | [==================================================================================================] | 000d168784b3a904-fffe2cca550ad65f (0 MiB, fresh)
Time 2026-02-27T12:13:27.1145018Z
Commit 00000518 14 keys in 8ms 96µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000516 | 00000515 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000517 | 00000513 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000518 | 00000514 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:13:52.094837Z
Commit 00000524 14 keys in 6ms 551µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000522 | 00000521 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000523 | 00000519 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000524 | 00000520 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:14:25.3112749Z
Commit 00000530 14 keys in 7ms 818µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000528 | 00000527 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000529 | 00000526 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000530 | 00000525 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:15:51.2230343Z
Commit 00000536 3370 keys in 9ms 4µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000534 | 00000533 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000535 | 00000531 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (4 MiB, fresh)
1 | 00000536 | 00000532 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
Time 2026-02-27T12:16:47.031494Z
Commit 00000546 18 keys in 10ms 968µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000542 | 00000539 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000543 | 00000538 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000544 | 00000537 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
3 | 00000545 | 00000540 SST | O | 2309e133c0f9dd87-2309e133c0f9dd87 (0 MiB, fresh)
4 | 00000546 | 00000541 SST | O | 379d79e4c68527e0-379d79e4c68527e0 (0 MiB, fresh)
Time 2026-02-27T12:17:18.514308Z
Commit 00000552 14 keys in 6ms 388µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000550 | 00000549 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000551 | 00000547 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000552 | 00000548 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:18:05.7559404Z
Commit 00000558 12 keys in 8ms 577µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000556 | 00000555 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000557 | 00000553 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000558 | 00000554 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:18:26.9863226Z
Commit 00000564 12 keys in 6ms 7µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000562 | 00000561 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000563 | 00000560 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000564 | 00000559 SST | [================================================================================] | 1f75d89a433f9d3d-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:18:50.9796749Z
Commit 00000570 14 keys in 7ms 371µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000568 | 00000567 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000569 | 00000565 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000570 | 00000566 SST | [===========================================================================] | 2cf8041a3c23f4e1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:20:43.8451589Z
Commit 00000576 31 keys in 6ms 964µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000574 | 00000573 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000575 | 00000571 SST | [===========================================================================================] | 09d01bbbdb033c72-f58ec977f9bb9eb7 (0 MiB, fresh)
2 | 00000576 | 00000572 SST | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7 (0 MiB, fresh)
Time 2026-02-27T12:20:51.8744987Z
Commit 00000582 43 keys in 7ms 417µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000580 | 00000579 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000581 | 00000577 SST | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d (0 MiB, fresh)
2 | 00000582 | 00000578 SST | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d (0 MiB, fresh)
Time 2026-02-27T12:22:02.3730447Z
Commit 00000592 3535 keys in 11ms 642µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000588 | 00000585 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
3 | 00000589 | 00000586 SST | [======================================================] | 0ff3e7cc9552ccec-9c69f8971f6ee670 (0 MiB, fresh)
4 | 00000590 | 00000587 SST | [======================================================================================] | 0ff650ac10170702-ee3473a2a41b1cc0 (0 MiB, fresh)
2 | 00000591 | 00000583 SST | [==================================================================================================] | 0027752eca537b46-feba7f3a99a42bc4 (0 MiB, fresh)
1 | 00000592 | 00000584 SST | [==================================================================================================] | 0013a9e4f34335e5-fffe2cca550ad65f (1 MiB, fresh)
Time 2026-02-27T12:22:07.2702851Z
Commit 00000598 42 keys in 7ms 137µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000596 | 00000595 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000597 | 00000593 SST | [==========================================================================================] | 05f8ca7261de928f-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000598 | 00000594 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:22:18.0675303Z
Commit 00000608 1102 keys in 11ms 631µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000604 | 00000601 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000605 | 00000599 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (1 MiB, fresh)
3 | 00000606 | 00000602 SST | O | 9da5990d1637567b-9da5990d1637567b (0 MiB, fresh)
4 | 00000607 | 00000603 SST | O | 48807cab798e6e76-48807cab798e6e76 (0 MiB, fresh)
1 | 00000608 | 00000600 SST | [==================================================================================================] | 00eac999f8125084-ffffc8b261a62b07 (0 MiB, fresh)
Time 2026-02-27T12:22:25.1174212Z
Commit 00000614 20 keys in 6ms 313µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000612 | 00000611 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000613 | 00000610 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000614 | 00000609 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:22:50.3350346Z
Commit 00000620 47 keys in 6ms 962µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000618 | 00000617 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000619 | 00000615 SST | [============================================================================================] | 013372eb4f032f07-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000620 | 00000616 SST | [==========================================================] | 5763b81b2f19688b-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:24:25.8086972Z
Commit 00000626 4 keys in 16ms 475µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000624 | 00000623 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000625 | 00000621 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000626 | 00000622 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:24:28.1834282Z
Commit 00000632 4 keys in 7ms 859µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000630 | 00000629 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000631 | 00000627 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000632 | 00000628 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:25:47.4123912Z
Commit 00000638 4 keys in 15ms 483µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000636 | 00000635 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000637 | 00000633 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000638 | 00000634 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:27:02.363817Z
Commit 00000644 16 keys in 6ms 916µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000642 | 00000641 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000643 | 00000640 SST | [=================================================================] | 46a49451131614a3-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000644 | 00000639 SST | [=================================================================] | 46a49451131614a3-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:27:17.5294512Z
Commit 00000650 4 keys in 15ms 734µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000648 | 00000647 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000649 | 00000645 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000650 | 00000646 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:27:37.8639376Z
Commit 00000656 482 keys in 7ms 315µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000654 | 00000653 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000655 | 00000651 SST | [=================================================================================================] | 00431eb00a999d62-fbe1ccba49ffaeda (0 MiB, fresh)
1 | 00000656 | 00000652 SST | [==================================================================================================] | 00c875afcd53ecac-fd8767054879a7cc (0 MiB, fresh)
Time 2026-02-27T12:27:57.7687767Z
Commit 00000666 165 keys in 11ms 506µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000662 | 00000659 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000663 | 00000657 SST | [===============================================================================================] | 0184c3c8382c6c93-f6074fb7b9409f3b (0 MiB, fresh)
2 | 00000664 | 00000658 SST | [===============================================================================================] | 0193e3c26e3b29ea-f6074fb7b9409f3b (0 MiB, fresh)
4 | 00000665 | 00000661 SST | [==] | 783c8fc53084e223-7f718952ff87ea01 (0 MiB, fresh)
3 | 00000666 | 00000660 SST | [==========================] | 40089b481a8cc178-85aa86e8cec1dfa6 (0 MiB, fresh)
Time 2026-02-27T12:27:59.8084722Z
Commit 00000672 16 keys in 11ms 404µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000670 | 00000669 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000671 | 00000667 SST | [==========================================================] | 5763b81b2f19688b-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000672 | 00000668 SST | [==========================================================] | 5763b81b2f19688b-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:28:24.9854826Z
Commit 00000678 39 keys in 7ms 97µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000676 | 00000675 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000677 | 00000674 SST | [============================================================================================] | 06628945200f2f5d-f3604e3d46699c39 (0 MiB, fresh)
2 | 00000678 | 00000673 SST | [============================================================================================] | 06628945200f2f5d-f3604e3d46699c39 (0 MiB, fresh)
Time 2026-02-27T12:28:29.0062856Z
Commit 00000684 4 keys in 8ms 567µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000682 | 00000681 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000683 | 00000679 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000684 | 00000680 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:29:06.8254222Z
Commit 00000690 24 keys in 7ms 20µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000688 | 00000687 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000689 | 00000685 SST | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7 (0 MiB, fresh)
2 | 00000690 | 00000686 SST | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7 (0 MiB, fresh)
Time 2026-02-27T12:29:23.9044182Z
Commit 00000696 26 keys in 6ms 308µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000694 | 00000693 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000695 | 00000692 SST | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d (0 MiB, fresh)
2 | 00000696 | 00000691 SST | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d (0 MiB, fresh)
Time 2026-02-27T12:29:29.6283204Z
Commit 00000702 22 keys in 7ms 71µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000700 | 00000699 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000701 | 00000698 SST | [==========================================================================================] | 11dbba9c647f7f2d-f9536fe94f66077d (0 MiB, fresh)
2 | 00000702 | 00000697 SST | [==========================================================================================] | 11dbba9c647f7f2d-f9536fe94f66077d (0 MiB, fresh)
Time 2026-02-27T12:29:40.9065974Z
Commit 00000708 24 keys in 5ms 829µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000706 | 00000705 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000707 | 00000703 SST | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7 (0 MiB, fresh)
2 | 00000708 | 00000704 SST | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7 (0 MiB, fresh)
Time 2026-02-27T12:30:26.1006182Z
Commit 00000718 3130 keys in 10ms 920µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000714 | 00000711 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000715 | 00000710 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
2 | 00000716 | 00000709 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (3 MiB, fresh)
4 | 00000717 | 00000713 SST | [===============================================================] | 238c0d453449a160-c7a9a722bae2b489 (0 MiB, fresh)
3 | 00000718 | 00000712 SST | [===========================] | 9d62b916472ca1f6-e50433a46e09e6eb (0 MiB, fresh)
Time 2026-02-27T12:30:41.4021806Z
Commit 00000724 20 keys in 6ms 922µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000722 | 00000721 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000723 | 00000719 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000724 | 00000720 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:30:57.2000509Z
Commit 00000730 10 keys in 7ms 350µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000728 | 00000727 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000729 | 00000725 SST | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000730 | 00000726 SST | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:31:09.7890475Z
Commit 00000736 4 keys in 8ms 559µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000734 | 00000733 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000735 | 00000731 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000736 | 00000732 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:31:32.7786978Z
Commit 00000742 4 keys in 7ms 492µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000740 | 00000739 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000741 | 00000737 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00000742 | 00000738 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-02-27T12:35:05.8317046Z
Commit 00000748 3871 keys in 9ms 815µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000746 | 00000745 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000747 | 00000744 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
2 | 00000748 | 00000743 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (5 MiB, fresh)
Time 2026-02-27T12:35:25.0995728Z
Commit 00000754 3385 keys in 8ms 577µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000752 | 00000751 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000753 | 00000750 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
2 | 00000754 | 00000749 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (5 MiB, fresh)
Time 2026-02-27T12:35:50.7772695Z
Commit 00000760 3385 keys in 8ms 887µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000758 | 00000757 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000759 | 00000756 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
2 | 00000760 | 00000755 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (5 MiB, fresh)
Time 2026-02-27T12:36:20.9818198Z
Commit 00000766 4 keys in 15ms 340µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000764 | 00000763 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000765 | 00000761 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000766 | 00000762 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:36:30.5406337Z
Commit 00000776 364 keys in 11ms 722µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000772 | 00000769 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000773 | 00000768 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (1 MiB, fresh)
1 | 00000774 | 00000767 SST | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8 (0 MiB, fresh)
3 | 00000775 | 00000770 SST | O | 439bab186438f3ed-439bab186438f3ed (0 MiB, fresh)
4 | 00000776 | 00000771 SST | O | 63250928e1d19caf-63250928e1d19caf (0 MiB, fresh)
Time 2026-02-27T12:36:38.4903374Z
Commit 00000782 4 keys in 16ms 820µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000780 | 00000779 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000781 | 00000777 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00000782 | 00000778 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-02-27T12:36:53.6096868Z
Commit 00000788 611 keys in 7ms 11µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000786 | 00000785 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000787 | 00000784 SST | [==================================================================================================] | 009342c7e4d63035-ffd3d02202c1f375 (0 MiB, fresh)
2 | 00000788 | 00000783 SST | [==================================================================================================] | 009342c7e4d63035-ffd3d02202c1f375 (0 MiB, fresh)
Time 2026-02-27T12:37:00.2669114Z
Commit 00000794 20 keys in 6ms 641µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000792 | 00000791 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000793 | 00000789 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000794 | 00000790 SST | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T12:37:19.059143Z
Commit 00000804 1896 keys in 9ms 440µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000800 | 00000797 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
3 | 00000801 | 00000799 SST | [==============================================================================================] | 0bc3c032337ddee6-fe9d4c95970cbcad (0 MiB, fresh)
2 | 00000802 | 00000795 SST | [==================================================================================================] | 0079297cb331b81a-ff66a0b34ab7d342 (0 MiB, fresh)
1 | 00000803 | 00000796 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
4 | 00000804 | 00000798 SST | [========================================================================================] | 1ade4652a63b3e8b-ff66a0b34ab7d342 (0 MiB, fresh)
Time 2026-02-27T12:37:24.8374993Z
Commit 00000810 89 keys in 6ms 773µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000808 | 00000807 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000809 | 00000805 SST | [===============================================================================================] | 09d01bbbdb033c72-fdac997cbf24ab54 (0 MiB, fresh)
2 | 00000810 | 00000806 SST | [=============================================================================================] | 0e32f06d40b4847e-fdac997cbf24ab54 (0 MiB, fresh)
Time 2026-02-27T12:37:36.2102399Z
Commit 00000820 11686 keys in 11ms 923µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000816 | 00000813 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00000817 | 00000814 SST | [==================================================================================================] | 006c6a5a7b5f563c-fff709de7c4b04f9 (0 MiB, fresh)
3 | 00000818 | 00000815 SST | [==================================================================================================] | 00097e1e2df9decc-ffc387b60a952a10 (0 MiB, fresh)
1 | 00000819 | 00000812 SST | [==================================================================================================] | 000d168784b3a904-fff88b53b5ad4b9a (1 MiB, fresh)
2 | 00000820 | 00000811 SST | [==================================================================================================] | 000d168784b3a904-fff73bb502d5418e (3 MiB, fresh)
Time 2026-02-27T12:45:04.8533059Z
Commit 00000826 4 keys in 6ms 610µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000824 | 00000823 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000825 | 00000822 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
1 | 00000826 | 00000821 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:46:30.1575628Z
Commit 00000832 4 keys in 15ms 904µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000830 | 00000829 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000831 | 00000827 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000832 | 00000828 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:47:35.0351348Z
Commit 00000838 4 keys in 6ms 287µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000836 | 00000835 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000837 | 00000833 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000838 | 00000834 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:50:08.1687551Z
Commit 00000844 4 keys in 16ms 243µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000842 | 00000841 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000843 | 00000840 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
1 | 00000844 | 00000839 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T12:55:41.3244012Z
Commit 00000850 4 keys in 15ms 970µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000848 | 00000847 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000849 | 00000845 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000850 | 00000846 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T14:44:42.2115447Z
Commit 00000856 1424 keys in 6ms 375µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000854 | 00000853 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000855 | 00000851 SST | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52 (0 MiB, fresh)
1 | 00000856 | 00000852 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
Time 2026-02-27T14:47:48.983407Z
Commit 00000862 39 keys in 6ms 881µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000860 | 00000859 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000861 | 00000857 SST | [========================================================================================] | 11dbba9c647f7f2d-f3d82c9cb3d360b9 (0 MiB, fresh)
2 | 00000862 | 00000858 SST | [===================================================================================] | 1ade4652a63b3e8b-f0fcc058ca80fdac (0 MiB, fresh)
Time 2026-02-27T14:47:53.3345477Z
Commit 00000872 420 keys in 10ms 980µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000868 | 00000865 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000869 | 00000864 SST | [==================================================================================================] | 01389cf7b16bf24f-ffd2128295feedf0 (0 MiB, fresh)
2 | 00000870 | 00000863 SST | [================================================================================================] | 06e01713f457bea1-ff61701500c2a61b (0 MiB, fresh)
3 | 00000871 | 00000866 SST | [=======================] | 2bdf2478649a4ce6-69340863efce2d7f (0 MiB, fresh)
4 | 00000872 | 00000867 SST | [==========================================================] | 2c8be0b6b9fb45b0-c2a74f8d75b44564 (0 MiB, fresh)
Time 2026-02-27T14:48:04.3110009Z
Commit 00000878 119 keys in 6ms 491µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000876 | 00000875 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000877 | 00000874 SST | [=================================================================================================] | 013510424988da8d-fd026b8c978a4331 (0 MiB, fresh)
2 | 00000878 | 00000873 SST | [==============================================================================================] | 0cbd3a02dfa51a3b-ff44163a2f4ddb88 (0 MiB, fresh)
Time 2026-02-27T14:51:35.5292153Z
Commit 00000884 385 keys in 6ms 233µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000882 | 00000881 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000883 | 00000879 SST | [=================================================================================================] | 033155d55f9205e6-fde1fb32301a48a2 (0 MiB, fresh)
2 | 00000884 | 00000880 SST | [=================================================================================================] | 033155d55f9205e6-fde1fb32301a48a2 (0 MiB, fresh)
Time 2026-02-27T14:51:41.2792744Z
Commit 00000890 4 keys in 17ms 606µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000888 | 00000887 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000889 | 00000885 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00000890 | 00000886 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T14:51:58.8511729Z
Commit 00000896 43 keys in 6ms 756µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000894 | 00000893 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000895 | 00000891 SST | [==========================================================================================] | 06628945200f2f5d-ef311d8b965c9633 (0 MiB, fresh)
2 | 00000896 | 00000892 SST | [==========================================================================================] | 06628945200f2f5d-ef311d8b965c9633 (0 MiB, fresh)
Time 2026-02-27T14:52:17.8097704Z
Commit 00000902 1412 keys in 7ms 600µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000900 | 00000899 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000901 | 00000897 SST | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52 (0 MiB, fresh)
1 | 00000902 | 00000898 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
Time 2026-02-27T14:53:09.3644583Z
Commit 00000912 153 keys in 13ms 40µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000908 | 00000905 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000909 | 00000903 SST | [==================================================================================================] | 009d9e83167ab7a4-ff61701500c2a61b (0 MiB, fresh)
2 | 00000910 | 00000904 SST | [==================================================================================================] | 009d9e83167ab7a4-ff61701500c2a61b (0 MiB, fresh)
3 | 00000911 | 00000906 SST | [========================================================] | 56a69852b8b5cdf4-e8a3ea584b461747 (0 MiB, fresh)
4 | 00000912 | 00000907 SST | [===========] | defd864fc95d66ed-ff45dbd5bef33364 (0 MiB, fresh)
Time 2026-02-27T14:53:35.4865302Z
Commit 00000918 17 keys in 6ms 380µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000916 | 00000915 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000917 | 00000914 SST | [==================================================] | 432bea7d5b140db2-c5c647feca328c20 (0 MiB, fresh)
2 | 00000918 | 00000913 SST | [==================================================] | 432bea7d5b140db2-c5c647feca328c20 (0 MiB, fresh)
Time 2026-02-27T14:53:39.7355816Z
Commit 00000924 4 keys in 15ms 994µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000922 | 00000921 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000923 | 00000919 SST | O | 1294d01d65ce2471-1294d01d65ce2471 (0 MiB, fresh)
2 | 00000924 | 00000920 SST | O | 1294d01d65ce2471-1294d01d65ce2471 (0 MiB, fresh)
Time 2026-02-27T14:53:45.1120923Z
Commit 00000930 14 keys in 6ms 351µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000928 | 00000927 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000929 | 00000926 SST | [==================================] | 51397423a6488881-ab76866d92a46f02 (0 MiB, fresh)
2 | 00000930 | 00000925 SST | [==================================] | 51397423a6488881-ab76866d92a46f02 (0 MiB, fresh)
Time 2026-02-27T14:55:30.2507379Z
Commit 00000940 1581 keys in 11ms 521µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000936 | 00000933 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000937 | 00000932 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (2 MiB, fresh)
1 | 00000938 | 00000931 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (0 MiB, fresh)
3 | 00000939 | 00000934 SST | [======================================] | 3c10db2e19b49a0b-9ed4570605c3a2c2 (0 MiB, fresh)
4 | 00000940 | 00000935 SST | [================================================] | 4b78b5c975073d79-c98867bb8679739e (0 MiB, fresh)
Time 2026-02-27T14:55:39.4389624Z
Commit 00000946 71 keys in 7ms 285µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000944 | 00000943 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000945 | 00000942 SST | [==================================================================================================] | 016409dcc3e1f6df-fd8767054879a7cc (0 MiB, fresh)
2 | 00000946 | 00000941 SST | [=============================================================================================] | 016409dcc3e1f6df-f15a28aad14562f0 (0 MiB, fresh)
Time 2026-02-27T14:55:46.2815708Z
Commit 00000952 1153 keys in 8ms 186µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00000950 | 00000949 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000951 | 00000947 SST | [==================================================================================================] | 000bd3f15bd5aba7-ff5042d908821139 (1 MiB, fresh)
1 | 00000952 | 00000948 SST | [==================================================================================================] | 000bd3f15bd5aba7-ff5042d908821139 (0 MiB, fresh)
Time 2026-02-27T14:56:12.4672542Z
Commit 00000962 2321 keys in 9ms 878µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000958 | 00000955 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000959 | 00000953 SST | [==================================================================================================] | 000d168784b3a904-fff068465974022c (4 MiB, fresh)
1 | 00000960 | 00000954 SST | [==================================================================================================] | 000d168784b3a904-fff068465974022c (0 MiB, fresh)
3 | 00000961 | 00000956 SST | [========================================================================================] | 0a978726d510bb57-ef0aac6bdcdc9e3f (0 MiB, fresh)
4 | 00000962 | 00000957 SST | [=================================================================================] | 28bf7cdd862bed3f-f9e780b4039d56ae (0 MiB, fresh)
Time 2026-02-27T14:57:20.8953078Z
Commit 00000972 22077 keys in 11ms 690µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000968 | 00000965 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00000969 | 00000966 SST | [==================================================================================================] | 0035f21f4f4812bc-ffe00fafe5be7210 (0 MiB, fresh)
3 | 00000970 | 00000967 SST | [==================================================================================================] | 001617ccf4146189-ff96ccc7354067e6 (0 MiB, fresh)
2 | 00000971 | 00000963 SST | [==================================================================================================] | 000bd3f15bd5aba7-fff73bb502d5418e (4 MiB, fresh)
1 | 00000972 | 00000964 SST | [==================================================================================================] | 000bd3f15bd5aba7-fffe3db4c47db22d (1 MiB, fresh)
Time 2026-02-27T15:02:08.1858988Z
Commit 00000982 2366 keys in 13ms 535µs 400ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000978 | 00000975 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000979 | 00000973 SST | [==================================================================================================] | 000d168784b3a904-fff068465974022c (0 MiB, fresh)
2 | 00000980 | 00000974 SST | [==================================================================================================] | 000d168784b3a904-fff068465974022c (4 MiB, fresh)
3 | 00000981 | 00000976 SST | [======================] | 179273c9b8506d93-523dae64c28e0d30 (0 MiB, fresh)
4 | 00000982 | 00000977 SST | [=====================================================================] | 02456d67aa55580e-b58d909fb5243441 (0 MiB, fresh)
Time 2026-02-27T22:12:44.5028675Z
Commit 00000988 1172 keys in 7ms 862µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000986 | 00000985 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00000987 | 00000983 SST | [=================================================================================================] | 0315bd6ef0760e1f-ff1373558b528b52 (0 MiB, fresh)
1 | 00000988 | 00000984 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
Time 2026-02-27T22:12:49.8151499Z
Commit 00000994 1280 keys in 12ms 941µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000992 | 00000991 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000993 | 00000990 SST | [==================================================================================================] | 0013a9e4f34335e5-ffd284765f657204 (0 MiB, fresh)
2 | 00000994 | 00000989 SST | [=================================================================================================] | 015aa7af8c46be57-fcc735cb29041d9f (0 MiB, fresh)
Time 2026-02-27T22:13:07.9082975Z
Commit 00001000 8 keys in 16ms 981µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00000998 | 00000997 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00000999 | 00000996 SST | [============================] | 3d8512a47aa1edaf-888e85a42c3776c9 (0 MiB, fresh)
2 | 00001000 | 00000995 SST | [============================] | 3d8512a47aa1edaf-888e85a42c3776c9 (0 MiB, fresh)
Time 2026-02-27T22:13:18.1079199Z
Commit 00001006 12 keys in 17ms 566µs 900ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001004 | 00001003 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001005 | 00001001 SST | [==================================] | 51397423a6488881-ab76866d92a46f02 (0 MiB, fresh)
2 | 00001006 | 00001002 SST | [==================================] | 51397423a6488881-ab76866d92a46f02 (0 MiB, fresh)
Time 2026-02-27T22:13:26.2751213Z
Commit 00001012 14 keys in 7ms 198µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001010 | 00001009 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001011 | 00001008 SST | [========================================================================] | 126fbbc5d8ff7a79-cf5949b82c014010 (0 MiB, fresh)
2 | 00001012 | 00001007 SST | [========================================================================] | 126fbbc5d8ff7a79-cf5949b82c014010 (0 MiB, fresh)
Time 2026-02-27T22:13:31.5204181Z
Commit 00001022 50806 keys in 14ms 662µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001018 | 00001015 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001019 | 00001016 SST | [==================================================================================================] | 00078b2aad45711c-fffdad0e4861d73a (0 MiB, fresh)
3 | 00001020 | 00001017 SST | [==================================================================================================] | 00044cca33d36b79-fff99d31c031c16d (0 MiB, fresh)
2 | 00001021 | 00001013 SST | [==================================================================================================] | 000358d0de9d25d6-fffdad0e4861d73a (10 MiB, fresh)
1 | 00001022 | 00001014 SST | [==================================================================================================] | 000358d0de9d25d6-ffffc8b261a62b07 (3 MiB, fresh)
Time 2026-02-27T22:13:40.849769Z
Commit 00001032 13092 keys in 10ms 989µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001028 | 00001025 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001029 | 00001027 SST | [==================================================================================================] | 00148b4d5e2dffac-ff97ccfade15fe08 (0 MiB, fresh)
2 | 00001030 | 00001023 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (3 MiB, fresh)
3 | 00001031 | 00001026 SST | [==================================================================================================] | 00496281e5fcb56e-ffb87a88b13c428f (0 MiB, fresh)
1 | 00001032 | 00001024 SST | [==================================================================================================] | 000d168784b3a904-fffe2cca550ad65f (1 MiB, fresh)
Time 2026-02-27T22:14:07.6307994Z
Commit 00001038 4 keys in 7ms 703µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001036 | 00001035 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001037 | 00001033 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00001038 | 00001034 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-02-27T22:15:52.6976739Z
Commit 00001048 339 keys in 10ms 103µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001044 | 00001041 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001045 | 00001040 SST | [=================================================================================================] | 03dcd96dc93a306c-fecc2220305b5a71 (0 MiB, fresh)
2 | 00001046 | 00001039 SST | [=================================================================================================] | 03dcd96dc93a306c-fecc2220305b5a71 (0 MiB, fresh)
3 | 00001047 | 00001042 SST | [======================================================================================] | 0c349a7f26c760da-eb2f27ea027d9236 (0 MiB, fresh)
4 | 00001048 | 00001043 SST | [=================================================================] | 0a619c91e90380e8-b43e5635fd5dd62e (0 MiB, fresh)
Time 2026-02-27T22:16:20.5396837Z
Commit 00001058 6135 keys in 9ms 925µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001054 | 00001051 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00001055 | 00001053 SST | [==================================================================================================] | 0039ff5f24cca69a-ff3d8bc9782cb3df (0 MiB, fresh)
2 | 00001056 | 00001050 SST | [==================================================================================================] | 001159b6a37810de-fff49d0b9a706a34 (2 MiB, fresh)
3 | 00001057 | 00001052 SST | [==================================================================================================] | 000b5ce4c257b199-ffd35273cf3f35b8 (0 MiB, fresh)
1 | 00001058 | 00001049 SST | [==================================================================================================] | 001159b6a37810de-fff49d0b9a706a34 (0 MiB, fresh)
2 | 00001061 | Compaction:
2 | 00001061 | MERGE (27612 keys):
2 | 00001061 | 00000616 INPUT | [==========================================================] | 5763b81b2f19688b-ef311d8b965c9633
2 | 00001061 | 00000622 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000628 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000634 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000639 INPUT | [=================================================================] | 46a49451131614a3-ef311d8b965c9633
2 | 00001061 | 00000646 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000651 INPUT | [=================================================================================================] | 00431eb00a999d62-fbe1ccba49ffaeda
2 | 00001061 | 00000658 INPUT | [===============================================================================================] | 0193e3c26e3b29ea-f6074fb7b9409f3b
2 | 00001061 | 00000668 INPUT | [==========================================================] | 5763b81b2f19688b-ef311d8b965c9633
2 | 00001061 | 00000673 INPUT | [============================================================================================] | 06628945200f2f5d-f3604e3d46699c39
2 | 00001061 | 00000680 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000686 INPUT | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7
2 | 00001061 | 00000691 INPUT | [===============================================================================================] | 03f950ee46c47561-f9536fe94f66077d
2 | 00001061 | 00000697 INPUT | [==========================================================================================] | 11dbba9c647f7f2d-f9536fe94f66077d
2 | 00001061 | 00000704 INPUT | [========================================================================================] | 11dbba9c647f7f2d-f58ec977f9bb9eb7
2 | 00001061 | 00000709 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00000720 INPUT | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633
2 | 00001061 | 00000726 INPUT | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633
2 | 00001061 | 00000732 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000738 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001061 | 00000743 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00000749 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00000755 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00000762 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000768 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00001061 | 00000778 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001061 | 00000783 INPUT | [==================================================================================================] | 009342c7e4d63035-ffd3d02202c1f375
2 | 00001061 | 00000790 INPUT | [==================================================================================] | 1a484549d42c4b3f-ef311d8b965c9633
2 | 00001061 | 00000795 INPUT | [==================================================================================================] | 0079297cb331b81a-ff66a0b34ab7d342
2 | 00001061 | 00000806 INPUT | [=============================================================================================] | 0e32f06d40b4847e-fdac997cbf24ab54
2 | 00001061 | 00000811 INPUT | [==================================================================================================] | 000d168784b3a904-fff73bb502d5418e
2 | 00001061 | 00000822 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000828 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000834 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000840 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000846 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000851 INPUT | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52
2 | 00001061 | 00000858 INPUT | [===================================================================================] | 1ade4652a63b3e8b-f0fcc058ca80fdac
2 | 00001061 | 00000863 INPUT | [================================================================================================] | 06e01713f457bea1-ff61701500c2a61b
2 | 00001061 | 00000873 INPUT | [==============================================================================================] | 0cbd3a02dfa51a3b-ff44163a2f4ddb88
2 | 00001061 | 00000880 INPUT | [=================================================================================================] | 033155d55f9205e6-fde1fb32301a48a2
2 | 00001061 | 00000886 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00001061 | 00000892 INPUT | [==========================================================================================] | 06628945200f2f5d-ef311d8b965c9633
2 | 00001061 | 00000897 INPUT | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52
2 | 00001061 | 00000904 INPUT | [==================================================================================================] | 009d9e83167ab7a4-ff61701500c2a61b
2 | 00001061 | 00000913 INPUT | [==================================================] | 432bea7d5b140db2-c5c647feca328c20
2 | 00001061 | 00000920 INPUT | O | 1294d01d65ce2471-1294d01d65ce2471
2 | 00001061 | 00000925 INPUT | [==================================] | 51397423a6488881-ab76866d92a46f02
2 | 00001061 | 00000932 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00000941 INPUT | [=============================================================================================] | 016409dcc3e1f6df-f15a28aad14562f0
2 | 00001061 | 00000947 INPUT | [==================================================================================================] | 000bd3f15bd5aba7-ff5042d908821139
2 | 00001061 | 00000953 INPUT | [==================================================================================================] | 000d168784b3a904-fff068465974022c
2 | 00001061 | 00000963 INPUT | [==================================================================================================] | 000bd3f15bd5aba7-fff73bb502d5418e
2 | 00001061 | 00000974 INPUT | [==================================================================================================] | 000d168784b3a904-fff068465974022c
2 | 00001061 | 00000983 INPUT | [=================================================================================================] | 0315bd6ef0760e1f-ff1373558b528b52
2 | 00001061 | 00000989 INPUT | [=================================================================================================] | 015aa7af8c46be57-fcc735cb29041d9f
2 | 00001061 | 00000995 INPUT | [============================] | 3d8512a47aa1edaf-888e85a42c3776c9
2 | 00001061 | 00001002 INPUT | [==================================] | 51397423a6488881-ab76866d92a46f02
2 | 00001061 | 00001007 INPUT | [========================================================================] | 126fbbc5d8ff7a79-cf5949b82c014010
2 | 00001061 | 00001013 INPUT | [==================================================================================================] | 000358d0de9d25d6-fffdad0e4861d73a
2 | 00001061 | 00001023 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00001061 | 00001034 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00001061 | 00001039 INPUT | [=================================================================================================] | 03dcd96dc93a306c-fecc2220305b5a71
2 | 00001061 | 00001050 INPUT | [==================================================================================================] | 001159b6a37810de-fff49d0b9a706a34
2 | 00001061 | 00001060 OUTPUT | [==================================================================================================] | 00078b2aad45711c-fffdad0e4861d73a (cold)
2 | 00001061 | 00001059 OUTPUT | [==================================================================================================] | 000358d0de9d25d6-fff73bb502d5418e (warm)
Time 2026-02-27T22:16:20.6464564Z
Commit 00001062 27612 keys in 32ms 658µs 200ns
FAM | META SEQ | SST SEQ | RANGE
2 | 00001061 | 00001060 SST | [==================================================================================================] | 00078b2aad45711c-fffdad0e4861d73a (7 MiB, cold)
2 | 00001061 | 00001059 SST | [==================================================================================================] | 000358d0de9d25d6-fff73bb502d5418e (13 MiB, warm)
2 | 00001061 | 00000616 00000622 00000628 00000634 00000639 00000646 00000651 00000658 00000668 00000673 00000680 00000686 00000691 00000697 00000704 OBSOLETE SST
2 | 00001061 | 00000709 00000720 00000726 00000732 00000738 00000743 00000749 00000755 00000762 00000768 00000778 00000783 00000790 00000795 00000806 OBSOLETE SST
2 | 00001061 | 00000811 00000822 00000828 00000834 00000840 00000846 00000851 00000858 00000863 00000873 00000880 00000886 00000892 00000897 00000904 OBSOLETE SST
2 | 00001061 | 00000913 00000920 00000925 00000932 00000941 00000947 00000953 00000963 00000974 00000983 00000989 00000995 00001002 00001007 00001013 OBSOLETE SST
2 | 00001061 | 00001023 00001034 00001039 00001050 OBSOLETE SST
| | 00000616 00000622 00000628 00000634 00000639 00000646 00000651 00000658 00000668 00000673 00000680 00000686 00000691 00000697 00000704 SST DELETED
| | 00000709 00000720 00000726 00000732 00000738 00000743 00000749 00000755 00000762 00000768 00000778 00000783 00000790 00000795 00000806 SST DELETED
| | 00000811 00000822 00000828 00000834 00000840 00000846 00000851 00000858 00000863 00000873 00000880 00000886 00000892 00000897 00000904 SST DELETED
| | 00000913 00000920 00000925 00000932 00000941 00000947 00000953 00000963 00000974 00000983 00000989 00000995 00001002 00001007 00001013 SST DELETED
| | 00001023 00001034 00001039 00001050 SST DELETED
| | 00000620 00000626 00000632 00000638 00000644 00000650 00000655 00000664 00000672 00000678 00000684 00000690 00000696 00000702 00000708 META DELETED
| | 00000716 00000724 00000730 00000736 00000742 00000748 00000754 00000760 00000766 00000773 00000782 00000788 00000794 00000802 00000810 META DELETED
| | 00000820 00000825 00000832 00000838 00000843 00000850 00000855 00000862 00000870 00000878 00000884 00000890 00000896 00000901 00000910 META DELETED
| | 00000918 00000924 00000930 00000937 00000946 00000951 00000959 00000971 00000980 00000987 00000994 00001000 00001006 00001012 00001021 META DELETED
| | 00001030 00001038 00001046 00001056 META DELETED
Time 2026-02-27T22:17:15.8629472Z
Commit 00001068 4 keys in 15ms 150µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001066 | 00001065 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001067 | 00001063 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001068 | 00001064 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T22:21:11.2655543Z
Commit 00001074 4 keys in 17ms 6µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001072 | 00001071 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00001073 | 00001070 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
1 | 00001074 | 00001069 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T22:22:30.1436003Z
Commit 00001080 4 keys in 6ms 719µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00001078 | 00001077 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001079 | 00001075 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001080 | 00001076 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-02-27T22:23:41.397719Z
Commit 00001086 4 keys in 6ms 702µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00001084 | 00001083 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00001085 | 00001081 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00001086 | 00001082 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)

View File

@@ -4,8 +4,8 @@
"dynamicRoutes": {},
"notFoundRoutes": [],
"preview": {
"previewModeId": "7a45a941e4d22df88ad9355f3991ab6d",
"previewModeSigningKey": "2835bcf805d69d3ea501de6e9e8215ed6e476c92e3ce1b39d4c7154490c5d9cd",
"previewModeEncryptionKey": "be1f0a8fe5a7df32e766951bb0286021153e859bf5affb5871269998a3fcdadd"
"previewModeId": "a5ff04373568f8dfa89f5541b80f2935",
"previewModeSigningKey": "2b0018d3eaa31eeed67538d28afe4bfa7f66d57b8a2348421bb8a3837addb402",
"previewModeEncryptionKey": "553a3f71589831fc06cdc67a076ecfc594777a8dbcadba910eef5fe42f0bcadb"
}
}

View File

@@ -1,11 +1,12 @@
{
"/api/ai/generate/route": "app/api/ai/generate/route.js",
"/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js",
"/api/entities/route": "app/api/entities/route.js",
"/api/projects/[id]/route": "app/api/projects/[id]/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",
"/project/[id]/page": "app/project/[id]/page.js"
"/project/[id]/page": "app/project/[id]/page.js",
"/project/[id]/world/page": "app/project/[id]/world/page.js"
}

View File

@@ -206,8 +206,11 @@ async function GET() {
const user = await prisma.user.findUnique({
where: {
id: session.user.id
},
include: {
subscriptionPlan: true
}
});
}); // Bypass Prisma type cache
if (!user) {
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
error: 'Utilisateur non trouvé'
@@ -230,13 +233,24 @@ async function GET() {
const text = (chapter.content || '').replace(/<[^>]*>/g, ' ').trim();
return total + (text ? text.split(/\s+/).length : 0);
}, 0);
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
const response = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
id: user.id,
email: user.email,
name: user.name,
avatar: user.avatar,
bio: user.bio,
plan: user.plan,
plan: user.planId || user.plan || 'free',
planDetails: user.subscriptionPlan ? {
id: user.subscriptionPlan.id,
name: user.subscriptionPlan.name,
displayName: user.subscriptionPlan.displayName,
price: user.subscriptionPlan.price,
description: user.subscriptionPlan.description,
features: user.subscriptionPlan.features,
maxProjects: user.subscriptionPlan.maxProjects,
maxAiActions: user.subscriptionPlan.maxAiActions,
isPopular: user.subscriptionPlan.isPopular
} : undefined,
aiActionsUsed: user.aiActionsUsed,
dailyWordGoal: user.dailyWordGoal,
writingStreak: user.writingStreak,
@@ -244,6 +258,8 @@ async function GET() {
createdAt: user.createdAt,
totalWords
});
response.headers.set('Cache-Control', 'no-store, max-age=0');
return response;
}
async function PUT(request) {
const session = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$auth$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["auth"])();

File diff suppressed because one or more lines are too long

View File

@@ -453,11 +453,6 @@ const dynamic = 'force-dynamic';
;
;
;
const PLAN_AI_LIMITS = {
free: 100,
pro: 5000,
master: 999999
};
async function POST(request) {
try {
const session = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$auth$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["auth"])();
@@ -474,11 +469,10 @@ async function POST(request) {
where: {
id: session.user.id
},
select: {
plan: true,
aiActionsUsed: true
include: {
subscriptionPlan: true
}
});
}); // Bypass Prisma client types for this relation
if (!dbUser) {
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
error: 'Utilisateur non trouvé'
@@ -486,10 +480,11 @@ async function POST(request) {
status: 404
});
}
const limit = PLAN_AI_LIMITS[dbUser.plan] || PLAN_AI_LIMITS.free;
if (dbUser.aiActionsUsed >= limit) {
const limit = dbUser.subscriptionPlan?.maxAiActions ?? 100;
const planName = dbUser.subscriptionPlan?.displayName || 'Gratuit';
if (limit !== -1 && dbUser.aiActionsUsed >= limit) {
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
error: `Limite de ${limit} actions IA atteinte pour le plan ${dbUser.plan}. Passez au plan supérieur !`
error: `Limite de ${limit} actions IA atteinte pour le plan ${planName}. Passez au plan supérieur !`
}, {
status: 403
});

File diff suppressed because one or more lines are too long

View File

@@ -220,12 +220,6 @@ async function GET() {
});
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json(projects);
}
// Plan limits for project creation
const PLAN_PROJECT_LIMITS = {
free: 3,
pro: 20,
master: 999
};
async function POST(request) {
const session = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$auth$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["auth"])();
if (!session?.user?.id) {
@@ -235,26 +229,26 @@ async function POST(request) {
status: 401
});
}
// Check plan limits
const prisma = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["default"])();
// Check plan limit
const user = await prisma.user.findUnique({
where: {
id: session.user.id
},
select: {
plan: true
include: {
subscriptionPlan: true
}
});
const plan = user?.plan || 'free';
const limit = PLAN_PROJECT_LIMITS[plan] || PLAN_PROJECT_LIMITS.free;
}); // Cast to any to bypass Prisma type cache issues
const limit = user?.subscriptionPlan?.maxProjects ?? 3;
const planName = user?.subscriptionPlan?.displayName || 'Gratuit';
const currentCount = await prisma.project.count({
where: {
userId: session.user.id
}
});
if (currentCount >= limit) {
if (limit !== -1 && currentCount >= limit) {
return __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$server$2e$js__$5b$app$2d$route$5d$__$28$ecmascript$29$__["NextResponse"].json({
error: `Limite de ${limit} projets atteinte pour le plan ${plan}. Passez au plan supérieur !`
error: `Limite de ${limit} projets atteinte pour le plan ${planName}. Passez au plan supérieur !`
}, {
status: 403
});

View File

@@ -4,5 +4,5 @@
"sections": [
{"offset": {"line": 58, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/auth.ts"],"sourcesContent":["import NextAuth from 'next-auth';\r\nimport Credentials from 'next-auth/providers/credentials';\r\nimport bcrypt from 'bcryptjs';\r\n\r\nexport const { handlers, signIn, signOut, auth } = NextAuth({\r\n providers: [\r\n Credentials({\r\n name: 'credentials',\r\n credentials: {\r\n email: { label: 'Email', type: 'email' },\r\n password: { label: 'Password', type: 'password' },\r\n },\r\n async authorize(credentials) {\r\n if (!credentials?.email || !credentials?.password) return null;\r\n\r\n // Lazy import to avoid PrismaClient initialization during build\r\n const { default: getDB } = await import('./prisma');\r\n const prisma = getDB();\r\n\r\n const user = await prisma.user.findUnique({\r\n where: { email: credentials.email as string },\r\n });\r\n\r\n if (!user) return null;\r\n\r\n const isValid = await bcrypt.compare(\r\n credentials.password as string,\r\n user.hashedPassword\r\n );\r\n\r\n if (!isValid) return null;\r\n\r\n return {\r\n id: user.id,\r\n email: user.email,\r\n name: user.name,\r\n };\r\n },\r\n }),\r\n ],\r\n session: {\r\n strategy: 'jwt',\r\n },\r\n callbacks: {\r\n async jwt({ token, user }) {\r\n if (user) {\r\n token.id = user.id;\r\n }\r\n return token;\r\n },\r\n async session({ session, token }) {\r\n if (session.user && token.id) {\r\n session.user.id = token.id as string;\r\n }\r\n return session;\r\n },\r\n },\r\n pages: {\r\n signIn: '/',\r\n },\r\n});\r\n"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AAAA;AACA;;;;AAEO,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAA,8MAAQ,EAAC;IACxD,WAAW;QACP,IAAA,mNAAW,EAAC;YACR,MAAM;YACN,aAAa;gBACT,OAAO;oBAAE,OAAO;oBAAS,MAAM;gBAAQ;gBACvC,UAAU;oBAAE,OAAO;oBAAY,MAAM;gBAAW;YACpD;YACA,MAAM,WAAU,WAAW;gBACvB,IAAI,CAAC,aAAa,SAAS,CAAC,aAAa,UAAU,OAAO;gBAE1D,gEAAgE;gBAChE,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG;gBAC3B,MAAM,SAAS;gBAEf,MAAM,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;oBACtC,OAAO;wBAAE,OAAO,YAAY,KAAK;oBAAW;gBAChD;gBAEA,IAAI,CAAC,MAAM,OAAO;gBAElB,MAAM,UAAU,MAAM,0LAAM,CAAC,OAAO,CAChC,YAAY,QAAQ,EACpB,KAAK,cAAc;gBAGvB,IAAI,CAAC,SAAS,OAAO;gBAErB,OAAO;oBACH,IAAI,KAAK,EAAE;oBACX,OAAO,KAAK,KAAK;oBACjB,MAAM,KAAK,IAAI;gBACnB;YACJ;QACJ;KACH;IACD,SAAS;QACL,UAAU;IACd;IACA,WAAW;QACP,MAAM,KAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YACrB,IAAI,MAAM;gBACN,MAAM,EAAE,GAAG,KAAK,EAAE;YACtB;YACA,OAAO;QACX;QACA,MAAM,SAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5B,IAAI,QAAQ,IAAI,IAAI,MAAM,EAAE,EAAE;gBAC1B,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;YAC9B;YACA,OAAO;QACX;IACJ;IACA,OAAO;QACH,QAAQ;IACZ;AACJ"}},
{"offset": {"line": 137, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/lib/prisma.ts"],"sourcesContent":["import { PrismaClient } from '@prisma/client';\r\nimport { PrismaPg } from '@prisma/adapter-pg';\r\nimport { Pool } from 'pg';\r\n\r\nconst globalForPrisma = globalThis as unknown as {\r\n prisma: PrismaClient | undefined;\r\n};\r\n\r\n/**\r\n * Returns a singleton PrismaClient instance using the Prisma v7 adapter pattern.\r\n * Uses @prisma/adapter-pg with a pg Pool for direct PostgreSQL connections.\r\n */\r\nexport function getDB(): PrismaClient {\r\n if (!globalForPrisma.prisma) {\r\n const connectionString = process.env.DATABASE_URL;\r\n const pool = new Pool({ connectionString });\r\n const adapter = new PrismaPg(pool);\r\n\r\n globalForPrisma.prisma = new PrismaClient({ adapter });\r\n }\r\n return globalForPrisma.prisma;\r\n}\r\n\r\nexport default getDB;\r\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;;;;;;;;;AAEA,MAAM,kBAAkB;AAQjB,SAAS;IACZ,IAAI,CAAC,gBAAgB,MAAM,EAAE;QACzB,MAAM,mBAAmB,QAAQ,GAAG,CAAC,YAAY;QACjD,MAAM,OAAO,IAAI,iMAAI,CAAC;YAAE;QAAiB;QACzC,MAAM,UAAU,IAAI,qNAAQ,CAAC;QAE7B,gBAAgB,MAAM,GAAG,IAAI,kPAAY,CAAC;YAAE;QAAQ;IACxD;IACA,OAAO,gBAAgB,MAAM;AACjC;uCAEe"}},
{"offset": {"line": 176, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/api/projects/route.ts"],"sourcesContent":["export const dynamic = 'force-dynamic';\r\n\r\nimport { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from '@/lib/auth';\r\nimport getDB from '@/lib/prisma';\r\n\r\n// GET /api/projects — List all user's projects\r\nexport async function GET() {\r\n const session = await auth();\r\n if (!session?.user?.id) {\r\n return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });\r\n }\r\n\r\n const projects = await getDB().project.findMany({\r\n where: { userId: session.user.id },\r\n orderBy: { updatedAt: 'desc' },\r\n include: {\r\n _count: { select: { chapters: true, entities: true } },\r\n },\r\n });\r\n\r\n return NextResponse.json(projects);\r\n}\r\n\r\n// Plan limits for project creation\r\nconst PLAN_PROJECT_LIMITS: Record<string, number> = {\r\n free: 3,\r\n pro: 20,\r\n master: 999,\r\n};\r\n\r\n// POST /api/projects — Create a new project\r\nexport async function POST(request: NextRequest) {\r\n const session = await auth();\r\n if (!session?.user?.id) {\r\n return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });\r\n }\r\n\r\n const prisma = getDB();\r\n\r\n // Check plan limit\r\n const user = await prisma.user.findUnique({ where: { id: session.user.id }, select: { plan: true } });\r\n const plan = user?.plan || 'free';\r\n const limit = PLAN_PROJECT_LIMITS[plan] || PLAN_PROJECT_LIMITS.free;\r\n const currentCount = await prisma.project.count({ where: { userId: session.user.id } });\r\n\r\n if (currentCount >= limit) {\r\n return NextResponse.json(\r\n { error: `Limite de ${limit} projets atteinte pour le plan ${plan}. Passez au plan supérieur !` },\r\n { status: 403 }\r\n );\r\n }\r\n\r\n const body = await request.json();\r\n\r\n const project = await prisma.project.create({\r\n data: {\r\n title: body.title || 'Nouveau Roman',\r\n author: body.author || session.user.name || 'Auteur',\r\n settings: body.settings || null,\r\n userId: session.user.id,\r\n },\r\n });\r\n\r\n return NextResponse.json(project, { status: 201 });\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAEA;AACA;AACA;;;;;AAJO,MAAM,UAAU;;;;AAOhB,eAAe;IAClB,MAAM,UAAU,MAAM,IAAA,wKAAI;IAC1B,IAAI,CAAC,SAAS,MAAM,IAAI;QACpB,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAe,GAAG;YAAE,QAAQ;QAAI;IACtE;IAEA,MAAM,WAAW,MAAM,IAAA,6KAAK,IAAG,OAAO,CAAC,QAAQ,CAAC;QAC5C,OAAO;YAAE,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAAC;QACjC,SAAS;YAAE,WAAW;QAAO;QAC7B,SAAS;YACL,QAAQ;gBAAE,QAAQ;oBAAE,UAAU;oBAAM,UAAU;gBAAK;YAAE;QACzD;IACJ;IAEA,OAAO,4LAAY,CAAC,IAAI,CAAC;AAC7B;AAEA,mCAAmC;AACnC,MAAM,sBAA8C;IAChD,MAAM;IACN,KAAK;IACL,QAAQ;AACZ;AAGO,eAAe,KAAK,OAAoB;IAC3C,MAAM,UAAU,MAAM,IAAA,wKAAI;IAC1B,IAAI,CAAC,SAAS,MAAM,IAAI;QACpB,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAe,GAAG;YAAE,QAAQ;QAAI;IACtE;IAEA,MAAM,SAAS,IAAA,6KAAK;IAEpB,mBAAmB;IACnB,MAAM,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO;YAAE,IAAI,QAAQ,IAAI,CAAC,EAAE;QAAC;QAAG,QAAQ;YAAE,MAAM;QAAK;IAAE;IACnG,MAAM,OAAO,MAAM,QAAQ;IAC3B,MAAM,QAAQ,mBAAmB,CAAC,KAAK,IAAI,oBAAoB,IAAI;IACnE,MAAM,eAAe,MAAM,OAAO,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;YAAE,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAAC;IAAE;IAErF,IAAI,gBAAgB,OAAO;QACvB,OAAO,4LAAY,CAAC,IAAI,CACpB;YAAE,OAAO,CAAC,UAAU,EAAE,MAAM,+BAA+B,EAAE,KAAK,4BAA4B,CAAC;QAAC,GAChG;YAAE,QAAQ;QAAI;IAEtB;IAEA,MAAM,OAAO,MAAM,QAAQ,IAAI;IAE/B,MAAM,UAAU,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC;QACxC,MAAM;YACF,OAAO,KAAK,KAAK,IAAI;YACrB,QAAQ,KAAK,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI;YAC5C,UAAU,KAAK,QAAQ,IAAI;YAC3B,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAC3B;IACJ;IAEA,OAAO,4LAAY,CAAC,IAAI,CAAC,SAAS;QAAE,QAAQ;IAAI;AACpD"}}]
{"offset": {"line": 176, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/api/projects/route.ts"],"sourcesContent":["export const dynamic = 'force-dynamic';\r\n\r\nimport { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from '@/lib/auth';\r\nimport getDB from '@/lib/prisma';\r\n\r\n// GET /api/projects — List all user's projects\r\nexport async function GET() {\r\n const session = await auth();\r\n if (!session?.user?.id) {\r\n return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });\r\n }\r\n\r\n const projects = await getDB().project.findMany({\r\n where: { userId: session.user.id },\r\n orderBy: { updatedAt: 'desc' },\r\n include: {\r\n _count: { select: { chapters: true, entities: true } },\r\n },\r\n });\r\n\r\n return NextResponse.json(projects);\r\n}\r\n\r\n\r\n\r\n// POST /api/projects — Create a new project\r\nexport async function POST(request: NextRequest) {\r\n const session = await auth();\r\n if (!session?.user?.id) {\r\n return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });\r\n }\r\n\r\n // Check plan limits\r\n const prisma = getDB();\r\n const user = await prisma.user.findUnique({\r\n where: { id: session.user.id },\r\n include: { subscriptionPlan: true }\r\n }) as any; // Cast to any to bypass Prisma type cache issues\r\n\r\n const limit = user?.subscriptionPlan?.maxProjects ?? 3;\r\n const planName = user?.subscriptionPlan?.displayName || 'Gratuit';\r\n const currentCount = await prisma.project.count({ where: { userId: session.user.id } });\r\n\r\n if (limit !== -1 && currentCount >= limit) {\r\n return NextResponse.json(\r\n { error: `Limite de ${limit} projets atteinte pour le plan ${planName}. Passez au plan supérieur !` },\r\n { status: 403 }\r\n );\r\n }\r\n\r\n const body = await request.json();\r\n\r\n const project = await prisma.project.create({\r\n data: {\r\n title: body.title || 'Nouveau Roman',\r\n author: body.author || session.user.name || 'Auteur',\r\n settings: body.settings || null,\r\n userId: session.user.id,\r\n },\r\n });\r\n\r\n return NextResponse.json(project, { status: 201 });\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAEA;AACA;AACA;;;;;AAJO,MAAM,UAAU;;;;AAOhB,eAAe;IAClB,MAAM,UAAU,MAAM,IAAA,wKAAI;IAC1B,IAAI,CAAC,SAAS,MAAM,IAAI;QACpB,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAe,GAAG;YAAE,QAAQ;QAAI;IACtE;IAEA,MAAM,WAAW,MAAM,IAAA,6KAAK,IAAG,OAAO,CAAC,QAAQ,CAAC;QAC5C,OAAO;YAAE,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAAC;QACjC,SAAS;YAAE,WAAW;QAAO;QAC7B,SAAS;YACL,QAAQ;gBAAE,QAAQ;oBAAE,UAAU;oBAAM,UAAU;gBAAK;YAAE;QACzD;IACJ;IAEA,OAAO,4LAAY,CAAC,IAAI,CAAC;AAC7B;AAKO,eAAe,KAAK,OAAoB;IAC3C,MAAM,UAAU,MAAM,IAAA,wKAAI;IAC1B,IAAI,CAAC,SAAS,MAAM,IAAI;QACpB,OAAO,4LAAY,CAAC,IAAI,CAAC;YAAE,OAAO;QAAe,GAAG;YAAE,QAAQ;QAAI;IACtE;IAEA,oBAAoB;IACpB,MAAM,SAAS,IAAA,6KAAK;IACpB,MAAM,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC;QACtC,OAAO;YAAE,IAAI,QAAQ,IAAI,CAAC,EAAE;QAAC;QAC7B,SAAS;YAAE,kBAAkB;QAAK;IACtC,IAAW,iDAAiD;IAE5D,MAAM,QAAQ,MAAM,kBAAkB,eAAe;IACrD,MAAM,WAAW,MAAM,kBAAkB,eAAe;IACxD,MAAM,eAAe,MAAM,OAAO,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;YAAE,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAAC;IAAE;IAErF,IAAI,UAAU,CAAC,KAAK,gBAAgB,OAAO;QACvC,OAAO,4LAAY,CAAC,IAAI,CACpB;YAAE,OAAO,CAAC,UAAU,EAAE,MAAM,+BAA+B,EAAE,SAAS,4BAA4B,CAAC;QAAC,GACpG;YAAE,QAAQ;QAAI;IAEtB;IAEA,MAAM,OAAO,MAAM,QAAQ,IAAI;IAE/B,MAAM,UAAU,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC;QACxC,MAAM;YACF,OAAO,KAAK,KAAK,IAAI;YACrB,QAAQ,KAAK,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,IAAI;YAC5C,UAAU,KAAK,QAAQ,IAAI;YAC3B,QAAQ,QAAQ,IAAI,CAAC,EAAE;QAC3B;IACJ;IAEA,OAAO,4LAAY,CAAC,IAAI,CAAC,SAAS;QAAE,QAAQ;IAAI;AACpD"}}]
}

View File

@@ -552,7 +552,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"])("span", {
className: "px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",
children: user.subscription.plan
children: user.subscription.planDetails?.displayName || user.subscription.plan
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
lineNumber: 33,

File diff suppressed because one or more lines are too long

View File

@@ -38,7 +38,7 @@ function ProjectProvider({ value, children }) {
children: children
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx",
lineNumber: 26,
lineNumber: 30,
columnNumber: 12
}, this);
}
@@ -3309,7 +3309,7 @@ function ProjectLayout({ children }) {
const pathname = (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$__["usePathname"])();
const projectId = params.id;
const { user, logout, incrementUsage, loading: authLoading } = (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 { projects, setCurrentProjectId, updateProject, updateChapter, addChapter } = (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 { projects, setCurrentProjectId, updateProject, updateChapter, addChapter, createEntity, updateEntity, deleteEntity, 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 { chatHistory, isGenerating, sendMessage } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useChat$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useChat"])();
const [currentChapterId, setCurrentChapterId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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"])('');
const [isExportModalOpen, setIsExportModalOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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"])(false);
@@ -3346,7 +3346,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 61,
lineNumber: 62,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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", {
@@ -3357,7 +3357,7 @@ function ProjectLayout({ children }) {
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 63,
lineNumber: 64,
columnNumber: 21
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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", {
@@ -3365,19 +3365,19 @@ function ProjectLayout({ children }) {
children: "PlumeIA"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 64,
lineNumber: 65,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 62,
lineNumber: 63,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 60,
lineNumber: 61,
columnNumber: 13
}, this);
}
@@ -3390,7 +3390,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 73,
lineNumber: 74,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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", {
@@ -3398,13 +3398,13 @@ function ProjectLayout({ children }) {
children: "Chargement du projet..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 74,
lineNumber: 75,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 72,
lineNumber: 73,
columnNumber: 13
}, this);
}
@@ -3442,6 +3442,10 @@ function ProjectLayout({ children }) {
setCurrentChapterId,
updateProject: (updates)=>updateProject(projectId, updates),
updateChapter: (chapterId, data)=>updateChapter(projectId, chapterId, data),
createEntity: (type, data)=>createEntity(projectId, type, data),
updateEntity: (entityId, data)=>updateEntity(projectId, entityId, data),
deleteEntity: (entityId)=>deleteEntity(projectId, entityId),
deleteProject: ()=>deleteProject(projectId),
incrementUsage
},
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$src$2f$components$2f$layout$2f$EditorShell$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], {
@@ -3491,7 +3495,7 @@ function ProjectLayout({ children }) {
onPrint: ()=>{}
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 135,
lineNumber: 140,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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$HelpModal$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], {
@@ -3500,19 +3504,19 @@ function ProjectLayout({ children }) {
viewMode: viewMode
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 136,
lineNumber: 141,
columnNumber: 17
}, this),
children
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 103,
lineNumber: 108,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 93,
lineNumber: 94,
columnNumber: 9
}, this);
}

File diff suppressed because one or more lines are too long

View File

@@ -12,45 +12,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
'use client';
;
;
const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
const plans = [
{
id: 'free',
name: 'Gratuit',
price: '0€',
desc: 'Idéal pour découvrir PlumeIA.',
features: [
'10 actions IA / mois',
'1 projet actif',
'Bible du monde simple'
]
},
{
id: 'pro',
name: 'Auteur Pro',
price: '12€',
desc: 'Pour les écrivains sérieux.',
features: [
'500 actions IA / mois',
'Projets illimités',
'Export Word & EPUB',
'Support prioritaire'
],
popular: true
},
{
id: 'master',
name: 'Maître Plume',
price: '29€',
desc: 'Le summum de l\'écriture IA.',
features: [
'Actions IA illimitées',
'Accès Gemini 3 Pro',
'Bible du monde avancée',
'Outils de révision avancés'
]
}
];
const Pricing = ({ plans, currentPlan, onBack, onSelectPlan, isLoading })=>{
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] py-20 px-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", {
@@ -64,14 +26,14 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 25,
columnNumber: 13
lineNumber: 30,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
" Retour"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 24,
lineNumber: 29,
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", {
@@ -82,131 +44,142 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
children: "Choisissez votre destin d'écrivain."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 28,
columnNumber: 13
lineNumber: 33,
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"])("p", {
className: "text-slate-500",
children: "Passez au plan supérieur pour libérer toute la puissance de l'IA."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 29,
columnNumber: 13
lineNumber: 34,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 27,
lineNumber: 32,
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: "grid grid-cols-1 md:grid-cols-3 gap-8",
children: plans.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", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.popular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
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: "mb-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"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.name
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 35,
columnNumber: 25
}, ("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: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 91
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 25
}, ("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-sm text-slate-500",
children: p.desc
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 34,
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"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
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: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
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$check$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
children: [
isLoading && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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-center col-span-3 py-10",
children: "Chargement des offres..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
!isLoading && plans.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", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.isPopular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
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: "mb-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"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.displayName
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
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: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
"€",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$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-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 94
columnNumber: 84
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
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"])("button", {
onClick: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.popular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 33,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
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"])("p", {
className: "text-sm text-slate-500",
children: p.description
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 43,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 40,
columnNumber: 15
}, ("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"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
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: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
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$check$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 82
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 45,
columnNumber: 15
}, ("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: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.isPopular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 53,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 31,
lineNumber: 36,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 23,
lineNumber: 28,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 22,
lineNumber: 27,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
};
@@ -238,6 +211,7 @@ __turbopack_context__.s([
()=>PricingPage
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$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.js [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$Pricing$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-ssr] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$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)");
@@ -246,16 +220,32 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
;
;
;
;
function PricingPage() {
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRouter"])();
const { 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 [plans, setPlans] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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"])([]);
const [isLoading, setIsLoading] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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);
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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$__["useEffect"])(()=>{
fetch('/api/plans', {
cache: 'no-store'
}).then((res)=>res.json()).then((data)=>{
setPlans(data);
setIsLoading(false);
}).catch((err)=>{
console.error(err);
setIsLoading(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"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$Pricing$2e$tsx__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"], {
plans: plans,
isLoading: isLoading,
currentPlan: user?.subscription.plan || 'free',
onBack: ()=>router.push(user ? '/dashboard' : '/'),
onSelectPlan: ()=>router.push(user ? '/checkout' : '/login')
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/pricing/page.tsx",
lineNumber: 12,
lineNumber: 29,
columnNumber: 9
}, this);
}

File diff suppressed because one or more lines are too long

View File

@@ -187,20 +187,6 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
;
;
;
const PLAN_LIMITS = {
free: {
aiActions: 100,
projects: 3
},
pro: {
aiActions: 5000,
projects: 20
},
master: {
aiActions: 999999,
projects: 999
}
};
const useAuth = ()=>{
const { data: session, status } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useSession"])();
const [user, setUser] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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"])(null);
@@ -208,9 +194,16 @@ const useAuth = ()=>{
// Fetch real profile from DB when session is available
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$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$__["useEffect"])(()=>{
if (session?.user?.id) {
fetch('/api/user/profile').then((res)=>res.json()).then((dbUser)=>{
const plan = dbUser.plan || 'free';
const limits = PLAN_LIMITS[plan] || PLAN_LIMITS.free;
fetch('/api/user/profile', {
cache: 'no-store'
}).then((res)=>res.json()).then((dbUser)=>{
const planId = dbUser.plan || 'free';
const planDetails = dbUser.planDetails || {
id: 'free',
displayName: 'Gratuit',
maxAiActions: 100,
maxProjects: 3
};
setUser({
id: dbUser.id,
email: dbUser.email,
@@ -218,14 +211,15 @@ const useAuth = ()=>{
avatar: dbUser.avatar,
bio: dbUser.bio,
subscription: {
plan,
plan: planId,
planDetails: planDetails,
startDate: new Date(dbUser.createdAt).getTime(),
status: 'active'
},
usage: {
aiActionsCurrent: dbUser.aiActionsUsed || 0,
aiActionsLimit: limits.aiActions,
projectsLimit: limits.projects
aiActionsLimit: planDetails.maxAiActions,
projectsLimit: planDetails.maxProjects
},
preferences: {
theme: 'light',

File diff suppressed because one or more lines are too long

View File

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

View File

@@ -15,6 +15,10 @@
"[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]/world/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
]
},
"appUsingSizeAdjust": true,

View File

@@ -185,20 +185,6 @@ var _s = __turbopack_context__.k.signature();
;
;
;
const PLAN_LIMITS = {
free: {
aiActions: 100,
projects: 3
},
pro: {
aiActions: 5000,
projects: 20
},
master: {
aiActions: 999999,
projects: 999
}
};
const useAuth = ()=>{
_s();
const { data: session, status } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useSession"])();
@@ -208,12 +194,19 @@ const useAuth = ()=>{
(0, __TURBOPACK__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$__["useEffect"])({
"useAuth.useEffect": ()=>{
if (session?.user?.id) {
fetch('/api/user/profile').then({
fetch('/api/user/profile', {
cache: 'no-store'
}).then({
"useAuth.useEffect": (res)=>res.json()
}["useAuth.useEffect"]).then({
"useAuth.useEffect": (dbUser)=>{
const plan = dbUser.plan || 'free';
const limits = PLAN_LIMITS[plan] || PLAN_LIMITS.free;
const planId = dbUser.plan || 'free';
const planDetails = dbUser.planDetails || {
id: 'free',
displayName: 'Gratuit',
maxAiActions: 100,
maxProjects: 3
};
setUser({
id: dbUser.id,
email: dbUser.email,
@@ -221,14 +214,15 @@ const useAuth = ()=>{
avatar: dbUser.avatar,
bio: dbUser.bio,
subscription: {
plan,
plan: planId,
planDetails: planDetails,
startDate: new Date(dbUser.createdAt).getTime(),
status: 'active'
},
usage: {
aiActionsCurrent: dbUser.aiActionsUsed || 0,
aiActionsLimit: limits.aiActions,
projectsLimit: limits.projects
aiActionsLimit: planDetails.maxAiActions,
projectsLimit: planDetails.maxProjects
},
preferences: {
theme: 'light',

File diff suppressed because one or more lines are too long

View File

@@ -12,45 +12,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
'use client';
;
;
const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
const plans = [
{
id: 'free',
name: 'Gratuit',
price: '0€',
desc: 'Idéal pour découvrir PlumeIA.',
features: [
'10 actions IA / mois',
'1 projet actif',
'Bible du monde simple'
]
},
{
id: 'pro',
name: 'Auteur Pro',
price: '12€',
desc: 'Pour les écrivains sérieux.',
features: [
'500 actions IA / mois',
'Projets illimités',
'Export Word & EPUB',
'Support prioritaire'
],
popular: true
},
{
id: 'master',
name: 'Maître Plume',
price: '29€',
desc: 'Le summum de l\'écriture IA.',
features: [
'Actions IA illimitées',
'Accès Gemini 3 Pro',
'Bible du monde avancée',
'Outils de révision avancés'
]
}
];
const Pricing = ({ plans, currentPlan, onBack, onSelectPlan, isLoading })=>{
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] py-20 px-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", {
@@ -64,14 +26,14 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 25,
columnNumber: 13
lineNumber: 30,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
" Retour"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 24,
lineNumber: 29,
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", {
@@ -82,131 +44,142 @@ const Pricing = ({ currentPlan, onBack, onSelectPlan })=>{
children: "Choisissez votre destin d'écrivain."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 28,
columnNumber: 13
lineNumber: 33,
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"])("p", {
className: "text-slate-500",
children: "Passez au plan supérieur pour libérer toute la puissance de l'IA."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 29,
columnNumber: 13
lineNumber: 34,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 27,
lineNumber: 32,
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: "grid grid-cols-1 md:grid-cols-3 gap-8",
children: plans.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", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.popular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
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: "mb-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"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.name
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 35,
columnNumber: 25
}, ("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: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 91
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 36,
columnNumber: 25
}, ("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-sm text-slate-500",
children: p.desc
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 34,
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"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
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: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
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$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
children: [
isLoading && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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-center col-span-3 py-10",
children: "Chargement des offres..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 37,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
!isLoading && plans.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", {
className: `bg-white rounded-3xl p-8 border transition-all ${p.isPopular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`,
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: "mb-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"])("h4", {
className: "text-xl font-bold text-slate-900 mb-2",
children: p.displayName
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
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: "text-4xl font-black text-slate-900 mb-2",
children: [
p.price,
"€",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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-normal text-slate-400",
children: "/mois"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 94
columnNumber: 84
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 41,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
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"])("button", {
onClick: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.popular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 33,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 42,
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"])("p", {
className: "text-sm text-slate-500",
children: p.description
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 43,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 40,
columnNumber: 15
}, ("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"])("ul", {
className: "space-y-4 mb-10",
children: p.features.map((f, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("li", {
className: "flex items-center gap-3 text-sm text-slate-700",
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: "text-blue-500 bg-blue-50 p-0.5 rounded-full",
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$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 82
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 48,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)),
f
]
}, i, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 47,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 45,
columnNumber: 15
}, ("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: ()=>onSelectPlan(p.id),
className: `w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.isPopular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`,
children: p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 53,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0))
]
}, p.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 39,
columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 31,
lineNumber: 36,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 23,
lineNumber: 28,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx",
lineNumber: 22,
lineNumber: 27,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
};
@@ -226,6 +199,7 @@ __turbopack_context__.s([
()=>PricingPage
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$Pricing$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/Pricing.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$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)");
@@ -235,21 +209,45 @@ var _s = __turbopack_context__.k.signature();
;
;
;
;
function PricingPage() {
_s();
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])();
const { 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 [plans, setPlans] = (0, __TURBOPACK__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"])([]);
const [isLoading, setIsLoading] = (0, __TURBOPACK__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);
(0, __TURBOPACK__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$__["useEffect"])({
"PricingPage.useEffect": ()=>{
fetch('/api/plans', {
cache: 'no-store'
}).then({
"PricingPage.useEffect": (res)=>res.json()
}["PricingPage.useEffect"]).then({
"PricingPage.useEffect": (data)=>{
setPlans(data);
setIsLoading(false);
}
}["PricingPage.useEffect"]).catch({
"PricingPage.useEffect": (err)=>{
console.error(err);
setIsLoading(false);
}
}["PricingPage.useEffect"]);
}
}["PricingPage.useEffect"], []);
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$Pricing$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
plans: plans,
isLoading: isLoading,
currentPlan: user?.subscription.plan || 'free',
onBack: ()=>router.push(user ? '/dashboard' : '/'),
onSelectPlan: ()=>router.push(user ? '/checkout' : '/login')
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/pricing/page.tsx",
lineNumber: 12,
lineNumber: 29,
columnNumber: 9
}, this);
}
_s(PricingPage, "KBvgJ4RPOjJzaPCxD49Q3HRlue0=", false, function() {
_s(PricingPage, "txX/3kMROnvAhLF5YpPezcY+vpE=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$AuthProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuthContext"]

View File

@@ -2,17 +2,17 @@
"version": 3,
"sources": [],
"sections": [
{"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Pricing.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { Check, ArrowLeft } from 'lucide-react';\nimport { PlanType } from '@/lib/types';\n\ninterface PricingProps {\n currentPlan: PlanType;\n onBack: () => void;\n onSelectPlan: (plan: PlanType) => void;\n}\n\nconst Pricing: React.FC<PricingProps> = ({ currentPlan, onBack, onSelectPlan }) => {\n const plans = [\n { id: 'free', name: 'Gratuit', price: '0€', desc: 'Idéal pour découvrir PlumeIA.', features: ['10 actions IA / mois', '1 projet actif', 'Bible du monde simple'] },\n { id: 'pro', name: 'Auteur Pro', price: '12€', desc: 'Pour les écrivains sérieux.', features: ['500 actions IA / mois', 'Projets illimités', 'Export Word & EPUB', 'Support prioritaire'], popular: true },\n { id: 'master', name: 'Maître Plume', price: '29€', desc: 'Le summum de l\\'écriture IA.', features: ['Actions IA illimitées', 'Accès Gemini 3 Pro', 'Bible du monde avancée', 'Outils de révision avancés'] },\n ];\n\n return (\n <div className=\"min-h-screen bg-[#eef2ff] py-20 px-8\">\n <div className=\"max-w-6xl mx-auto\">\n <button onClick={onBack} className=\"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors\">\n <ArrowLeft size={20} /> Retour\n </button>\n <div className=\"text-center mb-16\">\n <h2 className=\"text-4xl font-black text-slate-900 mb-4\">Choisissez votre destin d'écrivain.</h2>\n <p className=\"text-slate-500\">Passez au plan supérieur pour libérer toute la puissance de l'IA.</p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n {plans.map((p) => (\n <div key={p.id} className={`bg-white rounded-3xl p-8 border transition-all ${p.popular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`}>\n <div className=\"mb-8\">\n <h4 className=\"text-xl font-bold text-slate-900 mb-2\">{p.name}</h4>\n <div className=\"text-4xl font-black text-slate-900 mb-2\">{p.price}<span className=\"text-sm font-normal text-slate-400\">/mois</span></div>\n <p className=\"text-sm text-slate-500\">{p.desc}</p>\n </div>\n <ul className=\"space-y-4 mb-10\">\n {p.features.map((f, i) => (\n <li key={i} className=\"flex items-center gap-3 text-sm text-slate-700\">\n <div className=\"text-blue-500 bg-blue-50 p-0.5 rounded-full\"><Check size={14} /></div>\n {f}\n </li>\n ))}\n </ul>\n <button \n onClick={() => onSelectPlan(p.id as PlanType)}\n className={`w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.popular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`}\n >\n {p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'}\n </button>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pricing;\n"],"names":[],"mappings":";;;;;AAIA;AAAA;AAJA;;;AAaA,MAAM,UAAkC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE;IAC5E,MAAM,QAAQ;QACZ;YAAE,IAAI;YAAQ,MAAM;YAAW,OAAO;YAAM,MAAM;YAAiC,UAAU;gBAAC;gBAAwB;gBAAkB;aAAwB;QAAC;QACjK;YAAE,IAAI;YAAO,MAAM;YAAc,OAAO;YAAO,MAAM;YAA+B,UAAU;gBAAC;gBAAyB;gBAAqB;gBAAsB;aAAsB;YAAE,SAAS;QAAK;QACzM;YAAE,IAAI;YAAU,MAAM;YAAgB,OAAO;YAAO,MAAM;YAAgC,UAAU;gBAAC;gBAAyB;gBAAsB;gBAA0B;aAA6B;QAAC;KAC7M;IAED,qBACE,yOAAC;QAAI,WAAU;kBACb,cAAA,yOAAC;YAAI,WAAU;;8BACb,yOAAC;oBAAO,SAAS;oBAAQ,WAAU;;sCAC/B,yOAAC,4QAAS;4BAAC,MAAM;;;;;;wBAAM;;;;;;;8BAE3B,yOAAC;oBAAI,WAAU;;sCACX,yOAAC;4BAAG,WAAU;sCAA0C;;;;;;sCACxD,yOAAC;4BAAE,WAAU;sCAAiB;;;;;;;;;;;;8BAElC,yOAAC;oBAAI,WAAU;8BACV,MAAM,GAAG,CAAC,CAAC,kBACR,yOAAC;4BAAe,WAAW,CAAC,+CAA+C,EAAE,EAAE,OAAO,GAAG,8CAA8C,+BAA+B;;8CAClK,yOAAC;oCAAI,WAAU;;sDACX,yOAAC;4CAAG,WAAU;sDAAyC,EAAE,IAAI;;;;;;sDAC7D,yOAAC;4CAAI,WAAU;;gDAA2C,EAAE,KAAK;8DAAC,yOAAC;oDAAK,WAAU;8DAAqC;;;;;;;;;;;;sDACvH,yOAAC;4CAAE,WAAU;sDAA0B,EAAE,IAAI;;;;;;;;;;;;8CAEjD,yOAAC;oCAAG,WAAU;8CACT,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,kBAChB,yOAAC;4CAAW,WAAU;;8DAClB,yOAAC;oDAAI,WAAU;8DAA8C,cAAA,yOAAC,4PAAK;wDAAC,MAAM;;;;;;;;;;;gDACzE;;2CAFI;;;;;;;;;;8CAMjB,yOAAC;oCACG,SAAS,IAAM,aAAa,EAAE,EAAE;oCAChC,WAAW,CAAC,kDAAkD,EAAE,EAAE,EAAE,KAAK,cAAc,+CAA+C,EAAE,OAAO,GAAG,6CAA6C,8CAA8C;8CAE5O,EAAE,EAAE,KAAK,cAAc,gBAAgB;;;;;;;2BAlBtC,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;AA0B9B;KA7CM;uCA+CS"}},
{"offset": {"line": 223, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/pricing/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport Pricing from '@/components/Pricing';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\n\r\nexport default function PricingPage() {\r\n const router = useRouter();\r\n const { user } = useAuthContext();\r\n\r\n return (\r\n <Pricing\r\n currentPlan={user?.subscription.plan || 'free'}\r\n onBack={() => router.push(user ? '/dashboard' : '/')}\r\n onSelectPlan={() => router.push(user ? '/checkout' : '/login')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;;;AAJA;;;;AAMe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,kMAAc;IAE/B,qBACI,yOAAC,uLAAO;QACJ,aAAa,MAAM,aAAa,QAAQ;QACxC,QAAQ,IAAM,OAAO,IAAI,CAAC,OAAO,eAAe;QAChD,cAAc,IAAM,OAAO,IAAI,CAAC,OAAO,cAAc;;;;;;AAGjE;GAXwB;;QACL,8LAAS;QACP,kMAAc;;;KAFX"}},
{"offset": {"line": 267, "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 = <ClassType = string | undefined | null>(...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"}},
{"offset": {"line": 285, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 301, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 317, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}},
{"offset": {"line": 338, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}},
{"offset": {"line": 364, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 387, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACX,CACE,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,GAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACR,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,EACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAc,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAY,CAAA,CAAA,EACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAA,EAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,EACA;QACE,CAAA,CAAA,CAAA;QACA,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA;QACH,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA;QACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA;QACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA;QACR,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAAI,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAI,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAC/E,SAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,SAAS,CAAA;QAC3C,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;YAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,MAAA;QAAA,CAAO;QAC/D,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;IAAA,CACL,EACA;WACK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,OAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA;WACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW;YAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;SAAA;KAAA"}},
{"offset": {"line": 428, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 463, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/check.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\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 Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,iBAAA,CAAA;YAAmB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAatF,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": 501, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-left.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\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 ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\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;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAA,CAAA,CAAA,KAAY,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,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 545, "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": 4, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/components/Pricing.tsx"],"sourcesContent":["'use client';\n\n\nimport React from 'react';\nimport { Check, ArrowLeft } from 'lucide-react';\n\ninterface PlanData {\n id: string;\n name: string;\n displayName: string;\n price: number;\n description: string;\n features: string[];\n isPopular: boolean;\n}\n\ninterface PricingProps {\n plans: PlanData[];\n currentPlan: string;\n onBack: () => void;\n onSelectPlan: (planId: string) => void;\n isLoading?: boolean;\n}\n\nconst Pricing: React.FC<PricingProps> = ({ plans, currentPlan, onBack, onSelectPlan, isLoading }) => {\n return (\n <div className=\"min-h-screen bg-[#eef2ff] py-20 px-8\">\n <div className=\"max-w-6xl mx-auto\">\n <button onClick={onBack} className=\"flex items-center gap-2 text-slate-500 hover:text-blue-600 mb-12 font-bold transition-colors\">\n <ArrowLeft size={20} /> Retour\n </button>\n <div className=\"text-center mb-16\">\n <h2 className=\"text-4xl font-black text-slate-900 mb-4\">Choisissez votre destin d'écrivain.</h2>\n <p className=\"text-slate-500\">Passez au plan supérieur pour libérer toute la puissance de l'IA.</p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n {isLoading && <p className=\"text-center col-span-3 py-10\">Chargement des offres...</p>}\n {!isLoading && plans.map((p) => (\n <div key={p.id} className={`bg-white rounded-3xl p-8 border transition-all ${p.isPopular ? 'border-blue-500 shadow-2xl scale-105 z-10' : 'border-indigo-100 shadow-xl'}`}>\n <div className=\"mb-8\">\n <h4 className=\"text-xl font-bold text-slate-900 mb-2\">{p.displayName}</h4>\n <div className=\"text-4xl font-black text-slate-900 mb-2\">{p.price}<span className=\"text-sm font-normal text-slate-400\">/mois</span></div>\n <p className=\"text-sm text-slate-500\">{p.description}</p>\n </div>\n <ul className=\"space-y-4 mb-10\">\n {p.features.map((f, i) => (\n <li key={i} className=\"flex items-center gap-3 text-sm text-slate-700\">\n <div className=\"text-blue-500 bg-blue-50 p-0.5 rounded-full\"><Check size={14} /></div>\n {f}\n </li>\n ))}\n </ul>\n <button\n onClick={() => onSelectPlan(p.id)}\n className={`w-full py-4 rounded-2xl font-black transition-all ${p.id === currentPlan ? 'bg-slate-100 text-slate-400 cursor-default' : p.isPopular ? 'bg-blue-600 text-white hover:bg-blue-700' : 'bg-slate-900 text-white hover:bg-slate-800'}`}\n >\n {p.id === currentPlan ? 'Plan Actuel' : 'Sélectionner'}\n </button>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Pricing;\n"],"names":[],"mappings":";;;;;AAIA;AAAA;AAJA;;;AAwBA,MAAM,UAAkC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;IAC9F,qBACE,yOAAC;QAAI,WAAU;kBACb,cAAA,yOAAC;YAAI,WAAU;;8BACb,yOAAC;oBAAO,SAAS;oBAAQ,WAAU;;sCACjC,yOAAC,4QAAS;4BAAC,MAAM;;;;;;wBAAM;;;;;;;8BAEzB,yOAAC;oBAAI,WAAU;;sCACb,yOAAC;4BAAG,WAAU;sCAA0C;;;;;;sCACxD,yOAAC;4BAAE,WAAU;sCAAiB;;;;;;;;;;;;8BAEhC,yOAAC;oBAAI,WAAU;;wBACZ,2BAAa,yOAAC;4BAAE,WAAU;sCAA+B;;;;;;wBACzD,CAAC,aAAa,MAAM,GAAG,CAAC,CAAC,kBACxB,yOAAC;gCAAe,WAAW,CAAC,+CAA+C,EAAE,EAAE,SAAS,GAAG,8CAA8C,+BAA+B;;kDACtK,yOAAC;wCAAI,WAAU;;0DACb,yOAAC;gDAAG,WAAU;0DAAyC,EAAE,WAAW;;;;;;0DACpE,yOAAC;gDAAI,WAAU;;oDAA2C,EAAE,KAAK;oDAAC;kEAAC,yOAAC;wDAAK,WAAU;kEAAqC;;;;;;;;;;;;0DACxH,yOAAC;gDAAE,WAAU;0DAA0B,EAAE,WAAW;;;;;;;;;;;;kDAEtD,yOAAC;wCAAG,WAAU;kDACX,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,kBAClB,yOAAC;gDAAW,WAAU;;kEACpB,yOAAC;wDAAI,WAAU;kEAA8C,cAAA,yOAAC,4PAAK;4DAAC,MAAM;;;;;;;;;;;oDACzE;;+CAFM;;;;;;;;;;kDAMb,yOAAC;wCACC,SAAS,IAAM,aAAa,EAAE,EAAE;wCAChC,WAAW,CAAC,kDAAkD,EAAE,EAAE,EAAE,KAAK,cAAc,+CAA+C,EAAE,SAAS,GAAG,6CAA6C,8CAA8C;kDAE9O,EAAE,EAAE,KAAK,cAAc,gBAAgB;;;;;;;+BAlBlC,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;;AA0B1B;KAxCM;uCA0CS"}},
{"offset": {"line": 196, "column": 0}, "map": {"version":3,"sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/src/app/pricing/page.tsx"],"sourcesContent":["'use client';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport Pricing from '@/components/Pricing';\r\nimport { useRouter } from 'next/navigation';\r\nimport { useAuthContext } from '@/providers/AuthProvider';\r\n\r\nexport default function PricingPage() {\r\n const router = useRouter();\r\n const { user } = useAuthContext();\r\n\r\n const [plans, setPlans] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n fetch('/api/plans', { cache: 'no-store' })\r\n .then(res => res.json())\r\n .then(data => {\r\n setPlans(data);\r\n setIsLoading(false);\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n setIsLoading(false);\r\n });\r\n }, []);\r\n\r\n return (\r\n <Pricing\r\n plans={plans}\r\n isLoading={isLoading}\r\n currentPlan={user?.subscription.plan || 'free'}\r\n onBack={() => router.push(user ? '/dashboard' : '/')}\r\n onSelectPlan={() => router.push(user ? '/checkout' : '/login')}\r\n />\r\n );\r\n}\r\n"],"names":[],"mappings":";;;;;AAEA;AACA;AACA;AACA;;;AALA;;;;;AAOe,SAAS;;IACpB,MAAM,SAAS,IAAA,8LAAS;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,kMAAc;IAE/B,MAAM,CAAC,OAAO,SAAS,GAAG,IAAA,qNAAQ,EAAC,EAAE;IACrC,MAAM,CAAC,WAAW,aAAa,GAAG,IAAA,qNAAQ,EAAC;IAE3C,IAAA,sNAAS;iCAAC;YACN,MAAM,cAAc;gBAAE,OAAO;YAAW,GACnC,IAAI;yCAAC,CAAA,MAAO,IAAI,IAAI;wCACpB,IAAI;yCAAC,CAAA;oBACF,SAAS;oBACT,aAAa;gBACjB;wCACC,KAAK;yCAAC,CAAA;oBACH,QAAQ,KAAK,CAAC;oBACd,aAAa;gBACjB;;QACR;gCAAG,EAAE;IAEL,qBACI,yOAAC,uLAAO;QACJ,OAAO;QACP,WAAW;QACX,aAAa,MAAM,aAAa,QAAQ;QACxC,QAAQ,IAAM,OAAO,IAAI,CAAC,OAAO,eAAe;QAChD,cAAc,IAAM,OAAO,IAAI,CAAC,OAAO,cAAc;;;;;;AAGjE;GA7BwB;;QACL,8LAAS;QACP,kMAAc;;;KAFX"}},
{"offset": {"line": 265, "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 = <ClassType = string | undefined | null>(...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"}},
{"offset": {"line": 283, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toKebabCase.ts"],"sourcesContent":["/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,EAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 299, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toCamelCase.ts"],"sourcesContent":["/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,WAAA,CAAA,CAAA,CAAc,CAAmB,MAAA,CAAA,CAAA,CAAA,AAC5C,CAD4C,AAC5C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,CAAA,CAAI,EAAA,CAAA,CAAA,CAAA,AAClD,CADkD,AAClD,IAAK,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAI,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}},
{"offset": {"line": 315, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/toPascalCase.ts"],"sourcesContent":["import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgC;IAC7E,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,MAAM,CAAA;IAEpC,OAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAY,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC/D,CAAA"}},
{"offset": {"line": 336, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/defaultAttributes.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/defaultAttributes.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n"],"names":[],"mappings":";;;;;;;;;IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA;IACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACT,CAAA,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACN,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA;IACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACf,cAAA,CAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA"}},
{"offset": {"line": 362, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/shared/src/utils/hasA11yProp.ts"],"sourcesContent":["/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n"],"names":[],"mappings":";;;;;;;;;IAMO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B;IACzD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,KAAQ,KAAA,CAAA,AAAO;QACxB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,EAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAA,CAAA,CAAA,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,MAAS,OAAA,CAAA,CAAS;YACnE,OAAO,CAAA,CAAA,CAAA,CAAA;QACT;IACF;IAEA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 385, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/Icon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/Icon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACX,CACE,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,GAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACR,CAAA,CAAA,CAAA,CAAA,GAAO,CAAA,CAAA,EACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAc,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAY,CAAA,CAAA,EACZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,GAAA,EAEL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EACE,CAAA,CAAA,CAAA,CAAA,CAAA,EACA;QACE,CAAA,CAAA,CAAA;QACA,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6MAAA;QACH,CAAA,CAAA,CAAA,CAAA,CAAA,EAAO,CAAA,CAAA,CAAA,CAAA;QACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA;QACR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA;QACR,WAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAuB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,IAAI,CAAA,CAAA,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAI,CAAA,GAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAC/E,SAAA,CAAA,KAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,SAAS,CAAA;QAC3C,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,KAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,EAAY,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA;YAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,MAAA;QAAA,CAAO;QAC/D,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA;IAAA,CACL,EACA;WACK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,OAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,GAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA;WACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW;YAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ;SAAA;KAAA"}},
{"offset": {"line": 426, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,gBAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,QAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IACjE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAuC,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,GAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GACjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,8MAAA,EAAc,gNAAA,CAAA,CAAM;YAClB,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,2OAAA,MAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAC7C,CAAA,OAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAA,EAClB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEF,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CACJ;IAGH,SAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,4OAAA,EAAa,QAAQ,CAAA;IAE7C,OAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA"}},
{"offset": {"line": 461, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/check.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M20 6 9 17l-5-5', key: '1gmf2c' }]];\n\n/**\n * @component @name Check\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgNiA5IDE3bC01LTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/check\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 Check = createLucideIcon('check', __iconNode);\n\nexport default Check;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAGO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB;IAAC;QAAC,MAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,iBAAA,CAAA;YAAmB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAC;CAAA;AAatF,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": 499, "column": 0}, "map": {"version":3,"file":"turbopack:///[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-left.js","sources":["file:///C:/Users/streaper2/Documents/00%20-%20projet/plumeia/node_modules/lucide-react/src/icons/arrow-left.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n];\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTIgMTktNy03IDctNyIgLz4KICA8cGF0aCBkPSJNMTkgMTJINSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/arrow-left\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 ArrowLeft = createLucideIcon('arrow-left', __iconNode);\n\nexport default ArrowLeft;\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;YAAkB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;IAC/C;QAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAQ,CAAA;YAAE,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAAY,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAAA,CAAU;KAAA;CAC3C;AAaA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAA,CAAA,CAAA,KAAY,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,CAAA,CAAA,CAAA,EAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA"}},
{"offset": {"line": 543, "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]}}]
}

View File

@@ -574,7 +574,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"])("span", {
className: "px-3 py-1 rounded-full bg-indigo-100 text-indigo-700 text-[10px] uppercase font-black tracking-widest",
children: user.subscription.plan
children: user.subscription.planDetails?.displayName || user.subscription.plan
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/Dashboard.tsx",
lineNumber: 33,

File diff suppressed because one or more lines are too long

View File

@@ -21,7 +21,7 @@ function ProjectProvider({ value, children }) {
children: children
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx",
lineNumber: 26,
lineNumber: 30,
columnNumber: 12
}, this);
}
@@ -3385,7 +3385,7 @@ function ProjectLayout({ children }) {
const pathname = (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$__["usePathname"])();
const projectId = params.id;
const { user, logout, incrementUsage, loading: authLoading } = (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 { projects, setCurrentProjectId, updateProject, updateChapter, addChapter } = (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 { projects, setCurrentProjectId, updateProject, updateChapter, addChapter, createEntity, updateEntity, deleteEntity, 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 { chatHistory, isGenerating, sendMessage } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useChat$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useChat"])();
const [currentChapterId, setCurrentChapterId] = (0, __TURBOPACK__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"])('');
const [isExportModalOpen, setIsExportModalOpen] = (0, __TURBOPACK__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"])(false);
@@ -3430,7 +3430,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 61,
lineNumber: 62,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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", {
@@ -3441,7 +3441,7 @@ function ProjectLayout({ children }) {
size: 20
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 63,
lineNumber: 64,
columnNumber: 21
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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", {
@@ -3449,19 +3449,19 @@ function ProjectLayout({ children }) {
children: "PlumeIA"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 64,
lineNumber: 65,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 62,
lineNumber: 63,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 60,
lineNumber: 61,
columnNumber: 13
}, this);
}
@@ -3474,7 +3474,7 @@ function ProjectLayout({ children }) {
size: 48
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 73,
lineNumber: 74,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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", {
@@ -3482,13 +3482,13 @@ function ProjectLayout({ children }) {
children: "Chargement du projet..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 74,
lineNumber: 75,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 72,
lineNumber: 73,
columnNumber: 13
}, this);
}
@@ -3526,6 +3526,10 @@ function ProjectLayout({ children }) {
setCurrentChapterId,
updateProject: (updates)=>updateProject(projectId, updates),
updateChapter: (chapterId, data)=>updateChapter(projectId, chapterId, data),
createEntity: (type, data)=>createEntity(projectId, type, data),
updateEntity: (entityId, data)=>updateEntity(projectId, entityId, data),
deleteEntity: (entityId)=>deleteEntity(projectId, entityId),
deleteProject: ()=>deleteProject(projectId),
incrementUsage
},
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$src$2f$components$2f$layout$2f$EditorShell$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
@@ -3575,7 +3579,7 @@ function ProjectLayout({ children }) {
onPrint: ()=>{}
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 135,
lineNumber: 140,
columnNumber: 17
}, this),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$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$HelpModal$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
@@ -3584,23 +3588,23 @@ function ProjectLayout({ children }) {
viewMode: viewMode
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 136,
lineNumber: 141,
columnNumber: 17
}, this),
children
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 103,
lineNumber: 108,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/layout.tsx",
lineNumber: 93,
lineNumber: 94,
columnNumber: 9
}, this);
}
_s(ProjectLayout, "J4koKxGuE6/IBzNIwEDR3WnvQ/k=", false, function() {
_s(ProjectLayout, "EXfzuv2MxPFLxxcZZVf0UsiuZug=", false, function() {
return [
__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$__["useParams"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"],

File diff suppressed because one or more lines are too long

View File

@@ -548,6 +548,10 @@
position: relative;
}
.static {
position: static;
}
.sticky {
position: sticky;
}
@@ -712,6 +716,10 @@
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.container {
width: 100%;
}
@@ -2109,6 +2117,10 @@
padding-block: calc(var(--spacing) * 8);
}
.py-10 {
padding-block: calc(var(--spacing) * 10);
}
.py-12 {
padding-block: calc(var(--spacing) * 12);
}

View File

@@ -849,6 +849,10 @@
position: relative;
}
.static {
position: static;
}
.sticky {
position: sticky;
}
@@ -1013,6 +1017,10 @@
grid-column: span 2 / span 2;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.container {
width: 100%;
}
@@ -2410,6 +2418,10 @@
padding-block: calc(var(--spacing) * 8);
}
.py-10 {
padding-block: calc(var(--spacing) * 10);
}
.py-12 {
padding-block: calc(var(--spacing) * 12);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@
// Do not edit this file manually
type AppRoutes = "/" | "/checkout" | "/dashboard" | "/features" | "/login" | "/pricing" | "/profile" | "/project/[id]" | "/project/[id]/ideas" | "/project/[id]/settings" | "/project/[id]/workflow" | "/project/[id]/world" | "/signup"
type AppRouteHandlerRoutes = "/api/ai/generate" | "/api/ai/transform" | "/api/auth/[...nextauth]" | "/api/auth/register" | "/api/chapters" | "/api/chapters/[id]" | "/api/entities" | "/api/entities/[id]" | "/api/ideas" | "/api/ideas/[id]" | "/api/projects" | "/api/projects/[id]" | "/api/projects/[id]/workflow" | "/api/user/profile"
type AppRouteHandlerRoutes = "/api/ai/generate" | "/api/ai/transform" | "/api/auth/[...nextauth]" | "/api/auth/register" | "/api/chapters" | "/api/chapters/[id]" | "/api/entities" | "/api/entities/[id]" | "/api/ideas" | "/api/ideas/[id]" | "/api/plans" | "/api/projects" | "/api/projects/[id]" | "/api/projects/[id]/workflow" | "/api/user/profile"
type PageRoutes = never
type LayoutRoutes = "/" | "/project/[id]"
type RedirectRoutes = never
@@ -22,6 +22,7 @@ interface ParamMap {
"/api/entities/[id]": { "id": string; }
"/api/ideas": {}
"/api/ideas/[id]": { "id": string; }
"/api/plans": {}
"/api/projects": {}
"/api/projects/[id]": { "id": string; }
"/api/projects/[id]/workflow": { "id": string; }

View File

@@ -254,6 +254,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
type __Unused = __Check
}
// Validate ../../../src/app/api/plans/route.ts
{
type __IsExpected<Specific extends RouteHandlerConfig<"/api/plans">> = Specific
const handler = {} as typeof import("../../../src/app/api/plans/route.js")
type __Check = __IsExpected<typeof handler>
// @ts-ignore
type __Unused = __Check
}
// Validate ../../../src/app/api/projects/[id]/route.ts
{
type __IsExpected<Specific extends RouteHandlerConfig<"/api/projects/[id]">> = Specific