Skip to content

Commit 9301cc3

Browse files
committed
Optimised static comp with .astro
1 parent 9c17e5c commit 9301cc3

File tree

7 files changed

+429
-390
lines changed

7 files changed

+429
-390
lines changed

www/src/components/Features.astro

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
import {
3+
RefreshCw,
4+
Building2,
5+
FolderTree,
6+
Activity,
7+
Lock,
8+
Heart,
9+
} from 'lucide-react';
10+
11+
const features = [
12+
{
13+
title: "Automated Mirroring",
14+
description: "Set it and forget it. Automatically sync your GitHub repositories to Gitea on a schedule.",
15+
icon: RefreshCw,
16+
gradient: "from-primary/10 to-accent/10",
17+
iconColor: "text-primary"
18+
},
19+
{
20+
title: "Bulk Operations",
21+
description: "Mirror entire organizations or user accounts with a single configuration.",
22+
icon: Building2,
23+
gradient: "from-accent/10 to-accent-teal/10",
24+
iconColor: "text-accent"
25+
},
26+
{
27+
title: "Preserve Structure",
28+
description: "Maintain your GitHub organization structure or customize how repos are organized.",
29+
icon: FolderTree,
30+
gradient: "from-accent-teal/10 to-primary/10",
31+
iconColor: "text-accent-teal"
32+
},
33+
{
34+
title: "Real-time Status",
35+
description: "Monitor mirror progress with live updates and detailed activity logs.",
36+
icon: Activity,
37+
gradient: "from-accent-coral/10 to-primary/10",
38+
iconColor: "text-accent-coral"
39+
},
40+
{
41+
title: "Secure & Private",
42+
description: "Self-hosted solution keeps your code on your infrastructure with full control.",
43+
icon: Lock,
44+
gradient: "from-accent-purple/10 to-primary/10",
45+
iconColor: "text-accent-purple"
46+
},
47+
{
48+
title: "Open Source",
49+
description: "Free, transparent, and community-driven development. Contribute and customize.",
50+
icon: Heart,
51+
gradient: "from-primary/10 to-accent-purple/10",
52+
iconColor: "text-primary"
53+
}
54+
];
55+
---
56+
57+
<section id="features" class="py-16 sm:py-24 px-4 sm:px-6 lg:px-8">
58+
<div class="max-w-7xl mx-auto">
59+
<div class="text-center mb-12 sm:mb-16">
60+
<h2 class="text-2xl sm:text-3xl md:text-4xl font-bold tracking-tight px-4">
61+
Everything You Need for
62+
<span class="text-gradient from-primary to-accent block sm:inline"> Reliable Backups</span>
63+
</h2>
64+
<p class="mt-4 text-base sm:text-lg text-muted-foreground max-w-2xl mx-auto px-4">
65+
Powerful features designed to keep your code safe and accessible, no matter what happens.
66+
</p>
67+
</div>
68+
69+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-6 lg:gap-8">
70+
{features.map((feature) => {
71+
const Icon = feature.icon;
72+
return (
73+
<div
74+
class={`group relative p-6 sm:p-8 rounded-xl sm:rounded-2xl border bg-gradient-to-br ${feature.gradient} backdrop-blur-sm hover:shadow-lg hover:shadow-primary/10 transition-all duration-300 hover:-translate-y-1 hover:border-primary/30 overflow-hidden`}
75+
>
76+
<div class="absolute inset-0 bg-gradient-to-br from-transparent to-background/50 opacity-0 group-hover:opacity-100 transition-opacity duration-500" />
77+
<div class="relative">
78+
<div class={`inline-flex p-2.5 sm:p-3 rounded-lg bg-background/80 backdrop-blur-sm mb-3 sm:mb-4 ${feature.iconColor} shadow-sm`}>
79+
<Icon className="w-5 h-5 sm:w-6 sm:h-6" />
80+
</div>
81+
82+
<h3 class="text-lg sm:text-xl font-semibold mb-2">{feature.title}</h3>
83+
<p class="text-sm sm:text-base text-muted-foreground">{feature.description}</p>
84+
</div>
85+
</div>
86+
);
87+
})}
88+
</div>
89+
</div>
90+
</section>

www/src/components/Features.tsx

Lines changed: 0 additions & 94 deletions
This file was deleted.

www/src/components/Footer.astro

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
import { Github, Book, MessageSquare, Bug } from 'lucide-react';
3+
4+
const links = [
5+
{
6+
title: "Source Code",
7+
href: "https://github.com/RayLabsHQ/gitea-mirror",
8+
icon: Github
9+
},
10+
{
11+
title: "Documentation",
12+
href: "https://github.com/RayLabsHQ/gitea-mirror/tree/main/docs",
13+
icon: Book
14+
},
15+
{
16+
title: "Discussions",
17+
href: "https://github.com/RayLabsHQ/gitea-mirror/discussions",
18+
icon: MessageSquare
19+
},
20+
{
21+
title: "Report Issue",
22+
href: "https://github.com/RayLabsHQ/gitea-mirror/issues",
23+
icon: Bug
24+
}
25+
];
26+
27+
const currentYear = new Date().getFullYear();
28+
---
29+
30+
<footer class="border-t py-8 sm:py-12 px-4 sm:px-6 lg:px-8">
31+
<div class="max-w-7xl mx-auto">
32+
<div class="flex flex-col items-center gap-6 sm:gap-8">
33+
<!-- Logo and tagline -->
34+
<div class="text-center">
35+
<div class="flex items-center justify-center gap-2 mb-2">
36+
<img
37+
src="/logo-light.svg"
38+
alt="Gitea Mirror"
39+
class="w-6 h-6 sm:w-8 sm:h-8 dark:hidden"
40+
/>
41+
<img
42+
src="/logo-dark.svg"
43+
alt="Gitea Mirror"
44+
class="w-6 h-6 sm:w-8 sm:h-8 hidden dark:block"
45+
/>
46+
<span class="font-semibold text-base sm:text-lg">Gitea Mirror</span>
47+
</div>
48+
<p class="text-xs sm:text-sm text-muted-foreground">
49+
Keep your GitHub code safe and synced
50+
</p>
51+
</div>
52+
53+
<!-- Links -->
54+
<nav class="grid grid-cols-2 sm:flex items-center justify-center gap-4 sm:gap-6 text-center">
55+
{links.map((link) => {
56+
const Icon = link.icon;
57+
return (
58+
<a
59+
href={link.href}
60+
target="_blank"
61+
rel="noopener noreferrer"
62+
class="flex items-center justify-center gap-2 text-xs sm:text-sm text-muted-foreground hover:text-foreground transition-colors py-2 sm:py-0"
63+
>
64+
<Icon className="w-3 h-3 sm:w-4 sm:h-4" />
65+
<span>{link.title}</span>
66+
</a>
67+
);
68+
})}
69+
</nav>
70+
71+
<!-- Copyright -->
72+
<div class="text-center text-xs sm:text-sm text-muted-foreground px-4">
73+
<p{currentYear} Gitea Mirror. Open source under GPL-3.0 License.</p>
74+
<p class="mt-1">
75+
Made with dedication by the{' '}
76+
<a
77+
href="https://github.com/RayLabsHQ"
78+
class="underline hover:text-foreground transition-colors"
79+
target="_blank"
80+
rel="noopener noreferrer"
81+
>
82+
RayLabs team
83+
</a>
84+
</p>
85+
</div>
86+
</div>
87+
</div>
88+
</footer>

www/src/components/Footer.tsx

Lines changed: 0 additions & 90 deletions
This file was deleted.

0 commit comments

Comments
 (0)