@shipsite.dev/components 0.1.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.
Files changed (190) hide show
  1. package/components.json +532 -0
  2. package/dist/blog/BlogArticle.d.ts +8 -0
  3. package/dist/blog/BlogArticle.d.ts.map +1 -0
  4. package/dist/blog/BlogArticle.js +5 -0
  5. package/dist/blog/BlogArticle.js.map +1 -0
  6. package/dist/blog/BlogCTA.d.ts +8 -0
  7. package/dist/blog/BlogCTA.d.ts.map +1 -0
  8. package/dist/blog/BlogCTA.js +6 -0
  9. package/dist/blog/BlogCTA.js.map +1 -0
  10. package/dist/blog/BlogCTABanner.d.ts +9 -0
  11. package/dist/blog/BlogCTABanner.d.ts.map +1 -0
  12. package/dist/blog/BlogCTABanner.js +7 -0
  13. package/dist/blog/BlogCTABanner.js.map +1 -0
  14. package/dist/blog/BlogFAQ.d.ts +10 -0
  15. package/dist/blog/BlogFAQ.d.ts.map +1 -0
  16. package/dist/blog/BlogFAQ.js +7 -0
  17. package/dist/blog/BlogFAQ.js.map +1 -0
  18. package/dist/blog/BlogIndex.d.ts +9 -0
  19. package/dist/blog/BlogIndex.d.ts.map +1 -0
  20. package/dist/blog/BlogIndex.js +6 -0
  21. package/dist/blog/BlogIndex.js.map +1 -0
  22. package/dist/blog/BlogIntro.d.ts +5 -0
  23. package/dist/blog/BlogIntro.d.ts.map +1 -0
  24. package/dist/blog/BlogIntro.js +5 -0
  25. package/dist/blog/BlogIntro.js.map +1 -0
  26. package/dist/blog/BlogTable.d.ts +7 -0
  27. package/dist/blog/BlogTable.d.ts.map +1 -0
  28. package/dist/blog/BlogTable.js +5 -0
  29. package/dist/blog/BlogTable.js.map +1 -0
  30. package/dist/blog/BlogTip.d.ts +8 -0
  31. package/dist/blog/BlogTip.d.ts.map +1 -0
  32. package/dist/blog/BlogTip.js +5 -0
  33. package/dist/blog/BlogTip.js.map +1 -0
  34. package/dist/blog/StartFreeNowCTA.d.ts +9 -0
  35. package/dist/blog/StartFreeNowCTA.d.ts.map +1 -0
  36. package/dist/blog/StartFreeNowCTA.js +7 -0
  37. package/dist/blog/StartFreeNowCTA.js.map +1 -0
  38. package/dist/context/ShipSiteProvider.d.ts +54 -0
  39. package/dist/context/ShipSiteProvider.d.ts.map +1 -0
  40. package/dist/context/ShipSiteProvider.js +33 -0
  41. package/dist/context/ShipSiteProvider.js.map +1 -0
  42. package/dist/context/ThemeProvider.d.ts +5 -0
  43. package/dist/context/ThemeProvider.d.ts.map +1 -0
  44. package/dist/context/ThemeProvider.js +15 -0
  45. package/dist/context/ThemeProvider.js.map +1 -0
  46. package/dist/index.d.ts +36 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +42 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/layout/Footer.d.ts +2 -0
  51. package/dist/layout/Footer.d.ts.map +1 -0
  52. package/dist/layout/Footer.js +11 -0
  53. package/dist/layout/Footer.js.map +1 -0
  54. package/dist/layout/Header.d.ts +2 -0
  55. package/dist/layout/Header.d.ts.map +1 -0
  56. package/dist/layout/Header.js +15 -0
  57. package/dist/layout/Header.js.map +1 -0
  58. package/dist/legal/LegalPage.d.ts +14 -0
  59. package/dist/legal/LegalPage.d.ts.map +1 -0
  60. package/dist/legal/LegalPage.js +8 -0
  61. package/dist/legal/LegalPage.js.map +1 -0
  62. package/dist/lib/utils.d.ts +3 -0
  63. package/dist/lib/utils.d.ts.map +1 -0
  64. package/dist/lib/utils.js +6 -0
  65. package/dist/lib/utils.js.map +1 -0
  66. package/dist/marketing/AlternatingFeatures.d.ts +24 -0
  67. package/dist/marketing/AlternatingFeatures.d.ts.map +1 -0
  68. package/dist/marketing/AlternatingFeatures.js +13 -0
  69. package/dist/marketing/AlternatingFeatures.js.map +1 -0
  70. package/dist/marketing/BannerCTA.d.ts +15 -0
  71. package/dist/marketing/BannerCTA.d.ts.map +1 -0
  72. package/dist/marketing/BannerCTA.js +11 -0
  73. package/dist/marketing/BannerCTA.js.map +1 -0
  74. package/dist/marketing/BentoGrid.d.ts +17 -0
  75. package/dist/marketing/BentoGrid.d.ts.map +1 -0
  76. package/dist/marketing/BentoGrid.js +10 -0
  77. package/dist/marketing/BentoGrid.js.map +1 -0
  78. package/dist/marketing/CalloutCard.d.ts +10 -0
  79. package/dist/marketing/CalloutCard.d.ts.map +1 -0
  80. package/dist/marketing/CalloutCard.js +11 -0
  81. package/dist/marketing/CalloutCard.js.map +1 -0
  82. package/dist/marketing/CardGrid.d.ts +15 -0
  83. package/dist/marketing/CardGrid.d.ts.map +1 -0
  84. package/dist/marketing/CardGrid.js +10 -0
  85. package/dist/marketing/CardGrid.js.map +1 -0
  86. package/dist/marketing/Carousel.d.ts +16 -0
  87. package/dist/marketing/Carousel.d.ts.map +1 -0
  88. package/dist/marketing/Carousel.js +22 -0
  89. package/dist/marketing/Carousel.js.map +1 -0
  90. package/dist/marketing/Companies.d.ts +16 -0
  91. package/dist/marketing/Companies.d.ts.map +1 -0
  92. package/dist/marketing/Companies.js +11 -0
  93. package/dist/marketing/Companies.js.map +1 -0
  94. package/dist/marketing/FAQ.d.ts +14 -0
  95. package/dist/marketing/FAQ.d.ts.map +1 -0
  96. package/dist/marketing/FAQ.js +11 -0
  97. package/dist/marketing/FAQ.js.map +1 -0
  98. package/dist/marketing/Features.d.ts +16 -0
  99. package/dist/marketing/Features.d.ts.map +1 -0
  100. package/dist/marketing/Features.js +10 -0
  101. package/dist/marketing/Features.js.map +1 -0
  102. package/dist/marketing/Gallery.d.ts +16 -0
  103. package/dist/marketing/Gallery.d.ts.map +1 -0
  104. package/dist/marketing/Gallery.js +15 -0
  105. package/dist/marketing/Gallery.js.map +1 -0
  106. package/dist/marketing/Hero.d.ts +19 -0
  107. package/dist/marketing/Hero.d.ts.map +1 -0
  108. package/dist/marketing/Hero.js +10 -0
  109. package/dist/marketing/Hero.js.map +1 -0
  110. package/dist/marketing/PageHero.d.ts +10 -0
  111. package/dist/marketing/PageHero.d.ts.map +1 -0
  112. package/dist/marketing/PageHero.js +7 -0
  113. package/dist/marketing/PageHero.js.map +1 -0
  114. package/dist/marketing/PricingSection.d.ts +34 -0
  115. package/dist/marketing/PricingSection.d.ts.map +1 -0
  116. package/dist/marketing/PricingSection.js +41 -0
  117. package/dist/marketing/PricingSection.js.map +1 -0
  118. package/dist/marketing/SocialProof.d.ts +8 -0
  119. package/dist/marketing/SocialProof.d.ts.map +1 -0
  120. package/dist/marketing/SocialProof.js +6 -0
  121. package/dist/marketing/SocialProof.js.map +1 -0
  122. package/dist/marketing/Stats.d.ts +15 -0
  123. package/dist/marketing/Stats.d.ts.map +1 -0
  124. package/dist/marketing/Stats.js +16 -0
  125. package/dist/marketing/Stats.js.map +1 -0
  126. package/dist/marketing/Steps.d.ts +14 -0
  127. package/dist/marketing/Steps.d.ts.map +1 -0
  128. package/dist/marketing/Steps.js +16 -0
  129. package/dist/marketing/Steps.js.map +1 -0
  130. package/dist/marketing/TabsSection.d.ts +17 -0
  131. package/dist/marketing/TabsSection.d.ts.map +1 -0
  132. package/dist/marketing/TabsSection.js +22 -0
  133. package/dist/marketing/TabsSection.js.map +1 -0
  134. package/dist/marketing/Testimonial.d.ts +10 -0
  135. package/dist/marketing/Testimonial.d.ts.map +1 -0
  136. package/dist/marketing/Testimonial.js +6 -0
  137. package/dist/marketing/Testimonial.js.map +1 -0
  138. package/dist/marketing/Testimonials.d.ts +19 -0
  139. package/dist/marketing/Testimonials.d.ts.map +1 -0
  140. package/dist/marketing/Testimonials.js +10 -0
  141. package/dist/marketing/Testimonials.js.map +1 -0
  142. package/dist/ui/accordion.d.ts +8 -0
  143. package/dist/ui/accordion.d.ts.map +1 -0
  144. package/dist/ui/accordion.js +19 -0
  145. package/dist/ui/accordion.js.map +1 -0
  146. package/dist/ui/badge.d.ts +11 -0
  147. package/dist/ui/badge.d.ts.map +1 -0
  148. package/dist/ui/badge.js +30 -0
  149. package/dist/ui/badge.js.map +1 -0
  150. package/dist/ui/button.d.ts +11 -0
  151. package/dist/ui/button.d.ts.map +1 -0
  152. package/dist/ui/button.js +34 -0
  153. package/dist/ui/button.js.map +1 -0
  154. package/dist/ui/card.d.ts +9 -0
  155. package/dist/ui/card.d.ts.map +1 -0
  156. package/dist/ui/card.js +22 -0
  157. package/dist/ui/card.js.map +1 -0
  158. package/dist/ui/footer.d.ts +7 -0
  159. package/dist/ui/footer.d.ts.map +1 -0
  160. package/dist/ui/footer.js +16 -0
  161. package/dist/ui/footer.js.map +1 -0
  162. package/dist/ui/glow.d.ts +8 -0
  163. package/dist/ui/glow.d.ts.map +1 -0
  164. package/dist/ui/glow.js +22 -0
  165. package/dist/ui/glow.js.map +1 -0
  166. package/dist/ui/item.d.ts +7 -0
  167. package/dist/ui/item.d.ts.map +1 -0
  168. package/dist/ui/item.js +16 -0
  169. package/dist/ui/item.js.map +1 -0
  170. package/dist/ui/mockup.d.ts +16 -0
  171. package/dist/ui/mockup.d.ts.map +1 -0
  172. package/dist/ui/mockup.js +33 -0
  173. package/dist/ui/mockup.js.map +1 -0
  174. package/dist/ui/navbar.d.ts +7 -0
  175. package/dist/ui/navbar.d.ts.map +1 -0
  176. package/dist/ui/navbar.js +16 -0
  177. package/dist/ui/navbar.js.map +1 -0
  178. package/dist/ui/section.d.ts +4 -0
  179. package/dist/ui/section.d.ts.map +1 -0
  180. package/dist/ui/section.js +7 -0
  181. package/dist/ui/section.js.map +1 -0
  182. package/dist/ui/sheet.d.ts +14 -0
  183. package/dist/ui/sheet.d.ts.map +1 -0
  184. package/dist/ui/sheet.js +41 -0
  185. package/dist/ui/sheet.js.map +1 -0
  186. package/dist/ui/theme-toggle.d.ts +4 -0
  187. package/dist/ui/theme-toggle.d.ts.map +1 -0
  188. package/dist/ui/theme-toggle.js +17 -0
  189. package/dist/ui/theme-toggle.js.map +1 -0
  190. package/package.json +52 -0
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { Button } from '../ui/button';
4
+ import Glow from '../ui/glow';
5
+ export function BannerCTA({ title, buttonText, buttonHref, subtext, children }) {
6
+ return (_jsx(Section, { children: _jsx("div", { className: "container-main", children: _jsxs("div", { className: "relative overflow-hidden glass-4 rounded-3xl p-12 md:p-16 text-center", children: [_jsx(Glow, { variant: "center" }), _jsxs("div", { className: "relative z-10", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), subtext && _jsx("p", { className: "text-muted-foreground mb-8 max-w-xl mx-auto", children: subtext }), buttonHref && (_jsx(Button, { asChild: true, size: "lg", children: _jsx("a", { href: buttonHref, children: buttonText }) })), children] })] }) }) }));
7
+ }
8
+ export function BannerFeature({ title, icon }) {
9
+ return (_jsxs("div", { className: "flex items-center gap-2 text-muted-foreground text-sm", children: [icon && _jsx("span", { children: icon }), _jsx("span", { children: title })] }));
10
+ }
11
+ //# sourceMappingURL=BannerCTA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BannerCTA.js","sourceRoot":"","sources":["../../src/marketing/BannerCTA.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAU9B,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAkB;IAC5F,OAAO,CACL,KAAC,OAAO,cACN,cAAK,SAAS,EAAC,gBAAgB,YAC7B,eAAK,SAAS,EAAC,uEAAuE,aACpF,KAAC,IAAI,IAAC,OAAO,EAAC,QAAQ,GAAG,EACzB,eAAK,SAAS,EAAC,eAAe,aAC5B,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC/E,OAAO,IAAI,YAAG,SAAS,EAAC,6CAA6C,YAAE,OAAO,GAAK,EACnF,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,YAAG,UAAU,GAAK,GAC9B,CACV,EACA,QAAQ,IACL,IACF,GACF,GACE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAoC;IAC7E,OAAO,CACL,eAAK,SAAS,EAAC,uDAAuD,aACnE,IAAI,IAAI,yBAAO,IAAI,GAAQ,EAC5B,yBAAO,KAAK,GAAQ,IAChB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ interface BentoItemProps {
3
+ title: string;
4
+ description?: string;
5
+ image?: string;
6
+ span?: 1 | 2;
7
+ children?: React.ReactNode;
8
+ }
9
+ export declare function BentoItem({ title, description, image, span, children }: BentoItemProps): import("react/jsx-runtime").JSX.Element;
10
+ interface BentoGridProps {
11
+ title?: string;
12
+ description?: string;
13
+ children: React.ReactNode;
14
+ }
15
+ export declare function BentoGrid({ title, description, children }: BentoGridProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=BentoGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BentoGrid.d.ts","sourceRoot":"","sources":["../../src/marketing/BentoGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAQ,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAgB1F;AAED,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAczE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { cn } from '../lib/utils';
4
+ export function BentoItem({ title, description, image, span = 1, children }) {
5
+ return (_jsxs("div", { className: cn('glass-1 hover:glass-2 rounded-2xl p-6 md:p-8 transition-all overflow-hidden flex flex-col', span === 2 && 'md:col-span-2'), children: [_jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: title }), description && _jsx("p", { className: "text-sm text-muted-foreground mb-4 leading-relaxed", children: description }), image && (_jsx("div", { className: "mt-auto -mx-6 -mb-6 md:-mx-8 md:-mb-8", children: _jsx("img", { src: image, alt: title, className: "w-full" }) })), children] }));
6
+ }
7
+ export function BentoGrid({ title, description, children }) {
8
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6 auto-rows-fr", children: children })] }) }));
9
+ }
10
+ //# sourceMappingURL=BentoGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BentoGrid.js","sourceRoot":"","sources":["../../src/marketing/BentoGrid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAUlC,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAkB;IACzF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAChB,2FAA2F,EAC3F,IAAI,KAAK,CAAC,IAAI,eAAe,CAC9B,aACC,aAAI,SAAS,EAAC,4CAA4C,YAAE,KAAK,GAAM,EACtE,WAAW,IAAI,YAAG,SAAS,EAAC,oDAAoD,YAAE,WAAW,GAAK,EAClG,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,uCAAuC,YACpD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,QAAQ,GAAG,GAC9C,CACP,EACA,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAkB;IACxE,OAAO,CACL,KAAC,OAAO,cACN,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,cAAK,SAAS,EAAC,oDAAoD,YAAE,QAAQ,GAAO,IAChF,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface CalloutCardProps {
3
+ title: string;
4
+ description: string;
5
+ variant?: 'info' | 'success' | 'warning';
6
+ children?: React.ReactNode;
7
+ }
8
+ export declare function CalloutCard({ title, description, variant, children }: CalloutCardProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=CalloutCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalloutCard.d.ts","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAgB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAc/F"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../lib/utils';
3
+ export function CalloutCard({ title, description, variant = 'info', children }) {
4
+ const variantStyles = {
5
+ info: 'bg-primary/5 border-primary/20',
6
+ success: 'bg-emerald-50 border-emerald-200',
7
+ warning: 'bg-amber-50 border-amber-200',
8
+ };
9
+ return (_jsxs("div", { className: cn('rounded-xl border p-6 my-8', variantStyles[variant]), children: [_jsx("h3", { className: "font-semibold text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description }), children] }));
10
+ }
11
+ //# sourceMappingURL=CalloutCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalloutCard.js","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAoB;IAC9F,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,8BAA8B;KACxC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,aACtE,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,EAC7D,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface CardGridItemProps {
3
+ title: string;
4
+ description: string;
5
+ icon?: React.ReactNode;
6
+ href?: string;
7
+ }
8
+ export declare function CardGridItem({ title, description, icon, href }: CardGridItemProps): import("react/jsx-runtime").JSX.Element;
9
+ interface CardGridProps {
10
+ columns?: 2 | 3 | 4;
11
+ children: React.ReactNode;
12
+ }
13
+ export declare function CardGrid({ columns, children }: CardGridProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=CardGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardGrid.d.ts","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CASjF;AAED,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAGhE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function CardGridItem({ title, description, icon, href }) {
3
+ const Wrapper = href ? 'a' : 'div';
4
+ return (_jsxs(Wrapper, { ...(href ? { href } : {}), className: "block p-6 rounded-xl glass-1 hover:glass-2 transition-all", children: [icon && _jsx("div", { className: "mb-3 text-primary", children: icon }), _jsx("h3", { className: "font-semibold text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description })] }));
5
+ }
6
+ export function CardGrid({ columns = 3, children }) {
7
+ const gridCols = { 2: 'md:grid-cols-2', 3: 'md:grid-cols-3', 4: 'md:grid-cols-2 lg:grid-cols-4' };
8
+ return _jsx("div", { className: `grid grid-cols-1 ${gridCols[columns]} gap-6 py-8`, children: children });
9
+ }
10
+ //# sourceMappingURL=CardGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardGrid.js","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":";AASA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAqB;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACnC,OAAO,CACL,MAAC,OAAO,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAC,2DAA2D,aACvG,IAAI,IAAI,cAAK,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAO,EACxD,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IACtD,CACX,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiB;IAC/D,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAClG,OAAO,cAAK,SAAS,EAAE,oBAAoB,QAAQ,CAAC,OAAO,CAAC,aAAa,YAAG,QAAQ,GAAO,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ interface CarouselItemProps {
3
+ title?: string;
4
+ description?: string;
5
+ image?: string;
6
+ children?: React.ReactNode;
7
+ }
8
+ export declare function CarouselItem({ title, description, image, children }: CarouselItemProps): import("react/jsx-runtime").JSX.Element;
9
+ interface CarouselProps {
10
+ title?: string;
11
+ description?: string;
12
+ children: React.ReactNode;
13
+ }
14
+ export declare function Carousel({ title, description, children }: CarouselProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=Carousel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../src/marketing/Carousel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAKtC,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAWtF;AAED,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,2CA+CvE"}
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRef } from 'react';
4
+ import { ChevronLeft, ChevronRight } from 'lucide-react';
5
+ import { Section } from '../ui/section';
6
+ export function CarouselItem({ title, description, image, children }) {
7
+ return (_jsxs("div", { className: "glass-1 rounded-2xl overflow-hidden flex-shrink-0 w-[85vw] max-w-[400px] snap-center", children: [image && _jsx("img", { src: image, alt: title || '', className: "w-full aspect-video object-cover" }), _jsxs("div", { className: "p-6", children: [title && _jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: title }), description && _jsx("p", { className: "text-sm text-muted-foreground leading-relaxed", children: description }), children] })] }));
8
+ }
9
+ export function Carousel({ title, description, children }) {
10
+ const scrollRef = useRef(null);
11
+ const scroll = (direction) => {
12
+ if (!scrollRef.current)
13
+ return;
14
+ const amount = scrollRef.current.offsetWidth * 0.8;
15
+ scrollRef.current.scrollBy({
16
+ left: direction === 'left' ? -amount : amount,
17
+ behavior: 'smooth',
18
+ });
19
+ };
20
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsxs("div", { className: "relative group", children: [_jsx("div", { ref: scrollRef, className: "flex gap-6 overflow-x-auto snap-x snap-mandatory scrollbar-none pb-4 -mx-4 px-4", style: { scrollbarWidth: 'none' }, children: children }), _jsx("button", { onClick: () => scroll('left'), className: "absolute left-2 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full glass-2 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity", "aria-label": "Previous", children: _jsx(ChevronLeft, { className: "size-5 text-foreground" }) }), _jsx("button", { onClick: () => scroll('right'), className: "absolute right-2 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full glass-2 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity", "aria-label": "Next", children: _jsx(ChevronRight, { className: "size-5 text-foreground" }) })] })] }) }));
21
+ }
22
+ //# sourceMappingURL=Carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../../src/marketing/Carousel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAUxC,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAqB;IACrF,OAAO,CACL,eAAK,SAAS,EAAC,sFAAsF,aAClG,KAAK,IAAI,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,SAAS,EAAC,kCAAkC,GAAG,EAC5F,eAAK,SAAS,EAAC,KAAK,aACjB,KAAK,IAAI,aAAI,SAAS,EAAC,4CAA4C,YAAE,KAAK,GAAM,EAChF,WAAW,IAAI,YAAG,SAAS,EAAC,+CAA+C,YAAE,WAAW,GAAK,EAC7F,QAAQ,IACL,IACF,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAiB;IACtE,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,CAAC,SAA2B,EAAE,EAAE;QAC7C,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;QACnD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC7C,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,OAAO,cACN,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAC,iFAAiF,EAC3F,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,YAEhC,QAAQ,GACL,EACN,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,SAAS,EAAC,+JAA+J,gBAC9J,UAAU,YAErB,KAAC,WAAW,IAAC,SAAS,EAAC,wBAAwB,GAAG,GAC3C,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9B,SAAS,EAAC,gKAAgK,gBAC/J,MAAM,YAEjB,KAAC,YAAY,IAAC,SAAS,EAAC,wBAAwB,GAAG,GAC5C,IACL,IACF,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ interface LogoItem {
2
+ src: string;
3
+ alt: string;
4
+ width?: number;
5
+ name?: string;
6
+ version?: string;
7
+ badge?: string;
8
+ }
9
+ interface CompaniesProps {
10
+ title?: string;
11
+ logos: LogoItem[];
12
+ variant?: 'marquee' | 'inline';
13
+ }
14
+ export declare function Companies({ title, logos, variant }: CompaniesProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=Companies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Companies.d.ts","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":"AAKA,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAChC;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAmB,EAAE,EAAE,cAAc,2CAkD9E"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { Badge } from '../ui/badge';
4
+ import { cn } from '../lib/utils';
5
+ export function Companies({ title, logos, variant = 'marquee' }) {
6
+ if (variant === 'inline') {
7
+ return (_jsx(Section, { className: "py-12", children: _jsxs("div", { className: "container-main flex flex-col items-center gap-8 text-center", children: [title && _jsx("h2", { className: "text-base font-semibold sm:text-2xl text-foreground", children: title }), _jsx("div", { className: "flex flex-wrap items-center justify-center gap-8", children: logos.map((logo, i) => (_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium", children: [_jsx("img", { src: logo.src, alt: logo.alt, width: logo.width || 32, height: logo.width || 32, className: "h-6 w-6 object-contain opacity-70 dark:invert" }), logo.name && _jsx("span", { className: cn(!logo.name && 'sr-only'), children: logo.name }), logo.version && _jsx("span", { className: "text-muted-foreground", children: logo.version }), logo.badge && (_jsx(Badge, { variant: "brand", className: "text-xs px-1.5 py-0.5", children: logo.badge }))] }, i))) })] }) }));
8
+ }
9
+ return (_jsx(Section, { className: "py-12", children: _jsxs("div", { className: "container-main", children: [title && _jsx("p", { className: "text-center text-sm text-muted-foreground mb-8", children: title }), _jsx("div", { className: "relative fade-x overflow-hidden", children: _jsxs("div", { className: "flex gap-12 items-center", style: { '--marquee-gap': '3rem' }, children: [_jsx("div", { className: "flex gap-12 items-center animate-marquee", children: logos.map((logo, i) => (_jsx("img", { src: logo.src, alt: logo.alt, width: logo.width || 120, className: "h-8 w-auto object-contain grayscale opacity-60 hover:grayscale-0 hover:opacity-100 transition-all" }, i))) }), _jsx("div", { className: "flex gap-12 items-center animate-marquee", "aria-hidden": true, children: logos.map((logo, i) => (_jsx("img", { src: logo.src, alt: "", width: logo.width || 120, className: "h-8 w-auto object-contain grayscale opacity-60" }, i))) })] }) })] }) }));
10
+ }
11
+ //# sourceMappingURL=Companies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Companies.js","sourceRoot":"","sources":["../../src/marketing/Companies.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAiBlC,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,EAAkB;IAC7E,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CACL,KAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YACxB,eAAK,SAAS,EAAC,6DAA6D,aACzE,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC1F,cAAK,SAAS,EAAC,kDAAkD,YAC9D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,eAAa,SAAS,EAAC,6CAA6C,aAClE,cACE,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EACxB,SAAS,EAAC,+CAA+C,GACzD,EACD,IAAI,CAAC,IAAI,IAAI,eAAM,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,YAAG,IAAI,CAAC,IAAI,GAAQ,EAC7E,IAAI,CAAC,OAAO,IAAI,eAAM,SAAS,EAAC,uBAAuB,YAAE,IAAI,CAAC,OAAO,GAAQ,EAC7E,IAAI,CAAC,KAAK,IAAI,CACb,KAAC,KAAK,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,uBAAuB,YAAE,IAAI,CAAC,KAAK,GAAS,CAC9E,KAZO,CAAC,CAaL,CACP,CAAC,GACE,IACF,GACE,CACX,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YACxB,eAAK,SAAS,EAAC,gBAAgB,aAC5B,KAAK,IAAI,YAAG,SAAS,EAAC,gDAAgD,YAAE,KAAK,GAAK,EACnF,cAAK,SAAS,EAAC,iCAAiC,YAC9C,eAAK,SAAS,EAAC,0BAA0B,EAAC,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,EAAyB,aACjG,cAAK,SAAS,EAAC,0CAA0C,YACtD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,cAAa,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,SAAS,EAAC,mGAAmG,IAAxK,CAAC,CAA0K,CACtL,CAAC,GACE,EACN,cAAK,SAAS,EAAC,0CAA0C,iCACtD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,cAAa,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,SAAS,EAAC,gDAAgD,IAA7G,CAAC,CAA+G,CAC3H,CAAC,GACE,IACF,GACF,IACF,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface FAQItemProps {
3
+ question: string;
4
+ children: React.ReactNode;
5
+ }
6
+ export declare function FAQItem({ question, children }: FAQItemProps): import("react/jsx-runtime").JSX.Element;
7
+ interface FAQProps {
8
+ title?: string;
9
+ description?: string;
10
+ children: React.ReactNode;
11
+ }
12
+ export declare function FAQ({ title, description, children }: FAQProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=FAQ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FAQ.d.ts","sourceRoot":"","sources":["../../src/marketing/FAQ.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAS3D;AAED,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,QAAQ,2CAgB7D"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Section } from '../ui/section';
4
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from '../ui/accordion';
5
+ export function FAQItem({ question, children }) {
6
+ return (_jsxs(AccordionItem, { value: question, children: [_jsx(AccordionTrigger, { children: question }), _jsx(AccordionContent, { children: _jsx("div", { className: "text-muted-foreground leading-relaxed", children: children }) })] }));
7
+ }
8
+ export function FAQ({ title, description, children }) {
9
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main max-w-3xl", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground", children: description })] })), _jsx(Accordion, { type: "single", collapsible: true, children: children })] }) }));
10
+ }
11
+ //# sourceMappingURL=FAQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FAQ.js","sourceRoot":"","sources":["../../src/marketing/FAQ.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAgB;IAC1D,OAAO,CACL,MAAC,aAAa,IAAC,KAAK,EAAE,QAAQ,aAC5B,KAAC,gBAAgB,cAAE,QAAQ,GAAoB,EAC/C,KAAC,gBAAgB,cACf,cAAK,SAAS,EAAC,uCAAuC,YAAE,QAAQ,GAAO,GACtD,IACL,CACjB,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAY;IAC5D,OAAO,CACL,KAAC,OAAO,cACN,eAAK,SAAS,EAAC,0BAA0B,aACtC,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IAC1E,CACP,EACD,KAAC,SAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,kBACjC,QAAQ,GACC,IACR,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ interface FeatureProps {
3
+ icon?: React.ReactNode;
4
+ title: string;
5
+ description: string;
6
+ }
7
+ export declare function Feature({ icon, title, description }: FeatureProps): import("react/jsx-runtime").JSX.Element;
8
+ interface FeaturesProps {
9
+ title?: string;
10
+ description?: string;
11
+ columns?: 2 | 3 | 4;
12
+ children: React.ReactNode;
13
+ }
14
+ export declare function Features({ title, description, columns, children }: FeaturesProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=Features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Features.d.ts","sourceRoot":"","sources":["../../src/marketing/Features.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,YAAY,2CAYjE;AAED,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAgBpF"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ export function Feature({ icon, title, description }) {
4
+ return (_jsxs("div", { className: "flex flex-col items-start p-6 rounded-xl glass-1 hover:glass-2 transition-all", children: [icon && (_jsx("div", { className: "w-10 h-10 flex items-center justify-center rounded-lg bg-primary/10 text-primary mb-4", children: icon })), _jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground leading-relaxed", children: description })] }));
5
+ }
6
+ export function Features({ title, description, columns = 3, children }) {
7
+ const gridCols = { 2: 'md:grid-cols-2', 3: 'md:grid-cols-3', 4: 'md:grid-cols-2 lg:grid-cols-4' };
8
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: `grid grid-cols-1 ${gridCols[columns]} gap-6`, children: children })] }) }));
9
+ }
10
+ //# sourceMappingURL=Features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Features.js","sourceRoot":"","sources":["../../src/marketing/Features.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAgB;IAChE,OAAO,CACL,eAAK,SAAS,EAAC,+EAA+E,aAC3F,IAAI,IAAI,CACP,cAAK,SAAS,EAAC,uFAAuF,YACnG,IAAI,GACD,CACP,EACD,aAAI,SAAS,EAAC,4CAA4C,YAAE,KAAK,GAAM,EACvE,YAAG,SAAS,EAAC,+CAA+C,YAAE,WAAW,GAAK,IAC1E,CACP,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiB;IACnF,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAElG,OAAO,CACL,KAAC,OAAO,cACN,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,cAAK,SAAS,EAAE,oBAAoB,QAAQ,CAAC,OAAO,CAAC,QAAQ,YAAG,QAAQ,GAAO,IAC3E,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ interface GalleryItemProps {
3
+ src: string;
4
+ alt: string;
5
+ caption?: string;
6
+ }
7
+ export declare function GalleryItem({ src, alt, caption }: GalleryItemProps): import("react/jsx-runtime").JSX.Element;
8
+ interface GalleryProps {
9
+ title?: string;
10
+ description?: string;
11
+ columns?: 2 | 3 | 4;
12
+ children: React.ReactNode;
13
+ }
14
+ export declare function Gallery({ title, description, columns, children }: GalleryProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=Gallery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../src/marketing/Gallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAelE;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAoBlF"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { cn } from '../lib/utils';
4
+ export function GalleryItem({ src, alt, caption }) {
5
+ return (_jsxs("figure", { className: "group overflow-hidden rounded-xl glass-1", children: [_jsx("div", { className: "overflow-hidden", children: _jsx("img", { src: src, alt: alt, className: "w-full h-auto object-cover transition-transform duration-300 group-hover:scale-105" }) }), caption && (_jsx("figcaption", { className: "p-4 text-sm text-muted-foreground", children: caption }))] }));
6
+ }
7
+ export function Gallery({ title, description, columns = 3, children }) {
8
+ const gridCols = {
9
+ 2: 'md:grid-cols-2',
10
+ 3: 'md:grid-cols-2 lg:grid-cols-3',
11
+ 4: 'md:grid-cols-2 lg:grid-cols-4',
12
+ };
13
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), _jsx("div", { className: cn('grid grid-cols-1 gap-6', gridCols[columns]), children: children })] }) }));
14
+ }
15
+ //# sourceMappingURL=Gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gallery.js","sourceRoot":"","sources":["../../src/marketing/Gallery.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,UAAU,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAoB;IACjE,OAAO,CACL,kBAAQ,SAAS,EAAC,0CAA0C,aAC1D,cAAK,SAAS,EAAC,iBAAiB,YAC9B,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,oFAAoF,GAC9F,GACE,EACL,OAAO,IAAI,CACV,qBAAY,SAAS,EAAC,mCAAmC,YAAE,OAAO,GAAc,CACjF,IACM,CACV,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAgB;IACjF,MAAM,QAAQ,GAAG;QACf,CAAC,EAAE,gBAAgB;QACnB,CAAC,EAAE,+BAA+B;QAClC,CAAC,EAAE,+BAA+B;KACnC,CAAC;IAEF,OAAO,CACL,KAAC,OAAO,cACN,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mBAAmB,aAC/B,KAAK,IAAI,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EACzF,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,IAC5F,CACP,EACD,cAAK,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAG,QAAQ,GAAO,IAC7E,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface HeroProps {
3
+ title: string;
4
+ description: string;
5
+ primaryCta?: {
6
+ label: string;
7
+ href: string;
8
+ };
9
+ secondaryCta?: {
10
+ label: string;
11
+ href: string;
12
+ };
13
+ badge?: string;
14
+ image?: string;
15
+ children?: React.ReactNode;
16
+ }
17
+ export declare function Hero({ title, description, primaryCta, secondaryCta, badge, image, children }: HeroProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=Hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,YAAY,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,2CAyCvG"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { Badge } from '../ui/badge';
4
+ import { Button } from '../ui/button';
5
+ import { Mockup } from '../ui/mockup';
6
+ import Glow from '../ui/glow';
7
+ export function Hero({ title, description, primaryCta, secondaryCta, badge, image, children }) {
8
+ return (_jsxs(Section, { className: "relative overflow-hidden", children: [_jsx(Glow, { variant: "top" }), _jsxs("div", { className: "container-main relative z-10", children: [_jsxs("div", { className: "max-w-3xl mx-auto text-center", children: [badge && (_jsx(Badge, { variant: "outline", className: "animate-appear mb-6", children: badge })), _jsx("h1", { className: "text-4xl md:text-6xl font-bold tracking-tight text-foreground mb-6 animate-appear [animation-delay:100ms]", children: title }), _jsx("p", { className: "text-lg md:text-xl text-muted-foreground mb-8 max-w-2xl mx-auto animate-appear [animation-delay:200ms]", children: description }), _jsxs("div", { className: "flex items-center justify-center gap-4 animate-appear [animation-delay:300ms]", children: [primaryCta && (_jsx(Button, { asChild: true, size: "lg", children: _jsx("a", { href: primaryCta.href, children: primaryCta.label }) })), secondaryCta && (_jsx(Button, { asChild: true, variant: "glow", size: "lg", children: _jsx("a", { href: secondaryCta.href, children: secondaryCta.label }) }))] }), children] }), image && (_jsx("div", { className: "mt-16 animate-appear-zoom [animation-delay:400ms]", children: _jsx(Mockup, { type: "responsive", className: "shadow-mockup w-full", children: _jsx("img", { src: image, alt: "", className: "w-full" }) }) }))] })] }));
9
+ }
10
+ //# sourceMappingURL=Hero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../src/marketing/Hero.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAY9B,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAa;IACtG,OAAO,CACL,MAAC,OAAO,IAAC,SAAS,EAAC,0BAA0B,aAC3C,KAAC,IAAI,IAAC,OAAO,EAAC,KAAK,GAAG,EACtB,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAK,SAAS,EAAC,+BAA+B,aAC3C,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,qBAAqB,YACrD,KAAK,GACA,CACT,EACD,aAAI,SAAS,EAAC,2GAA2G,YACtH,KAAK,GACH,EACL,YAAG,SAAS,EAAC,wGAAwG,YAClH,WAAW,GACV,EACJ,eAAK,SAAS,EAAC,+EAA+E,aAC3F,UAAU,IAAI,CACb,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,CAAC,IAAI,YAAG,UAAU,CAAC,KAAK,GAAK,GACzC,CACV,EACA,YAAY,IAAI,CACf,KAAC,MAAM,IAAC,OAAO,QAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,YACtC,YAAG,IAAI,EAAE,YAAY,CAAC,IAAI,YAAG,YAAY,CAAC,KAAK,GAAK,GAC7C,CACV,IACG,EACL,QAAQ,IACL,EACL,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,mDAAmD,YAChE,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,sBAAsB,YACxD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,QAAQ,GAAG,GACtC,GACL,CACP,IACG,IACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface PageHeroProps {
3
+ title: string;
4
+ description?: string;
5
+ badge?: string;
6
+ children?: React.ReactNode;
7
+ }
8
+ export declare function PageHero({ title, description, badge, children }: PageHeroProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=PageHero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHero.d.ts","sourceRoot":"","sources":["../../src/marketing/PageHero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAe9E"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { Badge } from '../ui/badge';
4
+ export function PageHero({ title, description, badge, children }) {
5
+ return (_jsx(Section, { className: "py-16 md:py-24", children: _jsxs("div", { className: "container-main text-center", children: [badge && (_jsx(Badge, { variant: "outline", className: "mb-4", children: badge })), _jsx("h1", { className: "text-3xl md:text-5xl font-bold tracking-tight text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description }), children] }) }));
6
+ }
7
+ //# sourceMappingURL=PageHero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHero.js","sourceRoot":"","sources":["../../src/marketing/PageHero.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AASpC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAiB;IAC7E,OAAO,CACL,KAAC,OAAO,IAAC,SAAS,EAAC,gBAAgB,YACjC,eAAK,SAAS,EAAC,4BAA4B,aACxC,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,YACtC,KAAK,GACA,CACT,EACD,aAAI,SAAS,EAAC,oEAAoE,YAAE,KAAK,GAAM,EAC9F,WAAW,IAAI,YAAG,SAAS,EAAC,iDAAiD,YAAE,WAAW,GAAK,EAC/F,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ interface PricingPlanProps {
3
+ name: string;
4
+ price: string;
5
+ yearlyPrice?: string;
6
+ description?: string;
7
+ features: string[];
8
+ cta: {
9
+ label: string;
10
+ href: string;
11
+ };
12
+ popular?: boolean;
13
+ }
14
+ export declare function PricingPlan(_props: PricingPlanProps): null;
15
+ interface ComparisonRowProps {
16
+ feature: string;
17
+ values: (string | boolean)[];
18
+ }
19
+ export declare function ComparisonRow(_props: ComparisonRowProps): null;
20
+ interface ComparisonCategoryProps {
21
+ title: string;
22
+ }
23
+ export declare function ComparisonCategory(_props: ComparisonCategoryProps): null;
24
+ interface PricingSectionProps {
25
+ title?: string;
26
+ description?: string;
27
+ monthlyLabel?: string;
28
+ yearlyLabel?: string;
29
+ mostPopularLabel?: string;
30
+ children: React.ReactNode;
31
+ }
32
+ export declare function PricingSection({ title, description, monthlyLabel, yearlyLabel, mostPopularLabel, children }: PricingSectionProps): import("react/jsx-runtime").JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=PricingSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingSection.d.ts","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAMlE,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,QAEnD;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,QAEvD;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,QAEjE;AAED,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,YAAwB,EAAE,WAAsB,EAAE,gBAAiC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAiGxK"}
@@ -0,0 +1,41 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, Children, isValidElement } from 'react';
4
+ import { Check } from 'lucide-react';
5
+ import { cn } from '../lib/utils';
6
+ import { Section } from '../ui/section';
7
+ import { Button } from '../ui/button';
8
+ export function PricingPlan(_props) {
9
+ return null;
10
+ }
11
+ export function ComparisonRow(_props) {
12
+ return null;
13
+ }
14
+ export function ComparisonCategory(_props) {
15
+ return null;
16
+ }
17
+ export function PricingSection({ title, description, monthlyLabel = 'Monthly', yearlyLabel = 'Yearly', mostPopularLabel = 'Most Popular', children }) {
18
+ const [isYearly, setIsYearly] = useState(false);
19
+ const plans = [];
20
+ const rows = [];
21
+ Children.forEach(children, (child) => {
22
+ if (!isValidElement(child))
23
+ return;
24
+ if (child.type === PricingPlan)
25
+ plans.push(child.props);
26
+ else if (child.type === ComparisonRow)
27
+ rows.push({ type: 'row', props: child.props });
28
+ else if (child.type === ComparisonCategory)
29
+ rows.push({ type: 'category', props: child.props });
30
+ });
31
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-12", children: [title && _jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-lg text-muted-foreground max-w-2xl mx-auto", children: description })] })), plans.some((p) => p.yearlyPrice) && (_jsxs("div", { className: "flex items-center justify-center gap-3 mb-12", children: [_jsx("span", { className: cn('text-sm font-medium', !isYearly ? 'text-foreground' : 'text-muted-foreground'), children: monthlyLabel }), _jsx("button", { onClick: () => setIsYearly(!isYearly), className: cn('relative w-12 h-6 rounded-full transition-colors', isYearly ? 'bg-primary' : 'bg-muted'), children: _jsx("span", { className: cn('absolute top-0.5 w-5 h-5 bg-background rounded-full shadow transition-transform', isYearly ? 'translate-x-6' : 'translate-x-0.5') }) }), _jsx("span", { className: cn('text-sm font-medium', isYearly ? 'text-foreground' : 'text-muted-foreground'), children: yearlyLabel })] })), _jsx("div", { className: cn('grid grid-cols-1 gap-6 mb-16', plans.length === 2 && 'md:grid-cols-2', plans.length >= 3 && 'md:grid-cols-3'), children: plans.map((plan) => (_jsxs("div", { className: cn('relative rounded-2xl p-8', plan.popular
32
+ ? 'glass-4 ring-2 ring-primary shadow-xl'
33
+ : 'glass-1'), children: [plan.popular && (_jsx("div", { className: "absolute -top-3 left-1/2 -translate-x-1/2 px-3 py-1 bg-primary text-primary-foreground text-xs font-medium rounded-full", children: mostPopularLabel })), _jsx("h3", { className: "text-xl font-bold mb-2 text-foreground", children: plan.name }), plan.description && _jsx("p", { className: "text-sm mb-4 text-muted-foreground", children: plan.description }), _jsx("div", { className: "mb-6", children: _jsx("span", { className: "text-4xl font-bold text-foreground", children: isYearly && plan.yearlyPrice ? plan.yearlyPrice : plan.price }) }), _jsx(Button, { asChild: true, className: "w-full", variant: plan.popular ? 'default' : 'glow', children: _jsx("a", { href: plan.cta.href, children: plan.cta.label }) }), _jsx("ul", { className: "mt-6 space-y-3", children: plan.features.map((feature) => (_jsxs("li", { className: "flex items-start gap-2 text-sm text-muted-foreground", children: [_jsx(Check, { className: "w-4 h-4 mt-0.5 shrink-0 text-primary" }), feature] }, feature))) })] }, plan.name))) }), rows.length > 0 && (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [_jsx("th", { className: "text-left py-4 pr-4 font-medium text-foreground", children: "Feature" }), plans.map((plan) => _jsx("th", { className: "text-center py-4 px-4 font-medium text-foreground", children: plan.name }, plan.name))] }) }), _jsx("tbody", { children: rows.map((row, i) => {
34
+ if (row.type === 'category') {
35
+ return _jsx("tr", { className: "bg-muted", children: _jsx("td", { colSpan: plans.length + 1, className: "py-3 px-4 font-semibold text-foreground", children: row.props.title }) }, i);
36
+ }
37
+ const r = row.props;
38
+ return (_jsxs("tr", { className: "border-b border-border", children: [_jsx("td", { className: "py-3 pr-4 text-muted-foreground", children: r.feature }), r.values.map((val, j) => (_jsx("td", { className: "text-center py-3 px-4", children: typeof val === 'boolean' ? (val ? _jsx(Check, { className: "w-5 h-5 mx-auto text-primary" }) : _jsx("span", { className: "text-muted-foreground/30", children: "\u2014" })) : _jsx("span", { className: "text-muted-foreground", children: val }) }, j)))] }, i));
39
+ }) })] }) }))] }) }));
40
+ }
41
+ //# sourceMappingURL=PricingSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PricingSection.js","sourceRoot":"","sources":["../../src/marketing/PricingSection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface SocialProofProps {
2
+ avatars?: string[];
3
+ text: string;
4
+ subtext?: string;
5
+ }
6
+ export declare function SocialProof({ avatars, text, subtext }: SocialProofProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=SocialProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocialProof.d.ts","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":"AAGA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CA4BvE"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ export function SocialProof({ avatars, text, subtext }) {
4
+ return (_jsx(Section, { className: "py-12", children: _jsx("div", { className: "container-main", children: _jsxs("div", { className: "flex flex-col items-center gap-4 text-center", children: [avatars && avatars.length > 0 && (_jsxs("div", { className: "flex -space-x-3", children: [avatars.map((src, i) => (_jsx("img", { src: src, alt: "", className: "w-10 h-10 rounded-full border-2 border-background object-cover" }, i))), _jsx("div", { className: "w-10 h-10 rounded-full border-2 border-background bg-primary flex items-center justify-center", children: _jsx("span", { className: "text-xs font-semibold text-primary-foreground", children: "+" }) })] })), _jsxs("div", { children: [_jsx("p", { className: "text-lg font-semibold text-foreground", children: text }), subtext && _jsx("p", { className: "text-sm text-muted-foreground", children: subtext })] })] }) }) }));
5
+ }
6
+ //# sourceMappingURL=SocialProof.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocialProof.js","sourceRoot":"","sources":["../../src/marketing/SocialProof.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAoB;IACtE,OAAO,CACL,KAAC,OAAO,IAAC,SAAS,EAAC,OAAO,YACxB,cAAK,SAAS,EAAC,gBAAgB,YAC7B,eAAK,SAAS,EAAC,8CAA8C,aAC1D,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,eAAK,SAAS,EAAC,iBAAiB,aAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,cAEE,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,EAAE,EACN,SAAS,EAAC,gEAAgE,IAHrE,CAAC,CAIN,CACH,CAAC,EACF,cAAK,SAAS,EAAC,+FAA+F,YAC5G,eAAM,SAAS,EAAC,+CAA+C,kBAAS,GACpE,IACF,CACP,EACD,0BACE,YAAG,SAAS,EAAC,uCAAuC,YAAE,IAAI,GAAK,EAC9D,OAAO,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,OAAO,GAAK,IAClE,IACF,GACF,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface StatProps {
3
+ label?: string;
4
+ value: string | number;
5
+ suffix?: string;
6
+ description?: string;
7
+ }
8
+ export declare function Stat(_props: StatProps): null;
9
+ interface StatsProps {
10
+ title?: string;
11
+ children: React.ReactNode;
12
+ }
13
+ export declare function Stats({ title, children }: StatsProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=Stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../src/marketing/Stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,QAErC;AAED,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAqCpD"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Section } from '../ui/section';
4
+ export function Stat(_props) {
5
+ return null;
6
+ }
7
+ export function Stats({ title, children }) {
8
+ const items = [];
9
+ React.Children.forEach(children, (child) => {
10
+ if (React.isValidElement(child) && child.type === Stat) {
11
+ items.push(child.props);
12
+ }
13
+ });
14
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main max-w-[960px]", children: [title && (_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-foreground mb-12 text-center", children: title })), _jsx("div", { className: "grid grid-cols-2 gap-12 sm:grid-cols-4", children: items.map((item, i) => (_jsxs("div", { className: "flex flex-col items-start gap-3 text-left", children: [item.label && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold", children: item.label })), _jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("div", { className: "from-foreground to-foreground dark:to-brand bg-linear-to-r bg-clip-text text-4xl font-medium text-transparent drop-shadow-[2px_1px_24px_var(--brand-foreground)] transition-all duration-300 sm:text-5xl md:text-6xl", children: item.value }), item.suffix && (_jsx("div", { className: "text-brand text-2xl font-semibold", children: item.suffix }))] }), item.description && (_jsx("div", { className: "text-muted-foreground text-sm font-semibold text-pretty", children: item.description }))] }, i))) })] }) }));
15
+ }
16
+ //# sourceMappingURL=Stats.js.map