diff --git a/apps/website/app/layout.tsx b/apps/website/app/layout.tsx index a22de4009..c882b6c53 100644 --- a/apps/website/app/layout.tsx +++ b/apps/website/app/layout.tsx @@ -6,7 +6,7 @@ import React from 'react'; import './globals.css'; import { AppWrapper } from '@/components/AppWrapper'; import { Header } from '@/ui/Header'; -import { HeaderContent } from '@/ui/HeaderContent'; +import { HeaderContent } from '@/components/layout/HeaderContent'; import { MainContent } from '@/ui/MainContent'; export const dynamic = 'force-dynamic'; diff --git a/apps/website/app/leagues/LeaguesClient.tsx b/apps/website/app/leagues/LeaguesClient.tsx index 44ccdce84..90b1569dc 100644 --- a/apps/website/app/leagues/LeaguesClient.tsx +++ b/apps/website/app/leagues/LeaguesClient.tsx @@ -18,7 +18,7 @@ import { Target, Timer, } from 'lucide-react'; -import { LeagueCard } from '@/ui/LeagueCardWrapper'; +import { LeagueCard } from '@/components/leagues/LeagueCardWrapper'; import { Button } from '@/ui/Button'; import { Card } from '@/ui/Card'; import { Input } from '@/ui/Input'; diff --git a/apps/website/app/leagues/[id]/stewarding/StewardingTemplate.tsx b/apps/website/app/leagues/[id]/stewarding/StewardingTemplate.tsx index 77d0100d1..8e02db512 100644 --- a/apps/website/app/leagues/[id]/stewarding/StewardingTemplate.tsx +++ b/apps/website/app/leagues/[id]/stewarding/StewardingTemplate.tsx @@ -19,7 +19,7 @@ import { } from 'lucide-react'; import Link from 'next/link'; import { useMemo, useState } from 'react'; -import { PendingProtestsList } from '@/ui/PendingProtestsList'; +import { PendingProtestsList } from '@/components/leagues/PendingProtestsList'; import { PenaltyHistoryList } from '@/components/leagues/PenaltyHistoryList'; interface StewardingData { diff --git a/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx b/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx index f2de7bc85..40f014c7c 100644 --- a/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx +++ b/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx @@ -37,7 +37,7 @@ import { useMemo, useState } from 'react'; // Shared state components import { StateContainer } from '@/components/shared/state/StateContainer'; -import { LoadingWrapper } from '@/ui/LoadingWrapper'; +import { LoadingWrapper } from '@/components/shared/state/LoadingWrapper'; import { useLeagueAdminStatus } from "@/lib/hooks/league/useLeagueAdminStatus"; import { useProtestDetail } from "@/lib/hooks/league/useProtestDetail"; diff --git a/apps/website/app/sponsor/signup/page.tsx b/apps/website/app/sponsor/signup/page.tsx index c8a91b798..ada21f254 100644 --- a/apps/website/app/sponsor/signup/page.tsx +++ b/apps/website/app/sponsor/signup/page.tsx @@ -5,7 +5,7 @@ import { motion, useReducedMotion } from 'framer-motion'; import { Card } from '@/ui/Card'; import { Button } from '@/ui/Button'; import { Input } from '@/ui/Input'; -import { SponsorHero } from '@/ui/SponsorHero'; +import { SponsorHero } from '@/components/sponsors/SponsorHero'; import { SponsorWorkflowMockup } from '@/components/sponsors/SponsorWorkflowMockup'; import { SponsorBenefitCard } from '@/components/sponsors/SponsorBenefitCard'; import { siteConfig } from '@/lib/siteConfig'; diff --git a/apps/website/ui/AchievementGrid.tsx b/apps/website/components/achievements/AchievementGrid.tsx similarity index 100% rename from apps/website/ui/AchievementGrid.tsx rename to apps/website/components/achievements/AchievementGrid.tsx diff --git a/apps/website/components/auth/AuthWorkflowMockup.tsx b/apps/website/components/auth/AuthWorkflowMockup.tsx index 6f5654b4c..b0aacdbfe 100644 --- a/apps/website/components/auth/AuthWorkflowMockup.tsx +++ b/apps/website/components/auth/AuthWorkflowMockup.tsx @@ -8,7 +8,7 @@ import { Trophy, Car, } from 'lucide-react'; -import { WorkflowMockup, WorkflowStep } from '@/ui/WorkflowMockup'; +import { WorkflowMockup, WorkflowStep } from '@/components/mockups/WorkflowMockup'; const WORKFLOW_STEPS: WorkflowStep[] = [ { diff --git a/apps/website/ui/DashboardHeroWrapper.tsx b/apps/website/components/dashboard/DashboardHeroWrapper.tsx similarity index 100% rename from apps/website/ui/DashboardHeroWrapper.tsx rename to apps/website/components/dashboard/DashboardHeroWrapper.tsx diff --git a/apps/website/ui/QuickActions.tsx b/apps/website/components/dashboard/QuickActions.tsx similarity index 83% rename from apps/website/ui/QuickActions.tsx rename to apps/website/components/dashboard/QuickActions.tsx index 9d76fd8ff..54a198cbc 100644 --- a/apps/website/ui/QuickActions.tsx +++ b/apps/website/components/dashboard/QuickActions.tsx @@ -2,9 +2,9 @@ import { routes } from '@/lib/routing/RouteConfig'; import { Trophy, Users } from 'lucide-react'; -import { Box } from './Box'; -import { Heading } from './Heading'; -import { QuickActionItem } from './QuickActionItem'; +import { Box } from '@/ui/Box'; +import { Heading } from '@/ui/Heading'; +import { QuickActionItem } from '@/ui/QuickActionItem'; export function QuickActions() { return ( diff --git a/apps/website/ui/DebugModeToggle.tsx b/apps/website/components/dev/DebugModeToggle.tsx similarity index 98% rename from apps/website/ui/DebugModeToggle.tsx rename to apps/website/components/dev/DebugModeToggle.tsx index 847417120..52f02678f 100644 --- a/apps/website/ui/DebugModeToggle.tsx +++ b/apps/website/components/dev/DebugModeToggle.tsx @@ -6,11 +6,11 @@ import type { GlobalErrorHandler } from '@/lib/infrastructure/GlobalErrorHandler import { getGlobalErrorHandler } from '@/lib/infrastructure/GlobalErrorHandler'; import { Bug, Shield, X } from 'lucide-react'; import { useCallback, useEffect, useState } from 'react'; -import { Box } from './Box'; -import { Button } from './Button'; -import { Icon } from './Icon'; -import { Stack } from './Stack'; -import { Text } from './Text'; +import { Box } from '@/ui/Box'; +import { Button } from '@/ui/Button'; +import { Icon } from '@/ui/Icon'; +import { Stack } from '@/ui/Stack'; +import { Text } from '@/ui/Text'; // Extend Window interface for debug globals declare global { diff --git a/apps/website/ui/DriverCard.tsx b/apps/website/components/drivers/DriverCard.tsx similarity index 95% rename from apps/website/ui/DriverCard.tsx rename to apps/website/components/drivers/DriverCard.tsx index 2fbdf464d..fa981f88a 100644 --- a/apps/website/ui/DriverCard.tsx +++ b/apps/website/components/drivers/DriverCard.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Card } from '@/ui/Card'; import { RankBadge } from '@/ui/RankBadge'; -import { DriverIdentity } from '@/ui/DriverIdentity'; +import { DriverIdentity } from '@/components/drivers/DriverIdentity'; import { DriverViewModel } from '@/lib/view-models/DriverViewModel'; import { Stack } from '@/ui/Stack'; import { DriverStats } from '@/ui/DriverStats'; diff --git a/apps/website/ui/DriverEntryRow.tsx b/apps/website/components/drivers/DriverEntryRow.tsx similarity index 92% rename from apps/website/ui/DriverEntryRow.tsx rename to apps/website/components/drivers/DriverEntryRow.tsx index fead0fdb4..62bc60cf1 100644 --- a/apps/website/ui/DriverEntryRow.tsx +++ b/apps/website/components/drivers/DriverEntryRow.tsx @@ -2,12 +2,12 @@ import { CountryFlagDisplay } from '@/lib/display-objects/CountryFlagDisplay'; import { Zap } from 'lucide-react'; -import { Badge } from './Badge'; -import { Box } from './Box'; -import { Icon } from './Icon'; -import { Image } from './Image'; -import { Stack } from './Stack'; -import { Text } from './Text'; +import { Badge } from '@/ui/Badge'; +import { Box } from '@/ui/Box'; +import { Icon } from '@/ui/Icon'; +import { Image } from '@/ui/Image'; +import { Stack } from '@/ui/Stack'; +import { Text } from '@/ui/Text'; interface DriverEntryRowProps { index: number; diff --git a/apps/website/ui/DriverIdentity.tsx b/apps/website/components/drivers/DriverIdentity.tsx similarity index 88% rename from apps/website/ui/DriverIdentity.tsx rename to apps/website/components/drivers/DriverIdentity.tsx index b918ac041..49aeb4d83 100644 --- a/apps/website/ui/DriverIdentity.tsx +++ b/apps/website/components/drivers/DriverIdentity.tsx @@ -1,9 +1,9 @@ import Link from 'next/link'; -import Image from 'next/image'; -import { PlaceholderImage } from './PlaceholderImage'; -import { Box } from './Box'; -import { Text } from './Text'; -import { Badge } from './Badge'; +import { PlaceholderImage } from '@/ui/PlaceholderImage'; +import { Box } from '@/ui/Box'; +import { Text } from '@/ui/Text'; +import { Badge } from '@/ui/Badge'; +import { Image } from '@/ui/Image'; export interface DriverIdentityProps { driver: { @@ -43,7 +43,9 @@ export function DriverIdentity(props: DriverIdentityProps) { alt={driver.name} width={avatarSize} height={avatarSize} - className="w-full h-full object-cover" + fullWidth + fullHeight + objectFit="cover" /> ) : ( diff --git a/apps/website/components/drivers/DriverProfile.tsx b/apps/website/components/drivers/DriverProfile.tsx index 5d34e9417..f02da4a81 100644 --- a/apps/website/components/drivers/DriverProfile.tsx +++ b/apps/website/components/drivers/DriverProfile.tsx @@ -7,10 +7,10 @@ import { Text } from '@/ui/Text'; import { Heading } from '@/ui/Heading'; import { Stack } from '@/ui/Stack'; import { StatCard } from '@/ui/StatCard'; -import { ProfileHeader } from '@/ui/ProfileHeader'; +import { ProfileHeader } from '@/components/drivers/ProfileHeader'; import { ProfileStats } from './ProfileStats'; import { CareerHighlights } from '@/ui/CareerHighlights'; -import { DriverRankings } from '@/ui/DriverRankings'; +import { DriverRankings } from '@/components/drivers/DriverRankings'; import { PerformanceMetrics } from '@/ui/PerformanceMetrics'; import { useDriverProfile } from "@/hooks/driver/useDriverProfile"; diff --git a/apps/website/ui/DriverRankings.tsx b/apps/website/components/drivers/DriverRankings.tsx similarity index 86% rename from apps/website/ui/DriverRankings.tsx rename to apps/website/components/drivers/DriverRankings.tsx index 16bcead10..acc198ce0 100644 --- a/apps/website/ui/DriverRankings.tsx +++ b/apps/website/components/drivers/DriverRankings.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { Card } from '@/ui/Card'; import { Heading } from '@/ui/Heading'; -import { RankingListItem } from '@/ui/RankingListItem'; -import { RankingList } from '@/ui/RankingList'; -import { MinimalEmptyState } from '@/ui/EmptyState'; +import { RankingListItem } from '@/components/leaderboards/RankingListItem'; +import { RankingList } from '@/components/leaderboards/RankingList'; +import { MinimalEmptyState } from '@/components/shared/state/EmptyState'; export interface DriverRanking { type: 'overall' | 'league'; diff --git a/apps/website/ui/DriverSummaryPillWrapper.tsx b/apps/website/components/drivers/DriverSummaryPillWrapper.tsx similarity index 100% rename from apps/website/ui/DriverSummaryPillWrapper.tsx rename to apps/website/components/drivers/DriverSummaryPillWrapper.tsx diff --git a/apps/website/ui/FeaturedDriverCard.tsx b/apps/website/components/drivers/FeaturedDriverCard.tsx similarity index 100% rename from apps/website/ui/FeaturedDriverCard.tsx rename to apps/website/components/drivers/FeaturedDriverCard.tsx diff --git a/apps/website/ui/ProfileHeader.tsx b/apps/website/components/drivers/ProfileHeader.tsx similarity index 100% rename from apps/website/ui/ProfileHeader.tsx rename to apps/website/components/drivers/ProfileHeader.tsx diff --git a/apps/website/ui/ProfileHero.tsx b/apps/website/components/drivers/ProfileHero.tsx similarity index 98% rename from apps/website/ui/ProfileHero.tsx rename to apps/website/components/drivers/ProfileHero.tsx index cca864612..ffcef5320 100644 --- a/apps/website/ui/ProfileHero.tsx +++ b/apps/website/components/drivers/ProfileHero.tsx @@ -1,6 +1,7 @@ import { mediaConfig } from '@/lib/config/mediaConfig'; +import { CountryFlagDisplay } from '@/lib/display-objects/CountryFlagDisplay'; import { Box } from '@/ui/Box'; import { Button } from '@/ui/Button'; import { Heading } from '@/ui/Heading'; diff --git a/apps/website/components/drivers/ProfileRaceHistory.tsx b/apps/website/components/drivers/ProfileRaceHistory.tsx index bcf9d1761..557afb09d 100644 --- a/apps/website/components/drivers/ProfileRaceHistory.tsx +++ b/apps/website/components/drivers/ProfileRaceHistory.tsx @@ -6,8 +6,8 @@ import { Button } from '@/ui/Button'; import { Box } from '@/ui/Box'; import { Text } from '@/ui/Text'; import { Stack } from '@/ui/Stack'; -import { LoadingWrapper } from '@/ui/LoadingWrapper'; -import { EmptyState } from '@/ui/EmptyState'; +import { LoadingWrapper } from '@/components/shared/state/LoadingWrapper'; +import { EmptyState } from '@/components/shared/state/EmptyState'; import { Pagination } from '@/ui/Pagination'; import { Trophy } from 'lucide-react'; diff --git a/apps/website/components/errors/ApiErrorBoundary.tsx b/apps/website/components/errors/ApiErrorBoundary.tsx index 3efc70380..d942d27aa 100644 --- a/apps/website/components/errors/ApiErrorBoundary.tsx +++ b/apps/website/components/errors/ApiErrorBoundary.tsx @@ -3,7 +3,7 @@ import React, { Component, ReactNode, useState } from 'react'; import { ApiError } from '@/lib/api/base/ApiError'; import { connectionMonitor } from '@/lib/api/base/ApiConnectionMonitor'; -import { ErrorDisplay } from './ErrorDisplay'; +import { ErrorDisplay } from '@/components/shared/state/ErrorDisplay'; import { DevErrorPanel } from './DevErrorPanel'; interface Props { diff --git a/apps/website/components/errors/EnhancedErrorBoundary.tsx b/apps/website/components/errors/EnhancedErrorBoundary.tsx index 601f05a67..a38f51b67 100644 --- a/apps/website/components/errors/EnhancedErrorBoundary.tsx +++ b/apps/website/components/errors/EnhancedErrorBoundary.tsx @@ -4,7 +4,7 @@ import React, { Component, ReactNode, ErrorInfo, useState, version } from 'react import { ApiError } from '@/lib/api/base/ApiError'; import { getGlobalErrorHandler } from '@/lib/infrastructure/GlobalErrorHandler'; import { DevErrorPanel } from './DevErrorPanel'; -import { ErrorDisplay } from './ErrorDisplay'; +import { ErrorDisplay } from '@/components/shared/state/ErrorDisplay'; interface Props { children: ReactNode; diff --git a/apps/website/components/errors/ErrorDisplay.tsx b/apps/website/components/errors/ErrorDisplay.tsx index 9baa4d8dc..4349fed1d 100644 --- a/apps/website/components/errors/ErrorDisplay.tsx +++ b/apps/website/components/errors/ErrorDisplay.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { ApiError } from '@/lib/api/base/ApiError'; -import { ErrorDisplay as UiErrorDisplay } from '@/ui/ErrorDisplay'; +import { ErrorDisplay as UiErrorDisplay } from '@/components/shared/state/ErrorDisplay'; interface ErrorDisplayProps { error: ApiError; diff --git a/apps/website/ui/ActivityFeed.tsx b/apps/website/components/feed/ActivityFeed.tsx similarity index 89% rename from apps/website/ui/ActivityFeed.tsx rename to apps/website/components/feed/ActivityFeed.tsx index 9a48e8fb5..9c33cb0ff 100644 --- a/apps/website/ui/ActivityFeed.tsx +++ b/apps/website/components/feed/ActivityFeed.tsx @@ -4,8 +4,8 @@ import { Card } from '@/ui/Card'; import { Heading } from '@/ui/Heading'; import { ActivityItem } from '@/ui/ActivityItem'; import { Icon } from '@/ui/Icon'; -import { ActivityFeedList } from '@/ui/ActivityFeedList'; -import { MinimalEmptyState } from '@/ui/EmptyState'; +import { ActivityFeedList } from '@/components/feed/ActivityFeedList'; +import { MinimalEmptyState } from '@/components/shared/state/EmptyState'; interface FeedItem { id: string; diff --git a/apps/website/ui/ActivityFeedItem.tsx b/apps/website/components/feed/ActivityFeedItem.tsx similarity index 89% rename from apps/website/ui/ActivityFeedItem.tsx rename to apps/website/components/feed/ActivityFeedItem.tsx index 4a0866210..a64b9acf6 100644 --- a/apps/website/ui/ActivityFeedItem.tsx +++ b/apps/website/components/feed/ActivityFeedItem.tsx @@ -1,8 +1,9 @@ import { ReactNode } from 'react'; -import { Box } from './Box'; -import { Surface } from './Surface'; +import { Box } from '@/ui/Box'; +import { Surface } from '@/ui/Surface'; +import { Text } from '@/ui/Text'; interface ActivityFeedItemProps { icon: ReactNode; diff --git a/apps/website/ui/ActivityFeedList.tsx b/apps/website/components/feed/ActivityFeedList.tsx similarity index 87% rename from apps/website/ui/ActivityFeedList.tsx rename to apps/website/components/feed/ActivityFeedList.tsx index f2c969919..7e9b7ca9c 100644 --- a/apps/website/ui/ActivityFeedList.tsx +++ b/apps/website/components/feed/ActivityFeedList.tsx @@ -1,5 +1,5 @@ import React, { ReactNode } from 'react'; -import { Stack } from './Stack'; +import { Stack } from '@/ui/Stack'; interface ActivityFeedListProps { children: ReactNode; diff --git a/apps/website/ui/FeedLayout.tsx b/apps/website/components/feed/FeedLayout.tsx similarity index 87% rename from apps/website/ui/FeedLayout.tsx rename to apps/website/components/feed/FeedLayout.tsx index f960fc166..b1d53e2c3 100644 --- a/apps/website/ui/FeedLayout.tsx +++ b/apps/website/components/feed/FeedLayout.tsx @@ -1,7 +1,7 @@ import { Card } from '@/ui/Card'; -import { FeedList } from '@/ui/FeedList'; -import { UpcomingRacesSidebar } from '@/ui/UpcomingRacesSidebar'; -import { LatestResultsSidebar } from '@/ui/LatestResultsSidebar'; +import { FeedList } from '@/components/feed/FeedList'; +import { UpcomingRacesSidebar } from '@/components/races/UpcomingRacesSidebar'; +import { LatestResultsSidebar } from '@/components/races/LatestResultsSidebar'; interface FeedItemData { id: string; diff --git a/apps/website/ui/FeedList.tsx b/apps/website/components/feed/FeedList.tsx similarity index 100% rename from apps/website/ui/FeedList.tsx rename to apps/website/components/feed/FeedList.tsx diff --git a/apps/website/ui/RecentActivity.tsx b/apps/website/components/feed/RecentActivity.tsx similarity index 100% rename from apps/website/ui/RecentActivity.tsx rename to apps/website/components/feed/RecentActivity.tsx diff --git a/apps/website/ui/AlternatingSection.tsx b/apps/website/components/landing/AlternatingSection.tsx similarity index 100% rename from apps/website/ui/AlternatingSection.tsx rename to apps/website/components/landing/AlternatingSection.tsx diff --git a/apps/website/ui/BenefitCard.tsx b/apps/website/components/landing/BenefitCard.tsx similarity index 94% rename from apps/website/ui/BenefitCard.tsx rename to apps/website/components/landing/BenefitCard.tsx index 9fa0982cf..ad0dbf82b 100644 --- a/apps/website/ui/BenefitCard.tsx +++ b/apps/website/components/landing/BenefitCard.tsx @@ -3,11 +3,11 @@ import { motion, useReducedMotion } from 'framer-motion'; import { LucideIcon } from 'lucide-react'; import { useEffect, useState } from 'react'; -import { Box } from './Box'; -import { Heading } from './Heading'; -import { Icon } from './Icon'; -import { Surface } from './Surface'; -import { Text } from './Text'; +import { Box } from '@/ui/Box'; +import { Heading } from '@/ui/Heading'; +import { Icon } from '@/ui/Icon'; +import { Surface } from '@/ui/Surface'; +import { Text } from '@/ui/Text'; interface BenefitCardProps { icon: LucideIcon; diff --git a/apps/website/ui/FeatureGrid.tsx b/apps/website/components/landing/FeatureGrid.tsx similarity index 97% rename from apps/website/ui/FeatureGrid.tsx rename to apps/website/components/landing/FeatureGrid.tsx index baabd1a26..71d69272f 100644 --- a/apps/website/ui/FeatureGrid.tsx +++ b/apps/website/components/landing/FeatureGrid.tsx @@ -1,12 +1,12 @@ 'use client'; -import { useRef, useState, useEffect } from 'react'; import { Section } from '@/ui/Section'; import { Container } from '@/ui/Container'; import { Heading } from '@/ui/Heading'; -import { MockupStack } from '@/ui/MockupStack'; +import { MockupStack } from '@/components/mockups/MockupStack'; import { Box } from '@/ui/Box'; import { Text } from '@/ui/Text'; +import { Stack } from '@/ui/Stack'; import { LeagueHomeMockup } from '@/components/mockups/LeagueHomeMockup'; import { StandingsTableMockup } from '@/components/mockups/StandingsTableMockup'; import { TeamCompetitionMockup } from '@/components/mockups/TeamCompetitionMockup'; diff --git a/apps/website/ui/LandingHero.tsx b/apps/website/components/landing/LandingHero.tsx similarity index 99% rename from apps/website/ui/LandingHero.tsx rename to apps/website/components/landing/LandingHero.tsx index 305515d27..b9648c8a4 100644 --- a/apps/website/ui/LandingHero.tsx +++ b/apps/website/components/landing/LandingHero.tsx @@ -1,5 +1,5 @@ - +import { useRef } from 'react'; import { useParallax } from '@/hooks/useScrollProgress'; import { Box } from '@/ui/Box'; import { Button } from '@/ui/Button'; @@ -126,7 +126,7 @@ export function LandingHero() {