{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "feature-comparison-block-shadcnui", "type": "registry:block", "title": "Feature Comparison Table", "description": "Interactive pricing comparison table with animated checkmarks and plan highlights", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/sections/feature-comparison-block.tsx", "content": "\"use client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport { motion } from \"framer-motion\";\nimport { Check, Crown, Rocket, Sparkles, Star, X, Zap } from \"lucide-react\";\nimport { useState } from \"react\";\n\nconst plans = [\n {\n name: \"Free\",\n popular: false,\n price: \"$0\",\n period: \"/month\",\n description: \"Perfect for getting started\",\n icon: Rocket,\n gradient: \"from-slate-500/10 via-slate-500/5 to-transparent\",\n iconColor: \"text-slate-500\",\n features: [\"5 Projects\", \"Basic Components\", \"Community Support\"],\n },\n {\n name: \"Pro\",\n popular: true,\n price: \"$29\",\n period: \"/month\",\n description: \"Most popular for professionals\",\n icon: Star,\n gradient: \"from-primary/20 via-primary/10 to-transparent\",\n iconColor: \"text-primary\",\n features: [\n \"Unlimited Projects\",\n \"Advanced Animations\",\n \"Priority Support\",\n \"API Access\",\n ],\n },\n {\n name: \"Enterprise\",\n popular: false,\n price: \"$99\",\n period: \"/month\",\n description: \"For large teams and organizations\",\n icon: Crown,\n gradient: \"from-purple-500/20 via-purple-500/10 to-transparent\",\n iconColor: \"text-purple-500\",\n features: [\n \"Everything in Pro\",\n \"Custom Integrations\",\n \"Dedicated Manager\",\n \"SLA Support\",\n ],\n },\n];\n\nconst features = [\n {\n category: \"Core Features\",\n items: [\n { name: \"Basic Components\", free: true, pro: true, enterprise: true },\n { name: \"Advanced Animations\", free: false, pro: true, enterprise: true },\n { name: \"Custom Themes\", free: false, pro: true, enterprise: true },\n { name: \"Priority Support\", free: false, pro: false, enterprise: true },\n ],\n },\n {\n category: \"Integrations\",\n items: [\n { name: \"API Access\", free: false, pro: true, enterprise: true },\n { name: \"Webhooks\", free: false, pro: false, enterprise: true },\n {\n name: \"Custom Integrations\",\n free: false,\n pro: false,\n enterprise: true,\n },\n ],\n },\n {\n category: \"Support & Limits\",\n items: [\n { name: \"5 Projects\", free: true, pro: false, enterprise: false },\n { name: \"Unlimited Projects\", free: false, pro: true, enterprise: true },\n { name: \"Team Collaboration\", free: false, pro: true, enterprise: true },\n { name: \"Dedicated Manager\", free: false, pro: false, enterprise: true },\n ],\n },\n];\n\nexport function FeatureComparisonBlock() {\n const [hoveredPlan, setHoveredPlan] = useState(null);\n\n return (\n
\n
\n \n \n \n Compare Plans\n \n

\n Choose the right plan for you\n

\n

\n Compare features across all our plans and find the perfect fit for\n your needs\n

\n \n\n {/* Pricing Cards - No horizontal scroll */}\n \n
\n {plans.map((plan, index) => {\n const Icon = plan.icon;\n const isHovered = hoveredPlan === index;\n\n return (\n setHoveredPlan(index)}\n onHoverEnd={() => setHoveredPlan(null)}\n className=\"relative\"\n >\n {/* Popular badge glow effect */}\n {plan.popular && (\n \n )}\n\n \n {/* Gradient overlay */}\n \n\n {/* Shimmer effect */}\n {isHovered && (\n \n )}\n\n {/* Popular badge */}\n {plan.popular && (\n \n \n \n Most Popular\n \n \n )}\n\n
\n {/* Icon */}\n \n \n \n
\n \n\n {/* Plan name and description */}\n
\n

\n {plan.name}\n

\n

\n {plan.description}\n

\n
\n\n {/* Price */}\n
\n \n \n {plan.price}\n \n \n {plan.period}\n \n \n
\n\n {/* Features list */}\n \n {plan.features.map((feature, idx) => (\n \n \n \n \n \n {feature}\n \n \n ))}\n \n\n {/* CTA Button */}\n \n \n \n {plan.popular ? \"Get Started Now\" : \"Choose Plan\"}\n \n \n →\n \n \n\n {/* Popular plan extra info */}\n {plan.popular && (\n \n ✨ Best value for money\n \n )}\n
\n \n \n );\n })}\n
\n \n\n {/* Feature Comparison Table - Horizontal scroll only for table */}\n
\n \n
\n {features.map((category, categoryIndex) => (\n \n

\n {category.category}\n

\n \n {category.items.map((feature, featureIndex) => (\n \n
\n \n {feature.name}\n \n
\n\n {/* Free */}\n
\n \n {feature.free ? (\n \n ) : (\n \n )}\n \n
\n\n {/* Pro */}\n
\n \n {feature.pro ? (\n \n ) : (\n \n )}\n \n
\n\n {/* Enterprise */}\n
\n \n {feature.enterprise ? (\n \n ) : (\n \n )}\n \n
\n \n ))}\n
\n \n ))}\n
\n\n {/* Bottom CTA */}\n \n

\n Need a custom plan?\n

\n \n \n \n
\n \n
\n );\n}\n", "type": "registry:block", "target": "components/uitripled/feature-comparison-block-shadcnui.tsx" } ] }