|
1 | 1 | "use client"; |
2 | 2 |
|
3 | 3 | import { useState, useEffect } from "react"; |
4 | | -import { useTranslation, Trans } from "react-i18next"; |
| 4 | +import { useTranslation } from "react-i18next"; |
5 | 5 | import { Button } from "@/components/ui/button"; |
6 | 6 | import { NavigationLayout } from "@/components/navigation/NavigationLayout"; |
7 | 7 | import { HomepageContent } from "@/components/homepage/HomepageContent"; |
| 8 | +import { AuthDialogs } from "@/components/homepage/AuthDialogs"; |
8 | 9 | import { LoginModal } from "@/components/auth/loginModal"; |
9 | 10 | import { RegisterModal } from "@/components/auth/registerModal"; |
10 | 11 | import { useAuth } from "@/hooks/useAuth"; |
11 | | -import { Modal, ConfigProvider, App } from "antd"; |
| 12 | +import { ConfigProvider, App } from "antd"; |
12 | 13 | import modelEngineService from "@/services/modelEngineService"; |
13 | 14 | import { CONNECTION_STATUS, ConnectionStatus } from "@/const/modelConfig"; |
14 | 15 | import log from "@/lib/logger"; |
@@ -472,176 +473,29 @@ export default function Home() { |
472 | 473 | > |
473 | 474 | {renderContent()} |
474 | 475 |
|
475 | | - {/* Login prompt dialog - only shown in full version */} |
476 | | - {!isSpeedMode && ( |
477 | | - <Modal |
478 | | - title={t("page.loginPrompt.title")} |
479 | | - open={loginPromptOpen} |
480 | | - onCancel={handleCloseLoginPrompt} |
481 | | - footer={[ |
482 | | - <Button |
483 | | - key="register" |
484 | | - variant="link" |
485 | | - onClick={handleRegisterClick} |
486 | | - className="bg-white mr-2" |
487 | | - > |
488 | | - {t("page.loginPrompt.register")} |
489 | | - </Button>, |
490 | | - <Button |
491 | | - key="login" |
492 | | - onClick={handleLoginClick} |
493 | | - className="bg-blue-600 text-white hover:bg-blue-700" |
494 | | - > |
495 | | - {t("page.loginPrompt.login")} |
496 | | - </Button>, |
497 | | - ]} |
498 | | - centered |
499 | | - > |
500 | | - <div className="py-2"> |
501 | | - <h3 className="text-base font-medium mb-2"> |
502 | | - {t("page.loginPrompt.header")} |
503 | | - </h3> |
504 | | - <p className="text-gray-600 mb-3"> |
505 | | - {t("page.loginPrompt.intro")} |
506 | | - </p> |
507 | | - |
508 | | - <div className="rounded-md mb-6 mt-3"> |
509 | | - <h3 className="text-base font-medium mb-1"> |
510 | | - {t("page.loginPrompt.benefitsTitle")} |
511 | | - </h3> |
512 | | - <ul className="text-gray-600 pl-5 list-disc"> |
513 | | - {( |
514 | | - t("page.loginPrompt.benefits", { |
515 | | - returnObjects: true, |
516 | | - }) as string[] |
517 | | - ).map((benefit, i) => ( |
518 | | - <li key={i}>{benefit}</li> |
519 | | - ))} |
520 | | - </ul> |
521 | | - </div> |
522 | | - |
523 | | - <div className="mt-4"> |
524 | | - <p className="text-base font-medium"> |
525 | | - <Trans i18nKey="page.loginPrompt.githubSupport"> |
526 | | - βοΈ Nexent is still growing, please help me by starring on{" "} |
527 | | - <a |
528 | | - href="https://github.com/ModelEngine-Group/nexent" |
529 | | - target="_blank" |
530 | | - rel="noopener noreferrer" |
531 | | - className="text-blue-600 hover:text-blue-700 font-bold" |
532 | | - > |
533 | | - GitHub |
534 | | - </a> |
535 | | - , thank you. |
536 | | - </Trans> |
537 | | - </p> |
538 | | - </div> |
539 | | - <br /> |
540 | | - |
541 | | - <p className="text-gray-500 text-xs"> |
542 | | - {t("page.loginPrompt.noAccount")} |
543 | | - </p> |
544 | | - </div> |
545 | | - </Modal> |
546 | | - )} |
547 | | - |
548 | | - {/* Login and register modals - only shown in full version */} |
| 476 | + {/* Auth dialogs - only shown in full version */} |
549 | 477 | {!isSpeedMode && ( |
550 | 478 | <> |
| 479 | + <AuthDialogs |
| 480 | + loginPromptOpen={loginPromptOpen} |
| 481 | + adminPromptOpen={adminRequiredPromptOpen} |
| 482 | + onCloseLoginPrompt={handleCloseLoginPrompt} |
| 483 | + onCloseAdminPrompt={handleCloseAdminPrompt} |
| 484 | + onLoginClick={() => { |
| 485 | + setLoginPromptOpen(false); |
| 486 | + setAdminRequiredPromptOpen(false); |
| 487 | + openLoginModal(); |
| 488 | + }} |
| 489 | + onRegisterClick={() => { |
| 490 | + setLoginPromptOpen(false); |
| 491 | + setAdminRequiredPromptOpen(false); |
| 492 | + openRegisterModal(); |
| 493 | + }} |
| 494 | + /> |
551 | 495 | <LoginModal /> |
552 | 496 | <RegisterModal /> |
553 | 497 | </> |
554 | 498 | )} |
555 | | - |
556 | | - {/* Admin prompt dialog - only shown in full version */} |
557 | | - {!isSpeedMode && ( |
558 | | - <Modal |
559 | | - title={t("page.adminPrompt.title")} |
560 | | - open={adminRequiredPromptOpen} |
561 | | - onCancel={handleCloseAdminPrompt} |
562 | | - footer={[ |
563 | | - <Button |
564 | | - key="register" |
565 | | - variant="link" |
566 | | - onClick={() => { |
567 | | - setAdminRequiredPromptOpen(false); |
568 | | - openRegisterModal(); |
569 | | - }} |
570 | | - className="bg-white mr-2" |
571 | | - > |
572 | | - {t("page.loginPrompt.register")} |
573 | | - </Button>, |
574 | | - <Button |
575 | | - key="login" |
576 | | - onClick={() => { |
577 | | - setAdminRequiredPromptOpen(false); |
578 | | - openLoginModal(); |
579 | | - }} |
580 | | - className="bg-blue-600 text-white hover:bg-blue-700" |
581 | | - > |
582 | | - {t("page.loginPrompt.login")} |
583 | | - </Button>, |
584 | | - ]} |
585 | | - centered |
586 | | - > |
587 | | - <div className="py-2"> |
588 | | - <p className="text-gray-600">{t("page.adminPrompt.intro")}</p> |
589 | | - </div> |
590 | | - <div className="py-2"> |
591 | | - <h3 className="text-base font-medium mb-2"> |
592 | | - {t("page.adminPrompt.unlockHeader")} |
593 | | - </h3> |
594 | | - <p className="text-gray-600 mb-3"> |
595 | | - {t("page.adminPrompt.unlockIntro")} |
596 | | - </p> |
597 | | - <div className="rounded-md mb-6 mt-3"> |
598 | | - <h3 className="text-base font-medium mb-1"> |
599 | | - {t("page.adminPrompt.permissionsTitle")} |
600 | | - </h3> |
601 | | - <ul className="text-gray-600 pl-5 list-disc"> |
602 | | - {( |
603 | | - t("page.adminPrompt.permissions", { |
604 | | - returnObjects: true, |
605 | | - }) as string[] |
606 | | - ).map((permission, i) => ( |
607 | | - <li key={i}>{permission}</li> |
608 | | - ))} |
609 | | - </ul> |
610 | | - </div> |
611 | | - <div className="mt-4"> |
612 | | - <p className="text-base font-medium"> |
613 | | - <Trans i18nKey="page.adminPrompt.githubSupport"> |
614 | | - βοΈ Nexent is still growing, please help me by starring on{" "} |
615 | | - <a |
616 | | - href="https://github.com/ModelEngine-Group/nexent" |
617 | | - target="_blank" |
618 | | - rel="noopener noreferrer" |
619 | | - className="text-blue-600 hover:text-blue-700 font-bold" |
620 | | - > |
621 | | - GitHub |
622 | | - </a> |
623 | | - , thank you. |
624 | | - </Trans> |
625 | | - <br /> |
626 | | - <br /> |
627 | | - <Trans i18nKey="page.adminPrompt.becomeAdmin"> |
628 | | - π‘ Want to become an administrator? Please visit the{" "} |
629 | | - <a |
630 | | - href="http://nexent.tech/contact" |
631 | | - target="_blank" |
632 | | - rel="noopener noreferrer" |
633 | | - className="text-blue-600 hover:text-blue-700 font-bold" |
634 | | - > |
635 | | - official contact page |
636 | | - </a>{" "} |
637 | | - to apply for an administrator account. |
638 | | - </Trans> |
639 | | - </p> |
640 | | - </div> |
641 | | - <br /> |
642 | | - </div> |
643 | | - </Modal> |
644 | | - )} |
645 | 499 | </NavigationLayout> |
646 | 500 | ); |
647 | 501 | } |
|
0 commit comments