From bd085751b6965f94738703966ca36c17acdcd565 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Tue, 18 Mar 2025 19:36:36 +0800 Subject: [PATCH] feat(component): add LanguageServerAccordion for language server settings --- .../settings/language-server/accordion.tsx | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/app/(app)/dashboard/@admin/settings/language-server/accordion.tsx diff --git a/src/app/(app)/dashboard/@admin/settings/language-server/accordion.tsx b/src/app/(app)/dashboard/@admin/settings/language-server/accordion.tsx new file mode 100644 index 0000000..f72e9c0 --- /dev/null +++ b/src/app/(app)/dashboard/@admin/settings/language-server/accordion.tsx @@ -0,0 +1,70 @@ +"use client"; + +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { Loading } from "@/components/loading"; +import { useAdminSettingsStore } from "@/store/useAdminSettingsStore"; +import { EditorLanguage, LanguageServerConfig } from "@prisma/client"; +import { SettingsLanguageServerForm } from "@/app/(app)/dashboard/@admin/settings/language-server/form"; + +interface LanguageServerAccordionProps { + configs: { + language: EditorLanguage; + config: LanguageServerConfig | null; + }[]; +} + +export function LanguageServerAccordion({ + configs, +}: LanguageServerAccordionProps) { + const { hydrated, activeLanguageServerSetting, setActiveLanguageServerSetting } = + useAdminSettingsStore(); + + if (!hydrated) return ; + + return ( + + {configs.map(({ language, config }) => ( + + + {language.toUpperCase()} + + +
+ +
+
+
+ ))} +
+ ); +}