@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 @@
1
+ {"version":3,"file":"BlogCTABanner.d.ts","sourceRoot":"","sources":["../../src/blog/BlogCTABanner.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAa/F"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '../ui/button';
3
+ import Glow from '../ui/glow';
4
+ export function BlogCTABanner({ title, description, buttonText, buttonLink }) {
5
+ return (_jsxs("div", { className: "my-12 rounded-2xl glass-4 p-10 text-center relative overflow-hidden", children: [_jsx(Glow, { variant: "center" }), _jsxs("div", { className: "relative z-10", children: [_jsx("h3", { className: "text-2xl font-bold text-foreground mb-3", children: title }), _jsx("p", { className: "text-muted-foreground mb-6 max-w-lg mx-auto", children: description }), _jsx(Button, { asChild: true, children: _jsx("a", { href: buttonLink, children: buttonText }) })] })] }));
6
+ }
7
+ //# sourceMappingURL=BlogCTABanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogCTABanner.js","sourceRoot":"","sources":["../../src/blog/BlogCTABanner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,YAAY,CAAC;AAS9B,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAsB;IAC9F,OAAO,CACL,eAAK,SAAS,EAAC,qEAAqE,aAClF,KAAC,IAAI,IAAC,OAAO,EAAC,QAAQ,GAAG,EACzB,eAAK,SAAS,EAAC,eAAe,aAC5B,aAAI,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAM,EACpE,YAAG,SAAS,EAAC,6CAA6C,YAAE,WAAW,GAAK,EAC5E,KAAC,MAAM,IAAC,OAAO,kBACb,YAAG,IAAI,EAAE,UAAU,YAAG,UAAU,GAAK,GAC9B,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface BlogFAQProps {
2
+ title: string;
3
+ items: Array<{
4
+ question: string;
5
+ answer: string;
6
+ }>;
7
+ }
8
+ export declare function BlogFAQ({ title, items }: BlogFAQProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=BlogFAQ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogFAQ.d.ts","sourceRoot":"","sources":["../../src/blog/BlogFAQ.tsx"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,2CAgBrD"}
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from '../ui/accordion';
4
+ export function BlogFAQ({ title, items }) {
5
+ return (_jsxs("div", { className: "my-12", children: [_jsx("h2", { className: "text-2xl font-bold text-foreground mb-6", children: title }), _jsx(Accordion, { type: "single", collapsible: true, children: items.map((item, i) => (_jsxs(AccordionItem, { value: `faq-${i}`, children: [_jsx(AccordionTrigger, { children: item.question }), _jsx(AccordionContent, { children: _jsx("div", { className: "text-muted-foreground leading-relaxed", children: item.answer }) })] }, i))) })] }));
6
+ }
7
+ //# sourceMappingURL=BlogFAQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogFAQ.js","sourceRoot":"","sources":["../../src/blog/BlogFAQ.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAgB;IACpD,OAAO,CACL,eAAK,SAAS,EAAC,OAAO,aACpB,aAAI,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAM,EACpE,KAAC,SAAS,IAAC,IAAI,EAAC,QAAQ,EAAC,WAAW,kBACjC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,aAAa,IAAS,KAAK,EAAE,OAAO,CAAC,EAAE,aACtC,KAAC,gBAAgB,cAAE,IAAI,CAAC,QAAQ,GAAoB,EACpD,KAAC,gBAAgB,cACf,cAAK,SAAS,EAAC,uCAAuC,YAAE,IAAI,CAAC,MAAM,GAAO,GACzD,KAJD,CAAC,CAKL,CACjB,CAAC,GACQ,IACR,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface BlogIndexProps {
3
+ title?: string;
4
+ description?: string;
5
+ children?: React.ReactNode;
6
+ }
7
+ export declare function BlogIndex({ title, description, children }: BlogIndexProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=BlogIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogIndex.d.ts","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAczE"}
@@ -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 BlogIndex({ title, description, children }) {
4
+ 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", children: description })] })), children] }) }));
5
+ }
6
+ //# sourceMappingURL=BlogIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogIndex.js","sourceRoot":"","sources":["../../src/blog/BlogIndex.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,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,+BAA+B,YAAE,WAAW,GAAK,IAC1E,CACP,EACA,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function BlogIntro({ children }: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=BlogIntro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogIntro.d.ts","sourceRoot":"","sources":["../../src/blog/BlogIntro.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAMpE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function BlogIntro({ children }) {
3
+ return (_jsx("div", { className: "text-lg text-muted-foreground leading-relaxed mb-8 [&>p]:mb-4", children: children }));
4
+ }
5
+ //# sourceMappingURL=BlogIntro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogIntro.js","sourceRoot":"","sources":["../../src/blog/BlogIntro.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAiC;IACnE,OAAO,CACL,cAAK,SAAS,EAAC,+DAA+D,YAC3E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface BlogTableProps {
2
+ headers: string[];
3
+ rows: string[][];
4
+ }
5
+ export declare function BlogTable({ headers, rows }: BlogTableProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=BlogTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogTable.d.ts","sourceRoot":"","sources":["../../src/blog/BlogTable.tsx"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,2CAmB1D"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function BlogTable({ headers, rows }) {
3
+ return (_jsx("div", { className: "my-8 overflow-x-auto rounded-lg border border-border", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsx("tr", { className: "bg-muted", children: headers.map((h, i) => _jsx("th", { className: "text-left py-3 px-4 font-semibold text-foreground", children: h }, i)) }) }), _jsx("tbody", { children: rows.map((row, i) => (_jsx("tr", { className: "border-t border-border", children: row.map((cell, j) => _jsx("td", { className: "py-3 px-4 text-muted-foreground", children: cell }, j)) }, i))) })] }) }));
4
+ }
5
+ //# sourceMappingURL=BlogTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogTable.js","sourceRoot":"","sources":["../../src/blog/BlogTable.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAkB;IACzD,OAAO,CACL,cAAK,SAAS,EAAC,sDAAsD,YACnE,iBAAO,SAAS,EAAC,gBAAgB,aAC/B,0BACE,aAAI,SAAS,EAAC,UAAU,YACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAY,SAAS,EAAC,mDAAmD,YAAE,CAAC,IAAnE,CAAC,CAAwE,CAAC,GACvG,GACC,EACR,0BACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,aAAY,SAAS,EAAC,wBAAwB,YAC3C,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,aAAY,SAAS,EAAC,iCAAiC,YAAE,IAAI,IAApD,CAAC,CAAyD,CAAC,IADnF,CAAC,CAEL,CACN,CAAC,GACI,IACF,GACJ,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface BlogTipProps {
3
+ title?: string;
4
+ children: React.ReactNode;
5
+ }
6
+ export declare function BlogTip({ title, children }: BlogTipProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=BlogTip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogTip.d.ts","sourceRoot":"","sources":["../../src/blog/BlogTip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAa,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAOhE"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function BlogTip({ title = 'Tip', children }) {
3
+ return (_jsxs("div", { className: "my-6 p-5 rounded-lg bg-emerald-50 border border-emerald-200", children: [_jsx("p", { className: "font-semibold text-emerald-700 text-sm mb-1", children: title }), _jsx("div", { className: "text-sm text-muted-foreground", children: children })] }));
4
+ }
5
+ //# sourceMappingURL=BlogTip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlogTip.js","sourceRoot":"","sources":["../../src/blog/BlogTip.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAgB;IAC/D,OAAO,CACL,eAAK,SAAS,EAAC,6DAA6D,aAC1E,YAAG,SAAS,EAAC,6CAA6C,YAAE,KAAK,GAAK,EACtE,cAAK,SAAS,EAAC,+BAA+B,YAAE,QAAQ,GAAO,IAC3D,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ interface StartFreeNowCTAProps {
2
+ title: string;
3
+ bullets: string[];
4
+ buttonText: string;
5
+ buttonHref: string;
6
+ }
7
+ export declare function StartFreeNowCTA({ title, bullets, buttonText, buttonHref }: StartFreeNowCTAProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=StartFreeNowCTA.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartFreeNowCTA.d.ts","sourceRoot":"","sources":["../../src/blog/StartFreeNowCTA.tsx"],"names":[],"mappings":"AAIA,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,oBAAoB,2CAiB/F"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Check } from 'lucide-react';
3
+ import { Button } from '../ui/button';
4
+ export function StartFreeNowCTA({ title, bullets, buttonText, buttonHref }) {
5
+ return (_jsxs("div", { className: "my-12 p-8 rounded-2xl glass-3", children: [_jsx("h3", { className: "text-xl font-bold text-foreground mb-4", children: title }), _jsx("ul", { className: "space-y-2 mb-6", children: bullets.map((bullet, i) => (_jsxs("li", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [_jsx(Check, { className: "w-4 h-4 text-primary shrink-0" }), bullet] }, i))) }), _jsx(Button, { asChild: true, children: _jsx("a", { href: buttonHref, children: buttonText }) })] }));
6
+ }
7
+ //# sourceMappingURL=StartFreeNowCTA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartFreeNowCTA.js","sourceRoot":"","sources":["../../src/blog/StartFreeNowCTA.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAStC,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAwB;IAC9F,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,aAC5C,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,aAAI,SAAS,EAAC,gBAAgB,YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,cAAY,SAAS,EAAC,uDAAuD,aAC3E,KAAC,KAAK,IAAC,SAAS,EAAC,+BAA+B,GAAG,EAClD,MAAM,KAFA,CAAC,CAGL,CACN,CAAC,GACC,EACL,KAAC,MAAM,IAAC,OAAO,kBACb,YAAG,IAAI,EAAE,UAAU,YAAG,UAAU,GAAK,GAC9B,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+ export interface ShipSiteContextValue {
3
+ siteName: string;
4
+ siteUrl: string;
5
+ logo?: string | {
6
+ light: string;
7
+ dark: string;
8
+ };
9
+ ogImage?: string;
10
+ colors: {
11
+ primary: string;
12
+ accent: string;
13
+ background: string;
14
+ text: string;
15
+ };
16
+ navigation: {
17
+ items: Array<{
18
+ label: string;
19
+ href: string;
20
+ }>;
21
+ cta?: {
22
+ label: string;
23
+ href: string;
24
+ };
25
+ };
26
+ footer: {
27
+ columns?: Array<{
28
+ title: string;
29
+ links: Array<{
30
+ label: string;
31
+ href: string;
32
+ }>;
33
+ }>;
34
+ social?: Array<{
35
+ platform: string;
36
+ href: string;
37
+ }>;
38
+ copyright?: string;
39
+ };
40
+ navLinks: Record<string, string>;
41
+ alternatePathMap: Record<string, Record<string, string>>;
42
+ locale: string;
43
+ locales: string[];
44
+ defaultLocale: string;
45
+ }
46
+ export declare function ShipSiteProvider({ children, value, }: {
47
+ children: React.ReactNode;
48
+ value: ShipSiteContextValue;
49
+ }): import("react/jsx-runtime").JSX.Element;
50
+ export declare function useShipSite(): ShipSiteContextValue;
51
+ export declare function useNavLinks(): Record<string, string>;
52
+ export declare function useResolveHref(): (href: string) => string;
53
+ export declare function useAlternateLinks(): Record<string, Record<string, string>>;
54
+ //# sourceMappingURL=ShipSiteProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShipSiteProvider.d.ts","sourceRoot":"","sources":["../../src/context/ShipSiteProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,GAAG,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACvC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,KAAK,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,oBAAoB,CAAC;CAC7B,2CAIA;AAED,wBAAgB,WAAW,yBAM1B;AAED,wBAAgB,WAAW,2BAE1B;AAED,wBAAgB,cAAc,KAEpB,MAAM,MAAM,KAAG,MAAM,CAW9B;AAED,wBAAgB,iBAAiB,2CAEhC"}
@@ -0,0 +1,33 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext } from 'react';
4
+ const ShipSiteContext = createContext(null);
5
+ export function ShipSiteProvider({ children, value, }) {
6
+ return (_jsx(ShipSiteContext.Provider, { value: value, children: children }));
7
+ }
8
+ export function useShipSite() {
9
+ const context = useContext(ShipSiteContext);
10
+ if (!context) {
11
+ throw new Error('useShipSite must be used within a ShipSiteProvider');
12
+ }
13
+ return context;
14
+ }
15
+ export function useNavLinks() {
16
+ return useShipSite().navLinks;
17
+ }
18
+ export function useResolveHref() {
19
+ const { navLinks } = useShipSite();
20
+ return (href) => {
21
+ if (href.startsWith('http') ||
22
+ href.startsWith('#') ||
23
+ href.startsWith('mailto:')) {
24
+ return href;
25
+ }
26
+ const slug = href.startsWith('/') ? href.slice(1) : href;
27
+ return navLinks[slug] ?? href;
28
+ };
29
+ }
30
+ export function useAlternateLinks() {
31
+ return useShipSite().alternatePathMap;
32
+ }
33
+ //# sourceMappingURL=ShipSiteProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShipSiteProvider.js","sourceRoot":"","sources":["../../src/context/ShipSiteProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAgCzD,MAAM,eAAe,GAAG,aAAa,CAA8B,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,GAIN;IACC,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA4B,CAC9E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,IAAY,EAAU,EAAE;QAC9B,IACE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAC1B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,EAAE,CAAC,gBAAgB,CAAC;AACxC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function ThemeProvider({ children }: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/context/ThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAoBxE"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { ThemeProvider as NextThemeProvider } from 'next-themes';
5
+ export function ThemeProvider({ children }) {
6
+ const [mounted, setMounted] = useState(false);
7
+ useEffect(() => {
8
+ setMounted(true);
9
+ }, []);
10
+ if (!mounted) {
11
+ return _jsx(_Fragment, { children: children });
12
+ }
13
+ return (_jsx(NextThemeProvider, { attribute: "class", defaultTheme: "dark", enableSystem: true, children: children }));
14
+ }
15
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/context/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAiC;IACvE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,IAChB,SAAS,EAAC,OAAO,EACjB,YAAY,EAAC,MAAM,EACnB,YAAY,kBAEX,QAAQ,GACS,CACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ export { ShipSiteProvider, useShipSite, useNavLinks, useResolveHref, useAlternateLinks, } from './context/ShipSiteProvider';
2
+ export type { ShipSiteContextValue } from './context/ShipSiteProvider';
3
+ export { ThemeProvider } from './context/ThemeProvider';
4
+ export { ThemeToggle } from './ui/theme-toggle';
5
+ export { Header } from './layout/Header';
6
+ export { Footer } from './layout/Footer';
7
+ export { Hero } from './marketing/Hero';
8
+ export { PageHero } from './marketing/PageHero';
9
+ export { Features, Feature } from './marketing/Features';
10
+ export { AlternatingFeatures, AlternatingFeatureRow, AlternatingFeatureItem, } from './marketing/AlternatingFeatures';
11
+ export { PricingSection, PricingPlan, ComparisonRow, ComparisonCategory, } from './marketing/PricingSection';
12
+ export { Companies } from './marketing/Companies';
13
+ export { Testimonial } from './marketing/Testimonial';
14
+ export { BannerCTA, BannerFeature } from './marketing/BannerCTA';
15
+ export { FAQ, FAQItem } from './marketing/FAQ';
16
+ export { Steps, Step } from './marketing/Steps';
17
+ export { CardGrid, CardGridItem } from './marketing/CardGrid';
18
+ export { CalloutCard } from './marketing/CalloutCard';
19
+ export { Stats, Stat } from './marketing/Stats';
20
+ export { Testimonials, TestimonialCard } from './marketing/Testimonials';
21
+ export { BentoGrid, BentoItem } from './marketing/BentoGrid';
22
+ export { Gallery, GalleryItem } from './marketing/Gallery';
23
+ export { SocialProof } from './marketing/SocialProof';
24
+ export { Carousel, CarouselItem } from './marketing/Carousel';
25
+ export { TabsSection, TabItem } from './marketing/TabsSection';
26
+ export { BlogArticle } from './blog/BlogArticle';
27
+ export { BlogIndex } from './blog/BlogIndex';
28
+ export { BlogCTA } from './blog/BlogCTA';
29
+ export { BlogCTABanner } from './blog/BlogCTABanner';
30
+ export { BlogFAQ } from './blog/BlogFAQ';
31
+ export { BlogIntro } from './blog/BlogIntro';
32
+ export { BlogTable } from './blog/BlogTable';
33
+ export { BlogTip } from './blog/BlogTip';
34
+ export { StartFreeNowCTA } from './blog/StartFreeNowCTA';
35
+ export { LegalPage, LegalSection } from './legal/LegalPage';
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ // @shipsite.dev/components — MDX Component Registry
2
+ // Context
3
+ export { ShipSiteProvider, useShipSite, useNavLinks, useResolveHref, useAlternateLinks, } from './context/ShipSiteProvider';
4
+ // Theme
5
+ export { ThemeProvider } from './context/ThemeProvider';
6
+ export { ThemeToggle } from './ui/theme-toggle';
7
+ // Layout
8
+ export { Header } from './layout/Header';
9
+ export { Footer } from './layout/Footer';
10
+ // Marketing
11
+ export { Hero } from './marketing/Hero';
12
+ export { PageHero } from './marketing/PageHero';
13
+ export { Features, Feature } from './marketing/Features';
14
+ export { AlternatingFeatures, AlternatingFeatureRow, AlternatingFeatureItem, } from './marketing/AlternatingFeatures';
15
+ export { PricingSection, PricingPlan, ComparisonRow, ComparisonCategory, } from './marketing/PricingSection';
16
+ export { Companies } from './marketing/Companies';
17
+ export { Testimonial } from './marketing/Testimonial';
18
+ export { BannerCTA, BannerFeature } from './marketing/BannerCTA';
19
+ export { FAQ, FAQItem } from './marketing/FAQ';
20
+ export { Steps, Step } from './marketing/Steps';
21
+ export { CardGrid, CardGridItem } from './marketing/CardGrid';
22
+ export { CalloutCard } from './marketing/CalloutCard';
23
+ export { Stats, Stat } from './marketing/Stats';
24
+ export { Testimonials, TestimonialCard } from './marketing/Testimonials';
25
+ export { BentoGrid, BentoItem } from './marketing/BentoGrid';
26
+ export { Gallery, GalleryItem } from './marketing/Gallery';
27
+ export { SocialProof } from './marketing/SocialProof';
28
+ export { Carousel, CarouselItem } from './marketing/Carousel';
29
+ export { TabsSection, TabItem } from './marketing/TabsSection';
30
+ // Blog
31
+ export { BlogArticle } from './blog/BlogArticle';
32
+ export { BlogIndex } from './blog/BlogIndex';
33
+ export { BlogCTA } from './blog/BlogCTA';
34
+ export { BlogCTABanner } from './blog/BlogCTABanner';
35
+ export { BlogFAQ } from './blog/BlogFAQ';
36
+ export { BlogIntro } from './blog/BlogIntro';
37
+ export { BlogTable } from './blog/BlogTable';
38
+ export { BlogTip } from './blog/BlogTip';
39
+ export { StartFreeNowCTA } from './blog/StartFreeNowCTA';
40
+ // Legal
41
+ export { LegalPage, LegalSection } from './legal/LegalPage';
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Footer(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAWA,wBAAgB,MAAM,4CAwDrB"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useShipSite, useResolveHref } from '../context/ShipSiteProvider';
4
+ import { FooterRoot, FooterContent, FooterColumn, FooterBottom, } from '../ui/footer';
5
+ export function Footer() {
6
+ const { siteName, footer } = useShipSite();
7
+ const resolveHref = useResolveHref();
8
+ return (_jsx("footer", { className: "border-t border-border", children: _jsx(FooterRoot, { children: _jsxs("div", { className: "container-main", children: [_jsx(FooterContent, { children: footer.columns?.map((column) => (_jsxs(FooterColumn, { children: [_jsx("h3", { className: "text-sm font-semibold text-foreground", children: column.title }), _jsx("ul", { className: "flex flex-col gap-2", children: column.links.map((link) => (_jsx("li", { children: _jsx("a", { href: resolveHref(link.href), className: "text-sm text-muted-foreground hover:text-foreground transition-colors", children: link.label }) }, link.href))) })] }, column.title))) }), _jsxs(FooterBottom, { children: [_jsx("p", { children: footer.copyright ||
9
+ `\u00A9 ${new Date().getFullYear()} ${siteName}` }), footer.social && footer.social.length > 0 && (_jsx("div", { className: "flex items-center gap-4", children: footer.social.map((social) => (_jsx("a", { href: social.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-foreground transition-colors capitalize", children: social.platform }, social.href))) }))] })] }) }) }));
10
+ }
11
+ //# sourceMappingURL=Footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../src/layout/Footer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,CACL,iBAAQ,SAAS,EAAC,wBAAwB,YACxC,KAAC,UAAU,cACT,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,aAAa,cACX,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,MAAC,YAAY,eACX,aAAI,SAAS,EAAC,uCAAuC,YAClD,MAAM,CAAC,KAAK,GACV,EACL,aAAI,SAAS,EAAC,qBAAqB,YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,uBACE,YACE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,uEAAuE,YAEhF,IAAI,CAAC,KAAK,GACT,IANG,IAAI,CAAC,IAAI,CAOb,CACN,CAAC,GACC,KAfY,MAAM,CAAC,KAAK,CAgBhB,CAChB,CAAC,GACY,EAEhB,MAAC,YAAY,eACX,sBACG,MAAM,CAAC,SAAS;oCACf,UAAU,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,GAChD,EAEH,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC5C,cAAK,SAAS,EAAC,yBAAyB,YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,YAEE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,oDAAoD,YAE7D,MAAM,CAAC,QAAQ,IANX,MAAM,CAAC,IAAI,CAOd,CACL,CAAC,GACE,CACP,IACY,IACX,GACK,GACN,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Header(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAgBA,wBAAgB,MAAM,4CA8ErB"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Menu } from 'lucide-react';
4
+ import { useShipSite, useResolveHref } from '../context/ShipSiteProvider';
5
+ import { Button } from '../ui/button';
6
+ import { Navbar, NavbarLeft, NavbarRight } from '../ui/navbar';
7
+ import { Sheet, SheetTrigger, SheetContent, SheetTitle, } from '../ui/sheet';
8
+ import { ThemeToggle } from '../ui/theme-toggle';
9
+ export function Header() {
10
+ const { siteName, logo, navigation, locale, defaultLocale } = useShipSite();
11
+ const resolveHref = useResolveHref();
12
+ const logoSrc = typeof logo === 'string' ? logo : logo?.light;
13
+ return (_jsx("header", { className: "sticky top-0 z-50 bg-background/80 backdrop-blur-lg border-b border-border", children: _jsx("div", { className: "container-main", children: _jsxs(Navbar, { children: [_jsx(NavbarLeft, { children: _jsxs("a", { href: locale === defaultLocale ? '/' : `/${locale}`, className: "flex items-center gap-2", children: [logoSrc && (_jsx("img", { src: logoSrc, alt: siteName, className: "h-8 w-auto" })), _jsx("span", { className: "font-semibold text-lg text-foreground", children: siteName })] }) }), _jsxs(NavbarRight, { className: "hidden md:flex", children: [navigation.items.map((item) => (_jsx("a", { href: resolveHref(item.href), className: "text-sm font-medium text-muted-foreground hover:text-foreground transition-colors", children: item.label }, item.href))), _jsx(ThemeToggle, {}), navigation.cta && (_jsx(Button, { asChild: true, size: "sm", children: _jsx("a", { href: navigation.cta.href, children: navigation.cta.label }) }))] }), _jsx("div", { className: "md:hidden", children: _jsxs(Sheet, { children: [_jsx(SheetTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Toggle menu", children: _jsx(Menu, { className: "size-5" }) }) }), _jsxs(SheetContent, { side: "right", children: [_jsx(SheetTitle, { className: "sr-only", children: "Navigation" }), _jsxs("nav", { className: "flex flex-col gap-4 mt-8", children: [navigation.items.map((item) => (_jsx("a", { href: resolveHref(item.href), className: "text-sm font-medium text-muted-foreground hover:text-foreground transition-colors", children: item.label }, item.href))), navigation.cta && (_jsx(Button, { asChild: true, className: "mt-2", children: _jsx("a", { href: navigation.cta.href, children: navigation.cta.label }) }))] })] })] }) })] }) }) }));
14
+ }
15
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;IAC5E,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;IAE9D,OAAO,CACL,iBAAQ,SAAS,EAAC,4EAA4E,YAC5F,cAAK,SAAS,EAAC,gBAAgB,YAC7B,MAAC,MAAM,eACL,KAAC,UAAU,cACT,aACE,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,EACnD,SAAS,EAAC,yBAAyB,aAElC,OAAO,IAAI,CACV,cAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,YAAY,GAAG,CAC5D,EACD,eAAM,SAAS,EAAC,uCAAuC,YACpD,QAAQ,GACJ,IACL,GACO,EAEb,MAAC,WAAW,IAAC,SAAS,EAAC,gBAAgB,aACpC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9B,YAEE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,mFAAmF,YAE5F,IAAI,CAAC,KAAK,IAJN,IAAI,CAAC,IAAI,CAKZ,CACL,CAAC,EACF,KAAC,WAAW,KAAG,EACd,UAAU,CAAC,GAAG,IAAI,CACjB,KAAC,MAAM,IAAC,OAAO,QAAC,IAAI,EAAC,IAAI,YACvB,YAAG,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,YACzB,UAAU,CAAC,GAAG,CAAC,KAAK,GACnB,GACG,CACV,IACW,EAEd,cAAK,SAAS,EAAC,WAAW,YACxB,MAAC,KAAK,eACJ,KAAC,YAAY,IAAC,OAAO,kBACnB,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAY,aAAa,YAC1D,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG,GACpB,GACI,EACf,MAAC,YAAY,IAAC,IAAI,EAAC,OAAO,aACxB,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,2BAAwB,EACvD,eAAK,SAAS,EAAC,0BAA0B,aACtC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9B,YAEE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,SAAS,EAAC,mFAAmF,YAE5F,IAAI,CAAC,KAAK,IAJN,IAAI,CAAC,IAAI,CAKZ,CACL,CAAC,EACD,UAAU,CAAC,GAAG,IAAI,CACjB,KAAC,MAAM,IAAC,OAAO,QAAC,SAAS,EAAC,MAAM,YAC9B,YAAG,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,YACzB,UAAU,CAAC,GAAG,CAAC,KAAK,GACnB,GACG,CACV,IACG,IACO,IACT,GACJ,IACC,GACL,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface LegalSectionProps {
3
+ title: string;
4
+ children: React.ReactNode;
5
+ }
6
+ export declare function LegalSection({ title, children }: LegalSectionProps): import("react/jsx-runtime").JSX.Element;
7
+ interface LegalPageProps {
8
+ title: string;
9
+ lastUpdated?: string;
10
+ children: React.ReactNode;
11
+ }
12
+ export declare function LegalPage({ title, lastUpdated, children }: LegalPageProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=LegalPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegalPage.d.ts","sourceRoot":"","sources":["../../src/legal/LegalPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CASlE;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,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,2CAUzE"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function LegalSection({ title, children }) {
3
+ return (_jsxs("div", { className: "mb-8", children: [_jsx("h2", { className: "text-xl font-bold text-foreground mb-4", children: title }), _jsx("div", { className: "text-muted-foreground text-sm leading-relaxed [&>p]:mb-3 [&>ul]:list-disc [&>ul]:pl-5 [&>ul]:mb-3", children: children })] }));
4
+ }
5
+ export function LegalPage({ title, lastUpdated, children }) {
6
+ return (_jsx("section", { className: "py-12 md:py-20", children: _jsxs("div", { className: "container-main max-w-3xl", children: [_jsx("h1", { className: "text-3xl md:text-4xl font-bold text-foreground mb-2", children: title }), lastUpdated && _jsxs("p", { className: "text-sm text-muted-foreground mb-8", children: ["Last updated: ", lastUpdated] }), children] }) }));
7
+ }
8
+ //# sourceMappingURL=LegalPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegalPage.js","sourceRoot":"","sources":["../../src/legal/LegalPage.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAqB;IACjE,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,cAAK,SAAS,EAAC,mGAAmG,YAC/G,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAkB;IACxE,OAAO,CACL,kBAAS,SAAS,EAAC,gBAAgB,YACjC,eAAK,SAAS,EAAC,0BAA0B,aACvC,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC/E,WAAW,IAAI,aAAG,SAAS,EAAC,oCAAoC,+BAAgB,WAAW,IAAK,EAChG,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ interface AlternatingFeatureItemProps {
3
+ icon?: string;
4
+ title: string;
5
+ description: string;
6
+ }
7
+ export declare function AlternatingFeatureItem({ icon, title, description }: AlternatingFeatureItemProps): import("react/jsx-runtime").JSX.Element;
8
+ interface AlternatingFeatureRowProps {
9
+ title: string;
10
+ description?: string;
11
+ image: string;
12
+ imageDark?: string;
13
+ imageAlt?: string;
14
+ children?: React.ReactNode;
15
+ }
16
+ export declare function AlternatingFeatureRow({ title, description, image, imageDark, imageAlt, children }: AlternatingFeatureRowProps): import("react/jsx-runtime").JSX.Element;
17
+ interface AlternatingFeaturesProps {
18
+ title?: string;
19
+ description?: string;
20
+ children: React.ReactNode;
21
+ }
22
+ export declare function AlternatingFeatures({ title, description, children }: AlternatingFeaturesProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=AlternatingFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlternatingFeatures.d.ts","sourceRoot":"","sources":["../../src/marketing/AlternatingFeatures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,2BAA2B;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,2BAA2B,2CAU/F;AAED,UAAU,0BAA0B;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAoB7H;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAc7F"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Section } from '../ui/section';
3
+ import { Mockup } from '../ui/mockup';
4
+ export function AlternatingFeatureItem({ icon, title, description }) {
5
+ return (_jsxs("div", { className: "flex gap-3 items-start", children: [icon && _jsx("span", { className: "text-primary text-xl mt-0.5", children: icon }), _jsxs("div", { children: [_jsx("h4", { className: "font-semibold text-foreground mb-1", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description })] })] }));
6
+ }
7
+ export function AlternatingFeatureRow({ title, description, image, imageDark, imageAlt, children }) {
8
+ return (_jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-12 items-center py-12 [&:nth-child(even)>div:first-child]:md:order-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-2xl md:text-3xl font-bold text-foreground mb-4", children: title }), description && _jsx("p", { className: "text-muted-foreground mb-6", children: description }), children && _jsx("div", { className: "space-y-4", children: children })] }), _jsx(Mockup, { type: "responsive", children: imageDark ? (_jsxs(_Fragment, { children: [_jsx("img", { src: image, alt: imageAlt || title, className: "w-full dark:hidden" }), _jsx("img", { src: imageDark, alt: imageAlt || title, className: "w-full hidden dark:block" })] })) : (_jsx("img", { src: image, alt: imageAlt || title, className: "w-full" })) })] }));
9
+ }
10
+ export function AlternatingFeatures({ title, description, children }) {
11
+ return (_jsx(Section, { children: _jsxs("div", { className: "container-main", children: [(title || description) && (_jsxs("div", { className: "text-center mb-16", 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: "divide-y divide-border", children: children })] }) }));
12
+ }
13
+ //# sourceMappingURL=AlternatingFeatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlternatingFeatures.js","sourceRoot":"","sources":["../../src/marketing/AlternatingFeatures.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,UAAU,sBAAsB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAA+B;IAC9F,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACpC,IAAI,IAAI,eAAM,SAAS,EAAC,6BAA6B,YAAE,IAAI,GAAQ,EACpE,0BACE,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IAC1D,IACF,CACP,CAAC;AACJ,CAAC;AAWD,MAAM,UAAU,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAA8B;IAC5H,OAAO,CACL,eAAK,SAAS,EAAC,0GAA0G,aACvH,0BACE,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC/E,WAAW,IAAI,YAAG,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,EAC1E,QAAQ,IAAI,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,IACpD,EACN,KAAC,MAAM,IAAC,IAAI,EAAC,YAAY,YACtB,SAAS,CAAC,CAAC,CAAC,CACX,8BACE,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAC,oBAAoB,GAAG,EAC1E,cAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAC,0BAA0B,GAAG,IACnF,CACJ,CAAC,CAAC,CAAC,CACF,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAC,QAAQ,GAAG,CAC/D,GACM,IACL,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAA4B;IAC5F,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,wBAAwB,YAAE,QAAQ,GAAO,IACpD,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface BannerCTAProps {
3
+ title: string;
4
+ buttonText: string;
5
+ buttonHref?: string;
6
+ subtext?: string;
7
+ children?: React.ReactNode;
8
+ }
9
+ export declare function BannerCTA({ title, buttonText, buttonHref, subtext, children }: BannerCTAProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function BannerFeature({ title, icon }: {
11
+ title: string;
12
+ icon?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=BannerCTA.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BannerCTA.d.ts","sourceRoot":"","sources":["../../src/marketing/BannerCTA.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAoB7F;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,2CAO9E"}