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()}
+
+
+
+
+
+
+
+ ))}
+
+ );
+}