@vudovn/antigravity-kit 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +311 -0
- package/bin/index.js +240 -0
- package/package.json +39 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/templates/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/core.py +245 -0
- package/templates/.agent/.shared/ui-ux-pro-max/scripts/search.py +69 -0
- package/templates/.agent/rules/01-identity.md +17 -0
- package/templates/.agent/rules/02-task-classification.md +36 -0
- package/templates/.agent/rules/03-mode-consulting.md +54 -0
- package/templates/.agent/rules/04-mode-build.md +54 -0
- package/templates/.agent/rules/05-mode-debug.md +66 -0
- package/templates/.agent/rules/06-mode-optimize.md +64 -0
- package/templates/.agent/rules/07-technical-standards.md +61 -0
- package/templates/.agent/rules/08-communication.md +34 -0
- package/templates/.agent/rules/09-checklist.md +45 -0
- package/templates/.agent/rules/10-special-situations.md +81 -0
- package/templates/.agent/skills/accessibility-expert/SKILL.md +430 -0
- package/templates/.agent/skills/ai-sdk-expert/SKILL.md +541 -0
- package/templates/.agent/skills/auth-expert/SKILL.md +105 -0
- package/templates/.agent/skills/cli-expert/SKILL.md +848 -0
- package/templates/.agent/skills/code-review/SKILL.md +424 -0
- package/templates/.agent/skills/css-expert/SKILL.md +401 -0
- package/templates/.agent/skills/database-expert/SKILL.md +324 -0
- package/templates/.agent/skills/devops-expert/SKILL.md +784 -0
- package/templates/.agent/skills/docker-expert/SKILL.md +409 -0
- package/templates/.agent/skills/documentation-expert/SKILL.md +493 -0
- package/templates/.agent/skills/git-expert/SKILL.md +522 -0
- package/templates/.agent/skills/github-actions-expert/SKILL.md +454 -0
- package/templates/.agent/skills/jest-expert/SKILL.md +957 -0
- package/templates/.agent/skills/mongodb-expert/SKILL.md +761 -0
- package/templates/.agent/skills/nestjs-expert/SKILL.md +552 -0
- package/templates/.agent/skills/nextjs-expert/SKILL.md +443 -0
- package/templates/.agent/skills/nodejs-expert/SKILL.md +192 -0
- package/templates/.agent/skills/oracle/SKILL.md +340 -0
- package/templates/.agent/skills/playwright-expert/SKILL.md +214 -0
- package/templates/.agent/skills/postgres-expert/SKILL.md +642 -0
- package/templates/.agent/skills/prisma-expert/SKILL.md +355 -0
- package/templates/.agent/skills/react-expert/SKILL.md +310 -0
- package/templates/.agent/skills/react-performance/SKILL.md +816 -0
- package/templates/.agent/skills/refactoring-expert/SKILL.md +394 -0
- package/templates/.agent/skills/research-expert/SKILL.md +231 -0
- package/templates/.agent/skills/rest-api-expert/SKILL.md +469 -0
- package/templates/.agent/skills/state-management-expert/SKILL.md +157 -0
- package/templates/.agent/skills/testing-expert/SKILL.md +621 -0
- package/templates/.agent/skills/triage-expert/SKILL.md +419 -0
- package/templates/.agent/skills/typescript-expert/SKILL.md +429 -0
- package/templates/.agent/skills/typescript-type/SKILL.md +790 -0
- package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +228 -0
- package/templates/.agent/skills/vite-expert/SKILL.md +785 -0
- package/templates/.agent/skills/vitest-expert/SKILL.md +325 -0
- package/templates/.agent/skills/webpack-expert/SKILL.md +745 -0
- package/templates/.agent/workflows/request.md +82 -0
- package/templates/.agent/workflows/ui-ux-pro-max.md +231 -0
- package/templates/web/README.md +36 -0
- package/templates/web/eslint.config.mjs +18 -0
- package/templates/web/next.config.ts +8 -0
- package/templates/web/package-lock.json +6549 -0
- package/templates/web/package.json +27 -0
- package/templates/web/postcss.config.mjs +7 -0
- package/templates/web/public/favicon.ico +0 -0
- package/templates/web/public/images/antigravity-kit-logo.png +0 -0
- package/templates/web/public/images/claudekit.png +0 -0
- package/templates/web/public/images/logo.png +0 -0
- package/templates/web/src/app/globals.css +276 -0
- package/templates/web/src/app/layout.tsx +55 -0
- package/templates/web/src/app/page.tsx +23 -0
- package/templates/web/src/components/Credits.tsx +162 -0
- package/templates/web/src/components/Features.tsx +92 -0
- package/templates/web/src/components/Footer.tsx +74 -0
- package/templates/web/src/components/Hero.tsx +117 -0
- package/templates/web/src/components/HowItWorks.tsx +96 -0
- package/templates/web/src/components/Navbar.tsx +87 -0
- package/templates/web/src/components/Skills.tsx +182 -0
- package/templates/web/tsconfig.json +34 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Social Icons
|
|
2
|
+
const GitHubIcon = () => (
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-5 h-5">
|
|
4
|
+
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
|
5
|
+
</svg>
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
const HeartIcon = () => (
|
|
9
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4 text-red-500">
|
|
10
|
+
<path d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z" />
|
|
11
|
+
</svg>
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const CoffeeIcon = () => (
|
|
15
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-5 h-5">
|
|
16
|
+
<path fillRule="evenodd" d="M3.75 6a.75.75 0 0 1 .75-.75h13.5a.75.75 0 0 1 0 1.5H4.5a.75.75 0 0 1-.75-.75ZM3.75 12a.75.75 0 0 1 .75-.75h13.5a.75.75 0 0 1 0 1.5H4.5a.75.75 0 0 1-.75-.75Z" clipRule="evenodd" />
|
|
17
|
+
<path d="M5.25 9.75a.75.75 0 0 0 0 1.5h9a.75.75 0 0 0 0-1.5h-9ZM3.75 18a.75.75 0 0 1 .75-.75h9a.75.75 0 0 1 0 1.5h-9a.75.75 0 0 1-.75-.75ZM18.75 7.5a2.25 2.25 0 0 0 0 4.5h.75a.75.75 0 0 0 .75-.75v-3a.75.75 0 0 0-.75-.75h-.75Z" />
|
|
18
|
+
</svg>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export default function Footer() {
|
|
22
|
+
return (
|
|
23
|
+
<footer className="border-t border-[var(--color-border)] py-12">
|
|
24
|
+
<div className="container-content px-4">
|
|
25
|
+
<div className="flex flex-col md:flex-row items-center justify-between gap-6">
|
|
26
|
+
{/* Made with love */}
|
|
27
|
+
<div className="flex items-center gap-2 text-[var(--color-text-secondary)]">
|
|
28
|
+
<span>Made with</span>
|
|
29
|
+
<HeartIcon />
|
|
30
|
+
<span>by</span>
|
|
31
|
+
<a
|
|
32
|
+
href="https://github.com/vudovn"
|
|
33
|
+
target="_blank"
|
|
34
|
+
rel="noopener noreferrer"
|
|
35
|
+
className="text-white hover:text-[var(--color-accent)] transition-colors cursor-pointer"
|
|
36
|
+
>
|
|
37
|
+
VudoVN
|
|
38
|
+
</a>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
{/* Links */}
|
|
42
|
+
<div className="flex items-center gap-4">
|
|
43
|
+
{/* GitHub */}
|
|
44
|
+
<a
|
|
45
|
+
href="https://github.com/vudovn/antigravity-kit"
|
|
46
|
+
target="_blank"
|
|
47
|
+
rel="noopener noreferrer"
|
|
48
|
+
className="p-2 rounded-lg bg-[var(--color-bg-card)] border border-[var(--color-border)] hover:border-[var(--color-border-hover)] transition-colors cursor-pointer"
|
|
49
|
+
aria-label="GitHub Repository"
|
|
50
|
+
>
|
|
51
|
+
<GitHubIcon />
|
|
52
|
+
</a>
|
|
53
|
+
|
|
54
|
+
{/* Buy me a coffee */}
|
|
55
|
+
<a
|
|
56
|
+
href="https://img.vietqr.io/image/mbbank-0779330918-compact2.jpg"
|
|
57
|
+
target="_blank"
|
|
58
|
+
rel="noopener noreferrer"
|
|
59
|
+
className="flex items-center gap-2 px-4 py-2 rounded-lg bg-amber-500/10 border border-amber-500/30 text-amber-400 hover:bg-amber-500/20 transition-colors cursor-pointer"
|
|
60
|
+
>
|
|
61
|
+
<CoffeeIcon />
|
|
62
|
+
<span className="text-sm">Buy me a coffee</span>
|
|
63
|
+
</a>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
{/* Copyright */}
|
|
68
|
+
<div className="mt-8 text-center text-[var(--color-text-muted)] text-sm">
|
|
69
|
+
© {new Date().getFullYear()} Antigravity Kit. MIT License.
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</footer>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// SVG Icons
|
|
2
|
+
const ArrowRightIcon = () => (
|
|
3
|
+
<svg
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
viewBox="0 0 20 20"
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
className="w-5 h-5"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fillRule="evenodd"
|
|
11
|
+
d="M3 10a.75.75 0 0 1 .75-.75h10.638L10.23 5.29a.75.75 0 1 1 1.04-1.08l5.5 5.25a.75.75 0 0 1 0 1.08l-5.5 5.25a.75.75 0 1 1-1.04-1.08l4.158-3.96H3.75A.75.75 0 0 1 3 10Z"
|
|
12
|
+
clipRule="evenodd"
|
|
13
|
+
/>
|
|
14
|
+
</svg>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
const GitHubIcon = () => (
|
|
18
|
+
<svg
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
viewBox="0 0 24 24"
|
|
21
|
+
fill="currentColor"
|
|
22
|
+
className="w-5 h-5"
|
|
23
|
+
>
|
|
24
|
+
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
|
25
|
+
</svg>
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const SparklesIcon = () => (
|
|
29
|
+
<svg
|
|
30
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
31
|
+
viewBox="0 0 24 24"
|
|
32
|
+
fill="currentColor"
|
|
33
|
+
className="w-4 h-4"
|
|
34
|
+
>
|
|
35
|
+
<path
|
|
36
|
+
fillRule="evenodd"
|
|
37
|
+
d="M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z"
|
|
38
|
+
clipRule="evenodd"
|
|
39
|
+
/>
|
|
40
|
+
</svg>
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
// Stats data
|
|
44
|
+
const stats = [
|
|
45
|
+
{ value: "35+", label: "Skills" },
|
|
46
|
+
{ value: "10", label: "Rules" },
|
|
47
|
+
{ value: "57", label: "UI Styles" },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
export default function Hero() {
|
|
51
|
+
return (
|
|
52
|
+
<section className="relative min-h-screen flex items-center justify-center overflow-hidden pt-24 pb-16">
|
|
53
|
+
{/* Background Glows */}
|
|
54
|
+
<div className="bg-glow bg-glow-accent top-0 left-1/2 -translate-x-1/2 -translate-y-1/4 animate-pulse-glow" />
|
|
55
|
+
<div className="bg-glow bg-glow-purple top-1/4 right-0 translate-x-1/4" />
|
|
56
|
+
|
|
57
|
+
<div className="container-content relative z-10 text-center px-4">
|
|
58
|
+
{/* Badge */}
|
|
59
|
+
<div className="inline-flex items-center gap-2 mb-8">
|
|
60
|
+
<span className="badge badge-accent">
|
|
61
|
+
<SparklesIcon />
|
|
62
|
+
AI Agent Toolkit
|
|
63
|
+
</span>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
{/* Headline */}
|
|
67
|
+
<h1 className="heading-xl mb-6 max-w-4xl mx-auto">
|
|
68
|
+
<span className="gradient-text">Supercharge</span> Your AI Coding
|
|
69
|
+
Assistant for Antigravity
|
|
70
|
+
</h1>
|
|
71
|
+
|
|
72
|
+
{/* Subheadline */}
|
|
73
|
+
<p className="text-body text-lg md:text-xl max-w-2xl mx-auto mb-10">
|
|
74
|
+
A comprehensive collection of{" "}
|
|
75
|
+
<span className="text-white font-medium">skills</span>,{" "}
|
|
76
|
+
<span className="text-white font-medium">rules</span>, and{" "}
|
|
77
|
+
<span className="text-white font-medium">workflows</span> to expand
|
|
78
|
+
the capabilities of AI coding agents.
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
{/* CTA Buttons */}
|
|
82
|
+
<div className="flex flex-col sm:flex-row items-center justify-center gap-4 mb-16">
|
|
83
|
+
<a href="#how-it-works" className="btn-primary">
|
|
84
|
+
Get Started
|
|
85
|
+
<ArrowRightIcon />
|
|
86
|
+
</a>
|
|
87
|
+
<a
|
|
88
|
+
href="https://github.com/vudovn/antigravity-kit"
|
|
89
|
+
target="_blank"
|
|
90
|
+
rel="noopener noreferrer"
|
|
91
|
+
className="btn-secondary"
|
|
92
|
+
>
|
|
93
|
+
<GitHubIcon />
|
|
94
|
+
View on GitHub
|
|
95
|
+
</a>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
{/* Stats */}
|
|
99
|
+
<div className="flex flex-wrap items-center justify-center gap-8 md:gap-12">
|
|
100
|
+
{stats.map((stat) => (
|
|
101
|
+
<div key={stat.label} className="text-center">
|
|
102
|
+
<div className="text-3xl md:text-4xl font-bold text-white mb-1">
|
|
103
|
+
{stat.value}
|
|
104
|
+
</div>
|
|
105
|
+
<div className="text-sm text-[var(--color-text-secondary)]">
|
|
106
|
+
{stat.label}
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
))}
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
{/* Bottom Gradient Fade */}
|
|
114
|
+
<div className="absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-[var(--color-bg-base)] to-transparent pointer-events-none" />
|
|
115
|
+
</section>
|
|
116
|
+
);
|
|
117
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Step Icons
|
|
2
|
+
const FolderIcon = () => (
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-6 h-6">
|
|
4
|
+
<path d="M19.906 9c.382 0 .749.057 1.094.162V9a3 3 0 0 0-3-3h-3.879a.75.75 0 0 1-.53-.22L11.47 3.66A2.25 2.25 0 0 0 9.879 3H6a3 3 0 0 0-3 3v3.162A3.756 3.756 0 0 1 4.094 9h15.812ZM4.094 10.5a2.25 2.25 0 0 0-2.227 2.568l.857 6A2.25 2.25 0 0 0 4.951 21H19.05a2.25 2.25 0 0 0 2.227-1.932l.857-6a2.25 2.25 0 0 0-2.227-2.568H4.094Z" />
|
|
5
|
+
</svg>
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
const CommandLineIcon = () => (
|
|
9
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-6 h-6">
|
|
10
|
+
<path fillRule="evenodd" d="M2.25 6a3 3 0 0 1 3-3h13.5a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V6Zm3.97.97a.75.75 0 0 1 1.06 0l2.25 2.25a.75.75 0 0 1 0 1.06l-2.25 2.25a.75.75 0 0 1-1.06-1.06l1.72-1.72-1.72-1.72a.75.75 0 0 1 0-1.06Zm4.28 4.28a.75.75 0 0 0 0 1.5h3a.75.75 0 0 0 0-1.5h-3Z" clipRule="evenodd" />
|
|
11
|
+
</svg>
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
const RocketLaunchIcon = () => (
|
|
15
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-6 h-6">
|
|
16
|
+
<path fillRule="evenodd" d="M9.315 7.584C12.195 3.883 16.695 1.5 21.75 1.5a.75.75 0 0 1 .75.75c0 5.056-2.383 9.555-6.084 12.436A6.75 6.75 0 0 1 9.75 22.5a.75.75 0 0 1-.75-.75v-4.131A15.838 15.838 0 0 1 6.382 15H2.25a.75.75 0 0 1-.75-.75 6.75 6.75 0 0 1 7.815-6.666ZM15 6.75a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Z" clipRule="evenodd" />
|
|
17
|
+
<path d="M5.26 17.242a.75.75 0 1 0-.897-1.203 5.243 5.243 0 0 0-2.05 5.022.75.75 0 0 0 .625.627 5.243 5.243 0 0 0 5.022-2.051.75.75 0 1 0-1.202-.897 3.744 3.744 0 0 1-3.008 1.51c0-1.23.592-2.323 1.51-3.008Z" />
|
|
18
|
+
</svg>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const steps = [
|
|
22
|
+
{
|
|
23
|
+
icon: <FolderIcon />,
|
|
24
|
+
title: "Clone the Repository",
|
|
25
|
+
description: "Get the toolkit from GitHub",
|
|
26
|
+
code: "git clone https://github.com/vudovn/antigravity-kit.git",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
icon: <CommandLineIcon />,
|
|
30
|
+
title: "Copy to Your Project",
|
|
31
|
+
description: "Add the .agent folder to your workspace",
|
|
32
|
+
code: "cp -r antigravity-kit/.agent your-project/",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
icon: <RocketLaunchIcon />,
|
|
36
|
+
title: "Start Using",
|
|
37
|
+
description: "Skills auto-apply, invoke workflows with slash commands",
|
|
38
|
+
code: "Your prompt",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
export default function HowItWorks() {
|
|
43
|
+
return (
|
|
44
|
+
<section id="how-it-works" className="section relative overflow-hidden">
|
|
45
|
+
{/* Background Glow */}
|
|
46
|
+
<div className="bg-glow bg-glow-accent right-0 top-0 translate-x-1/2" />
|
|
47
|
+
|
|
48
|
+
<div className="container-content relative z-10">
|
|
49
|
+
{/* Section Header */}
|
|
50
|
+
<div className="text-center mb-16">
|
|
51
|
+
<h2 className="heading-lg mb-4">
|
|
52
|
+
Get Started in <span className="gradient-text">3 Steps</span>
|
|
53
|
+
</h2>
|
|
54
|
+
<p className="text-body max-w-2xl mx-auto">
|
|
55
|
+
Simple installation process to unlock powerful AI agent
|
|
56
|
+
capabilities in your project.
|
|
57
|
+
</p>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
{/* Steps */}
|
|
61
|
+
<div className="grid md:grid-cols-3 gap-8">
|
|
62
|
+
{steps.map((step, index) => (
|
|
63
|
+
<div key={index} className="relative">
|
|
64
|
+
{/* Step Number */}
|
|
65
|
+
<div className="absolute -top-4 -left-4 w-8 h-8 rounded-full bg-[var(--color-accent)] flex items-center justify-center text-white font-bold text-sm">
|
|
66
|
+
{index + 1}
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div className="glass-card p-6 h-full">
|
|
70
|
+
{/* Icon */}
|
|
71
|
+
<div className="icon-wrapper mb-4">{step.icon}</div>
|
|
72
|
+
|
|
73
|
+
{/* Title */}
|
|
74
|
+
<h3 className="heading-md mb-2">{step.title}</h3>
|
|
75
|
+
|
|
76
|
+
{/* Description */}
|
|
77
|
+
<p className="text-body text-sm mb-4">{step.description}</p>
|
|
78
|
+
|
|
79
|
+
{/* Code Block */}
|
|
80
|
+
<div className="code-block">
|
|
81
|
+
<code className="text-[var(--color-accent)]">{step.code}</code>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
{/* Connector Line (not on last item) */}
|
|
86
|
+
{index < steps.length - 1 && (
|
|
87
|
+
<div className="hidden md:block absolute top-1/2 -right-4 w-8 h-[2px] bg-[var(--color-border)]" />
|
|
88
|
+
)}
|
|
89
|
+
</div>
|
|
90
|
+
))}
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
</div>
|
|
94
|
+
</section>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import Link from "next/link";
|
|
2
|
+
|
|
3
|
+
// SVG Icons
|
|
4
|
+
const RocketIcon = () => (
|
|
5
|
+
<svg
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
className="w-6 h-6"
|
|
10
|
+
>
|
|
11
|
+
<path
|
|
12
|
+
fillRule="evenodd"
|
|
13
|
+
d="M9.315 7.584C12.195 3.883 16.695 1.5 21.75 1.5a.75.75 0 0 1 .75.75c0 5.056-2.383 9.555-6.084 12.436A6.75 6.75 0 0 1 9.75 22.5a.75.75 0 0 1-.75-.75v-4.131A15.838 15.838 0 0 1 6.382 15H2.25a.75.75 0 0 1-.75-.75 6.75 6.75 0 0 1 7.815-6.666ZM15 6.75a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Z"
|
|
14
|
+
clipRule="evenodd"
|
|
15
|
+
/>
|
|
16
|
+
<path d="M5.26 17.242a.75.75 0 1 0-.897-1.203 5.243 5.243 0 0 0-2.05 5.022.75.75 0 0 0 .625.627 5.243 5.243 0 0 0 5.022-2.051.75.75 0 1 0-1.202-.897 3.744 3.744 0 0 1-3.008 1.51c0-1.23.592-2.323 1.51-3.008Z" />
|
|
17
|
+
</svg>
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const GitHubIcon = () => (
|
|
21
|
+
<svg
|
|
22
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
23
|
+
viewBox="0 0 24 24"
|
|
24
|
+
fill="currentColor"
|
|
25
|
+
className="w-5 h-5"
|
|
26
|
+
>
|
|
27
|
+
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
|
|
28
|
+
</svg>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
export default function Navbar() {
|
|
32
|
+
return (
|
|
33
|
+
<nav className="fixed top-4 left-4 right-4 z-50">
|
|
34
|
+
<div className="glass-navbar rounded-full max-w-4xl mx-auto px-6 py-3 flex items-center justify-between">
|
|
35
|
+
{/* Logo */}
|
|
36
|
+
<Link href="/" className="flex items-center gap-2 cursor-pointer">
|
|
37
|
+
<div className="text-[var(--color-accent)]">
|
|
38
|
+
{/* <RocketIcon /> */}
|
|
39
|
+
<img src="/images/logo.png" alt="Logo" className="w-5" />
|
|
40
|
+
</div>
|
|
41
|
+
<span className="font-semibold text-lg hidden sm:inline">
|
|
42
|
+
Antigravity Kit
|
|
43
|
+
</span>
|
|
44
|
+
</Link>
|
|
45
|
+
|
|
46
|
+
{/* Navigation Links */}
|
|
47
|
+
<div className="hidden md:flex items-center gap-6">
|
|
48
|
+
<a
|
|
49
|
+
href="#features"
|
|
50
|
+
className="text-[var(--color-text-secondary)] hover:text-white transition-colors cursor-pointer"
|
|
51
|
+
>
|
|
52
|
+
Features
|
|
53
|
+
</a>
|
|
54
|
+
<a
|
|
55
|
+
href="#skills"
|
|
56
|
+
className="text-[var(--color-text-secondary)] hover:text-white transition-colors cursor-pointer"
|
|
57
|
+
>
|
|
58
|
+
Skills
|
|
59
|
+
</a>
|
|
60
|
+
<a
|
|
61
|
+
href="#how-it-works"
|
|
62
|
+
className="text-[var(--color-text-secondary)] hover:text-white transition-colors cursor-pointer"
|
|
63
|
+
>
|
|
64
|
+
How It Works
|
|
65
|
+
</a>
|
|
66
|
+
<a
|
|
67
|
+
href="#credits"
|
|
68
|
+
className="text-[var(--color-text-secondary)] hover:text-white transition-colors cursor-pointer"
|
|
69
|
+
>
|
|
70
|
+
Credits
|
|
71
|
+
</a>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
{/* GitHub Link */}
|
|
75
|
+
<a
|
|
76
|
+
href="https://github.com/vudovn/antigravity-kit"
|
|
77
|
+
target="_blank"
|
|
78
|
+
rel="noopener noreferrer"
|
|
79
|
+
className="flex items-center gap-2 px-4 py-2 rounded-full bg-[var(--color-bg-card)] border border-[var(--color-border)] hover:border-[var(--color-border-hover)] transition-colors cursor-pointer"
|
|
80
|
+
>
|
|
81
|
+
<GitHubIcon />
|
|
82
|
+
<span className="hidden sm:inline text-sm">GitHub</span>
|
|
83
|
+
</a>
|
|
84
|
+
</div>
|
|
85
|
+
</nav>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
|
|
5
|
+
// Category Icons
|
|
6
|
+
const CodeIcon = () => (
|
|
7
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
8
|
+
<path fillRule="evenodd" d="M14.447 3.026a.75.75 0 0 1 .527.921l-4.5 16.5a.75.75 0 0 1-1.448-.394l4.5-16.5a.75.75 0 0 1 .921-.527ZM16.72 6.22a.75.75 0 0 1 1.06 0l5.25 5.25a.75.75 0 0 1 0 1.06l-5.25 5.25a.75.75 0 1 1-1.06-1.06L21.44 12l-4.72-4.72a.75.75 0 0 1 0-1.06Zm-9.44 0a.75.75 0 0 1 0 1.06L2.56 12l4.72 4.72a.75.75 0 0 1-1.06 1.06L.97 12.53a.75.75 0 0 1 0-1.06l5.25-5.25a.75.75 0 0 1 1.06 0Z" clipRule="evenodd" />
|
|
9
|
+
</svg>
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
const ServerIcon = () => (
|
|
13
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
14
|
+
<path d="M4.08 5.227A3 3 0 0 1 6.979 3H17.02a3 3 0 0 1 2.9 2.227l2.113 7.926A5.228 5.228 0 0 0 18.75 12H5.25a5.228 5.228 0 0 0-3.284 1.153L4.08 5.227Z" />
|
|
15
|
+
<path fillRule="evenodd" d="M5.25 13.5a3.75 3.75 0 1 0 0 7.5h13.5a3.75 3.75 0 1 0 0-7.5H5.25Zm10.5 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm3.75-.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z" clipRule="evenodd" />
|
|
16
|
+
</svg>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const CircleStackIcon = () => (
|
|
20
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
21
|
+
<path d="M21 6.375c0 2.692-4.03 4.875-9 4.875S3 9.067 3 6.375 7.03 1.5 12 1.5s9 2.183 9 4.875Z" />
|
|
22
|
+
<path d="M12 12.75c2.685 0 5.19-.586 7.078-1.609a8.283 8.283 0 0 0 1.897-1.384c.016.121.025.244.025.368 0 2.692-4.03 4.875-9 4.875s-9-2.183-9-4.875c0-.124.009-.247.025-.368a8.285 8.285 0 0 0 1.897 1.384C6.809 12.164 9.315 12.75 12 12.75Z" />
|
|
23
|
+
<path d="M12 18.75c2.685 0 5.19-.586 7.078-1.609a8.282 8.282 0 0 0 1.897-1.384c.016.121.025.244.025.368 0 2.692-4.03 4.875-9 4.875s-9-2.183-9-4.875c0-.124.009-.247.025-.368a8.284 8.284 0 0 0 1.897 1.384C6.809 18.164 9.315 18.75 12 18.75Z" />
|
|
24
|
+
</svg>
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const BeakerIcon = () => (
|
|
28
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
29
|
+
<path fillRule="evenodd" d="M10.5 3.798v5.02a3 3 0 0 1-.879 2.121l-2.377 2.377a9.845 9.845 0 0 1 5.091 1.013 8.315 8.315 0 0 0 5.713.636l.285-.071-3.954-3.955a3 3 0 0 1-.879-2.121v-5.02a23.614 23.614 0 0 0-3 0Zm4.5.138a.75.75 0 0 0 .093-1.495A24.837 24.837 0 0 0 12 2.25a25.048 25.048 0 0 0-3.093.191A.75.75 0 0 0 9 3.936v4.882a1.5 1.5 0 0 1-.44 1.06l-6.293 6.294c-1.62 1.621-.903 4.475 1.471 4.88 2.686.46 5.447.698 8.262.698 2.816 0 5.576-.239 8.262-.697 2.373-.406 3.092-3.26 1.47-4.881L15.44 9.879A1.5 1.5 0 0 1 15 8.818V3.936Z" clipRule="evenodd" />
|
|
30
|
+
</svg>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
const CloudIcon = () => (
|
|
34
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
35
|
+
<path fillRule="evenodd" d="M4.5 9.75a6 6 0 0 1 11.573-2.226 3.75 3.75 0 0 1 4.133 4.303A4.5 4.5 0 0 1 18 20.25H6.75a5.25 5.25 0 0 1-2.23-10.004 6.072 6.072 0 0 1-.02-.496Z" clipRule="evenodd" />
|
|
36
|
+
</svg>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const SparklesIcon = () => (
|
|
40
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-4 h-4">
|
|
41
|
+
<path fillRule="evenodd" d="M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5Z" clipRule="evenodd" />
|
|
42
|
+
</svg>
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// Skills data by category
|
|
46
|
+
const skillCategories = [
|
|
47
|
+
{
|
|
48
|
+
id: "frontend",
|
|
49
|
+
name: "Frontend",
|
|
50
|
+
icon: <CodeIcon />,
|
|
51
|
+
skills: [
|
|
52
|
+
{ name: "react-expert", description: "React 18/19, hooks, patterns, performance" },
|
|
53
|
+
{ name: "nextjs-expert", description: "App Router, Server Components, SSR" },
|
|
54
|
+
{ name: "css-expert", description: "CSS architecture, responsive, design systems" },
|
|
55
|
+
{ name: "state-management-expert", description: "Redux, Zustand, React Query" },
|
|
56
|
+
{ name: "ui-ux-pro-max", description: "50 styles, 21 palettes, 50 font pairings" },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "backend",
|
|
61
|
+
name: "Backend",
|
|
62
|
+
icon: <ServerIcon />,
|
|
63
|
+
skills: [
|
|
64
|
+
{ name: "nodejs-expert", description: "Async patterns, modules, performance" },
|
|
65
|
+
{ name: "nestjs-expert", description: "Module architecture, DI, testing" },
|
|
66
|
+
{ name: "rest-api-expert", description: "RESTful design, HTTP semantics" },
|
|
67
|
+
{ name: "auth-expert", description: "JWT, OAuth 2.0, RBAC, security" },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "database",
|
|
72
|
+
name: "Database",
|
|
73
|
+
icon: <CircleStackIcon />,
|
|
74
|
+
skills: [
|
|
75
|
+
{ name: "prisma-expert", description: "Schema design, migrations, queries" },
|
|
76
|
+
{ name: "database-expert", description: "General database optimization" },
|
|
77
|
+
{ name: "postgres-expert", description: "PostgreSQL-specific patterns" },
|
|
78
|
+
{ name: "mongodb-expert", description: "MongoDB document modeling" },
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "testing",
|
|
83
|
+
name: "Testing",
|
|
84
|
+
icon: <BeakerIcon />,
|
|
85
|
+
skills: [
|
|
86
|
+
{ name: "testing-expert", description: "General testing strategies" },
|
|
87
|
+
{ name: "jest-expert", description: "Jest framework, mocking" },
|
|
88
|
+
{ name: "vitest-expert", description: "Vitest, Vite integration" },
|
|
89
|
+
{ name: "playwright-expert", description: "E2E testing, browser automation" },
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: "devops",
|
|
94
|
+
name: "DevOps",
|
|
95
|
+
icon: <CloudIcon />,
|
|
96
|
+
skills: [
|
|
97
|
+
{ name: "devops-expert", description: "CI/CD, infrastructure" },
|
|
98
|
+
{ name: "docker-expert", description: "Containerization, Compose" },
|
|
99
|
+
{ name: "github-actions-expert", description: "GitHub Actions workflows" },
|
|
100
|
+
{ name: "git-expert", description: "Git workflows, conflicts" },
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "quality",
|
|
105
|
+
name: "Code Quality",
|
|
106
|
+
icon: <SparklesIcon />,
|
|
107
|
+
skills: [
|
|
108
|
+
{ name: "code-review", description: "Comprehensive code review" },
|
|
109
|
+
{ name: "refactoring-expert", description: "Code smell detection" },
|
|
110
|
+
{ name: "typescript-expert", description: "TypeScript patterns, type system" },
|
|
111
|
+
{ name: "accessibility-expert", description: "WCAG compliance, a11y" },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
|
|
116
|
+
export default function Skills() {
|
|
117
|
+
const [activeCategory, setActiveCategory] = useState("frontend");
|
|
118
|
+
|
|
119
|
+
const currentCategory = skillCategories.find((c) => c.id === activeCategory);
|
|
120
|
+
|
|
121
|
+
return (
|
|
122
|
+
<section id="skills" className="section relative overflow-hidden">
|
|
123
|
+
{/* Background Glow */}
|
|
124
|
+
<div className="bg-glow bg-glow-purple left-0 top-1/2 -translate-y-1/2 -translate-x-1/2" />
|
|
125
|
+
|
|
126
|
+
<div className="container-content relative z-10">
|
|
127
|
+
{/* Section Header */}
|
|
128
|
+
<div className="text-center mb-12">
|
|
129
|
+
<h2 className="heading-lg mb-4">
|
|
130
|
+
<span className="gradient-text">35+</span> Domain Expert Skills
|
|
131
|
+
</h2>
|
|
132
|
+
<p className="text-body max-w-2xl mx-auto">
|
|
133
|
+
The agent automatically identifies and uses the appropriate skill
|
|
134
|
+
for each task, bringing domain expertise to every interaction.
|
|
135
|
+
</p>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
{/* Category Tabs */}
|
|
139
|
+
<div className="flex flex-wrap justify-center gap-2 mb-8">
|
|
140
|
+
{skillCategories.map((category) => (
|
|
141
|
+
<button
|
|
142
|
+
key={category.id}
|
|
143
|
+
onClick={() => setActiveCategory(category.id)}
|
|
144
|
+
className={`
|
|
145
|
+
flex items-center gap-2 px-4 py-2 rounded-full text-sm font-medium
|
|
146
|
+
transition-all duration-200 cursor-pointer
|
|
147
|
+
${activeCategory === category.id
|
|
148
|
+
? "bg-[var(--color-accent)] text-white"
|
|
149
|
+
: "bg-[var(--color-bg-card)] text-[var(--color-text-secondary)] border border-[var(--color-border)] hover:border-[var(--color-border-hover)]"
|
|
150
|
+
}
|
|
151
|
+
`}
|
|
152
|
+
>
|
|
153
|
+
{category.icon}
|
|
154
|
+
{category.name}
|
|
155
|
+
</button>
|
|
156
|
+
))}
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
{/* Skills Grid */}
|
|
160
|
+
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
161
|
+
{currentCategory?.skills.map((skill, index) => (
|
|
162
|
+
<div
|
|
163
|
+
key={index}
|
|
164
|
+
className="glass-card p-4 cursor-pointer"
|
|
165
|
+
>
|
|
166
|
+
<code className="text-[var(--color-accent)] text-sm font-mono">
|
|
167
|
+
{skill.name}
|
|
168
|
+
</code>
|
|
169
|
+
<p className="text-body text-sm mt-2">{skill.description}</p>
|
|
170
|
+
</div>
|
|
171
|
+
))}
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
{/* More Skills Note */}
|
|
175
|
+
<p className="text-center text-[var(--color-text-muted)] text-sm mt-8">
|
|
176
|
+
+ many more specialized skills for AI SDK, Vite, Webpack, and advanced
|
|
177
|
+
debugging
|
|
178
|
+
</p>
|
|
179
|
+
</div>
|
|
180
|
+
</section>
|
|
181
|
+
);
|
|
182
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2017",
|
|
4
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "react-jsx",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"plugins": [
|
|
17
|
+
{
|
|
18
|
+
"name": "next"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"paths": {
|
|
22
|
+
"@/*": ["./src/*"]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"include": [
|
|
26
|
+
"next-env.d.ts",
|
|
27
|
+
"**/*.ts",
|
|
28
|
+
"**/*.tsx",
|
|
29
|
+
".next/types/**/*.ts",
|
|
30
|
+
".next/dev/types/**/*.ts",
|
|
31
|
+
"**/*.mts"
|
|
32
|
+
],
|
|
33
|
+
"exclude": ["node_modules"]
|
|
34
|
+
}
|