This commit is contained in:
2026-01-19 09:25:46 +00:00
parent dd2e246f2f
commit 0210cb4d39

View File

@@ -21,7 +21,7 @@
},
"bindings": {
"children": {
"source": "labels",
"source": "menuState.labels",
"transform": "data.title"
}
}
@@ -42,7 +42,7 @@
"className": "flex-1"
},
"bindings": {
"onClick": "expandAll"
"onClick": "menuState.expandAll"
},
"children": [
{
@@ -58,7 +58,7 @@
"type": "span",
"bindings": {
"children": {
"source": "labels",
"source": "menuState.labels",
"transform": "data.expandAll"
}
}
@@ -74,7 +74,7 @@
"className": "flex-1"
},
"bindings": {
"onClick": "collapseAll"
"onClick": "menuState.collapseAll"
},
"children": [
{
@@ -90,7 +90,7 @@
"type": "span",
"bindings": {
"children": {
"source": "labels",
"source": "menuState.labels",
"transform": "data.collapseAll"
}
}
@@ -124,11 +124,16 @@
"type": "_repeat",
"bindings": {
"_items": {
"source": "groups",
"source": "menuState.groups",
"transform": "data || []"
},
"_renderItem": {
"source": ["toggleGroup", "onItemClick", "onItemHover", "onItemLeave"],
"source": [
"menuState.toggleGroup",
"menuState.onItemClick",
"menuState.onItemHover",
"menuState.onItemLeave"
],
"transform": "(group) => { const toggleGroup = data[0]; const onItemClick = data[1]; const onItemHover = data[2]; const onItemLeave = data[3]; return { _element: 'Collapsible', _key: group.id, _props: { open: group.isExpanded, onOpenChange: () => toggleGroup(group.id) }, _children: [{ _element: 'CollapsibleTrigger', _props: { className: 'w-full flex items-center gap-2 px-2 py-2 rounded-lg hover:bg-muted transition-colors group' }, _children: [{ _element: 'CaretDown', _props: { size: 16, weight: 'bold', className: `text-muted-foreground transition-transform ${group.isExpanded ? 'rotate-0' : '-rotate-90'}` } }, { _element: 'h3', _props: { className: 'flex-1 text-left text-xs font-semibold text-muted-foreground uppercase tracking-wider' }, _children: [group.label] }, { _element: 'span', _props: { className: 'text-xs text-muted-foreground' }, _children: [group.visibleCount] }] }, { _element: 'CollapsibleContent', _props: { className: 'mt-1' }, _children: [{ _element: 'div', _props: { className: 'space-y-1 pl-2' }, _children: [{ _element: '_repeat', _props: { _items: group.items || [], _renderItem: (item) => ({ _element: 'div', _key: item.id, _props: { onMouseEnter: () => onItemHover(item.value), onMouseLeave: () => onItemLeave(item.value) }, _children: [{ _element: 'NavigationItem', _props: { icon: item.icon, label: item.label, isActive: item.isActive, badge: item.badge, onClick: () => onItemClick(item.value) } }] }) } }] }] }] }; }"
}
}