website refactor
This commit is contained in:
@@ -1,29 +1,28 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { AdminDashboardViewData } from '@/lib/view-data/AdminDashboardViewData';
|
||||
import { AdminDangerZonePanel } from '@/components/admin/AdminDangerZonePanel';
|
||||
import { AdminHeaderPanel } from '@/components/admin/AdminHeaderPanel';
|
||||
import { AdminSectionHeader } from '@/components/admin/AdminSectionHeader';
|
||||
import { AdminStatsPanel } from '@/components/admin/AdminStatsPanel';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AdminDashboardViewData } from '@/lib/view-data/AdminDashboardViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { QuickActionLink } from '@/ui/QuickActionLink';
|
||||
import { StatusBadge } from '@/ui/StatusBadge';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { AdminHeaderPanel } from '@/components/admin/AdminHeaderPanel';
|
||||
import { AdminStatsPanel } from '@/components/admin/AdminStatsPanel';
|
||||
import { AdminSectionHeader } from '@/components/admin/AdminSectionHeader';
|
||||
import { AdminDangerZonePanel } from '@/components/admin/AdminDangerZonePanel';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { QuickActionLink } from '@/ui/QuickActionLink';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { StatusBadge } from '@/ui/StatusBadge';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Users,
|
||||
Shield,
|
||||
Activity,
|
||||
Clock,
|
||||
RefreshCw,
|
||||
ArrowRight
|
||||
Activity,
|
||||
ArrowRight,
|
||||
Clock,
|
||||
RefreshCw,
|
||||
Shield,
|
||||
Users
|
||||
} from 'lucide-react';
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { RefreshCw, Users, ShieldAlert } from 'lucide-react';
|
||||
import { AdminHeaderPanel } from '@/components/admin/AdminHeaderPanel';
|
||||
import { AdminStatsPanel } from '@/components/admin/AdminStatsPanel';
|
||||
import { UserFilters } from '@/components/admin/UserFilters';
|
||||
import { AdminUsersTable } from '@/components/admin/AdminUsersTable';
|
||||
import { BulkActionBar } from '@/components/admin/BulkActionBar';
|
||||
import { InlineNotice } from '@/components/shared/ux/InlineNotice';
|
||||
import { AdminDataTable } from '@/components/admin/AdminDataTable';
|
||||
import { AdminEmptyState } from '@/components/admin/AdminEmptyState';
|
||||
import { AdminHeaderPanel } from '@/components/admin/AdminHeaderPanel';
|
||||
import { AdminStatsPanel } from '@/components/admin/AdminStatsPanel';
|
||||
import { AdminUsersTable } from '@/components/admin/AdminUsersTable';
|
||||
import { BulkActionBar } from '@/components/admin/BulkActionBar';
|
||||
import { UserFilters } from '@/components/admin/UserFilters';
|
||||
import { InlineNotice } from '@/components/shared/ux/InlineNotice';
|
||||
import { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { RefreshCw, ShieldAlert, Users } from 'lucide-react';
|
||||
|
||||
interface AdminUsersTemplateProps {
|
||||
viewData: AdminUsersViewData;
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import type { DashboardViewData } from '@/lib/view-data/DashboardViewData';
|
||||
import { DashboardShell } from '@/components/dashboard/DashboardShell';
|
||||
import { DashboardRail } from '@/components/dashboard/DashboardRail';
|
||||
import { DashboardControlBar } from '@/components/dashboard/DashboardControlBar';
|
||||
import { TelemetryPanel } from '@/components/dashboard/TelemetryPanel';
|
||||
import { DashboardKpiRow } from '@/components/dashboard/DashboardKpiRow';
|
||||
import { DashboardRail } from '@/components/dashboard/DashboardRail';
|
||||
import { DashboardShell } from '@/components/dashboard/DashboardShell';
|
||||
import { RecentActivityTable, type ActivityItem } from '@/components/dashboard/RecentActivityTable';
|
||||
import { LayoutDashboard, Trophy, Calendar, Users, Settings, Bell, Search } from 'lucide-react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { TelemetryPanel } from '@/components/dashboard/TelemetryPanel';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Box } from '@/ui/Box';
|
||||
import type { DashboardViewData } from '@/lib/view-data/DashboardViewData';
|
||||
import { Avatar } from '@/ui/Avatar';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { IconButton } from '@/ui/IconButton';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { IconButton } from '@/ui/IconButton';
|
||||
import { Avatar } from '@/ui/Avatar';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Bell, Calendar, LayoutDashboard, Search, Settings, Trophy, Users } from 'lucide-react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
|
||||
interface DashboardTemplateProps {
|
||||
viewData: DashboardViewData;
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { ArrowLeft } from 'lucide-react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Breadcrumbs } from '@/ui/Breadcrumbs';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AchievementGrid } from '@/components/achievements/AchievementGrid';
|
||||
import { RatingBreakdown } from '@/components/drivers/RatingBreakdown';
|
||||
import { FriendsPreview } from '@/components/social/FriendsPreview';
|
||||
import { TeamMembershipGrid } from '@/components/teams/TeamMembershipGrid';
|
||||
import { RatingBreakdown } from '@/components/drivers/RatingBreakdown';
|
||||
import { Breadcrumbs } from '@/ui/Breadcrumbs';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { ArrowLeft } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
import { DriverProfileHeader } from '@/components/drivers/DriverProfileHeader';
|
||||
import { DriverStatsPanel } from '@/components/drivers/DriverStatsPanel';
|
||||
import { DriverProfileTabs, type ProfileTab } from '@/components/drivers/DriverProfileTabs';
|
||||
import { DriverPerformanceOverview } from '@/components/drivers/DriverPerformanceOverview';
|
||||
import { DriverRacingProfile } from '@/components/drivers/DriverRacingProfile';
|
||||
import { CareerStats } from '@/components/drivers/CareerStats';
|
||||
import { DriverPerformanceOverview } from '@/components/drivers/DriverPerformanceOverview';
|
||||
import { DriverProfileHeader } from '@/components/drivers/DriverProfileHeader';
|
||||
import { DriverProfileTabs, type ProfileTab } from '@/components/drivers/DriverProfileTabs';
|
||||
import { DriverRacingProfile } from '@/components/drivers/DriverRacingProfile';
|
||||
import { DriverStatsPanel } from '@/components/drivers/DriverStatsPanel';
|
||||
|
||||
import type { DriverProfileViewData } from '@/lib/types/view-data/DriverProfileViewData';
|
||||
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Search } from 'lucide-react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { DriversDirectoryHeader } from '@/components/drivers/DriversDirectoryHeader';
|
||||
import { DriverSearchBar } from '@/components/drivers/DriverSearchBar';
|
||||
import { DriverTable } from '@/components/drivers/DriverTable';
|
||||
import { DriverTableRow } from '@/components/drivers/DriverTableRow';
|
||||
import { EmptyState } from '@/components/shared/state/EmptyState';
|
||||
import type { DriversViewData } from '@/lib/types/view-data/DriversViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Search } from 'lucide-react';
|
||||
|
||||
interface DriversTemplateProps {
|
||||
viewData: DriversViewData | null;
|
||||
|
||||
@@ -1,27 +1,26 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { HomeFeatureDescription } from '@/components/home/HomeFeatureDescription';
|
||||
import { HomeFeatureSection } from '@/components/home/HomeFeatureSection';
|
||||
import { HomeFooterCTA } from '@/components/home/HomeFooterCTA';
|
||||
import { HomeHeader } from '@/components/home/HomeHeader';
|
||||
import { HomeStatsStrip } from '@/components/home/HomeStatsStrip';
|
||||
import { QuickLinksPanel } from '@/components/home/QuickLinksPanel';
|
||||
import { HomeFeatureSection } from '@/components/home/HomeFeatureSection';
|
||||
import { RecentRacesPanel } from '@/components/home/RecentRacesPanel';
|
||||
import { LeagueSummaryPanel } from '@/components/home/LeagueSummaryPanel';
|
||||
import { QuickLinksPanel } from '@/components/home/QuickLinksPanel';
|
||||
import { RecentRacesPanel } from '@/components/home/RecentRacesPanel';
|
||||
import { TeamSummaryPanel } from '@/components/home/TeamSummaryPanel';
|
||||
import { HomeFeatureDescription } from '@/components/home/HomeFeatureDescription';
|
||||
import { FAQ } from '@/components/landing/FAQ';
|
||||
import { HomeFooterCTA } from '@/components/home/HomeFooterCTA';
|
||||
import { ModeGuard } from '@/components/shared/ModeGuard';
|
||||
import { CareerProgressionMockup } from '@/components/mockups/CareerProgressionMockup';
|
||||
import { RaceHistoryMockup } from '@/components/mockups/RaceHistoryMockup';
|
||||
import { CompanionAutomationMockup } from '@/components/mockups/CompanionAutomationMockup';
|
||||
import { RaceHistoryMockup } from '@/components/mockups/RaceHistoryMockup';
|
||||
import { SimPlatformMockup } from '@/components/mockups/SimPlatformMockup';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { ModeGuard } from '@/components/shared/ModeGuard';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { Section } from '@/ui/Section';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
export interface HomeViewData {
|
||||
isAlpha: boolean;
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Trophy, Users } from 'lucide-react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { PageHero } from '@/ui/PageHero';
|
||||
import { DriverLeaderboardPreview } from '@/components/leaderboards/DriverLeaderboardPreview';
|
||||
import { TeamLeaderboardPreview } from '@/components/teams/TeamLeaderboardPreviewWrapper';
|
||||
import type { LeaderboardsViewData } from '@/lib/view-data/LeaderboardsViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { PageHero } from '@/ui/PageHero';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { Trophy, Users } from 'lucide-react';
|
||||
|
||||
interface LeaderboardsTemplateProps {
|
||||
viewData: LeaderboardsViewData;
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Select } from '@/ui/Select';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { InlineNotice } from '@/components/shared/ux/InlineNotice';
|
||||
import type { LeagueAdminScheduleViewData } from '@/lib/view-data/LeagueAdminScheduleViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Select } from '@/ui/Select';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
interface LeagueAdminScheduleTemplateProps {
|
||||
viewData: LeagueAdminScheduleViewData;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { LeagueHeaderPanel } from '@/components/leagues/LeagueHeaderPanel';
|
||||
import { LeagueNavTabs } from '@/components/leagues/LeagueNavTabs';
|
||||
import type { LeagueDetailViewData } from '@/lib/view-data/LeagueDetailViewData';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { ChevronRight } from 'lucide-react';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import React from 'react';
|
||||
|
||||
interface Tab {
|
||||
label: string;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import type { LeagueDetailViewData } from '@/lib/view-data/LeagueDetailViewData';
|
||||
import { Trophy, Users, Calendar, Shield, type LucideIcon } from 'lucide-react';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Calendar, Shield, Trophy, Users, type LucideIcon } from 'lucide-react';
|
||||
|
||||
interface LeagueOverviewTemplateProps {
|
||||
viewData: LeagueDetailViewData;
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { PointsTable } from '@/components/races/PointsTable';
|
||||
import { RulebookTabs, type RulebookSection } from '@/components/leagues/RulebookTabs';
|
||||
import { PointsTable } from '@/components/races/PointsTable';
|
||||
import type { LeagueRulebookViewData } from '@/lib/view-data/LeagueRulebookViewData';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Book, Shield, Scale, AlertTriangle, Info, Clock, type LucideIcon } from 'lucide-react';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Table, TableHead, TableBody, TableRow, TableHeader, TableCell } from '@/ui/Table';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/ui/Table';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertTriangle, Book, Clock, Info, Scale, Shield, type LucideIcon } from 'lucide-react';
|
||||
|
||||
interface LeagueRulebookTemplateProps {
|
||||
viewData: LeagueRulebookViewData;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { LeagueSchedulePanel } from '@/components/leagues/LeagueSchedulePanel';
|
||||
import type { LeagueScheduleViewData } from '@/lib/view-data/leagues/LeagueScheduleViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
interface LeagueScheduleTemplateProps {
|
||||
viewData: LeagueScheduleViewData;
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Settings, Users, Trophy, Shield, Clock, type LucideIcon } from 'lucide-react';
|
||||
import type { LeagueSettingsViewData } from '@/lib/view-data/leagues/LeagueSettingsViewData';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Clock, Settings, Shield, Trophy, Users, type LucideIcon } from 'lucide-react';
|
||||
|
||||
interface LeagueSettingsTemplateProps {
|
||||
viewData: LeagueSettingsViewData;
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Building, Clock, Palette } from 'lucide-react';
|
||||
import type { LeagueSponsorshipsViewData } from '@/lib/view-data/leagues/LeagueSponsorshipsViewData';
|
||||
import { SponsorshipSlotCard } from '@/components/leagues/SponsorshipSlotCard';
|
||||
import { SponsorshipRequestCard } from '@/components/leagues/SponsorshipRequestCard';
|
||||
import { LeagueDecalPlacementEditor } from '@/components/leagues/LeagueDecalPlacementEditor';
|
||||
import { SponsorshipRequestCard } from '@/components/leagues/SponsorshipRequestCard';
|
||||
import { SponsorshipSlotCard } from '@/components/leagues/SponsorshipSlotCard';
|
||||
import type { LeagueSponsorshipsViewData } from '@/lib/view-data/leagues/LeagueSponsorshipsViewData';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Building, Clock, Palette } from 'lucide-react';
|
||||
|
||||
interface LeagueSponsorshipsTemplateProps {
|
||||
viewData: LeagueSponsorshipsViewData;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { LeagueStandingsTable } from '@/components/leagues/LeagueStandingsTable';
|
||||
import type { LeagueStandingsViewData } from '@/lib/view-data/LeagueStandingsViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
interface LeagueStandingsTemplateProps {
|
||||
viewData: LeagueStandingsViewData;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { MediaGallery } from '@/components/media/MediaGallery';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { MediaViewData } from '@/lib/view-data/MediaViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
|
||||
export function MediaTemplate(viewData: MediaViewData) {
|
||||
const { assets, categories, title, description } = viewData;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import type { ReactNode } from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { ProfileSidebarTemplate } from '@/templates/ProfileSidebarTemplate';
|
||||
import { ProfileLayoutViewData } from '@/lib/view-data/ProfileLayoutViewData';
|
||||
import { ProfileSidebarTemplate } from '@/templates/ProfileSidebarTemplate';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import type { ReactNode } from 'react';
|
||||
|
||||
interface ProfileLayoutShellTemplateProps {
|
||||
viewData: ProfileLayoutViewData;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import type { ProfileLeaguesViewData } from '@/lib/view-data/ProfileLeaguesViewData';
|
||||
import { MembershipPanel } from '@/components/profile/MembershipPanel';
|
||||
import type { ProfileLeaguesViewData } from '@/lib/view-data/ProfileLeaguesViewData';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
|
||||
interface ProfileLeaguesTemplateProps {
|
||||
viewData: ProfileLeaguesViewData;
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Plus } from 'lucide-react';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { LiveryGallery } from '@/components/profile/LiveryGallery';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import type { ProfileLiveriesViewData } from '@/lib/view-data/ProfileLiveriesViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Plus } from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
|
||||
interface ProfileLiveriesTemplateProps {
|
||||
viewData: ProfileLiveriesViewData;
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { ProfileDetailsPanel } from '@/components/profile/ProfileDetailsPanel';
|
||||
import { ConnectedAccountsPanel } from '@/components/profile/ConnectedAccountsPanel';
|
||||
import { PreferencesPanel } from '@/components/profile/PreferencesPanel';
|
||||
import { ProfileDetailsPanel } from '@/components/profile/ProfileDetailsPanel';
|
||||
import type { ProfileViewData } from '@/lib/view-data/ProfileViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
|
||||
interface ProfileSettingsTemplateProps {
|
||||
viewData: ProfileViewData;
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Handshake,
|
||||
Palette,
|
||||
Settings,
|
||||
Trophy,
|
||||
User
|
||||
} from 'lucide-react';
|
||||
import Link from 'next/link';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import {
|
||||
User,
|
||||
Settings,
|
||||
Trophy,
|
||||
Palette,
|
||||
Handshake
|
||||
} from 'lucide-react';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
|
||||
import { ProfileLayoutViewData } from '@/lib/view-data/ProfileLayoutViewData';
|
||||
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { AchievementGrid } from '@/components/achievements/AchievementGrid';
|
||||
import { CreateDriverForm } from '@/components/drivers/CreateDriverForm';
|
||||
import { ProfileDetailsPanel } from '@/components/profile/ProfileDetailsPanel';
|
||||
import { ProfileHeader } from '@/components/profile/ProfileHeader';
|
||||
import { ProfileNavTabs, type ProfileTab } from '@/components/profile/ProfileNavTabs';
|
||||
import { ProfileDetailsPanel } from '@/components/profile/ProfileDetailsPanel';
|
||||
import { SessionHistoryTable } from '@/components/profile/SessionHistoryTable';
|
||||
import { ProfileStatGrid } from '@/ui/ProfileStatGrid';
|
||||
import { TeamMembershipGrid } from '@/components/teams/TeamMembershipGrid';
|
||||
import { AchievementGrid } from '@/components/achievements/AchievementGrid';
|
||||
import type { ProfileViewData } from '@/lib/view-data/ProfileViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { ProfileStatGrid } from '@/ui/ProfileStatGrid';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { User } from 'lucide-react';
|
||||
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Skeleton } from '@/ui/Skeleton';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { RaceUserResult } from '@/components/races/RaceUserResultWrapper';
|
||||
import { LeagueSummaryCard } from '@/components/leagues/LeagueSummaryCardWrapper';
|
||||
import { EntrantsTable } from '@/components/races/EntrantsTable';
|
||||
import { RaceActionBar } from '@/components/races/RaceActionBar';
|
||||
import { RaceDetailsHeader } from '@/components/races/RaceDetailsHeader';
|
||||
import { TrackConditionsPanel } from '@/components/races/TrackConditionsPanel';
|
||||
import { EntrantsTable } from '@/components/races/EntrantsTable';
|
||||
import { RaceUserResult } from '@/components/races/RaceUserResultWrapper';
|
||||
import type { SessionStatus } from '@/components/races/SessionStatusBadge';
|
||||
import { TrackConditionsPanel } from '@/components/races/TrackConditionsPanel';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Skeleton } from '@/ui/Skeleton';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
export interface RaceDetailEntryViewModel {
|
||||
id: string;
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Trophy, Zap, AlertTriangle, type LucideIcon } from 'lucide-react';
|
||||
import type { RaceResultsViewData } from '@/lib/view-data/races/RaceResultsViewData';
|
||||
import { RaceResultsTable } from '@/components/races/RaceResultsTable';
|
||||
import { RaceDetailsHeader } from '@/components/races/RaceDetailsHeader';
|
||||
import { RaceResultsTable } from '@/components/races/RaceResultsTable';
|
||||
import type { RaceResultsViewData } from '@/lib/view-data/races/RaceResultsViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertTriangle, Trophy, Zap, type LucideIcon } from 'lucide-react';
|
||||
|
||||
export interface RaceResultsTemplateProps {
|
||||
viewData: RaceResultsViewData;
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Flag, CheckCircle, Gavel, Info } from 'lucide-react';
|
||||
import { RaceStewardingStats } from '@/components/races/RaceStewardingStats';
|
||||
import { StewardingTabs } from '@/components/leagues/StewardingTabs';
|
||||
import { ProtestCard } from '@/components/leagues/ProtestCardWrapper';
|
||||
import { RacePenaltyRow } from '@/components/races/RacePenaltyRowWrapper';
|
||||
import { StewardingTabs } from '@/components/leagues/StewardingTabs';
|
||||
import { RaceDetailsHeader } from '@/components/races/RaceDetailsHeader';
|
||||
import { RacePenaltyRow } from '@/components/races/RacePenaltyRowWrapper';
|
||||
import { RaceStewardingStats } from '@/components/races/RaceStewardingStats';
|
||||
import type { RaceStewardingViewData } from '@/lib/view-data/races/RaceStewardingViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { CheckCircle, Flag, Gavel, Info } from 'lucide-react';
|
||||
|
||||
export type StewardingTab = 'pending' | 'resolved' | 'penalties';
|
||||
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Skeleton } from '@/ui/Skeleton';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Pagination } from '@/ui/Pagination';
|
||||
import { RaceFilterModal } from '@/components/races/RaceFilterModal';
|
||||
import { RacePageHeader } from '@/components/races/RacePageHeader';
|
||||
import { RaceScheduleTable } from '@/components/races/RaceScheduleTable';
|
||||
import type { RacesViewData } from '@/lib/view-data/RacesViewData';
|
||||
import type { SessionStatus } from '@/components/races/SessionStatusBadge';
|
||||
import type { RacesViewData } from '@/lib/view-data/RacesViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Pagination } from '@/ui/Pagination';
|
||||
import { Skeleton } from '@/ui/Skeleton';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
|
||||
export type StatusFilter = 'scheduled' | 'running' | 'completed' | 'cancelled' | 'all';
|
||||
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { RaceFilterModal } from '@/components/races/RaceFilterModal';
|
||||
import type { RacesViewData } from '@/lib/view-data/RacesViewData';
|
||||
import { RacePageHeader } from '@/components/races/RacePageHeader';
|
||||
import { LiveRacesBanner } from '@/components/races/LiveRacesBanner';
|
||||
import { RaceFilterBar } from '@/components/races/RaceFilterBar';
|
||||
import { RaceFilterModal } from '@/components/races/RaceFilterModal';
|
||||
import { RacePageHeader } from '@/components/races/RacePageHeader';
|
||||
import { RaceScheduleTable } from '@/components/races/RaceScheduleTable';
|
||||
import { RaceSidebar } from '@/components/races/RaceSidebar';
|
||||
import type { SessionStatus } from '@/components/races/SessionStatusBadge';
|
||||
import type { RacesViewData } from '@/lib/view-data/RacesViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
export type TimeFilter = 'all' | 'upcoming' | 'live' | 'past';
|
||||
export type RaceStatusFilter = 'scheduled' | 'running' | 'completed' | 'cancelled' | 'all';
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Shield, UserPlus, UserMinus } from 'lucide-react';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Table, TableHead, TableBody, TableRow, TableHeader, TableCell } from '@/ui/Table';
|
||||
import type { MembershipRole } from '@/lib/types/MembershipRole';
|
||||
import type { LeagueRosterAdminViewData } from '@/lib/view-data/LeagueRosterAdminViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/ui/Table';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Shield, UserMinus, UserPlus } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
interface RosterAdminTemplateProps {
|
||||
viewData: LeagueRosterAdminViewData;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { LeagueRulesPanel } from '@/components/leagues/LeagueRulesPanel';
|
||||
import type { RulebookViewData } from '@/lib/view-data/leagues/RulebookViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
interface RulebookTemplateProps {
|
||||
viewData: RulebookViewData;
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Glow } from '@/ui/Glow';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { ServerErrorPanel } from '@/components/errors/ServerErrorPanel';
|
||||
import { RecoveryActions } from '@/components/errors/RecoveryActions';
|
||||
import { ErrorDetails } from '@/components/errors/ErrorDetails';
|
||||
import { RecoveryActions } from '@/components/errors/RecoveryActions';
|
||||
import { ServerErrorPanel } from '@/components/errors/ServerErrorPanel';
|
||||
import { Glow } from '@/ui/Glow';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
|
||||
export interface ServerErrorViewData {
|
||||
error: Error & { digest?: string };
|
||||
|
||||
@@ -1,29 +1,28 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { PayoutItem, SponsorPayoutQueueTable } from '@/components/sponsors/SponsorPayoutQueueTable';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import type { InvoiceDTO, PaymentMethodDTO } from '@/lib/types/tbd/SponsorBillingDTO';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { InfoBanner } from '@/ui/InfoBanner';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel';
|
||||
import { SponsorPayoutQueueTable, PayoutItem } from '@/components/sponsors/SponsorPayoutQueueTable';
|
||||
import {
|
||||
CreditCard,
|
||||
Building2,
|
||||
Download,
|
||||
Percent,
|
||||
Receipt,
|
||||
ExternalLink,
|
||||
LucideIcon
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Building2,
|
||||
CreditCard,
|
||||
Download,
|
||||
ExternalLink,
|
||||
LucideIcon,
|
||||
Percent,
|
||||
Receipt
|
||||
} from 'lucide-react';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import type { PaymentMethodDTO, InvoiceDTO } from '@/lib/types/tbd/SponsorBillingDTO';
|
||||
|
||||
export interface SponsorBillingViewData {
|
||||
stats: {
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel';
|
||||
import { SponsorContractCard } from '@/components/sponsors/SponsorContractCard';
|
||||
import {
|
||||
Search,
|
||||
Check,
|
||||
Clock,
|
||||
Eye,
|
||||
BarChart3,
|
||||
LucideIcon
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import {
|
||||
BarChart3,
|
||||
Check,
|
||||
Clock,
|
||||
Eye,
|
||||
LucideIcon,
|
||||
Search
|
||||
} from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
export type SponsorshipType = 'all' | 'leagues' | 'teams' | 'drivers' | 'races' | 'platform';
|
||||
export type SponsorshipStatus = 'all' | 'active' | 'pending_approval' | 'approved' | 'rejected' | 'expired';
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { SponsorContractCard } from '@/components/sponsors/SponsorContractCard';
|
||||
import { MetricCard } from '@/components/sponsors/MetricCard';
|
||||
import { SponsorshipCategoryCard } from '@/components/sponsors/SponsorshipCategoryCard';
|
||||
import { RenewalAlert } from '@/components/sponsors/RenewalAlert';
|
||||
import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel';
|
||||
import { SponsorActivityPanel, Activity } from '@/components/sponsors/SponsorActivityPanel';
|
||||
import {
|
||||
Eye,
|
||||
Users,
|
||||
Trophy,
|
||||
TrendingUp,
|
||||
DollarSign,
|
||||
ChevronRight,
|
||||
Plus,
|
||||
Bell,
|
||||
Clock,
|
||||
Car,
|
||||
Flag,
|
||||
Megaphone,
|
||||
LucideIcon
|
||||
} from 'lucide-react';
|
||||
import type { SponsorDashboardViewData } from '@/lib/view-data/SponsorDashboardViewData';
|
||||
import { MetricCard } from '@/components/sponsors/MetricCard';
|
||||
import { RenewalAlert } from '@/components/sponsors/RenewalAlert';
|
||||
import { Activity, SponsorActivityPanel } from '@/components/sponsors/SponsorActivityPanel';
|
||||
import { SponsorContractCard } from '@/components/sponsors/SponsorContractCard';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { SponsorshipCategoryCard } from '@/components/sponsors/SponsorshipCategoryCard';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import type { SponsorDashboardViewData } from '@/lib/view-data/SponsorDashboardViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import {
|
||||
Bell,
|
||||
Car,
|
||||
ChevronRight,
|
||||
Clock,
|
||||
DollarSign,
|
||||
Eye,
|
||||
Flag,
|
||||
LucideIcon,
|
||||
Megaphone,
|
||||
Plus,
|
||||
TrendingUp,
|
||||
Trophy,
|
||||
Users
|
||||
} from 'lucide-react';
|
||||
|
||||
interface SponsorDashboardTemplateProps {
|
||||
viewData: SponsorDashboardViewData;
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { PricingTableShell, PricingTier } from '@/components/sponsors/PricingTableShell';
|
||||
import { BillingSummaryPanel } from '@/components/sponsors/BillingSummaryPanel';
|
||||
import { PricingTableShell, PricingTier } from '@/components/sponsors/PricingTableShell';
|
||||
import { SponsorBrandingPreview } from '@/components/sponsors/SponsorBrandingPreview';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { SponsorStatusChip } from '@/components/sponsors/SponsorStatusChip';
|
||||
import {
|
||||
Trophy,
|
||||
Calendar,
|
||||
Eye,
|
||||
TrendingUp,
|
||||
Flag,
|
||||
BarChart3,
|
||||
Megaphone,
|
||||
CreditCard,
|
||||
FileText,
|
||||
type LucideIcon
|
||||
} from 'lucide-react';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
BarChart3,
|
||||
Calendar,
|
||||
CreditCard,
|
||||
Eye,
|
||||
FileText,
|
||||
Flag,
|
||||
Megaphone,
|
||||
TrendingUp,
|
||||
Trophy,
|
||||
type LucideIcon
|
||||
} from 'lucide-react';
|
||||
|
||||
interface SponsorLeagueDetailViewData {
|
||||
league: {
|
||||
|
||||
@@ -1,30 +1,29 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import {
|
||||
Trophy,
|
||||
Users,
|
||||
Search,
|
||||
Car,
|
||||
Megaphone,
|
||||
} from 'lucide-react';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { AvailableLeagueCard } from '@/components/sponsors/AvailableLeagueCard';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Surface } from '@/ui/primitives/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Car,
|
||||
Megaphone,
|
||||
Search,
|
||||
Trophy,
|
||||
Users,
|
||||
} from 'lucide-react';
|
||||
|
||||
interface AvailableLeague {
|
||||
id: string;
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
import React from 'react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { FormField } from '@/ui/FormField';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Toggle } from '@/ui/Toggle';
|
||||
import { FormField } from '@/ui/FormField';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import {
|
||||
Building2,
|
||||
Save,
|
||||
Bell,
|
||||
AlertCircle,
|
||||
RefreshCw
|
||||
import {
|
||||
AlertCircle,
|
||||
Bell,
|
||||
Building2,
|
||||
RefreshCw,
|
||||
Save
|
||||
} from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
export interface SponsorSettingsViewData {
|
||||
profile: {
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/Box';
|
||||
import type { SponsorshipRequestsViewData } from '@/lib/view-data/SponsorshipRequestsViewData';
|
||||
import { SponsorshipRequestsPanel } from '@/components/profile/SponsorshipRequestsPanel';
|
||||
import type { SponsorshipRequestsViewData } from '@/lib/view-data/SponsorshipRequestsViewData';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
|
||||
export interface SponsorshipRequestsTemplateProps {
|
||||
viewData: SponsorshipRequestsViewData;
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Breadcrumbs } from '@/ui/Breadcrumbs';
|
||||
import { SponsorInsightsCard } from '@/components/sponsors/SponsorInsightsCard';
|
||||
import { SlotTemplates } from '@/components/sponsors/SlotTemplates';
|
||||
import { SponsorInsightsCard } from '@/components/sponsors/SponsorInsightsCard';
|
||||
import { useSponsorMode } from '@/hooks/sponsor/useSponsorMode';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Breadcrumbs } from '@/ui/Breadcrumbs';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { HorizontalStatItem } from '@/ui/HorizontalStatItem';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Grid } from '@/ui/primitives/Grid';
|
||||
import { GridItem } from '@/ui/primitives/GridItem';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
import { TeamAdmin } from '@/components/teams/TeamAdmin';
|
||||
import { TeamDetailsHeader } from '@/components/teams/TeamDetailsHeader';
|
||||
import { TeamMembersTable } from '@/components/teams/TeamMembersTable';
|
||||
import { TeamStandingsPanel } from '@/components/teams/TeamStandingsPanel';
|
||||
import { TeamAdmin } from '@/components/teams/TeamAdmin';
|
||||
import type { TeamDetailViewData } from '@/lib/view-data/TeamDetailViewData';
|
||||
|
||||
type Tab = 'overview' | 'roster' | 'standings' | 'admin';
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Award, ChevronLeft } from 'lucide-react';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Table, TableBody, TableHead, TableHeader, TableRow, TableCell } from '@/ui/Table';
|
||||
import { LeaderboardFiltersBar } from '@/components/leaderboards/LeaderboardFiltersBar';
|
||||
import type { TeamLeaderboardViewData, SkillLevel, SortBy } from '@/lib/view-data/TeamLeaderboardViewData';
|
||||
import type { SkillLevel, SortBy, TeamLeaderboardViewData } from '@/lib/view-data/TeamLeaderboardViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/ui/Table';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Award, ChevronLeft } from 'lucide-react';
|
||||
|
||||
interface TeamLeaderboardTemplateProps {
|
||||
viewData: TeamLeaderboardViewData;
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Users } from 'lucide-react';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { EmptyState } from '@/components/shared/state/EmptyState';
|
||||
import { TeamsDirectoryHeader } from '@/components/teams/TeamsDirectoryHeader';
|
||||
import { TeamGrid } from '@/components/teams/TeamGrid';
|
||||
import { TeamCard } from '@/components/teams/TeamCardWrapper';
|
||||
import { TeamGrid } from '@/components/teams/TeamGrid';
|
||||
import { TeamLeaderboardPreview } from '@/components/teams/TeamLeaderboardPreviewWrapper';
|
||||
import { TeamsDirectoryHeader } from '@/components/teams/TeamsDirectoryHeader';
|
||||
import type { TeamsViewData } from '@/lib/view-data/TeamsViewData';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Users } from 'lucide-react';
|
||||
|
||||
interface TeamsTemplateProps {
|
||||
viewData: TeamsViewData;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
'use client';
|
||||
|
||||
import { ActionsViewData } from '@/lib/view-data/ActionsViewData';
|
||||
import { ActionsHeader } from '@/components/actions/ActionsHeader';
|
||||
import { ActionList } from '@/components/actions/ActionList';
|
||||
import { ActionFiltersBar } from '@/components/actions/ActionFiltersBar';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { ActionList } from '@/components/actions/ActionList';
|
||||
import { ActionsHeader } from '@/components/actions/ActionsHeader';
|
||||
import { ActionsViewData } from '@/lib/view-data/ActionsViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
|
||||
export function ActionsTemplate({ actions }: ActionsViewData) {
|
||||
return (
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Mail, ArrowLeft, AlertCircle, Shield, CheckCircle2 } from 'lucide-react';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { ForgotPasswordViewData } from '@/lib/builders/view-data/types/ForgotPasswordViewData';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { ForgotPasswordViewData } from '@/lib/builders/view-data/types/ForgotPasswordViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertCircle, ArrowLeft, CheckCircle2, Mail, Shield } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
interface ForgotPasswordTemplateProps {
|
||||
viewData: ForgotPasswordViewData;
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { LogIn, Mail, AlertCircle } from 'lucide-react';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { EnhancedFormError } from '@/components/errors/EnhancedFormError';
|
||||
import { FormState } from '@/lib/builders/view-data/types/FormState';
|
||||
import { LoginViewData } from '@/lib/builders/view-data/types/LoginViewData';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { PasswordField } from '@/ui/PasswordField';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { EnhancedFormError } from '@/components/errors/EnhancedFormError';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { LoginViewData } from '@/lib/builders/view-data/types/LoginViewData';
|
||||
import { FormState } from '@/lib/builders/view-data/types/FormState';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertCircle, LogIn, Mail } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
interface LoginTemplateProps {
|
||||
viewData: LoginViewData;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { Shield, CheckCircle2, ArrowLeft, AlertCircle } from 'lucide-react';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { ResetPasswordViewData } from '@/lib/builders/view-data/types/ResetPasswordViewData';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { PasswordField } from '@/ui/PasswordField';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { ResetPasswordViewData } from '@/lib/builders/view-data/types/ResetPasswordViewData';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertCircle, ArrowLeft, CheckCircle2, Shield } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
interface ResetPasswordTemplateProps {
|
||||
viewData: ResetPasswordViewData;
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { UserPlus, Mail, User, Check, X, AlertCircle } from 'lucide-react';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { PasswordField } from '@/ui/PasswordField';
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks';
|
||||
import { AuthForm } from '@/components/auth/AuthForm';
|
||||
import { SignupViewData } from '@/lib/builders/view-data/types/SignupViewData';
|
||||
import { checkPasswordStrength } from '@/lib/utils/validation';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { PasswordField } from '@/ui/PasswordField';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertCircle, Check, Mail, User, UserPlus, X } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
interface SignupTemplateProps {
|
||||
viewData: SignupViewData;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import React from 'react';
|
||||
import { AppFooter } from '@/ui/AppFooter';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
'use client';
|
||||
|
||||
import { Box } from '@/ui/Box';
|
||||
import { AuthedNav } from '@/components/layout/AuthedNav';
|
||||
import { PublicNav } from '@/components/layout/PublicNav';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { DashboardRail } from '@/ui/DashboardRail';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { PublicNav } from '@/components/layout/PublicNav';
|
||||
import { AuthedNav } from '@/components/layout/AuthedNav';
|
||||
|
||||
export interface GlobalSidebarViewData {}
|
||||
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
import React from 'react';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { BrandMark } from '@/components/layout/BrandMark';
|
||||
import { HeaderActions } from '@/components/layout/HeaderActions';
|
||||
import { PublicNav } from '@/components/layout/PublicNav';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { usePathname } from 'next/navigation';
|
||||
|
||||
export interface HeaderContentViewData {}
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { AppShell } from '@/ui/AppShell';
|
||||
import { ControlBar } from '@/ui/ControlBar';
|
||||
import { TopNav } from '@/ui/TopNav';
|
||||
import { ContentViewport } from '@/ui/ContentViewport';
|
||||
import { GlobalSidebarTemplate } from './GlobalSidebarTemplate';
|
||||
import { GlobalFooterTemplate } from './GlobalFooterTemplate';
|
||||
import { HeaderContentTemplate } from './HeaderContentTemplate';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { AppShell } from '@/ui/AppShell';
|
||||
import { ContentViewport } from '@/ui/ContentViewport';
|
||||
import { ControlBar } from '@/ui/ControlBar';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { TopNav } from '@/ui/TopNav';
|
||||
import { usePathname } from 'next/navigation';
|
||||
import React from 'react';
|
||||
import { GlobalFooterTemplate } from './GlobalFooterTemplate';
|
||||
import { GlobalSidebarTemplate } from './GlobalSidebarTemplate';
|
||||
import { HeaderContentTemplate } from './HeaderContentTemplate';
|
||||
|
||||
export interface RootAppShellViewData {
|
||||
children: React.ReactNode;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
'use client';
|
||||
|
||||
import { OnboardingShell } from '@/components/onboarding/OnboardingShell';
|
||||
import { OnboardingStepper } from '@/components/onboarding/OnboardingStepper';
|
||||
import { OnboardingHelpPanel } from '@/components/onboarding/OnboardingHelpPanel';
|
||||
import { OnboardingStepPanel } from '@/components/onboarding/OnboardingStepPanel';
|
||||
import { OnboardingPrimaryActions } from '@/components/onboarding/OnboardingPrimaryActions';
|
||||
import { PersonalInfo, PersonalInfoStep } from '@/components/onboarding/PersonalInfoStep';
|
||||
import { AvatarInfo, AvatarStep } from '@/components/onboarding/AvatarStep';
|
||||
import { FormEvent } from 'react';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { OnboardingHelpPanel } from '@/components/onboarding/OnboardingHelpPanel';
|
||||
import { OnboardingPrimaryActions } from '@/components/onboarding/OnboardingPrimaryActions';
|
||||
import { OnboardingShell } from '@/components/onboarding/OnboardingShell';
|
||||
import { OnboardingStepPanel } from '@/components/onboarding/OnboardingStepPanel';
|
||||
import { OnboardingStepper } from '@/components/onboarding/OnboardingStepper';
|
||||
import { PersonalInfo, PersonalInfoStep } from '@/components/onboarding/PersonalInfoStep';
|
||||
import { OnboardingError } from '@/ui/OnboardingError';
|
||||
import { Box } from '@/ui/primitives/Box';
|
||||
import { Stack } from '@/ui/primitives/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { FormEvent } from 'react';
|
||||
|
||||
type OnboardingStep = 1 | 2;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user