diff --git a/apps/admin/src/components/page-builder/AccordionForm.tsx b/apps/admin/src/components/page-builder/AccordionForm.tsx new file mode 100644 index 0000000..4954849 --- /dev/null +++ b/apps/admin/src/components/page-builder/AccordionForm.tsx @@ -0,0 +1,140 @@ +import React from 'react'; +import { Plus, Trash2 } from 'lucide-react'; +import { type PageSection } from '@homaroma/types'; + +interface AccordionFormProps { + editingSection: Partial; + setEditingSection: React.Dispatch | null>>; + editingLang: string; + getLocalizedValue: (payload: any, field: string) => string; + updateLocalizedValue: (field: string, value: string) => void; + getLocalizedAccordionValue: (item: any, field: string) => string; + updateAccordionCategory: (catIdx: number, field: string, value: string) => void; + updateAccordionQuestion: (catIdx: number, qIdx: number, field: string, value: string) => void; +} + +export default function AccordionForm({ + editingSection, + setEditingSection, + getLocalizedValue, + updateLocalizedValue, + getLocalizedAccordionValue, + updateAccordionCategory, + updateAccordionQuestion, +}: AccordionFormProps) { + return ( +
+
+ + updateLocalizedValue('title', e.target.value)} + className="admin-input w-full" + /> +
+ +
+
+ + +
+ + {(editingSection.payload?.categories || []).map((cat: any, cIdx: number) => ( +
+
+ updateAccordionCategory(cIdx, 'icon', e.target.value)} + className="admin-input w-16 text-center text-xl" + placeholder="Emoji" + /> + updateAccordionCategory(cIdx, 'name', e.target.value)} + className="admin-input flex-1" + placeholder="Category Name" + /> + +
+ +
+ {(cat.questions || []).map((q: any, qIdx: number) => ( +
+
+
+
+ + updateAccordionQuestion(cIdx, qIdx, 'q', e.target.value)} + className="admin-input w-full text-xs" + placeholder="What is..." + /> +
+
+ +