diff --git a/apps/website/package.json b/apps/website/package.json index 6ea3e26c..f93d32ae 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -25,6 +25,7 @@ "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "gray-matter": "^4.0.3", + "lucide-react": "0.541.0", "prism-react-renderer": "^2.3.0", "react": "^19.0.0", "react-dom": "^19.0.0" diff --git a/apps/website/src/components/home/FeatureCard.tsx b/apps/website/src/components/home/FeatureCard.tsx new file mode 100644 index 00000000..da8164d4 --- /dev/null +++ b/apps/website/src/components/home/FeatureCard.tsx @@ -0,0 +1,30 @@ +import { LucideIcon } from 'lucide-react'; +import React from 'react'; + +interface FeatureCardProps { + icon: LucideIcon; + title: string; + description: string; + gradient: string; + borderColor: string; +} + +export default function FeatureCard({ + icon: Icon, + title, + description, + gradient, + borderColor, +}: FeatureCardProps): React.JSX.Element { + return ( +
+
+ +
+

{title}

+

{description}

+
+ ); +} diff --git a/apps/website/src/components/home/FeaturesSection.tsx b/apps/website/src/components/home/FeaturesSection.tsx new file mode 100644 index 00000000..6ba7b01b --- /dev/null +++ b/apps/website/src/components/home/FeaturesSection.tsx @@ -0,0 +1,83 @@ +import { Bot, Code, Database, Globe, Terminal, Wrench } from 'lucide-react'; +import React from 'react'; +import FeatureCard from './FeatureCard'; + +const features = [ + { + icon: Bot, + title: 'All Command Types', + description: + 'Slash commands, context menus, and message commands with automatic registration.', + gradient: + 'from-green-50 to-white dark:from-green-900/20 dark:to-gray-900/20', + borderColor: 'border-green-200/50 dark:border-green-800/50', + }, + { + icon: Globe, + title: 'Internationalization', + description: + 'Built-in i18n support with the @commandkit/i18n plugin for global audiences.', + gradient: + 'from-indigo-50 to-white dark:from-indigo-900/20 dark:to-gray-900/20', + borderColor: 'border-indigo-200/50 dark:border-indigo-800/50', + }, + { + icon: Wrench, + title: 'Middleware System', + description: + 'Powerful middleware system for command validation, authentication, and processing.', + gradient: + 'from-orange-50 to-white dark:from-orange-900/20 dark:to-gray-900/20', + borderColor: 'border-orange-200/50 dark:border-orange-800/50', + }, + { + icon: Code, + title: 'JSX Components', + description: + 'Declare Discord interaction components and modals using familiar JSX syntax.', + gradient: 'from-cyan-50 to-white dark:from-cyan-900/20 dark:to-gray-900/20', + borderColor: 'border-cyan-200/50 dark:border-cyan-800/50', + }, + { + icon: Database, + title: 'Built-in Caching', + description: + 'Customizable cache system with @commandkit/cache for fast data storage and retrieval.', + gradient: 'from-teal-50 to-white dark:from-teal-900/20 dark:to-gray-900/20', + borderColor: 'border-teal-200/50 dark:border-teal-800/50', + }, + { + icon: Terminal, + title: 'CLI Tools', + description: + 'Comprehensive command-line interface for development, deployment, and management.', + gradient: 'from-gray-50 to-white dark:from-gray-900/20 dark:to-gray-800/20', + borderColor: 'border-gray-200/50 dark:border-gray-700/50', + }, +]; + +export default function FeaturesSection(): React.JSX.Element { + return ( +
+
+
+

+ Everything you need to build amazing Discord bots +

+

+ CommandKit provides a comprehensive set of tools and features for + Discord bot development +

+
+ +
+ {features.map((feature, index) => ( +
+ +
+ ))} +
+
+
+ ); +} diff --git a/apps/website/src/components/home/GetStartedSection.tsx b/apps/website/src/components/home/GetStartedSection.tsx new file mode 100644 index 00000000..2372b435 --- /dev/null +++ b/apps/website/src/components/home/GetStartedSection.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { Terminal } from 'lucide-react'; + +export default function GetStartedSection(): React.JSX.Element { + return ( +
+
+
+

Ready to get started?

+

+ Create your first CommandKit bot in minutes with our simple setup + process +

+
+ +
+
+
+
+ + Terminal +
+
+
+ $ + + npm create commandkit@next + +
+
+ # Follow the interactive setup +
+
+ $ + npm run dev +
+
+ Logged in as your_bot_name! +
+
+
+
+
+
+ ); +} diff --git a/apps/website/src/components/home/HeroSection.tsx b/apps/website/src/components/home/HeroSection.tsx new file mode 100644 index 00000000..889db910 --- /dev/null +++ b/apps/website/src/components/home/HeroSection.tsx @@ -0,0 +1,59 @@ +import Link from '@docusaurus/Link'; +import { BookOpen, Code, Github } from 'lucide-react'; +import React from 'react'; +import { themeColors } from './theme'; + +export default function HeroSection(): React.JSX.Element { + return ( +
+ CommandKit logo + +
+

+ Let{' '} + + CommandKit + {' '} + handle it for you! +

+

+ The discord.js meta-framework for building powerful, modular, and + extensible Discord bots with ease. +

+ +
+ + + Guide + + + + API Reference + + + + GitHub + +
+
+
+ ); +} diff --git a/apps/website/src/components/home/PluginsSection.tsx b/apps/website/src/components/home/PluginsSection.tsx new file mode 100644 index 00000000..e7fb74fa --- /dev/null +++ b/apps/website/src/components/home/PluginsSection.tsx @@ -0,0 +1,151 @@ +import Link from '@docusaurus/Link'; +import { + BarChart3, + Brain, + Calendar, + Code2, + Database, + Globe, + Server, + Wrench, +} from 'lucide-react'; +import React from 'react'; + +const plugins = [ + { + icon: Brain, + name: '@commandkit/ai', + description: + 'Execute bot commands using large language models with natural language processing.', + color: 'purple', + docUrl: '/docs/guide/official-plugins/commandkit-ai', + }, + { + icon: BarChart3, + name: '@commandkit/analytics', + description: + 'Track bot usage, command performance, and user engagement with Posthog and Umami.', + color: 'blue', + docUrl: '/docs/guide/official-plugins/commandkit-analytics', + }, + { + icon: Database, + name: '@commandkit/cache', + description: + 'High-performance caching system for speedy data storage and retrieval.', + color: 'green', + docUrl: '/docs/guide/official-plugins/commandkit-cache', + }, + { + icon: Wrench, + name: '@commandkit/devtools', + description: + 'Comprehensive development tools with web interface for debugging and monitoring.', + color: 'orange', + docUrl: '/docs/guide/official-plugins/commandkit-devtools', + }, + { + icon: Globe, + name: '@commandkit/i18n', + description: + 'Complete internationalization support for building global Discord applications.', + color: 'indigo', + docUrl: '/docs/guide/official-plugins/commandkit-i18n', + }, + { + icon: Code2, + name: '@commandkit/legacy', + description: 'Support for migrating from CommandKit v0 to CommandKit v1.', + color: 'gray', + docUrl: '/docs/guide/official-plugins/commandkit-legacy', + }, + { + icon: Server, + name: '@commandkit/redis', + description: + 'Redis integration for distributed caching and data persistence across bot instances.', + color: 'red', + docUrl: '/docs/guide/official-plugins/commandkit-redis', + }, + { + icon: Calendar, + name: '@commandkit/tasks', + description: + 'Scheduled task management and cron job system for automated bot operations.', + color: 'pink', + docUrl: '/docs/guide/official-plugins/commandkit-tasks', + }, +]; + +const iconColors = { + purple: 'from-purple-500 to-purple-600', + blue: 'from-blue-500 to-blue-600', + green: 'from-green-500 to-green-600', + orange: 'from-orange-500 to-orange-600', + indigo: 'from-indigo-500 to-indigo-600', + pink: 'from-pink-500 to-pink-600', + cyan: 'from-cyan-500 to-cyan-600', + gray: 'from-gray-500 to-gray-600', + yellow: 'from-yellow-500 to-yellow-600', + red: 'from-red-500 to-red-600', +}; + +export default function PluginsSection(): React.JSX.Element { + return ( +
+
+
+

Powerful Plugin Ecosystem

+

+ Extend CommandKit with plugins that add specialized functionality to + your Discord bots. From AI integration to analytics, CommandKiti has + you covered. +

+
+ +
+ {plugins.map((plugin, index) => { + const IconComponent = plugin.icon; + return ( + +
+
+ +
+
+ +

+ {plugin.name} +

+

+ {plugin.description} +

+ + ); + })} +
+ +
+
+ + + Build your own custom plugins! + + Learn how to create plugins + + +
+
+
+
+ ); +} diff --git a/apps/website/src/components/home/index.ts b/apps/website/src/components/home/index.ts new file mode 100644 index 00000000..1605e2f8 --- /dev/null +++ b/apps/website/src/components/home/index.ts @@ -0,0 +1,6 @@ +export { default as HeroSection } from './HeroSection'; +export { default as FeaturesSection } from './FeaturesSection'; +export { default as PluginsSection } from './PluginsSection'; +export { default as GetStartedSection } from './GetStartedSection'; +export { default as FeatureCard } from './FeatureCard'; +export { themeColors } from './theme'; diff --git a/apps/website/src/components/home/theme.ts b/apps/website/src/components/home/theme.ts new file mode 100644 index 00000000..c8c26b37 --- /dev/null +++ b/apps/website/src/components/home/theme.ts @@ -0,0 +1,20 @@ +export const themeColors = { + primary: { + purple: '#b079fc', + purpleDark: '#9a60f7', + purpleDarker: '#7e33f6', + }, + secondary: { + blue: '#3b82f6', + blueDark: '#2563eb', + pink: '#fc7993', + pinkDark: '#f06292', + orange: '#ffbc6f', + }, + gradients: { + primary: 'from-[#ffbc6f] to-[#b079fc]', + purple: 'from-[#b079fc] to-[#9a60f7]', + blue: 'from-blue-500 to-blue-600', + pink: 'from-[#fc7993] to-[#f06292]', + }, +} as const; diff --git a/apps/website/src/pages/index.tsx b/apps/website/src/pages/index.tsx index 5e2c64ed..b9d07df5 100644 --- a/apps/website/src/pages/index.tsx +++ b/apps/website/src/pages/index.tsx @@ -1,128 +1,17 @@ import Layout from '@theme/Layout'; -import Link from '@docusaurus/Link'; +import { + FeaturesSection, + GetStartedSection, + HeroSection, + PluginsSection, +} from '../components/home'; -// Floating particles component -function FloatingParticles() { - return ( -
- {/* Large floating circles */} -
-
-
- - {/* SVG Particles */} - - {/* Animated dots */} - - - - - - - - - - - - - - - - - {/* Animated paths/lines */} - - - - - - - - {/* Geometric shapes */} - - - - - - - -
- ); -} - -// Background gradient component function BackgroundGradient() { return (
-
-
-
+
+
+
); } @@ -132,139 +21,11 @@ export default function Home(): React.JSX.Element {
- - -
- CommandKit logo - -
- {/* Decorative elements around text */} -
-
- -

- Let{' '} - - CommandKit - {/* Sparkle effect */} - - ✨ - - {' '} - handle it for you! -

-

- The discord.js meta-framework for building powerful, modular, and - extensible Discord bots with ease. -

- -
- - Guide - - - API Reference - - - GitHub - -
-
-
- - {/* Additional decorative section */} -
-
-
- {/* Feature cards with animated icons */} -
-
- - - -
-

Fast Setup

-

- Get your bot running in minutes with our streamlined setup - process and powerful CLI tools. -

-
- -
-
- - - -
-

Straightforward

-

- Build scalable bots without writing unnecessary, boilerplate - code. -

-
-
-
- - - -
-

- Developer Friendly -

-

- Intuitive API design with TypeScript support and great DX. -

-
-
-
-
+ + + +
); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bb23b9d..2e80f7e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -152,6 +152,9 @@ importers: gray-matter: specifier: ^4.0.3 version: 4.0.3 + lucide-react: + specifier: 0.541.0 + version: 0.541.0(react@19.1.1) prism-react-renderer: specifier: ^2.3.0 version: 2.4.1(react@19.1.1) @@ -13970,7 +13973,7 @@ snapshots: '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 19.1.8 + '@types/react': 19.1.11 '@types/react@19.1.10': dependencies: