()
| 12 | import OpenAIApiConfigView from "./OpenAIApiConfigView"; |
| 13 | |
| 14 | const SettingGeneralView = () => { |
| 15 | const { t } = useTranslation(); |
| 16 | |
| 17 | return ( |
| 18 | <div className="w-full flex flex-col justify-start items-start space-y-2 sm:space-y-4 py-4 sm:py-8"> |
| 19 | <div className="w-full flex flex-row justify-start items-start flex-wrap gap-2"> |
| 20 | <a |
| 21 | href="https://discord.gg/z6kakemDjm" |
| 22 | className="w-auto px-4 py-2 rounded-full bg-indigo-600 text-white text-sm font-medium flex flex-row justify-center items-center hover:underline hover:shadow" |
| 23 | target="_blank" |
| 24 | > |
| 25 | <Icon.BsDiscord className="w-4 h-auto mr-1" /> |
| 26 | {t("social.join-discord-channel")} |
| 27 | </a> |
| 28 | <WeChatQRCodeView /> |
| 29 | </div> |
| 30 | |
| 31 | {hasFeature("debug") && ( |
| 32 | <div className="w-full border border-gray-200 dark:border-zinc-700 p-4 rounded-lg space-y-2"> |
| 33 | <DebugView /> |
| 34 | </div> |
| 35 | )} |
| 36 | |
| 37 | {hasFeature("payment") && ( |
| 38 | <div className="w-full border border-gray-200 dark:border-zinc-700 p-4 rounded-lg space-y-2"> |
| 39 | <PricingView /> |
| 40 | </div> |
| 41 | )} |
| 42 | |
| 43 | {hasFeature("account") && ( |
| 44 | <div className="w-full border border-gray-200 dark:border-zinc-700 p-4 rounded-lg space-y-2"> |
| 45 | <AccountView /> |
| 46 | </div> |
| 47 | )} |
| 48 | |
| 49 | <OpenAIApiConfigView /> |
| 50 | |
| 51 | <div className="w-full border border-gray-200 dark:border-zinc-700 p-4 rounded-lg space-y-2"> |
| 52 | <div className="w-full flex flex-row justify-between items-center gap-2"> |
| 53 | <span>{t("setting.basic.language")}</span> |
| 54 | <LocaleSelector /> |
| 55 | </div> |
| 56 | <div className="w-full flex flex-row justify-between items-center gap-2"> |
| 57 | <span>{t("setting.theme.self")}</span> |
| 58 | <ThemeSelector /> |
| 59 | </div> |
| 60 | </div> |
| 61 | |
| 62 | <div className="w-full border border-red-200 dark:border-zinc-700 p-4 rounded-lg"> |
| 63 | <div className="w-full flex flex-row justify-between items-center gap-2"> |
| 64 | <span>{t("setting.data.clear-all-data")}</span> |
| 65 | <ClearDataButton /> |
| 66 | </div> |
| 67 | </div> |
| 68 | |
| 69 | <div className="w-full flex flex-row justify-start items-center p-4 gap-2"> |
| 70 | <a className="text-blue-600 hover:underline" href={"privacy"} target="_blank"> |
| 71 | Privacy |
nothing calls this directly
no test coverage detected