add contact button

This commit is contained in:
Zhang Minghan 2023-10-25 17:13:35 +08:00
parent 8f600d5c7d
commit c2668212f6
5 changed files with 72 additions and 13 deletions

BIN
app/public/source/qq.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -404,3 +404,10 @@
flex-shrink: 0; flex-shrink: 0;
} }
} }
.contact-image {
margin-top: 0.75rem;
max-width: min(60vw, 420px);
max-height: 80vh;
border-radius: var(--radius);
}

View File

@ -14,7 +14,7 @@ import { formatMessage } from "../../utils.ts";
import ChatInterface from "./ChatInterface.tsx"; import ChatInterface from "./ChatInterface.tsx";
import { Button } from "../ui/button.tsx"; import { Button } from "../ui/button.tsx";
import router from "../../router.tsx"; import router from "../../router.tsx";
import { BookMarked, ChevronRight, FolderKanban, Globe } from "lucide-react"; import {BookMarked, ChevronRight, FolderKanban, Globe, Users2} from "lucide-react";
import { import {
Tooltip, Tooltip,
TooltipContent, TooltipContent,
@ -25,6 +25,15 @@ import { Toggle } from "../ui/toggle.tsx";
import { Input } from "../ui/input.tsx"; import { Input } from "../ui/input.tsx";
import EditorProvider from "../EditorProvider.tsx"; import EditorProvider from "../EditorProvider.tsx";
import ModelSelector from "./ModelSelector.tsx"; import ModelSelector from "./ModelSelector.tsx";
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger
} from "../ui/dialog.tsx";
function ChatWrapper() { function ChatWrapper() {
const { t } = useTranslation(); const { t } = useTranslation();
@ -90,14 +99,37 @@ function ChatWrapper() {
<ChatInterface /> <ChatInterface />
) : ( ) : (
<div className={`chat-product`}> <div className={`chat-product`}>
<Button <Dialog>
variant={`outline`} <DialogTrigger asChild>
onClick={() => window.open("https://docs.chatnio.net", "_blank")} <Button variant={`outline`}>
> <Users2 className={`h-4 w-4 mr-1.5`} />
<BookMarked className={`h-4 w-4 mr-1.5`} /> {t("contact.title")}
{t("docs.title")} <ChevronRight className={`h-4 w-4 ml-2`} />
<ChevronRight className={`h-4 w-4 ml-2`} /> </Button>
</Button> </DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>{t("contact.title")}</DialogTitle>
<DialogDescription />
<Button
className={`mx-auto`}
variant={`outline`}
onClick={() => window.open("https://docs.chatnio.net", "_blank")}
>
<BookMarked className={`h-4 w-4 mr-1.5`} />
{t("docs.title")}
</Button>
<a
href={"http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=1oKfIbNVXmMNMVzW1NiFSTKDcT1qIEq5&authKey=uslxslIBZtLImf4BSxjDqfx4hiJA52YV7PFM38W%2BOArr%2BhE0jwVdQCRYs0%2FXKX7W&noverify=0&group_code=565902327"}
target={"_blank"}
className={`mx-auto`}
>
<img src={`/source/qq.jpg`} className={`contact-image`} alt={`QQ`} />
</a>
</DialogHeader>
</DialogContent>
</Dialog>
<Button <Button
variant={`outline`} variant={`outline`}
onClick={() => router.navigate("/generate")} onClick={() => router.navigate("/generate")}

View File

@ -130,9 +130,19 @@ function ShareManagement() {
<DialogContent> <DialogContent>
<DialogHeader> <DialogHeader>
<DialogTitle>{t("share.manage")}</DialogTitle> <DialogTitle>{t("share.manage")}</DialogTitle>
<DialogDescription className={`share-table`}> {
<ShareTable data={data} /> data.length > 0 ? (
</DialogDescription> <DialogDescription className={`share-table`}>
<ShareTable data={data} />
</DialogDescription>
) : (
<DialogDescription>
<p className={`text-center select-none mt-6 mb-2`}>
{t("conversation.empty")}
</p>
</DialogDescription>
)
}
</DialogHeader> </DialogHeader>
<DialogFooter> <DialogFooter>
<Button variant={`outline`} onClick={() => dispatch(closeDialog())}> <Button variant={`outline`} onClick={() => dispatch(closeDialog())}>

View File

@ -206,6 +206,9 @@ const resources = {
"check-success": "Redeem Success", "check-success": "Redeem Success",
"check-success-description": "Redeem Success! You have received {{amount}} points, start your AI journey!", "check-success-description": "Redeem Success! You have received {{amount}} points, start your AI journey!",
"check-failed": "Redeem Failed", "check-failed": "Redeem Failed",
},
contact: {
title: "Contact Us",
} }
}, },
}, },
@ -399,7 +402,11 @@ const resources = {
"check-success": "兑换成功", "check-success": "兑换成功",
"check-success-description": "兑换成功!您已获得 {{amount}} 点数,开始您的 AI 之旅吧!", "check-success-description": "兑换成功!您已获得 {{amount}} 点数,开始您的 AI 之旅吧!",
"check-failed": "兑换失败", "check-failed": "兑换失败",
} },
contact: {
title: "联系我们",
},
}, },
}, },
ru: { ru: {
@ -603,6 +610,9 @@ const resources = {
"check-success": "Успешно", "check-success": "Успешно",
"check-success-description": "Успешно! Вы получили {{amount}} очков, начните свое путешествие в мир AI!", "check-success-description": "Успешно! Вы получили {{amount}} очков, начните свое путешествие в мир AI!",
"check-failed": "Не удалось", "check-failed": "Не удалось",
},
contact: {
title: "Связаться с нами",
} }
}, },
}, },