+ {navItems.map((item, index) => {
+ const cardKey = `menu-item-${index}`;
+ const isExpanded = expandedMenuItemKeys.includes(cardKey);
+
+ return (
+
+
+
+ {resolveIcon(item.icon)}
+
+
+
+
+
+
+
+
+ {isExpanded && (
+ <>
+
+ {textInput("Label", item.label, (value) => updateItem(index, { label: value }), "Home")}
+ {textInput("ID", item.id, (value) => updateItem(index, { id: value }), "home")}
+
+ {routeInput("Page", item.page, (value) => updateItem(index, { page: value || undefined }), pageSelectOptions, "Dashboard")}
+ {routeInput("App", item.app, (value) => updateItem(index, { app: value || undefined }), appSelectOptions, "Admin")}
+ {textInput("Badge", item.badge, (value) => updateItem(index, { badge: value || undefined }), "New")}
+ {textInput("Section", item.section, (value) => updateItem(index, { section: value || undefined }), "Admin")}
+ {textInput("Description", item.description, (value) => updateItem(index, { description: value || undefined }), "Shown in panel")}
+
+
+
+
+
Sub-items
+
+
+ {(item.subItems ?? []).length === 0 ? (
+
No sub-items
+ ) : (
+
+ {(item.subItems ?? []).map((sub, subIndex) => (
+
+ {textInput("Label", sub.label, (value) => updateSubItem(index, subIndex, { label: value }), "Active")}
+ {textInput("ID", sub.id, (value) => updateSubItem(index, subIndex, { id: value }), `${item.id}-active`)}
+ {routeInput("Page", sub.page, (value) => updateSubItem(index, subIndex, { page: value || undefined }), pageSelectOptions, "ActiveUsers")}
+ {routeInput("App", sub.app, (value) => updateSubItem(index, subIndex, { app: value || undefined }), appSelectOptions, "Admin")}
+
+
+ ))}
+
+ )}
+
+ >
+ )}
+