feat: Links on homepage
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m29s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 52s
Deploy to Staging / Verify Staging (pull_request) Successful in 9s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m29s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 52s
Deploy to Staging / Verify Staging (pull_request) Successful in 9s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
This commit is contained in:
@@ -5,18 +5,20 @@ interface FeatureCardProps {
|
|||||||
description: string;
|
description: string;
|
||||||
imageSrc: string;
|
imageSrc: string;
|
||||||
imageAlt: string;
|
imageAlt: string;
|
||||||
|
href: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const FeatureCard = ({ title, description, imageSrc, imageAlt }: FeatureCardProps) => {
|
export const FeatureCard = ({ title, description, imageSrc, imageAlt, href }: FeatureCardProps) => {
|
||||||
return (
|
return (
|
||||||
<motion.div
|
<motion.div
|
||||||
className="group cursor-pointer"
|
className="group"
|
||||||
initial={{ opacity: 0, y: 20 }}
|
initial={{ opacity: 0, y: 20 }}
|
||||||
whileInView={{ opacity: 1, y: 0 }}
|
whileInView={{ opacity: 1, y: 0 }}
|
||||||
viewport={{ once: true, margin: '-50px' }}
|
viewport={{ once: true, margin: '-50px' }}
|
||||||
transition={{ duration: 0.5 }}
|
transition={{ duration: 0.5 }}
|
||||||
whileHover={{ y: -5 }}
|
whileHover={{ y: -5 }}
|
||||||
>
|
>
|
||||||
|
<a href={href} className="block">
|
||||||
<div className="overflow-hidden rounded-lg bg-white/5 border border-white/10 shadow-lg shadow-black/30 hover:border-white/20 hover:shadow-xl hover:shadow-black/40 transition-all duration-300">
|
<div className="overflow-hidden rounded-lg bg-white/5 border border-white/10 shadow-lg shadow-black/30 hover:border-white/20 hover:shadow-xl hover:shadow-black/40 transition-all duration-300">
|
||||||
<div className="relative h-56 overflow-hidden">
|
<div className="relative h-56 overflow-hidden">
|
||||||
<img
|
<img
|
||||||
@@ -30,6 +32,7 @@ export const FeatureCard = ({ title, description, imageSrc, imageAlt }: FeatureC
|
|||||||
<p className="text-titanio leading-relaxed">{description}</p>
|
<p className="text-titanio leading-relaxed">{description}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</a>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ type Feature = {
|
|||||||
title: string;
|
title: string;
|
||||||
description: string;
|
description: string;
|
||||||
image: UnsplashImageSpec;
|
image: UnsplashImageSpec;
|
||||||
|
href: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Centralize Unsplash identifiers so you only update them in one place if needed.
|
// Centralize Unsplash identifiers so you only update them in one place if needed.
|
||||||
@@ -69,6 +70,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Vehicle Management',
|
title: 'Vehicle Management',
|
||||||
description: 'Track all your vehicles in one centralized location with detailed information and history.',
|
description: 'Track all your vehicles in one centralized location with detailed information and history.',
|
||||||
|
href: '/guide#vehicles',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1503376780353-7e6692767b70',
|
photoId: '1503376780353-7e6692767b70',
|
||||||
alt: 'Vehicle Management',
|
alt: 'Vehicle Management',
|
||||||
@@ -77,6 +79,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Fuel Log Tracking',
|
title: 'Fuel Log Tracking',
|
||||||
description: 'Monitor fuel consumption, costs, and efficiency across all your vehicles.',
|
description: 'Monitor fuel consumption, costs, and efficiency across all your vehicles.',
|
||||||
|
href: '/guide#fuel-logs',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1529369623266-f5264b696110',
|
photoId: '1529369623266-f5264b696110',
|
||||||
alt: 'Fuel Log Tracking',
|
alt: 'Fuel Log Tracking',
|
||||||
@@ -85,6 +88,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Maintenance Records',
|
title: 'Maintenance Records',
|
||||||
description: 'Keep detailed maintenance logs and never miss scheduled service appointments.',
|
description: 'Keep detailed maintenance logs and never miss scheduled service appointments.',
|
||||||
|
href: '/guide#maintenance',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1486262715619-67b85e0b08d3',
|
photoId: '1486262715619-67b85e0b08d3',
|
||||||
alt: 'Maintenance Records',
|
alt: 'Maintenance Records',
|
||||||
@@ -93,6 +97,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Document Storage',
|
title: 'Document Storage',
|
||||||
description: 'Store and organize all vehicle documents, receipts, and important paperwork.',
|
description: 'Store and organize all vehicle documents, receipts, and important paperwork.',
|
||||||
|
href: '/guide#documents',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1568605117036-5fe5e7bab0b7',
|
photoId: '1568605117036-5fe5e7bab0b7',
|
||||||
alt: 'Document Storage',
|
alt: 'Document Storage',
|
||||||
@@ -101,6 +106,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Fuel Stations',
|
title: 'Fuel Stations',
|
||||||
description: 'Find and track your favorite fuel locations. Community verified stations with Premium 93 Octane.',
|
description: 'Find and track your favorite fuel locations. Community verified stations with Premium 93 Octane.',
|
||||||
|
href: '/guide#gas-stations',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1572281335102-5f780686ee91',
|
photoId: '1572281335102-5f780686ee91',
|
||||||
alt: 'Fuel Stations',
|
alt: 'Fuel Stations',
|
||||||
@@ -110,6 +116,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Reports & Analytics',
|
title: 'Reports & Analytics',
|
||||||
description: 'Generate detailed reports on costs, mileage, and vehicle performance.',
|
description: 'Generate detailed reports on costs, mileage, and vehicle performance.',
|
||||||
|
href: '/guide#dashboard',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1551288049-bebda4e38f71',
|
photoId: '1551288049-bebda4e38f71',
|
||||||
alt: 'Reports & Analytics',
|
alt: 'Reports & Analytics',
|
||||||
@@ -118,6 +125,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Reminders',
|
title: 'Reminders',
|
||||||
description: 'Set up automated reminders for maintenance, registration, and insurance renewals.',
|
description: 'Set up automated reminders for maintenance, registration, and insurance renewals.',
|
||||||
|
href: '/guide#maintenance-schedules',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1434494878577-86c23bcb06b9',
|
photoId: '1434494878577-86c23bcb06b9',
|
||||||
alt: 'Reminders',
|
alt: 'Reminders',
|
||||||
@@ -126,6 +134,7 @@ const features: readonly Feature[] = [
|
|||||||
{
|
{
|
||||||
title: 'Data Export',
|
title: 'Data Export',
|
||||||
description: 'Export your data in various formats for reporting and record keeping.',
|
description: 'Export your data in various formats for reporting and record keeping.',
|
||||||
|
href: '/guide#data-import-and-export',
|
||||||
image: {
|
image: {
|
||||||
photoId: '1460925895917-afdab827c52f',
|
photoId: '1460925895917-afdab827c52f',
|
||||||
alt: 'Data Export',
|
alt: 'Data Export',
|
||||||
@@ -152,6 +161,7 @@ export const FeaturesGrid = () => {
|
|||||||
description={feature.description}
|
description={feature.description}
|
||||||
imageSrc={buildUnsplashUrl(feature.image)}
|
imageSrc={buildUnsplashUrl(feature.image)}
|
||||||
imageAlt={feature.image.alt}
|
imageAlt={feature.image.alt}
|
||||||
|
href={feature.href}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user