@mdxui/named 6.3.2 → 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.
@@ -178,7 +178,7 @@ function Hero({
178
178
  ]
179
179
  }
180
180
  ) }) }),
181
- /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx3("h1", { className: "font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground", children: heading }) }),
181
+ /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx3("h1", { className: "font-halant font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground", children: heading }) }),
182
182
  /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx3("p", { className: "text-lg leading-relaxed max-w-lg", children: description }) }),
183
183
  /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: /* @__PURE__ */ jsx3("div", { className: "flex flex-col sm:flex-row gap-3 pt-4", children: /* @__PURE__ */ jsx3(Button, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsxs("a", { href: ctaHref, children: [
184
184
  ctaText,
@@ -191,7 +191,8 @@ function Hero({
191
191
  src: rightImageSrc,
192
192
  alt: rightImageAlt,
193
193
  fill: true,
194
- className: "object-cover object-left-center rounded-2xl",
194
+ className: "object-cover object-left-center",
195
+ style: { borderRadius: "var(--radius-image, 1rem)" },
195
196
  priority: true,
196
197
  sizes: rightImageSizes
197
198
  }
@@ -364,13 +365,13 @@ $.Priya.statusReport({
364
365
  }
365
366
  ];
366
367
  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 }) {
367
- return /* @__PURE__ */ jsx5("section", { id: "features", className: cn("flex justify-center items-center pb-0 md:pb-10 bg-background", className), children: /* @__PURE__ */ jsxs2("div", { className: "features-gradient flex flex-col items-center w-full relative overflow-visible rounded-[36px] gap-16 h-min max-w-[1400px] py-10 sm:py-20", children: [
368
+ return /* @__PURE__ */ jsx5("section", { id: "features", className: cn("flex justify-center items-center pb-0 md:pb-10 bg-background", className), children: /* @__PURE__ */ jsxs2("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)" }, children: [
368
369
  /* @__PURE__ */ jsx5(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs2("div", { className: "text-center w-full px-4 md:px-6 space-y-4", children: [
369
- /* @__PURE__ */ jsx5("h2", { className: "font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: heading }),
370
+ /* @__PURE__ */ jsx5("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: heading }),
370
371
  /* @__PURE__ */ jsx5("p", { className: "text-base md:text-lg text-muted-foreground max-w-2xl mx-auto", children: description })
371
372
  ] }) }),
372
373
  /* @__PURE__ */ jsx5("div", { className: "w-full px-4 lg:px-18 space-y-10", children: features.map((feature, index) => /* @__PURE__ */ jsx5(ScrollReveal, { direction: "up", delay: index * 0.1, children: /* @__PURE__ */ jsxs2("div", { className: "grid md:grid-cols-2 overflow-hidden bg-card w-full rounded-3xl feature-card-shadow opacity-100 border border-border", children: [
373
- /* @__PURE__ */ jsxs2("div", { className: "flex flex-col px-6 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20", children: [
374
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col px-4 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20", children: [
374
375
  /* @__PURE__ */ jsx5("div", { className: "mb-4", children: /* @__PURE__ */ jsx5("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", children: feature.badge }) }),
375
376
  /* @__PURE__ */ jsx5("h3", { className: "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground", children: feature.title }),
376
377
  /* @__PURE__ */ jsx5("div", { className: "mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground", children: feature.description }),
@@ -415,7 +416,7 @@ function Pricing({
415
416
  }) {
416
417
  return /* @__PURE__ */ jsx6("section", { id: "pricing", className: cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs3("div", { className: "max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient", children: [
417
418
  /* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs3("div", { className: "text-center my-16 sm:my-12", children: [
418
- /* @__PURE__ */ jsx6("h2", { className: "font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
419
+ /* @__PURE__ */ jsx6("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
419
420
  /* @__PURE__ */ jsx6("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
420
421
  ] }) }),
421
422
  /* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsxs3("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", children: [
@@ -491,7 +492,7 @@ function PricingTiers({
491
492
  }) {
492
493
  return /* @__PURE__ */ jsx7("section", { id: "pricing", className: cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs4("div", { className: "max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient", children: [
493
494
  /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs4("div", { className: "text-center my-16 sm:my-12", children: [
494
- /* @__PURE__ */ jsx7("h2", { className: "font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
495
+ /* @__PURE__ */ jsx7("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
495
496
  /* @__PURE__ */ jsx7("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
496
497
  ] }) }),
497
498
  /* @__PURE__ */ jsx7("ul", { className: "grid gap-6 lg:grid-cols-3 lg:items-stretch", children: tiers.map((tier, index) => /* @__PURE__ */ jsx7("li", { className: tier.featured ? "lg:col-span-2 flex" : "lg:col-span-1 flex", children: /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.2 + index * 0.1, className: "w-full", children: /* @__PURE__ */ jsx7(
@@ -553,7 +554,7 @@ var defaultButtons = [
553
554
  function CTA({ heading = "Ready to Save 15 Hours Per Week?", subheading = "Setup with Github \u2013 takes 5 minutes.", buttons = defaultButtons, backgroundColor: _backgroundColor, className }) {
554
555
  const bgClass = "bg-card";
555
556
  return /* @__PURE__ */ jsx8("section", { className: cn(`py-20 md:py-32 px-4 md:px-6 ${bgClass}`, className), children: /* @__PURE__ */ jsx8("div", { className: "max-w-3xl mx-auto text-center", children: /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs5("div", { className: "space-y-6", children: [
556
- /* @__PURE__ */ jsx8("h2", { className: "font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight", children: heading }),
557
+ /* @__PURE__ */ jsx8("h2", { className: "font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight", children: heading }),
557
558
  /* @__PURE__ */ jsx8("p", { className: "max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground", children: subheading }),
558
559
  /* @__PURE__ */ jsx8("div", { className: "flex flex-col sm:flex-row gap-3 justify-center items-center pt-4", children: buttons.map((button, index) => /* @__PURE__ */ jsx8(Button4, { asChild: true, variant: button.variant === "primary" ? "default" : "secondary", children: /* @__PURE__ */ jsxs5("a", { href: button.href, children: [
559
560
  button.text,
@@ -593,466 +594,19 @@ var defaultFaqs = [
593
594
  ];
594
595
  function FAQ({ heading = "FAQs", faqs = defaultFaqs, backgroundColor = "bg-background", className }) {
595
596
  return /* @__PURE__ */ jsx9("section", { id: "faq", className: cn(`py-20 px-6 lg:px-12 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs6("div", { className: "max-w-4xl mx-auto", children: [
596
- /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx9("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsx9("h2", { className: "font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }) }) }),
597
- /* @__PURE__ */ jsx9(Accordion, { type: "single", collapsible: true, className: "space-y-4", children: faqs.map((faq, index) => /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.15 + index * 0.05, children: /* @__PURE__ */ jsxs6(AccordionItem, { value: `item-${index}`, className: "rounded-xl px-6 border border-border bg-card shadow-sm", children: [
597
+ /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx9("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsx9("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }) }) }),
598
+ /* @__PURE__ */ jsx9(Accordion, { type: "single", collapsible: true, className: "space-y-4", children: faqs.map((faq, index) => /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.15 + index * 0.05, children: /* @__PURE__ */ jsxs6(AccordionItem, { value: `item-${index}`, className: "rounded-xl px-4 sm:px-6 border border-border bg-card shadow-sm", children: [
598
599
  /* @__PURE__ */ jsx9(AccordionTrigger, { className: "hover:no-underline py-5 text-base font-medium text-foreground", children: faq.question }),
599
600
  /* @__PURE__ */ jsx9(AccordionContent, { className: "pb-5 text-sm text-muted-foreground leading-relaxed", children: faq.answer })
600
601
  ] }) }, index)) })
601
602
  ] }) });
602
603
  }
603
604
 
604
- // src/components/problem/problem.tsx
605
- import { FaInbox, FaCalendarAlt, FaListUl, FaFileAlt, FaRocket, FaProjectDiagram, FaBug, FaLightbulb } from "react-icons/fa";
606
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
607
- var defaultWorkflows = [
608
- { icon: FaInbox, label: "Issue triage" },
609
- { icon: FaCalendarAlt, label: "Sprint planning" },
610
- { icon: FaListUl, label: "Backlog grooming" },
611
- { icon: FaFileAlt, label: "Status updates" },
612
- { icon: FaRocket, label: "Release planning" },
613
- { icon: FaProjectDiagram, label: "Dependency tracking" },
614
- { icon: FaBug, label: "Bug prioritization" },
615
- { icon: FaLightbulb, label: "Feature requests" }
616
- ];
617
- function Problem({
618
- heading = "Product managers <strong>spend 15+ hours</strong> per week on busywork",
619
- workflows = defaultWorkflows,
620
- subheading = "What if all of that just... ",
621
- subheadingHighlight = "happened automatically?",
622
- highlightColor = "bg-primary/20",
623
- marqueeDuration = "30s",
624
- marqueeGap = "0.5rem",
625
- backgroundColor = "bg-background",
626
- className
627
- }) {
628
- return /* @__PURE__ */ jsx10("section", { id: "problem", className: cn(`py-20 md:pb-32 px-6 lg:px-12 ${backgroundColor}`, className), children: /* @__PURE__ */ jsx10("div", { className: "max-w-4xl mx-auto", children: /* @__PURE__ */ jsxs7("div", { className: "text-center space-y-8", children: [
629
- /* @__PURE__ */ jsx10(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx10(
630
- "h2",
631
- {
632
- className: "font-normal text-[clamp(36px,4vw,40px)] leading-tight text-foreground",
633
- dangerouslySetInnerHTML: { __html: heading }
634
- }
635
- ) }),
636
- /* @__PURE__ */ jsx10(ScrollReveal, { direction: "none", delay: 0.2, children: /* @__PURE__ */ jsxs7("div", { className: "relative py-6", children: [
637
- /* @__PURE__ */ jsx10("div", { className: "absolute left-0 top-0 bottom-0 w-32 bg-gradient-to-r from-background to-transparent z-10 pointer-events-none" }),
638
- /* @__PURE__ */ jsx10("div", { className: "absolute right-0 top-0 bottom-0 w-32 bg-gradient-to-l from-background to-transparent z-10 pointer-events-none" }),
639
- /* @__PURE__ */ jsx10(
640
- Marquee,
641
- {
642
- className: "[--duration:30s] [--gap:0.5rem]",
643
- style: {
644
- "--duration": marqueeDuration,
645
- "--gap": marqueeGap
646
- },
647
- children: workflows.map((workflow, index) => /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2.5 pl-1.5 pr-3.5 py-1.5 bg-card border border-border rounded-full", children: [
648
- /* @__PURE__ */ jsx10("div", { className: "flex items-center justify-center w-7 h-7 rounded-full bg-background", children: /* @__PURE__ */ jsx10(workflow.icon, { className: "w-3.5 h-3.5 text-foreground" }) }),
649
- /* @__PURE__ */ jsx10("span", { className: "text-sm text-foreground whitespace-nowrap", children: workflow.label })
650
- ] }, index))
651
- }
652
- )
653
- ] }) }),
654
- /* @__PURE__ */ jsx10(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx10("div", { className: "pt-2 md:pt-4", children: /* @__PURE__ */ jsxs7("h3", { className: "font-normal text-[clamp(26px,3.5vw,32px)] leading-tight text-foreground", children: [
655
- subheading,
656
- /* @__PURE__ */ jsxs7("span", { className: "relative inline-block", children: [
657
- /* @__PURE__ */ jsx10("span", { className: "relative z-10", children: subheadingHighlight }),
658
- /* @__PURE__ */ jsx10("span", { className: `absolute bottom-1 left-0 w-full h-3 ${highlightColor} opacity-30 -rotate-1` })
659
- ] })
660
- ] }) }) })
661
- ] }) }) });
662
- }
663
-
664
- // src/components/contact/contact.tsx
665
- import { useState } from "react";
666
- import { Button as Button5, Input, Label, Textarea } from "@mdxui/primitives";
667
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
668
- var defaultFields = [
669
- {
670
- id: "name",
671
- label: "Name",
672
- type: "text",
673
- required: true
674
- },
675
- {
676
- id: "email",
677
- label: "Company Email",
678
- type: "email",
679
- required: true
680
- },
681
- {
682
- id: "message",
683
- label: "Message",
684
- type: "textarea",
685
- placeholder: "Tell us about your use case, team size, or any other questions you may have.",
686
- required: true
687
- }
688
- ];
689
- function Contact({
690
- heading = "Get in touch",
691
- subheading = "Have questions about use cases, pricing, or anything else? Let's chat!",
692
- fields = defaultFields,
693
- submitButtonText = "Submit",
694
- successMessage = "Thanks for reaching out! I'll get back to you within 24 hours.",
695
- errorMessage = "Hmm, something went wrong. Mind trying again?",
696
- onSubmit,
697
- backgroundColor = "bg-background",
698
- className
699
- }) {
700
- const [isSubmitting, setIsSubmitting] = useState(false);
701
- const [formData, setFormData] = useState({});
702
- const [submitStatus, setSubmitStatus] = useState("idle");
703
- const handleSubmit = async (e) => {
704
- e.preventDefault();
705
- setIsSubmitting(true);
706
- setSubmitStatus("idle");
707
- try {
708
- if (onSubmit) {
709
- await onSubmit(formData);
710
- }
711
- setSubmitStatus("success");
712
- setFormData({});
713
- e.target.reset();
714
- } catch {
715
- setSubmitStatus("error");
716
- } finally {
717
- setIsSubmitting(false);
718
- }
719
- };
720
- const handleChange = (e) => {
721
- setFormData((prev) => ({
722
- ...prev,
723
- [e.target.id]: e.target.value
724
- }));
725
- };
726
- return /* @__PURE__ */ jsx11("section", { className: cn(`relative py-12 md:py-32 px-6 lg:px-12 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs8("div", { className: "max-w-3xl mx-auto", children: [
727
- /* @__PURE__ */ jsx11(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs8("div", { className: "mb-14 text-center", children: [
728
- /* @__PURE__ */ jsx11("h1", { className: "font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
729
- /* @__PURE__ */ jsx11("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
730
- ] }) }),
731
- /* @__PURE__ */ jsx11(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsxs8(
732
- "form",
733
- {
734
- onSubmit: handleSubmit,
735
- 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",
736
- children: [
737
- fields.map((field) => /* @__PURE__ */ jsxs8("div", { className: "grid w-full items-center gap-2", children: [
738
- /* @__PURE__ */ jsxs8(Label, { htmlFor: field.id, className: "text-foreground", children: [
739
- field.label,
740
- field.required && /* @__PURE__ */ jsx11("span", { className: "text-destructive ml-1", children: "*" })
741
- ] }),
742
- field.type === "textarea" ? /* @__PURE__ */ jsx11(Textarea, { id: field.id, placeholder: field.placeholder, required: field.required, onChange: handleChange, className: "min-h-[120px]" }) : /* @__PURE__ */ jsx11(Input, { type: field.type, id: field.id, placeholder: field.placeholder, required: field.required, onChange: handleChange })
743
- ] }, field.id)),
744
- /* @__PURE__ */ jsx11(Button5, { type: "submit", className: "w-full", disabled: isSubmitting, children: isSubmitting ? "Submitting..." : submitButtonText }),
745
- submitStatus === "success" && /* @__PURE__ */ jsx11("p", { className: "text-primary text-sm text-center", children: successMessage }),
746
- submitStatus === "error" && /* @__PURE__ */ jsx11("p", { className: "text-destructive text-sm text-center", children: errorMessage })
747
- ]
748
- }
749
- ) })
750
- ] }) });
751
- }
752
-
753
- // src/components/integration/integration.tsx
754
- import { forwardRef, useRef, useEffect as useEffect2, useState as useState3 } from "react";
755
-
756
- // src/shared/animated-beam/animated-beam.tsx
757
- import { useEffect, useId, useState as useState2 } from "react";
758
- import { motion as motion2 } from "motion/react";
759
- import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
760
- function AnimatedBeam({
761
- className,
762
- containerRef,
763
- fromRef,
764
- toRef,
765
- curvature = 0,
766
- reverse = false,
767
- duration = Math.random() * 3 + 4,
768
- delay = 0,
769
- pathColor = "gray",
770
- pathWidth = 2,
771
- pathOpacity = 0.2,
772
- gradientStartColor = "#ffaa40",
773
- gradientStopColor = "#9c40ff",
774
- startXOffset = 0,
775
- startYOffset = 0,
776
- endXOffset = 0,
777
- endYOffset = 0
778
- }) {
779
- const id = useId();
780
- const [pathD, setPathD] = useState2("");
781
- const [svgDimensions, setSvgDimensions] = useState2({ width: 0, height: 0 });
782
- const gradientCoordinates = reverse ? {
783
- x1: ["90%", "-10%"],
784
- x2: ["100%", "0%"],
785
- y1: ["0%", "0%"],
786
- y2: ["0%", "0%"]
787
- } : {
788
- x1: ["10%", "110%"],
789
- x2: ["0%", "100%"],
790
- y1: ["0%", "0%"],
791
- y2: ["0%", "0%"]
792
- };
793
- useEffect(() => {
794
- const updatePath = () => {
795
- if (containerRef.current && fromRef.current && toRef.current) {
796
- const containerRect = containerRef.current.getBoundingClientRect();
797
- const rectA = fromRef.current.getBoundingClientRect();
798
- const rectB = toRef.current.getBoundingClientRect();
799
- const svgWidth = containerRect.width;
800
- const svgHeight = containerRect.height;
801
- setSvgDimensions({ width: svgWidth, height: svgHeight });
802
- const startX = rectA.left - containerRect.left + rectA.width / 2 + startXOffset;
803
- const startY = rectA.top - containerRect.top + rectA.height / 2 + startYOffset;
804
- const endX = rectB.left - containerRect.left + rectB.width / 2 + endXOffset;
805
- const endY = rectB.top - containerRect.top + rectB.height / 2 + endYOffset;
806
- const controlY = startY - curvature;
807
- const d = `M ${startX},${startY} Q ${(startX + endX) / 2},${controlY} ${endX},${endY}`;
808
- setPathD(d);
809
- }
810
- };
811
- const resizeObserver = new ResizeObserver(() => {
812
- updatePath();
813
- });
814
- if (containerRef.current) {
815
- resizeObserver.observe(containerRef.current);
816
- }
817
- updatePath();
818
- return () => {
819
- resizeObserver.disconnect();
820
- };
821
- }, [containerRef, fromRef, toRef, curvature, startXOffset, startYOffset, endXOffset, endYOffset]);
822
- return /* @__PURE__ */ jsxs9(
823
- "svg",
824
- {
825
- fill: "none",
826
- width: svgDimensions.width,
827
- height: svgDimensions.height,
828
- xmlns: "http://www.w3.org/2000/svg",
829
- className: cn("pointer-events-none absolute top-0 left-0 transform-gpu stroke-2", className),
830
- viewBox: `0 0 ${svgDimensions.width} ${svgDimensions.height}`,
831
- children: [
832
- /* @__PURE__ */ jsx12("path", { d: pathD, stroke: pathColor, strokeWidth: pathWidth, strokeOpacity: pathOpacity, strokeLinecap: "round" }),
833
- /* @__PURE__ */ jsx12("path", { d: pathD, strokeWidth: pathWidth, stroke: `url(#${id})`, strokeOpacity: "1", strokeLinecap: "round" }),
834
- /* @__PURE__ */ jsx12("defs", { children: /* @__PURE__ */ jsxs9(
835
- motion2.linearGradient,
836
- {
837
- className: "transform-gpu",
838
- id,
839
- gradientUnits: "userSpaceOnUse",
840
- initial: {
841
- x1: "0%",
842
- x2: "0%",
843
- y1: "0%",
844
- y2: "0%"
845
- },
846
- animate: {
847
- x1: gradientCoordinates.x1,
848
- x2: gradientCoordinates.x2,
849
- y1: gradientCoordinates.y1,
850
- y2: gradientCoordinates.y2
851
- },
852
- transition: {
853
- delay,
854
- duration,
855
- ease: [0.16, 1, 0.3, 1],
856
- repeat: Infinity,
857
- repeatDelay: 0
858
- },
859
- children: [
860
- /* @__PURE__ */ jsx12("stop", { stopColor: gradientStartColor, stopOpacity: "0" }),
861
- /* @__PURE__ */ jsx12("stop", { stopColor: gradientStartColor }),
862
- /* @__PURE__ */ jsx12("stop", { offset: "32.5%", stopColor: gradientStopColor }),
863
- /* @__PURE__ */ jsx12("stop", { offset: "100%", stopColor: gradientStopColor, stopOpacity: "0" })
864
- ]
865
- }
866
- ) })
867
- ]
868
- }
869
- );
870
- }
871
-
872
- // src/shared/grid-pattern/grid-pattern.tsx
873
- import { useId as useId2 } from "react";
874
- import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
875
- function GridPattern({
876
- width = 40,
877
- height = 40,
878
- x = -1,
879
- y = -1,
880
- strokeDasharray = "0",
881
- squares,
882
- className,
883
- ...props
884
- }) {
885
- const id = useId2();
886
- return /* @__PURE__ */ jsxs10(
887
- "svg",
888
- {
889
- "aria-hidden": "true",
890
- className: cn("pointer-events-none absolute inset-0 h-full w-full fill-muted-foreground/20 stroke-muted-foreground/20", className),
891
- ...props,
892
- children: [
893
- /* @__PURE__ */ jsx13("defs", { children: /* @__PURE__ */ jsx13("pattern", { id, width, height, patternUnits: "userSpaceOnUse", x, y, children: /* @__PURE__ */ jsx13("path", { d: `M.5 ${height}V.5H${width}`, fill: "none", strokeDasharray }) }) }),
894
- /* @__PURE__ */ jsx13("rect", { width: "100%", height: "100%", strokeWidth: 0, fill: `url(#${id})` }),
895
- squares && /* @__PURE__ */ jsx13("svg", { x, y, className: "overflow-visible", children: squares.map(([sx, sy]) => /* @__PURE__ */ jsx13("rect", { strokeWidth: "0", width: width - 1, height: height - 1, x: sx * width + 1, y: sy * height + 1 }, `${sx}-${sy}`)) })
896
- ]
897
- }
898
- );
899
- }
900
-
901
- // src/components/integration/integration.tsx
902
- import Image3 from "next/image";
903
- import { Button as Button6 } from "@mdxui/primitives";
904
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
905
- var Square = forwardRef(({ className, children }, ref) => {
906
- return /* @__PURE__ */ jsx14(
907
- "div",
908
- {
909
- ref,
910
- className: cn("z-10 flex size-16 items-center justify-center rounded-lg bg-card border border-border p-3 integration-square-shadow", className),
911
- children
912
- }
913
- );
914
- });
915
- Square.displayName = "Square";
916
- function Integration({
917
- title = "Connect in Seconds",
918
- description = "Just connect your account and get started immediately \u2013 no configuration, no setup, no hassle.",
919
- buttonText = "Get Started",
920
- buttonHref = "#pricing",
921
- leftNode,
922
- rightNode,
923
- beamAnimations = [
924
- { startYOffset: 10, endYOffset: 10, curvature: -20, duration: 3 },
925
- { startYOffset: -10, endYOffset: -10, curvature: 20, duration: 3, reverse: true }
926
- ],
927
- gridPatternWidth = 30,
928
- gridPatternHeight = 30,
929
- maxWidth = "5xl",
930
- className,
931
- contentOrder = "left"
932
- }) {
933
- const containerRef = useRef(null);
934
- const leftRef = useRef(null);
935
- const rightRef = useRef(null);
936
- const [isDark, setIsDark] = useState3(false);
937
- useEffect2(() => {
938
- const checkDarkMode = () => {
939
- const isDarkMode = document.documentElement.classList.contains("dark") || window.matchMedia("(prefers-color-scheme: dark)").matches;
940
- setIsDark(isDarkMode);
941
- };
942
- checkDarkMode();
943
- const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
944
- const observer = new MutationObserver(checkDarkMode);
945
- mediaQuery.addEventListener("change", checkDarkMode);
946
- observer.observe(document.documentElement, {
947
- attributes: true,
948
- attributeFilter: ["class"]
949
- });
950
- return () => {
951
- mediaQuery.removeEventListener("change", checkDarkMode);
952
- observer.disconnect();
953
- };
954
- }, []);
955
- const renderNode = (node, ref) => {
956
- const squareContent = (() => {
957
- if (node.type === "image" && typeof node.content === "string") {
958
- return /* @__PURE__ */ jsx14("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx14(Image3, { src: node.content, alt: node.alt || "Integration", fill: true, className: "object-cover rounded-lg" }) });
959
- }
960
- if (node.type === "icon" && typeof node.content === "string") {
961
- return /* @__PURE__ */ jsx14("div", { className: cn("text-foreground", node.className), children: node.content });
962
- }
963
- return node.content;
964
- })();
965
- return /* @__PURE__ */ jsx14(Square, { ref, className: cn("size-20", node.type === "image" ? "p-0" : "", node.className), children: squareContent });
966
- };
967
- const maxWidthClasses = {
968
- sm: "max-w-sm",
969
- md: "max-w-md",
970
- lg: "max-w-lg",
971
- xl: "max-w-xl",
972
- "2xl": "max-w-2xl",
973
- "3xl": "max-w-3xl",
974
- "4xl": "max-w-4xl",
975
- "5xl": "max-w-5xl",
976
- "6xl": "max-w-6xl",
977
- "7xl": "max-w-7xl"
978
- };
979
- const content = /* @__PURE__ */ jsxs11("div", { className: "space-y-6", children: [
980
- /* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx14("h2", { className: "font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: title }) }),
981
- /* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx14("p", { className: "text-base text-muted-foreground max-w-lg", children: description }) }),
982
- buttonText && buttonHref && /* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx14(Button6, { asChild: true, variant: "default", children: /* @__PURE__ */ jsx14("a", { href: buttonHref, children: buttonText }) }) })
983
- ] });
984
- const animation = /* @__PURE__ */ jsx14(ScrollReveal, { direction: contentOrder === "left" ? "right" : "left", delay: 0.2, children: /* @__PURE__ */ jsxs11("div", { className: "relative flex aspect-square max-w-md mx-auto w-full items-center justify-center overflow-hidden rounded-lg", ref: containerRef, children: [
985
- /* @__PURE__ */ jsx14(
986
- GridPattern,
987
- {
988
- width: gridPatternWidth,
989
- height: gridPatternHeight,
990
- className: "opacity-30 mask-[radial-gradient(ellipse_at_center,black_40%,transparent_85%)] dark:mask-[radial-gradient(ellipse_at_center,white_40%,transparent_85%)]"
991
- }
992
- ),
993
- /* @__PURE__ */ jsxs11("div", { className: "flex size-full flex-row items-center justify-center gap-20 relative z-10", children: [
994
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col justify-center", children: renderNode(leftNode, leftRef) }),
995
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col justify-center", children: renderNode(rightNode, rightRef) })
996
- ] }),
997
- beamAnimations.map((config, index) => /* @__PURE__ */ jsx14(
998
- AnimatedBeam,
999
- {
1000
- containerRef,
1001
- fromRef: leftRef,
1002
- toRef: rightRef,
1003
- startYOffset: config.startYOffset,
1004
- endYOffset: config.endYOffset,
1005
- curvature: config.curvature,
1006
- duration: config.duration,
1007
- reverse: config.reverse,
1008
- pathColor: isDark ? "rgba(255, 255, 255, 0.2)" : "rgba(0, 0, 0, 0.2)"
1009
- },
1010
- index
1011
- ))
1012
- ] }) });
1013
- return /* @__PURE__ */ jsx14("section", { className: cn("pt-10 sm:pt-0 px-8 lg:px-24 bg-background", className), children: /* @__PURE__ */ jsx14("div", { className: cn(maxWidthClasses[maxWidth], "mx-auto"), children: /* @__PURE__ */ jsx14("div", { className: "grid lg:grid-cols-2 gap-1 items-center", children: contentOrder === "left" ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
1014
- content,
1015
- animation
1016
- ] }) : /* @__PURE__ */ jsxs11(Fragment2, { children: [
1017
- animation,
1018
- content
1019
- ] }) }) }) });
1020
- }
1021
-
1022
- // src/view/mapper.ts
1023
- import {
1024
- FaInbox as FaInbox2,
1025
- FaCalendarAlt as FaCalendarAlt2,
1026
- FaListUl as FaListUl2,
1027
- FaFileAlt as FaFileAlt2,
1028
- FaRocket as FaRocket2,
1029
- FaProjectDiagram as FaProjectDiagram2,
1030
- FaBug as FaBug2,
1031
- FaLightbulb as FaLightbulb2,
1032
- FaRegDotCircle
1033
- } from "react-icons/fa";
1034
- var WORKFLOW_ICONS = {
1035
- inbox: FaInbox2,
1036
- calendar: FaCalendarAlt2,
1037
- list: FaListUl2,
1038
- file: FaFileAlt2,
1039
- rocket: FaRocket2,
1040
- project: FaProjectDiagram2,
1041
- bug: FaBug2,
1042
- lightbulb: FaLightbulb2
1043
- };
1044
- function resolveWorkflowIcon(hint) {
1045
- return WORKFLOW_ICONS[hint] ?? FaRegDotCircle;
1046
- }
1047
- function mapWorkflows(workflows) {
1048
- return workflows.map((w) => ({ icon: resolveWorkflowIcon(w.icon), label: w.label }));
1049
- }
1050
-
1051
605
  // src/view/view.tsx
1052
- import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
606
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
1053
607
  function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1054
- const { hero, problem, features, integration, pricing, faq, cta, contact } = content;
1055
- return /* @__PURE__ */ jsx15(DialectShell, { theme, mode, children: /* @__PURE__ */ jsxs12(
608
+ const { hero, features, pricing, faq, cta } = content;
609
+ return /* @__PURE__ */ jsx10(DialectShell, { theme, mode, children: /* @__PURE__ */ jsx10("div", { "data-dialect": "named", children: /* @__PURE__ */ jsxs7(
1056
610
  NeoChrome,
1057
611
  {
1058
612
  brandName,
@@ -1060,7 +614,7 @@ function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1060
614
  primaryCta: { text: hero.ctaText, url: hero.ctaHref },
1061
615
  openInAIPrompt: `Help me decide whether ${brandName} fits my team's workflow`,
1062
616
  children: [
1063
- /* @__PURE__ */ jsx15(
617
+ /* @__PURE__ */ jsx10(
1064
618
  Hero,
1065
619
  {
1066
620
  badgeEmoji: hero.badgeEmoji,
@@ -1077,16 +631,7 @@ function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1077
631
  marqueeImages: hero.marqueeImages
1078
632
  }
1079
633
  ),
1080
- /* @__PURE__ */ jsx15(
1081
- Problem,
1082
- {
1083
- heading: problem.heading,
1084
- workflows: mapWorkflows(problem.workflows),
1085
- subheading: problem.subheading,
1086
- subheadingHighlight: problem.subheadingHighlight
1087
- }
1088
- ),
1089
- /* @__PURE__ */ jsx15(
634
+ /* @__PURE__ */ jsx10(
1090
635
  Features,
1091
636
  {
1092
637
  heading: features.heading,
@@ -1094,18 +639,7 @@ function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1094
639
  features: features.features
1095
640
  }
1096
641
  ),
1097
- integration && /* @__PURE__ */ jsx15(
1098
- Integration,
1099
- {
1100
- title: integration.title,
1101
- description: integration.description,
1102
- buttonText: integration.buttonText,
1103
- buttonHref: integration.buttonHref,
1104
- leftNode: integration.leftNode,
1105
- rightNode: integration.rightNode
1106
- }
1107
- ),
1108
- pricing.variant === "single" ? /* @__PURE__ */ jsx15(
642
+ pricing.variant === "single" ? /* @__PURE__ */ jsx10(
1109
643
  Pricing,
1110
644
  {
1111
645
  heading: pricing.heading,
@@ -1119,7 +653,7 @@ function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1119
653
  features: pricing.features,
1120
654
  securityNote: pricing.securityNote
1121
655
  }
1122
- ) : /* @__PURE__ */ jsx15(
656
+ ) : /* @__PURE__ */ jsx10(
1123
657
  PricingTiers,
1124
658
  {
1125
659
  heading: pricing.heading,
@@ -1128,26 +662,15 @@ function NamedAgentView({ content, theme, mode, brandName, hostname }) {
1128
662
  securityNote: pricing.securityNote
1129
663
  }
1130
664
  ),
1131
- /* @__PURE__ */ jsx15(FAQ, { heading: faq.heading, faqs: faq.faqs }),
1132
- /* @__PURE__ */ jsx15(CTA, { heading: cta.heading, subheading: cta.subheading, buttons: cta.buttons }),
1133
- contact && /* @__PURE__ */ jsx15(
1134
- Contact,
1135
- {
1136
- heading: contact.heading,
1137
- subheading: contact.subheading,
1138
- fields: contact.fields,
1139
- submitButtonText: contact.submitButtonText
1140
- }
1141
- )
665
+ /* @__PURE__ */ jsx10(FAQ, { heading: faq.heading, faqs: faq.faqs }),
666
+ /* @__PURE__ */ jsx10(CTA, { heading: cta.heading, subheading: cta.subheading, buttons: cta.buttons })
1142
667
  ]
1143
668
  }
1144
- ) });
669
+ ) }) });
1145
670
  }
1146
671
  var view_default = NamedAgentView;
1147
672
  export {
1148
673
  NamedAgentView,
1149
- view_default as default,
1150
- mapWorkflows,
1151
- resolveWorkflowIcon
674
+ view_default as default
1152
675
  };
1153
676
  //# sourceMappingURL=index.js.map