@jarllyng/nostromo 3.15.1 → 3.16.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.
- package/dist/chunk-INZNS2ZP.cjs +3 -0
- package/dist/chunk-INZNS2ZP.cjs.map +1 -0
- package/dist/chunk-JVFOPCT4.cjs +3 -0
- package/dist/chunk-JVFOPCT4.cjs.map +1 -0
- package/dist/chunk-LQB4PD53.js +3 -0
- package/dist/chunk-LQB4PD53.js.map +1 -0
- package/dist/chunk-ZLKYFVIL.js +3 -0
- package/dist/chunk-ZLKYFVIL.js.map +1 -0
- package/dist/components/marketing/gallery.cjs +1 -1
- package/dist/components/marketing/gallery.d.cts +4 -4
- package/dist/components/marketing/gallery.d.ts +4 -4
- package/dist/components/marketing/gallery.js +1 -1
- package/dist/components/marketing/pricing.cjs +1 -1
- package/dist/components/marketing/pricing.d.cts +17 -2
- package/dist/components/marketing/pricing.d.ts +17 -2
- package/dist/components/marketing/pricing.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-44HISN45.js +0 -3
- package/dist/chunk-44HISN45.js.map +0 -1
- package/dist/chunk-F6CQ5ODU.js +0 -3
- package/dist/chunk-F6CQ5ODU.js.map +0 -1
- package/dist/chunk-GEMIO54B.cjs +0 -3
- package/dist/chunk-GEMIO54B.cjs.map +0 -1
- package/dist/chunk-OEN63W3G.cjs +0 -3
- package/dist/chunk-OEN63W3G.cjs.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var h=classVarianceAuthority.cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),P=classVarianceAuthority.cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),V=classVarianceAuthority.cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),k=classVarianceAuthority.cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}});function x(a,i){let o=a.price.yearly;return i&&o!==void 0?{amount:o,period:a.period??"year"}:{amount:a.price.monthly,period:a.period??"month"}}function w(a){let i=a.filter(n=>n.price.yearly!==void 0&&n.price.monthly>0).map(n=>{let l=n.price.monthly*12;return Math.round((l-n.price.yearly)/l*100)}).filter(n=>n>0);if(i.length===0)return null;let o=Math.max(...i);return {percent:o,exact:i.every(n=>n===o)}}var D=({plans:a,title:i,subtitle:o,columns:n,variant:l,className:f,showYearly:s=false,onToggleBilling:p,billingToggleLabel:b="Bill yearly",showYearlyDiscount:y=true,yearlyDiscountLabel:v=(c,u)=>u?`(Save ${c}%)`:`(Save up to ${c}%)`,...N})=>{let c=y?w(a):null,u=(e,g="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:g,minimumFractionDigits:0}).format(e);return r__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a(h({variant:l}),f),...N},r__default.default.createElement("div",{className:"container mx-auto px-4"},(i||o)&&r__default.default.createElement("div",{className:"text-center mb-12"},i&&r__default.default.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},i),o&&r__default.default.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto"},o)),p&&r__default.default.createElement("div",{className:"flex items-center justify-center gap-4 mb-12"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!s&&"text-foreground font-medium")},"Monthly"),r__default.default.createElement("button",{type:"button",role:"switch","aria-checked":s,"aria-label":b,onClick:()=>p(!s),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",s?"translate-x-6":"translate-x-1")})),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",s&&"text-foreground font-medium")},"Yearly",c&&r__default.default.createElement("span",{className:"ml-1 text-xs text-success-600"},v(c.percent,c.exact)))),r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(P({columns:n}))},a.map((e,g)=>r__default.default.createElement("div",{key:e.id||g,className:chunkITRGJNWL_cjs.a(V({variant:e.popular?"popular":"default"}),e.popular&&"scale-105")},e.badge&&r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(k({variant:e.badge.variant}))},e.badge.text),r__default.default.createElement("div",{className:"text-center mb-6"},r__default.default.createElement("h3",{className:"text-2xl font-bold mb-2"},e.name),e.description&&r__default.default.createElement("p",{className:"text-muted-foreground text-sm mb-4"},e.description),r__default.default.createElement("div",{className:"mb-4"},r__default.default.createElement("span",{className:"text-4xl font-bold"},u(x(e,s).amount,e.currency)),r__default.default.createElement("span",{className:"text-muted-foreground ml-1"},"/",x(e,s).period))),r__default.default.createElement("ul",{className:"space-y-3 mb-8"},e.features.map(d=>r__default.default.createElement("li",{key:d.id,className:"flex items-center gap-3"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("w-5 h-5 rounded-full flex items-center justify-center text-xs",d.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},d.included?"\u2713":"\u2717"),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!d.included&&"text-muted-foreground line-through")},d.name)))),e.cta.href?r__default.default.createElement("a",{href:e.cta.href,onClick:e.cta.onClick,className:chunkITRGJNWL_cjs.a("block w-full py-3 px-4 rounded-lg font-medium text-center transition-colors",e.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80")},e.cta.text):r__default.default.createElement("button",{type:"button",className:chunkITRGJNWL_cjs.a("w-full py-3 px-4 rounded-lg font-medium transition-colors",e.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:e.cta.onClick},e.cta.text))))))};exports.a=D;//# sourceMappingURL=chunk-INZNS2ZP.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-INZNS2ZP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","displayPrice","plan","showYearly","yearly","yearlySaving","plans","savings","fullYear","percent","best","s","Pricing","title","subtitle","columns","variant","className","onToggleBilling","billingToggleLabel","showYearlyDiscount","yearlyDiscountLabel","exact","props","saving","formatPrice","price","currency","React","cn","idx","feature"],"mappings":"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","file":"chunk-INZNS2ZP.cjs","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst pricingVariants = cva(\"py-16 md:py-24\", {\n variants: {\n variant: {\n default: \"bg-background\",\n muted: \"bg-muted/30\",\n accent: \"bg-accent/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nconst pricingGridVariants = cva(\"grid gap-8\", {\n variants: {\n columns: {\n 1: \"grid-cols-1 max-w-md mx-auto\",\n 2: \"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto\",\n },\n },\n defaultVariants: {\n columns: 3,\n },\n});\n\nconst pricingCardVariants = cva(\n \"relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-border\",\n accent: \"border-accent/20 bg-accent/5\",\n popular: \"border-primary/20 bg-primary/5 ring-2 ring-primary/10\",\n muted: \"border-muted bg-muted/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst pricingBadgeVariants = cva(\n \"absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n accent: \"bg-accent text-accent-foreground\",\n success: \"bg-success-100 text-success-800\",\n warning: \"bg-warning-100 text-warning-800\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>[\"variant\"];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>[\"columns\"];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n /**\n * Accessible name for the monthly/yearly switch.\n *\n * The visible \"Monthly\" and \"Yearly\" text sits either side of it, so it has no\n * name of its own to take. It used to have none at all: an empty button, which\n * axe reports as `button-name`.\n */\n billingToggleLabel?: string;\n /**\n * Show what a yearly plan saves. Defaults to true, and shows nothing when the\n * prices do not actually save anything.\n */\n showYearlyDiscount?: boolean;\n /** The wording of that saving. */\n yearlyDiscountLabel?: (percent: number, exact: boolean) => string;\n}\n\n/**\n * What a plan costs in the period being shown, and what to call that period.\n *\n * `showYearly && plan.price.yearly` was a truthiness test, so a plan priced at\n * `yearly: 0` - free for the year, which is a real offer - fell through to the\n * monthly figure and labelled it `/year`. A plan with no yearly price did the\n * same, quietly presenting a monthly amount as an annual one.\n *\n * A missing yearly price now keeps its own period rather than borrowing the\n * wrong one. Multiplying the monthly price by twelve would be inventing a number\n * the caller did not give.\n */\nfunction displayPrice(plan: PricingPlan, showYearly: boolean) {\n const yearly = plan.price.yearly;\n if (showYearly && yearly !== undefined) {\n return { amount: yearly, period: plan.period ?? \"year\" };\n }\n return { amount: plan.price.monthly, period: plan.period ?? \"month\" };\n}\n\n/**\n * What yearly billing actually saves, from the prices given.\n *\n * The component used to say \"(Save 20%)\" next to the Yearly label always, whether\n * the yearly prices saved twenty percent, nothing, or cost more. That is a claim\n * about money made without looking at any.\n *\n * Plans can disagree, and the label sits next to one global switch, so the number\n * is the best saving on offer and says \"up to\" when the plans differ. Nothing is\n * claimed when nothing is saved.\n */\nfunction yearlySaving(plans: PricingPlan[]): {\n percent: number;\n exact: boolean;\n} | null {\n const savings = plans\n .filter((plan) => plan.price.yearly !== undefined && plan.price.monthly > 0)\n .map((plan) => {\n const fullYear = plan.price.monthly * 12;\n return Math.round(((fullYear - plan.price.yearly!) / fullYear) * 100);\n })\n .filter((percent) => percent > 0);\n\n if (savings.length === 0) return null;\n const best = Math.max(...savings);\n return { percent: best, exact: savings.every((s) => s === best) };\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n billingToggleLabel = \"Bill yearly\",\n showYearlyDiscount = true,\n yearlyDiscountLabel = (percent, exact) =>\n exact ? `(Save ${percent}%)` : `(Save up to ${percent}%)`,\n ...props\n}) => {\n const saving = showYearlyDiscount ? yearlySaving(plans) : null;\n const formatPrice = (price: number, currency = \"USD\") => {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/*\n Its own block, keyed on the billing callback.\n\n It used to live inside the heading, so a Pricing with no `title` and no\n `subtitle` - both optional props - rendered no way to switch between\n monthly and yearly at all, however the callback was configured.\n */}\n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-12\">\n <span\n className={cn(\n \"text-sm\",\n !showYearly && \"text-foreground font-medium\",\n )}\n >\n Monthly\n </span>\n {/*\n A switch, with a name and a state. It was an empty <button>: axe\n reported `button-name`, nothing announced which way it was set, and\n without a type it submitted any form it happened to sit in.\n */}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={showYearly}\n aria-label={billingToggleLabel}\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n \"inline-block h-4 w-4 transform rounded-full bg-background transition-transform\",\n showYearly ? \"translate-x-6\" : \"translate-x-1\",\n )}\n />\n </button>\n <span\n className={cn(\n \"text-sm\",\n showYearly && \"text-foreground font-medium\",\n )}\n >\n Yearly\n {saving && (\n <span className=\"ml-1 text-xs text-success-600\">\n {yearlyDiscountLabel(saving.percent, saving.exact)}\n </span>\n )}\n </span>\n </div>\n )}\n\n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({\n variant: plan.popular ? \"popular\" : \"default\",\n }),\n plan.popular && \"scale-105\",\n )}\n >\n {plan.badge && (\n <div\n className={cn(\n pricingBadgeVariants({ variant: plan.badge.variant }),\n )}\n >\n {plan.badge.text}\n </div>\n )}\n\n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n displayPrice(plan, showYearly).amount,\n plan.currency,\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{displayPrice(plan, showYearly).period}\n </span>\n </div>\n </div>\n\n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n \"w-5 h-5 rounded-full flex items-center justify-center text-xs\",\n feature.included\n ? \"bg-success-100 text-success-600\"\n : \"bg-muted text-muted-foreground\",\n )}\n >\n {feature.included ? \"✓\" : \"✗\"}\n </span>\n <span\n className={cn(\n \"text-sm\",\n !feature.included &&\n \"text-muted-foreground line-through\",\n )}\n >\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n\n {/*\n A link when the plan gives a destination, a button when it gives\n a callback.\n\n `PricingPlan.cta` has had an optional `href` since it was written\n and nothing ever read it, so a plan configured with a destination\n and no `onClick` rendered a button that did nothing at all.\n\n With both, it is a link that also runs the callback: a plan that\n navigates to checkout and reports the click on the way is the\n normal shape of that, and a button could not do the navigating.\n\n `type=\"button\"` on the callback form, so a pricing table inside a\n form does not submit it.\n */}\n {plan.cta.href ? (\n <a\n href={plan.cta.href}\n onClick={plan.cta.onClick}\n className={cn(\n \"block w-full py-3 px-4 rounded-lg font-medium text-center transition-colors\",\n plan.popular\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\n )}\n >\n {plan.cta.text}\n </a>\n ) : (\n <button\n type=\"button\"\n className={cn(\n \"w-full py-3 px-4 rounded-lg font-medium transition-colors\",\n plan.popular\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n )}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunk6UIT6XQH_cjs=require('./chunk-6UIT6XQH.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),l=require('@radix-ui/react-dialog'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var e__default=/*#__PURE__*/_interopDefault(e);var l__namespace=/*#__PURE__*/_interopNamespace(l);var A=classVarianceAuthority.cva("grid gap-4",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6"},spacing:{sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"}},defaultVariants:{columns:3,spacing:"md"}}),j=classVarianceAuthority.cva("relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg",{variants:{aspectRatio:{square:"aspect-square",video:"aspect-video",portrait:"aspect-[3/4]",landscape:"aspect-[4/3]",wide:"aspect-[16/9]"},hover:{none:"",scale:"hover:scale-105",zoom:"hover:scale-110",lift:"hover:-translate-y-2"}},defaultVariants:{aspectRatio:"square",hover:"scale"}}),q=classVarianceAuthority.cva("fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm",{variants:{animation:{fade:"animate-in fade-in duration-300",slide:"animate-in slide-in-from-bottom duration-300",zoom:"animate-in zoom-in duration-300"}},defaultVariants:{animation:"fade"}}),B=({images:a,className:P,itemClassName:N,columns:w=3,spacing:D="md",showLightbox:p=true,lightboxAnimation:C="fade",onImageClick:v,itemHover:I="scale",itemAspectRatio:V="square",showThumbnails:z=false,thumbnailSize:E="md",...G})=>{let[i,c]=e.useState(null),[o,m]=e.useState(-1),f=e.useRef(null),x=e.useCallback((t,r,s)=>{s&&(f.current=s),p&&(c(t),m(r)),v?.(t,r);},[p,v]),y=e.useCallback(()=>{c(null),m(-1);},[]),u=e.useCallback(()=>{if(o>0){let t=o-1;c(a[t]||null),m(t);}},[o,a]),h=e.useCallback(()=>{if(o<a.length-1){let t=o+1;c(a[t]||null),m(t);}},[o,a]),T=e.useCallback(t=>{t.key==="ArrowLeft"?u():t.key==="ArrowRight"&&h();},[u,h]);return e__default.default.createElement(e__default.default.Fragment,null,e__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(A({columns:w,spacing:D}),P),...G},a.map((t,r)=>e__default.default.createElement("div",{key:t.id||r,className:chunkITRGJNWL_cjs.a(j({aspectRatio:V,hover:I}),N),role:"button",tabIndex:0,onClick:s=>x(t,r,s.currentTarget),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),x(t,r,s.currentTarget));},"aria-label":`View image ${r+1}: ${t.alt}`},e__default.default.createElement("img",{src:z&&t.thumbnail?t.thumbnail:t.src,alt:t.alt,className:"w-full h-full object-cover",loading:"lazy"}),(t.title||t.description)&&e__default.default.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e__default.default.createElement("div",{className:"p-4 text-white"},t.title&&e__default.default.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e__default.default.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),e__default.default.createElement(l__namespace.Root,{open:i!==null&&p,onOpenChange:t=>{t||y();}},e__default.default.createElement(l__namespace.Portal,null,e__default.default.createElement(l__namespace.Overlay,{className:chunkITRGJNWL_cjs.a(q({animation:C}))}),e__default.default.createElement(l__namespace.Content,{className:"fixed inset-0 z-50 flex items-center justify-center focus:outline-none",onCloseAutoFocus:t=>{t.preventDefault(),f.current?.focus();},onKeyDown:T,onClick:y},i&&e__default.default.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e__default.default.createElement(l__namespace.Title,{className:"sr-only"},i.title||i.alt),i.description?e__default.default.createElement(l__namespace.Description,{className:"sr-only"},i.description):null,e__default.default.createElement("img",{src:i.src,alt:i.alt,className:"max-w-full max-h-full object-contain rounded-lg"}),(i.title||i.description)&&e__default.default.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},i.title&&e__default.default.createElement("h3",{className:"font-semibold text-lg mb-2"},i.title),i.description&&e__default.default.createElement("p",{className:"text-sm text-white/80"},i.description)),a.length>1&&e__default.default.createElement(e__default.default.Fragment,null,o>0&&e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:u,"aria-label":"Previous image"},"\u2190"),o<a.length-1&&e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:h,"aria-label":"Next image"},"\u2192")),e__default.default.createElement(l__namespace.Close,{asChild:true},e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white","aria-label":"Close lightbox"},"\u2715")),a.length>1&&e__default.default.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},o+1," / ",a.length))))))},M=B;exports.a=B;exports.b=M;//# sourceMappingURL=chunk-JVFOPCT4.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-JVFOPCT4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/gallery.tsx"],"names":["galleryVariants","cva","galleryItemVariants","lightboxVariants","Gallery","images","className","itemClassName","columns","spacing","showLightbox","lightboxAnimation","onImageClick","itemHover","itemAspectRatio","showThumbnails","_thumbnailSize","props","selectedImage","setSelectedImage","useState","selectedIndex","setSelectedIndex","triggerRef","useRef","handleImageClick","useCallback","image","index","trigger","handleCloseLightbox","handlePrevious","newIndex","handleNext","handleKeyDown","e","React","cn","l","next","event","Button","gallery_default"],"mappings":"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","file":"chunk-JVFOPCT4.cjs","sourcesContent":["import React, { useState, useCallback, useRef } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/core/button\";\n\nconst galleryVariants = cva(\"grid gap-4\", {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n 5: \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5\",\n 6: \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6\",\n },\n spacing: {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n },\n defaultVariants: {\n columns: 3,\n spacing: \"md\",\n },\n});\n\nconst galleryItemVariants = cva(\n \"relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg\",\n {\n variants: {\n aspectRatio: {\n square: \"aspect-square\",\n video: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n landscape: \"aspect-[4/3]\",\n wide: \"aspect-[16/9]\",\n },\n hover: {\n none: \"\",\n scale: \"hover:scale-105\",\n zoom: \"hover:scale-110\",\n lift: \"hover:-translate-y-2\",\n },\n },\n defaultVariants: {\n aspectRatio: \"square\",\n hover: \"scale\",\n },\n },\n);\n\nconst lightboxVariants = cva(\n \"fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm\",\n {\n variants: {\n animation: {\n fade: \"animate-in fade-in duration-300\",\n slide: \"animate-in slide-in-from-bottom duration-300\",\n zoom: \"animate-in zoom-in duration-300\",\n },\n },\n defaultVariants: {\n animation: \"fade\",\n },\n },\n);\n\nexport interface GalleryImage {\n id: string;\n src: string;\n alt: string;\n title?: string;\n description?: string;\n thumbnail?: string;\n}\n\nexport interface GalleryProps extends VariantProps<typeof galleryVariants> {\n images: GalleryImage[];\n className?: string;\n itemClassName?: string;\n showLightbox?: boolean;\n lightboxAnimation?: VariantProps<typeof lightboxVariants>[\"animation\"];\n onImageClick?: (image: GalleryImage, index: number) => void;\n itemHover?: VariantProps<typeof galleryItemVariants>[\"hover\"];\n itemAspectRatio?: VariantProps<typeof galleryItemVariants>[\"aspectRatio\"];\n showThumbnails?: boolean;\n thumbnailSize?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n images,\n className,\n itemClassName,\n columns = 3,\n spacing = \"md\",\n showLightbox = true,\n lightboxAnimation = \"fade\",\n onImageClick,\n itemHover = \"scale\",\n itemAspectRatio = \"square\",\n showThumbnails = false,\n thumbnailSize: _thumbnailSize = \"md\",\n ...props\n}) => {\n const [selectedImage, setSelectedImage] = useState<GalleryImage | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number>(-1);\n\n /**\n * The item that opened the lightbox, so focus can go back to it.\n *\n * Radix restores focus to whatever was focused when the dialog mounted, and in\n * this tree it did not: focus came back to `document.body`, measured rather\n * than assumed. Remembering the element and putting focus back explicitly is\n * both more certain and more precise - this is the exact item, not whatever\n * happened to be focused at the time.\n */\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const handleImageClick = useCallback(\n (image: GalleryImage, index: number, trigger?: HTMLElement | null) => {\n if (trigger) triggerRef.current = trigger;\n if (showLightbox) {\n setSelectedImage(image);\n setSelectedIndex(index);\n }\n onImageClick?.(image, index);\n },\n [showLightbox, onImageClick],\n );\n\n const handleCloseLightbox = useCallback(() => {\n setSelectedImage(null);\n setSelectedIndex(-1);\n }, []);\n\n const handlePrevious = useCallback(() => {\n if (selectedIndex > 0) {\n const newIndex = selectedIndex - 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleNext = useCallback(() => {\n if (selectedIndex < images.length - 1) {\n const newIndex = selectedIndex + 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n // Escape is Radix's, and it handles it whether or not focus is on this\n // element - which is the half that was broken. The arrows are ours, and they\n // work now because focus is inside the dialog to begin with.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowLeft\") {\n handlePrevious();\n } else if (e.key === \"ArrowRight\") {\n handleNext();\n }\n },\n [handlePrevious, handleNext],\n );\n\n return (\n <>\n <div\n className={cn(galleryVariants({ columns, spacing }), className)}\n {...props}\n >\n {images.map((image, index) => (\n <div\n key={image.id || index}\n className={cn(\n galleryItemVariants({\n aspectRatio: itemAspectRatio,\n hover: itemHover,\n }),\n itemClassName,\n )}\n role=\"button\"\n tabIndex={0}\n onClick={(e) => handleImageClick(image, index, e.currentTarget)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleImageClick(image, index, e.currentTarget);\n }\n }}\n aria-label={`View image ${index + 1}: ${image.alt}`}\n >\n <img\n src={\n showThumbnails && image.thumbnail ? image.thumbnail : image.src\n }\n alt={image.alt}\n className=\"w-full h-full object-cover\"\n loading=\"lazy\"\n />\n {(image.title || image.description) && (\n <div className=\"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end\">\n <div className=\"p-4 text-white\">\n {image.title && (\n <h3 className=\"font-semibold text-sm sm:text-base\">\n {image.title}\n </h3>\n )}\n {image.description && (\n <p className=\"text-xs sm:text-sm text-white/80 mt-1\">\n {image.description}\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {/*\n The lightbox is a Radix Dialog rather than a div with role=\"dialog\".\n\n It used to be the latter, and it said `aria-modal=\"true\"` without being\n modal in any respect that matters. Opening it left focus on the gallery\n item behind it, so `document.activeElement` was still \"View image 1\";\n Escape and the arrow keys were bound to the overlay, which never had\n focus, so neither worked; and every control behind the overlay was still\n reachable by Tab.\n\n Radix brings initial focus, focus containment, focus returned to whatever\n opened it, Escape, scroll locking and aria-hiding the rest of the page.\n Hand-rolling those is how the original ended up claiming all of them and\n implementing none. It also generates the ids, which replaces the fixed\n `lightbox-title` that collided as soon as a page had two galleries.\n */}\n <DialogPrimitive.Root\n open={selectedImage !== null && showLightbox}\n onOpenChange={(next) => {\n if (!next) handleCloseLightbox();\n }}\n >\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(lightboxVariants({ animation: lightboxAnimation }))}\n />\n <DialogPrimitive.Content\n className=\"fixed inset-0 z-50 flex items-center justify-center focus:outline-none\"\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n triggerRef.current?.focus();\n }}\n onKeyDown={handleKeyDown}\n // Clicking the backdrop closes it, the same as before. The panel\n // below stops the click from reaching here.\n onClick={handleCloseLightbox}\n >\n {selectedImage && (\n <div\n className=\"relative max-w-4xl max-h-[90vh] mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n {/*\n Radix names the dialog from its Title, and warns without one.\n The alt text is the only description of the image there is, so\n it is the name; it is visually hidden because the image itself\n is already on screen.\n */}\n <DialogPrimitive.Title className=\"sr-only\">\n {selectedImage.title || selectedImage.alt}\n </DialogPrimitive.Title>\n {selectedImage.description ? (\n <DialogPrimitive.Description className=\"sr-only\">\n {selectedImage.description}\n </DialogPrimitive.Description>\n ) : null}\n\n <img\n src={selectedImage.src}\n alt={selectedImage.alt}\n className=\"max-w-full max-h-full object-contain rounded-lg\"\n />\n\n {(selectedImage.title || selectedImage.description) && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg\">\n {selectedImage.title && (\n <h3 className=\"font-semibold text-lg mb-2\">\n {selectedImage.title}\n </h3>\n )}\n {selectedImage.description && (\n <p className=\"text-sm text-white/80\">\n {selectedImage.description}\n </p>\n )}\n </div>\n )}\n\n {/* Navigation buttons */}\n {images.length > 1 && (\n <>\n {selectedIndex > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handlePrevious}\n aria-label=\"Previous image\"\n >\n ←\n </Button>\n )}\n {selectedIndex < images.length - 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleNext}\n aria-label=\"Next image\"\n >\n →\n </Button>\n )}\n </>\n )}\n\n {/* Close button */}\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white\"\n aria-label=\"Close lightbox\"\n >\n ✕\n </Button>\n </DialogPrimitive.Close>\n\n {/* Image counter */}\n {images.length > 1 && (\n <div className=\"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm\">\n {selectedIndex + 1} / {images.length}\n </div>\n )}\n </div>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n </>\n );\n};\n\nexport default Gallery;\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a}from'./chunk-AC2JBXHQ.js';import r from'react';import {cva}from'class-variance-authority';var h=cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),P=cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),V=cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),k=cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}});function x(a,i){let o=a.price.yearly;return i&&o!==void 0?{amount:o,period:a.period??"year"}:{amount:a.price.monthly,period:a.period??"month"}}function w(a){let i=a.filter(n=>n.price.yearly!==void 0&&n.price.monthly>0).map(n=>{let l=n.price.monthly*12;return Math.round((l-n.price.yearly)/l*100)}).filter(n=>n>0);if(i.length===0)return null;let o=Math.max(...i);return {percent:o,exact:i.every(n=>n===o)}}var D=({plans:a$1,title:i,subtitle:o,columns:n,variant:l,className:f,showYearly:s=false,onToggleBilling:p,billingToggleLabel:b="Bill yearly",showYearlyDiscount:y=true,yearlyDiscountLabel:v=(c,u)=>u?`(Save ${c}%)`:`(Save up to ${c}%)`,...N})=>{let c=y?w(a$1):null,u=(e,g="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:g,minimumFractionDigits:0}).format(e);return r.createElement("section",{className:a(h({variant:l}),f),...N},r.createElement("div",{className:"container mx-auto px-4"},(i||o)&&r.createElement("div",{className:"text-center mb-12"},i&&r.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},i),o&&r.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto"},o)),p&&r.createElement("div",{className:"flex items-center justify-center gap-4 mb-12"},r.createElement("span",{className:a("text-sm",!s&&"text-foreground font-medium")},"Monthly"),r.createElement("button",{type:"button",role:"switch","aria-checked":s,"aria-label":b,onClick:()=>p(!s),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r.createElement("span",{className:a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",s?"translate-x-6":"translate-x-1")})),r.createElement("span",{className:a("text-sm",s&&"text-foreground font-medium")},"Yearly",c&&r.createElement("span",{className:"ml-1 text-xs text-success-600"},v(c.percent,c.exact)))),r.createElement("div",{className:a(P({columns:n}))},a$1.map((e,g)=>r.createElement("div",{key:e.id||g,className:a(V({variant:e.popular?"popular":"default"}),e.popular&&"scale-105")},e.badge&&r.createElement("div",{className:a(k({variant:e.badge.variant}))},e.badge.text),r.createElement("div",{className:"text-center mb-6"},r.createElement("h3",{className:"text-2xl font-bold mb-2"},e.name),e.description&&r.createElement("p",{className:"text-muted-foreground text-sm mb-4"},e.description),r.createElement("div",{className:"mb-4"},r.createElement("span",{className:"text-4xl font-bold"},u(x(e,s).amount,e.currency)),r.createElement("span",{className:"text-muted-foreground ml-1"},"/",x(e,s).period))),r.createElement("ul",{className:"space-y-3 mb-8"},e.features.map(d=>r.createElement("li",{key:d.id,className:"flex items-center gap-3"},r.createElement("span",{className:a("w-5 h-5 rounded-full flex items-center justify-center text-xs",d.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},d.included?"\u2713":"\u2717"),r.createElement("span",{className:a("text-sm",!d.included&&"text-muted-foreground line-through")},d.name)))),e.cta.href?r.createElement("a",{href:e.cta.href,onClick:e.cta.onClick,className:a("block w-full py-3 px-4 rounded-lg font-medium text-center transition-colors",e.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80")},e.cta.text):r.createElement("button",{type:"button",className:a("w-full py-3 px-4 rounded-lg font-medium transition-colors",e.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:e.cta.onClick},e.cta.text))))))};export{D as a};//# sourceMappingURL=chunk-LQB4PD53.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-LQB4PD53.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","displayPrice","plan","showYearly","yearly","yearlySaving","plans","savings","fullYear","percent","best","s","Pricing","title","subtitle","columns","variant","className","onToggleBilling","billingToggleLabel","showYearlyDiscount","yearlyDiscountLabel","exact","props","saving","formatPrice","price","currency","React","cn","idx","feature"],"mappings":"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","file":"chunk-LQB4PD53.js","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst pricingVariants = cva(\"py-16 md:py-24\", {\n variants: {\n variant: {\n default: \"bg-background\",\n muted: \"bg-muted/30\",\n accent: \"bg-accent/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n\nconst pricingGridVariants = cva(\"grid gap-8\", {\n variants: {\n columns: {\n 1: \"grid-cols-1 max-w-md mx-auto\",\n 2: \"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto\",\n 4: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto\",\n },\n },\n defaultVariants: {\n columns: 3,\n },\n});\n\nconst pricingCardVariants = cva(\n \"relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border-border\",\n accent: \"border-accent/20 bg-accent/5\",\n popular: \"border-primary/20 bg-primary/5 ring-2 ring-primary/10\",\n muted: \"border-muted bg-muted/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst pricingBadgeVariants = cva(\n \"absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n accent: \"bg-accent text-accent-foreground\",\n success: \"bg-success-100 text-success-800\",\n warning: \"bg-warning-100 text-warning-800\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>[\"variant\"];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>[\"columns\"];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n /**\n * Accessible name for the monthly/yearly switch.\n *\n * The visible \"Monthly\" and \"Yearly\" text sits either side of it, so it has no\n * name of its own to take. It used to have none at all: an empty button, which\n * axe reports as `button-name`.\n */\n billingToggleLabel?: string;\n /**\n * Show what a yearly plan saves. Defaults to true, and shows nothing when the\n * prices do not actually save anything.\n */\n showYearlyDiscount?: boolean;\n /** The wording of that saving. */\n yearlyDiscountLabel?: (percent: number, exact: boolean) => string;\n}\n\n/**\n * What a plan costs in the period being shown, and what to call that period.\n *\n * `showYearly && plan.price.yearly` was a truthiness test, so a plan priced at\n * `yearly: 0` - free for the year, which is a real offer - fell through to the\n * monthly figure and labelled it `/year`. A plan with no yearly price did the\n * same, quietly presenting a monthly amount as an annual one.\n *\n * A missing yearly price now keeps its own period rather than borrowing the\n * wrong one. Multiplying the monthly price by twelve would be inventing a number\n * the caller did not give.\n */\nfunction displayPrice(plan: PricingPlan, showYearly: boolean) {\n const yearly = plan.price.yearly;\n if (showYearly && yearly !== undefined) {\n return { amount: yearly, period: plan.period ?? \"year\" };\n }\n return { amount: plan.price.monthly, period: plan.period ?? \"month\" };\n}\n\n/**\n * What yearly billing actually saves, from the prices given.\n *\n * The component used to say \"(Save 20%)\" next to the Yearly label always, whether\n * the yearly prices saved twenty percent, nothing, or cost more. That is a claim\n * about money made without looking at any.\n *\n * Plans can disagree, and the label sits next to one global switch, so the number\n * is the best saving on offer and says \"up to\" when the plans differ. Nothing is\n * claimed when nothing is saved.\n */\nfunction yearlySaving(plans: PricingPlan[]): {\n percent: number;\n exact: boolean;\n} | null {\n const savings = plans\n .filter((plan) => plan.price.yearly !== undefined && plan.price.monthly > 0)\n .map((plan) => {\n const fullYear = plan.price.monthly * 12;\n return Math.round(((fullYear - plan.price.yearly!) / fullYear) * 100);\n })\n .filter((percent) => percent > 0);\n\n if (savings.length === 0) return null;\n const best = Math.max(...savings);\n return { percent: best, exact: savings.every((s) => s === best) };\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n billingToggleLabel = \"Bill yearly\",\n showYearlyDiscount = true,\n yearlyDiscountLabel = (percent, exact) =>\n exact ? `(Save ${percent}%)` : `(Save up to ${percent}%)`,\n ...props\n}) => {\n const saving = showYearlyDiscount ? yearlySaving(plans) : null;\n const formatPrice = (price: number, currency = \"USD\") => {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/*\n Its own block, keyed on the billing callback.\n\n It used to live inside the heading, so a Pricing with no `title` and no\n `subtitle` - both optional props - rendered no way to switch between\n monthly and yearly at all, however the callback was configured.\n */}\n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-12\">\n <span\n className={cn(\n \"text-sm\",\n !showYearly && \"text-foreground font-medium\",\n )}\n >\n Monthly\n </span>\n {/*\n A switch, with a name and a state. It was an empty <button>: axe\n reported `button-name`, nothing announced which way it was set, and\n without a type it submitted any form it happened to sit in.\n */}\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={showYearly}\n aria-label={billingToggleLabel}\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n \"inline-block h-4 w-4 transform rounded-full bg-background transition-transform\",\n showYearly ? \"translate-x-6\" : \"translate-x-1\",\n )}\n />\n </button>\n <span\n className={cn(\n \"text-sm\",\n showYearly && \"text-foreground font-medium\",\n )}\n >\n Yearly\n {saving && (\n <span className=\"ml-1 text-xs text-success-600\">\n {yearlyDiscountLabel(saving.percent, saving.exact)}\n </span>\n )}\n </span>\n </div>\n )}\n\n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({\n variant: plan.popular ? \"popular\" : \"default\",\n }),\n plan.popular && \"scale-105\",\n )}\n >\n {plan.badge && (\n <div\n className={cn(\n pricingBadgeVariants({ variant: plan.badge.variant }),\n )}\n >\n {plan.badge.text}\n </div>\n )}\n\n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n displayPrice(plan, showYearly).amount,\n plan.currency,\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{displayPrice(plan, showYearly).period}\n </span>\n </div>\n </div>\n\n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n \"w-5 h-5 rounded-full flex items-center justify-center text-xs\",\n feature.included\n ? \"bg-success-100 text-success-600\"\n : \"bg-muted text-muted-foreground\",\n )}\n >\n {feature.included ? \"✓\" : \"✗\"}\n </span>\n <span\n className={cn(\n \"text-sm\",\n !feature.included &&\n \"text-muted-foreground line-through\",\n )}\n >\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n\n {/*\n A link when the plan gives a destination, a button when it gives\n a callback.\n\n `PricingPlan.cta` has had an optional `href` since it was written\n and nothing ever read it, so a plan configured with a destination\n and no `onClick` rendered a button that did nothing at all.\n\n With both, it is a link that also runs the callback: a plan that\n navigates to checkout and reports the click on the way is the\n normal shape of that, and a button could not do the navigating.\n\n `type=\"button\"` on the callback form, so a pricing table inside a\n form does not submit it.\n */}\n {plan.cta.href ? (\n <a\n href={plan.cta.href}\n onClick={plan.cta.onClick}\n className={cn(\n \"block w-full py-3 px-4 rounded-lg font-medium text-center transition-colors\",\n plan.popular\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\n )}\n >\n {plan.cta.text}\n </a>\n ) : (\n <button\n type=\"button\"\n className={cn(\n \"w-full py-3 px-4 rounded-lg font-medium transition-colors\",\n plan.popular\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n )}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {b}from'./chunk-O2VT23LK.js';import {a}from'./chunk-AC2JBXHQ.js';import e,{useState,useRef,useCallback}from'react';import*as l from'@radix-ui/react-dialog';import {cva}from'class-variance-authority';var A=cva("grid gap-4",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6"},spacing:{sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"}},defaultVariants:{columns:3,spacing:"md"}}),j=cva("relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg",{variants:{aspectRatio:{square:"aspect-square",video:"aspect-video",portrait:"aspect-[3/4]",landscape:"aspect-[4/3]",wide:"aspect-[16/9]"},hover:{none:"",scale:"hover:scale-105",zoom:"hover:scale-110",lift:"hover:-translate-y-2"}},defaultVariants:{aspectRatio:"square",hover:"scale"}}),q=cva("fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm",{variants:{animation:{fade:"animate-in fade-in duration-300",slide:"animate-in slide-in-from-bottom duration-300",zoom:"animate-in zoom-in duration-300"}},defaultVariants:{animation:"fade"}}),B=({images:a$1,className:P,itemClassName:N,columns:w=3,spacing:D="md",showLightbox:p=true,lightboxAnimation:C="fade",onImageClick:v,itemHover:I="scale",itemAspectRatio:V="square",showThumbnails:z=false,thumbnailSize:E="md",...G})=>{let[i,c]=useState(null),[o,m]=useState(-1),f=useRef(null),x=useCallback((t,r,s)=>{s&&(f.current=s),p&&(c(t),m(r)),v?.(t,r);},[p,v]),y=useCallback(()=>{c(null),m(-1);},[]),u=useCallback(()=>{if(o>0){let t=o-1;c(a$1[t]||null),m(t);}},[o,a$1]),h=useCallback(()=>{if(o<a$1.length-1){let t=o+1;c(a$1[t]||null),m(t);}},[o,a$1]),T=useCallback(t=>{t.key==="ArrowLeft"?u():t.key==="ArrowRight"&&h();},[u,h]);return e.createElement(e.Fragment,null,e.createElement("div",{className:a(A({columns:w,spacing:D}),P),...G},a$1.map((t,r)=>e.createElement("div",{key:t.id||r,className:a(j({aspectRatio:V,hover:I}),N),role:"button",tabIndex:0,onClick:s=>x(t,r,s.currentTarget),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),x(t,r,s.currentTarget));},"aria-label":`View image ${r+1}: ${t.alt}`},e.createElement("img",{src:z&&t.thumbnail?t.thumbnail:t.src,alt:t.alt,className:"w-full h-full object-cover",loading:"lazy"}),(t.title||t.description)&&e.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e.createElement("div",{className:"p-4 text-white"},t.title&&e.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),e.createElement(l.Root,{open:i!==null&&p,onOpenChange:t=>{t||y();}},e.createElement(l.Portal,null,e.createElement(l.Overlay,{className:a(q({animation:C}))}),e.createElement(l.Content,{className:"fixed inset-0 z-50 flex items-center justify-center focus:outline-none",onCloseAutoFocus:t=>{t.preventDefault(),f.current?.focus();},onKeyDown:T,onClick:y},i&&e.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e.createElement(l.Title,{className:"sr-only"},i.title||i.alt),i.description?e.createElement(l.Description,{className:"sr-only"},i.description):null,e.createElement("img",{src:i.src,alt:i.alt,className:"max-w-full max-h-full object-contain rounded-lg"}),(i.title||i.description)&&e.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},i.title&&e.createElement("h3",{className:"font-semibold text-lg mb-2"},i.title),i.description&&e.createElement("p",{className:"text-sm text-white/80"},i.description)),a$1.length>1&&e.createElement(e.Fragment,null,o>0&&e.createElement(b,{variant:"ghost",size:"sm",className:"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:u,"aria-label":"Previous image"},"\u2190"),o<a$1.length-1&&e.createElement(b,{variant:"ghost",size:"sm",className:"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:h,"aria-label":"Next image"},"\u2192")),e.createElement(l.Close,{asChild:true},e.createElement(b,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white","aria-label":"Close lightbox"},"\u2715")),a$1.length>1&&e.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},o+1," / ",a$1.length))))))},M=B;export{B as a,M as b};//# sourceMappingURL=chunk-ZLKYFVIL.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-ZLKYFVIL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/gallery.tsx"],"names":["galleryVariants","cva","galleryItemVariants","lightboxVariants","Gallery","images","className","itemClassName","columns","spacing","showLightbox","lightboxAnimation","onImageClick","itemHover","itemAspectRatio","showThumbnails","_thumbnailSize","props","selectedImage","setSelectedImage","useState","selectedIndex","setSelectedIndex","triggerRef","useRef","handleImageClick","useCallback","image","index","trigger","handleCloseLightbox","handlePrevious","newIndex","handleNext","handleKeyDown","e","React","cn","next","event","Button","gallery_default"],"mappings":"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","file":"chunk-ZLKYFVIL.js","sourcesContent":["import React, { useState, useCallback, useRef } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/core/button\";\n\nconst galleryVariants = cva(\"grid gap-4\", {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n 5: \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5\",\n 6: \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6\",\n },\n spacing: {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n },\n defaultVariants: {\n columns: 3,\n spacing: \"md\",\n },\n});\n\nconst galleryItemVariants = cva(\n \"relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg\",\n {\n variants: {\n aspectRatio: {\n square: \"aspect-square\",\n video: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n landscape: \"aspect-[4/3]\",\n wide: \"aspect-[16/9]\",\n },\n hover: {\n none: \"\",\n scale: \"hover:scale-105\",\n zoom: \"hover:scale-110\",\n lift: \"hover:-translate-y-2\",\n },\n },\n defaultVariants: {\n aspectRatio: \"square\",\n hover: \"scale\",\n },\n },\n);\n\nconst lightboxVariants = cva(\n \"fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm\",\n {\n variants: {\n animation: {\n fade: \"animate-in fade-in duration-300\",\n slide: \"animate-in slide-in-from-bottom duration-300\",\n zoom: \"animate-in zoom-in duration-300\",\n },\n },\n defaultVariants: {\n animation: \"fade\",\n },\n },\n);\n\nexport interface GalleryImage {\n id: string;\n src: string;\n alt: string;\n title?: string;\n description?: string;\n thumbnail?: string;\n}\n\nexport interface GalleryProps extends VariantProps<typeof galleryVariants> {\n images: GalleryImage[];\n className?: string;\n itemClassName?: string;\n showLightbox?: boolean;\n lightboxAnimation?: VariantProps<typeof lightboxVariants>[\"animation\"];\n onImageClick?: (image: GalleryImage, index: number) => void;\n itemHover?: VariantProps<typeof galleryItemVariants>[\"hover\"];\n itemAspectRatio?: VariantProps<typeof galleryItemVariants>[\"aspectRatio\"];\n showThumbnails?: boolean;\n thumbnailSize?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n images,\n className,\n itemClassName,\n columns = 3,\n spacing = \"md\",\n showLightbox = true,\n lightboxAnimation = \"fade\",\n onImageClick,\n itemHover = \"scale\",\n itemAspectRatio = \"square\",\n showThumbnails = false,\n thumbnailSize: _thumbnailSize = \"md\",\n ...props\n}) => {\n const [selectedImage, setSelectedImage] = useState<GalleryImage | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number>(-1);\n\n /**\n * The item that opened the lightbox, so focus can go back to it.\n *\n * Radix restores focus to whatever was focused when the dialog mounted, and in\n * this tree it did not: focus came back to `document.body`, measured rather\n * than assumed. Remembering the element and putting focus back explicitly is\n * both more certain and more precise - this is the exact item, not whatever\n * happened to be focused at the time.\n */\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const handleImageClick = useCallback(\n (image: GalleryImage, index: number, trigger?: HTMLElement | null) => {\n if (trigger) triggerRef.current = trigger;\n if (showLightbox) {\n setSelectedImage(image);\n setSelectedIndex(index);\n }\n onImageClick?.(image, index);\n },\n [showLightbox, onImageClick],\n );\n\n const handleCloseLightbox = useCallback(() => {\n setSelectedImage(null);\n setSelectedIndex(-1);\n }, []);\n\n const handlePrevious = useCallback(() => {\n if (selectedIndex > 0) {\n const newIndex = selectedIndex - 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleNext = useCallback(() => {\n if (selectedIndex < images.length - 1) {\n const newIndex = selectedIndex + 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n // Escape is Radix's, and it handles it whether or not focus is on this\n // element - which is the half that was broken. The arrows are ours, and they\n // work now because focus is inside the dialog to begin with.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"ArrowLeft\") {\n handlePrevious();\n } else if (e.key === \"ArrowRight\") {\n handleNext();\n }\n },\n [handlePrevious, handleNext],\n );\n\n return (\n <>\n <div\n className={cn(galleryVariants({ columns, spacing }), className)}\n {...props}\n >\n {images.map((image, index) => (\n <div\n key={image.id || index}\n className={cn(\n galleryItemVariants({\n aspectRatio: itemAspectRatio,\n hover: itemHover,\n }),\n itemClassName,\n )}\n role=\"button\"\n tabIndex={0}\n onClick={(e) => handleImageClick(image, index, e.currentTarget)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleImageClick(image, index, e.currentTarget);\n }\n }}\n aria-label={`View image ${index + 1}: ${image.alt}`}\n >\n <img\n src={\n showThumbnails && image.thumbnail ? image.thumbnail : image.src\n }\n alt={image.alt}\n className=\"w-full h-full object-cover\"\n loading=\"lazy\"\n />\n {(image.title || image.description) && (\n <div className=\"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end\">\n <div className=\"p-4 text-white\">\n {image.title && (\n <h3 className=\"font-semibold text-sm sm:text-base\">\n {image.title}\n </h3>\n )}\n {image.description && (\n <p className=\"text-xs sm:text-sm text-white/80 mt-1\">\n {image.description}\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {/*\n The lightbox is a Radix Dialog rather than a div with role=\"dialog\".\n\n It used to be the latter, and it said `aria-modal=\"true\"` without being\n modal in any respect that matters. Opening it left focus on the gallery\n item behind it, so `document.activeElement` was still \"View image 1\";\n Escape and the arrow keys were bound to the overlay, which never had\n focus, so neither worked; and every control behind the overlay was still\n reachable by Tab.\n\n Radix brings initial focus, focus containment, focus returned to whatever\n opened it, Escape, scroll locking and aria-hiding the rest of the page.\n Hand-rolling those is how the original ended up claiming all of them and\n implementing none. It also generates the ids, which replaces the fixed\n `lightbox-title` that collided as soon as a page had two galleries.\n */}\n <DialogPrimitive.Root\n open={selectedImage !== null && showLightbox}\n onOpenChange={(next) => {\n if (!next) handleCloseLightbox();\n }}\n >\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(lightboxVariants({ animation: lightboxAnimation }))}\n />\n <DialogPrimitive.Content\n className=\"fixed inset-0 z-50 flex items-center justify-center focus:outline-none\"\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n triggerRef.current?.focus();\n }}\n onKeyDown={handleKeyDown}\n // Clicking the backdrop closes it, the same as before. The panel\n // below stops the click from reaching here.\n onClick={handleCloseLightbox}\n >\n {selectedImage && (\n <div\n className=\"relative max-w-4xl max-h-[90vh] mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n {/*\n Radix names the dialog from its Title, and warns without one.\n The alt text is the only description of the image there is, so\n it is the name; it is visually hidden because the image itself\n is already on screen.\n */}\n <DialogPrimitive.Title className=\"sr-only\">\n {selectedImage.title || selectedImage.alt}\n </DialogPrimitive.Title>\n {selectedImage.description ? (\n <DialogPrimitive.Description className=\"sr-only\">\n {selectedImage.description}\n </DialogPrimitive.Description>\n ) : null}\n\n <img\n src={selectedImage.src}\n alt={selectedImage.alt}\n className=\"max-w-full max-h-full object-contain rounded-lg\"\n />\n\n {(selectedImage.title || selectedImage.description) && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg\">\n {selectedImage.title && (\n <h3 className=\"font-semibold text-lg mb-2\">\n {selectedImage.title}\n </h3>\n )}\n {selectedImage.description && (\n <p className=\"text-sm text-white/80\">\n {selectedImage.description}\n </p>\n )}\n </div>\n )}\n\n {/* Navigation buttons */}\n {images.length > 1 && (\n <>\n {selectedIndex > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handlePrevious}\n aria-label=\"Previous image\"\n >\n ←\n </Button>\n )}\n {selectedIndex < images.length - 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleNext}\n aria-label=\"Next image\"\n >\n →\n </Button>\n )}\n </>\n )}\n\n {/* Close button */}\n <DialogPrimitive.Close asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white\"\n aria-label=\"Close lightbox\"\n >\n ✕\n </Button>\n </DialogPrimitive.Close>\n\n {/* Image counter */}\n {images.length > 1 && (\n <div className=\"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm\">\n {selectedIndex + 1} / {images.length}\n </div>\n )}\n </div>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n </>\n );\n};\n\nexport default Gallery;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var
|
|
2
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkJVFOPCT4_cjs=require('../../chunk-JVFOPCT4.cjs');require('../../chunk-6UIT6XQH.cjs'),require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunkJVFOPCT4_cjs.a}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkJVFOPCT4_cjs.b}});//# sourceMappingURL=gallery.cjs.map
|
|
3
3
|
//# sourceMappingURL=gallery.cjs.map
|
|
@@ -26,12 +26,12 @@ interface GalleryProps extends VariantProps<typeof galleryVariants> {
|
|
|
26
26
|
className?: string;
|
|
27
27
|
itemClassName?: string;
|
|
28
28
|
showLightbox?: boolean;
|
|
29
|
-
lightboxAnimation?: VariantProps<typeof lightboxVariants>[
|
|
29
|
+
lightboxAnimation?: VariantProps<typeof lightboxVariants>["animation"];
|
|
30
30
|
onImageClick?: (image: GalleryImage, index: number) => void;
|
|
31
|
-
itemHover?: VariantProps<typeof galleryItemVariants>[
|
|
32
|
-
itemAspectRatio?: VariantProps<typeof galleryItemVariants>[
|
|
31
|
+
itemHover?: VariantProps<typeof galleryItemVariants>["hover"];
|
|
32
|
+
itemAspectRatio?: VariantProps<typeof galleryItemVariants>["aspectRatio"];
|
|
33
33
|
showThumbnails?: boolean;
|
|
34
|
-
thumbnailSize?:
|
|
34
|
+
thumbnailSize?: "sm" | "md" | "lg";
|
|
35
35
|
}
|
|
36
36
|
declare const Gallery: React__default.FC<GalleryProps>;
|
|
37
37
|
|
|
@@ -26,12 +26,12 @@ interface GalleryProps extends VariantProps<typeof galleryVariants> {
|
|
|
26
26
|
className?: string;
|
|
27
27
|
itemClassName?: string;
|
|
28
28
|
showLightbox?: boolean;
|
|
29
|
-
lightboxAnimation?: VariantProps<typeof lightboxVariants>[
|
|
29
|
+
lightboxAnimation?: VariantProps<typeof lightboxVariants>["animation"];
|
|
30
30
|
onImageClick?: (image: GalleryImage, index: number) => void;
|
|
31
|
-
itemHover?: VariantProps<typeof galleryItemVariants>[
|
|
32
|
-
itemAspectRatio?: VariantProps<typeof galleryItemVariants>[
|
|
31
|
+
itemHover?: VariantProps<typeof galleryItemVariants>["hover"];
|
|
32
|
+
itemAspectRatio?: VariantProps<typeof galleryItemVariants>["aspectRatio"];
|
|
33
33
|
showThumbnails?: boolean;
|
|
34
|
-
thumbnailSize?:
|
|
34
|
+
thumbnailSize?: "sm" | "md" | "lg";
|
|
35
35
|
}
|
|
36
36
|
declare const Gallery: React__default.FC<GalleryProps>;
|
|
37
37
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{a as Gallery,b as default}from'../../chunk-
|
|
2
|
+
export{a as Gallery,b as default}from'../../chunk-ZLKYFVIL.js';import'../../chunk-O2VT23LK.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=gallery.js.map
|
|
3
3
|
//# sourceMappingURL=gallery.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var chunkINZNS2ZP_cjs=require('../../chunk-INZNS2ZP.cjs');require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkINZNS2ZP_cjs.a}});//# sourceMappingURL=pricing.cjs.map
|
|
3
3
|
//# sourceMappingURL=pricing.cjs.map
|
|
@@ -34,7 +34,7 @@ interface PricingPlan {
|
|
|
34
34
|
};
|
|
35
35
|
badge?: {
|
|
36
36
|
text: string;
|
|
37
|
-
variant?: VariantProps<typeof pricingBadgeVariants>[
|
|
37
|
+
variant?: VariantProps<typeof pricingBadgeVariants>["variant"];
|
|
38
38
|
};
|
|
39
39
|
popular?: boolean;
|
|
40
40
|
}
|
|
@@ -42,10 +42,25 @@ interface PricingProps extends VariantProps<typeof pricingVariants> {
|
|
|
42
42
|
plans: PricingPlan[];
|
|
43
43
|
title?: string;
|
|
44
44
|
subtitle?: string;
|
|
45
|
-
columns?: VariantProps<typeof pricingGridVariants>[
|
|
45
|
+
columns?: VariantProps<typeof pricingGridVariants>["columns"];
|
|
46
46
|
className?: string;
|
|
47
47
|
showYearly?: boolean;
|
|
48
48
|
onToggleBilling?: (yearly: boolean) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Accessible name for the monthly/yearly switch.
|
|
51
|
+
*
|
|
52
|
+
* The visible "Monthly" and "Yearly" text sits either side of it, so it has no
|
|
53
|
+
* name of its own to take. It used to have none at all: an empty button, which
|
|
54
|
+
* axe reports as `button-name`.
|
|
55
|
+
*/
|
|
56
|
+
billingToggleLabel?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Show what a yearly plan saves. Defaults to true, and shows nothing when the
|
|
59
|
+
* prices do not actually save anything.
|
|
60
|
+
*/
|
|
61
|
+
showYearlyDiscount?: boolean;
|
|
62
|
+
/** The wording of that saving. */
|
|
63
|
+
yearlyDiscountLabel?: (percent: number, exact: boolean) => string;
|
|
49
64
|
}
|
|
50
65
|
declare const Pricing: React__default.FC<PricingProps>;
|
|
51
66
|
|
|
@@ -34,7 +34,7 @@ interface PricingPlan {
|
|
|
34
34
|
};
|
|
35
35
|
badge?: {
|
|
36
36
|
text: string;
|
|
37
|
-
variant?: VariantProps<typeof pricingBadgeVariants>[
|
|
37
|
+
variant?: VariantProps<typeof pricingBadgeVariants>["variant"];
|
|
38
38
|
};
|
|
39
39
|
popular?: boolean;
|
|
40
40
|
}
|
|
@@ -42,10 +42,25 @@ interface PricingProps extends VariantProps<typeof pricingVariants> {
|
|
|
42
42
|
plans: PricingPlan[];
|
|
43
43
|
title?: string;
|
|
44
44
|
subtitle?: string;
|
|
45
|
-
columns?: VariantProps<typeof pricingGridVariants>[
|
|
45
|
+
columns?: VariantProps<typeof pricingGridVariants>["columns"];
|
|
46
46
|
className?: string;
|
|
47
47
|
showYearly?: boolean;
|
|
48
48
|
onToggleBilling?: (yearly: boolean) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Accessible name for the monthly/yearly switch.
|
|
51
|
+
*
|
|
52
|
+
* The visible "Monthly" and "Yearly" text sits either side of it, so it has no
|
|
53
|
+
* name of its own to take. It used to have none at all: an empty button, which
|
|
54
|
+
* axe reports as `button-name`.
|
|
55
|
+
*/
|
|
56
|
+
billingToggleLabel?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Show what a yearly plan saves. Defaults to true, and shows nothing when the
|
|
59
|
+
* prices do not actually save anything.
|
|
60
|
+
*/
|
|
61
|
+
showYearlyDiscount?: boolean;
|
|
62
|
+
/** The wording of that saving. */
|
|
63
|
+
yearlyDiscountLabel?: (percent: number, exact: boolean) => string;
|
|
49
64
|
}
|
|
50
65
|
declare const Pricing: React__default.FC<PricingProps>;
|
|
51
66
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{a as Pricing}from'../../chunk-
|
|
2
|
+
export{a as Pricing}from'../../chunk-LQB4PD53.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=pricing.js.map
|
|
3
3
|
//# sourceMappingURL=pricing.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var chunkGEMIO54B_cjs=require('./chunk-GEMIO54B.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkOEN63W3G_cjs=require('./chunk-OEN63W3G.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunkJTHW25XF_cjs=require('./chunk-JTHW25XF.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkKASVYULP_cjs=require('./chunk-KASVYULP.cjs'),chunkUC577SR4_cjs=require('./chunk-UC577SR4.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunkRKAXTJFB_cjs=require('./chunk-RKAXTJFB.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunk7AKJCOPP_cjs=require('./chunk-7AKJCOPP.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkRQIC6NLV_cjs=require('./chunk-RQIC6NLV.cjs'),chunk6UIT6XQH_cjs=require('./chunk-6UIT6XQH.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunkGEMIO54B_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkOEN63W3G_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkKASVYULP_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkUC577SR4_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkUC577SR4_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkUC577SR4_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkUC577SR4_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkUC577SR4_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkUC577SR4_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk6UIT6XQH_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk6UIT6XQH_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
|
|
2
|
+
'use strict';var chunkJVFOPCT4_cjs=require('./chunk-JVFOPCT4.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkINZNS2ZP_cjs=require('./chunk-INZNS2ZP.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunkJTHW25XF_cjs=require('./chunk-JTHW25XF.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkKASVYULP_cjs=require('./chunk-KASVYULP.cjs'),chunkUC577SR4_cjs=require('./chunk-UC577SR4.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunkRKAXTJFB_cjs=require('./chunk-RKAXTJFB.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunk7AKJCOPP_cjs=require('./chunk-7AKJCOPP.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkRQIC6NLV_cjs=require('./chunk-RQIC6NLV.cjs'),chunk6UIT6XQH_cjs=require('./chunk-6UIT6XQH.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunkJVFOPCT4_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkINZNS2ZP_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkKASVYULP_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkUC577SR4_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkUC577SR4_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkUC577SR4_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkUC577SR4_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkUC577SR4_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkUC577SR4_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkUC577SR4_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkRKAXTJFB_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunk7AKJCOPP_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkRQIC6NLV_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk6UIT6XQH_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk6UIT6XQH_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
|
|
3
3
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{a as Gallery}from'./chunk-F6CQ5ODU.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-44HISN45.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-CH5LTBAG.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-YC6ALHAZ.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-HCO4XKPM.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-7YBS3JIS.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-RPY5NLM7.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-BQPFZMGP.js';export{b as Button,a as buttonVariants}from'./chunk-O2VT23LK.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
|
|
2
|
+
export{a as Gallery}from'./chunk-ZLKYFVIL.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-LQB4PD53.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-CH5LTBAG.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-YC6ALHAZ.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-HCO4XKPM.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-7YBS3JIS.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-RPY5NLM7.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-BQPFZMGP.js';export{b as Button,a as buttonVariants}from'./chunk-O2VT23LK.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
package/dist/chunk-44HISN45.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import {a}from'./chunk-AC2JBXHQ.js';import r from'react';import {cva}from'class-variance-authority';var f=cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),b=cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),v=cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),y=cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}}),h=({plans:c,title:s,subtitle:o,columns:l,variant:u,className:g,showYearly:a$1=false,onToggleBilling:m,...p})=>{let x=(t,d="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:d,minimumFractionDigits:0}).format(t);return r.createElement("section",{className:a(f({variant:u}),g),...p},r.createElement("div",{className:"container mx-auto px-4"},(s||o)&&r.createElement("div",{className:"text-center mb-12"},s&&r.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},s),o&&r.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8"},o),m&&r.createElement("div",{className:"flex items-center justify-center gap-4 mb-8"},r.createElement("span",{className:a("text-sm",!a$1&&"text-foreground font-medium")},"Monthly"),r.createElement("button",{onClick:()=>m(!a$1),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r.createElement("span",{className:a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",a$1?"translate-x-6":"translate-x-1")})),r.createElement("span",{className:a("text-sm",a$1&&"text-foreground font-medium")},"Yearly",r.createElement("span",{className:"ml-1 text-xs text-success-600"},"(Save 20%)")))),r.createElement("div",{className:a(b({columns:l}))},c.map((t,d)=>r.createElement("div",{key:t.id||d,className:a(v({variant:t.popular?"popular":"default"}),t.popular&&"scale-105")},t.badge&&r.createElement("div",{className:a(y({variant:t.badge.variant}))},t.badge.text),r.createElement("div",{className:"text-center mb-6"},r.createElement("h3",{className:"text-2xl font-bold mb-2"},t.name),t.description&&r.createElement("p",{className:"text-muted-foreground text-sm mb-4"},t.description),r.createElement("div",{className:"mb-4"},r.createElement("span",{className:"text-4xl font-bold"},x(a$1&&t.price.yearly?t.price.yearly:t.price.monthly,t.currency)),r.createElement("span",{className:"text-muted-foreground ml-1"},"/",t.period||(a$1?"year":"month")))),r.createElement("ul",{className:"space-y-3 mb-8"},t.features.map(n=>r.createElement("li",{key:n.id,className:"flex items-center gap-3"},r.createElement("span",{className:a("w-5 h-5 rounded-full flex items-center justify-center text-xs",n.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},n.included?"\u2713":"\u2717"),r.createElement("span",{className:a("text-sm",!n.included&&"text-muted-foreground line-through")},n.name)))),r.createElement("button",{className:a("w-full py-3 px-4 rounded-lg font-medium transition-colors",t.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:t.cta.onClick},t.cta.text))))))};export{h as a};//# sourceMappingURL=chunk-44HISN45.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-44HISN45.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","Pricing","plans","title","subtitle","columns","variant","className","showYearly","onToggleBilling","props","formatPrice","price","currency","React","cn","plan","idx","feature"],"mappings":"oGAIA,IAAMA,CAAAA,CAAkBC,GAAAA,CACtB,gBAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,eAAA,CACT,KAAA,CAAO,aAAA,CACP,OAAQ,cACV,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,CAAA,CAEMC,CAAAA,CAAsBD,GAAAA,CAC1B,YAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,CAAA,CAAG,8BAAA,CACH,EAAG,8CAAA,CACH,CAAA,CAAG,6DAAA,CACH,CAAA,CAAG,6DACL,CACF,EACA,eAAA,CAAiB,CACf,OAAA,CAAS,CACX,CACF,CACF,EAEME,CAAAA,CAAsBF,GAAAA,CAC1B,mGAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,eAAA,CACT,MAAA,CAAQ,8BAAA,CACR,OAAA,CAAS,wDACT,KAAA,CAAO,0BACT,CACF,CAAA,CACA,eAAA,CAAiB,CACf,QAAS,SACX,CACF,CACF,CAAA,CAEMG,CAAAA,CAAuBH,GAAAA,CAC3B,iGACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,qCACT,MAAA,CAAQ,kCAAA,CACR,OAAA,CAAS,iCAAA,CACT,OAAA,CAAS,iCACX,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SACX,CACF,CACF,CAAA,CAyCaI,CAAAA,CAAkC,CAAC,CAC9C,KAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,UAAA,CAAAC,GAAAA,CAAa,KAAA,CACb,eAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,GAAM,CACJ,IAAMC,CAAAA,CAAc,CAACC,EAAeC,CAAAA,CAAW,KAAA,GACtC,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,CAAS,CACpC,KAAA,CAAO,UAAA,CACP,QAAA,CAAAA,CAAAA,CACA,qBAAA,CAAuB,CACzB,CAAC,CAAA,CAAE,MAAA,CAAOD,CAAK,CAAA,CAGjB,OACEE,CAAAA,CAAA,cAAC,SAAA,CAAA,CAAQ,SAAA,CAAWC,CAAAA,CAAGnB,CAAAA,CAAgB,CAAE,OAAA,CAAAU,CAAQ,CAAC,CAAA,CAAGC,CAAS,CAAA,CAAI,GAAGG,CAAAA,CAAAA,CACnEI,CAAAA,CAAA,cAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBAAA,CAAA,CAAA,CACXX,CAAAA,EAASC,CAAAA,GACTU,CAAAA,CAAA,cAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBAAA,CAAA,CACZX,CAAAA,EACCW,CAAAA,CAAA,aAAA,CAAC,MAAG,SAAA,CAAU,oDAAA,CAAA,CACXX,CACH,CAAA,CAEDC,CAAAA,EACCU,CAAAA,CAAA,cAAC,GAAA,CAAA,CAAE,SAAA,CAAU,sDAAA,CAAA,CACVV,CACH,CAAA,CAGDK,CAAAA,EACCK,EAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6CAAA,CAAA,CACbA,CAAAA,CAAA,aAAA,CAAC,QAAK,SAAA,CAAWC,CAAAA,CAAG,SAAA,CAAW,CAACP,GAAAA,EAAc,6BAA6B,GAAG,SAE9E,CAAA,CACAM,CAAAA,CAAA,aAAA,CAAC,QAAA,CAAA,CACC,OAAA,CAAS,IAAML,CAAAA,CAAgB,CAACD,GAAU,CAAA,CAC1C,SAAA,CAAU,6JAAA,CAAA,CAEVM,CAAAA,CAAA,cAAC,MAAA,CAAA,CACC,SAAA,CAAWC,CAAAA,CACT,gFAAA,CACAP,GAAAA,CAAa,eAAA,CAAkB,eACjC,CAAA,CACF,CACF,CAAA,CACAM,CAAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAWC,CAAAA,CAAG,SAAA,CAAWP,GAAAA,EAAc,6BAA6B,CAAA,CAAA,CAAG,QAAA,CAE3EM,EAAA,aAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,+BAAA,CAAA,CAAgC,YAEhD,CACF,CACF,CAEJ,CAAA,CAGFA,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWC,EAAGjB,CAAAA,CAAoB,CAAE,OAAA,CAAAO,CAAQ,CAAC,CAAC,GAChDH,CAAAA,CAAM,GAAA,CAAI,CAACc,CAAAA,CAAMC,CAAAA,GAChBH,CAAAA,CAAA,cAAC,KAAA,CAAA,CACC,GAAA,CAAKE,CAAAA,CAAK,EAAA,EAAMC,CAAAA,CAChB,SAAA,CAAWF,EACThB,CAAAA,CAAoB,CAClB,OAAA,CAASiB,CAAAA,CAAK,OAAA,CAAU,SAAA,CAAY,SACtC,CAAC,CAAA,CACDA,CAAAA,CAAK,OAAA,EAAW,WAClB,CAAA,CAAA,CAECA,EAAK,KAAA,EACJF,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWC,CAAAA,CAAGf,EAAqB,CAAE,OAAA,CAASgB,CAAAA,CAAK,KAAA,CAAM,OAAQ,CAAC,CAAC,CAAA,CAAA,CACrEA,CAAAA,CAAK,KAAA,CAAM,IACd,CAAA,CAGFF,CAAAA,CAAA,cAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBAAA,CAAA,CACbA,CAAAA,CAAA,aAAA,CAAC,IAAA,CAAA,CAAG,UAAU,yBAAA,CAAA,CAA2BE,CAAAA,CAAK,IAAK,CAAA,CAClDA,CAAAA,CAAK,WAAA,EACJF,CAAAA,CAAA,aAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAA,CACVE,CAAAA,CAAK,WACR,CAAA,CAEFF,EAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MAAA,CAAA,CACbA,CAAAA,CAAA,aAAA,CAAC,QAAK,SAAA,CAAU,oBAAA,CAAA,CACbH,CAAAA,CACCH,GAAAA,EAAcQ,CAAAA,CAAK,KAAA,CAAM,OACrBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CACXA,CAAAA,CAAK,KAAA,CAAM,OAAA,CACfA,EAAK,QACP,CACF,CAAA,CACAF,CAAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAU,4BAAA,CAAA,CAA6B,GAAA,CACzCE,CAAAA,CAAK,MAAA,GAAWR,GAAAA,CAAa,MAAA,CAAS,QAC1C,CACF,CACF,CAAA,CAEAM,CAAAA,CAAA,aAAA,CAAC,IAAA,CAAA,CAAG,UAAU,gBAAA,CAAA,CACXE,CAAAA,CAAK,QAAA,CAAS,GAAA,CAAKE,CAAAA,EAClBJ,CAAAA,CAAA,aAAA,CAAC,IAAA,CAAA,CAAG,GAAA,CAAKI,CAAAA,CAAQ,EAAA,CAAI,SAAA,CAAU,yBAAA,CAAA,CAC7BJ,CAAAA,CAAA,cAAC,MAAA,CAAA,CACC,SAAA,CAAWC,CAAAA,CACT,+DAAA,CACAG,CAAAA,CAAQ,QAAA,CACJ,kCACA,gCACN,CAAA,CAAA,CAECA,CAAAA,CAAQ,QAAA,CAAW,QAAA,CAAM,QAC5B,EACAJ,CAAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWC,CAAAA,CACf,SAAA,CACA,CAACG,CAAAA,CAAQ,QAAA,EAAY,oCACvB,CAAA,CAAA,CACGA,CAAAA,CAAQ,IACX,CACF,CACD,CACH,CAAA,CAEAJ,CAAAA,CAAA,aAAA,CAAC,QAAA,CAAA,CACC,UAAWC,CAAAA,CACT,2DAAA,CACAC,CAAAA,CAAK,OAAA,CACD,wDAAA,CACA,kDACN,EACA,OAAA,CAASA,CAAAA,CAAK,GAAA,CAAI,OAAA,CAAA,CAEjBA,CAAAA,CAAK,GAAA,CAAI,IACZ,CACF,CACD,CACH,CACF,CACF,CAEJ","file":"chunk-44HISN45.js","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst pricingVariants = cva(\n 'py-16 md:py-24',\n {\n variants: {\n variant: {\n default: 'bg-background',\n muted: 'bg-muted/30',\n accent: 'bg-accent/10',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingGridVariants = cva(\n 'grid gap-8',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1 max-w-md mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto',\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n);\n\nconst pricingCardVariants = cva(\n 'relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border-border',\n accent: 'border-accent/20 bg-accent/5',\n popular: 'border-primary/20 bg-primary/5 ring-2 ring-primary/10',\n muted: 'border-muted bg-muted/20',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingBadgeVariants = cva(\n 'absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n success: 'bg-success-100 text-success-800',\n warning: 'bg-warning-100 text-warning-800',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>['variant'];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>['columns'];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n ...props\n}) => {\n const formatPrice = (price: number, currency = 'USD') => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n \n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-8\">\n <span className={cn('text-sm', !showYearly && 'text-foreground font-medium')}>\n Monthly\n </span>\n <button\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',\n showYearly ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n <span className={cn('text-sm', showYearly && 'text-foreground font-medium')}>\n Yearly\n <span className=\"ml-1 text-xs text-success-600\">\n (Save 20%)\n </span>\n </span>\n </div>\n )}\n </div>\n )}\n \n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({ \n variant: plan.popular ? 'popular' : 'default' \n }),\n plan.popular && 'scale-105'\n )}\n >\n {plan.badge && (\n <div className={cn(pricingBadgeVariants({ variant: plan.badge.variant }))}>\n {plan.badge.text}\n </div>\n )}\n \n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n showYearly && plan.price.yearly \n ? plan.price.yearly \n : plan.price.monthly,\n plan.currency\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{plan.period || (showYearly ? 'year' : 'month')}\n </span>\n </div>\n </div>\n \n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n 'w-5 h-5 rounded-full flex items-center justify-center text-xs',\n feature.included\n ? 'bg-success-100 text-success-600'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {feature.included ? '✓' : '✗'}\n </span>\n <span className={cn(\n 'text-sm',\n !feature.included && 'text-muted-foreground line-through'\n )}>\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n \n <button\n className={cn(\n 'w-full py-3 px-4 rounded-lg font-medium transition-colors',\n plan.popular\n ? 'bg-primary text-primary-foreground hover:bg-primary/90'\n : 'bg-muted text-muted-foreground hover:bg-muted/80'\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
|
package/dist/chunk-F6CQ5ODU.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import {b}from'./chunk-O2VT23LK.js';import {a}from'./chunk-AC2JBXHQ.js';import e,{useState,useCallback}from'react';import {cva}from'class-variance-authority';var S=cva("grid gap-4",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6"},spacing:{sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"}},defaultVariants:{columns:3,spacing:"md"}}),q=cva("relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg",{variants:{aspectRatio:{square:"aspect-square",video:"aspect-video",portrait:"aspect-[3/4]",landscape:"aspect-[4/3]",wide:"aspect-[16/9]"},hover:{none:"",scale:"hover:scale-105",zoom:"hover:scale-110",lift:"hover:-translate-y-2"}},defaultVariants:{aspectRatio:"square",hover:"scale"}}),A=cva("fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm",{variants:{animation:{fade:"animate-in fade-in duration-300",slide:"animate-in slide-in-from-bottom duration-300",zoom:"animate-in zoom-in duration-300"}},defaultVariants:{animation:"fade"}}),B=({images:a$1,className:y,itemClassName:k,columns:w=3,spacing:N="md",showLightbox:g=true,lightboxAnimation:I="fade",onImageClick:v,itemHover:V="scale",itemAspectRatio:C="square",showThumbnails:z=false,thumbnailSize:D="md",...P})=>{let[l,r]=useState(null),[i,n]=useState(-1),f=useCallback((t,s)=>{g&&(r(t),n(s)),v?.(t,s);},[g,v]),d=useCallback(()=>{r(null),n(-1);},[]),b$1=useCallback(()=>{if(i>0){let t=i-1;r(a$1[t]||null),n(t);}},[i,a$1]),p=useCallback(()=>{if(i<a$1.length-1){let t=i+1;r(a$1[t]||null),n(t);}},[i,a$1]),G=useCallback(t=>{t.key==="Escape"?d():t.key==="ArrowLeft"?b$1():t.key==="ArrowRight"&&p();},[d,b$1,p]);return e.createElement(e.Fragment,null,e.createElement("div",{className:a(S({columns:w,spacing:N}),y),...P},a$1.map((t,s)=>e.createElement("div",{key:t.id||s,className:a(q({aspectRatio:C,hover:V}),k),role:"button",tabIndex:0,onClick:()=>f(t,s),onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),f(t,s));},"aria-label":`View image ${s+1}: ${t.alt}`},e.createElement("img",{src:z&&t.thumbnail?t.thumbnail:t.src,alt:t.alt,className:"w-full h-full object-cover",loading:"lazy"}),(t.title||t.description)&&e.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e.createElement("div",{className:"p-4 text-white"},t.title&&e.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),l&&g&&e.createElement("div",{className:a(A({animation:I})),onClick:d,onKeyDown:G,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"lightbox-title"},e.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e.createElement("img",{src:l.src,alt:l.alt,className:"max-w-full max-h-full object-contain rounded-lg",id:"lightbox-title"}),(l.title||l.description)&&e.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},l.title&&e.createElement("h3",{className:"font-semibold text-lg mb-2"},l.title),l.description&&e.createElement("p",{className:"text-sm text-white/80"},l.description)),a$1.length>1&&e.createElement(e.Fragment,null,i>0&&e.createElement(b,{variant:"ghost",size:"sm",className:"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:b$1,"aria-label":"Previous image"},"\u2190"),i<a$1.length-1&&e.createElement(b,{variant:"ghost",size:"sm",className:"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:p,"aria-label":"Next image"},"\u2192")),e.createElement(b,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white",onClick:d,"aria-label":"Close lightbox"},"\u2715"),a$1.length>1&&e.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},i+1," / ",a$1.length))))},F=B;export{B as a,F as b};//# sourceMappingURL=chunk-F6CQ5ODU.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-F6CQ5ODU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/marketing/gallery.tsx"],"names":["galleryVariants","cva","galleryItemVariants","lightboxVariants","Gallery","images","className","itemClassName","columns","spacing","showLightbox","lightboxAnimation","onImageClick","itemHover","itemAspectRatio","showThumbnails","_thumbnailSize","props","selectedImage","setSelectedImage","useState","selectedIndex","setSelectedIndex","handleImageClick","useCallback","image","index","handleCloseLightbox","handlePrevious","newIndex","handleNext","handleKeyDown","e","React","cn","Button","gallery_default"],"mappings":"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","file":"chunk-F6CQ5ODU.js","sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../components/core/button';\n\nconst galleryVariants = cva(\n 'grid gap-4',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n },\n spacing: {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n columns: 3,\n spacing: 'md',\n },\n }\n);\n\nconst galleryItemVariants = cva(\n 'relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg',\n {\n variants: {\n aspectRatio: {\n square: 'aspect-square',\n video: 'aspect-video',\n portrait: 'aspect-[3/4]',\n landscape: 'aspect-[4/3]',\n wide: 'aspect-[16/9]',\n },\n hover: {\n none: '',\n scale: 'hover:scale-105',\n zoom: 'hover:scale-110',\n lift: 'hover:-translate-y-2',\n },\n },\n defaultVariants: {\n aspectRatio: 'square',\n hover: 'scale',\n },\n }\n);\n\nconst lightboxVariants = cva(\n 'fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm',\n {\n variants: {\n animation: {\n fade: 'animate-in fade-in duration-300',\n slide: 'animate-in slide-in-from-bottom duration-300',\n zoom: 'animate-in zoom-in duration-300',\n },\n },\n defaultVariants: {\n animation: 'fade',\n },\n }\n);\n\nexport interface GalleryImage {\n id: string;\n src: string;\n alt: string;\n title?: string;\n description?: string;\n thumbnail?: string;\n}\n\nexport interface GalleryProps extends VariantProps<typeof galleryVariants> {\n images: GalleryImage[];\n className?: string;\n itemClassName?: string;\n showLightbox?: boolean;\n lightboxAnimation?: VariantProps<typeof lightboxVariants>['animation'];\n onImageClick?: (image: GalleryImage, index: number) => void;\n itemHover?: VariantProps<typeof galleryItemVariants>['hover'];\n itemAspectRatio?: VariantProps<typeof galleryItemVariants>['aspectRatio'];\n showThumbnails?: boolean;\n thumbnailSize?: 'sm' | 'md' | 'lg';\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n images,\n className,\n itemClassName,\n columns = 3,\n spacing = 'md',\n showLightbox = true,\n lightboxAnimation = 'fade',\n onImageClick,\n itemHover = 'scale',\n itemAspectRatio = 'square',\n showThumbnails = false,\n thumbnailSize: _thumbnailSize = 'md',\n ...props\n}) => {\n const [selectedImage, setSelectedImage] = useState<GalleryImage | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number>(-1);\n\n const handleImageClick = useCallback((image: GalleryImage, index: number) => {\n if (showLightbox) {\n setSelectedImage(image);\n setSelectedIndex(index);\n }\n onImageClick?.(image, index);\n }, [showLightbox, onImageClick]);\n\n const handleCloseLightbox = useCallback(() => {\n setSelectedImage(null);\n setSelectedIndex(-1);\n }, []);\n\n const handlePrevious = useCallback(() => {\n if (selectedIndex > 0) {\n const newIndex = selectedIndex - 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleNext = useCallback(() => {\n if (selectedIndex < images.length - 1) {\n const newIndex = selectedIndex + 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleCloseLightbox();\n } else if (e.key === 'ArrowLeft') {\n handlePrevious();\n } else if (e.key === 'ArrowRight') {\n handleNext();\n }\n }, [handleCloseLightbox, handlePrevious, handleNext]);\n\n return (\n <>\n <div \n className={cn(galleryVariants({ columns, spacing }), className)}\n {...props}\n >\n {images.map((image, index) => (\n <div\n key={image.id || index}\n className={cn(\n galleryItemVariants({ \n aspectRatio: itemAspectRatio, \n hover: itemHover \n }),\n itemClassName\n )}\n role=\"button\"\n tabIndex={0}\n onClick={() => handleImageClick(image, index)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleImageClick(image, index);\n }\n }}\n aria-label={`View image ${index + 1}: ${image.alt}`}\n >\n <img\n src={showThumbnails && image.thumbnail ? image.thumbnail : image.src}\n alt={image.alt}\n className=\"w-full h-full object-cover\"\n loading=\"lazy\"\n />\n {(image.title || image.description) && (\n <div className=\"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end\">\n <div className=\"p-4 text-white\">\n {image.title && (\n <h3 className=\"font-semibold text-sm sm:text-base\">\n {image.title}\n </h3>\n )}\n {image.description && (\n <p className=\"text-xs sm:text-sm text-white/80 mt-1\">\n {image.description}\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {selectedImage && showLightbox && (\n <div\n className={cn(lightboxVariants({ animation: lightboxAnimation }))}\n onClick={handleCloseLightbox}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"lightbox-title\"\n >\n <div \n className=\"relative max-w-4xl max-h-[90vh] mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImage.src}\n alt={selectedImage.alt}\n className=\"max-w-full max-h-full object-contain rounded-lg\"\n id=\"lightbox-title\"\n />\n \n {(selectedImage.title || selectedImage.description) && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg\">\n {selectedImage.title && (\n <h3 className=\"font-semibold text-lg mb-2\">\n {selectedImage.title}\n </h3>\n )}\n {selectedImage.description && (\n <p className=\"text-sm text-white/80\">\n {selectedImage.description}\n </p>\n )}\n </div>\n )}\n\n {/* Navigation buttons */}\n {images.length > 1 && (\n <>\n {selectedIndex > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handlePrevious}\n aria-label=\"Previous image\"\n >\n ←\n </Button>\n )}\n {selectedIndex < images.length - 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleNext}\n aria-label=\"Next image\"\n >\n →\n </Button>\n )}\n </>\n )}\n\n {/* Close button */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleCloseLightbox}\n aria-label=\"Close lightbox\"\n >\n ✕\n </Button>\n\n {/* Image counter */}\n {images.length > 1 && (\n <div className=\"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm\">\n {selectedIndex + 1} / {images.length}\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Gallery;\n"]}
|
package/dist/chunk-GEMIO54B.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';var chunk6UIT6XQH_cjs=require('./chunk-6UIT6XQH.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var e__default=/*#__PURE__*/_interopDefault(e);var S=classVarianceAuthority.cva("grid gap-4",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6"},spacing:{sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"}},defaultVariants:{columns:3,spacing:"md"}}),q=classVarianceAuthority.cva("relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg",{variants:{aspectRatio:{square:"aspect-square",video:"aspect-video",portrait:"aspect-[3/4]",landscape:"aspect-[4/3]",wide:"aspect-[16/9]"},hover:{none:"",scale:"hover:scale-105",zoom:"hover:scale-110",lift:"hover:-translate-y-2"}},defaultVariants:{aspectRatio:"square",hover:"scale"}}),A=classVarianceAuthority.cva("fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm",{variants:{animation:{fade:"animate-in fade-in duration-300",slide:"animate-in slide-in-from-bottom duration-300",zoom:"animate-in zoom-in duration-300"}},defaultVariants:{animation:"fade"}}),B=({images:a,className:y,itemClassName:k,columns:w=3,spacing:N="md",showLightbox:g=true,lightboxAnimation:I="fade",onImageClick:v,itemHover:V="scale",itemAspectRatio:C="square",showThumbnails:z=false,thumbnailSize:D="md",...P})=>{let[l,r]=e.useState(null),[i,n]=e.useState(-1),f=e.useCallback((t,s)=>{g&&(r(t),n(s)),v?.(t,s);},[g,v]),d=e.useCallback(()=>{r(null),n(-1);},[]),b=e.useCallback(()=>{if(i>0){let t=i-1;r(a[t]||null),n(t);}},[i,a]),p=e.useCallback(()=>{if(i<a.length-1){let t=i+1;r(a[t]||null),n(t);}},[i,a]),G=e.useCallback(t=>{t.key==="Escape"?d():t.key==="ArrowLeft"?b():t.key==="ArrowRight"&&p();},[d,b,p]);return e__default.default.createElement(e__default.default.Fragment,null,e__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(S({columns:w,spacing:N}),y),...P},a.map((t,s)=>e__default.default.createElement("div",{key:t.id||s,className:chunkITRGJNWL_cjs.a(q({aspectRatio:C,hover:V}),k),role:"button",tabIndex:0,onClick:()=>f(t,s),onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),f(t,s));},"aria-label":`View image ${s+1}: ${t.alt}`},e__default.default.createElement("img",{src:z&&t.thumbnail?t.thumbnail:t.src,alt:t.alt,className:"w-full h-full object-cover",loading:"lazy"}),(t.title||t.description)&&e__default.default.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e__default.default.createElement("div",{className:"p-4 text-white"},t.title&&e__default.default.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e__default.default.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),l&&g&&e__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(A({animation:I})),onClick:d,onKeyDown:G,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"lightbox-title"},e__default.default.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e__default.default.createElement("img",{src:l.src,alt:l.alt,className:"max-w-full max-h-full object-contain rounded-lg",id:"lightbox-title"}),(l.title||l.description)&&e__default.default.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},l.title&&e__default.default.createElement("h3",{className:"font-semibold text-lg mb-2"},l.title),l.description&&e__default.default.createElement("p",{className:"text-sm text-white/80"},l.description)),a.length>1&&e__default.default.createElement(e__default.default.Fragment,null,i>0&&e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:b,"aria-label":"Previous image"},"\u2190"),i<a.length-1&&e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:p,"aria-label":"Next image"},"\u2192")),e__default.default.createElement(chunk6UIT6XQH_cjs.b,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white",onClick:d,"aria-label":"Close lightbox"},"\u2715"),a.length>1&&e__default.default.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},i+1," / ",a.length))))},F=B;exports.a=B;exports.b=F;//# sourceMappingURL=chunk-GEMIO54B.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-GEMIO54B.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/marketing/gallery.tsx"],"names":["galleryVariants","cva","galleryItemVariants","lightboxVariants","Gallery","images","className","itemClassName","columns","spacing","showLightbox","lightboxAnimation","onImageClick","itemHover","itemAspectRatio","showThumbnails","_thumbnailSize","props","selectedImage","setSelectedImage","useState","selectedIndex","setSelectedIndex","handleImageClick","useCallback","image","index","handleCloseLightbox","handlePrevious","newIndex","handleNext","handleKeyDown","e","React","cn","Button","gallery_default"],"mappings":"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","file":"chunk-GEMIO54B.cjs","sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../components/core/button';\n\nconst galleryVariants = cva(\n 'grid gap-4',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n },\n spacing: {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n columns: 3,\n spacing: 'md',\n },\n }\n);\n\nconst galleryItemVariants = cva(\n 'relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg',\n {\n variants: {\n aspectRatio: {\n square: 'aspect-square',\n video: 'aspect-video',\n portrait: 'aspect-[3/4]',\n landscape: 'aspect-[4/3]',\n wide: 'aspect-[16/9]',\n },\n hover: {\n none: '',\n scale: 'hover:scale-105',\n zoom: 'hover:scale-110',\n lift: 'hover:-translate-y-2',\n },\n },\n defaultVariants: {\n aspectRatio: 'square',\n hover: 'scale',\n },\n }\n);\n\nconst lightboxVariants = cva(\n 'fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm',\n {\n variants: {\n animation: {\n fade: 'animate-in fade-in duration-300',\n slide: 'animate-in slide-in-from-bottom duration-300',\n zoom: 'animate-in zoom-in duration-300',\n },\n },\n defaultVariants: {\n animation: 'fade',\n },\n }\n);\n\nexport interface GalleryImage {\n id: string;\n src: string;\n alt: string;\n title?: string;\n description?: string;\n thumbnail?: string;\n}\n\nexport interface GalleryProps extends VariantProps<typeof galleryVariants> {\n images: GalleryImage[];\n className?: string;\n itemClassName?: string;\n showLightbox?: boolean;\n lightboxAnimation?: VariantProps<typeof lightboxVariants>['animation'];\n onImageClick?: (image: GalleryImage, index: number) => void;\n itemHover?: VariantProps<typeof galleryItemVariants>['hover'];\n itemAspectRatio?: VariantProps<typeof galleryItemVariants>['aspectRatio'];\n showThumbnails?: boolean;\n thumbnailSize?: 'sm' | 'md' | 'lg';\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n images,\n className,\n itemClassName,\n columns = 3,\n spacing = 'md',\n showLightbox = true,\n lightboxAnimation = 'fade',\n onImageClick,\n itemHover = 'scale',\n itemAspectRatio = 'square',\n showThumbnails = false,\n thumbnailSize: _thumbnailSize = 'md',\n ...props\n}) => {\n const [selectedImage, setSelectedImage] = useState<GalleryImage | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number>(-1);\n\n const handleImageClick = useCallback((image: GalleryImage, index: number) => {\n if (showLightbox) {\n setSelectedImage(image);\n setSelectedIndex(index);\n }\n onImageClick?.(image, index);\n }, [showLightbox, onImageClick]);\n\n const handleCloseLightbox = useCallback(() => {\n setSelectedImage(null);\n setSelectedIndex(-1);\n }, []);\n\n const handlePrevious = useCallback(() => {\n if (selectedIndex > 0) {\n const newIndex = selectedIndex - 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleNext = useCallback(() => {\n if (selectedIndex < images.length - 1) {\n const newIndex = selectedIndex + 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleCloseLightbox();\n } else if (e.key === 'ArrowLeft') {\n handlePrevious();\n } else if (e.key === 'ArrowRight') {\n handleNext();\n }\n }, [handleCloseLightbox, handlePrevious, handleNext]);\n\n return (\n <>\n <div \n className={cn(galleryVariants({ columns, spacing }), className)}\n {...props}\n >\n {images.map((image, index) => (\n <div\n key={image.id || index}\n className={cn(\n galleryItemVariants({ \n aspectRatio: itemAspectRatio, \n hover: itemHover \n }),\n itemClassName\n )}\n role=\"button\"\n tabIndex={0}\n onClick={() => handleImageClick(image, index)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleImageClick(image, index);\n }\n }}\n aria-label={`View image ${index + 1}: ${image.alt}`}\n >\n <img\n src={showThumbnails && image.thumbnail ? image.thumbnail : image.src}\n alt={image.alt}\n className=\"w-full h-full object-cover\"\n loading=\"lazy\"\n />\n {(image.title || image.description) && (\n <div className=\"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end\">\n <div className=\"p-4 text-white\">\n {image.title && (\n <h3 className=\"font-semibold text-sm sm:text-base\">\n {image.title}\n </h3>\n )}\n {image.description && (\n <p className=\"text-xs sm:text-sm text-white/80 mt-1\">\n {image.description}\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {selectedImage && showLightbox && (\n <div\n className={cn(lightboxVariants({ animation: lightboxAnimation }))}\n onClick={handleCloseLightbox}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"lightbox-title\"\n >\n <div \n className=\"relative max-w-4xl max-h-[90vh] mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImage.src}\n alt={selectedImage.alt}\n className=\"max-w-full max-h-full object-contain rounded-lg\"\n id=\"lightbox-title\"\n />\n \n {(selectedImage.title || selectedImage.description) && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg\">\n {selectedImage.title && (\n <h3 className=\"font-semibold text-lg mb-2\">\n {selectedImage.title}\n </h3>\n )}\n {selectedImage.description && (\n <p className=\"text-sm text-white/80\">\n {selectedImage.description}\n </p>\n )}\n </div>\n )}\n\n {/* Navigation buttons */}\n {images.length > 1 && (\n <>\n {selectedIndex > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handlePrevious}\n aria-label=\"Previous image\"\n >\n ←\n </Button>\n )}\n {selectedIndex < images.length - 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleNext}\n aria-label=\"Next image\"\n >\n →\n </Button>\n )}\n </>\n )}\n\n {/* Close button */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleCloseLightbox}\n aria-label=\"Close lightbox\"\n >\n ✕\n </Button>\n\n {/* Image counter */}\n {images.length > 1 && (\n <div className=\"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm\">\n {selectedIndex + 1} / {images.length}\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Gallery;\n"]}
|
package/dist/chunk-OEN63W3G.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var f=classVarianceAuthority.cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),b=classVarianceAuthority.cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),v=classVarianceAuthority.cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),y=classVarianceAuthority.cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}}),h=({plans:c,title:s,subtitle:o,columns:l,variant:u,className:g,showYearly:a=false,onToggleBilling:m,...p})=>{let x=(t,d="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:d,minimumFractionDigits:0}).format(t);return r__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a(f({variant:u}),g),...p},r__default.default.createElement("div",{className:"container mx-auto px-4"},(s||o)&&r__default.default.createElement("div",{className:"text-center mb-12"},s&&r__default.default.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},s),o&&r__default.default.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8"},o),m&&r__default.default.createElement("div",{className:"flex items-center justify-center gap-4 mb-8"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!a&&"text-foreground font-medium")},"Monthly"),r__default.default.createElement("button",{onClick:()=>m(!a),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",a?"translate-x-6":"translate-x-1")})),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",a&&"text-foreground font-medium")},"Yearly",r__default.default.createElement("span",{className:"ml-1 text-xs text-success-600"},"(Save 20%)")))),r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(b({columns:l}))},c.map((t,d)=>r__default.default.createElement("div",{key:t.id||d,className:chunkITRGJNWL_cjs.a(v({variant:t.popular?"popular":"default"}),t.popular&&"scale-105")},t.badge&&r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(y({variant:t.badge.variant}))},t.badge.text),r__default.default.createElement("div",{className:"text-center mb-6"},r__default.default.createElement("h3",{className:"text-2xl font-bold mb-2"},t.name),t.description&&r__default.default.createElement("p",{className:"text-muted-foreground text-sm mb-4"},t.description),r__default.default.createElement("div",{className:"mb-4"},r__default.default.createElement("span",{className:"text-4xl font-bold"},x(a&&t.price.yearly?t.price.yearly:t.price.monthly,t.currency)),r__default.default.createElement("span",{className:"text-muted-foreground ml-1"},"/",t.period||(a?"year":"month")))),r__default.default.createElement("ul",{className:"space-y-3 mb-8"},t.features.map(n=>r__default.default.createElement("li",{key:n.id,className:"flex items-center gap-3"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("w-5 h-5 rounded-full flex items-center justify-center text-xs",n.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},n.included?"\u2713":"\u2717"),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!n.included&&"text-muted-foreground line-through")},n.name)))),r__default.default.createElement("button",{className:chunkITRGJNWL_cjs.a("w-full py-3 px-4 rounded-lg font-medium transition-colors",t.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:t.cta.onClick},t.cta.text))))))};exports.a=h;//# sourceMappingURL=chunk-OEN63W3G.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-OEN63W3G.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","Pricing","plans","title","subtitle","columns","variant","className","showYearly","onToggleBilling","props","formatPrice","price","currency","React","cn","plan","idx","feature"],"mappings":"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","file":"chunk-OEN63W3G.cjs","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst pricingVariants = cva(\n 'py-16 md:py-24',\n {\n variants: {\n variant: {\n default: 'bg-background',\n muted: 'bg-muted/30',\n accent: 'bg-accent/10',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingGridVariants = cva(\n 'grid gap-8',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1 max-w-md mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto',\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n);\n\nconst pricingCardVariants = cva(\n 'relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border-border',\n accent: 'border-accent/20 bg-accent/5',\n popular: 'border-primary/20 bg-primary/5 ring-2 ring-primary/10',\n muted: 'border-muted bg-muted/20',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingBadgeVariants = cva(\n 'absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n success: 'bg-success-100 text-success-800',\n warning: 'bg-warning-100 text-warning-800',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>['variant'];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>['columns'];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n ...props\n}) => {\n const formatPrice = (price: number, currency = 'USD') => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n \n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-8\">\n <span className={cn('text-sm', !showYearly && 'text-foreground font-medium')}>\n Monthly\n </span>\n <button\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',\n showYearly ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n <span className={cn('text-sm', showYearly && 'text-foreground font-medium')}>\n Yearly\n <span className=\"ml-1 text-xs text-success-600\">\n (Save 20%)\n </span>\n </span>\n </div>\n )}\n </div>\n )}\n \n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({ \n variant: plan.popular ? 'popular' : 'default' \n }),\n plan.popular && 'scale-105'\n )}\n >\n {plan.badge && (\n <div className={cn(pricingBadgeVariants({ variant: plan.badge.variant }))}>\n {plan.badge.text}\n </div>\n )}\n \n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n showYearly && plan.price.yearly \n ? plan.price.yearly \n : plan.price.monthly,\n plan.currency\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{plan.period || (showYearly ? 'year' : 'month')}\n </span>\n </div>\n </div>\n \n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n 'w-5 h-5 rounded-full flex items-center justify-center text-xs',\n feature.included\n ? 'bg-success-100 text-success-600'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {feature.included ? '✓' : '✗'}\n </span>\n <span className={cn(\n 'text-sm',\n !feature.included && 'text-muted-foreground line-through'\n )}>\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n \n <button\n className={cn(\n 'w-full py-3 px-4 rounded-lg font-medium transition-colors',\n plan.popular\n ? 'bg-primary text-primary-foreground hover:bg-primary/90'\n : 'bg-muted text-muted-foreground hover:bg-muted/80'\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
|