website refactor
This commit is contained in:
@@ -44,8 +44,13 @@ export function BenefitCard({
|
||||
rounded="xl"
|
||||
border={true}
|
||||
padding={6}
|
||||
className={`relative h-full transition-all duration-300 group ${isHighlight ? 'border-primary-blue/30' : 'border-charcoal-outline hover:border-charcoal-outline/80'}`}
|
||||
style={isHighlight ? { background: 'linear-gradient(to bottom right, rgba(25, 140, 255, 0.1), rgba(25, 140, 255, 0.05))' } : {}}
|
||||
borderColor={isHighlight ? 'rgba(25, 140, 255, 0.3)' : 'var(--ui-color-border-low)'}
|
||||
hoverBorderColor={isHighlight ? 'rgba(25, 140, 255, 0.5)' : 'var(--ui-color-border-default)'}
|
||||
transition="all 0.3s ease"
|
||||
group
|
||||
position="relative"
|
||||
fullHeight
|
||||
bg={isHighlight ? 'linear-gradient(to bottom right, rgba(25, 140, 255, 0.1), rgba(25, 140, 255, 0.05))' : undefined}
|
||||
>
|
||||
{/* Icon */}
|
||||
<Box
|
||||
@@ -55,25 +60,25 @@ export function BenefitCard({
|
||||
display="flex"
|
||||
center
|
||||
mb={4}
|
||||
bg={isHighlight ? 'bg-primary-blue/20' : 'bg-iron-gray'}
|
||||
bg={isHighlight ? 'rgba(25, 140, 255, 0.2)' : 'var(--ui-color-bg-surface-muted)'}
|
||||
border={!isHighlight}
|
||||
borderColor="border-charcoal-outline"
|
||||
borderColor="var(--ui-color-border-low)"
|
||||
>
|
||||
<Icon icon={icon} size={6} className={isHighlight ? 'text-primary-blue' : 'text-gray-400'} />
|
||||
<Icon icon={icon} size={6} intent={isHighlight ? 'primary' : 'low'} />
|
||||
</Box>
|
||||
|
||||
{/* Content */}
|
||||
<Heading level={3} mb={2}>{title}</Heading>
|
||||
<Text size="sm" color="text-gray-400" block style={{ lineHeight: 1.625 }}>{description}</Text>
|
||||
<Text size="sm" variant="low" block leading="relaxed">{description}</Text>
|
||||
|
||||
{/* Stats */}
|
||||
{stats && (
|
||||
<Box mt={4} pt={4} borderTop={true} borderColor="border-charcoal-outline/50">
|
||||
<Box mt={4} pt={4} borderTop={true} borderColor="var(--ui-color-border-low)">
|
||||
<Box display="flex" alignItems="baseline" gap={2}>
|
||||
<Text size="2xl" weight="bold" color={isHighlight ? 'text-primary-blue' : 'text-white'}>
|
||||
<Text size="2xl" weight="bold" variant={isHighlight ? 'primary' : 'high'}>
|
||||
{stats.value}
|
||||
</Text>
|
||||
<Text size="sm" color="text-gray-500">{stats.label}</Text>
|
||||
<Text size="sm" variant="low">{stats.label}</Text>
|
||||
</Box>
|
||||
</Box>
|
||||
)}
|
||||
@@ -84,7 +89,11 @@ export function BenefitCard({
|
||||
position="absolute"
|
||||
inset="0"
|
||||
rounded="xl"
|
||||
className="bg-gradient-to-br from-primary-blue/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none"
|
||||
bg="linear-gradient(to bottom right, rgba(25, 140, 255, 0.2), transparent)"
|
||||
opacity={0}
|
||||
groupHoverOpacity={1}
|
||||
transition="opacity 0.3s ease"
|
||||
pointerEvents="none"
|
||||
/>
|
||||
)}
|
||||
</Surface>
|
||||
|
||||
@@ -24,11 +24,11 @@ export function DiscoverySection({ viewData }: DiscoverySectionProps) {
|
||||
<Stack gap={16}>
|
||||
<Stack maxWidth="2xl">
|
||||
<Stack borderLeft borderStyle="solid" borderColor="primary-accent" pl={4} mb={4}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-[0.2em]">
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="0.2em">
|
||||
Live Ecosystem
|
||||
</Text>
|
||||
</Stack>
|
||||
<Heading level={2} weight="bold" fontSize={{ base: '3xl', md: '4xl' }} className="tracking-tight">
|
||||
<Heading level={2} weight="bold" fontSize={{ base: '3xl', md: '4xl' }} letterSpacing="-0.025em">
|
||||
Discover the Grid
|
||||
</Heading>
|
||||
<Text size="lg" color="text-gray-400" block mt={6} leading="relaxed">
|
||||
@@ -39,10 +39,10 @@ export function DiscoverySection({ viewData }: DiscoverySectionProps) {
|
||||
<Grid cols={1} lgCols={3} gap={12}>
|
||||
{/* Top leagues */}
|
||||
<Stack gap={8}>
|
||||
<Stack direction="row" align="center" justify="between" className="border-b border-border-gray/30 pb-4">
|
||||
<Heading level={5} color="text-gray-400" weight="bold" className="tracking-widest">FEATURED LEAGUES</Heading>
|
||||
<Stack direction="row" align="center" justify="between" borderBottom borderColor="var(--ui-color-border-low)" pb={4}>
|
||||
<Heading level={5} color="var(--ui-color-text-low)" weight="bold" letterSpacing="widest" uppercase>FEATURED LEAGUES</Heading>
|
||||
<Link href={routes.public.leagues}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-widest hover:text-white transition-colors">View all</Text>
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="widest" hoverVariant="high">View all</Text>
|
||||
</Link>
|
||||
</Stack>
|
||||
<Stack gap={4}>
|
||||
@@ -65,10 +65,10 @@ export function DiscoverySection({ viewData }: DiscoverySectionProps) {
|
||||
|
||||
{/* Teams */}
|
||||
<Stack gap={8}>
|
||||
<Stack direction="row" align="center" justify="between" className="border-b border-border-gray/30 pb-4">
|
||||
<Heading level={5} color="text-gray-400" weight="bold" className="tracking-widest">TEAMS ON THE GRID</Heading>
|
||||
<Stack direction="row" align="center" justify="between" borderBottom borderColor="var(--ui-color-border-low)" pb={4}>
|
||||
<Heading level={5} color="var(--ui-color-text-low)" weight="bold" letterSpacing="widest" uppercase>TEAMS ON THE GRID</Heading>
|
||||
<Link href={routes.public.teams}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-widest hover:text-white transition-colors">Browse</Text>
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="widest" hoverVariant="high">Browse</Text>
|
||||
</Link>
|
||||
</Stack>
|
||||
<Stack gap={4}>
|
||||
@@ -87,10 +87,10 @@ export function DiscoverySection({ viewData }: DiscoverySectionProps) {
|
||||
|
||||
{/* Upcoming races */}
|
||||
<Stack gap={8}>
|
||||
<Stack direction="row" align="center" justify="between" className="border-b border-border-gray/30 pb-4">
|
||||
<Heading level={5} color="text-gray-400" weight="bold" className="tracking-widest">UPCOMING RACES</Heading>
|
||||
<Stack direction="row" align="center" justify="between" borderBottom borderColor="var(--ui-color-border-low)" pb={4}>
|
||||
<Heading level={5} color="var(--ui-color-text-low)" weight="bold" letterSpacing="widest" uppercase>UPCOMING RACES</Heading>
|
||||
<Link href={routes.public.races}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-widest hover:text-white transition-colors">Schedule</Text>
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="widest" hoverVariant="high">Schedule</Text>
|
||||
</Link>
|
||||
</Stack>
|
||||
{viewData.upcomingRaces.length === 0 ? (
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { Heading } from '@/ui/Heading';
|
||||
import { Icon } from '@/ui/Icon';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { motion } from 'framer-motion';
|
||||
import { ChevronDown } from 'lucide-react';
|
||||
import { useState } from 'react';
|
||||
import { FAQSection } from '@/components/home/FAQSection';
|
||||
|
||||
const faqs = [
|
||||
{
|
||||
@@ -35,103 +29,12 @@ const faqs = [
|
||||
}
|
||||
];
|
||||
|
||||
function FAQItem({ faq, index }: { faq: typeof faqs[0]; index: number }) {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
return (
|
||||
<Stack
|
||||
as={motion.div}
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
viewport={{ once: true }}
|
||||
transition={{ delay: index * 0.1 }}
|
||||
group
|
||||
>
|
||||
<Stack rounded="none" bg="panel-gray/40" border borderColor="border-gray/50" transition hoverBorderColor="primary-accent/30">
|
||||
<Stack
|
||||
as="button"
|
||||
onClick={() => setIsOpen(!isOpen)}
|
||||
fullWidth
|
||||
p={{ base: 4, md: 6 }}
|
||||
textAlign="left"
|
||||
rounded="none"
|
||||
minHeight="44px"
|
||||
className="relative overflow-hidden"
|
||||
>
|
||||
<Stack display="flex" alignItems="center" justifyContent="between" gap={{ base: 2, md: 4 }}>
|
||||
<Stack direction="row" align="center" gap={4}>
|
||||
<Stack w="1" h="4" bg={isOpen ? "primary-accent" : "border-gray"} transition className="group-hover:bg-primary-accent" />
|
||||
<Heading level={3} fontSize={{ base: 'sm', md: 'base' }} weight="bold" color="text-white" groupHoverColor="primary-accent" transition className="tracking-wide">
|
||||
{faq.question}
|
||||
</Heading>
|
||||
</Stack>
|
||||
<Stack
|
||||
as={motion.div}
|
||||
animate={{ rotate: isOpen ? 180 : 0 }}
|
||||
transition={{ duration: 0.15, ease: 'easeInOut' }}
|
||||
w={{ base: "4", md: "5" }}
|
||||
h={{ base: "4", md: "5" }}
|
||||
color={isOpen ? "text-primary-accent" : "text-gray-500"}
|
||||
flexShrink={0}
|
||||
>
|
||||
<Icon icon={ChevronDown} size="full" />
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Stack>
|
||||
<Stack
|
||||
as={motion.div}
|
||||
initial={false}
|
||||
animate={{
|
||||
height: isOpen ? 'auto' : 0,
|
||||
opacity: isOpen ? 1 : 0
|
||||
}}
|
||||
transition={{
|
||||
height: { duration: 0.2, ease: 'easeInOut' },
|
||||
opacity: { duration: 0.15, ease: 'easeInOut' }
|
||||
}}
|
||||
overflow="hidden"
|
||||
>
|
||||
<Stack px={{ base: 4, md: 6 }} pb={{ base: 4, md: 6 }} pt={0} ml={5}>
|
||||
<Text size="sm" color="text-gray-400" weight="normal" leading="relaxed" className="max-w-2xl">
|
||||
{faq.answer}
|
||||
</Text>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
||||
export function FAQ() {
|
||||
return (
|
||||
<Stack as="section" position="relative" py={{ base: 20, md: 32 }} bg="graphite-black" overflow="hidden" borderBottom borderColor="border-gray/50">
|
||||
{/* Background image with mask */}
|
||||
<Stack
|
||||
position="absolute"
|
||||
inset="0"
|
||||
bg="url(/images/porsche.jpeg)"
|
||||
backgroundSize="cover"
|
||||
backgroundPosition="center"
|
||||
opacity={0.03}
|
||||
/>
|
||||
|
||||
<Stack maxWidth="4xl" mx="auto" px={{ base: 4, md: 6 }} position="relative" zIndex={10}>
|
||||
<Stack textAlign="center" mb={{ base: 12, md: 16 }}>
|
||||
<Stack borderLeft borderRight borderStyle="solid" borderColor="primary-accent" px={4} display="inline-block" mb={4}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-[0.2em]">
|
||||
Support & Information
|
||||
</Text>
|
||||
</Stack>
|
||||
<Heading level={2} fontSize={{ base: '3xl', md: '4xl' }} weight="bold" color="text-white" mb={4} className="tracking-tight">
|
||||
Frequently Asked Questions
|
||||
</Heading>
|
||||
</Stack>
|
||||
<Stack display="flex" flexDirection="column" gap={4}>
|
||||
{faqs.map((faq, index) => (
|
||||
<FAQItem key={faq.question} faq={faq} index={index} />
|
||||
))}
|
||||
</Stack>
|
||||
</Stack>
|
||||
</Stack>
|
||||
<FAQSection
|
||||
title="Frequently Asked Questions"
|
||||
subtitle="Support & Information"
|
||||
faqs={faqs}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@ import { Heading } from '@/ui/Heading';
|
||||
import { Stack } from '@/ui/Stack';
|
||||
import { Section } from '@/ui/Section';
|
||||
import { Text } from '@/ui/Text';
|
||||
import { Surface } from '@/ui/Surface';
|
||||
import { Box } from '@/ui/Box';
|
||||
import { Grid } from '@/ui/Grid';
|
||||
|
||||
const features = [
|
||||
{
|
||||
@@ -48,68 +51,79 @@ const features = [
|
||||
|
||||
function FeatureCard({ feature, index }: { feature: typeof features[0], index: number }) {
|
||||
return (
|
||||
<Stack
|
||||
display="flex"
|
||||
flexDirection="column"
|
||||
gap={6}
|
||||
className="p-8 bg-panel-gray/20 border border-border-gray/20 rounded-none hover:border-primary-accent/20 transition-all duration-300 ease-smooth group relative overflow-hidden"
|
||||
<Surface
|
||||
variant="muted"
|
||||
padding={8}
|
||||
rounded="none"
|
||||
border
|
||||
borderColor="var(--ui-color-border-low)"
|
||||
hoverBorderColor="var(--ui-color-intent-primary)"
|
||||
transition="all 0.3s ease"
|
||||
group
|
||||
position="relative"
|
||||
overflow="hidden"
|
||||
>
|
||||
<Stack aspectRatio="video" fullWidth position="relative" className="bg-graphite-black rounded-none overflow-hidden border border-border-gray/20">
|
||||
<Stack aspectRatio="video" fullWidth position="relative" bg="var(--ui-color-bg-base)" rounded="none" overflow="hidden" border borderColor="var(--ui-color-border-low)">
|
||||
<MockupStack index={index}>
|
||||
<feature.MockupComponent />
|
||||
</MockupStack>
|
||||
</Stack>
|
||||
<Stack gap={4}>
|
||||
<Stack display="flex" alignItems="center" gap={3}>
|
||||
<Stack w="1" h="3" bg="primary-accent" />
|
||||
<Heading level={3} weight="bold" fontSize="lg" className="tracking-tighter uppercase">
|
||||
<Stack gap={4} mt={6}>
|
||||
<Stack direction="row" align="center" gap={3}>
|
||||
<Box w="1" h="3" bg="var(--ui-color-intent-primary)" />
|
||||
<Heading level={3} weight="bold" fontSize="lg" letterSpacing="-0.05em" uppercase>
|
||||
{feature.title}
|
||||
</Heading>
|
||||
</Stack>
|
||||
<Text size="sm" color="text-gray-500" leading="relaxed" weight="normal" className="group-hover:text-gray-400 transition-colors">
|
||||
<Text size="sm" variant="low" leading="relaxed" weight="normal" groupHoverTextColor="var(--ui-color-text-med)">
|
||||
{feature.description}
|
||||
</Text>
|
||||
</Stack>
|
||||
{/* Subtle hover effect */}
|
||||
<Stack
|
||||
<Box
|
||||
position="absolute"
|
||||
bottom="0"
|
||||
left="0"
|
||||
w="full"
|
||||
h="0.5"
|
||||
bg="primary-accent"
|
||||
className="scale-x-0 group-hover:scale-x-100 transition-transform duration-500 origin-left"
|
||||
bg="var(--ui-color-intent-primary)"
|
||||
transform="scaleX(0)"
|
||||
groupHoverScale={true}
|
||||
transition="transform 0.5s ease"
|
||||
style={{ transformOrigin: 'left' }}
|
||||
/>
|
||||
</Stack>
|
||||
</Surface>
|
||||
);
|
||||
}
|
||||
|
||||
export function FeatureGrid() {
|
||||
return (
|
||||
<Section className="bg-graphite-black border-b border-border-gray/20 py-32">
|
||||
<Container position="relative" zIndex={10}>
|
||||
<Box borderBottom borderColor="var(--ui-color-border-low)">
|
||||
<Section variant="dark" py={32}>
|
||||
<Container position="relative" zIndex={10}>
|
||||
<Stack gap={16}>
|
||||
<Stack maxWidth="2xl">
|
||||
<Stack borderLeft borderStyle="solid" borderColor="primary-accent" pl={4} mb={4} bg="primary-accent/5" py={1}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" className="uppercase tracking-[0.3em]">
|
||||
<Stack borderLeft borderStyle="solid" borderColor="var(--ui-color-intent-primary)" pl={4} mb={4} bg="rgba(25, 140, 255, 0.05)" py={1}>
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="0.3em">
|
||||
Engineered for Competition
|
||||
</Text>
|
||||
</Stack>
|
||||
<Heading level={2} weight="bold" fontSize={{ base: '3xl', md: '5xl' }} className="tracking-tighter uppercase leading-none">
|
||||
<Heading level={2} weight="bold" fontSize={{ base: '3xl', md: '5xl' }} letterSpacing="-0.05em" uppercase>
|
||||
Building for League Racing
|
||||
</Heading>
|
||||
<Text size="lg" color="text-gray-500" block mt={6} leading="relaxed" className="border-l border-border-gray/20 pl-6">
|
||||
<Text size="lg" variant="low" block mt={6} leading="relaxed" borderLeft borderColor="var(--ui-color-border-low)" pl={6}>
|
||||
Every feature is designed to reduce friction and increase immersion. Join our Discord to help shape the future of the platform.
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<Stack display="grid" gridCols={{ base: 1, md: 2, lg: 3 }} gap={6}>
|
||||
<Grid cols={{ base: 1, md: 2, lg: 3 }} gap={6}>
|
||||
{features.map((feature, index) => (
|
||||
<FeatureCard key={feature.title} feature={feature} index={index} />
|
||||
))}
|
||||
</Stack>
|
||||
</Grid>
|
||||
</Stack>
|
||||
</Container>
|
||||
</Section>
|
||||
</Section>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -19,10 +19,11 @@ export function LandingHero() {
|
||||
ref={sectionRef}
|
||||
position="relative"
|
||||
overflow="hidden"
|
||||
bg="graphite-black"
|
||||
bg="var(--ui-color-bg-base)"
|
||||
pt={{ base: 24, md: 32, lg: 40 }}
|
||||
pb={{ base: 16, md: 24, lg: 32 }}
|
||||
className="border-b border-border-gray"
|
||||
borderBottom
|
||||
borderColor="var(--ui-color-border-low)"
|
||||
>
|
||||
{/* Background image layer with parallax */}
|
||||
<Stack
|
||||
@@ -54,8 +55,8 @@ export function LandingHero() {
|
||||
<Container size="lg" position="relative" zIndex={10}>
|
||||
<Stack gap={{ base: 8, md: 12 }}>
|
||||
<Stack gap={6} maxWidth="3xl">
|
||||
<Stack borderLeft borderStyle="solid" borderColor="primary-accent" pl={4} mb={2} bg="primary-accent/5" py={1}>
|
||||
<Text size="xs" weight="bold" color="text-primary-accent" uppercase letterSpacing="0.3em">
|
||||
<Stack borderLeft borderStyle="solid" borderColor="var(--ui-color-intent-primary)" pl={4} mb={2} bg="rgba(25, 140, 255, 0.05)" py={1}>
|
||||
<Text size="xs" weight="bold" variant="primary" uppercase letterSpacing="0.3em">
|
||||
Precision Racing Infrastructure
|
||||
</Text>
|
||||
</Stack>
|
||||
@@ -63,13 +64,13 @@ export function LandingHero() {
|
||||
level={1}
|
||||
fontSize={{ base: '4xl', sm: '5xl', md: '6xl', lg: '8xl' }}
|
||||
weight="bold"
|
||||
color="text-white"
|
||||
color="var(--ui-color-text-high)"
|
||||
lineHeight="0.95"
|
||||
letterSpacing="tighter"
|
||||
>
|
||||
MODERN MOTORSPORT INFRASTRUCTURE.
|
||||
</Heading>
|
||||
<Text size={{ base: 'lg', md: 'xl' }} color="text-gray-400" weight="normal" leading="relaxed" maxWidth="2xl" borderLeft borderStyle="solid" borderColor="border-gray" pl={6} opacity={0.3}>
|
||||
<Text size={{ base: 'lg', md: 'xl' }} variant="low" weight="normal" leading="relaxed" maxWidth="2xl" borderLeft borderStyle="solid" borderColor="var(--ui-color-border-low)" pl={6} opacity={0.3}>
|
||||
GridPilot gives your league racing a real home. Results, standings, teams, and career progression — engineered for precision and control.
|
||||
</Text>
|
||||
</Stack>
|
||||
@@ -91,8 +92,8 @@ export function LandingHero() {
|
||||
variant="secondary"
|
||||
size="lg"
|
||||
px={12}
|
||||
borderColor="border-gray"
|
||||
hoverBorderColor="primary-accent/50"
|
||||
borderColor="var(--ui-color-border-low)"
|
||||
hoverBorderColor="var(--ui-color-intent-primary)"
|
||||
letterSpacing="0.2em"
|
||||
fontSize="xs"
|
||||
h="14"
|
||||
@@ -110,24 +111,24 @@ export function LandingHero() {
|
||||
mt={12}
|
||||
borderTop
|
||||
borderStyle="solid"
|
||||
borderColor="border-gray"
|
||||
borderColor="var(--ui-color-border-low)"
|
||||
opacity={0.2}
|
||||
pt={12}
|
||||
>
|
||||
{[
|
||||
{ label: 'IDENTITY', text: 'Your racing career in one place', color: 'primary' },
|
||||
{ label: 'AUTOMATION', text: 'No more manual session setup', color: 'aqua' },
|
||||
{ label: 'PRECISION', text: 'Real-time results and standings', color: 'amber' },
|
||||
{ label: 'COMMUNITY', text: 'Built for teams and leagues', color: 'green' }
|
||||
{ label: 'IDENTITY', text: 'Your racing career in one place', color: 'var(--ui-color-intent-primary)' },
|
||||
{ label: 'AUTOMATION', text: 'No more manual session setup', color: 'var(--ui-color-intent-telemetry)' },
|
||||
{ label: 'PRECISION', text: 'Real-time results and standings', color: 'var(--ui-color-intent-warning)' },
|
||||
{ label: 'COMMUNITY', text: 'Built for teams and leagues', color: 'var(--ui-color-intent-success)' }
|
||||
].map((item) => (
|
||||
<Stack key={item.label} gap={3} group cursor="default">
|
||||
<Stack display="flex" alignItems="center" gap={3}>
|
||||
<Stack w="1" h="3" bg={item.color === 'primary' ? 'primary-accent' : item.color === 'aqua' ? 'telemetry-aqua' : item.color === 'amber' ? 'warning-amber' : 'success-green'} />
|
||||
<Text size="xs" weight="bold" color="text-gray-500" uppercase letterSpacing="0.2em" groupHoverTextColor="white" transition>
|
||||
<Stack w="1" h="3" bg={item.color} />
|
||||
<Text size="xs" weight="bold" variant="low" uppercase letterSpacing="0.2em" groupHoverTextColor="var(--ui-color-text-high)" transition>
|
||||
{item.label}
|
||||
</Text>
|
||||
</Stack>
|
||||
<Text size="sm" color="text-gray-500" groupHoverTextColor="gray-300" transition leading="relaxed">
|
||||
<Text size="sm" variant="low" groupHoverTextColor="var(--ui-color-text-med)" transition leading="relaxed">
|
||||
{item.text}
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
Reference in New Issue
Block a user