@mdxui/named 6.4.0 → 7.0.0

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 +1 @@
1
- {"version":3,"sources":["../../src/components/hero/hero.tsx","../../src/shared/scroll-reveal/scroll-reveal.tsx","../../src/lib/utils.ts","../../src/shared/marquee/marquee.tsx","../../src/components/features/features.tsx","../../src/shared/code-window/code-window.tsx","../../src/components/pricing/pricing.tsx","../../src/components/pricing/pricing-tiers.tsx","../../src/components/cta/cta.tsx","../../src/components/faq/faq.tsx","../../src/components/problem/problem.tsx","../../src/components/navigation/navigation.tsx","../../src/components/footer/footer.tsx","../../src/components/contact/contact.tsx","../../src/components/integration/integration.tsx","../../src/shared/animated-beam/animated-beam.tsx","../../src/shared/grid-pattern/grid-pattern.tsx"],"sourcesContent":["'use client'\n\nimport Image from 'next/image'\nimport { HiChevronRight } from 'react-icons/hi'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Marquee } from '../../shared/marquee'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\n/** A src is renderable only when its bytes are guaranteed to resolve — an\n * absolute http(s)/protocol-relative/data URL. App-relative paths\n * (`/images/hero/hero-main.png`) and bare tokens (`\"linear\"`) 404 on the\n * consumer host (the live priya.studio.sb broken hero + marquee), so the hero\n * image is skipped and marquee tokens fall back to text logos. */\nconst isRenderableSrc = (s: string): boolean =>\n /^(https?:)?\\/\\//i.test(s.trim()) || /^data:image\\//i.test(s.trim())\n\n/** Canonical display casing for common brand tokens; otherwise capitalize. */\nconst BRAND_LABELS: Record<string, string> = {\n github: 'GitHub',\n gitlab: 'GitLab',\n linkedin: 'LinkedIn',\n youtube: 'YouTube',\n whatsapp: 'WhatsApp',\n hubspot: 'HubSpot',\n quickbooks: 'QuickBooks',\n typescript: 'TypeScript',\n javascript: 'JavaScript',\n postgresql: 'PostgreSQL',\n mongodb: 'MongoDB',\n graphql: 'GraphQL',\n openai: 'OpenAI',\n}\nconst brandLabel = (s: string): string => {\n const t = s.trim()\n return BRAND_LABELS[t.toLowerCase()] ?? t.charAt(0).toUpperCase() + t.slice(1)\n}\n\nexport interface HeroProps {\n badgeEmoji?: string\n badgeText?: string\n badgeHref?: string\n heading?: string\n description?: string\n ctaText?: string\n ctaHref?: string\n ctaVariant?: 'default' | 'secondary' | 'outline' | 'ghost'\n rightImageSrc?: string\n rightImageAlt?: string\n rightImageSizes?: string\n showIconOverlay?: boolean\n marqueeTitle?: string\n marqueeImages?: string[]\n className?: string\n}\n\nexport function Hero({\n badgeEmoji = '',\n badgeText = 'Meet Priya',\n badgeHref = '#',\n heading = 'Your AI Product Manager for GitHub',\n description = 'Priya triages issues, plans sprints, and grooms your backlog automatically. You focus on building.',\n ctaText = 'Get Started',\n ctaHref = '#pricing',\n ctaVariant = 'default',\n // No default: the hero image renders only when the caller supplies a real,\n // resolvable asset. The old `/images/hero/hero-main.png` default 404s on every\n // consumer that doesn't host it (the live priya.studio.sb broken hero). When\n // absent, the hero is single-column, no image (do-design-agency: never use an\n // image hero without a real asset).\n rightImageSrc,\n rightImageAlt = 'Portfolio showcase',\n rightImageSizes = '(max-width: 768px) 100vw, 500px',\n showIconOverlay: _showIconOverlay = true,\n marqueeTitle = 'Tools I work with',\n marqueeImages = Array.from({ length: 12 }).map(\n () => 'https://zapier-images.imgix.net/storage/services/c63f7c57dc0afb733535a5adccce4d01.png?auto=format&fit=crop&ixlib=react-9.10.0&q=50&w=60&h=60&dpr=2'\n ),\n className,\n}: HeroProps) {\n // Render the right-side hero image only when a real, resolvable asset was\n // supplied; otherwise the hero is single-column (no 404 placeholder).\n const hasHeroImage = !!rightImageSrc && isRenderableSrc(rightImageSrc)\n return (\n <section className={cn('relative py-12 md:py-16 px-6 lg:px-12 bg-background', className)}>\n <div className=\"max-w-7xl mx-auto p-0 sm:p-16 rounded-none sm:rounded-3xl md:[background:linear-gradient(180deg,var(--card)_0%,transparent_83.55%)]\">\n {/* Main Hero Container */}\n <div className={cn('grid gap-8 lg:gap-16 items-start mb-16 lg:mb-20', hasHeroImage && 'lg:grid-cols-2')}>\n {/* Left Content */}\n <div className=\"space-y-6 lg:pt-8\">\n {/* Category Badge */}\n <ScrollReveal direction=\"down\" delay={0.1}>\n <div className=\"inline-block\">\n <a\n href={badgeHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2.5 px-4 py-2 rounded-full transition-colors border border-border bg-card\"\n >\n <span className=\"text-base\">{badgeEmoji}</span>\n <p className=\"font-normal text-sm tracking-wide leading-snug text-foreground uppercase\">{badgeText}</p>\n </a>\n </div>\n </ScrollReveal>\n\n {/* Main Heading */}\n <ScrollReveal direction=\"up\" delay={0.2}>\n <h1 className=\"font-halant font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground\">\n {heading}\n </h1>\n </ScrollReveal>\n\n {/* Description */}\n <ScrollReveal direction=\"up\" delay={0.3}>\n <p className=\"text-lg leading-relaxed max-w-lg\">{description}</p>\n </ScrollReveal>\n\n {/* CTA Buttons */}\n <ScrollReveal direction=\"up\" delay={0.4} trigger=\"mount\">\n <div className=\"flex flex-col sm:flex-row gap-3 pt-4\">\n <Button asChild variant={ctaVariant}>\n <a href={ctaHref}>\n {ctaText}\n <HiChevronRight className=\"w-4 h-4\" />\n </a>\n </Button>\n </div>\n </ScrollReveal>\n </div>\n\n {/* Right Images — only when a real asset was supplied. */}\n {hasHeroImage && (\n <ScrollReveal direction=\"right\" delay={0.2}>\n <div className=\"relative flex justify-center lg:justify-end\">\n <div className=\"relative w-full max-w-lg\">\n <div className=\"relative w-full aspect-square\">\n <Image\n src={rightImageSrc as string}\n alt={rightImageAlt}\n fill\n className=\"object-cover object-left-center\"\n // Baseline hero artwork sits on the large --radius-image\n // mask (62d6f04). The scoped envelope defines it; fall back\n // to a generous radius if the envelope isn't loaded.\n style={{ borderRadius: 'var(--radius-image, 1rem)' }}\n priority\n sizes={rightImageSizes}\n />\n </div>\n </div>\n </div>\n </ScrollReveal>\n )}\n </div>\n\n <ScrollReveal direction=\"up\" delay={0.4} trigger=\"mount\">\n <div className=\"mt-12\">\n <p className=\"text-base text-muted-foreground text-center\">{marqueeTitle}</p>\n </div>\n <div className=\"relative mt-4 sm:mt-6\">\n <div\n className=\"pointer-events-none absolute inset-y-0 left-0 w-20 sm:w-28 z-10\"\n style={{ background: 'linear-gradient(to right, var(--background), transparent)' }}\n />\n <div\n className=\"pointer-events-none absolute inset-y-0 right-0 w-20 sm:w-28 z-10\"\n style={{ background: 'linear-gradient(to left, var(--background), transparent)' }}\n />\n <Marquee className=\"relative z-0 py-2 [--gap:1.25rem] sm:[--gap:3rem]\">\n {marqueeImages.map((src, i) =>\n isRenderableSrc(src) ? (\n <img\n key={`${src}-${i}`}\n src={src}\n alt=\"\"\n className=\"h-16 w-16 rounded-xl bg-card p-2 object-contain\"\n />\n ) : (\n <span\n key={`${src}-${i}`}\n className=\"flex h-16 items-center whitespace-nowrap rounded-xl bg-card px-4 text-sm font-semibold tracking-tight text-foreground/70\"\n >\n {brandLabel(src)}\n </span>\n ),\n )}\n </Marquee>\n </div>\n </ScrollReveal>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { motion, Variants } from 'motion/react'\nimport { ReactNode } from 'react'\n\nexport interface ScrollRevealProps {\n children: ReactNode\n className?: string\n delay?: number\n direction?: 'up' | 'down' | 'left' | 'right' | 'none'\n duration?: number\n trigger?: 'inView' | 'mount'\n once?: boolean\n margin?: string\n}\n\nconst directionVariants: Record<string, Variants> = {\n up: {\n hidden: { opacity: 0, y: 50 },\n visible: { opacity: 1, y: 0 },\n },\n down: {\n hidden: { opacity: 0, y: -50 },\n visible: { opacity: 1, y: 0 },\n },\n left: {\n hidden: { opacity: 0, x: -50 },\n visible: { opacity: 1, x: 0 },\n },\n right: {\n hidden: { opacity: 0, x: 50 },\n visible: { opacity: 1, x: 0 },\n },\n none: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n },\n}\n\nexport function ScrollReveal({\n children,\n className,\n delay = 0,\n direction = 'up',\n duration = 0.5,\n trigger = 'inView',\n once = true,\n margin = '-100px',\n}: ScrollRevealProps) {\n if (trigger === 'mount') {\n return (\n <motion.div\n initial=\"hidden\"\n animate=\"visible\"\n transition={{ duration, delay, ease: 'easeOut' }}\n variants={directionVariants[direction]}\n className={className}\n >\n {children}\n </motion.div>\n )\n }\n\n return (\n <motion.div\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once, margin }}\n transition={{ duration, delay, ease: 'easeOut' }}\n variants={directionVariants[direction]}\n className={className}\n >\n {children}\n </motion.div>\n )\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { ComponentPropsWithoutRef } from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface MarqueeProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Optional CSS class name to apply custom styles\n */\n className?: string\n /**\n * Whether to reverse the animation direction\n * @default false\n */\n reverse?: boolean\n /**\n * Whether to pause the animation on hover\n * @default false\n */\n pauseOnHover?: boolean\n /**\n * Content to be displayed in the marquee\n */\n children: React.ReactNode\n /**\n * Whether to animate vertically instead of horizontally\n * @default false\n */\n vertical?: boolean\n /**\n * Number of times to repeat the content\n * @default 4\n */\n repeat?: number\n}\n\nexport function Marquee({\n className,\n reverse = false,\n pauseOnHover = false,\n children,\n vertical = false,\n repeat = 4,\n ...props\n}: MarqueeProps) {\n return (\n <div\n {...props}\n className={cn(\n 'group flex [gap:var(--gap)] overflow-hidden p-2 [--duration:40s] [--gap:1rem]',\n {\n 'flex-row': !vertical,\n 'flex-col': vertical,\n },\n className\n )}\n >\n {Array(repeat)\n .fill(0)\n .map((_, i) => (\n <div\n key={i}\n className={cn('flex shrink-0 justify-around [gap:var(--gap)]', {\n 'animate-marquee flex-row': !vertical,\n 'animate-marquee-vertical flex-col': vertical,\n 'group-hover:[animation-play-state:paused]': pauseOnHover,\n '[animation-direction:reverse]': reverse,\n })}\n >\n {children}\n </div>\n ))}\n </div>\n )\n}\n","'use client'\n\nimport { CheckCircle } from 'lucide-react'\nimport { CodeWindow } from '../../shared/code-window'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface FeatureItem {\n text: string\n}\n\nexport interface Feature {\n title: string\n description: string\n items: FeatureItem[]\n code: string\n badge: string\n}\n\nexport interface FeaturesProps {\n heading?: string\n description?: string\n features?: Feature[]\n className?: string\n}\n\nconst defaultFeatures: Feature[] = [\n {\n title: 'Automatic Issue Triage',\n description: 'Every new issue gets analyzed, labeled, prioritized, and assigned to the right person—automatically in seconds.',\n items: [{ text: 'Smart labels based on content' }, { text: 'Priority using impact + urgency' }, { text: 'Auto-assigned to right person' }],\n code: `// New issue arrives\n$.Priya.triage({\n issue: '#347'\n})\n\n// Priya handles everything:\n// → Reads issue content\n// → Applies correct labels\n// → Sets priority level\n// → Assigns to team member\n// → Adds to project board`,\n badge: '01',\n },\n {\n title: 'Sprint Planning',\n description: 'Priya reviews your backlog, calculates what your team can handle, and builds the sprint for you.',\n items: [{ text: 'Capacity based on team velocity' }, { text: 'Best issues selected automatically' }, { text: 'Sprint board ready to go' }],\n code: `// Sprint planning day\n$.Priya.planSprint({\n capacity: 40,\n startDate: 'Monday'\n})\n\n// Priya prepares:\n// → Reviews all backlog items\n// → Calculates team velocity\n// → Selects optimal issues\n// → Organizes sprint board\n// → Notifies team`,\n badge: '02',\n },\n {\n title: 'Backlog Grooming',\n description: 'Your backlog stays healthy automatically—prioritized, organized, and actionable.',\n items: [{ text: 'Always prioritized correctly' }, { text: 'No more zombie issues' }, { text: 'Epics become user stories' }],\n code: `// Runs continuously\n$.Priya.groomBacklog({\n framework: 'RICE'\n})\n\n// Priya maintains:\n// → Applies RICE scoring\n// → Closes stale issues\n// → Breaks down epics\n// → Updates priorities\n// → Tracks dependencies`,\n badge: '03',\n },\n {\n title: 'Status Reports',\n description: 'Weekly progress reports generated and shared automatically. No more manual updates.',\n items: [{ text: 'Automatic progress tracking' }, { text: 'Blockers surfaced early' }, { text: 'Team stays informed' }],\n code: `// Every Friday\n$.Priya.statusReport({\n period: 'week'\n})\n\n// Priya reports:\n// → Issues closed\n// → PRs merged\n// → Sprint progress\n// → Blockers identified\n// → Shares with team`,\n badge: '04',\n },\n]\n\nexport function Features({ heading = 'How It Works', description = \"Priya handles the repetitive work so you can focus on what matters. Here's how she automates your entire product workflow.\", features = defaultFeatures, className }: FeaturesProps) {\n return (\n <section id=\"features\" className={cn('flex justify-center items-center pb-0 md:pb-10 bg-background', className)}>\n <div className=\"features-gradient flex flex-col items-center w-full relative overflow-visible gap-16 h-min max-w-[1400px] py-10 sm:py-20\" style={{ borderRadius: 'var(--radius-section, 36px)' }}>\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center w-full px-4 md:px-6 space-y-4\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground\">{heading}</h2>\n <p className=\"text-base md:text-lg text-muted-foreground max-w-2xl mx-auto\">{description}</p>\n </div>\n </ScrollReveal>\n\n <div className=\"w-full px-4 lg:px-18 space-y-10\">\n {features.map((feature, index) => (\n <ScrollReveal key={index} direction=\"up\" delay={index * 0.1}>\n <div className=\"grid md:grid-cols-2 overflow-hidden bg-card w-full rounded-3xl feature-card-shadow opacity-100 border border-border\">\n <div className=\"flex flex-col px-4 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20\">\n <div className=\"mb-4\">\n <span className=\"inline-flex size-10 items-center justify-center rounded-lg font-mono text-sm font-medium bg-card dark:bg-muted border border-border dark:border-border text-foreground\">\n {feature.badge}\n </span>\n </div>\n <h3 className=\"mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground\">{feature.title}</h3>\n <div className=\"mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground\">{feature.description}</div>\n <ul className=\"space-y-2 sm:space-y-3\">\n {feature.items.map((item, itemIndex) => (\n <li key={itemIndex} className=\"flex gap-x-3 items-start\">\n <CheckCircle className=\"mt-1 size-4 shrink-0 text-primary\" />\n <p className=\"text-sm md:text-base text-foreground\">{item.text}</p>\n </li>\n ))}\n </ul>\n </div>\n <div className=\"relative order-last md:order-last h-96 md:h-[500px] p-4 md:p-8 lg:p-10\">\n <CodeWindow code={feature.code} />\n </div>\n </div>\n </ScrollReveal>\n ))}\n </div>\n </div>\n </section>\n )\n}\n","import React from 'react'\n\nexport interface CodeWindowProps {\n code: string\n className?: string\n}\n\nexport function CodeWindow({ code, className }: CodeWindowProps) {\n const highlightCode = (code: string) => {\n const lines = code.split('\\n')\n const result: React.ReactElement[] = []\n let prevWasComment = false\n let prevWasCode = false\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n const isComment = line.trim().startsWith('//')\n const isEmpty = line.trim() === ''\n const isCode = !isComment && !isEmpty\n\n if (isComment && prevWasCode) {\n result.push(<div key={`space-before-${i}`} className=\"h-5\"></div>)\n }\n\n if (prevWasComment && isCode) {\n result.push(<div key={`space-after-${i}`} className=\"h-5\"></div>)\n }\n\n if (isEmpty) {\n result.push(<div key={i} className=\"h-5\"></div>)\n prevWasComment = false\n prevWasCode = false\n continue\n }\n\n if (isComment) {\n result.push(\n <div key={i} className=\"text-[#7d8590]\">\n {line}\n </div>\n )\n prevWasComment = true\n prevWasCode = false\n continue\n }\n\n let highlighted = line\n\n // Function names and properties with dots\n highlighted = highlighted.replace(\n /\\$\\.(\\w+)\\.(\\w+)/g,\n '<span class=\"text-[#79c0ff]\">$</span>.<span class=\"text-[#d2a8ff]\">$1</span>.<span class=\"text-[#ffa657]\">$2</span>'\n )\n\n // Object properties\n highlighted = highlighted.replace(/(\\w+):/g, '<span class=\"text-[#79c0ff]\">$1</span>:')\n\n // Strings\n highlighted = highlighted.replace(/'([^']*)'/g, \"<span class=\\\"text-[#a5d6ff]\\\">'$1'</span>\")\n\n // Numbers\n highlighted = highlighted.replace(/\\b(\\d+)\\b/g, '<span class=\"text-[#79c0ff]\">$1</span>')\n\n result.push(<div key={i} dangerouslySetInnerHTML={{ __html: highlighted }} />)\n\n prevWasComment = false\n prevWasCode = true\n }\n\n return result\n }\n\n return (\n <div className={`w-full h-full bg-[#0d1117] rounded-lg overflow-hidden ${className ?? ''}`}>\n <div className=\"flex-1 overflow-auto p-6 lg:p-8\">\n <pre className=\"text-sm lg:text-sm leading-relaxed font-mono text-[#e6edf3]\">{highlightCode(code)}</pre>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { Check } from 'lucide-react'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface PricingFeature {\n text: string\n}\n\nexport interface PricingProps {\n heading?: string\n subheading?: string\n price?: string\n priceUnit?: string\n trialText?: string\n ctaText?: string\n ctaHref?: string\n featuresHeading?: string\n features?: PricingFeature[]\n backgroundColor?: string\n securityNote?: string\n className?: string\n}\n\nconst defaultFeatures: PricingFeature[] = [\n { text: 'Automated backups' },\n { text: '24/7 support' },\n { text: 'Unlimited projects' },\n { text: 'Unlimited users' },\n { text: 'Custom domain' },\n { text: 'Custom branding' },\n { text: 'Advanced analytics' },\n { text: 'Custom permissions' },\n { text: 'Advanced reports' },\n]\n\nexport function Pricing({\n heading = 'Simple, transparent pricing',\n subheading = 'Start automating your product workflow in minutes. No credit card required to get started.',\n price = '$16',\n priceUnit = '/ month',\n trialText = 'With a 7-day free trial',\n ctaText = 'Get Started',\n ctaHref = '#contact',\n featuresHeading = \"What's included\",\n features = defaultFeatures,\n backgroundColor = 'bg-background',\n securityNote = 'Priya only accesses GitHub Issues and Projects—she cannot read your code or secrets.',\n className,\n}: PricingProps) {\n return (\n <section id=\"pricing\" className={cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className)}>\n <div className=\"max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center my-16 sm:my-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4\">{heading}</h2>\n <p className=\"text-base text-muted-foreground max-w-2xl mx-auto\">{subheading}</p>\n </div>\n </ScrollReveal>\n\n <ScrollReveal direction=\"up\" delay={0.2}>\n <div className=\"bg-card mx-auto flex w-full md:max-w-md lg:max-w-3xl flex-col rounded-3xl border border-border feature-card-shadow p-6 md:p-8 px-6\">\n <div className=\"text-center\">\n <div className=\"flex justify-start sm:justify-center items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{priceUnit}</span>\n </div>\n {trialText && <p className=\"text-left sm:text-center text-muted-foreground mt-3 text-sm\">{trialText}</p>}\n <Button asChild variant=\"default\" className=\"mt-5 w-full md:w-64\">\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n </div>\n\n <div className=\"mt-8\">\n <p className=\"text-left sm:text-center text-lg font-semibold text-foreground mb-4\">{featuresHeading}</p>\n <ul className=\"grid gap-y-3 gap-x-6 md:grid-cols-2 lg:grid-cols-3 \">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-start text-left\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </ScrollReveal>\n\n {securityNote && (\n <ScrollReveal direction=\"up\" delay={0.3}>\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n <strong>Your code stays private.</strong> {securityNote}\n </p>\n </div>\n </ScrollReveal>\n )}\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { Check } from 'lucide-react'\nimport Image from 'next/image'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface PricingTierFeature {\n text: string\n}\n\nexport interface PricingTier {\n title: string\n description: string\n price: string\n priceUnit: string\n ctaText: string\n ctaVariant?: 'primary' | 'secondary'\n ctaHref?: string\n features: PricingTierFeature[]\n image?: string\n imageAlt?: string\n featured?: boolean\n}\n\nexport interface PricingTiersProps {\n heading?: string\n subheading?: string\n tiers?: PricingTier[]\n backgroundColor?: string\n securityNote?: string\n className?: string\n}\n\nconst defaultTiers: PricingTier[] = [\n {\n title: 'Business',\n description: 'For growing teams that need more power and priority support.',\n price: '$299',\n priceUnit: '/ month',\n ctaText: 'Get Started',\n ctaVariant: 'primary',\n ctaHref: '#contact',\n features: [\n { text: 'Unlimited repositories' },\n { text: 'Unlimited issues & projects' },\n { text: 'Unlimited team members' },\n { text: 'Priority support' },\n { text: 'Custom workflows' },\n { text: 'Advanced analytics' },\n ],\n image: '/images/hero/hero-main.png',\n imageAlt: 'Business Plan',\n featured: true,\n },\n {\n title: 'Team',\n description: 'Perfect for small teams getting started with AI product management.',\n price: '$99',\n priceUnit: '/ month',\n ctaText: 'Get Started',\n ctaVariant: 'secondary',\n ctaHref: '#contact',\n features: [{ text: 'Up to 10 repositories' }, { text: 'Unlimited issues & projects' }, { text: 'Unlimited team members' }, { text: 'Email support' }],\n featured: false,\n },\n]\n\nexport function PricingTiers({\n heading = 'Simple, transparent pricing',\n subheading = 'Start automating your product workflow in minutes. No credit card required to get started.',\n tiers = defaultTiers,\n backgroundColor = 'bg-background',\n securityNote = 'Priya only accesses GitHub Issues and Projects—she cannot read your code or secrets.',\n className,\n}: PricingTiersProps) {\n return (\n <section id=\"pricing\" className={cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className)}>\n <div className=\"max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center my-16 sm:my-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4\">{heading}</h2>\n <p className=\"text-base text-muted-foreground max-w-2xl mx-auto\">{subheading}</p>\n </div>\n </ScrollReveal>\n\n <ul className=\"grid gap-6 lg:grid-cols-3 lg:items-stretch\">\n {tiers.map((tier, index) => (\n <li key={index} className={tier.featured ? 'lg:col-span-2 flex' : 'lg:col-span-1 flex'}>\n <ScrollReveal direction=\"up\" delay={0.2 + index * 0.1} className=\"w-full\">\n <div\n className={\n tier.featured\n ? 'bg-card flex w-full h-full flex-col-reverse rounded-3xl border border-border feature-card-shadow md:flex-row'\n : 'bg-card w-full h-full rounded-3xl border border-border feature-card-shadow p-6 md:p-8'\n }\n >\n {tier.featured ? (\n <>\n {tier.image && (\n <div className=\"hidden xl:block xl:w-1/2 pl-6 md:pl-8 py-6 md:py-8\">\n <div className=\"h-full rounded-lg overflow-hidden relative min-h-96\">\n <Image src={tier.image} alt={tier.imageAlt || tier.title} fill className=\"object-cover\" sizes=\"(max-width: 1280px) 0vw, 50vw\" />\n </div>\n </div>\n )}\n\n <div className=\"flex flex-col p-6 md:p-8 xl:w-1/2\">\n <div className=\"flex-1\">\n <p className=\"text-lg font-semibold text-foreground\">{tier.title}</p>\n <p className=\"text-muted-foreground mt-3\">{tier.description}</p>\n <div className=\"mt-6 flex items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{tier.price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{tier.priceUnit}</span>\n </div>\n <Button asChild variant={tier.ctaVariant === 'primary' ? 'default' : 'secondary'} className=\"mt-5 w-full sm:w-auto\">\n <a href={tier.ctaHref || '#'}>{tier.ctaText}</a>\n </Button>\n </div>\n\n <div className=\"mt-8\">\n <ul className=\"space-y-2\">\n {tier.features.map((feature, featureIndex) => (\n <li key={featureIndex} className=\"flex items-start\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </>\n ) : (\n <div className=\"flex h-full flex-col\">\n <div>\n <p className=\"text-lg font-semibold text-foreground\">{tier.title}</p>\n <p className=\"text-muted-foreground mt-3\">{tier.description}</p>\n <div className=\"mt-6 flex items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{tier.price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{tier.priceUnit}</span>\n </div>\n <Button asChild variant={tier.ctaVariant === 'primary' ? 'default' : 'secondary'} className=\"mt-5 w-full sm:w-auto\">\n <a href={tier.ctaHref || '#'}>{tier.ctaText}</a>\n </Button>\n\n <div className=\"mt-8\">\n <ul className=\"space-y-2\">\n {tier.features.map((feature, featureIndex) => (\n <li key={featureIndex} className=\"flex items-start\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )}\n </div>\n </ScrollReveal>\n </li>\n ))}\n </ul>\n\n {securityNote && (\n <ScrollReveal direction=\"up\" delay={0.4}>\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n <strong>Your code stays private.</strong> {securityNote}\n </p>\n </div>\n </ScrollReveal>\n )}\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { HiArrowRight } from 'react-icons/hi'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface CTAButton {\n text: string\n href: string\n variant?: 'primary' | 'secondary'\n showArrow?: boolean\n}\n\nexport interface CTAProps {\n heading?: string\n subheading?: string\n buttons?: CTAButton[]\n /** @deprecated theme-driven now; ignored */\n backgroundColor?: 'light' | 'blue' | 'green' | 'purple' | 'orange'\n className?: string\n}\n\nconst defaultButtons: CTAButton[] = [\n {\n text: 'Get Started',\n href: '#pricing',\n variant: 'primary',\n showArrow: true,\n },\n]\n\nexport function CTA({ heading = 'Ready to Save 15 Hours Per Week?', subheading = 'Setup with Github – takes 5 minutes.', buttons = defaultButtons, backgroundColor: _backgroundColor, className }: CTAProps) {\n const bgClass = 'bg-card'\n\n return (\n <section className={cn(`py-20 md:py-32 px-4 md:px-6 ${bgClass}`, className)}>\n <div className=\"max-w-3xl mx-auto text-center\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"space-y-6\">\n <h2 className=\"font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight\">{heading}</h2>\n <p className=\"max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground\">{subheading}</p>\n <div className=\"flex flex-col sm:flex-row gap-3 justify-center items-center pt-4\">\n {buttons.map((button, index) => (\n <Button key={index} asChild variant={button.variant === 'primary' ? 'default' : 'secondary'}>\n <a href={button.href}>\n {button.text}\n {button.showArrow && <HiArrowRight className=\"w-4 h-4\" />}\n </a>\n </Button>\n ))}\n </div>\n </div>\n </ScrollReveal>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@mdxui/primitives'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface FAQItem {\n question: string\n answer: string\n}\n\nexport interface FAQProps {\n heading?: string\n faqs?: FAQItem[]\n backgroundColor?: string\n className?: string\n}\n\nconst defaultFaqs: FAQItem[] = [\n {\n question: 'How do I get started?',\n answer: 'Choose your plan, connect your GitHub account, and Priya starts working. Setup takes 5 minutes.',\n },\n {\n question: 'Does it work with private repos?',\n answer: 'Yes, both plans work with private and public repositories.',\n },\n {\n question: 'What if it makes a mistake?',\n answer: 'You can override any decision. Priya learns from your corrections.',\n },\n {\n question: 'Can I switch plans later?',\n answer: 'Yes, upgrade or downgrade anytime. Changes take effect immediately.',\n },\n {\n question: 'What about Enterprise?',\n answer: \"Contact us for custom solutions tailored to your organization's needs, including dedicated support, custom workflows, and enterprise-grade SLAs.\",\n },\n {\n question: 'Is Priya SOC 2 and HIPAA compliant?',\n answer: 'Yes, Priya is SOC 2 Type II certified and HIPAA compliant, ensuring your data is handled with the highest security and privacy standards.',\n },\n]\n\nexport function FAQ({ heading = 'FAQs', faqs = defaultFaqs, backgroundColor = 'bg-background', className }: FAQProps) {\n return (\n <section id=\"faq\" className={cn(`py-20 px-6 lg:px-12 ${backgroundColor}`, className)}>\n <div className=\"max-w-4xl mx-auto\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center mb-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4\">{heading}</h2>\n </div>\n </ScrollReveal>\n\n <Accordion type=\"single\" collapsible className=\"space-y-4\">\n {faqs.map((faq, index) => (\n <ScrollReveal key={index} direction=\"up\" delay={0.15 + index * 0.05}>\n <AccordionItem value={`item-${index}`} className=\"rounded-xl px-4 sm:px-6 border border-border bg-card shadow-sm\">\n <AccordionTrigger className=\"hover:no-underline py-5 text-base font-medium text-foreground\">{faq.question}</AccordionTrigger>\n <AccordionContent className=\"pb-5 text-sm text-muted-foreground leading-relaxed\">{faq.answer}</AccordionContent>\n </AccordionItem>\n </ScrollReveal>\n ))}\n </Accordion>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport type { IconType } from 'react-icons'\nimport { FaInbox, FaCalendarAlt, FaListUl, FaFileAlt, FaRocket, FaProjectDiagram, FaBug, FaLightbulb } from 'react-icons/fa'\nimport { Marquee } from '../../shared/marquee'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface WorkflowItem {\n icon: IconType\n label: string\n}\n\nexport interface ProblemProps {\n heading?: string\n headingHighlight?: string\n workflows?: WorkflowItem[]\n subheading?: string\n subheadingHighlight?: string\n highlightColor?: string\n marqueeDuration?: string\n marqueeGap?: string\n backgroundColor?: string\n className?: string\n}\n\nconst defaultWorkflows: WorkflowItem[] = [\n { icon: FaInbox, label: 'Issue triage' },\n { icon: FaCalendarAlt, label: 'Sprint planning' },\n { icon: FaListUl, label: 'Backlog grooming' },\n { icon: FaFileAlt, label: 'Status updates' },\n { icon: FaRocket, label: 'Release planning' },\n { icon: FaProjectDiagram, label: 'Dependency tracking' },\n { icon: FaBug, label: 'Bug prioritization' },\n { icon: FaLightbulb, label: 'Feature requests' },\n]\n\nexport function Problem({\n heading = 'Product managers <strong>spend 15+ hours</strong> per week on busywork',\n workflows = defaultWorkflows,\n subheading = 'What if all of that just... ',\n subheadingHighlight = 'happened automatically?',\n highlightColor = 'bg-primary/20',\n marqueeDuration = '30s',\n marqueeGap = '0.5rem',\n backgroundColor = 'bg-background',\n className,\n}: ProblemProps) {\n return (\n <section id=\"problem\" className={cn(`py-20 md:pb-32 px-6 lg:px-12 ${backgroundColor}`, className)}>\n <div className=\"max-w-4xl mx-auto\">\n <div className=\"text-center space-y-8\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n {/* Heading is authored copy (may carry simple <strong> emphasis) from\n the trusted cascade emit — rendered as markup so the emphasis\n survives. */}\n <h2\n className=\"font-normal text-[clamp(36px,4vw,40px)] leading-tight text-foreground\"\n dangerouslySetInnerHTML={{ __html: heading }}\n />\n </ScrollReveal>\n\n <ScrollReveal direction=\"none\" delay={0.2}>\n <div className=\"relative py-6\">\n {/* Left gradient fade */}\n <div className=\"absolute left-0 top-0 bottom-0 w-32 bg-gradient-to-r from-background to-transparent z-10 pointer-events-none\"></div>\n\n {/* Right gradient fade */}\n <div className=\"absolute right-0 top-0 bottom-0 w-32 bg-gradient-to-l from-background to-transparent z-10 pointer-events-none\"></div>\n\n <Marquee\n className=\"[--duration:30s] [--gap:0.5rem]\"\n style={\n {\n '--duration': marqueeDuration,\n '--gap': marqueeGap,\n } as React.CSSProperties\n }\n >\n {workflows.map((workflow, index) => (\n <div key={index} className=\"flex items-center gap-2.5 pl-1.5 pr-3.5 py-1.5 bg-card border border-border rounded-full\">\n <div className=\"flex items-center justify-center w-7 h-7 rounded-full bg-background\">\n <workflow.icon className=\"w-3.5 h-3.5 text-foreground\" />\n </div>\n <span className=\"text-sm text-foreground whitespace-nowrap\">{workflow.label}</span>\n </div>\n ))}\n </Marquee>\n </div>\n </ScrollReveal>\n\n <ScrollReveal direction=\"up\" delay={0.3}>\n <div className=\"pt-2 md:pt-4\">\n <h3 className=\"font-normal text-[clamp(26px,3.5vw,32px)] leading-tight text-foreground\">\n {subheading}\n <span className=\"relative inline-block\">\n <span className=\"relative z-10\">{subheadingHighlight}</span>\n <span className={`absolute bottom-1 left-0 w-full h-3 ${highlightColor} opacity-30 -rotate-1`}></span>\n </span>\n </h3>\n </div>\n </ScrollReveal>\n </div>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { useState, useEffect } from 'react'\nimport Link from 'next/link'\nimport { Menu, X } from 'lucide-react'\nimport { motion, AnimatePresence } from 'motion/react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '@mdxui/primitives'\n\nexport interface NavLink {\n label: string\n href: string\n}\n\nexport interface NavigationProps {\n logo?: string | React.ReactNode\n logoHref?: string\n links?: NavLink[]\n ctaText?: string\n ctaHref?: string\n ctaVariant?: 'default' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive'\n className?: string\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | 'full'\n sticky?: boolean\n showScrollEffect?: boolean\n}\n\nexport function Navigation({\n logo = 'Priya',\n logoHref = '/',\n links = [\n { label: 'Features', href: '#features' },\n { label: 'Pricing', href: '#pricing' },\n { label: 'FAQ', href: '#faq' },\n ],\n ctaText = 'Hire me',\n ctaHref = '#pricing',\n ctaVariant = 'secondary',\n className,\n maxWidth = '7xl',\n sticky = true,\n showScrollEffect = true,\n}: NavigationProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n const [isScrolled, setIsScrolled] = useState(false)\n\n useEffect(() => {\n if (!showScrollEffect) return\n\n const handleScroll = () => {\n setIsScrolled(window.scrollY > 10)\n }\n\n window.addEventListener('scroll', handleScroll)\n return () => window.removeEventListener('scroll', handleScroll)\n }, [showScrollEffect])\n\n const maxWidthClass = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n '3xl': 'max-w-3xl',\n '4xl': 'max-w-4xl',\n '5xl': 'max-w-5xl',\n '6xl': 'max-w-6xl',\n '7xl': 'max-w-7xl',\n full: 'max-w-full',\n }[maxWidth]\n\n return (\n <nav\n className={cn(\n 'z-50 w-full transition-all duration-300',\n sticky && 'sticky top-0',\n showScrollEffect && isScrolled ? 'bg-background/95 backdrop-blur-md' : 'bg-background',\n className\n )}\n >\n <div className={cn(maxWidthClass, 'mx-auto px-6 lg:px-12 py-4')}>\n <div className=\"flex items-center justify-between\">\n {/* Logo */}\n <div className=\"flex items-center\">\n <Link href={logoHref} className=\"flex items-center\">\n {typeof logo === 'string' ? <span className=\"text-3xl font-base text-foreground\">{logo}</span> : logo}\n </Link>\n </div>\n\n {/* Desktop Navigation */}\n {links && links.length > 0 && (\n <div className=\"hidden lg:flex items-center gap-8\">\n {links.map((link) => (\n <a key={link.href} href={link.href} className=\"text-sm text-foreground hover:opacity-60 transition-opacity\">\n {link.label}\n </a>\n ))}\n </div>\n )}\n\n {/* CTA Button */}\n {ctaText && ctaHref && (\n <div className=\"hidden lg:flex items-center\">\n <Button asChild variant={ctaVariant}>\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n </div>\n )}\n\n {/* Mobile Menu Button */}\n <button className=\"lg:hidden p-2 text-foreground\" onClick={() => setMobileMenuOpen(!mobileMenuOpen)} aria-label=\"Toggle menu\">\n {mobileMenuOpen ? <X className=\"w-6 h-6\" /> : <Menu className=\"w-6 h-6\" />}\n </button>\n </div>\n\n {/* Mobile Menu */}\n <AnimatePresence>\n {mobileMenuOpen && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n className=\"lg:hidden overflow-hidden\"\n >\n <div className=\"mt-4 py-4 rounded-xl bg-card\">\n <div className=\"flex flex-col gap-4 px-6\">\n {links.map((link) => (\n <a key={link.href} href={link.href} className=\"py-2 text-foreground hover:opacity-70 transition-colors\" onClick={() => setMobileMenuOpen(false)}>\n {link.label}\n </a>\n ))}\n {ctaText && ctaHref && (\n <Button asChild variant={ctaVariant} className=\"mt-2\" onClick={() => setMobileMenuOpen(false)}>\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </nav>\n )\n}\n","'use client'\n\nimport Link from 'next/link'\nimport { FaGithub, FaXTwitter } from 'react-icons/fa6'\nimport { SiNpm } from 'react-icons/si'\nimport { FaArrowRight } from 'react-icons/fa6'\nimport { Input } from '@mdxui/primitives'\nimport type { IconType } from 'react-icons'\nimport { cn } from '../../lib/utils'\n\nexport interface SocialLink {\n href: string\n icon: IconType\n label: string\n}\n\nexport interface QuickLink {\n href: string\n label: string\n}\n\nexport interface FooterProps {\n logo?: string\n description?: string\n socialLinks?: SocialLink[]\n quickLinks?: QuickLink[]\n contactTitle?: string\n emailPlaceholder?: string\n onEmailSubmit?: (email: string) => void\n copyrightText?: string\n showThemeToggle?: boolean\n className?: string\n}\n\nexport function Footer({\n logo = 'Priya',\n description = 'Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.',\n socialLinks = [\n { href: 'https://github.com', icon: FaGithub, label: 'GitHub' },\n { href: 'https://npmjs.com', icon: SiNpm, label: 'npm' },\n { href: 'https://twitter.com', icon: FaXTwitter, label: 'X (Twitter)' },\n ],\n quickLinks = [\n { href: '/#pricing', label: 'Pricing' },\n { href: '/#features', label: 'How it works' },\n { href: '/contact', label: 'Contact' },\n ],\n contactTitle = 'Stay in touch',\n emailPlaceholder = 'Enter your email',\n onEmailSubmit,\n copyrightText = 'Priya.do © 2025. All rights reserved.',\n className,\n}: FooterProps) {\n const handleEmailSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const form = e.currentTarget\n const formData = new FormData(form)\n const email = formData.get('email') as string\n if (onEmailSubmit) {\n onEmailSubmit(email)\n }\n form.reset()\n }\n\n return (\n <footer className={cn('py-16 px-6 lg:px-12 bg-card text-card-foreground', className)}>\n <div className=\"max-w-7xl mx-auto\">\n <div className=\"grid md:grid-cols-5 gap-12 mb-12\">\n {/* Logo & Description */}\n <div className=\"md:col-span-2\">\n <Link href=\"/\" className=\"inline-block mb-4\">\n <div className=\"text-3xl font-base text-card-foreground\">{logo}</div>\n </Link>\n <p className=\"max-w-md text-sm leading-relaxed text-muted-foreground mb-6\">{description}</p>\n\n {/* Social Icons */}\n <div className=\"flex items-center gap-4\">\n {socialLinks.map((link) => {\n const Icon = link.icon\n return (\n <Link\n key={link.label}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-muted-foreground transition-colors hover:text-card-foreground\"\n aria-label={link.label}\n >\n <Icon className=\"w-5 h-5\" />\n </Link>\n )\n })}\n </div>\n </div>\n\n {/* Quick Links */}\n <div>\n <h3 className=\"font-semibold text-base mb-4 text-card-foreground\">Quick Links</h3>\n <ul className=\"space-y-2\">\n {quickLinks.map((link) => (\n <li key={link.label}>\n <Link href={link.href} className=\"text-sm text-muted-foreground transition-colors hover:text-card-foreground\">\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Contact Us */}\n <div className=\"w-full md:col-span-2 md:flex md:flex-col md:items-end\">\n <div className=\"w-full md:max-w-sm\">\n <h3 className=\"font-semibold text-base mb-4 text-card-foreground\">{contactTitle}</h3>\n <form onSubmit={handleEmailSubmit} className=\"relative\">\n <Input\n type=\"email\"\n name=\"email\"\n placeholder={emailPlaceholder}\n required\n className=\"w-full bg-muted border-border text-card-foreground placeholder:text-muted-foreground pr-12\"\n />\n <button\n type=\"submit\"\n className=\"absolute right-1 top-1/2 -translate-y-1/2 bg-card text-foreground hover:bg-card active:bg-card active:text-card-foreground px-3 py-3 rounded-md transition-colors\"\n aria-label=\"Submit email\"\n >\n <FaArrowRight className=\"w-3 h-3\" />\n </button>\n </form>\n </div>\n </div>\n </div>\n\n {/* Bottom Bar */}\n <div className=\"border-t border-border pt-8\">\n <div className=\"flex flex-col md:flex-row justify-between items-center gap-4\">\n <p className=\"text-sm text-muted-foreground\">{copyrightText}</p>\n </div>\n </div>\n </div>\n </footer>\n )\n}\n","'use client'\n\nimport { useState } from 'react'\nimport { Button, Input, Label, Textarea } from '@mdxui/primitives'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface FormField {\n id: string\n label: string\n type: 'text' | 'email' | 'tel' | 'textarea'\n placeholder?: string\n required?: boolean\n}\n\nexport interface ContactProps {\n heading?: string\n subheading?: string\n fields?: FormField[]\n submitButtonText?: string\n successMessage?: string\n errorMessage?: string\n onSubmit?: (data: Record<string, string>) => Promise<void> | void\n backgroundColor?: string\n className?: string\n}\n\nconst defaultFields: FormField[] = [\n {\n id: 'name',\n label: 'Name',\n type: 'text',\n required: true,\n },\n {\n id: 'email',\n label: 'Company Email',\n type: 'email',\n required: true,\n },\n {\n id: 'message',\n label: 'Message',\n type: 'textarea',\n placeholder: 'Tell us about your use case, team size, or any other questions you may have.',\n required: true,\n },\n]\n\nexport function Contact({\n heading = 'Get in touch',\n subheading = \"Have questions about use cases, pricing, or anything else? Let's chat!\",\n fields = defaultFields,\n submitButtonText = 'Submit',\n successMessage = \"Thanks for reaching out! I'll get back to you within 24 hours.\",\n errorMessage = 'Hmm, something went wrong. Mind trying again?',\n onSubmit,\n backgroundColor = 'bg-background',\n className,\n}: ContactProps) {\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [formData, setFormData] = useState<Record<string, string>>({})\n const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle')\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n setIsSubmitting(true)\n setSubmitStatus('idle')\n\n try {\n if (onSubmit) {\n await onSubmit(formData)\n }\n setSubmitStatus('success')\n setFormData({})\n ;(e.target as HTMLFormElement).reset()\n } catch {\n setSubmitStatus('error')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setFormData((prev) => ({\n ...prev,\n [e.target.id]: e.target.value,\n }))\n }\n\n return (\n <section className={cn(`relative py-12 md:py-32 px-6 lg:px-12 ${backgroundColor}`, className)}>\n <div className=\"max-w-3xl mx-auto\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"mb-14 text-center\">\n <h1 className=\"font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4\">{heading}</h1>\n <p className=\"text-base text-muted-foreground max-w-2xl mx-auto\">{subheading}</p>\n </div>\n </ScrollReveal>\n\n <ScrollReveal direction=\"up\" delay={0.2}>\n <form\n onSubmit={handleSubmit}\n className=\"mx-auto flex max-w-lg flex-col gap-6 bg-card p-6 md:p-8 rounded-3xl border border-border feature-card-shadow\"\n >\n {fields.map((field) => (\n <div key={field.id} className=\"grid w-full items-center gap-2\">\n <Label htmlFor={field.id} className=\"text-foreground\">\n {field.label}\n {field.required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n {field.type === 'textarea' ? (\n <Textarea id={field.id} placeholder={field.placeholder} required={field.required} onChange={handleChange} className=\"min-h-[120px]\" />\n ) : (\n <Input type={field.type} id={field.id} placeholder={field.placeholder} required={field.required} onChange={handleChange} />\n )}\n </div>\n ))}\n <Button type=\"submit\" className=\"w-full\" disabled={isSubmitting}>\n {isSubmitting ? 'Submitting...' : submitButtonText}\n </Button>\n {submitStatus === 'success' && <p className=\"text-primary text-sm text-center\">{successMessage}</p>}\n {submitStatus === 'error' && <p className=\"text-destructive text-sm text-center\">{errorMessage}</p>}\n </form>\n </ScrollReveal>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { forwardRef, useRef, useEffect, useState } from 'react'\nimport { cn } from '../../lib/utils'\nimport { AnimatedBeam } from '../../shared/animated-beam'\nimport { GridPattern } from '../../shared/grid-pattern'\nimport Image from 'next/image'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\n\nconst Square = forwardRef<HTMLDivElement, { className?: string; children?: React.ReactNode }>(({ className, children }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('z-10 flex size-16 items-center justify-center rounded-lg bg-card border border-border p-3 integration-square-shadow', className)}\n >\n {children}\n </div>\n )\n})\n\nSquare.displayName = 'Square'\n\nexport interface IntegrationNode {\n type: 'image' | 'icon' | 'component'\n content: string | React.ReactNode\n alt?: string\n className?: string\n}\n\nexport interface AnimationConfig {\n startYOffset?: number\n endYOffset?: number\n curvature?: number\n duration?: number\n reverse?: boolean\n}\n\nexport interface IntegrationProps {\n title?: string\n description?: string\n buttonText?: string\n buttonHref?: string\n leftNode: IntegrationNode\n rightNode: IntegrationNode\n beamAnimations?: AnimationConfig[]\n gridPatternWidth?: number\n gridPatternHeight?: number\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl'\n className?: string\n contentOrder?: 'left' | 'right'\n}\n\nexport function Integration({\n title = 'Connect in Seconds',\n description = 'Just connect your account and get started immediately – no configuration, no setup, no hassle.',\n buttonText = 'Get Started',\n buttonHref = '#pricing',\n leftNode,\n rightNode,\n beamAnimations = [\n { startYOffset: 10, endYOffset: 10, curvature: -20, duration: 3 },\n { startYOffset: -10, endYOffset: -10, curvature: 20, duration: 3, reverse: true },\n ],\n gridPatternWidth = 30,\n gridPatternHeight = 30,\n maxWidth = '5xl',\n className,\n contentOrder = 'left',\n}: IntegrationProps) {\n const containerRef = useRef<HTMLDivElement>(null)\n const leftRef = useRef<HTMLDivElement>(null)\n const rightRef = useRef<HTMLDivElement>(null)\n const [isDark, setIsDark] = useState(false)\n\n useEffect(() => {\n const checkDarkMode = () => {\n const isDarkMode = document.documentElement.classList.contains('dark') || window.matchMedia('(prefers-color-scheme: dark)').matches\n setIsDark(isDarkMode)\n }\n\n checkDarkMode()\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const observer = new MutationObserver(checkDarkMode)\n\n mediaQuery.addEventListener('change', checkDarkMode)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n })\n\n return () => {\n mediaQuery.removeEventListener('change', checkDarkMode)\n observer.disconnect()\n }\n }, [])\n\n const renderNode = (node: IntegrationNode, ref: React.RefObject<HTMLDivElement | null>) => {\n const squareContent = (() => {\n if (node.type === 'image' && typeof node.content === 'string') {\n return (\n <div className=\"relative w-full h-full\">\n <Image src={node.content} alt={node.alt || 'Integration'} fill className=\"object-cover rounded-lg\" />\n </div>\n )\n }\n if (node.type === 'icon' && typeof node.content === 'string') {\n return <div className={cn('text-foreground', node.className)}>{node.content}</div>\n }\n return node.content\n })()\n\n return (\n <Square ref={ref} className={cn('size-20', node.type === 'image' ? 'p-0' : '', node.className)}>\n {squareContent}\n </Square>\n )\n }\n\n const maxWidthClasses = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n '3xl': 'max-w-3xl',\n '4xl': 'max-w-4xl',\n '5xl': 'max-w-5xl',\n '6xl': 'max-w-6xl',\n '7xl': 'max-w-7xl',\n }\n\n const content = (\n <div className=\"space-y-6\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <h2 className=\"font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground\">{title}</h2>\n </ScrollReveal>\n\n <ScrollReveal direction=\"up\" delay={0.2}>\n <p className=\"text-base text-muted-foreground max-w-lg\">{description}</p>\n </ScrollReveal>\n\n {buttonText && buttonHref && (\n <ScrollReveal direction=\"up\" delay={0.3}>\n <Button asChild variant=\"default\">\n <a href={buttonHref}>{buttonText}</a>\n </Button>\n </ScrollReveal>\n )}\n </div>\n )\n\n const animation = (\n <ScrollReveal direction={contentOrder === 'left' ? 'right' : 'left'} delay={0.2}>\n <div className=\"relative flex aspect-square max-w-md mx-auto w-full items-center justify-center overflow-hidden rounded-lg\" ref={containerRef}>\n <GridPattern\n width={gridPatternWidth}\n height={gridPatternHeight}\n className=\"opacity-30 mask-[radial-gradient(ellipse_at_center,black_40%,transparent_85%)] dark:mask-[radial-gradient(ellipse_at_center,white_40%,transparent_85%)]\"\n />\n <div className=\"flex size-full flex-row items-center justify-center gap-20 relative z-10\">\n <div className=\"flex flex-col justify-center\">{renderNode(leftNode, leftRef)}</div>\n\n <div className=\"flex flex-col justify-center\">{renderNode(rightNode, rightRef)}</div>\n </div>\n\n {beamAnimations.map((config, index) => (\n <AnimatedBeam\n key={index}\n containerRef={containerRef}\n fromRef={leftRef}\n toRef={rightRef}\n startYOffset={config.startYOffset}\n endYOffset={config.endYOffset}\n curvature={config.curvature}\n duration={config.duration}\n reverse={config.reverse}\n pathColor={isDark ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)'}\n />\n ))}\n </div>\n </ScrollReveal>\n )\n\n return (\n <section className={cn('pt-10 sm:pt-0 px-8 lg:px-24 bg-background', className)}>\n <div className={cn(maxWidthClasses[maxWidth], 'mx-auto')}>\n <div className=\"grid lg:grid-cols-2 gap-1 items-center\">\n {contentOrder === 'left' ? (\n <>\n {content}\n {animation}\n </>\n ) : (\n <>\n {animation}\n {content}\n </>\n )}\n </div>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { RefObject, useEffect, useId, useState } from 'react'\nimport { motion } from 'motion/react'\nimport { cn } from '../../lib/utils'\n\nexport interface AnimatedBeamProps {\n className?: string\n containerRef: RefObject<HTMLElement | null>\n fromRef: RefObject<HTMLElement | null>\n toRef: RefObject<HTMLElement | null>\n curvature?: number\n reverse?: boolean\n pathColor?: string\n pathWidth?: number\n pathOpacity?: number\n gradientStartColor?: string\n gradientStopColor?: string\n delay?: number\n duration?: number\n startXOffset?: number\n startYOffset?: number\n endXOffset?: number\n endYOffset?: number\n}\n\nexport function AnimatedBeam({\n className,\n containerRef,\n fromRef,\n toRef,\n curvature = 0,\n reverse = false,\n duration = Math.random() * 3 + 4,\n delay = 0,\n pathColor = 'gray',\n pathWidth = 2,\n pathOpacity = 0.2,\n gradientStartColor = '#ffaa40',\n gradientStopColor = '#9c40ff',\n startXOffset = 0,\n startYOffset = 0,\n endXOffset = 0,\n endYOffset = 0,\n}: AnimatedBeamProps) {\n const id = useId()\n const [pathD, setPathD] = useState('')\n const [svgDimensions, setSvgDimensions] = useState({ width: 0, height: 0 })\n\n const gradientCoordinates = reverse\n ? {\n x1: ['90%', '-10%'],\n x2: ['100%', '0%'],\n y1: ['0%', '0%'],\n y2: ['0%', '0%'],\n }\n : {\n x1: ['10%', '110%'],\n x2: ['0%', '100%'],\n y1: ['0%', '0%'],\n y2: ['0%', '0%'],\n }\n\n useEffect(() => {\n const updatePath = () => {\n if (containerRef.current && fromRef.current && toRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect()\n const rectA = fromRef.current.getBoundingClientRect()\n const rectB = toRef.current.getBoundingClientRect()\n\n const svgWidth = containerRect.width\n const svgHeight = containerRect.height\n setSvgDimensions({ width: svgWidth, height: svgHeight })\n\n const startX = rectA.left - containerRect.left + rectA.width / 2 + startXOffset\n const startY = rectA.top - containerRect.top + rectA.height / 2 + startYOffset\n const endX = rectB.left - containerRect.left + rectB.width / 2 + endXOffset\n const endY = rectB.top - containerRect.top + rectB.height / 2 + endYOffset\n\n const controlY = startY - curvature\n const d = `M ${startX},${startY} Q ${(startX + endX) / 2},${controlY} ${endX},${endY}`\n setPathD(d)\n }\n }\n\n const resizeObserver = new ResizeObserver(() => {\n updatePath()\n })\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current)\n }\n\n updatePath()\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [containerRef, fromRef, toRef, curvature, startXOffset, startYOffset, endXOffset, endYOffset])\n\n return (\n <svg\n fill=\"none\"\n width={svgDimensions.width}\n height={svgDimensions.height}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('pointer-events-none absolute top-0 left-0 transform-gpu stroke-2', className)}\n viewBox={`0 0 ${svgDimensions.width} ${svgDimensions.height}`}\n >\n <path d={pathD} stroke={pathColor} strokeWidth={pathWidth} strokeOpacity={pathOpacity} strokeLinecap=\"round\" />\n <path d={pathD} strokeWidth={pathWidth} stroke={`url(#${id})`} strokeOpacity=\"1\" strokeLinecap=\"round\" />\n <defs>\n <motion.linearGradient\n className=\"transform-gpu\"\n id={id}\n gradientUnits={'userSpaceOnUse'}\n initial={{\n x1: '0%',\n x2: '0%',\n y1: '0%',\n y2: '0%',\n }}\n animate={{\n x1: gradientCoordinates.x1,\n x2: gradientCoordinates.x2,\n y1: gradientCoordinates.y1,\n y2: gradientCoordinates.y2,\n }}\n transition={{\n delay,\n duration,\n ease: [0.16, 1, 0.3, 1],\n repeat: Infinity,\n repeatDelay: 0,\n }}\n >\n <stop stopColor={gradientStartColor} stopOpacity=\"0\"></stop>\n <stop stopColor={gradientStartColor}></stop>\n <stop offset=\"32.5%\" stopColor={gradientStopColor}></stop>\n <stop offset=\"100%\" stopColor={gradientStopColor} stopOpacity=\"0\"></stop>\n </motion.linearGradient>\n </defs>\n </svg>\n )\n}\n","import { useId } from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface GridPatternProps extends React.SVGProps<SVGSVGElement> {\n width?: number\n height?: number\n x?: number\n y?: number\n squares?: Array<[x: number, y: number]>\n strokeDasharray?: string\n className?: string\n}\n\nexport function GridPattern({\n width = 40,\n height = 40,\n x = -1,\n y = -1,\n strokeDasharray = '0',\n squares,\n className,\n ...props\n}: GridPatternProps) {\n const id = useId()\n\n return (\n <svg\n aria-hidden=\"true\"\n className={cn('pointer-events-none absolute inset-0 h-full w-full fill-muted-foreground/20 stroke-muted-foreground/20', className)}\n {...props}\n >\n <defs>\n <pattern id={id} width={width} height={height} patternUnits=\"userSpaceOnUse\" x={x} y={y}>\n <path d={`M.5 ${height}V.5H${width}`} fill=\"none\" strokeDasharray={strokeDasharray} />\n </pattern>\n </defs>\n <rect width=\"100%\" height=\"100%\" strokeWidth={0} fill={`url(#${id})`} />\n {squares && (\n <svg x={x} y={y} className=\"overflow-visible\">\n {squares.map(([sx, sy]) => (\n <rect strokeWidth=\"0\" key={`${sx}-${sy}`} width={width - 1} height={height - 1} x={sx * width + 1} y={sy * height + 1} />\n ))}\n </svg>\n )}\n </svg>\n )\n}\n"],"mappings":"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","names":["jsx","jsx","jsx","code","jsx","jsxs","Button","jsx","jsxs","defaultFeatures","Button","Check","Image","Button","jsx","jsxs","Image","Button","Check","Button","jsx","jsxs","Button","jsx","jsxs","jsx","jsxs","motion","Button","jsx","jsxs","motion","Link","jsx","jsxs","Link","useState","Button","Input","jsx","jsxs","useState","Input","Button","useEffect","useState","useEffect","useState","motion","jsx","jsxs","useState","useEffect","motion","useId","jsx","jsxs","useId","Image","Button","Fragment","jsx","jsxs","useState","useEffect","Image"]}
1
+ {"version":3,"sources":["../../src/components/hero/hero.tsx","../../src/shared/scroll-reveal/scroll-reveal.tsx","../../src/lib/utils.ts","../../src/shared/marquee/marquee.tsx","../../src/components/features/features.tsx","../../src/shared/code-window/code-window.tsx","../../src/components/pricing/pricing.tsx","../../src/components/pricing/pricing-tiers.tsx","../../src/components/cta/cta.tsx","../../src/components/faq/faq.tsx","../../src/components/navigation/navigation.tsx","../../src/components/footer/footer.tsx"],"sourcesContent":["'use client'\n\nimport Image from 'next/image'\nimport { HiChevronRight } from 'react-icons/hi'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Marquee } from '../../shared/marquee'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\n/** A src is renderable only when its bytes are guaranteed to resolve — an\n * absolute http(s)/protocol-relative/data URL. App-relative paths\n * (`/images/hero/hero-main.png`) and bare tokens (`\"linear\"`) 404 on the\n * consumer host (the live priya.studio.sb broken hero + marquee), so the hero\n * image is skipped and marquee tokens fall back to text logos. */\nconst isRenderableSrc = (s: string): boolean =>\n /^(https?:)?\\/\\//i.test(s.trim()) || /^data:image\\//i.test(s.trim())\n\n/** Canonical display casing for common brand tokens; otherwise capitalize. */\nconst BRAND_LABELS: Record<string, string> = {\n github: 'GitHub',\n gitlab: 'GitLab',\n linkedin: 'LinkedIn',\n youtube: 'YouTube',\n whatsapp: 'WhatsApp',\n hubspot: 'HubSpot',\n quickbooks: 'QuickBooks',\n typescript: 'TypeScript',\n javascript: 'JavaScript',\n postgresql: 'PostgreSQL',\n mongodb: 'MongoDB',\n graphql: 'GraphQL',\n openai: 'OpenAI',\n}\nconst brandLabel = (s: string): string => {\n const t = s.trim()\n return BRAND_LABELS[t.toLowerCase()] ?? t.charAt(0).toUpperCase() + t.slice(1)\n}\n\nexport interface HeroProps {\n badgeEmoji?: string\n badgeText?: string\n badgeHref?: string\n heading?: string\n description?: string\n ctaText?: string\n ctaHref?: string\n ctaVariant?: 'default' | 'secondary' | 'outline' | 'ghost'\n rightImageSrc?: string\n rightImageAlt?: string\n rightImageSizes?: string\n showIconOverlay?: boolean\n marqueeTitle?: string\n marqueeImages?: string[]\n className?: string\n}\n\nexport function Hero({\n badgeEmoji = '',\n badgeText = 'Meet Priya',\n badgeHref = '#',\n heading = 'Your AI Product Manager for GitHub',\n description = 'Priya triages issues, plans sprints, and grooms your backlog automatically. You focus on building.',\n ctaText = 'Get Started',\n ctaHref = '#pricing',\n ctaVariant = 'default',\n // No default: the hero image renders only when the caller supplies a real,\n // resolvable asset. The old `/images/hero/hero-main.png` default 404s on every\n // consumer that doesn't host it (the live priya.studio.sb broken hero). When\n // absent, the hero is single-column, no image (do-design-agency: never use an\n // image hero without a real asset).\n rightImageSrc,\n rightImageAlt = 'Portfolio showcase',\n rightImageSizes = '(max-width: 768px) 100vw, 500px',\n showIconOverlay: _showIconOverlay = true,\n marqueeTitle = 'Tools I work with',\n marqueeImages = Array.from({ length: 12 }).map(\n () => 'https://zapier-images.imgix.net/storage/services/c63f7c57dc0afb733535a5adccce4d01.png?auto=format&fit=crop&ixlib=react-9.10.0&q=50&w=60&h=60&dpr=2'\n ),\n className,\n}: HeroProps) {\n // Render the right-side hero image only when a real, resolvable asset was\n // supplied; otherwise the hero is single-column (no 404 placeholder).\n const hasHeroImage = !!rightImageSrc && isRenderableSrc(rightImageSrc)\n return (\n <section className={cn('relative py-12 md:py-16 px-6 lg:px-12 bg-background', className)}>\n <div className=\"max-w-7xl mx-auto p-0 sm:p-16 rounded-none sm:rounded-3xl md:[background:linear-gradient(180deg,var(--card)_0%,transparent_83.55%)]\">\n {/* Main Hero Container */}\n <div className={cn('grid gap-8 lg:gap-16 items-start mb-16 lg:mb-20', hasHeroImage && 'lg:grid-cols-2')}>\n {/* Left Content */}\n <div className=\"space-y-6 lg:pt-8\">\n {/* Category Badge */}\n <ScrollReveal direction=\"down\" delay={0.1}>\n <div className=\"inline-block\">\n <a\n href={badgeHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2.5 px-4 py-2 rounded-full transition-colors border border-border bg-card\"\n >\n <span className=\"text-base\">{badgeEmoji}</span>\n <p className=\"font-normal text-sm tracking-wide leading-snug text-foreground uppercase\">{badgeText}</p>\n </a>\n </div>\n </ScrollReveal>\n\n {/* Main Heading */}\n <ScrollReveal direction=\"up\" delay={0.2}>\n <h1 className=\"font-halant font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground\">\n {heading}\n </h1>\n </ScrollReveal>\n\n {/* Description */}\n <ScrollReveal direction=\"up\" delay={0.3}>\n <p className=\"text-lg leading-relaxed max-w-lg\">{description}</p>\n </ScrollReveal>\n\n {/* CTA Buttons */}\n <ScrollReveal direction=\"up\" delay={0.4} trigger=\"mount\">\n <div className=\"flex flex-col sm:flex-row gap-3 pt-4\">\n <Button asChild variant={ctaVariant}>\n <a href={ctaHref}>\n {ctaText}\n <HiChevronRight className=\"w-4 h-4\" />\n </a>\n </Button>\n </div>\n </ScrollReveal>\n </div>\n\n {/* Right Images — only when a real asset was supplied. */}\n {hasHeroImage && (\n <ScrollReveal direction=\"right\" delay={0.2}>\n <div className=\"relative flex justify-center lg:justify-end\">\n <div className=\"relative w-full max-w-lg\">\n <div className=\"relative w-full aspect-square\">\n <Image\n src={rightImageSrc as string}\n alt={rightImageAlt}\n fill\n className=\"object-cover object-left-center\"\n // Baseline hero artwork sits on the large --radius-image\n // mask (62d6f04). The scoped envelope defines it; fall back\n // to a generous radius if the envelope isn't loaded.\n style={{ borderRadius: 'var(--radius-image, 1rem)' }}\n priority\n sizes={rightImageSizes}\n />\n </div>\n </div>\n </div>\n </ScrollReveal>\n )}\n </div>\n\n <ScrollReveal direction=\"up\" delay={0.4} trigger=\"mount\">\n <div className=\"mt-12\">\n <p className=\"text-base text-muted-foreground text-center\">{marqueeTitle}</p>\n </div>\n <div className=\"relative mt-4 sm:mt-6\">\n <div\n className=\"pointer-events-none absolute inset-y-0 left-0 w-20 sm:w-28 z-10\"\n style={{ background: 'linear-gradient(to right, var(--background), transparent)' }}\n />\n <div\n className=\"pointer-events-none absolute inset-y-0 right-0 w-20 sm:w-28 z-10\"\n style={{ background: 'linear-gradient(to left, var(--background), transparent)' }}\n />\n <Marquee className=\"relative z-0 py-2 [--gap:1.25rem] sm:[--gap:3rem]\">\n {marqueeImages.map((src, i) =>\n isRenderableSrc(src) ? (\n <img\n key={`${src}-${i}`}\n src={src}\n alt=\"\"\n className=\"h-16 w-16 rounded-xl bg-card p-2 object-contain\"\n />\n ) : (\n <span\n key={`${src}-${i}`}\n className=\"flex h-16 items-center whitespace-nowrap rounded-xl bg-card px-4 text-sm font-semibold tracking-tight text-foreground/70\"\n >\n {brandLabel(src)}\n </span>\n ),\n )}\n </Marquee>\n </div>\n </ScrollReveal>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { motion, Variants } from 'motion/react'\nimport { ReactNode } from 'react'\n\nexport interface ScrollRevealProps {\n children: ReactNode\n className?: string\n delay?: number\n direction?: 'up' | 'down' | 'left' | 'right' | 'none'\n duration?: number\n trigger?: 'inView' | 'mount'\n once?: boolean\n margin?: string\n}\n\nconst directionVariants: Record<string, Variants> = {\n up: {\n hidden: { opacity: 0, y: 50 },\n visible: { opacity: 1, y: 0 },\n },\n down: {\n hidden: { opacity: 0, y: -50 },\n visible: { opacity: 1, y: 0 },\n },\n left: {\n hidden: { opacity: 0, x: -50 },\n visible: { opacity: 1, x: 0 },\n },\n right: {\n hidden: { opacity: 0, x: 50 },\n visible: { opacity: 1, x: 0 },\n },\n none: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n },\n}\n\nexport function ScrollReveal({\n children,\n className,\n delay = 0,\n direction = 'up',\n duration = 0.5,\n trigger = 'inView',\n once = true,\n margin = '-100px',\n}: ScrollRevealProps) {\n if (trigger === 'mount') {\n return (\n <motion.div\n initial=\"hidden\"\n animate=\"visible\"\n transition={{ duration, delay, ease: 'easeOut' }}\n variants={directionVariants[direction]}\n className={className}\n >\n {children}\n </motion.div>\n )\n }\n\n return (\n <motion.div\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={{ once, margin }}\n transition={{ duration, delay, ease: 'easeOut' }}\n variants={directionVariants[direction]}\n className={className}\n >\n {children}\n </motion.div>\n )\n}\n","import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { ComponentPropsWithoutRef } from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface MarqueeProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Optional CSS class name to apply custom styles\n */\n className?: string\n /**\n * Whether to reverse the animation direction\n * @default false\n */\n reverse?: boolean\n /**\n * Whether to pause the animation on hover\n * @default false\n */\n pauseOnHover?: boolean\n /**\n * Content to be displayed in the marquee\n */\n children: React.ReactNode\n /**\n * Whether to animate vertically instead of horizontally\n * @default false\n */\n vertical?: boolean\n /**\n * Number of times to repeat the content\n * @default 4\n */\n repeat?: number\n}\n\nexport function Marquee({\n className,\n reverse = false,\n pauseOnHover = false,\n children,\n vertical = false,\n repeat = 4,\n ...props\n}: MarqueeProps) {\n return (\n <div\n {...props}\n className={cn(\n 'group flex [gap:var(--gap)] overflow-hidden p-2 [--duration:40s] [--gap:1rem]',\n {\n 'flex-row': !vertical,\n 'flex-col': vertical,\n },\n className\n )}\n >\n {Array(repeat)\n .fill(0)\n .map((_, i) => (\n <div\n key={i}\n className={cn('flex shrink-0 justify-around [gap:var(--gap)]', {\n 'animate-marquee flex-row': !vertical,\n 'animate-marquee-vertical flex-col': vertical,\n 'group-hover:[animation-play-state:paused]': pauseOnHover,\n '[animation-direction:reverse]': reverse,\n })}\n >\n {children}\n </div>\n ))}\n </div>\n )\n}\n","'use client'\n\nimport { CheckCircle } from 'lucide-react'\nimport { CodeWindow } from '../../shared/code-window'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface FeatureItem {\n text: string\n}\n\nexport interface Feature {\n title: string\n description: string\n items: FeatureItem[]\n code: string\n badge: string\n}\n\nexport interface FeaturesProps {\n heading?: string\n description?: string\n features?: Feature[]\n className?: string\n}\n\nconst defaultFeatures: Feature[] = [\n {\n title: 'Automatic Issue Triage',\n description: 'Every new issue gets analyzed, labeled, prioritized, and assigned to the right person—automatically in seconds.',\n items: [{ text: 'Smart labels based on content' }, { text: 'Priority using impact + urgency' }, { text: 'Auto-assigned to right person' }],\n code: `// New issue arrives\n$.Priya.triage({\n issue: '#347'\n})\n\n// Priya handles everything:\n// → Reads issue content\n// → Applies correct labels\n// → Sets priority level\n// → Assigns to team member\n// → Adds to project board`,\n badge: '01',\n },\n {\n title: 'Sprint Planning',\n description: 'Priya reviews your backlog, calculates what your team can handle, and builds the sprint for you.',\n items: [{ text: 'Capacity based on team velocity' }, { text: 'Best issues selected automatically' }, { text: 'Sprint board ready to go' }],\n code: `// Sprint planning day\n$.Priya.planSprint({\n capacity: 40,\n startDate: 'Monday'\n})\n\n// Priya prepares:\n// → Reviews all backlog items\n// → Calculates team velocity\n// → Selects optimal issues\n// → Organizes sprint board\n// → Notifies team`,\n badge: '02',\n },\n {\n title: 'Backlog Grooming',\n description: 'Your backlog stays healthy automatically—prioritized, organized, and actionable.',\n items: [{ text: 'Always prioritized correctly' }, { text: 'No more zombie issues' }, { text: 'Epics become user stories' }],\n code: `// Runs continuously\n$.Priya.groomBacklog({\n framework: 'RICE'\n})\n\n// Priya maintains:\n// → Applies RICE scoring\n// → Closes stale issues\n// → Breaks down epics\n// → Updates priorities\n// → Tracks dependencies`,\n badge: '03',\n },\n {\n title: 'Status Reports',\n description: 'Weekly progress reports generated and shared automatically. No more manual updates.',\n items: [{ text: 'Automatic progress tracking' }, { text: 'Blockers surfaced early' }, { text: 'Team stays informed' }],\n code: `// Every Friday\n$.Priya.statusReport({\n period: 'week'\n})\n\n// Priya reports:\n// → Issues closed\n// → PRs merged\n// → Sprint progress\n// → Blockers identified\n// → Shares with team`,\n badge: '04',\n },\n]\n\nexport function Features({ heading = 'How It Works', description = \"Priya handles the repetitive work so you can focus on what matters. Here's how she automates your entire product workflow.\", features = defaultFeatures, className }: FeaturesProps) {\n return (\n <section id=\"features\" className={cn('flex justify-center items-center pb-0 md:pb-10 bg-background', className)}>\n <div className=\"features-gradient flex flex-col items-center w-full relative overflow-visible gap-16 h-min max-w-[1400px] py-10 sm:py-20\" style={{ borderRadius: 'var(--radius-section, 36px)' }}>\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center w-full px-4 md:px-6 space-y-4\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground\">{heading}</h2>\n <p className=\"text-base md:text-lg text-muted-foreground max-w-2xl mx-auto\">{description}</p>\n </div>\n </ScrollReveal>\n\n <div className=\"w-full px-4 lg:px-18 space-y-10\">\n {features.map((feature, index) => (\n <ScrollReveal key={index} direction=\"up\" delay={index * 0.1}>\n <div className=\"grid md:grid-cols-2 overflow-hidden bg-card w-full rounded-3xl feature-card-shadow opacity-100 border border-border\">\n <div className=\"flex flex-col px-4 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20\">\n <div className=\"mb-4\">\n <span className=\"inline-flex size-10 items-center justify-center rounded-lg font-mono text-sm font-medium bg-card dark:bg-muted border border-border dark:border-border text-foreground\">\n {feature.badge}\n </span>\n </div>\n <h3 className=\"mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground\">{feature.title}</h3>\n <div className=\"mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground\">{feature.description}</div>\n <ul className=\"space-y-2 sm:space-y-3\">\n {feature.items.map((item, itemIndex) => (\n <li key={itemIndex} className=\"flex gap-x-3 items-start\">\n <CheckCircle className=\"mt-1 size-4 shrink-0 text-primary\" />\n <p className=\"text-sm md:text-base text-foreground\">{item.text}</p>\n </li>\n ))}\n </ul>\n </div>\n <div className=\"relative order-last md:order-last h-96 md:h-[500px] p-4 md:p-8 lg:p-10\">\n <CodeWindow code={feature.code} />\n </div>\n </div>\n </ScrollReveal>\n ))}\n </div>\n </div>\n </section>\n )\n}\n","import React from 'react'\n\nexport interface CodeWindowProps {\n code: string\n className?: string\n}\n\nexport function CodeWindow({ code, className }: CodeWindowProps) {\n const highlightCode = (code: string) => {\n const lines = code.split('\\n')\n const result: React.ReactElement[] = []\n let prevWasComment = false\n let prevWasCode = false\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n const isComment = line.trim().startsWith('//')\n const isEmpty = line.trim() === ''\n const isCode = !isComment && !isEmpty\n\n if (isComment && prevWasCode) {\n result.push(<div key={`space-before-${i}`} className=\"h-5\"></div>)\n }\n\n if (prevWasComment && isCode) {\n result.push(<div key={`space-after-${i}`} className=\"h-5\"></div>)\n }\n\n if (isEmpty) {\n result.push(<div key={i} className=\"h-5\"></div>)\n prevWasComment = false\n prevWasCode = false\n continue\n }\n\n if (isComment) {\n result.push(\n <div key={i} className=\"text-[#7d8590]\">\n {line}\n </div>\n )\n prevWasComment = true\n prevWasCode = false\n continue\n }\n\n let highlighted = line\n\n // Function names and properties with dots\n highlighted = highlighted.replace(\n /\\$\\.(\\w+)\\.(\\w+)/g,\n '<span class=\"text-[#79c0ff]\">$</span>.<span class=\"text-[#d2a8ff]\">$1</span>.<span class=\"text-[#ffa657]\">$2</span>'\n )\n\n // Object properties\n highlighted = highlighted.replace(/(\\w+):/g, '<span class=\"text-[#79c0ff]\">$1</span>:')\n\n // Strings\n highlighted = highlighted.replace(/'([^']*)'/g, \"<span class=\\\"text-[#a5d6ff]\\\">'$1'</span>\")\n\n // Numbers\n highlighted = highlighted.replace(/\\b(\\d+)\\b/g, '<span class=\"text-[#79c0ff]\">$1</span>')\n\n result.push(<div key={i} dangerouslySetInnerHTML={{ __html: highlighted }} />)\n\n prevWasComment = false\n prevWasCode = true\n }\n\n return result\n }\n\n return (\n <div className={`w-full h-full bg-[#0d1117] rounded-lg overflow-hidden ${className ?? ''}`}>\n <div className=\"flex-1 overflow-auto p-6 lg:p-8\">\n <pre className=\"text-sm lg:text-sm leading-relaxed font-mono text-[#e6edf3]\">{highlightCode(code)}</pre>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { Check } from 'lucide-react'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface PricingFeature {\n text: string\n}\n\nexport interface PricingProps {\n heading?: string\n subheading?: string\n price?: string\n priceUnit?: string\n trialText?: string\n ctaText?: string\n ctaHref?: string\n featuresHeading?: string\n features?: PricingFeature[]\n backgroundColor?: string\n securityNote?: string\n className?: string\n}\n\nconst defaultFeatures: PricingFeature[] = [\n { text: 'Automated backups' },\n { text: '24/7 support' },\n { text: 'Unlimited projects' },\n { text: 'Unlimited users' },\n { text: 'Custom domain' },\n { text: 'Custom branding' },\n { text: 'Advanced analytics' },\n { text: 'Custom permissions' },\n { text: 'Advanced reports' },\n]\n\nexport function Pricing({\n heading = 'Simple, transparent pricing',\n subheading = 'Start automating your product workflow in minutes. No credit card required to get started.',\n price = '$16',\n priceUnit = '/ month',\n trialText = 'With a 7-day free trial',\n ctaText = 'Get Started',\n ctaHref = '#contact',\n featuresHeading = \"What's included\",\n features = defaultFeatures,\n backgroundColor = 'bg-background',\n securityNote = 'Priya only accesses GitHub Issues and Projects—she cannot read your code or secrets.',\n className,\n}: PricingProps) {\n return (\n <section id=\"pricing\" className={cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className)}>\n <div className=\"max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center my-16 sm:my-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4\">{heading}</h2>\n <p className=\"text-base text-muted-foreground max-w-2xl mx-auto\">{subheading}</p>\n </div>\n </ScrollReveal>\n\n <ScrollReveal direction=\"up\" delay={0.2}>\n <div className=\"bg-card mx-auto flex w-full md:max-w-md lg:max-w-3xl flex-col rounded-3xl border border-border feature-card-shadow p-6 md:p-8 px-6\">\n <div className=\"text-center\">\n <div className=\"flex justify-start sm:justify-center items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{priceUnit}</span>\n </div>\n {trialText && <p className=\"text-left sm:text-center text-muted-foreground mt-3 text-sm\">{trialText}</p>}\n <Button asChild variant=\"default\" className=\"mt-5 w-full md:w-64\">\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n </div>\n\n <div className=\"mt-8\">\n <p className=\"text-left sm:text-center text-lg font-semibold text-foreground mb-4\">{featuresHeading}</p>\n <ul className=\"grid gap-y-3 gap-x-6 md:grid-cols-2 lg:grid-cols-3 \">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-start text-left\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </ScrollReveal>\n\n {securityNote && (\n <ScrollReveal direction=\"up\" delay={0.3}>\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n <strong>Your code stays private.</strong> {securityNote}\n </p>\n </div>\n </ScrollReveal>\n )}\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { Check } from 'lucide-react'\nimport Image from 'next/image'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface PricingTierFeature {\n text: string\n}\n\nexport interface PricingTier {\n title: string\n description: string\n price: string\n priceUnit: string\n ctaText: string\n ctaVariant?: 'primary' | 'secondary'\n ctaHref?: string\n features: PricingTierFeature[]\n image?: string\n imageAlt?: string\n featured?: boolean\n}\n\nexport interface PricingTiersProps {\n heading?: string\n subheading?: string\n tiers?: PricingTier[]\n backgroundColor?: string\n securityNote?: string\n className?: string\n}\n\nconst defaultTiers: PricingTier[] = [\n {\n title: 'Business',\n description: 'For growing teams that need more power and priority support.',\n price: '$299',\n priceUnit: '/ month',\n ctaText: 'Get Started',\n ctaVariant: 'primary',\n ctaHref: '#contact',\n features: [\n { text: 'Unlimited repositories' },\n { text: 'Unlimited issues & projects' },\n { text: 'Unlimited team members' },\n { text: 'Priority support' },\n { text: 'Custom workflows' },\n { text: 'Advanced analytics' },\n ],\n image: '/images/hero/hero-main.png',\n imageAlt: 'Business Plan',\n featured: true,\n },\n {\n title: 'Team',\n description: 'Perfect for small teams getting started with AI product management.',\n price: '$99',\n priceUnit: '/ month',\n ctaText: 'Get Started',\n ctaVariant: 'secondary',\n ctaHref: '#contact',\n features: [{ text: 'Up to 10 repositories' }, { text: 'Unlimited issues & projects' }, { text: 'Unlimited team members' }, { text: 'Email support' }],\n featured: false,\n },\n]\n\nexport function PricingTiers({\n heading = 'Simple, transparent pricing',\n subheading = 'Start automating your product workflow in minutes. No credit card required to get started.',\n tiers = defaultTiers,\n backgroundColor = 'bg-background',\n securityNote = 'Priya only accesses GitHub Issues and Projects—she cannot read your code or secrets.',\n className,\n}: PricingTiersProps) {\n return (\n <section id=\"pricing\" className={cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className)}>\n <div className=\"max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center my-16 sm:my-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4\">{heading}</h2>\n <p className=\"text-base text-muted-foreground max-w-2xl mx-auto\">{subheading}</p>\n </div>\n </ScrollReveal>\n\n <ul className=\"grid gap-6 lg:grid-cols-3 lg:items-stretch\">\n {tiers.map((tier, index) => (\n <li key={index} className={tier.featured ? 'lg:col-span-2 flex' : 'lg:col-span-1 flex'}>\n <ScrollReveal direction=\"up\" delay={0.2 + index * 0.1} className=\"w-full\">\n <div\n className={\n tier.featured\n ? 'bg-card flex w-full h-full flex-col-reverse rounded-3xl border border-border feature-card-shadow md:flex-row'\n : 'bg-card w-full h-full rounded-3xl border border-border feature-card-shadow p-6 md:p-8'\n }\n >\n {tier.featured ? (\n <>\n {tier.image && (\n <div className=\"hidden xl:block xl:w-1/2 pl-6 md:pl-8 py-6 md:py-8\">\n <div className=\"h-full rounded-lg overflow-hidden relative min-h-96\">\n <Image src={tier.image} alt={tier.imageAlt || tier.title} fill className=\"object-cover\" sizes=\"(max-width: 1280px) 0vw, 50vw\" />\n </div>\n </div>\n )}\n\n <div className=\"flex flex-col p-6 md:p-8 xl:w-1/2\">\n <div className=\"flex-1\">\n <p className=\"text-lg font-semibold text-foreground\">{tier.title}</p>\n <p className=\"text-muted-foreground mt-3\">{tier.description}</p>\n <div className=\"mt-6 flex items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{tier.price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{tier.priceUnit}</span>\n </div>\n <Button asChild variant={tier.ctaVariant === 'primary' ? 'default' : 'secondary'} className=\"mt-5 w-full sm:w-auto\">\n <a href={tier.ctaHref || '#'}>{tier.ctaText}</a>\n </Button>\n </div>\n\n <div className=\"mt-8\">\n <ul className=\"space-y-2\">\n {tier.features.map((feature, featureIndex) => (\n <li key={featureIndex} className=\"flex items-start\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </>\n ) : (\n <div className=\"flex h-full flex-col\">\n <div>\n <p className=\"text-lg font-semibold text-foreground\">{tier.title}</p>\n <p className=\"text-muted-foreground mt-3\">{tier.description}</p>\n <div className=\"mt-6 flex items-baseline\">\n <span className=\"text-3xl font-semibold text-foreground\">{tier.price}</span>\n <span className=\"text-muted-foreground ml-2 text-sm\">{tier.priceUnit}</span>\n </div>\n <Button asChild variant={tier.ctaVariant === 'primary' ? 'default' : 'secondary'} className=\"mt-5 w-full sm:w-auto\">\n <a href={tier.ctaHref || '#'}>{tier.ctaText}</a>\n </Button>\n\n <div className=\"mt-8\">\n <ul className=\"space-y-2\">\n {tier.features.map((feature, featureIndex) => (\n <li key={featureIndex} className=\"flex items-start\">\n <Check className=\"text-primary mr-2 size-4 shrink-0\" />\n <span className=\"text-foreground text-sm\">{feature.text}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n )}\n </div>\n </ScrollReveal>\n </li>\n ))}\n </ul>\n\n {securityNote && (\n <ScrollReveal direction=\"up\" delay={0.4}>\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n <strong>Your code stays private.</strong> {securityNote}\n </p>\n </div>\n </ScrollReveal>\n )}\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { HiArrowRight } from 'react-icons/hi'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { Button } from '@mdxui/primitives'\nimport { cn } from '../../lib/utils'\n\nexport interface CTAButton {\n text: string\n href: string\n variant?: 'primary' | 'secondary'\n showArrow?: boolean\n}\n\nexport interface CTAProps {\n heading?: string\n subheading?: string\n buttons?: CTAButton[]\n /** @deprecated theme-driven now; ignored */\n backgroundColor?: 'light' | 'blue' | 'green' | 'purple' | 'orange'\n className?: string\n}\n\nconst defaultButtons: CTAButton[] = [\n {\n text: 'Get Started',\n href: '#pricing',\n variant: 'primary',\n showArrow: true,\n },\n]\n\nexport function CTA({ heading = 'Ready to Save 15 Hours Per Week?', subheading = 'Setup with Github – takes 5 minutes.', buttons = defaultButtons, backgroundColor: _backgroundColor, className }: CTAProps) {\n const bgClass = 'bg-card'\n\n return (\n <section className={cn(`py-20 md:py-32 px-4 md:px-6 ${bgClass}`, className)}>\n <div className=\"max-w-3xl mx-auto text-center\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"space-y-6\">\n <h2 className=\"font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight\">{heading}</h2>\n <p className=\"max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground\">{subheading}</p>\n <div className=\"flex flex-col sm:flex-row gap-3 justify-center items-center pt-4\">\n {buttons.map((button, index) => (\n <Button key={index} asChild variant={button.variant === 'primary' ? 'default' : 'secondary'}>\n <a href={button.href}>\n {button.text}\n {button.showArrow && <HiArrowRight className=\"w-4 h-4\" />}\n </a>\n </Button>\n ))}\n </div>\n </div>\n </ScrollReveal>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@mdxui/primitives'\nimport { ScrollReveal } from '../../shared/scroll-reveal'\nimport { cn } from '../../lib/utils'\n\nexport interface FAQItem {\n question: string\n answer: string\n}\n\nexport interface FAQProps {\n heading?: string\n faqs?: FAQItem[]\n backgroundColor?: string\n className?: string\n}\n\nconst defaultFaqs: FAQItem[] = [\n {\n question: 'How do I get started?',\n answer: 'Choose your plan, connect your GitHub account, and Priya starts working. Setup takes 5 minutes.',\n },\n {\n question: 'Does it work with private repos?',\n answer: 'Yes, both plans work with private and public repositories.',\n },\n {\n question: 'What if it makes a mistake?',\n answer: 'You can override any decision. Priya learns from your corrections.',\n },\n {\n question: 'Can I switch plans later?',\n answer: 'Yes, upgrade or downgrade anytime. Changes take effect immediately.',\n },\n {\n question: 'What about Enterprise?',\n answer: \"Contact us for custom solutions tailored to your organization's needs, including dedicated support, custom workflows, and enterprise-grade SLAs.\",\n },\n {\n question: 'Is Priya SOC 2 and HIPAA compliant?',\n answer: 'Yes, Priya is SOC 2 Type II certified and HIPAA compliant, ensuring your data is handled with the highest security and privacy standards.',\n },\n]\n\nexport function FAQ({ heading = 'FAQs', faqs = defaultFaqs, backgroundColor = 'bg-background', className }: FAQProps) {\n return (\n <section id=\"faq\" className={cn(`py-20 px-6 lg:px-12 ${backgroundColor}`, className)}>\n <div className=\"max-w-4xl mx-auto\">\n <ScrollReveal direction=\"up\" delay={0.1}>\n <div className=\"text-center mb-12\">\n <h2 className=\"font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4\">{heading}</h2>\n </div>\n </ScrollReveal>\n\n <Accordion type=\"single\" collapsible className=\"space-y-4\">\n {faqs.map((faq, index) => (\n <ScrollReveal key={index} direction=\"up\" delay={0.15 + index * 0.05}>\n <AccordionItem value={`item-${index}`} className=\"rounded-xl px-4 sm:px-6 border border-border bg-card shadow-sm\">\n <AccordionTrigger className=\"hover:no-underline py-5 text-base font-medium text-foreground\">{faq.question}</AccordionTrigger>\n <AccordionContent className=\"pb-5 text-sm text-muted-foreground leading-relaxed\">{faq.answer}</AccordionContent>\n </AccordionItem>\n </ScrollReveal>\n ))}\n </Accordion>\n </div>\n </section>\n )\n}\n","'use client'\n\nimport { useState, useEffect } from 'react'\nimport Link from 'next/link'\nimport { Menu, X } from 'lucide-react'\nimport { motion, AnimatePresence } from 'motion/react'\nimport { cn } from '../../lib/utils'\nimport { Button } from '@mdxui/primitives'\n\nexport interface NavLink {\n label: string\n href: string\n}\n\nexport interface NavigationProps {\n logo?: string | React.ReactNode\n logoHref?: string\n links?: NavLink[]\n ctaText?: string\n ctaHref?: string\n ctaVariant?: 'default' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive'\n className?: string\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | 'full'\n sticky?: boolean\n showScrollEffect?: boolean\n}\n\nexport function Navigation({\n logo = 'Priya',\n logoHref = '/',\n links = [\n { label: 'Features', href: '#features' },\n { label: 'Pricing', href: '#pricing' },\n { label: 'FAQ', href: '#faq' },\n ],\n ctaText = 'Hire me',\n ctaHref = '#pricing',\n ctaVariant = 'secondary',\n className,\n maxWidth = '7xl',\n sticky = true,\n showScrollEffect = true,\n}: NavigationProps) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n const [isScrolled, setIsScrolled] = useState(false)\n\n useEffect(() => {\n if (!showScrollEffect) return\n\n const handleScroll = () => {\n setIsScrolled(window.scrollY > 10)\n }\n\n window.addEventListener('scroll', handleScroll)\n return () => window.removeEventListener('scroll', handleScroll)\n }, [showScrollEffect])\n\n const maxWidthClass = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n '3xl': 'max-w-3xl',\n '4xl': 'max-w-4xl',\n '5xl': 'max-w-5xl',\n '6xl': 'max-w-6xl',\n '7xl': 'max-w-7xl',\n full: 'max-w-full',\n }[maxWidth]\n\n return (\n <nav\n className={cn(\n 'z-50 w-full transition-all duration-300',\n sticky && 'sticky top-0',\n showScrollEffect && isScrolled ? 'bg-background/95 backdrop-blur-md' : 'bg-background',\n className\n )}\n >\n <div className={cn(maxWidthClass, 'mx-auto px-6 lg:px-12 py-4')}>\n <div className=\"flex items-center justify-between\">\n {/* Logo */}\n <div className=\"flex items-center\">\n <Link href={logoHref} className=\"flex items-center\">\n {typeof logo === 'string' ? <span className=\"text-3xl font-base text-foreground\">{logo}</span> : logo}\n </Link>\n </div>\n\n {/* Desktop Navigation */}\n {links && links.length > 0 && (\n <div className=\"hidden lg:flex items-center gap-8\">\n {links.map((link) => (\n <a key={link.href} href={link.href} className=\"text-sm text-foreground hover:opacity-60 transition-opacity\">\n {link.label}\n </a>\n ))}\n </div>\n )}\n\n {/* CTA Button */}\n {ctaText && ctaHref && (\n <div className=\"hidden lg:flex items-center\">\n <Button asChild variant={ctaVariant}>\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n </div>\n )}\n\n {/* Mobile Menu Button */}\n <button className=\"lg:hidden p-2 text-foreground\" onClick={() => setMobileMenuOpen(!mobileMenuOpen)} aria-label=\"Toggle menu\">\n {mobileMenuOpen ? <X className=\"w-6 h-6\" /> : <Menu className=\"w-6 h-6\" />}\n </button>\n </div>\n\n {/* Mobile Menu */}\n <AnimatePresence>\n {mobileMenuOpen && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n className=\"lg:hidden overflow-hidden\"\n >\n <div className=\"mt-4 py-4 rounded-xl bg-card\">\n <div className=\"flex flex-col gap-4 px-6\">\n {links.map((link) => (\n <a key={link.href} href={link.href} className=\"py-2 text-foreground hover:opacity-70 transition-colors\" onClick={() => setMobileMenuOpen(false)}>\n {link.label}\n </a>\n ))}\n {ctaText && ctaHref && (\n <Button asChild variant={ctaVariant} className=\"mt-2\" onClick={() => setMobileMenuOpen(false)}>\n <a href={ctaHref}>{ctaText}</a>\n </Button>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </nav>\n )\n}\n","'use client'\n\nimport Link from 'next/link'\nimport { FaGithub, FaXTwitter } from 'react-icons/fa6'\nimport { SiNpm } from 'react-icons/si'\nimport { FaArrowRight } from 'react-icons/fa6'\nimport { Input } from '@mdxui/primitives'\nimport type { IconType } from 'react-icons'\nimport { cn } from '../../lib/utils'\n\nexport interface SocialLink {\n href: string\n icon: IconType\n label: string\n}\n\nexport interface QuickLink {\n href: string\n label: string\n}\n\nexport interface FooterProps {\n logo?: string\n description?: string\n socialLinks?: SocialLink[]\n quickLinks?: QuickLink[]\n contactTitle?: string\n emailPlaceholder?: string\n onEmailSubmit?: (email: string) => void\n copyrightText?: string\n showThemeToggle?: boolean\n className?: string\n}\n\nexport function Footer({\n logo = 'Priya',\n description = 'Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.',\n socialLinks = [\n { href: 'https://github.com', icon: FaGithub, label: 'GitHub' },\n { href: 'https://npmjs.com', icon: SiNpm, label: 'npm' },\n { href: 'https://twitter.com', icon: FaXTwitter, label: 'X (Twitter)' },\n ],\n quickLinks = [\n { href: '/#pricing', label: 'Pricing' },\n { href: '/#features', label: 'How it works' },\n { href: '/contact', label: 'Contact' },\n ],\n contactTitle = 'Stay in touch',\n emailPlaceholder = 'Enter your email',\n onEmailSubmit,\n copyrightText = 'Priya.do © 2025. All rights reserved.',\n className,\n}: FooterProps) {\n const handleEmailSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n const form = e.currentTarget\n const formData = new FormData(form)\n const email = formData.get('email') as string\n if (onEmailSubmit) {\n onEmailSubmit(email)\n }\n form.reset()\n }\n\n return (\n <footer className={cn('py-16 px-6 lg:px-12 bg-card text-card-foreground', className)}>\n <div className=\"max-w-7xl mx-auto\">\n <div className=\"grid md:grid-cols-5 gap-12 mb-12\">\n {/* Logo & Description */}\n <div className=\"md:col-span-2\">\n <Link href=\"/\" className=\"inline-block mb-4\">\n <div className=\"text-3xl font-base text-card-foreground\">{logo}</div>\n </Link>\n <p className=\"max-w-md text-sm leading-relaxed text-muted-foreground mb-6\">{description}</p>\n\n {/* Social Icons */}\n <div className=\"flex items-center gap-4\">\n {socialLinks.map((link) => {\n const Icon = link.icon\n return (\n <Link\n key={link.label}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-muted-foreground transition-colors hover:text-card-foreground\"\n aria-label={link.label}\n >\n <Icon className=\"w-5 h-5\" />\n </Link>\n )\n })}\n </div>\n </div>\n\n {/* Quick Links */}\n <div>\n <h3 className=\"font-semibold text-base mb-4 text-card-foreground\">Quick Links</h3>\n <ul className=\"space-y-2\">\n {quickLinks.map((link) => (\n <li key={link.label}>\n <Link href={link.href} className=\"text-sm text-muted-foreground transition-colors hover:text-card-foreground\">\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Contact Us */}\n <div className=\"w-full md:col-span-2 md:flex md:flex-col md:items-end\">\n <div className=\"w-full md:max-w-sm\">\n <h3 className=\"font-semibold text-base mb-4 text-card-foreground\">{contactTitle}</h3>\n <form onSubmit={handleEmailSubmit} className=\"relative\">\n <Input\n type=\"email\"\n name=\"email\"\n placeholder={emailPlaceholder}\n required\n className=\"w-full bg-muted border-border text-card-foreground placeholder:text-muted-foreground pr-12\"\n />\n <button\n type=\"submit\"\n className=\"absolute right-1 top-1/2 -translate-y-1/2 bg-card text-foreground hover:bg-card active:bg-card active:text-card-foreground px-3 py-3 rounded-md transition-colors\"\n aria-label=\"Submit email\"\n >\n <FaArrowRight className=\"w-3 h-3\" />\n </button>\n </form>\n </div>\n </div>\n </div>\n\n {/* Bottom Bar */}\n <div className=\"border-t border-border pt-8\">\n <div className=\"flex flex-col md:flex-row justify-between items-center gap-4\">\n <p className=\"text-sm text-muted-foreground\">{copyrightText}</p>\n </div>\n </div>\n </div>\n </footer>\n )\n}\n"],"mappings":"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","names":["jsx","jsx","jsx","code","jsx","jsxs","Button","jsx","jsxs","defaultFeatures","Button","Check","Image","Button","jsx","jsxs","Image","Button","Check","Button","jsx","jsxs","Button","jsx","jsxs","motion","Button","jsx","jsxs","motion","Link","jsx","jsxs","Link"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export { AnimationConfig, CTA, CTAButton, CTAProps, Contact, ContactProps, FAQ, FAQItem, FAQProps, Feature, FeatureItem, Features, FeaturesProps, Footer, FooterProps, FormField, Hero, HeroProps, Integration, IntegrationNode, IntegrationProps, NavLink, Navigation, NavigationProps, Pricing, PricingFeature, PricingProps, PricingTier, PricingTierFeature, PricingTiers, PricingTiersProps, QuickLink, SocialLink } from './components/index.js';
2
- export { P as Problem, a as ProblemProps, W as WorkflowItem } from './problem-B2-XszSB.js';
1
+ export { CTA, CTAButton, CTAProps, FAQ, FAQItem, FAQProps, Feature, FeatureItem, Features, FeaturesProps, Footer, FooterProps, Hero, HeroProps, NavLink, Navigation, NavigationProps, Pricing, PricingFeature, PricingProps, PricingTier, PricingTierFeature, PricingTiers, PricingTiersProps, QuickLink, SocialLink } from './components/index.js';
3
2
  export { AnimatedBeam, AnimatedBeamProps, CodeWindow, CodeWindowProps, GridPattern, GridPatternProps, Marquee, MarqueeProps, ScrollReveal, ScrollRevealProps } from './shared/index.js';
4
3
  import { ClassValue } from 'clsx';
5
4
  import 'react/jsx-runtime';