@vudovn/antigravity-kit 1.0.1 → 1.0.6

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.
@@ -1,95 +1,138 @@
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" />
1
+ "use client";
2
+
3
+ import { useState } from "react";
4
+
5
+ // Icons
6
+ const CopyIcon = () => (
7
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" className="w-4 h-4">
8
+ <path d="M7 3.5A1.5 1.5 0 0 1 8.5 2h3.879a1.5 1.5 0 0 1 1.06.44l3.122 3.12A1.5 1.5 0 0 1 17 6.622V12.5a1.5 1.5 0 0 1-1.5 1.5h-1v-3.379a3 3 0 0 0-.879-2.121L10.5 5.379A3 3 0 0 0 8.379 4.5H7v-1Z" />
9
+ <path d="M4.5 6A1.5 1.5 0 0 0 3 7.5v9A1.5 1.5 0 0 0 4.5 18h7a1.5 1.5 0 0 0 1.5-1.5v-5.879a1.5 1.5 0 0 0-.44-1.06L9.44 6.439A1.5 1.5 0 0 0 8.378 6H4.5Z" />
5
10
  </svg>
6
11
  );
7
12
 
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" />
13
+ const CheckIcon = () => (
14
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" className="w-4 h-4">
15
+ <path fillRule="evenodd" d="M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z" clipRule="evenodd" />
11
16
  </svg>
12
17
  );
13
18
 
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
+ // Terminal dots component
20
+ const TerminalDots = () => (
21
+ <div className="flex items-center gap-1.5">
22
+ <div className="w-3 h-3 rounded-full bg-[#ff5f56]" />
23
+ <div className="w-3 h-3 rounded-full bg-[#ffbd2e]" />
24
+ <div className="w-3 h-3 rounded-full bg-[#27c93f]" />
25
+ </div>
19
26
  );
20
27
 
21
28
  const steps = [
22
29
  {
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",
30
+ title: "Install globally",
31
+ command: "npm",
32
+ args: "install -g @vudovn/antigravity-kit",
33
+ copyable: true,
27
34
  },
28
35
  {
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/",
36
+ title: "Initialize in your project",
37
+ command: "ag-kit",
38
+ args: "init",
39
+ copyable: true,
33
40
  },
34
41
  {
35
- icon: <RocketLaunchIcon />,
36
- title: "Start Using",
37
- description: "Skills auto-apply, invoke workflows with slash commands",
38
- code: "Your prompt",
42
+ title: "Start coding",
43
+ command: "# Ready!",
44
+ args: "Skills auto-apply",
45
+ copyable: false,
46
+ isComment: true,
39
47
  },
40
48
  ];
41
49
 
42
50
  export default function HowItWorks() {
51
+ const [copiedIndex, setCopiedIndex] = useState<number | null>(null);
52
+
53
+ const handleCopy = async (command: string, args: string, index: number) => {
54
+ await navigator.clipboard.writeText(`${command} ${args}`);
55
+ setCopiedIndex(index);
56
+ setTimeout(() => setCopiedIndex(null), 2000);
57
+ };
58
+
43
59
  return (
44
60
  <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
61
  <div className="container-content relative z-10">
49
62
  {/* Section Header */}
50
- <div className="text-center mb-16">
63
+ <div className="text-center mb-12">
64
+ <p className="text-[#c084fc] font-mono text-sm mb-3 tracking-wider">// QUICK START</p>
51
65
  <h2 className="heading-lg mb-4">
52
- Get Started in <span className="gradient-text">3 Steps</span>
66
+ Get Started in <span className="text-[#22c55e]">3 Steps</span>
53
67
  </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.
68
+ <p className="text-body max-w-xl mx-auto">
69
+ One command to unlock 35+ expert skills for your AI coding assistant.
57
70
  </p>
58
71
  </div>
59
72
 
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>
73
+ {/* Terminal Window */}
74
+ <div className="max-w-2xl mx-auto">
75
+ {/* Terminal Header */}
76
+ <div className="bg-[#1e1e1e] rounded-t-xl px-4 py-3 flex items-center justify-between border-b border-[#333]">
77
+ <TerminalDots />
78
+ <span className="text-[#6b7280] text-sm font-mono">Terminal</span>
79
+ <div className="w-12" /> {/* Spacer for balance */}
80
+ </div>
68
81
 
69
- <div className="glass-card p-6 h-full">
70
- {/* Icon */}
71
- <div className="icon-wrapper mb-4">{step.icon}</div>
82
+ {/* Terminal Body */}
83
+ <div className="bg-[#0d0d0d] rounded-b-xl p-6 font-mono text-sm border border-t-0 border-[#333]">
84
+ {steps.map((step, index) => (
85
+ <div
86
+ key={index}
87
+ className={`group flex items-start gap-3 ${index !== steps.length - 1 ? 'mb-4' : ''
88
+ }`}
89
+ >
90
+ {/* Line number */}
91
+ <span className="text-[#4a5568] select-none w-6 text-right shrink-0">
92
+ {index + 1}
93
+ </span>
72
94
 
73
- {/* Title */}
74
- <h3 className="heading-md mb-2">{step.title}</h3>
95
+ {/* Command line */}
96
+ <div className="flex-1 flex items-center gap-2">
97
+ {/* Prompt symbol */}
98
+ <span className="text-[#22c55e]">$</span>
75
99
 
76
- {/* Description */}
77
- <p className="text-body text-sm mb-4">{step.description}</p>
100
+ {/* Command */}
101
+ <span className={step.isComment ? "text-[#6b7280]" : "text-[#c084fc]"}>
102
+ {step.command}
103
+ </span>
78
104
 
79
- {/* Code Block */}
80
- <div className="code-block">
81
- <code className="text-[var(--color-accent)]">{step.code}</code>
105
+ {/* Arguments */}
106
+ <span className={step.isComment ? "text-[#6b7280]" : "text-[#f8fafc]"}>
107
+ {step.args}
108
+ </span>
109
+
110
+ {/* Copy button */}
111
+ {step.copyable && (
112
+ <button
113
+ onClick={() => handleCopy(step.command, step.args, index)}
114
+ className="ml-auto opacity-0 group-hover:opacity-100 p-1.5 rounded hover:bg-white/10 transition-all text-[#6b7280] hover:text-[#c084fc] cursor-pointer"
115
+ aria-label="Copy to clipboard"
116
+ >
117
+ {copiedIndex === index ? (
118
+ <span className="text-[#22c55e]"><CheckIcon /></span>
119
+ ) : (
120
+ <CopyIcon />
121
+ )}
122
+ </button>
123
+ )}
82
124
  </div>
83
125
  </div>
126
+ ))}
84
127
 
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
- )}
128
+ {/* Cursor blink */}
129
+ <div className="flex items-center gap-3 mt-4">
130
+ <span className="text-[#4a5568] select-none w-6 text-right shrink-0">4</span>
131
+ <span className="text-[#22c55e]">$</span>
132
+ <span className="w-2 h-5 bg-[#22c55e] animate-pulse" />
89
133
  </div>
90
- ))}
134
+ </div>
91
135
  </div>
92
-
93
136
  </div>
94
137
  </section>
95
138
  );
@@ -1,87 +1,65 @@
1
1
  import Link from "next/link";
2
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" />
3
+ const GitHubIcon = () => (
4
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="w-5 h-5">
5
+ <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" />
17
6
  </svg>
18
7
  );
19
8
 
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" />
9
+ const HeartIcon = () => (
10
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" className="w-4 h-4">
11
+ <path d="m9.653 16.915-.005-.003-.019-.01a20.759 20.759 0 0 1-1.162-.682 22.045 22.045 0 0 1-2.582-1.9C4.045 12.733 2 10.352 2 7.5a4.5 4.5 0 0 1 8-2.828A4.5 4.5 0 0 1 18 7.5c0 2.852-2.044 5.233-3.885 6.82a22.049 22.049 0 0 1-3.744 2.582l-.019.01-.005.003h-.002a.739.739 0 0 1-.69.001l-.002-.001Z" />
28
12
  </svg>
29
13
  );
30
14
 
15
+ const navLinks = [
16
+ { href: "#features", label: "Features" },
17
+ { href: "#skills", label: "Skills" },
18
+ { href: "#how-it-works", label: "Install" },
19
+ ];
20
+
31
21
  export default function Navbar() {
32
22
  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" />
23
+ <nav className="fixed top-0 left-0 right-0 z-50 border-b border-[var(--color-border)]">
24
+ <div className="bg-[var(--color-bg-navbar)] backdrop-blur-xl">
25
+ <div className="max-w-6xl mx-auto px-4 h-14 flex items-center justify-between">
26
+ {/* Logo */}
27
+ <Link href="/#hero" className="flex items-center gap-2 cursor-pointer group">
28
+ <span className="text-[#64748b] font-mono text-sm">~/</span>
29
+ <span className="font-mono font-semibold text-white group-hover:text-[var(--color-accent)] transition-colors">
30
+ antigravity-kit
31
+ </span>
32
+ </Link>
33
+
34
+ {/* Navigation Links */}
35
+ <div className="hidden md:flex items-center gap-1">
36
+ {navLinks.map((link) => (
37
+ <a
38
+ key={link.href}
39
+ href={link.href}
40
+ className="px-3 py-1.5 text-sm text-[var(--color-text-secondary)] hover:text-[var(--color-accent)] transition-colors cursor-pointer font-mono"
41
+ >
42
+ {link.label}
43
+ </a>
44
+ ))}
40
45
  </div>
41
- <span className="font-semibold text-lg hidden sm:inline">
42
- Antigravity Kit
43
- </span>
44
- </Link>
45
46
 
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>
47
+ {/* Right side actions */}
48
+ <div className="flex items-center gap-2">
49
+ {/* Donate link */}
50
+ <a
51
+ href="https://img.vietqr.io/image/mbbank-0779440918-compact2.jpg"
52
+ target="_blank"
53
+ rel="noopener noreferrer"
54
+ className="flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-md bg-gradient-to-r from-pink-500 to-red-500 text-white hover:from-pink-600 hover:to-red-600 transition-all cursor-pointer shadow-lg shadow-pink-500/20"
55
+ >
56
+ <HeartIcon />
57
+ <span>Donate</span>
58
+ </a>
59
+ </div>
72
60
  </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
61
  </div>
85
62
  </nav>
86
63
  );
87
64
  }
65
+
@@ -2,180 +2,149 @@
2
2
 
3
3
  import { useState } from "react";
4
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
5
+ // Skill categories with syntax highlighting colors
46
6
  const skillCategories = [
47
7
  {
48
8
  id: "frontend",
49
9
  name: "Frontend",
50
- icon: <CodeIcon />,
10
+ color: "#c084fc",
51
11
  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" },
12
+ "react-expert",
13
+ "nextjs-expert",
14
+ "vue-expert",
15
+ "css-styling-expert",
16
+ "state-management-expert",
17
+ "ui-ux-pro-max",
57
18
  ],
58
19
  },
59
20
  {
60
21
  id: "backend",
61
22
  name: "Backend",
62
- icon: <ServerIcon />,
23
+ color: "#22c55e",
63
24
  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" },
25
+ "nodejs-expert",
26
+ "nestjs-expert",
27
+ "rest-api-expert",
28
+ "auth-expert",
68
29
  ],
69
30
  },
70
31
  {
71
32
  id: "database",
72
33
  name: "Database",
73
- icon: <CircleStackIcon />,
34
+ color: "#3b82f6",
74
35
  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" },
36
+ "prisma-expert",
37
+ "postgres-expert",
38
+ "mongodb-expert",
39
+ "database-expert",
79
40
  ],
80
41
  },
81
42
  {
82
43
  id: "testing",
83
44
  name: "Testing",
84
- icon: <BeakerIcon />,
45
+ color: "#f97316",
85
46
  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" },
47
+ "testing-expert",
48
+ "jest-testing-expert",
49
+ "vitest-testing-expert",
50
+ "playwright-expert",
90
51
  ],
91
52
  },
92
53
  {
93
54
  id: "devops",
94
55
  name: "DevOps",
95
- icon: <CloudIcon />,
56
+ color: "#22d3ee",
96
57
  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" },
58
+ "devops-expert",
59
+ "docker-expert",
60
+ "github-actions-expert",
61
+ "git-expert",
101
62
  ],
102
63
  },
103
64
  {
104
65
  id: "quality",
105
- name: "Code Quality",
106
- icon: <SparklesIcon />,
66
+ name: "Quality",
67
+ color: "#eab308",
107
68
  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" },
69
+ "code-review",
70
+ "refactoring-expert",
71
+ "typescript-expert",
72
+ "accessibility-expert",
112
73
  ],
113
74
  },
114
75
  ];
115
76
 
116
77
  export default function Skills() {
117
78
  const [activeCategory, setActiveCategory] = useState("frontend");
118
-
119
79
  const currentCategory = skillCategories.find((c) => c.id === activeCategory);
120
80
 
121
81
  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">
82
+ <section id="skills" className="py-20 px-4 border-t border-[var(--color-border)]">
83
+ <div className="max-w-5xl mx-auto">
127
84
  {/* Section Header */}
128
85
  <div className="text-center mb-12">
129
- <h2 className="heading-lg mb-4">
130
- <span className="gradient-text">35+</span> Domain Expert Skills
86
+ <p className="text-[#c084fc] font-mono text-sm mb-3">// SKILLS</p>
87
+ <h2 className="text-3xl md:text-4xl font-bold mb-4">
88
+ <span className="text-[#22c55e]">35+</span> Domain Expert Skills
131
89
  </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.
90
+ <p className="text-[var(--color-text-secondary)] max-w-xl mx-auto">
91
+ The agent automatically identifies and applies the right skill for each task.
135
92
  </p>
136
93
  </div>
137
94
 
138
95
  {/* Category Tabs */}
139
96
  <div className="flex flex-wrap justify-center gap-2 mb-8">
140
- {skillCategories.map((category) => (
97
+ {skillCategories.map((cat) => (
141
98
  <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
- `}
99
+ key={cat.id}
100
+ onClick={() => setActiveCategory(cat.id)}
101
+ className={`px-4 py-2 rounded-lg text-sm font-mono transition-all cursor-pointer ${activeCategory === cat.id
102
+ ? "bg-[var(--color-bg-elevated)] border-2"
103
+ : "bg-transparent border border-[var(--color-border)] text-[var(--color-text-secondary)] hover:border-[var(--color-border-hover)]"
104
+ }`}
105
+ style={{
106
+ borderColor: activeCategory === cat.id ? cat.color : undefined,
107
+ color: activeCategory === cat.id ? cat.color : undefined,
108
+ }}
152
109
  >
153
- {category.icon}
154
- {category.name}
110
+ {cat.name}
155
111
  </button>
156
112
  ))}
157
113
  </div>
158
114
 
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>
115
+ {/* Skills Display - Code Block Style */}
116
+ <div className="bg-[#0d0d0d] rounded-xl border border-[var(--color-border)] overflow-hidden">
117
+ {/* Header */}
118
+ <div className="px-4 py-3 border-b border-[var(--color-border)] flex items-center justify-between">
119
+ <div className="flex items-center gap-1.5">
120
+ <div className="w-3 h-3 rounded-full bg-[#ff5f56]" />
121
+ <div className="w-3 h-3 rounded-full bg-[#ffbd2e]" />
122
+ <div className="w-3 h-3 rounded-full bg-[#27c93f]" />
170
123
  </div>
171
- ))}
172
- </div>
124
+ <span className="text-xs text-[#64748b] font-mono">
125
+ .agent/skills/{activeCategory}/
126
+ </span>
127
+ <div className="w-12" />
128
+ </div>
173
129
 
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>
130
+ {/* Skills List */}
131
+ <div className="p-6 font-mono text-sm">
132
+ {currentCategory?.skills.map((skill, index) => (
133
+ <div key={index} className="flex items-center gap-3 py-1.5">
134
+ <span className="text-[#64748b] w-4 text-right">{index + 1}</span>
135
+ <span className="text-[#64748b]">├──</span>
136
+ <span style={{ color: currentCategory.color }}>{skill}</span>
137
+ <span className="text-[#64748b]">/SKILL.md</span>
138
+ </div>
139
+ ))}
140
+ <div className="flex items-center gap-3 py-1.5 mt-2">
141
+ <span className="text-[#64748b] w-4" />
142
+ <span className="text-[#64748b] text-xs">
143
+ + {35 - (currentCategory?.skills.length || 0)} more skills...
144
+ </span>
145
+ </div>
146
+ </div>
147
+ </div>
179
148
  </div>
180
149
  </section>
181
150
  );