+ {navItems.map((item, index) => {
+ // Staggered animation for each item
+ const itemDelay = staggerItems ? index * staggerDelay : 0;
+ const itemFrame = adjustedFrame - 15 - itemDelay;
+
+ const itemSpring = spring({
+ frame: itemFrame,
+ fps,
+ config: { damping: 15, stiffness: 90 },
+ });
+
+ const itemOpacity = interpolate(itemSpring, [0, 1], [0, 1]);
+ const itemTranslateX = interpolate(itemSpring, [0, 1], [-30, 0]);
+
+ // Badge animation (delayed)
+ const badgeSpring = spring({
+ frame: itemFrame - 5,
+ fps,
+ config: { damping: 10, stiffness: 120 },
+ });
+
+ const badgeScale = interpolate(badgeSpring, [0, 1], [0, 1]);
+
+ const indentPadding = (item.indentLevel || 0) * (padding * 0.8);
+
+ // Section header styling
+ if (item.isSection) {
+ return (
+
+ {item.label}
+
+ );
+ }
+
+ return (
+
+ {/* Icon */}
+ {item.icon && (
+
+
+
+ )}
+
+ {/* Label */}
+
+ {item.label}
+
+
+ {/* Badge */}
+ {item.badgeCount !== undefined && (
+
+ {item.badgeCount}
+
+ )}
+
+ );
+ })}
+