website refactor
This commit is contained in:
@@ -45,11 +45,16 @@ export interface SponsorLeagueDetailViewData extends ViewData {
|
||||
description: string;
|
||||
tier: 'premium' | 'standard' | 'starter';
|
||||
rating: number;
|
||||
formattedRating: string;
|
||||
drivers: number;
|
||||
formattedDrivers: string;
|
||||
races: number;
|
||||
formattedRaces: string;
|
||||
completedRaces: number;
|
||||
racesLeft: number;
|
||||
formattedRacesLeft: string;
|
||||
engagement: number;
|
||||
formattedEngagement: string;
|
||||
totalImpressions: number;
|
||||
formattedTotalImpressions: string;
|
||||
projectedTotal: number;
|
||||
@@ -61,17 +66,20 @@ export interface SponsorLeagueDetailViewData extends ViewData {
|
||||
nextRace?: {
|
||||
name: string;
|
||||
date: string;
|
||||
formattedDate: string;
|
||||
};
|
||||
sponsorSlots: {
|
||||
main: {
|
||||
available: boolean;
|
||||
price: number;
|
||||
priceLabel: string;
|
||||
benefits: string[];
|
||||
};
|
||||
secondary: {
|
||||
available: number;
|
||||
total: number;
|
||||
price: number;
|
||||
priceLabel: string;
|
||||
benefits: string[];
|
||||
};
|
||||
};
|
||||
@@ -84,10 +92,12 @@ export interface SponsorLeagueDetailViewData extends ViewData {
|
||||
drivers: Array<{
|
||||
id: string;
|
||||
position: number;
|
||||
positionLabel: string;
|
||||
name: string;
|
||||
team: string;
|
||||
country: string;
|
||||
races: number;
|
||||
formattedRaces: string;
|
||||
impressions: number;
|
||||
formattedImpressions: string;
|
||||
}>;
|
||||
@@ -98,6 +108,7 @@ export interface SponsorLeagueDetailViewData extends ViewData {
|
||||
formattedDate: string;
|
||||
status: 'completed' | 'upcoming';
|
||||
views: number;
|
||||
formattedViews: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
@@ -139,13 +150,13 @@ export function SponsorLeagueDetailTemplate({
|
||||
},
|
||||
{
|
||||
label: 'Engagement',
|
||||
value: `${league.engagement}%`,
|
||||
value: league.formattedEngagement,
|
||||
icon: BarChart3,
|
||||
variant: 'warning',
|
||||
},
|
||||
{
|
||||
label: 'Races Left',
|
||||
value: league.racesLeft,
|
||||
value: league.formattedRacesLeft,
|
||||
icon: Calendar,
|
||||
variant: 'default',
|
||||
},
|
||||
@@ -156,6 +167,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
id: 'main',
|
||||
name: 'Main Sponsor',
|
||||
price: league.sponsorSlots.main.price,
|
||||
priceLabel: league.sponsorSlots.main.priceLabel,
|
||||
period: 'Season',
|
||||
description: 'Exclusive primary branding across all league assets.',
|
||||
features: league.sponsorSlots.main.benefits,
|
||||
@@ -166,6 +178,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
id: 'secondary',
|
||||
name: 'Secondary Sponsor',
|
||||
price: league.sponsorSlots.secondary.price,
|
||||
priceLabel: league.sponsorSlots.secondary.priceLabel,
|
||||
period: 'Season',
|
||||
description: 'Supporting branding on cars and broadcast overlays.',
|
||||
features: league.sponsorSlots.secondary.benefits,
|
||||
@@ -238,8 +251,8 @@ export function SponsorLeagueDetailTemplate({
|
||||
<InfoRow label="Platform" value={league.game} />
|
||||
<InfoRow label="Season" value={league.season} />
|
||||
<InfoRow label="Duration" value="Oct 2025 - Feb 2026" />
|
||||
<InfoRow label="Drivers" value={league.drivers} />
|
||||
<InfoRow label="Races" value={league.races} last />
|
||||
<InfoRow label="Drivers" value={league.formattedDrivers} />
|
||||
<InfoRow label="Races" value={league.formattedRaces} last />
|
||||
</SharedStack>
|
||||
</SharedCard>
|
||||
|
||||
@@ -253,8 +266,8 @@ export function SponsorLeagueDetailTemplate({
|
||||
<InfoRow label="Total Season Views" value={league.formattedTotalImpressions} />
|
||||
<InfoRow label="Projected Total" value={league.formattedProjectedTotal} />
|
||||
<InfoRow label="Main Sponsor CPM" value={league.formattedMainSponsorCpm} color="text-performance-green" />
|
||||
<InfoRow label="Engagement Rate" value={`${league.engagement}%`} />
|
||||
<InfoRow label="League Rating" value={`${league.rating}/5.0`} last />
|
||||
<InfoRow label="Engagement Rate" value={league.formattedEngagement} />
|
||||
<InfoRow label="League Rating" value={league.formattedRating} last />
|
||||
</SharedStack>
|
||||
</SharedCard>
|
||||
|
||||
@@ -274,7 +287,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
</Surface>
|
||||
<SharedBox>
|
||||
<SharedText size="lg" weight="semibold" color="text-white" block>{league.nextRace.name}</SharedText>
|
||||
<SharedText size="sm" color="text-gray-400" block mt={1}>{league.nextRace.date}</SharedText>
|
||||
<SharedText size="sm" color="text-gray-400" block mt={1}>{league.nextRace.formattedDate}</SharedText>
|
||||
</SharedBox>
|
||||
</SharedStack>
|
||||
<SharedButton variant="secondary">
|
||||
@@ -300,7 +313,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
<SharedStack direction="row" align="center" justify="between">
|
||||
<SharedStack direction="row" align="center" gap={4}>
|
||||
<Surface variant="muted" rounded="full" padding={1} style={{ width: '2.5rem', height: '2.5rem', display: 'flex', alignItems: 'center', justifyContent: 'center', background: '#262626' }}>
|
||||
<SharedText weight="bold" color="text-white">{driver.position}</SharedText>
|
||||
<SharedText weight="bold" color="text-white">{driver.positionLabel}</SharedText>
|
||||
</Surface>
|
||||
<SharedBox>
|
||||
<SharedText weight="medium" color="text-white" block>{driver.name}</SharedText>
|
||||
@@ -309,7 +322,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
</SharedStack>
|
||||
<SharedStack direction="row" align="center" gap={8}>
|
||||
<SharedBox textAlign="right">
|
||||
<SharedText weight="medium" color="text-white" block>{driver.races}</SharedText>
|
||||
<SharedText weight="medium" color="text-white" block>{driver.formattedRaces}</SharedText>
|
||||
<SharedText size="xs" color="text-gray-500">races</SharedText>
|
||||
</SharedBox>
|
||||
<SharedBox textAlign="right">
|
||||
@@ -344,7 +357,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
<SharedBox>
|
||||
{race.status === 'completed' ? (
|
||||
<SharedBox textAlign="right">
|
||||
<SharedText weight="semibold" color="text-white" block>{race.views.toLocaleString()}</SharedText>
|
||||
<SharedText weight="semibold" color="text-white" block>{race.formattedViews}</SharedText>
|
||||
<SharedText size="xs" color="text-gray-500">views</SharedText>
|
||||
</SharedBox>
|
||||
) : (
|
||||
@@ -384,7 +397,7 @@ export function SponsorLeagueDetailTemplate({
|
||||
|
||||
<SharedStack gap={3} mb={6}>
|
||||
<InfoRow label="Selected Tier" value={`${selectedTier.charAt(0).toUpperCase() + selectedTier.slice(1)} Sponsor`} />
|
||||
<InfoRow label="Season Price" value={`$${selectedTier === 'main' ? league.sponsorSlots.main.price : league.sponsorSlots.secondary.price}`} />
|
||||
<InfoRow label="Season Price" value={selectedTier === 'main' ? league.sponsorSlots.main.priceLabel : league.sponsorSlots.secondary.priceLabel} />
|
||||
<InfoRow label={`Platform Fee (${siteConfig.fees.platformFeePercent}%)`} value={`$${((selectedTier === 'main' ? league.sponsorSlots.main.price : league.sponsorSlots.secondary.price) * siteConfig.fees.platformFeePercent / 100).toFixed(2)}`} />
|
||||
<SharedBox pt={4} borderTop borderColor="border-neutral-800">
|
||||
<SharedStack direction="row" align="center" justify="between">
|
||||
|
||||
Reference in New Issue
Block a user