@ugurdemirel/landcraft 0.1.12 → 0.1.13
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.
- package/dist/cjs/components/AccordionShowcase/AccordionShowcase.cjs +3 -0
- package/dist/cjs/components/AccordionShowcase/AccordionShowcase.cjs.map +1 -0
- package/dist/cjs/components/FeatureShowcase/FeatureShowcase.cjs +2 -0
- package/dist/cjs/components/FeatureShowcase/FeatureShowcase.cjs.map +1 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/es/components/AccordionShowcase/AccordionShowcase.js +48 -0
- package/dist/es/components/AccordionShowcase/AccordionShowcase.js.map +1 -0
- package/dist/es/components/FeatureShowcase/FeatureShowcase.js +57 -0
- package/dist/es/components/FeatureShowcase/FeatureShowcase.js.map +1 -0
- package/dist/es/index.js +69 -65
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +52 -0
- package/dist/styles.css +67 -0
- package/package.json +1 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("react"),r=require("../../utils/cn.cjs"),x=require("../../icons.cjs"),o=({className:l,items:n,defaultActive:a=0,...d})=>{const[c,u]=g.useState(a);return e.jsxs("div",{className:r.cn("grid w-full gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center lg:gap-y-0",l),...d,children:[e.jsx("div",{className:"divide-y divide-border",children:n.map((s,t)=>{const i=t===c;return e.jsxs("div",{children:[e.jsx("h3",{children:e.jsxs("button",{type:"button","aria-expanded":i,onClick:()=>u(t),className:"group flex w-full cursor-pointer items-center justify-between gap-6 py-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:[e.jsx("span",{className:"font-display text-[1.375rem] font-semibold leading-tight tracking-tight text-foreground sm:text-[1.625rem]",children:s.title}),e.jsx(x.ChevronDown,{className:r.cn("h-5 w-5 shrink-0 text-foreground/40 transition-transform duration-300 sm:h-6 sm:w-6",i&&"rotate-180 text-foreground")})]})}),i&&s.description?e.jsx("div",{className:"pb-8 pr-10",children:e.jsx("p",{className:"max-w-md text-pretty text-base leading-7 text-muted-foreground sm:text-lg",children:s.description})}):null]},s.title)})}),e.jsx("div",{className:"relative",children:n.map((s,t)=>e.jsx("div",{className:r.cn(t===c?"block":"hidden"),children:s.visual},s.title))})]})};o.displayName="AccordionShowcase";exports.AccordionShowcase=o;
|
|
3
|
+
//# sourceMappingURL=AccordionShowcase.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionShowcase.cjs","sources":["../../../../src/components/AccordionShowcase/AccordionShowcase.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { ChevronDown } from \"../../icons\";\nimport type { AccordionShowcaseProps } from \"./types\";\n\nexport const AccordionShowcase = ({\n className,\n items,\n defaultActive = 0,\n ...props\n}: AccordionShowcaseProps) => {\n const [active, setActive] = useState(defaultActive);\n\n return (\n <div className={cn(\"grid w-full gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center lg:gap-y-0\", className)} {...props}>\n {/* Interactive list */}\n <div className=\"divide-y divide-border\">\n {items.map((item, index) => {\n const open = index === active;\n return (\n <div key={item.title}>\n <h3>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setActive(index)}\n className=\"group flex w-full cursor-pointer items-center justify-between gap-6 py-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n >\n <span className=\"font-display text-[1.375rem] font-semibold leading-tight tracking-tight text-foreground sm:text-[1.625rem]\">\n {item.title}\n </span>\n <ChevronDown\n className={cn(\n \"h-5 w-5 shrink-0 text-foreground/40 transition-transform duration-300 sm:h-6 sm:w-6\",\n open && \"rotate-180 text-foreground\",\n )}\n />\n </button>\n </h3>\n {open && item.description ? (\n <div className=\"pb-8 pr-10\">\n <p className=\"max-w-md text-pretty text-base leading-7 text-muted-foreground sm:text-lg\">\n {item.description}\n </p>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n\n {/* Swapping visual */}\n <div className=\"relative\">\n {items.map((item, index) => (\n <div key={item.title} className={cn(index === active ? \"block\" : \"hidden\")}>\n {item.visual}\n </div>\n ))}\n </div>\n </div>\n );\n};\nAccordionShowcase.displayName = \"AccordionShowcase\";\n"],"names":["AccordionShowcase","className","items","defaultActive","props","active","setActive","useState","jsxs","cn","jsx","item","index","open","ChevronDown"],"mappings":"qMAMaA,EAAoB,CAAC,CAChC,UAAAC,EACA,MAAAC,EACA,cAAAC,EAAgB,EAChB,GAAGC,CACL,IAA8B,CAC5B,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAASJ,CAAa,EAElD,OACEK,EAAAA,KAAC,OAAI,UAAWC,EAAAA,GAAG,0EAA2ER,CAAS,EAAI,GAAGG,EAE5G,SAAA,CAAAM,MAAC,OAAI,UAAU,yBACZ,WAAM,IAAI,CAACC,EAAMC,IAAU,CAC1B,MAAMC,EAAOD,IAAUP,EACvB,cACG,MAAA,CACC,SAAA,CAAAK,MAAC,KAAA,CACC,SAAAF,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,gBAAeK,EACf,QAAS,IAAMP,EAAUM,CAAK,EAC9B,UAAU,8NAEV,SAAA,CAAAF,EAAAA,IAAC,OAAA,CAAK,UAAU,6GACb,SAAAC,EAAK,MACR,EACAD,EAAAA,IAACI,EAAAA,YAAA,CACC,UAAWL,EAAAA,GACT,sFACAI,GAAQ,4BAAA,CACV,CAAA,CACF,CAAA,CAAA,EAEJ,EACCA,GAAQF,EAAK,YACZD,EAAAA,IAAC,OAAI,UAAU,aACb,SAAAA,EAAAA,IAAC,IAAA,CAAE,UAAU,4EACV,SAAAC,EAAK,WAAA,CACR,EACF,EACE,IAAA,CAAA,EAzBIA,EAAK,KA0Bf,CAEJ,CAAC,CAAA,CACH,EAGAD,EAAAA,IAAC,OAAI,UAAU,WACZ,WAAM,IAAI,CAACC,EAAMC,IAChBF,EAAAA,IAAC,MAAA,CAAqB,UAAWD,EAAAA,GAAGG,IAAUP,EAAS,QAAU,QAAQ,EACtE,WAAK,MAAA,EADEM,EAAK,KAEf,CACD,CAAA,CACH,CAAA,EACF,CAEJ,EACAX,EAAkB,YAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("../../utils/cn.cjs"),g=require("../../icons.cjs"),o=({className:c,items:d,visual:i,mediaSide:x="left",eyebrow:r,title:l,description:t,...u})=>{const a=x==="left";return e.jsxs("div",{className:n.cn("w-full",c),...u,children:[r||l||t?e.jsxs("div",{className:"max-w-2xl",children:[r?e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-primary",children:r}):null,l?e.jsx("h2",{className:"mt-4 font-display text-balance text-[1.9rem] font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl",children:l}):null,t?e.jsx("p",{className:"mt-4 text-pretty text-base leading-7 text-muted-foreground sm:text-lg",children:t}):null]}):null,e.jsxs("div",{className:"mt-12 grid w-full items-center gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:gap-20",children:[i?e.jsx("div",{className:n.cn("relative",a?"lg:order-1":"lg:order-2"),children:i}):null,e.jsx("div",{className:n.cn("flex flex-col divide-y divide-border",a?"lg:order-2":"lg:order-1"),children:d.map((s,f)=>e.jsxs("div",{className:"flex gap-5 py-7 first:pt-0 last:pb-0 sm:gap-6",children:[s.icon?e.jsx("div",{className:"inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border border-border bg-surface text-lg text-foreground shadow-soft",children:s.icon}):null,e.jsxs("div",{children:[e.jsx("h3",{className:"font-display text-lg font-semibold tracking-tight text-foreground",children:s.title}),s.description?e.jsx("p",{className:"mt-2 text-pretty text-sm leading-6 text-muted-foreground sm:text-[15px]",children:s.description}):null,s.link?e.jsx("div",{className:"mt-3",children:s.link}):s.href?e.jsxs("a",{href:s.href,className:"group/link mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:[s.linkLabel??"Learn more",e.jsx(g.ArrowRight,{className:"h-4 w-4 transition-transform duration-200 group-hover/link:translate-x-0.5"})]}):null]})]},f))})]})]})};o.displayName="FeatureShowcase";exports.FeatureShowcase=o;
|
|
2
|
+
//# sourceMappingURL=FeatureShowcase.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureShowcase.cjs","sources":["../../../../src/components/FeatureShowcase/FeatureShowcase.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn\";\nimport { ArrowRight } from \"../../icons\";\nimport type { FeatureShowcaseProps } from \"./types\";\n\nexport const FeatureShowcase = ({\n className,\n items,\n visual,\n mediaSide = \"left\",\n eyebrow,\n title,\n description,\n ...props\n}: FeatureShowcaseProps) => {\n const mediaLeft = mediaSide === \"left\";\n\n return (\n <div className={cn(\"w-full\", className)} {...props}>\n {eyebrow || title || description ? (\n <div className=\"max-w-2xl\">\n {eyebrow ? (\n <p className=\"text-xs font-semibold uppercase tracking-[0.18em] text-primary\">{eyebrow}</p>\n ) : null}\n {title ? (\n <h2 className=\"mt-4 font-display text-balance text-[1.9rem] font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-4 text-pretty text-base leading-7 text-muted-foreground sm:text-lg\">\n {description}\n </p>\n ) : null}\n </div>\n ) : null}\n\n <div className=\"mt-12 grid w-full items-center gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:gap-20\">\n {visual ? (\n <div className={cn(\"relative\", mediaLeft ? \"lg:order-1\" : \"lg:order-2\")}>{visual}</div>\n ) : null}\n\n <div\n className={cn(\n \"flex flex-col divide-y divide-border\",\n mediaLeft ? \"lg:order-2\" : \"lg:order-1\",\n )}\n >\n {items.map((item, index) => (\n <div key={index} className=\"flex gap-5 py-7 first:pt-0 last:pb-0 sm:gap-6\">\n {item.icon ? (\n <div className=\"inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border border-border bg-surface text-lg text-foreground shadow-soft\">\n {item.icon}\n </div>\n ) : null}\n <div>\n <h3 className=\"font-display text-lg font-semibold tracking-tight text-foreground\">\n {item.title}\n </h3>\n {item.description ? (\n <p className=\"mt-2 text-pretty text-sm leading-6 text-muted-foreground sm:text-[15px]\">\n {item.description}\n </p>\n ) : null}\n {item.link ? (\n <div className=\"mt-3\">{item.link}</div>\n ) : item.href ? (\n <a\n href={item.href}\n className=\"group/link mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n >\n {item.linkLabel ?? \"Learn more\"}\n <ArrowRight className=\"h-4 w-4 transition-transform duration-200 group-hover/link:translate-x-0.5\" />\n </a>\n ) : null}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\nFeatureShowcase.displayName = \"FeatureShowcase\";\n"],"names":["FeatureShowcase","className","items","visual","mediaSide","eyebrow","title","description","props","mediaLeft","jsxs","cn","jsx","item","index","ArrowRight"],"mappings":"kLAIaA,EAAkB,CAAC,CAC9B,UAAAC,EACA,MAAAC,EACA,OAAAC,EACA,UAAAC,EAAY,OACZ,QAAAC,EACA,MAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAA4B,CAC1B,MAAMC,EAAYL,IAAc,OAEhC,OACEM,EAAAA,KAAC,OAAI,UAAWC,EAAAA,GAAG,SAAUV,CAAS,EAAI,GAAGO,EAC1C,SAAA,CAAAH,GAAWC,GAASC,EACnBG,EAAAA,KAAC,MAAA,CAAI,UAAU,YACZ,SAAA,CAAAL,EACCO,EAAAA,IAAC,IAAA,CAAE,UAAU,iEAAkE,WAAQ,EACrF,KACHN,EACCM,EAAAA,IAAC,KAAA,CAAG,UAAU,uHACX,WACH,EACE,KACHL,EACCK,EAAAA,IAAC,IAAA,CAAE,UAAU,wEACV,WACH,EACE,IAAA,CAAA,CACN,EACE,KAEJF,EAAAA,KAAC,MAAA,CAAI,UAAU,+EACZ,SAAA,CAAAP,EACCS,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,GAAG,WAAYF,EAAY,aAAe,YAAY,EAAI,SAAAN,CAAA,CAAO,EAC/E,KAEJS,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACT,uCACAF,EAAY,aAAe,YAAA,EAG5B,SAAAP,EAAM,IAAI,CAACW,EAAMC,IAChBJ,EAAAA,KAAC,MAAA,CAAgB,UAAU,gDACxB,SAAA,CAAAG,EAAK,KACJD,MAAC,MAAA,CAAI,UAAU,4IACZ,SAAAC,EAAK,KACR,EACE,YACH,MAAA,CACC,SAAA,CAAAD,EAAAA,IAAC,KAAA,CAAG,UAAU,oEACX,SAAAC,EAAK,MACR,EACCA,EAAK,YACJD,MAAC,IAAA,CAAE,UAAU,0EACV,SAAAC,EAAK,YACR,EACE,KACHA,EAAK,KACJD,EAAAA,IAAC,MAAA,CAAI,UAAU,OAAQ,SAAAC,EAAK,IAAA,CAAK,EAC/BA,EAAK,KACPH,EAAAA,KAAC,IAAA,CACC,KAAMG,EAAK,KACX,UAAU,wQAET,SAAA,CAAAA,EAAK,WAAa,aACnBD,EAAAA,IAACG,EAAAA,WAAA,CAAW,UAAU,4EAAA,CAA6E,CAAA,CAAA,CAAA,EAEnG,IAAA,CAAA,CACN,CAAA,CAAA,EA1BQD,CA2BV,CACD,CAAA,CAAA,CACH,CAAA,CACF,CAAA,EACF,CAEJ,EACAd,EAAgB,YAAc"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./components/Button.cjs"),i=require("./components/Slot.cjs"),s=require("./components/Badge.cjs"),r=require("./components/Card.cjs"),o=require("./components/Section.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./components/Button.cjs"),i=require("./components/Slot.cjs"),s=require("./components/Badge.cjs"),r=require("./components/Card.cjs"),o=require("./components/Section.cjs"),c=require("./components/Modal.cjs"),t=require("./components/Prose.cjs"),a=require("./components/Container.cjs"),u=require("./utils/cn.cjs"),d=require("./utils/contrast.cjs"),l=require("./utils/useTokenForeground.cjs"),C=require("./utils/iso2Flag.cjs"),e=require("./icons.cjs"),g=require("./components/AccordionShowcase/AccordionShowcase.cjs"),S=require("./components/Blog/BlogCard.cjs"),q=require("./components/Blog/BlogSection.cjs"),h=require("./components/CTA/CTA.cjs"),w=require("./components/FAQ/FAQ.cjs"),F=require("./components/Features/FeatureCard.cjs"),T=require("./components/Features/FeatureGrid.cjs"),k=require("./components/FeatureShowcase/FeatureShowcase.cjs"),A=require("./components/Footer/Footer.cjs"),B=require("./components/Hero/Hero.cjs"),L=require("./components/LanguageSwitcher/LanguageSwitcher.cjs"),P=require("./components/LogoCloud/LogoCloud.cjs"),M=require("./components/MegaMenu/MegaMenu.cjs"),m=require("./components/Navbar/Navbar.cjs"),p=require("./components/Newsletter/Newsletter.cjs"),v=require("./components/Pricing/Pricing.cjs"),D=require("./components/Stats/Stats.cjs"),b=require("./components/Testimonials/TestimonialCard.cjs"),R=require("./components/Testimonials/Testimonials.cjs");exports.Button=n.Button;exports.Slot=i.Slot;exports.Badge=s.Badge;exports.Card=r.Card;exports.CardContent=r.CardContent;exports.CardDescription=r.CardDescription;exports.CardFooter=r.CardFooter;exports.CardHeader=r.CardHeader;exports.CardTitle=r.CardTitle;exports.Section=o.Section;exports.SectionHeader=o.SectionHeader;exports.Modal=c.Modal;exports.Prose=t.Prose;exports.ProseLead=t.ProseLead;exports.Container=a.Container;exports.Stack=a.Stack;exports.cn=u.cn;exports.getContrastText=d.getContrastText;exports.useTokenForeground=l.useTokenForeground;exports.iso2ToFlagEmoji=C.iso2ToFlagEmoji;exports.ArrowDown=e.ArrowDown;exports.ArrowRight=e.ArrowRight;exports.ArrowUp=e.ArrowUp;exports.ArrowUpRight=e.ArrowUpRight;exports.BarChart=e.BarChart;exports.Box=e.Box;exports.Check=e.Check;exports.ChevronDown=e.ChevronDown;exports.ChevronLeft=e.ChevronLeft;exports.ChevronRight=e.ChevronRight;exports.Clock=e.Clock;exports.Code=e.Code;exports.Cpu=e.Cpu;exports.Database=e.Database;exports.DollarSign=e.DollarSign;exports.ExternalLink=e.ExternalLink;exports.Gauge=e.Gauge;exports.Globe=e.Globe;exports.Layers=e.Layers;exports.Lock=e.Lock;exports.Mail=e.Mail;exports.Menu=e.Menu;exports.Palette=e.Palette;exports.Play=e.Play;exports.Plus=e.Plus;exports.Quote=e.Quote;exports.Rocket=e.Rocket;exports.Send=e.Send;exports.ShieldCheck=e.ShieldCheck;exports.Sliders=e.Sliders;exports.Smartphone=e.Smartphone;exports.Star=e.Star;exports.Terminal=e.Terminal;exports.Users=e.Users;exports.X=e.X;exports.Zap=e.Zap;exports.AccordionShowcase=g.AccordionShowcase;exports.BlogCard=S.BlogCard;exports.BlogSection=q.BlogSection;exports.CTA=h.CTA;exports.FAQ=w.FAQ;exports.FeatureCard=F.FeatureCard;exports.FeatureGrid=T.FeatureGrid;exports.FeatureShowcase=k.FeatureShowcase;exports.Footer=A.Footer;exports.Hero=B.Hero;exports.LanguageSwitcher=L.LanguageSwitcher;exports.LogoCloud=P.LogoCloud;exports.MegaMenu=M.MegaMenu;exports.Navbar=m.Navbar;exports.Newsletter=p.Newsletter;exports.Pricing=v.Pricing;exports.Stats=D.Stats;exports.TestimonialCard=b.TestimonialCard;exports.Testimonials=R.Testimonials;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as s, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import { useState as g } from "react";
|
|
4
|
+
import { cn as o } from "../../utils/cn.js";
|
|
5
|
+
import { ChevronDown as p } from "../../icons.js";
|
|
6
|
+
const f = ({
|
|
7
|
+
className: a,
|
|
8
|
+
items: n,
|
|
9
|
+
defaultActive: c = 0,
|
|
10
|
+
...d
|
|
11
|
+
}) => {
|
|
12
|
+
const [l, m] = g(c);
|
|
13
|
+
return /* @__PURE__ */ s("div", { className: o("grid w-full gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center lg:gap-y-0", a), ...d, children: [
|
|
14
|
+
/* @__PURE__ */ e("div", { className: "divide-y divide-border", children: n.map((t, i) => {
|
|
15
|
+
const r = i === l;
|
|
16
|
+
return /* @__PURE__ */ s("div", { children: [
|
|
17
|
+
/* @__PURE__ */ e("h3", { children: /* @__PURE__ */ s(
|
|
18
|
+
"button",
|
|
19
|
+
{
|
|
20
|
+
type: "button",
|
|
21
|
+
"aria-expanded": r,
|
|
22
|
+
onClick: () => m(i),
|
|
23
|
+
className: "group flex w-full cursor-pointer items-center justify-between gap-6 py-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ e("span", { className: "font-display text-[1.375rem] font-semibold leading-tight tracking-tight text-foreground sm:text-[1.625rem]", children: t.title }),
|
|
26
|
+
/* @__PURE__ */ e(
|
|
27
|
+
p,
|
|
28
|
+
{
|
|
29
|
+
className: o(
|
|
30
|
+
"h-5 w-5 shrink-0 text-foreground/40 transition-transform duration-300 sm:h-6 sm:w-6",
|
|
31
|
+
r && "rotate-180 text-foreground"
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
) }),
|
|
38
|
+
r && t.description ? /* @__PURE__ */ e("div", { className: "pb-8 pr-10", children: /* @__PURE__ */ e("p", { className: "max-w-md text-pretty text-base leading-7 text-muted-foreground sm:text-lg", children: t.description }) }) : null
|
|
39
|
+
] }, t.title);
|
|
40
|
+
}) }),
|
|
41
|
+
/* @__PURE__ */ e("div", { className: "relative", children: n.map((t, i) => /* @__PURE__ */ e("div", { className: o(i === l ? "block" : "hidden"), children: t.visual }, t.title)) })
|
|
42
|
+
] });
|
|
43
|
+
};
|
|
44
|
+
f.displayName = "AccordionShowcase";
|
|
45
|
+
export {
|
|
46
|
+
f as AccordionShowcase
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=AccordionShowcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccordionShowcase.js","sources":["../../../../src/components/AccordionShowcase/AccordionShowcase.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { ChevronDown } from \"../../icons\";\nimport type { AccordionShowcaseProps } from \"./types\";\n\nexport const AccordionShowcase = ({\n className,\n items,\n defaultActive = 0,\n ...props\n}: AccordionShowcaseProps) => {\n const [active, setActive] = useState(defaultActive);\n\n return (\n <div className={cn(\"grid w-full gap-x-16 gap-y-12 lg:grid-cols-2 lg:items-center lg:gap-y-0\", className)} {...props}>\n {/* Interactive list */}\n <div className=\"divide-y divide-border\">\n {items.map((item, index) => {\n const open = index === active;\n return (\n <div key={item.title}>\n <h3>\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setActive(index)}\n className=\"group flex w-full cursor-pointer items-center justify-between gap-6 py-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n >\n <span className=\"font-display text-[1.375rem] font-semibold leading-tight tracking-tight text-foreground sm:text-[1.625rem]\">\n {item.title}\n </span>\n <ChevronDown\n className={cn(\n \"h-5 w-5 shrink-0 text-foreground/40 transition-transform duration-300 sm:h-6 sm:w-6\",\n open && \"rotate-180 text-foreground\",\n )}\n />\n </button>\n </h3>\n {open && item.description ? (\n <div className=\"pb-8 pr-10\">\n <p className=\"max-w-md text-pretty text-base leading-7 text-muted-foreground sm:text-lg\">\n {item.description}\n </p>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n\n {/* Swapping visual */}\n <div className=\"relative\">\n {items.map((item, index) => (\n <div key={item.title} className={cn(index === active ? \"block\" : \"hidden\")}>\n {item.visual}\n </div>\n ))}\n </div>\n </div>\n );\n};\nAccordionShowcase.displayName = \"AccordionShowcase\";\n"],"names":["AccordionShowcase","className","items","defaultActive","props","active","setActive","useState","jsxs","cn","jsx","item","index","open","ChevronDown"],"mappings":";;;;AAMO,MAAMA,IAAoB,CAAC;AAAA,EAChC,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,GAAGC;AACL,MAA8B;AAC5B,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAASJ,CAAa;AAElD,SACE,gBAAAK,EAAC,SAAI,WAAWC,EAAG,2EAA2ER,CAAS,GAAI,GAAGG,GAE5G,UAAA;AAAA,IAAA,gBAAAM,EAAC,SAAI,WAAU,0BACZ,YAAM,IAAI,CAACC,GAAMC,MAAU;AAC1B,YAAMC,IAAOD,MAAUP;AACvB,+BACG,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAK,EAAC,MAAA,EACC,UAAA,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,iBAAeK;AAAA,YACf,SAAS,MAAMP,EAAUM,CAAK;AAAA,YAC9B,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,gBAAAF,EAAC,QAAA,EAAK,WAAU,8GACb,UAAAC,EAAK,OACR;AAAA,cACA,gBAAAD;AAAA,gBAACI;AAAA,gBAAA;AAAA,kBACC,WAAWL;AAAA,oBACT;AAAA,oBACAI,KAAQ;AAAA,kBAAA;AAAA,gBACV;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACCA,KAAQF,EAAK,cACZ,gBAAAD,EAAC,SAAI,WAAU,cACb,UAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,6EACV,UAAAC,EAAK,YAAA,CACR,GACF,IACE;AAAA,MAAA,EAAA,GAzBIA,EAAK,KA0Bf;AAAA,IAEJ,CAAC,EAAA,CACH;AAAA,IAGA,gBAAAD,EAAC,SAAI,WAAU,YACZ,YAAM,IAAI,CAACC,GAAMC,MAChB,gBAAAF,EAAC,OAAA,EAAqB,WAAWD,EAAGG,MAAUP,IAAS,UAAU,QAAQ,GACtE,YAAK,OAAA,GADEM,EAAK,KAEf,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AACAX,EAAkB,cAAc;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsxs as l, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { cn as s } from "../../utils/cn.js";
|
|
3
|
+
import { ArrowRight as x } from "../../icons.js";
|
|
4
|
+
const u = ({
|
|
5
|
+
className: d,
|
|
6
|
+
items: c,
|
|
7
|
+
visual: a,
|
|
8
|
+
mediaSide: m = "left",
|
|
9
|
+
eyebrow: t,
|
|
10
|
+
title: i,
|
|
11
|
+
description: n,
|
|
12
|
+
...f
|
|
13
|
+
}) => {
|
|
14
|
+
const o = m === "left";
|
|
15
|
+
return /* @__PURE__ */ l("div", { className: s("w-full", d), ...f, children: [
|
|
16
|
+
t || i || n ? /* @__PURE__ */ l("div", { className: "max-w-2xl", children: [
|
|
17
|
+
t ? /* @__PURE__ */ r("p", { className: "text-xs font-semibold uppercase tracking-[0.18em] text-primary", children: t }) : null,
|
|
18
|
+
i ? /* @__PURE__ */ r("h2", { className: "mt-4 font-display text-balance text-[1.9rem] font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl", children: i }) : null,
|
|
19
|
+
n ? /* @__PURE__ */ r("p", { className: "mt-4 text-pretty text-base leading-7 text-muted-foreground sm:text-lg", children: n }) : null
|
|
20
|
+
] }) : null,
|
|
21
|
+
/* @__PURE__ */ l("div", { className: "mt-12 grid w-full items-center gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:gap-20", children: [
|
|
22
|
+
a ? /* @__PURE__ */ r("div", { className: s("relative", o ? "lg:order-1" : "lg:order-2"), children: a }) : null,
|
|
23
|
+
/* @__PURE__ */ r(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: s(
|
|
27
|
+
"flex flex-col divide-y divide-border",
|
|
28
|
+
o ? "lg:order-2" : "lg:order-1"
|
|
29
|
+
),
|
|
30
|
+
children: c.map((e, g) => /* @__PURE__ */ l("div", { className: "flex gap-5 py-7 first:pt-0 last:pb-0 sm:gap-6", children: [
|
|
31
|
+
e.icon ? /* @__PURE__ */ r("div", { className: "inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border border-border bg-surface text-lg text-foreground shadow-soft", children: e.icon }) : null,
|
|
32
|
+
/* @__PURE__ */ l("div", { children: [
|
|
33
|
+
/* @__PURE__ */ r("h3", { className: "font-display text-lg font-semibold tracking-tight text-foreground", children: e.title }),
|
|
34
|
+
e.description ? /* @__PURE__ */ r("p", { className: "mt-2 text-pretty text-sm leading-6 text-muted-foreground sm:text-[15px]", children: e.description }) : null,
|
|
35
|
+
e.link ? /* @__PURE__ */ r("div", { className: "mt-3", children: e.link }) : e.href ? /* @__PURE__ */ l(
|
|
36
|
+
"a",
|
|
37
|
+
{
|
|
38
|
+
href: e.href,
|
|
39
|
+
className: "group/link mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
40
|
+
children: [
|
|
41
|
+
e.linkLabel ?? "Learn more",
|
|
42
|
+
/* @__PURE__ */ r(x, { className: "h-4 w-4 transition-transform duration-200 group-hover/link:translate-x-0.5" })
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
) : null
|
|
46
|
+
] })
|
|
47
|
+
] }, g))
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
] })
|
|
51
|
+
] });
|
|
52
|
+
};
|
|
53
|
+
u.displayName = "FeatureShowcase";
|
|
54
|
+
export {
|
|
55
|
+
u as FeatureShowcase
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=FeatureShowcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureShowcase.js","sources":["../../../../src/components/FeatureShowcase/FeatureShowcase.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn\";\nimport { ArrowRight } from \"../../icons\";\nimport type { FeatureShowcaseProps } from \"./types\";\n\nexport const FeatureShowcase = ({\n className,\n items,\n visual,\n mediaSide = \"left\",\n eyebrow,\n title,\n description,\n ...props\n}: FeatureShowcaseProps) => {\n const mediaLeft = mediaSide === \"left\";\n\n return (\n <div className={cn(\"w-full\", className)} {...props}>\n {eyebrow || title || description ? (\n <div className=\"max-w-2xl\">\n {eyebrow ? (\n <p className=\"text-xs font-semibold uppercase tracking-[0.18em] text-primary\">{eyebrow}</p>\n ) : null}\n {title ? (\n <h2 className=\"mt-4 font-display text-balance text-[1.9rem] font-semibold leading-[1.08] tracking-tight text-foreground sm:text-4xl\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-4 text-pretty text-base leading-7 text-muted-foreground sm:text-lg\">\n {description}\n </p>\n ) : null}\n </div>\n ) : null}\n\n <div className=\"mt-12 grid w-full items-center gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:gap-20\">\n {visual ? (\n <div className={cn(\"relative\", mediaLeft ? \"lg:order-1\" : \"lg:order-2\")}>{visual}</div>\n ) : null}\n\n <div\n className={cn(\n \"flex flex-col divide-y divide-border\",\n mediaLeft ? \"lg:order-2\" : \"lg:order-1\",\n )}\n >\n {items.map((item, index) => (\n <div key={index} className=\"flex gap-5 py-7 first:pt-0 last:pb-0 sm:gap-6\">\n {item.icon ? (\n <div className=\"inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-xl border border-border bg-surface text-lg text-foreground shadow-soft\">\n {item.icon}\n </div>\n ) : null}\n <div>\n <h3 className=\"font-display text-lg font-semibold tracking-tight text-foreground\">\n {item.title}\n </h3>\n {item.description ? (\n <p className=\"mt-2 text-pretty text-sm leading-6 text-muted-foreground sm:text-[15px]\">\n {item.description}\n </p>\n ) : null}\n {item.link ? (\n <div className=\"mt-3\">{item.link}</div>\n ) : item.href ? (\n <a\n href={item.href}\n className=\"group/link mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-primary transition-colors hover:text-primary-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n >\n {item.linkLabel ?? \"Learn more\"}\n <ArrowRight className=\"h-4 w-4 transition-transform duration-200 group-hover/link:translate-x-0.5\" />\n </a>\n ) : null}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\nFeatureShowcase.displayName = \"FeatureShowcase\";\n"],"names":["FeatureShowcase","className","items","visual","mediaSide","eyebrow","title","description","props","mediaLeft","jsxs","cn","jsx","item","index","ArrowRight"],"mappings":";;;AAIO,MAAMA,IAAkB,CAAC;AAAA,EAC9B,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAA4B;AAC1B,QAAMC,IAAYL,MAAc;AAEhC,SACE,gBAAAM,EAAC,SAAI,WAAWC,EAAG,UAAUV,CAAS,GAAI,GAAGO,GAC1C,UAAA;AAAA,IAAAH,KAAWC,KAASC,IACnB,gBAAAG,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,MAAAL,IACC,gBAAAO,EAAC,KAAA,EAAE,WAAU,kEAAkE,aAAQ,IACrF;AAAA,MACHN,IACC,gBAAAM,EAAC,MAAA,EAAG,WAAU,wHACX,aACH,IACE;AAAA,MACHL,IACC,gBAAAK,EAAC,KAAA,EAAE,WAAU,yEACV,aACH,IACE;AAAA,IAAA,EAAA,CACN,IACE;AAAA,IAEJ,gBAAAF,EAAC,OAAA,EAAI,WAAU,gFACZ,UAAA;AAAA,MAAAP,IACC,gBAAAS,EAAC,OAAA,EAAI,WAAWD,EAAG,YAAYF,IAAY,eAAe,YAAY,GAAI,UAAAN,EAAA,CAAO,IAC/E;AAAA,MAEJ,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA,YACAF,IAAY,eAAe;AAAA,UAAA;AAAA,UAG5B,UAAAP,EAAM,IAAI,CAACW,GAAMC,MAChB,gBAAAJ,EAAC,OAAA,EAAgB,WAAU,iDACxB,UAAA;AAAA,YAAAG,EAAK,OACJ,gBAAAD,EAAC,OAAA,EAAI,WAAU,6IACZ,UAAAC,EAAK,MACR,IACE;AAAA,8BACH,OAAA,EACC,UAAA;AAAA,cAAA,gBAAAD,EAAC,MAAA,EAAG,WAAU,qEACX,UAAAC,EAAK,OACR;AAAA,cACCA,EAAK,cACJ,gBAAAD,EAAC,KAAA,EAAE,WAAU,2EACV,UAAAC,EAAK,aACR,IACE;AAAA,cACHA,EAAK,OACJ,gBAAAD,EAAC,OAAA,EAAI,WAAU,QAAQ,UAAAC,EAAK,KAAA,CAAK,IAC/BA,EAAK,OACP,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAMG,EAAK;AAAA,kBACX,WAAU;AAAA,kBAET,UAAA;AAAA,oBAAAA,EAAK,aAAa;AAAA,oBACnB,gBAAAD,EAACG,GAAA,EAAW,WAAU,6EAAA,CAA6E;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA,IAEnG;AAAA,YAAA,EAAA,CACN;AAAA,UAAA,EAAA,GA1BQD,CA2BV,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AACAd,EAAgB,cAAc;"}
|
package/dist/es/index.js
CHANGED
|
@@ -1,103 +1,107 @@
|
|
|
1
1
|
import { Button as e } from "./components/Button.js";
|
|
2
2
|
import { Slot as a } from "./components/Slot.js";
|
|
3
3
|
import { Badge as m } from "./components/Badge.js";
|
|
4
|
-
import { Card as f, CardContent as n, CardDescription as i, CardFooter as C, CardHeader as
|
|
5
|
-
import { Section as
|
|
6
|
-
import { Modal as
|
|
7
|
-
import { Prose as
|
|
8
|
-
import { Container as
|
|
4
|
+
import { Card as f, CardContent as n, CardDescription as i, CardFooter as C, CardHeader as d, CardTitle as l } from "./components/Card.js";
|
|
5
|
+
import { Section as c, SectionHeader as g } from "./components/Section.js";
|
|
6
|
+
import { Modal as h } from "./components/Modal.js";
|
|
7
|
+
import { Prose as w, ProseLead as k } from "./components/Prose.js";
|
|
8
|
+
import { Container as T, Stack as A } from "./components/Container.js";
|
|
9
9
|
import { cn as B } from "./utils/cn.js";
|
|
10
10
|
import { getContrastText as D } from "./utils/contrast.js";
|
|
11
11
|
import { useTokenForeground as v } from "./utils/useTokenForeground.js";
|
|
12
12
|
import { iso2ToFlagEmoji as b } from "./utils/iso2Flag.js";
|
|
13
|
-
import { ArrowDown as H, ArrowRight as U, ArrowUp as y, ArrowUpRight as E, BarChart as N, Box as Q, Check as j, ChevronDown as X, ChevronLeft as Z, ChevronRight as q, Clock as z, Code as I, Cpu as J, Database as K, DollarSign as O, ExternalLink as V, Gauge as W, Globe as Y, Layers as _, Lock as $, Mail as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
13
|
+
import { ArrowDown as H, ArrowRight as U, ArrowUp as y, ArrowUpRight as E, BarChart as N, Box as Q, Check as j, ChevronDown as X, ChevronLeft as Z, ChevronRight as q, Clock as z, Code as I, Cpu as J, Database as K, DollarSign as O, ExternalLink as V, Gauge as W, Globe as Y, Layers as _, Lock as $, Mail as oo, Menu as ro, Palette as eo, Play as to, Plus as ao, Quote as po, Rocket as mo, Send as xo, ShieldCheck as fo, Sliders as no, Smartphone as io, Star as Co, Terminal as lo, Users as so, X as co, Zap as go } from "./icons.js";
|
|
14
|
+
import { AccordionShowcase as ho } from "./components/AccordionShowcase/AccordionShowcase.js";
|
|
15
|
+
import { BlogCard as wo } from "./components/Blog/BlogCard.js";
|
|
16
|
+
import { BlogSection as Fo } from "./components/Blog/BlogSection.js";
|
|
17
|
+
import { CTA as Ao } from "./components/CTA/CTA.js";
|
|
18
|
+
import { FAQ as Bo } from "./components/FAQ/FAQ.js";
|
|
19
|
+
import { FeatureCard as Do } from "./components/Features/FeatureCard.js";
|
|
20
|
+
import { FeatureGrid as vo } from "./components/Features/FeatureGrid.js";
|
|
21
|
+
import { FeatureShowcase as bo } from "./components/FeatureShowcase/FeatureShowcase.js";
|
|
22
|
+
import { Footer as Ho } from "./components/Footer/Footer.js";
|
|
23
|
+
import { Hero as yo } from "./components/Hero/Hero.js";
|
|
24
|
+
import { LanguageSwitcher as No } from "./components/LanguageSwitcher/LanguageSwitcher.js";
|
|
25
|
+
import { LogoCloud as jo } from "./components/LogoCloud/LogoCloud.js";
|
|
26
|
+
import { MegaMenu as Zo } from "./components/MegaMenu/MegaMenu.js";
|
|
27
|
+
import { Navbar as zo } from "./components/Navbar/Navbar.js";
|
|
28
|
+
import { Newsletter as Jo } from "./components/Newsletter/Newsletter.js";
|
|
29
|
+
import { Pricing as Oo } from "./components/Pricing/Pricing.js";
|
|
30
|
+
import { Stats as Wo } from "./components/Stats/Stats.js";
|
|
31
|
+
import { TestimonialCard as _o } from "./components/Testimonials/TestimonialCard.js";
|
|
32
|
+
import { Testimonials as or } from "./components/Testimonials/Testimonials.js";
|
|
31
33
|
export {
|
|
34
|
+
ho as AccordionShowcase,
|
|
32
35
|
H as ArrowDown,
|
|
33
36
|
U as ArrowRight,
|
|
34
37
|
y as ArrowUp,
|
|
35
38
|
E as ArrowUpRight,
|
|
36
39
|
m as Badge,
|
|
37
40
|
N as BarChart,
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
wo as BlogCard,
|
|
42
|
+
Fo as BlogSection,
|
|
40
43
|
Q as Box,
|
|
41
44
|
e as Button,
|
|
42
|
-
|
|
45
|
+
Ao as CTA,
|
|
43
46
|
f as Card,
|
|
44
47
|
n as CardContent,
|
|
45
48
|
i as CardDescription,
|
|
46
49
|
C as CardFooter,
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
d as CardHeader,
|
|
51
|
+
l as CardTitle,
|
|
49
52
|
j as Check,
|
|
50
53
|
X as ChevronDown,
|
|
51
54
|
Z as ChevronLeft,
|
|
52
55
|
q as ChevronRight,
|
|
53
56
|
z as Clock,
|
|
54
57
|
I as Code,
|
|
55
|
-
|
|
58
|
+
T as Container,
|
|
56
59
|
J as Cpu,
|
|
57
60
|
K as Database,
|
|
58
61
|
O as DollarSign,
|
|
59
62
|
V as ExternalLink,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
Bo as FAQ,
|
|
64
|
+
Do as FeatureCard,
|
|
65
|
+
vo as FeatureGrid,
|
|
66
|
+
bo as FeatureShowcase,
|
|
67
|
+
Ho as Footer,
|
|
64
68
|
W as Gauge,
|
|
65
69
|
Y as Globe,
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
yo as Hero,
|
|
71
|
+
No as LanguageSwitcher,
|
|
68
72
|
_ as Layers,
|
|
69
73
|
$ as Lock,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
74
|
+
jo as LogoCloud,
|
|
75
|
+
oo as Mail,
|
|
76
|
+
Zo as MegaMenu,
|
|
77
|
+
ro as Menu,
|
|
78
|
+
h as Modal,
|
|
79
|
+
zo as Navbar,
|
|
80
|
+
Jo as Newsletter,
|
|
81
|
+
eo as Palette,
|
|
82
|
+
to as Play,
|
|
83
|
+
ao as Plus,
|
|
84
|
+
Oo as Pricing,
|
|
85
|
+
w as Prose,
|
|
86
|
+
k as ProseLead,
|
|
87
|
+
po as Quote,
|
|
88
|
+
mo as Rocket,
|
|
89
|
+
c as Section,
|
|
90
|
+
g as SectionHeader,
|
|
91
|
+
xo as Send,
|
|
92
|
+
fo as ShieldCheck,
|
|
93
|
+
no as Sliders,
|
|
90
94
|
a as Slot,
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
io as Smartphone,
|
|
96
|
+
A as Stack,
|
|
97
|
+
Co as Star,
|
|
98
|
+
Wo as Stats,
|
|
99
|
+
lo as Terminal,
|
|
100
|
+
_o as TestimonialCard,
|
|
101
|
+
or as Testimonials,
|
|
102
|
+
so as Users,
|
|
103
|
+
co as X,
|
|
104
|
+
go as Zap,
|
|
101
105
|
B as cn,
|
|
102
106
|
D as getContrastText,
|
|
103
107
|
b as iso2ToFlagEmoji,
|
package/dist/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,26 @@ import { ReactNode } from 'react';
|
|
|
8
8
|
import { RefAttributes } from 'react';
|
|
9
9
|
import { SVGProps } from 'react';
|
|
10
10
|
|
|
11
|
+
export declare const AccordionShowcase: {
|
|
12
|
+
({ className, items, defaultActive, ...props }: AccordionShowcaseProps): JSX_2.Element;
|
|
13
|
+
displayName: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export declare interface AccordionShowcaseItem {
|
|
17
|
+
/** Accordion heading, e.g. an integration or product name. */
|
|
18
|
+
title: string;
|
|
19
|
+
/** Expandable copy shown when the item is active. */
|
|
20
|
+
description?: ReactNode;
|
|
21
|
+
/** Artwork swapped in on the right when the item is active. */
|
|
22
|
+
visual: ReactNode;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export declare interface AccordionShowcaseProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
26
|
+
items: AccordionShowcaseItem[];
|
|
27
|
+
/** Index opened on first render. */
|
|
28
|
+
defaultActive?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
11
31
|
export declare const ArrowDown: (props: IconProps) => JSX_2.Element;
|
|
12
32
|
|
|
13
33
|
export declare const ArrowRight: (props: IconProps) => JSX_2.Element;
|
|
@@ -251,6 +271,38 @@ export declare interface FeatureItem {
|
|
|
251
271
|
accent?: string;
|
|
252
272
|
}
|
|
253
273
|
|
|
274
|
+
export declare const FeatureShowcase: {
|
|
275
|
+
({ className, items, visual, mediaSide, eyebrow, title, description, ...props }: FeatureShowcaseProps): JSX_2.Element;
|
|
276
|
+
displayName: string;
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
export declare interface FeatureShowcaseItem {
|
|
280
|
+
icon?: ReactNode;
|
|
281
|
+
title: ReactNode;
|
|
282
|
+
description?: ReactNode;
|
|
283
|
+
/** When set (and no `link` slot), a "Learn more"-style link is rendered. */
|
|
284
|
+
href?: string;
|
|
285
|
+
linkLabel?: ReactNode;
|
|
286
|
+
/**
|
|
287
|
+
* Slot for a fully custom link (router `<Link>`, anchor…) rendered as-is.
|
|
288
|
+
* Takes precedence over `href`.
|
|
289
|
+
*/
|
|
290
|
+
link?: ReactNode;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export declare type FeatureShowcaseMediaSide = "left" | "right";
|
|
294
|
+
|
|
295
|
+
export declare interface FeatureShowcaseProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
296
|
+
items: FeatureShowcaseItem[];
|
|
297
|
+
/** Large control-panel / product screenshot. */
|
|
298
|
+
visual?: ReactNode;
|
|
299
|
+
/** Which side the visual sits on. Items sit opposite. Default: `"left"`. */
|
|
300
|
+
mediaSide?: FeatureShowcaseMediaSide;
|
|
301
|
+
eyebrow?: ReactNode;
|
|
302
|
+
title?: ReactNode;
|
|
303
|
+
description?: ReactNode;
|
|
304
|
+
}
|
|
305
|
+
|
|
254
306
|
export declare const Footer: {
|
|
255
307
|
({ option, ...props }: FooterProps): JSX_2.Element;
|
|
256
308
|
displayName: string;
|
package/dist/styles.css
CHANGED
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
--tracking-wide: 0.025em;
|
|
56
56
|
--tracking-wider: 0.05em;
|
|
57
57
|
--tracking-widest: 0.1em;
|
|
58
|
+
--leading-tight: 1.25;
|
|
58
59
|
--leading-snug: 1.375;
|
|
59
60
|
--leading-relaxed: 1.625;
|
|
60
61
|
--radius-sm: 0.375rem;
|
|
@@ -1793,6 +1794,9 @@
|
|
|
1793
1794
|
.w-11 {
|
|
1794
1795
|
width: calc(var(--spacing) * 11);
|
|
1795
1796
|
}
|
|
1797
|
+
.w-12 {
|
|
1798
|
+
width: calc(var(--spacing) * 12);
|
|
1799
|
+
}
|
|
1796
1800
|
.w-28 {
|
|
1797
1801
|
width: calc(var(--spacing) * 28);
|
|
1798
1802
|
}
|
|
@@ -2026,6 +2030,9 @@
|
|
|
2026
2030
|
.gap-x-12 {
|
|
2027
2031
|
column-gap: calc(var(--spacing) * 12);
|
|
2028
2032
|
}
|
|
2033
|
+
.gap-x-16 {
|
|
2034
|
+
column-gap: calc(var(--spacing) * 16);
|
|
2035
|
+
}
|
|
2029
2036
|
.gap-y-2\.5 {
|
|
2030
2037
|
row-gap: calc(var(--spacing) * 2.5);
|
|
2031
2038
|
}
|
|
@@ -2409,6 +2416,9 @@
|
|
|
2409
2416
|
.pr-8 {
|
|
2410
2417
|
padding-right: calc(var(--spacing) * 8);
|
|
2411
2418
|
}
|
|
2419
|
+
.pr-10 {
|
|
2420
|
+
padding-right: calc(var(--spacing) * 10);
|
|
2421
|
+
}
|
|
2412
2422
|
.pr-14 {
|
|
2413
2423
|
padding-right: calc(var(--spacing) * 14);
|
|
2414
2424
|
}
|
|
@@ -2424,6 +2434,9 @@
|
|
|
2424
2434
|
.pb-6 {
|
|
2425
2435
|
padding-bottom: calc(var(--spacing) * 6);
|
|
2426
2436
|
}
|
|
2437
|
+
.pb-8 {
|
|
2438
|
+
padding-bottom: calc(var(--spacing) * 8);
|
|
2439
|
+
}
|
|
2427
2440
|
.pb-20 {
|
|
2428
2441
|
padding-bottom: calc(var(--spacing) * 20);
|
|
2429
2442
|
}
|
|
@@ -2487,6 +2500,9 @@
|
|
|
2487
2500
|
.text-\[1\.9rem\] {
|
|
2488
2501
|
font-size: 1.9rem;
|
|
2489
2502
|
}
|
|
2503
|
+
.text-\[1\.375rem\] {
|
|
2504
|
+
font-size: 1.375rem;
|
|
2505
|
+
}
|
|
2490
2506
|
.text-\[2\.6rem\] {
|
|
2491
2507
|
font-size: 2.6rem;
|
|
2492
2508
|
}
|
|
@@ -2552,6 +2568,10 @@
|
|
|
2552
2568
|
--tw-leading: var(--leading-snug);
|
|
2553
2569
|
line-height: var(--leading-snug);
|
|
2554
2570
|
}
|
|
2571
|
+
.leading-tight {
|
|
2572
|
+
--tw-leading: var(--leading-tight);
|
|
2573
|
+
line-height: var(--leading-tight);
|
|
2574
|
+
}
|
|
2555
2575
|
.font-bold {
|
|
2556
2576
|
--tw-font-weight: var(--font-weight-bold);
|
|
2557
2577
|
font-weight: var(--font-weight-bold);
|
|
@@ -2655,6 +2675,12 @@
|
|
|
2655
2675
|
color: color-mix(in oklab, rgb(var(--color-foreground)) 35%, transparent);
|
|
2656
2676
|
}
|
|
2657
2677
|
}
|
|
2678
|
+
.text-foreground\/40 {
|
|
2679
|
+
color: color-mix(in srgb, rgb(rgb(var(--color-foreground))) 40%, transparent);
|
|
2680
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2681
|
+
color: color-mix(in oklab, rgb(var(--color-foreground)) 40%, transparent);
|
|
2682
|
+
}
|
|
2683
|
+
}
|
|
2658
2684
|
.text-foreground\/45 {
|
|
2659
2685
|
color: color-mix(in srgb, rgb(rgb(var(--color-foreground))) 45%, transparent);
|
|
2660
2686
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2875,6 +2901,10 @@
|
|
|
2875
2901
|
--tw-duration: 200ms;
|
|
2876
2902
|
transition-duration: 200ms;
|
|
2877
2903
|
}
|
|
2904
|
+
.duration-300 {
|
|
2905
|
+
--tw-duration: 300ms;
|
|
2906
|
+
transition-duration: 300ms;
|
|
2907
|
+
}
|
|
2878
2908
|
.prose-neutral {
|
|
2879
2909
|
--tw-prose-body: oklch(37.1% 0 none);
|
|
2880
2910
|
--tw-prose-headings: oklch(20.5% 0 none);
|
|
@@ -2939,10 +2969,20 @@
|
|
|
2939
2969
|
--tw-grayscale: grayscale(0%);
|
|
2940
2970
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
2941
2971
|
}
|
|
2972
|
+
.group-hover\/link\:translate-x-0\.5:is(:where(.group\/link):hover *) {
|
|
2973
|
+
--tw-translate-x: calc(var(--spacing) * 0.5);
|
|
2974
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
2975
|
+
}
|
|
2942
2976
|
}
|
|
2943
2977
|
.placeholder\:text-muted-foreground::placeholder {
|
|
2944
2978
|
color: rgb(var(--color-muted-foreground));
|
|
2945
2979
|
}
|
|
2980
|
+
.first\:pt-0:first-child {
|
|
2981
|
+
padding-top: 0px;
|
|
2982
|
+
}
|
|
2983
|
+
.last\:pb-0:last-child {
|
|
2984
|
+
padding-bottom: 0px;
|
|
2985
|
+
}
|
|
2946
2986
|
.focus-within\:border-foreground:focus-within {
|
|
2947
2987
|
border-color: rgb(var(--color-foreground));
|
|
2948
2988
|
}
|
|
@@ -3132,6 +3172,9 @@
|
|
|
3132
3172
|
.sm\:h-5 {
|
|
3133
3173
|
height: calc(var(--spacing) * 5);
|
|
3134
3174
|
}
|
|
3175
|
+
.sm\:h-6 {
|
|
3176
|
+
height: calc(var(--spacing) * 6);
|
|
3177
|
+
}
|
|
3135
3178
|
.sm\:w-1\/2 {
|
|
3136
3179
|
width: calc(1 / 2 * 100%);
|
|
3137
3180
|
}
|
|
@@ -3141,6 +3184,9 @@
|
|
|
3141
3184
|
.sm\:w-5 {
|
|
3142
3185
|
width: calc(var(--spacing) * 5);
|
|
3143
3186
|
}
|
|
3187
|
+
.sm\:w-6 {
|
|
3188
|
+
width: calc(var(--spacing) * 6);
|
|
3189
|
+
}
|
|
3144
3190
|
.sm\:w-12 {
|
|
3145
3191
|
width: calc(var(--spacing) * 12);
|
|
3146
3192
|
}
|
|
@@ -3168,6 +3214,9 @@
|
|
|
3168
3214
|
.sm\:justify-between {
|
|
3169
3215
|
justify-content: space-between;
|
|
3170
3216
|
}
|
|
3217
|
+
.sm\:gap-6 {
|
|
3218
|
+
gap: calc(var(--spacing) * 6);
|
|
3219
|
+
}
|
|
3171
3220
|
.sm\:gap-10 {
|
|
3172
3221
|
gap: calc(var(--spacing) * 10);
|
|
3173
3222
|
}
|
|
@@ -3257,9 +3306,15 @@
|
|
|
3257
3306
|
font-size: var(--text-xl);
|
|
3258
3307
|
line-height: var(--tw-leading, var(--text-xl--line-height));
|
|
3259
3308
|
}
|
|
3309
|
+
.sm\:text-\[1\.625rem\] {
|
|
3310
|
+
font-size: 1.625rem;
|
|
3311
|
+
}
|
|
3260
3312
|
.sm\:text-\[3rem\] {
|
|
3261
3313
|
font-size: 3rem;
|
|
3262
3314
|
}
|
|
3315
|
+
.sm\:text-\[15px\] {
|
|
3316
|
+
font-size: 15px;
|
|
3317
|
+
}
|
|
3263
3318
|
}
|
|
3264
3319
|
@media (width >= 48rem) {
|
|
3265
3320
|
.md\:flex {
|
|
@@ -3288,6 +3343,12 @@
|
|
|
3288
3343
|
.lg\:top-24 {
|
|
3289
3344
|
top: calc(var(--spacing) * 24);
|
|
3290
3345
|
}
|
|
3346
|
+
.lg\:order-1 {
|
|
3347
|
+
order: 1;
|
|
3348
|
+
}
|
|
3349
|
+
.lg\:order-2 {
|
|
3350
|
+
order: 2;
|
|
3351
|
+
}
|
|
3291
3352
|
.lg\:col-span-2 {
|
|
3292
3353
|
grid-column: span 2 / span 2;
|
|
3293
3354
|
}
|
|
@@ -3342,6 +3403,9 @@
|
|
|
3342
3403
|
.lg\:flex-row {
|
|
3343
3404
|
flex-direction: row;
|
|
3344
3405
|
}
|
|
3406
|
+
.lg\:items-center {
|
|
3407
|
+
align-items: center;
|
|
3408
|
+
}
|
|
3345
3409
|
.lg\:items-end {
|
|
3346
3410
|
align-items: flex-end;
|
|
3347
3411
|
}
|
|
@@ -3354,6 +3418,9 @@
|
|
|
3354
3418
|
.lg\:gap-20 {
|
|
3355
3419
|
gap: calc(var(--spacing) * 20);
|
|
3356
3420
|
}
|
|
3421
|
+
.lg\:gap-y-0 {
|
|
3422
|
+
row-gap: 0px;
|
|
3423
|
+
}
|
|
3357
3424
|
.lg\:self-start {
|
|
3358
3425
|
align-self: flex-start;
|
|
3359
3426
|
}
|