From dd2e246f2f02135f99d0fe1947ef83ef87773452 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Mon, 19 Jan 2026 09:23:57 +0000 Subject: [PATCH] stuff --- src/components/app/AppLayout.tsx | 2 +- src/components/organisms/NavigationMenu.tsx | 262 -------------------- 2 files changed, 1 insertion(+), 263 deletions(-) delete mode 100644 src/components/organisms/NavigationMenu.tsx diff --git a/src/components/app/AppLayout.tsx b/src/components/app/AppLayout.tsx index 1fb0ef0..ba9aab1 100644 --- a/src/components/app/AppLayout.tsx +++ b/src/components/app/AppLayout.tsx @@ -3,7 +3,7 @@ import { toast } from 'sonner' import AppDialogs from '@/components/app/AppDialogs' import AppMainPanel from '@/components/app/AppMainPanel' -import { NavigationMenu } from '@/components/organisms/NavigationMenu' +import { NavigationMenu } from '@/lib/json-ui/json-components' import { SidebarInset, SidebarProvider } from '@/components/ui/sidebar' import appStrings from '@/data/app-shortcuts.json' import useAppNavigation from '@/hooks/use-app-navigation' diff --git a/src/components/organisms/NavigationMenu.tsx b/src/components/organisms/NavigationMenu.tsx deleted file mode 100644 index b077790..0000000 --- a/src/components/organisms/NavigationMenu.tsx +++ /dev/null @@ -1,262 +0,0 @@ -import { useState } from 'react' -import { Button } from '@/components/ui/button' -import { Sidebar, SidebarContent, SidebarHeader } from '@/components/ui/sidebar' -import { ScrollArea } from '@/components/ui/scroll-area' -import { Collapsible, CollapsibleContent } from '@/components/ui/collapsible' -import { CaretDoubleDown, CaretDoubleUp, CaretDown } from '@phosphor-icons/react' -import { CollapsibleTrigger } from '@/components/ui/collapsible' -import { Badge, Flex, Text, IconWrapper } from '@/components/atoms' -import { navigationGroups, NavigationItemData } from '@/lib/navigation-config' -import { FeatureToggles } from '@/types/project' -import { useRoutePreload } from '@/hooks/use-route-preload' -import navigationMenuCopy from '@/data/navigation-menu.json' - -interface NavigationMenuProps { - activeTab: string - onTabChange: (tab: string) => void - featureToggles: FeatureToggles - errorCount?: number -} - -interface NavigationMenuControlsProps { - onExpandAll: () => void - onCollapseAll: () => void -} - -interface NavigationMenuGroupListProps { - activeTab: string - expandedGroups: Set - featureToggles: FeatureToggles - errorCount: number - onToggleGroup: (groupId: string) => void - onItemClick: (value: string) => void - onItemHover: (value: string) => void - onItemLeave: (value: string) => void -} - -function NavigationMenuControls({ - onExpandAll, - onCollapseAll, -}: NavigationMenuControlsProps) { - return ( -
- - -
- ) -} - -function NavigationMenuHeader({ - onExpandAll, - onCollapseAll, -}: NavigationMenuControlsProps) { - return ( - -

{navigationMenuCopy.labels.title}

- -
- ) -} - -function NavigationMenuGroupList({ - activeTab, - expandedGroups, - featureToggles, - errorCount, - onToggleGroup, - onItemClick, - onItemHover, - onItemLeave, -}: NavigationMenuGroupListProps) { - const isItemVisible = (item: NavigationItemData) => { - if (!item.featureKey) return true - return featureToggles[item.featureKey] - } - - const getVisibleItemsCount = (groupId: string) => { - const group = navigationGroups.find((g) => g.id === groupId) - if (!group) return 0 - return group.items.filter(isItemVisible).length - } - - const getItemBadge = (item: NavigationItemData) => { - if (item.id === 'errors') return errorCount - return item.badge - } - - return ( -
- {navigationGroups.map((group) => { - const visibleItemsCount = getVisibleItemsCount(group.id) - if (visibleItemsCount === 0) return null - - const isExpanded = expandedGroups.has(group.id) - - return ( - onToggleGroup(group.id)} - > - {/* NavigationGroupHeader - inlined */} - - -

- {group.label} -

- {visibleItemsCount} -
- -
- {group.items.map((item) => { - if (!isItemVisible(item)) return null - - const isActive = activeTab === item.value - const badge = getItemBadge(item) - - return ( -
onItemHover(item.value)} - onMouseLeave={() => onItemLeave(item.value)} - > - {/* NavigationItem - inlined */} - -
- ) - })} -
-
-
- ) - })} -
- ) -} - -export function NavigationMenu({ - activeTab, - onTabChange, - featureToggles, - errorCount = 0, -}: NavigationMenuProps) { - const [expandedGroups, setExpandedGroups] = useState>( - new Set(['overview', 'development', 'automation', 'design', 'backend', 'testing', 'tools']) - ) - - const { preloadRoute, cancelPreload } = useRoutePreload({ delay: 100 }) - - const handleItemClick = (value: string) => { - onTabChange(value) - } - - const handleItemHover = (value: string) => { - console.log(`[NAV] 🖱️ Hover detected on: ${value}`) - preloadRoute(value) - } - - const handleItemLeave = (value: string) => { - console.log(`[NAV] 👋 Hover left: ${value}`) - cancelPreload(value) - } - - const toggleGroup = (groupId: string) => { - setExpandedGroups((prev) => { - const newSet = new Set(prev) - if (newSet.has(groupId)) { - newSet.delete(groupId) - } else { - newSet.add(groupId) - } - return newSet - }) - } - - const handleExpandAll = () => { - const allGroupIds = navigationGroups - .filter((group) => - group.items.some((item) => { - if (!item.featureKey) return true - return featureToggles[item.featureKey] - }) - ) - .map((group) => group.id) - setExpandedGroups(new Set(allGroupIds)) - } - - const handleCollapseAll = () => { - setExpandedGroups(new Set()) - } - - return ( - - - - - - - - - ) -}