@nextworks/blocks-templates 0.1.0-alpha.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 (193) hide show
  1. package/README.md +42 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +4 -0
  5. package/dist/templates/digitalagency/Page.d.ts +3 -0
  6. package/dist/templates/digitalagency/Page.d.ts.map +1 -0
  7. package/dist/templates/digitalagency/Page.js +18 -0
  8. package/dist/templates/digitalagency/Page.jsx +33 -0
  9. package/dist/templates/digitalagency/PresetThemeVars.d.ts +11 -0
  10. package/dist/templates/digitalagency/PresetThemeVars.d.ts.map +1 -0
  11. package/dist/templates/digitalagency/PresetThemeVars.js +29 -0
  12. package/dist/templates/digitalagency/PresetThemeVars.jsx +31 -0
  13. package/dist/templates/digitalagency/components/About.d.ts +3 -0
  14. package/dist/templates/digitalagency/components/About.d.ts.map +1 -0
  15. package/dist/templates/digitalagency/components/About.js +45 -0
  16. package/dist/templates/digitalagency/components/About.jsx +43 -0
  17. package/dist/templates/digitalagency/components/CTA.d.ts +3 -0
  18. package/dist/templates/digitalagency/components/CTA.d.ts.map +1 -0
  19. package/dist/templates/digitalagency/components/CTA.js +33 -0
  20. package/dist/templates/digitalagency/components/CTA.jsx +31 -0
  21. package/dist/templates/digitalagency/components/Contact.d.ts +3 -0
  22. package/dist/templates/digitalagency/components/Contact.d.ts.map +1 -0
  23. package/dist/templates/digitalagency/components/Contact.js +91 -0
  24. package/dist/templates/digitalagency/components/Contact.jsx +91 -0
  25. package/dist/templates/digitalagency/components/Footer.d.ts +8 -0
  26. package/dist/templates/digitalagency/components/Footer.d.ts.map +1 -0
  27. package/dist/templates/digitalagency/components/Footer.js +58 -0
  28. package/dist/templates/digitalagency/components/Footer.jsx +58 -0
  29. package/dist/templates/digitalagency/components/Hero.d.ts +7 -0
  30. package/dist/templates/digitalagency/components/Hero.d.ts.map +1 -0
  31. package/dist/templates/digitalagency/components/Hero.js +69 -0
  32. package/dist/templates/digitalagency/components/Hero.jsx +71 -0
  33. package/dist/templates/digitalagency/components/Navbar.d.ts +21 -0
  34. package/dist/templates/digitalagency/components/Navbar.d.ts.map +1 -0
  35. package/dist/templates/digitalagency/components/Navbar.js +86 -0
  36. package/dist/templates/digitalagency/components/Navbar.jsx +85 -0
  37. package/dist/templates/digitalagency/components/NetworkPattern.d.ts +8 -0
  38. package/dist/templates/digitalagency/components/NetworkPattern.d.ts.map +1 -0
  39. package/dist/templates/digitalagency/components/NetworkPattern.js +38 -0
  40. package/dist/templates/digitalagency/components/NetworkPattern.jsx +128 -0
  41. package/dist/templates/digitalagency/components/Portfolio.d.ts +3 -0
  42. package/dist/templates/digitalagency/components/Portfolio.d.ts.map +1 -0
  43. package/dist/templates/digitalagency/components/Portfolio.js +108 -0
  44. package/dist/templates/digitalagency/components/Portfolio.jsx +110 -0
  45. package/dist/templates/digitalagency/components/Pricing.d.ts +3 -0
  46. package/dist/templates/digitalagency/components/Pricing.d.ts.map +1 -0
  47. package/dist/templates/digitalagency/components/Pricing.js +82 -0
  48. package/dist/templates/digitalagency/components/Pricing.jsx +84 -0
  49. package/dist/templates/digitalagency/components/Process.d.ts +3 -0
  50. package/dist/templates/digitalagency/components/Process.d.ts.map +1 -0
  51. package/dist/templates/digitalagency/components/Process.js +38 -0
  52. package/dist/templates/digitalagency/components/Process.jsx +40 -0
  53. package/dist/templates/digitalagency/components/Services.d.ts +3 -0
  54. package/dist/templates/digitalagency/components/Services.d.ts.map +1 -0
  55. package/dist/templates/digitalagency/components/Services.js +34 -0
  56. package/dist/templates/digitalagency/components/Services.jsx +36 -0
  57. package/dist/templates/digitalagency/components/Team.d.ts +3 -0
  58. package/dist/templates/digitalagency/components/Team.d.ts.map +1 -0
  59. package/dist/templates/digitalagency/components/Team.js +14 -0
  60. package/dist/templates/digitalagency/components/Team.jsx +14 -0
  61. package/dist/templates/digitalagency/components/Testimonials.d.ts +3 -0
  62. package/dist/templates/digitalagency/components/Testimonials.d.ts.map +1 -0
  63. package/dist/templates/digitalagency/components/Testimonials.js +38 -0
  64. package/dist/templates/digitalagency/components/Testimonials.jsx +40 -0
  65. package/dist/templates/gallery/PresetThemeVars.d.ts +15 -0
  66. package/dist/templates/gallery/PresetThemeVars.d.ts.map +1 -0
  67. package/dist/templates/gallery/PresetThemeVars.js +31 -0
  68. package/dist/templates/gallery/PresetThemeVars.jsx +33 -0
  69. package/dist/templates/gallery/page.d.ts +2 -0
  70. package/dist/templates/gallery/page.d.ts.map +1 -0
  71. package/dist/templates/gallery/page.js +151 -0
  72. package/dist/templates/gallery/page.jsx +216 -0
  73. package/dist/templates/productlaunch/Page.d.ts +2 -0
  74. package/dist/templates/productlaunch/Page.d.ts.map +1 -0
  75. package/dist/templates/productlaunch/Page.js +20 -0
  76. package/dist/templates/productlaunch/Page.jsx +42 -0
  77. package/dist/templates/productlaunch/PresetThemeVars.d.ts +16 -0
  78. package/dist/templates/productlaunch/PresetThemeVars.d.ts.map +1 -0
  79. package/dist/templates/productlaunch/PresetThemeVars.js +28 -0
  80. package/dist/templates/productlaunch/PresetThemeVars.jsx +30 -0
  81. package/dist/templates/productlaunch/components/About.d.ts +15 -0
  82. package/dist/templates/productlaunch/components/About.d.ts.map +1 -0
  83. package/dist/templates/productlaunch/components/About.js +59 -0
  84. package/dist/templates/productlaunch/components/About.jsx +57 -0
  85. package/dist/templates/productlaunch/components/CTA.d.ts +3 -0
  86. package/dist/templates/productlaunch/components/CTA.d.ts.map +1 -0
  87. package/dist/templates/productlaunch/components/CTA.js +39 -0
  88. package/dist/templates/productlaunch/components/CTA.jsx +37 -0
  89. package/dist/templates/productlaunch/components/Contact.d.ts +3 -0
  90. package/dist/templates/productlaunch/components/Contact.d.ts.map +1 -0
  91. package/dist/templates/productlaunch/components/Contact.js +93 -0
  92. package/dist/templates/productlaunch/components/Contact.jsx +93 -0
  93. package/dist/templates/productlaunch/components/FAQ.d.ts +7 -0
  94. package/dist/templates/productlaunch/components/FAQ.d.ts.map +1 -0
  95. package/dist/templates/productlaunch/components/FAQ.js +64 -0
  96. package/dist/templates/productlaunch/components/FAQ.jsx +63 -0
  97. package/dist/templates/productlaunch/components/Features.d.ts +6 -0
  98. package/dist/templates/productlaunch/components/Features.d.ts.map +1 -0
  99. package/dist/templates/productlaunch/components/Features.js +52 -0
  100. package/dist/templates/productlaunch/components/Features.jsx +51 -0
  101. package/dist/templates/productlaunch/components/Footer.d.ts +5 -0
  102. package/dist/templates/productlaunch/components/Footer.d.ts.map +1 -0
  103. package/dist/templates/productlaunch/components/Footer.js +103 -0
  104. package/dist/templates/productlaunch/components/Footer.jsx +102 -0
  105. package/dist/templates/productlaunch/components/Hero.d.ts +6 -0
  106. package/dist/templates/productlaunch/components/Hero.d.ts.map +1 -0
  107. package/dist/templates/productlaunch/components/Hero.js +70 -0
  108. package/dist/templates/productlaunch/components/Hero.jsx +69 -0
  109. package/dist/templates/productlaunch/components/Navbar.d.ts +25 -0
  110. package/dist/templates/productlaunch/components/Navbar.d.ts.map +1 -0
  111. package/dist/templates/productlaunch/components/Navbar.js +82 -0
  112. package/dist/templates/productlaunch/components/Navbar.jsx +81 -0
  113. package/dist/templates/productlaunch/components/Pricing.d.ts +5 -0
  114. package/dist/templates/productlaunch/components/Pricing.d.ts.map +1 -0
  115. package/dist/templates/productlaunch/components/Pricing.js +77 -0
  116. package/dist/templates/productlaunch/components/Pricing.jsx +76 -0
  117. package/dist/templates/productlaunch/components/ProcessTimeline.d.ts +5 -0
  118. package/dist/templates/productlaunch/components/ProcessTimeline.d.ts.map +1 -0
  119. package/dist/templates/productlaunch/components/ProcessTimeline.js +63 -0
  120. package/dist/templates/productlaunch/components/ProcessTimeline.jsx +62 -0
  121. package/dist/templates/productlaunch/components/ServicesGrid.d.ts +5 -0
  122. package/dist/templates/productlaunch/components/ServicesGrid.d.ts.map +1 -0
  123. package/dist/templates/productlaunch/components/ServicesGrid.js +41 -0
  124. package/dist/templates/productlaunch/components/ServicesGrid.jsx +40 -0
  125. package/dist/templates/productlaunch/components/Team.d.ts +5 -0
  126. package/dist/templates/productlaunch/components/Team.d.ts.map +1 -0
  127. package/dist/templates/productlaunch/components/Team.js +72 -0
  128. package/dist/templates/productlaunch/components/Team.jsx +71 -0
  129. package/dist/templates/productlaunch/components/Testimonials.d.ts +5 -0
  130. package/dist/templates/productlaunch/components/Testimonials.d.ts.map +1 -0
  131. package/dist/templates/productlaunch/components/Testimonials.js +55 -0
  132. package/dist/templates/productlaunch/components/Testimonials.jsx +54 -0
  133. package/dist/templates/productlaunch/components/TrustBadges.d.ts +5 -0
  134. package/dist/templates/productlaunch/components/TrustBadges.d.ts.map +1 -0
  135. package/dist/templates/productlaunch/components/TrustBadges.js +50 -0
  136. package/dist/templates/productlaunch/components/TrustBadges.jsx +49 -0
  137. package/dist/templates/saasdashboard/Page.d.ts +2 -0
  138. package/dist/templates/saasdashboard/Page.d.ts.map +1 -0
  139. package/dist/templates/saasdashboard/Page.js +15 -0
  140. package/dist/templates/saasdashboard/Page.jsx +35 -0
  141. package/dist/templates/saasdashboard/PresetThemeVars.d.ts +11 -0
  142. package/dist/templates/saasdashboard/PresetThemeVars.d.ts.map +1 -0
  143. package/dist/templates/saasdashboard/PresetThemeVars.js +27 -0
  144. package/dist/templates/saasdashboard/PresetThemeVars.jsx +29 -0
  145. package/dist/templates/saasdashboard/components/Contact.d.ts +3 -0
  146. package/dist/templates/saasdashboard/components/Contact.d.ts.map +1 -0
  147. package/dist/templates/saasdashboard/components/Contact.js +83 -0
  148. package/dist/templates/saasdashboard/components/Contact.jsx +90 -0
  149. package/dist/templates/saasdashboard/components/Dashboard.d.ts +21 -0
  150. package/dist/templates/saasdashboard/components/Dashboard.d.ts.map +1 -0
  151. package/dist/templates/saasdashboard/components/Dashboard.js +120 -0
  152. package/dist/templates/saasdashboard/components/Dashboard.jsx +168 -0
  153. package/dist/templates/saasdashboard/components/FAQ.d.ts +2 -0
  154. package/dist/templates/saasdashboard/components/FAQ.d.ts.map +1 -0
  155. package/dist/templates/saasdashboard/components/FAQ.js +35 -0
  156. package/dist/templates/saasdashboard/components/FAQ.jsx +34 -0
  157. package/dist/templates/saasdashboard/components/Features.d.ts +2 -0
  158. package/dist/templates/saasdashboard/components/Features.d.ts.map +1 -0
  159. package/dist/templates/saasdashboard/components/Features.js +55 -0
  160. package/dist/templates/saasdashboard/components/Features.jsx +54 -0
  161. package/dist/templates/saasdashboard/components/Footer.d.ts +2 -0
  162. package/dist/templates/saasdashboard/components/Footer.d.ts.map +1 -0
  163. package/dist/templates/saasdashboard/components/Footer.js +52 -0
  164. package/dist/templates/saasdashboard/components/Footer.jsx +51 -0
  165. package/dist/templates/saasdashboard/components/Hero.d.ts +2 -0
  166. package/dist/templates/saasdashboard/components/Hero.d.ts.map +1 -0
  167. package/dist/templates/saasdashboard/components/Hero.js +65 -0
  168. package/dist/templates/saasdashboard/components/Hero.jsx +70 -0
  169. package/dist/templates/saasdashboard/components/Hero_mask.d.ts +3 -0
  170. package/dist/templates/saasdashboard/components/Hero_mask.d.ts.map +1 -0
  171. package/dist/templates/saasdashboard/components/Hero_mask.js +73 -0
  172. package/dist/templates/saasdashboard/components/Hero_mask.jsx +85 -0
  173. package/dist/templates/saasdashboard/components/Navbar.d.ts +25 -0
  174. package/dist/templates/saasdashboard/components/Navbar.d.ts.map +1 -0
  175. package/dist/templates/saasdashboard/components/Navbar.js +83 -0
  176. package/dist/templates/saasdashboard/components/Navbar.jsx +84 -0
  177. package/dist/templates/saasdashboard/components/Pricing.d.ts +2 -0
  178. package/dist/templates/saasdashboard/components/Pricing.d.ts.map +1 -0
  179. package/dist/templates/saasdashboard/components/Pricing.js +65 -0
  180. package/dist/templates/saasdashboard/components/Pricing.jsx +64 -0
  181. package/dist/templates/saasdashboard/components/SmoothScroll.d.ts +2 -0
  182. package/dist/templates/saasdashboard/components/SmoothScroll.d.ts.map +1 -0
  183. package/dist/templates/saasdashboard/components/SmoothScroll.js +87 -0
  184. package/dist/templates/saasdashboard/components/SmoothScroll.jsx +87 -0
  185. package/dist/templates/saasdashboard/components/Testimonials.d.ts +2 -0
  186. package/dist/templates/saasdashboard/components/Testimonials.d.ts.map +1 -0
  187. package/dist/templates/saasdashboard/components/Testimonials.js +35 -0
  188. package/dist/templates/saasdashboard/components/Testimonials.jsx +39 -0
  189. package/dist/templates/saasdashboard/components/TrustBadges.d.ts +2 -0
  190. package/dist/templates/saasdashboard/components/TrustBadges.d.ts.map +1 -0
  191. package/dist/templates/saasdashboard/components/TrustBadges.js +37 -0
  192. package/dist/templates/saasdashboard/components/TrustBadges.jsx +36 -0
  193. package/package.json +27 -0
@@ -0,0 +1,25 @@
1
+ import type { ComponentProps } from "react";
2
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
3
+ /**
4
+ * SaaS Dashboard preset Navbar
5
+ *
6
+ * - DashFlow branding with blue/purple gradient logo square (brandNode)
7
+ * - Inter font for brand and links
8
+ * - No CTA button (ctaButton = null)
9
+ * - Blue hover states for links and theme toggle
10
+ * - Glassy background with backdrop blur (light/dark)
11
+ *
12
+ * This preset exposes the Shared Navbar API so devs can override any prop/slot:
13
+ *
14
+ * Example:
15
+ * <Navbar
16
+ * brand="My SaaS"
17
+ * links={{ className: "hover:text-emerald-600" }}
18
+ * container={{ className: "max-w-6xl mx-auto" }}
19
+ * />
20
+ */
21
+ type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
22
+ type PresetOverrides = Partial<SharedNavbarProps>;
23
+ export declare function Navbar(overrides?: PresetOverrides): import("react").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=Navbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAC7D,KAAK,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAsFlD,wBAAgB,MAAM,CAAC,SAAS,GAAE,eAAoB,+BAQrD"}
@@ -0,0 +1,83 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
4
+ const defaultProps = {
5
+ brand: "DashFlow",
6
+ // Preserve custom gradient logo block
7
+ brandNode: (_jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-blue-600 to-purple-600 font-bold text-white shadow-sm ring-1 ring-white/40", children: "DF" })),
8
+ menuItems: [
9
+ { label: "Home", href: "#home" },
10
+ { label: "Features", href: "#features" },
11
+ { label: "Pricing", href: "#pricing" },
12
+ { label: "Contact", href: "#contact" },
13
+ ],
14
+ ctaButton: null,
15
+ showColorModeToggle: true,
16
+ navHeight: "h-16",
17
+ sticky: true,
18
+ ariaLabel: "DashFlow main navigation",
19
+ // Allow layout constraints to be added at page-level
20
+ className: "",
21
+ // Style slots tuned for the blue SaaS theme
22
+ nav: {
23
+ className: "bg-white/60 dark:bg-gray-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/60 supports-[backdrop-filter]:dark:bg-gray-900/60 text-gray-800 dark:text-white " +
24
+ // Accent variables for this preset (read by toggle, links, mobile links)
25
+ "[--navbar-accent:theme(colors.blue.700)] dark:[--navbar-accent:theme(colors.blue.400)] " +
26
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
27
+ "[--navbar-hover-bg:theme(colors.blue.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.23 0.05 264) 20%, transparent)] " +
28
+ "[--navbar-ring:theme(colors.blue.500)] dark:[--navbar-ring:theme(colors.blue.400)] " +
29
+ "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
30
+ },
31
+ brandText: {
32
+ className: "text-xl font-bold font-inter text-blue-700 dark:text-blue-500",
33
+ },
34
+ links: {
35
+ className: "text-sm font-medium font-inter text-gray-800 dark:text-white hover:text-blue-700 dark:hover:text-blue-400 " +
36
+ "focus:ring-[var(--navbar-ring)]",
37
+ },
38
+ // Preset keeps CTA hidden; if enabled, provide subtle interactive defaults
39
+ ctaButtonStyle: {
40
+ variant: "default",
41
+ size: "default",
42
+ className: "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
43
+ },
44
+ // Additional slots that weren't styled before, now aligned to the theme
45
+ mobileMenu: {
46
+ className: "border-t border-gray-200/80 dark:border-gray-800/80",
47
+ },
48
+ container: {
49
+ className: "max-w-7xl mx-auto",
50
+ },
51
+ brandWrapper: {
52
+ className: "",
53
+ },
54
+ desktopMenu: {
55
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
56
+ },
57
+ toggleButton: {
58
+ className: "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
59
+ "hover:bg-blue-50 dark:hover:bg-blue-900/20 " +
60
+ "focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400",
61
+ },
62
+ colorModeWrapper: {
63
+ className: "ml-2",
64
+ },
65
+ // With variables above, ThemeToggle can rely on them; explicit override optional
66
+ // themeToggle: { ... }
67
+ ctaButtonWrapper: {
68
+ className: "ml-2",
69
+ },
70
+ mobileMenuInner: {
71
+ className: "space-y-2 px-4 pt-2 pb-4",
72
+ },
73
+ // Mobile links will read --navbar-hover-bg; explicit class optional
74
+ mobileLinks: {
75
+ className: "hover:bg-[var(--navbar-hover-bg)]",
76
+ },
77
+ };
78
+ export function Navbar(overrides = {}) {
79
+ // Shallow-merge: passing a style-slot object (e.g., links, nav, etc.)
80
+ // replaces the default for that slot. Keeps the API simple and predictable.
81
+ const props = Object.assign(Object.assign({}, defaultProps), overrides);
82
+ return _jsx(SharedNavbar, Object.assign({}, props));
83
+ }
@@ -0,0 +1,84 @@
1
+ "use client";
2
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
3
+ const defaultProps = {
4
+ brand: "DashFlow",
5
+ // Preserve custom gradient logo block
6
+ brandNode: (<div className="flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-blue-600 to-purple-600 font-bold text-white shadow-sm ring-1 ring-white/40">
7
+ DF
8
+ </div>),
9
+ menuItems: [
10
+ { label: "Home", href: "#home" },
11
+ { label: "Features", href: "#features" },
12
+ { label: "Pricing", href: "#pricing" },
13
+ { label: "Contact", href: "#contact" },
14
+ ],
15
+ ctaButton: null,
16
+ showColorModeToggle: true,
17
+ navHeight: "h-16",
18
+ sticky: true,
19
+ ariaLabel: "DashFlow main navigation",
20
+ // Allow layout constraints to be added at page-level
21
+ className: "",
22
+ // Style slots tuned for the blue SaaS theme
23
+ nav: {
24
+ className: "bg-white/60 dark:bg-gray-900/60 backdrop-blur supports-[backdrop-filter]:bg-white/60 supports-[backdrop-filter]:dark:bg-gray-900/60 text-gray-800 dark:text-white " +
25
+ // Accent variables for this preset (read by toggle, links, mobile links)
26
+ "[--navbar-accent:theme(colors.blue.700)] dark:[--navbar-accent:theme(colors.blue.400)] " +
27
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
28
+ "[--navbar-hover-bg:theme(colors.blue.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.23 0.05 264) 20%, transparent)] " +
29
+ "[--navbar-ring:theme(colors.blue.500)] dark:[--navbar-ring:theme(colors.blue.400)] " +
30
+ "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
31
+ },
32
+ brandText: {
33
+ className: "text-xl font-bold font-inter text-blue-700 dark:text-blue-500",
34
+ },
35
+ links: {
36
+ className: "text-sm font-medium font-inter text-gray-800 dark:text-white hover:text-blue-700 dark:hover:text-blue-400 " +
37
+ "focus:ring-[var(--navbar-ring)]",
38
+ },
39
+ // Preset keeps CTA hidden; if enabled, provide subtle interactive defaults
40
+ ctaButtonStyle: {
41
+ variant: "default",
42
+ size: "default",
43
+ className: "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
44
+ },
45
+ // Additional slots that weren't styled before, now aligned to the theme
46
+ mobileMenu: {
47
+ className: "border-t border-gray-200/80 dark:border-gray-800/80",
48
+ },
49
+ container: {
50
+ className: "max-w-7xl mx-auto",
51
+ },
52
+ brandWrapper: {
53
+ className: "",
54
+ },
55
+ desktopMenu: {
56
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
57
+ },
58
+ toggleButton: {
59
+ className: "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
60
+ "hover:bg-blue-50 dark:hover:bg-blue-900/20 " +
61
+ "focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400",
62
+ },
63
+ colorModeWrapper: {
64
+ className: "ml-2",
65
+ },
66
+ // With variables above, ThemeToggle can rely on them; explicit override optional
67
+ // themeToggle: { ... }
68
+ ctaButtonWrapper: {
69
+ className: "ml-2",
70
+ },
71
+ mobileMenuInner: {
72
+ className: "space-y-2 px-4 pt-2 pb-4",
73
+ },
74
+ // Mobile links will read --navbar-hover-bg; explicit class optional
75
+ mobileLinks: {
76
+ className: "hover:bg-[var(--navbar-hover-bg)]",
77
+ },
78
+ };
79
+ export function Navbar(overrides = {}) {
80
+ // Shallow-merge: passing a style-slot object (e.g., links, nav, etc.)
81
+ // replaces the default for that slot. Keeps the API simple and predictable.
82
+ const props = Object.assign(Object.assign({}, defaultProps), overrides);
83
+ return <SharedNavbar {...props}/>;
84
+ }
@@ -0,0 +1,2 @@
1
+ export declare function Pricing(): import("react").JSX.Element;
2
+ //# sourceMappingURL=Pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pricing.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Pricing.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,OAAO,gCA2CtB"}
@@ -0,0 +1,65 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Pricing as SharedPricing } from "@nextworks/blocks-sections";
4
+ import { cn } from "@nextworks/blocks-core";
5
+ const DefaultPricingData = [
6
+ {
7
+ pricingPlanHeaderText: "Starter Plan",
8
+ pricingPlanPrice: "$29/month",
9
+ pricingPlanFeatures: [
10
+ "Up to 5 users",
11
+ "3 projects",
12
+ "Basic analytics",
13
+ "email support",
14
+ ],
15
+ pricingPlanCTALabel: "Select Plan",
16
+ pricingPlanCTAHref: "#contact",
17
+ },
18
+ {
19
+ pricingPlanHeaderText: "Professional Plan",
20
+ pricingPlanPrice: "$79.99/month",
21
+ pricingPlanFeatures: [
22
+ "Up to 25 users",
23
+ "Unlimited projects",
24
+ "Advanced analytics",
25
+ "Priority support",
26
+ "Api access",
27
+ ],
28
+ pricingPlanCTALabel: "Select Plan",
29
+ pricingPlanCTAHref: "#contact",
30
+ isPopular: true,
31
+ },
32
+ {
33
+ pricingPlanHeaderText: "Enterprise Plan",
34
+ pricingPlanPrice: "$199.99/month",
35
+ pricingPlanFeatures: [
36
+ "Unlimited users",
37
+ "Custom integrations",
38
+ "Dedicated account manager",
39
+ "SLA guarantee",
40
+ ],
41
+ pricingPlanCTALabel: "Select Plan",
42
+ pricingPlanCTAHref: "#contact",
43
+ },
44
+ ];
45
+ export function Pricing() {
46
+ return (_jsx(SharedPricing, { pricingPlans: DefaultPricingData, pricingHeadingText: "Simple Pricing That Scales With You", className: cn("relative"), section: {
47
+ className: "pt-20 pb-5 bg-[var(--section-bg,theme(colors.white))] dark:bg-[var(--section-bg,theme(colors.gray.900))]",
48
+ }, heading: {
49
+ className: "text-3xl font-bold font-inter text-center mb-8 text-[var(--heading-fg)]",
50
+ }, card: {
51
+ className: "relative rounded-lg transition-all duration-300 will-change-transform hover:-translate-y-1 bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)] shadow-[var(--card-shadow)]",
52
+ }, title: {
53
+ className: "text-xl font-bold font-inter mb-2 text-[var(--card-title-fg)]",
54
+ }, price: {
55
+ className: "text-2xl font-bold font-inter mb-4 text-[var(--card-title-fg)]",
56
+ }, featureItem: {
57
+ className: "flex items-center text-base font-inter text-[var(--card-muted-fg)]",
58
+ }, cta: {
59
+ variant: "default",
60
+ size: "lg",
61
+ className: "w-full font-semibold font-inter shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:theme(colors.sky.600)] hover:[--btn-hover-bg:theme(colors.sky.700)] [--btn-fg:theme(colors.white)] hover:[--btn-hover-fg:theme(colors.white)] border-[var(--btn-border)] focus-visible:ring-[var(--btn-ring)]",
62
+ }, popularBadge: {
63
+ className: "absolute -top-3 left-1/2 -translate-x-1/2 px-4 py-1 rounded-full text-xs font-semibold bg-[var(--badge-active-bg)] text-[var(--badge-active-fg)] border-[var(--badge-active-border)]",
64
+ }, ariaLabel: "Pricing section" }));
65
+ }
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { Pricing as SharedPricing } from "@nextworks/blocks-sections";
3
+ import { cn } from "@nextworks/blocks-core";
4
+ const DefaultPricingData = [
5
+ {
6
+ pricingPlanHeaderText: "Starter Plan",
7
+ pricingPlanPrice: "$29/month",
8
+ pricingPlanFeatures: [
9
+ "Up to 5 users",
10
+ "3 projects",
11
+ "Basic analytics",
12
+ "email support",
13
+ ],
14
+ pricingPlanCTALabel: "Select Plan",
15
+ pricingPlanCTAHref: "#contact",
16
+ },
17
+ {
18
+ pricingPlanHeaderText: "Professional Plan",
19
+ pricingPlanPrice: "$79.99/month",
20
+ pricingPlanFeatures: [
21
+ "Up to 25 users",
22
+ "Unlimited projects",
23
+ "Advanced analytics",
24
+ "Priority support",
25
+ "Api access",
26
+ ],
27
+ pricingPlanCTALabel: "Select Plan",
28
+ pricingPlanCTAHref: "#contact",
29
+ isPopular: true,
30
+ },
31
+ {
32
+ pricingPlanHeaderText: "Enterprise Plan",
33
+ pricingPlanPrice: "$199.99/month",
34
+ pricingPlanFeatures: [
35
+ "Unlimited users",
36
+ "Custom integrations",
37
+ "Dedicated account manager",
38
+ "SLA guarantee",
39
+ ],
40
+ pricingPlanCTALabel: "Select Plan",
41
+ pricingPlanCTAHref: "#contact",
42
+ },
43
+ ];
44
+ export function Pricing() {
45
+ return (<SharedPricing pricingPlans={DefaultPricingData} pricingHeadingText="Simple Pricing That Scales With You" className={cn("relative")} section={{
46
+ className: "pt-20 pb-5 bg-[var(--section-bg,theme(colors.white))] dark:bg-[var(--section-bg,theme(colors.gray.900))]",
47
+ }} heading={{
48
+ className: "text-3xl font-bold font-inter text-center mb-8 text-[var(--heading-fg)]",
49
+ }} card={{
50
+ className: "relative rounded-lg transition-all duration-300 will-change-transform hover:-translate-y-1 bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)] shadow-[var(--card-shadow)]",
51
+ }} title={{
52
+ className: "text-xl font-bold font-inter mb-2 text-[var(--card-title-fg)]",
53
+ }} price={{
54
+ className: "text-2xl font-bold font-inter mb-4 text-[var(--card-title-fg)]",
55
+ }} featureItem={{
56
+ className: "flex items-center text-base font-inter text-[var(--card-muted-fg)]",
57
+ }} cta={{
58
+ variant: "default",
59
+ size: "lg",
60
+ className: "w-full font-semibold font-inter shadow-md hover:shadow-lg transition-all duration-200 hover:-translate-y-0.5 [--btn-bg:theme(colors.sky.600)] hover:[--btn-hover-bg:theme(colors.sky.700)] [--btn-fg:theme(colors.white)] hover:[--btn-hover-fg:theme(colors.white)] border-[var(--btn-border)] focus-visible:ring-[var(--btn-ring)]",
61
+ }} popularBadge={{
62
+ className: "absolute -top-3 left-1/2 -translate-x-1/2 px-4 py-1 rounded-full text-xs font-semibold bg-[var(--badge-active-bg)] text-[var(--badge-active-fg)] border-[var(--badge-active-border)]",
63
+ }} ariaLabel="Pricing section"/>);
64
+ }
@@ -0,0 +1,2 @@
1
+ export declare function SmoothScroll(): null;
2
+ //# sourceMappingURL=SmoothScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmoothScroll.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/SmoothScroll.tsx"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,SA2F3B"}
@@ -0,0 +1,87 @@
1
+ "use client";
2
+ import { useEffect } from "react";
3
+ // Smoothly scrolls to hash targets with a custom, faster duration (~300ms)
4
+ export function SmoothScroll() {
5
+ useEffect(() => {
6
+ let suppressClick = false;
7
+ const animateTo = (href) => {
8
+ const el = document.querySelector(href);
9
+ if (!el)
10
+ return;
11
+ const navbarOffsetPx = 64; // matches h-16 sticky navbar
12
+ const start = window.scrollY;
13
+ const targetTop = el.getBoundingClientRect().top + window.scrollY - navbarOffsetPx;
14
+ const distance = targetTop - start;
15
+ const duration = 300; // ms
16
+ const startTime = performance.now();
17
+ // iOS-like easing
18
+ const easeOutQuart = (t) => 1 - Math.pow(1 - t, 4);
19
+ const step = (now) => {
20
+ const elapsed = now - startTime;
21
+ const t = Math.min(1, elapsed / duration);
22
+ const eased = easeOutQuart(t);
23
+ window.scrollTo(0, start + distance * eased);
24
+ if (t < 1)
25
+ requestAnimationFrame(step);
26
+ else
27
+ history.replaceState(null, "", href);
28
+ };
29
+ requestAnimationFrame(step);
30
+ };
31
+ const onPointerDown = (e) => {
32
+ const ev = e;
33
+ const target = e.currentTarget;
34
+ const href = target.getAttribute("href");
35
+ if (!href || !href.startsWith("#"))
36
+ return;
37
+ // Only primary button, no modifiers
38
+ if (ev.button !== 0 ||
39
+ ev.metaKey ||
40
+ ev.ctrlKey ||
41
+ ev.altKey ||
42
+ ev.shiftKey)
43
+ return;
44
+ e.preventDefault();
45
+ suppressClick = true;
46
+ animateTo(href);
47
+ };
48
+ const onClick = (e) => {
49
+ const target = e.currentTarget;
50
+ const href = target.getAttribute("href");
51
+ if (!href || !href.startsWith("#"))
52
+ return;
53
+ if (suppressClick) {
54
+ e.preventDefault();
55
+ suppressClick = false;
56
+ return;
57
+ }
58
+ e.preventDefault();
59
+ animateTo(href);
60
+ };
61
+ const onKeyDown = (e) => {
62
+ const ev = e;
63
+ if (ev.key !== "Enter" && ev.key !== " ")
64
+ return;
65
+ const target = e.currentTarget;
66
+ const href = target.getAttribute("href");
67
+ if (!href || !href.startsWith("#"))
68
+ return;
69
+ e.preventDefault();
70
+ animateTo(href);
71
+ };
72
+ const links = Array.from(document.querySelectorAll('a[href^="#"]'));
73
+ links.forEach((a) => {
74
+ a.addEventListener("pointerdown", onPointerDown);
75
+ a.addEventListener("click", onClick);
76
+ a.addEventListener("keydown", onKeyDown);
77
+ });
78
+ return () => {
79
+ links.forEach((a) => {
80
+ a.removeEventListener("pointerdown", onPointerDown);
81
+ a.removeEventListener("click", onClick);
82
+ a.removeEventListener("keydown", onKeyDown);
83
+ });
84
+ };
85
+ }, []);
86
+ return null;
87
+ }
@@ -0,0 +1,87 @@
1
+ "use client";
2
+ import { useEffect } from "react";
3
+ // Smoothly scrolls to hash targets with a custom, faster duration (~300ms)
4
+ export function SmoothScroll() {
5
+ useEffect(() => {
6
+ let suppressClick = false;
7
+ const animateTo = (href) => {
8
+ const el = document.querySelector(href);
9
+ if (!el)
10
+ return;
11
+ const navbarOffsetPx = 64; // matches h-16 sticky navbar
12
+ const start = window.scrollY;
13
+ const targetTop = el.getBoundingClientRect().top + window.scrollY - navbarOffsetPx;
14
+ const distance = targetTop - start;
15
+ const duration = 300; // ms
16
+ const startTime = performance.now();
17
+ // iOS-like easing
18
+ const easeOutQuart = (t) => 1 - Math.pow(1 - t, 4);
19
+ const step = (now) => {
20
+ const elapsed = now - startTime;
21
+ const t = Math.min(1, elapsed / duration);
22
+ const eased = easeOutQuart(t);
23
+ window.scrollTo(0, start + distance * eased);
24
+ if (t < 1)
25
+ requestAnimationFrame(step);
26
+ else
27
+ history.replaceState(null, "", href);
28
+ };
29
+ requestAnimationFrame(step);
30
+ };
31
+ const onPointerDown = (e) => {
32
+ const ev = e;
33
+ const target = e.currentTarget;
34
+ const href = target.getAttribute("href");
35
+ if (!href || !href.startsWith("#"))
36
+ return;
37
+ // Only primary button, no modifiers
38
+ if (ev.button !== 0 ||
39
+ ev.metaKey ||
40
+ ev.ctrlKey ||
41
+ ev.altKey ||
42
+ ev.shiftKey)
43
+ return;
44
+ e.preventDefault();
45
+ suppressClick = true;
46
+ animateTo(href);
47
+ };
48
+ const onClick = (e) => {
49
+ const target = e.currentTarget;
50
+ const href = target.getAttribute("href");
51
+ if (!href || !href.startsWith("#"))
52
+ return;
53
+ if (suppressClick) {
54
+ e.preventDefault();
55
+ suppressClick = false;
56
+ return;
57
+ }
58
+ e.preventDefault();
59
+ animateTo(href);
60
+ };
61
+ const onKeyDown = (e) => {
62
+ const ev = e;
63
+ if (ev.key !== "Enter" && ev.key !== " ")
64
+ return;
65
+ const target = e.currentTarget;
66
+ const href = target.getAttribute("href");
67
+ if (!href || !href.startsWith("#"))
68
+ return;
69
+ e.preventDefault();
70
+ animateTo(href);
71
+ };
72
+ const links = Array.from(document.querySelectorAll('a[href^="#"]'));
73
+ links.forEach((a) => {
74
+ a.addEventListener("pointerdown", onPointerDown);
75
+ a.addEventListener("click", onClick);
76
+ a.addEventListener("keydown", onKeyDown);
77
+ });
78
+ return () => {
79
+ links.forEach((a) => {
80
+ a.removeEventListener("pointerdown", onPointerDown);
81
+ a.removeEventListener("click", onClick);
82
+ a.removeEventListener("keydown", onKeyDown);
83
+ });
84
+ };
85
+ }, []);
86
+ return null;
87
+ }
@@ -0,0 +1,2 @@
1
+ export declare function Testimonials(): import("react").JSX.Element;
2
+ //# sourceMappingURL=Testimonials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Testimonials.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/Testimonials.tsx"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,gCAkE3B"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Testimonials as SharedTestimonials } from "@nextworks/blocks-sections";
4
+ import { cn } from "@nextworks/blocks-core";
5
+ export function Testimonials() {
6
+ return (_jsxs("div", { className: "relative", children: [_jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(60rem_60rem_at_0%_0%,rgba(59,130,246,0.08),transparent_40%),radial-gradient(50rem_50rem_at_100%_100%,rgba(168,85,247,0.06),transparent_40%)] opacity-20" }), _jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(rgba(255,255,255,0.07)_1px,transparent_1px)] [background-size:14px_14px] opacity-[0.05]" }), _jsx(SharedTestimonials, { testimonials: [
7
+ {
8
+ testimonialText: "DashFlow replaced 6 different tools for us. Our team productivity increased 40% in the first month.",
9
+ testimonialAuthor: "- Sarah Chen, Marketing Director at TechStart",
10
+ testimonialAuthorInitials: "SC",
11
+ },
12
+ {
13
+ testimonialText: "Finally, a dashboard that actually makes sense. Setup took 10 minutes, not 10 hours.",
14
+ testimonialAuthor: "- Mike Rodriguez, Operations Manager",
15
+ testimonialAuthorInitials: "MR",
16
+ },
17
+ {
18
+ testimonialText: "The analytics alone pay for the subscription. We spot trends weeks earlier now.",
19
+ testimonialAuthor: "- Lisa Park, CEO of GrowthCo",
20
+ testimonialAuthorInitials: "LP",
21
+ },
22
+ ], testimonialSectionHeader: "What Our Customers Say", className: cn("relative"), section: { className: "py-16 px-6 bg-background" }, container: { className: "max-w-7xl mx-auto" }, header: { className: "text-center mb-12" }, heading: {
23
+ className: "text-3xl md:text-4xl font-bold font-inter text-[var(--heading-fg)]",
24
+ }, grid: {
25
+ className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
26
+ }, card: {
27
+ className: "p-6 rounded-lg transition-transform duration-200 hover:-translate-y-1 bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)] shadow-[var(--card-shadow)]",
28
+ }, text: {
29
+ className: "italic font-inter font-normal text-base text-[var(--card-fg)]",
30
+ }, author: {
31
+ className: "text-sm font-medium font-inter text-[var(--card-muted-fg)]",
32
+ }, avatar: {
33
+ className: "w-12 h-12 rounded-full flex items-center justify-center text-lg font-bold bg-[var(--badge-bg)] text-[var(--badge-fg)] border-[var(--badge-border)]",
34
+ }, avatarText: { className: "font-bold" }, ariaLabel: "Customer testimonials" })] }));
35
+ }
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { Testimonials as SharedTestimonials } from "@nextworks/blocks-sections";
3
+ import { cn } from "@nextworks/blocks-core";
4
+ export function Testimonials() {
5
+ return (<div className="relative">
6
+ {/* Gradient mesh + fine noise overlays for depth */}
7
+ <div aria-hidden className="pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(60rem_60rem_at_0%_0%,rgba(59,130,246,0.08),transparent_40%),radial-gradient(50rem_50rem_at_100%_100%,rgba(168,85,247,0.06),transparent_40%)] opacity-20"/>
8
+ <div aria-hidden className="pointer-events-none absolute inset-0 -z-10 [background-image:radial-gradient(rgba(255,255,255,0.07)_1px,transparent_1px)] [background-size:14px_14px] opacity-[0.05]"/>
9
+ <SharedTestimonials testimonials={[
10
+ {
11
+ testimonialText: "DashFlow replaced 6 different tools for us. Our team productivity increased 40% in the first month.",
12
+ testimonialAuthor: "- Sarah Chen, Marketing Director at TechStart",
13
+ testimonialAuthorInitials: "SC",
14
+ },
15
+ {
16
+ testimonialText: "Finally, a dashboard that actually makes sense. Setup took 10 minutes, not 10 hours.",
17
+ testimonialAuthor: "- Mike Rodriguez, Operations Manager",
18
+ testimonialAuthorInitials: "MR",
19
+ },
20
+ {
21
+ testimonialText: "The analytics alone pay for the subscription. We spot trends weeks earlier now.",
22
+ testimonialAuthor: "- Lisa Park, CEO of GrowthCo",
23
+ testimonialAuthorInitials: "LP",
24
+ },
25
+ ]} testimonialSectionHeader="What Our Customers Say" className={cn("relative")} section={{ className: "py-16 px-6 bg-background" }} container={{ className: "max-w-7xl mx-auto" }} header={{ className: "text-center mb-12" }} heading={{
26
+ className: "text-3xl md:text-4xl font-bold font-inter text-[var(--heading-fg)]",
27
+ }} grid={{
28
+ className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
29
+ }} card={{
30
+ className: "p-6 rounded-lg transition-transform duration-200 hover:-translate-y-1 bg-[var(--card-bg)] text-[var(--card-fg)] border-[var(--card-border)] shadow-[var(--card-shadow)]",
31
+ }} text={{
32
+ className: "italic font-inter font-normal text-base text-[var(--card-fg)]",
33
+ }} author={{
34
+ className: "text-sm font-medium font-inter text-[var(--card-muted-fg)]",
35
+ }} avatar={{
36
+ className: "w-12 h-12 rounded-full flex items-center justify-center text-lg font-bold bg-[var(--badge-bg)] text-[var(--badge-fg)] border-[var(--badge-border)]",
37
+ }} avatarText={{ className: "font-bold" }} ariaLabel="Customer testimonials"/>
38
+ </div>);
39
+ }
@@ -0,0 +1,2 @@
1
+ export declare function TrustBadges(): import("react").JSX.Element;
2
+ //# sourceMappingURL=TrustBadges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrustBadges.d.ts","sourceRoot":"","sources":["../../../../src/templates/saasdashboard/components/TrustBadges.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,WAAW,gCAwB1B"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { TrustBadges as SharedTrustBadges } from "@nextworks/blocks-sections";
4
+ import { cn } from "@nextworks/blocks-core";
5
+ const defaultBadgesInfo = [
6
+ {
7
+ badgeText: "10,000+ businesses",
8
+ badgeDescription: "Trusted by",
9
+ badgeIcon: "📊",
10
+ },
11
+ {
12
+ badgeText: "SOC 2 Compliant",
13
+ badgeDescription: "Enterprise security",
14
+ badgeIcon: "🔒",
15
+ },
16
+ {
17
+ badgeText: "99.9% Uptime",
18
+ badgeDescription: "Reliable service",
19
+ badgeIcon: "⚡",
20
+ },
21
+ {
22
+ badgeText: "4.9/5 Rating",
23
+ badgeDescription: "Customer satisfaction",
24
+ badgeIcon: "⭐",
25
+ },
26
+ ];
27
+ export function TrustBadges() {
28
+ return (_jsx(SharedTrustBadges, { badges: defaultBadgesInfo, className: cn("relative"), section: { className: "py-8 px-6 bg-blue-950/10 dark:bg-blue-950" }, heading: {
29
+ className: "text-2xl font-bold font-inter text-gray-700 dark:text-gray-200",
30
+ }, badgesContainer: {
31
+ className: "flex flex-wrap items-center justify-center gap-8",
32
+ }, badge: {
33
+ className: "transition-all duration-200 grayscale hover:grayscale-0 hover:-translate-y-0.5",
34
+ }, text: {
35
+ className: "text-base font-medium font-inter text-gray-900 dark:text-white",
36
+ }, ariaLabel: "Trust badges section" }));
37
+ }