view data fixes
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import React from 'react';
|
||||
import { ErrorScreen } from '@/components/errors/ErrorScreen';
|
||||
|
||||
export interface FatalErrorViewData {
|
||||
export interface FatalErrorViewData extends ViewData {
|
||||
error: Error & { digest?: string };
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
'use client';
|
||||
|
||||
import { CtaSection } from '@/components/home/CtaSection';
|
||||
import { Hero } from '@/components/home/Hero';
|
||||
import { TelemetryStrip } from '@/components/home/TelemetryStrip';
|
||||
import { ValuePillars } from '@/components/home/ValuePillars';
|
||||
import { StewardingPreview } from '@/components/home/StewardingPreview';
|
||||
import { LeagueIdentityPreview } from '@/components/home/LeagueIdentityPreview';
|
||||
import { MigrationSection } from '@/components/home/MigrationSection';
|
||||
import { CtaSection } from '@/components/home/CtaSection';
|
||||
import { StewardingPreview } from '@/components/home/StewardingPreview';
|
||||
import { TelemetryStrip } from '@/components/home/TelemetryStrip';
|
||||
import { ValuePillars } from '@/components/home/ValuePillars';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
|
||||
export interface HomeViewData {
|
||||
export interface HomeViewData extends ViewData {
|
||||
isAlpha: boolean;
|
||||
upcomingRaces: Array<{
|
||||
id: string;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
'use client';
|
||||
|
||||
import type { LeagueSettingsViewData } from '@/lib/view-data/leagues/LeagueSettingsViewData';
|
||||
import type { LeagueSettingsViewData } from '@/lib/view-data/LeagueSettingsViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
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 type { LeagueSponsorshipsViewData } from '@/lib/view-data/LeagueSponsorshipsViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
'use client';
|
||||
|
||||
import { WalletSummaryPanel } from '@/components/leagues/WalletSummaryPanel';
|
||||
import type { LeagueWalletViewData } from '@/lib/view-data/leagues/LeagueWalletViewData';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import type { LeagueWalletViewData } from '@/lib/view-data/LeagueWalletViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Container } from '@/ui/Container';
|
||||
@@ -10,7 +11,6 @@ import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Download } from 'lucide-react';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
|
||||
interface LeagueWalletTemplateProps extends TemplateProps<LeagueWalletViewData> {
|
||||
onWithdraw?: (amount: number) => void;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
'use client';
|
||||
|
||||
import React from 'react';
|
||||
import { NotFoundScreen } from '@/components/errors/NotFoundScreen';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
|
||||
export interface NotFoundViewData {
|
||||
export interface NotFoundViewData extends ViewData {
|
||||
errorCode: string;
|
||||
title: string;
|
||||
message: string;
|
||||
|
||||
@@ -11,8 +11,8 @@ import { Box } from '@/ui/Box';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Skeleton } from '@/ui/Skeleton';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
export interface RaceDetailEntryViewModel {
|
||||
@@ -58,7 +58,7 @@ export interface RaceDetailRegistration {
|
||||
canRegister: boolean;
|
||||
}
|
||||
|
||||
export interface RaceDetailViewData {
|
||||
export interface RaceDetailViewData extends ViewData {
|
||||
race: RaceDetailRace;
|
||||
league?: RaceDetailLeague;
|
||||
entryList: RaceDetailEntryViewModel[];
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
import { RaceDetailsHeader } from '@/components/races/RaceDetailsHeader';
|
||||
import { RaceResultsTable } from '@/components/races/RaceResultsTable';
|
||||
import type { RaceResultsViewData } from '@/lib/view-data/races/RaceResultsViewData';
|
||||
import type { RaceResultsViewData } from '@/lib/view-data/RaceResultsViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertTriangle, Trophy, Zap, type LucideIcon } from 'lucide-react';
|
||||
|
||||
@@ -5,12 +5,12 @@ 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 type { RaceStewardingViewData } from '@/lib/view-data/RaceStewardingViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { CheckCircle, Flag, Gavel, Info } from 'lucide-react';
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
import { RulebookTabs, type RulebookSection } from '@/components/leagues/RulebookTabs';
|
||||
import { PointsTable } from '@/components/races/PointsTable';
|
||||
import type { RulebookViewData } from '@/lib/view-data/leagues/RulebookViewData';
|
||||
import type { RulebookViewData } from '@/lib/view-data/RulebookViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow } from '@/ui/Table';
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
import { ErrorDetails } from '@/components/errors/ErrorDetails';
|
||||
import { RecoveryActions } from '@/components/errors/RecoveryActions';
|
||||
import { ServerErrorPanel } from '@/components/errors/ServerErrorPanel';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Glow } from '@/ui/Glow';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
|
||||
export interface ServerErrorViewData {
|
||||
export interface ServerErrorViewData extends ViewData {
|
||||
error: Error & { digest?: string };
|
||||
incidentId?: string;
|
||||
}
|
||||
|
||||
@@ -15,16 +15,16 @@ import { InfoBanner } from '@/ui/InfoBanner';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Building2,
|
||||
CreditCard,
|
||||
Download,
|
||||
ExternalLink,
|
||||
LucideIcon,
|
||||
Percent,
|
||||
Receipt
|
||||
Building2,
|
||||
CreditCard,
|
||||
Download,
|
||||
ExternalLink,
|
||||
LucideIcon,
|
||||
Percent,
|
||||
Receipt
|
||||
} from 'lucide-react';
|
||||
|
||||
export interface SponsorBillingViewData {
|
||||
export interface SponsorBillingViewData extends ViewData {
|
||||
stats: {
|
||||
totalSpent: number;
|
||||
pendingAmount: number;
|
||||
|
||||
@@ -7,19 +7,19 @@ import { Container } from '@/ui/Container';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import {
|
||||
BarChart3,
|
||||
Check,
|
||||
Clock,
|
||||
Eye,
|
||||
LucideIcon,
|
||||
Search
|
||||
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';
|
||||
|
||||
export interface SponsorCampaignsViewData {
|
||||
export interface SponsorCampaignsViewData extends ViewData {
|
||||
sponsorships: Array<{
|
||||
id: string;
|
||||
type: string;
|
||||
|
||||
@@ -5,36 +5,36 @@ import { PricingTableShell, PricingTier } from '@/components/sponsors/PricingTab
|
||||
import { SponsorBrandingPreview } from '@/components/sponsors/SponsorBrandingPreview';
|
||||
import { SponsorDashboardHeader } from '@/components/sponsors/SponsorDashboardHeader';
|
||||
import { SponsorStatusChip } from '@/components/sponsors/SponsorStatusChip';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
import { routes } from '@/lib/routing/RouteConfig';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
BarChart3,
|
||||
Calendar,
|
||||
CreditCard,
|
||||
Eye,
|
||||
FileText,
|
||||
Flag,
|
||||
Megaphone,
|
||||
TrendingUp,
|
||||
Trophy,
|
||||
type LucideIcon
|
||||
BarChart3,
|
||||
Calendar,
|
||||
CreditCard,
|
||||
Eye,
|
||||
FileText,
|
||||
Flag,
|
||||
Megaphone,
|
||||
TrendingUp,
|
||||
Trophy,
|
||||
type LucideIcon
|
||||
} from 'lucide-react';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
|
||||
export interface SponsorLeagueDetailViewData extends ViewData {
|
||||
export interface SponsorLeagueDetailViewData extends ViewData extends ViewData {
|
||||
league: {
|
||||
id: string;
|
||||
name: string;
|
||||
|
||||
@@ -8,21 +8,21 @@ import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Container } from '@/ui/Container';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Input } from '@/ui/Input';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { GridItem } from '@/ui/GridItem';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import {
|
||||
Car,
|
||||
Megaphone,
|
||||
Search,
|
||||
Trophy,
|
||||
Users,
|
||||
Car,
|
||||
Megaphone,
|
||||
Search,
|
||||
Trophy,
|
||||
Users,
|
||||
} from 'lucide-react';
|
||||
|
||||
interface AvailableLeague {
|
||||
@@ -47,7 +47,7 @@ export type SortOption = 'rating' | 'drivers' | 'price' | 'views';
|
||||
export type TierFilter = 'all' | 'premium' | 'standard' | 'starter';
|
||||
export type AvailabilityFilter = 'all' | 'main' | 'secondary';
|
||||
|
||||
export interface SponsorLeaguesViewData {
|
||||
export interface SponsorLeaguesViewData extends ViewData {
|
||||
leagues: AvailableLeague[];
|
||||
stats: {
|
||||
total: number;
|
||||
|
||||
@@ -11,15 +11,15 @@ import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Toggle } from '@/ui/Toggle';
|
||||
import {
|
||||
AlertCircle,
|
||||
Bell,
|
||||
Building2,
|
||||
RefreshCw,
|
||||
Save
|
||||
AlertCircle,
|
||||
Bell,
|
||||
Building2,
|
||||
RefreshCw,
|
||||
Save
|
||||
} from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
export interface SponsorSettingsViewData {
|
||||
export interface SponsorSettingsViewData extends ViewData {
|
||||
profile: {
|
||||
companyName: string;
|
||||
contactName: string;
|
||||
|
||||
@@ -6,13 +6,13 @@ import { ReviewProtestModal } from '@/components/leagues/ReviewProtestModal';
|
||||
import { StewardingQueuePanel } from '@/components/leagues/StewardingQueuePanel';
|
||||
import { StewardingStats } from '@/components/leagues/StewardingStats';
|
||||
import { PenaltyFAB } from '@/components/races/PenaltyFAB';
|
||||
import type { StewardingViewData } from '@/lib/view-data/leagues/StewardingViewData';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
import type { StewardingViewData } from '@/lib/view-data/StewardingViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Card } from '@/ui/Card';
|
||||
import { TemplateProps } from '@/lib/contracts/components/ComponentContracts';
|
||||
|
||||
interface StewardingTemplateProps extends TemplateProps<StewardingViewData> {
|
||||
activeTab: 'pending' | 'history';
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
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 { ForgotPasswordViewData } from '@/lib/view-data/ForgotPasswordViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Group } from '@/ui/Group';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
|
||||
@@ -5,8 +5,8 @@ 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 { LoginViewData } from '@/lib/view-data/LoginViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Checkbox } from '@/ui/Checkbox';
|
||||
import { Group } from '@/ui/Group';
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
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 { ResetPasswordViewData } from '@/lib/view-data/ResetPasswordViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Group } from '@/ui/Group';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
import { AuthCard } from '@/components/auth/AuthCard';
|
||||
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 { SignupViewData } from '@/lib/view-data/SignupViewData';
|
||||
import { Button } from '@/ui/Button';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
import { Group } from '@/ui/Group';
|
||||
@@ -13,8 +13,8 @@ import { Input } from '@/ui/Input';
|
||||
import { Link } from '@/ui/Link';
|
||||
import { LoadingSpinner } from '@/ui/LoadingSpinner';
|
||||
import { PasswordField } from '@/ui/PasswordField';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { ProgressBar } from '@/ui/ProgressBar';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { AlertCircle, Check, Mail, User, UserPlus, X } from 'lucide-react';
|
||||
import React from 'react';
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
|
||||
export interface GlobalFooterViewData {}
|
||||
export interface GlobalFooterViewData extends ViewData {}
|
||||
|
||||
export function GlobalFooterTemplate(_props: GlobalFooterViewData) {
|
||||
return (
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
'use client';
|
||||
|
||||
import { DashboardRail } from '@/components/dashboard/DashboardRail';
|
||||
import { AuthedNav } from '@/components/layout/AuthedNav';
|
||||
import { PublicNav } from '@/components/layout/PublicNav';
|
||||
import { useCurrentSession } from '@/hooks/auth/useCurrentSession';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { DashboardRail } from '@/components/dashboard/DashboardRail';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { usePathname } from 'next/navigation';
|
||||
|
||||
export interface GlobalSidebarViewData {}
|
||||
export interface GlobalSidebarViewData extends ViewData {}
|
||||
|
||||
export function GlobalSidebarTemplate(_props: GlobalSidebarViewData) {
|
||||
const pathname = usePathname();
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { BrandMark } from '@/ui/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/Box';
|
||||
import { BrandMark } from '@/ui/BrandMark';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { usePathname } from 'next/navigation';
|
||||
|
||||
export interface HeaderContentViewData {}
|
||||
export interface HeaderContentViewData extends ViewData {}
|
||||
|
||||
export function HeaderContentTemplate(_props: HeaderContentViewData) {
|
||||
const pathname = usePathname();
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
import { AppFooter } from '@/components/layout/AppFooter';
|
||||
import { AppHeader } from '@/components/layout/AppHeader';
|
||||
import { AppSidebar } from '@/components/layout/AppSidebar';
|
||||
import { Layout } from '@/ui/Layout';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { SidebarProvider } from '@/components/layout/SidebarContext';
|
||||
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Layout } from '@/ui/Layout';
|
||||
import React from 'react';
|
||||
|
||||
export interface RootAppShellViewData {
|
||||
export interface RootAppShellViewData extends ViewData {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ interface FormErrors {
|
||||
submit?: string;
|
||||
}
|
||||
|
||||
export interface OnboardingViewData {
|
||||
export interface OnboardingViewData extends ViewData {
|
||||
onCompleted: () => void;
|
||||
onCompleteOnboarding: (data: {
|
||||
firstName: string;
|
||||
|
||||
Reference in New Issue
Block a user