"use client"; import { Search, Trash2 } from "lucide-react"; import { useMemo, useState } from "react"; import { createSetting, deleteSetting, updateSetting, } from "@/actions/admin-settings"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { MANAGED_SETTING_KEYS } from "./cms-settings-config"; interface SettingRow { key: string; value: string; comment: string | null; } export function AdvancedSettingsPanel({ settings, canEdit, }: { settings: SettingRow[]; canEdit: boolean; }) { const [query, setQuery] = useState(""); const [showManaged, setShowManaged] = useState(false); const managed = useMemo(() => new Set(MANAGED_SETTING_KEYS), []); const filtered = useMemo(() => { const q = query.trim().toLowerCase(); return settings.filter((s) => { if (!showManaged && managed.has(s.key)) return false; if (!q) return true; return ( s.key.toLowerCase().includes(q) || s.value.toLowerCase().includes(q) || (s.comment ?? "").toLowerCase().includes(q) ); }); }, [settings, query, showManaged, managed]); return (

Advanced key / value

Raw website_settings rows. Prefer the grouped form above for common keys.

setQuery(e.target.value)} placeholder="Search keys, values, comments…" className="pl-9" />
{canEdit ? (
) : null} {filtered.length === 0 ? (
No matching settings
) : (
{filtered.map((s) => (
{s.key} {canEdit ? ( <>
) : ( {s.value} )}
{s.comment ? (

{s.comment}

) : null}
))}
)}
); }