diff --git a/apps/docs/next-env.d.ts b/apps/docs/next-env.d.ts
index a3e4680c..d9391a77 100644
--- a/apps/docs/next-env.d.ts
+++ b/apps/docs/next-env.d.ts
@@ -1,6 +1,7 @@
/// ,
- },
- ]
+const features = [
+ {
+ title: 'Highly Customizable',
+ description:
+ 'Style finder patterns, modules, and colors exactly how you want with advanced configuration.',
+ icon: Sparkles,
+ },
+ {
+ title: 'Performance Optimized',
+ description:
+ 'Generates QR codes efficiently without sacrificing quality or bundle size.',
+ icon: Zap,
+ },
+ {
+ title: 'SVG-Based Rendering',
+ description: 'Crisp and scalable output for web and print, powered by SVG.',
+ icon: Layers,
+ },
+ {
+ title: 'Developer-Friendly',
+ description:
+ 'Built with TypeScript, easy to use, and focused on a great developer experience.',
+ icon: Code,
+ },
+]
+
+const FeatureIcon = ({ icon: Icon }: { icon: typeof Sparkles }) => (
+
{feature.description} - +
+ We provide{' '}
+
- {code}
-
-
-
+
+
+ $
+ {code}
+
+
+
+
{tokens.map((line, i) => (
-
-
+
+
{i + 1}
-
+
{line.map((token, key) => (
-
+
))}
@@ -57,6 +40,6 @@ export const CodeEditor = ({ code, language = 'tsx' }: CodeEditorProps) => {
)}
-
+
)
}
diff --git a/apps/docs/src/components/copy-button.tsx b/apps/docs/src/components/copy-button.tsx
new file mode 100644
index 00000000..0c9ace99
--- /dev/null
+++ b/apps/docs/src/components/copy-button.tsx
@@ -0,0 +1,36 @@
+'use client'
+
+import { Check, Copy } from 'lucide-react'
+import { useState } from 'react'
+
+import { cn } from '@/lib/utils'
+
+interface CopyButtonProps {
+ value: string
+ className?: string
+}
+
+export const CopyButton = ({ value, className }: CopyButtonProps) => {
+ const [isCopied, setIsCopied] = useState(false)
+
+ const copyToClipboard = async () => {
+ await navigator.clipboard.writeText(value)
+ setIsCopied(true)
+ setTimeout(() => setIsCopied(false), 2000)
+ }
+
+ return (
+
+ )
+}
diff --git a/apps/docs/src/components/hero-showcase.tsx b/apps/docs/src/components/hero-showcase.tsx
new file mode 100644
index 00000000..976ef31e
--- /dev/null
+++ b/apps/docs/src/components/hero-showcase.tsx
@@ -0,0 +1,54 @@
+'use client'
+
+import { ReactQRCode, type ReactQRCodeProps } from '@lglab/react-qr-code'
+
+const examples: Omit[] = [
+ {
+ dataModulesSettings: { style: 'rounded', color: '#18181b' },
+ finderPatternOuterSettings: { style: 'rounded-lg', color: '#18181b' },
+ finderPatternInnerSettings: { style: 'rounded', color: '#00a3ab' },
+ },
+ {
+ dataModulesSettings: { style: 'circle', color: '#4f46e5' },
+ finderPatternOuterSettings: { style: 'circle', color: '#4f46e5' },
+ finderPatternInnerSettings: { style: 'circle', color: '#4f46e5' },
+ },
+ {
+ gradient: {
+ type: 'linear',
+ rotation: 45,
+ stops: [
+ { offset: '0%', color: '#00c2cb' },
+ { offset: '100%', color: '#2563eb' },
+ ],
+ },
+ dataModulesSettings: { style: 'leaf' },
+ finderPatternOuterSettings: { style: 'leaf-lg' },
+ finderPatternInnerSettings: { style: 'leaf' },
+ },
+ {
+ dataModulesSettings: { style: 'diamond', color: '#18181b' },
+ finderPatternOuterSettings: { style: 'inpoint', color: '#18181b' },
+ finderPatternInnerSettings: { style: 'star', color: '#e11d48' },
+ },
+]
+
+export const HeroShowcase = () => {
+ return (
+
+ {examples.map((props, i) => (
+
+
+
+ ))}
+
+ )
+}
diff --git a/apps/docs/src/components/hero.tsx b/apps/docs/src/components/hero.tsx
index 43154f35..5eed3a46 100644
--- a/apps/docs/src/components/hero.tsx
+++ b/apps/docs/src/components/hero.tsx
@@ -3,32 +3,54 @@ import Link from 'next/link'
import { Button } from '@/components/ui/button'
+import { CopyButton } from './copy-button'
+import { HeroShowcase } from './hero-showcase'
import { TypographyLead } from './ui/typography'
+const INSTALL_COMMAND = 'npm i @lglab/react-qr-code'
+
export const Hero = () => {
return (
-
-
-
-
- The ultimate customizable QR code generator for React
-
-
- Create high-performance, stylized QR codes with a library designed for the
- modern web.
-
-
-
-