@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,58 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Footer as SharedFooter } from "@nextworks/blocks-sections";
4
+ const agencyNavLinks = [
5
+ {
6
+ heading: "Services",
7
+ links: [
8
+ { name: "Web Design & Development", href: "#services" },
9
+ { name: "SEO & Digital Marketing", href: "#services" },
10
+ { name: "E-commerce Solutions", href: "#services" },
11
+ { name: "Brand Identity & Design", href: "#services" },
12
+ ],
13
+ },
14
+ {
15
+ heading: "Company",
16
+ links: [
17
+ { name: "About Us", href: "#about" },
18
+ { name: "Our Work", href: "#portfolio" },
19
+ { name: "Process", href: "#process" },
20
+ { name: "Contact", href: "#contact" },
21
+ ],
22
+ },
23
+ {
24
+ heading: "Resources",
25
+ links: [
26
+ { name: "Free Consultation", href: "#contact" },
27
+ { name: "Case Studies", href: "#portfolio" },
28
+ { name: "Get Quote", href: "#pricing" },
29
+ { name: "Privacy Policy", href: "#privacy" },
30
+ ],
31
+ },
32
+ ];
33
+ /**
34
+ * Upgraded preset Footer for the Digital Agency template
35
+ * - Uses the shared Footer slot API
36
+ * - Keeps brand distinct, flush-left; aligns top with nav headers
37
+ */
38
+ export function Footer() {
39
+ return (_jsx(SharedFooter, { footerBrandName: "Nexus Digital", footerNavLinks: agencyNavLinks, ariaLabel: "Footer section", section: {
40
+ className: "w-full bg-gray-100 dark:bg-gray-900 text-gray-800 dark:text-white",
41
+ }, container: { className: "max-w-7xl mx-auto px-6" }, brand: {
42
+ className: "text-2xl font-bold font-poppins text-fuchsia-600 dark:text-fuchsia-400",
43
+ }, brandWrapper: {
44
+ className: "flex flex-col items-start text-left lg:pr-8",
45
+ }, navSection: {
46
+ className: "flex flex-col lg:flex-row items-start justify-center gap-8 lg:gap-12 pt-6.5 pb-8",
47
+ }, navGroup: { className: "flex flex-col items-start text-left pt-1.5" }, navHeading: {
48
+ className: "font-bold font-poppins text-gray-800 dark:text-white mb-3 text-sm uppercase tracking-wider",
49
+ }, navLink: {
50
+ className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 text-sm mb-2 block font-inter",
51
+ }, socialSection: {
52
+ className: "flex items-center justify-center gap-4 py-4",
53
+ }, socialLink: {
54
+ className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 p-2 rounded-md hover:bg-gray-200 dark:hover:bg-gray-800",
55
+ }, socialIcon: { className: "h-5 w-5" }, copyright: {
56
+ className: "text-center text-xs text-gray-600 dark:text-gray-400 py-4 border-t border-gray-200 dark:border-gray-800 font-inter",
57
+ } }));
58
+ }
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { Footer as SharedFooter } from "@nextworks/blocks-sections";
4
+ const agencyNavLinks = [
5
+ {
6
+ heading: "Services",
7
+ links: [
8
+ { name: "Web Design & Development", href: "#services" },
9
+ { name: "SEO & Digital Marketing", href: "#services" },
10
+ { name: "E-commerce Solutions", href: "#services" },
11
+ { name: "Brand Identity & Design", href: "#services" },
12
+ ],
13
+ },
14
+ {
15
+ heading: "Company",
16
+ links: [
17
+ { name: "About Us", href: "#about" },
18
+ { name: "Our Work", href: "#portfolio" },
19
+ { name: "Process", href: "#process" },
20
+ { name: "Contact", href: "#contact" },
21
+ ],
22
+ },
23
+ {
24
+ heading: "Resources",
25
+ links: [
26
+ { name: "Free Consultation", href: "#contact" },
27
+ { name: "Case Studies", href: "#portfolio" },
28
+ { name: "Get Quote", href: "#pricing" },
29
+ { name: "Privacy Policy", href: "#privacy" },
30
+ ],
31
+ },
32
+ ];
33
+ /**
34
+ * Upgraded preset Footer for the Digital Agency template
35
+ * - Uses the shared Footer slot API
36
+ * - Keeps brand distinct, flush-left; aligns top with nav headers
37
+ */
38
+ export function Footer() {
39
+ return (<SharedFooter footerBrandName="Nexus Digital" footerNavLinks={agencyNavLinks} ariaLabel="Footer section" section={{
40
+ className: "w-full bg-gray-100 dark:bg-gray-900 text-gray-800 dark:text-white",
41
+ }} container={{ className: "max-w-7xl mx-auto px-6" }} brand={{
42
+ className: "text-2xl font-bold font-poppins text-fuchsia-600 dark:text-fuchsia-400",
43
+ }} brandWrapper={{
44
+ className: "flex flex-col items-start text-left lg:pr-8",
45
+ }} navSection={{
46
+ className: "flex flex-col lg:flex-row items-start justify-center gap-8 lg:gap-12 pt-6.5 pb-8",
47
+ }} navGroup={{ className: "flex flex-col items-start text-left pt-1.5" }} navHeading={{
48
+ className: "font-bold font-poppins text-gray-800 dark:text-white mb-3 text-sm uppercase tracking-wider",
49
+ }} navLink={{
50
+ className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 text-sm mb-2 block font-inter",
51
+ }} socialSection={{
52
+ className: "flex items-center justify-center gap-4 py-4",
53
+ }} socialLink={{
54
+ className: "text-gray-600 dark:text-gray-400 hover:text-fuchsia-600 dark:hover:text-fuchsia-400 transition-colors duration-200 p-2 rounded-md hover:bg-gray-200 dark:hover:bg-gray-800",
55
+ }} socialIcon={{ className: "h-5 w-5" }} copyright={{
56
+ className: "text-center text-xs text-gray-600 dark:text-gray-400 py-4 border-t border-gray-200 dark:border-gray-800 font-inter",
57
+ }}/>);
58
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ /**
3
+ * Upgraded HeroNew preset for the digital agency template,
4
+ * wired to the shared HeroSplit with slots + cn API.
5
+ */
6
+ export declare function Hero(): React.JSX.Element;
7
+ //# sourceMappingURL=Hero.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Hero.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;GAGG;AACH,wBAAgB,IAAI,sBA+EnB"}
@@ -0,0 +1,69 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { HeroSplit } from "@nextworks/blocks-sections";
4
+ import { NetworkPattern } from "../components/NetworkPattern";
5
+ /**
6
+ * Upgraded HeroNew preset for the digital agency template,
7
+ * wired to the shared HeroSplit with slots + cn API.
8
+ */
9
+ export function Hero() {
10
+ return (_jsx("section", { id: "home", className: "bg-white dark:bg-black", children: _jsx(HeroSplit, { section: {
11
+ className: "relative bg-gradient-to-br from-violet-600 to-fuchsia-600 px-6 pt-8 pb-16 md:pt-12 md:pb-20 text-white hero-pattern",
12
+ }, heading: {
13
+ text: "Digital Innovation That Drives Growth",
14
+ className: "text-5xl md:text-5xl lg:text-7xl font-extrabold leading-tight text-white font-poppins",
15
+ }, subheading: {
16
+ text: "We craft exceptional digital experiences that transform businesses. From cutting-edge web applications to AI-powered solutions, we turn your vision into reality.",
17
+ className: "mt-6 text-xl md:text-1xl text-white/90 max-w-3xl font-inter font-medium leading-relaxed",
18
+ }, cta1: {
19
+ label: "Start Your Project",
20
+ href: "#contact",
21
+ variant: "default",
22
+ size: "lg",
23
+ className: [
24
+ "font-poppins font-semibold px-8 py-3 shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 text-lg",
25
+ "[--btn-bg:theme(colors.fuchsia.600)]",
26
+ "hover:[--btn-hover-bg:theme(colors.fuchsia.700)]",
27
+ "[--btn-fg:theme(colors.white)]",
28
+ "hover:[--btn-hover-fg:theme(colors.white)]",
29
+ ].join(" "),
30
+ }, cta2: {
31
+ label: "Explore Solutions",
32
+ href: "#services",
33
+ variant: "outline",
34
+ size: "lg",
35
+ className: [
36
+ "font-poppins font-semibold px-8 py-3 text-lg shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
37
+ "border-2", // match previous thickness
38
+ // set colors via vars
39
+ "[--btn-fg:oklch(0.51_0.18_341)]", // fuchsia-700-ish
40
+ "[--btn-border:oklch(0.97_0.01_0)]", // white/90 approx
41
+ "[--btn-bg:oklch(0.97_0.01_0_/0.9)]",
42
+ "hover:[--btn-hover-bg:oklch(1_0_0)]", // white
43
+ "hover:[--btn-hover-fg:oklch(0.51_0.18_341)]",
44
+ // dark: make it a light outline with white text
45
+ "dark:[--btn-fg:oklch(1_0_0)]",
46
+ "dark:[--btn-border:oklch(1_0_0_/0.9)]",
47
+ "dark:[--btn-bg:transparent]",
48
+ "dark:hover:[--btn-hover-bg:oklch(1_0_0))]",
49
+ ].join(" "),
50
+ }, image: {
51
+ src: undefined,
52
+ alt: "Digital innovation network visualization",
53
+ className: "object-contain",
54
+ }, imageLayout: "full-bleed", fallback: _jsx(NetworkPattern, {}), imageContainer: { className: "mt-10 sm:mt-10 md:mt-0 md:mr-0 lg:mr-7" },
55
+ // imageContainer={{
56
+ // className:
57
+ // "relative w-full min-h-[16rem] h-[20rem] md:h-[28rem] lg:h-[32rem] self-start mt-20 lg:mt-0 mb-10 lg:mb-0",
58
+ // }}
59
+ textContainer: {
60
+ className: "flex-1 px-5 lg:px-8 lg:self-start pt-0 md:pt-2 lg:pt-4",
61
+ }, buttonsContainer: {
62
+ className: [
63
+ "gap-4 mt-8 sm:flex-col lg:flex-row",
64
+ "[--btn-ring:oklch(1_0_0)]", // white ring to match on purple bg
65
+ ].join(" "),
66
+ },
67
+ // buttonsContainer={{ className: "flex gap-4 mt-8" }}
68
+ textAlign: "center", ariaLabel: "Digital innovation that drives growth hero section" }) }));
69
+ }
@@ -0,0 +1,71 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { HeroSplit } from "@nextworks/blocks-sections";
4
+ import { NetworkPattern } from "../components/NetworkPattern";
5
+ /**
6
+ * Upgraded HeroNew preset for the digital agency template,
7
+ * wired to the shared HeroSplit with slots + cn API.
8
+ */
9
+ export function Hero() {
10
+ return (<section id="home" className="bg-white dark:bg-black">
11
+ <HeroSplit section={{
12
+ className: "relative bg-gradient-to-br from-violet-600 to-fuchsia-600 px-6 pt-8 pb-16 md:pt-12 md:pb-20 text-white hero-pattern",
13
+ }} heading={{
14
+ text: "Digital Innovation That Drives Growth",
15
+ className: "text-5xl md:text-5xl lg:text-7xl font-extrabold leading-tight text-white font-poppins",
16
+ }} subheading={{
17
+ text: "We craft exceptional digital experiences that transform businesses. From cutting-edge web applications to AI-powered solutions, we turn your vision into reality.",
18
+ className: "mt-6 text-xl md:text-1xl text-white/90 max-w-3xl font-inter font-medium leading-relaxed",
19
+ }} cta1={{
20
+ label: "Start Your Project",
21
+ href: "#contact",
22
+ variant: "default",
23
+ size: "lg",
24
+ className: [
25
+ "font-poppins font-semibold px-8 py-3 shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 text-lg",
26
+ "[--btn-bg:theme(colors.fuchsia.600)]",
27
+ "hover:[--btn-hover-bg:theme(colors.fuchsia.700)]",
28
+ "[--btn-fg:theme(colors.white)]",
29
+ "hover:[--btn-hover-fg:theme(colors.white)]",
30
+ ].join(" "),
31
+ }} cta2={{
32
+ label: "Explore Solutions",
33
+ href: "#services",
34
+ variant: "outline",
35
+ size: "lg",
36
+ className: [
37
+ "font-poppins font-semibold px-8 py-3 text-lg shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5",
38
+ "border-2", // match previous thickness
39
+ // set colors via vars
40
+ "[--btn-fg:oklch(0.51_0.18_341)]", // fuchsia-700-ish
41
+ "[--btn-border:oklch(0.97_0.01_0)]", // white/90 approx
42
+ "[--btn-bg:oklch(0.97_0.01_0_/0.9)]",
43
+ "hover:[--btn-hover-bg:oklch(1_0_0)]", // white
44
+ "hover:[--btn-hover-fg:oklch(0.51_0.18_341)]",
45
+ // dark: make it a light outline with white text
46
+ "dark:[--btn-fg:oklch(1_0_0)]",
47
+ "dark:[--btn-border:oklch(1_0_0_/0.9)]",
48
+ "dark:[--btn-bg:transparent]",
49
+ "dark:hover:[--btn-hover-bg:oklch(1_0_0))]",
50
+ ].join(" "),
51
+ }} image={{
52
+ src: undefined,
53
+ alt: "Digital innovation network visualization",
54
+ className: "object-contain",
55
+ }} imageLayout="full-bleed" fallback={<NetworkPattern />} imageContainer={{ className: "mt-10 sm:mt-10 md:mt-0 md:mr-0 lg:mr-7" }}
56
+ // imageContainer={{
57
+ // className:
58
+ // "relative w-full min-h-[16rem] h-[20rem] md:h-[28rem] lg:h-[32rem] self-start mt-20 lg:mt-0 mb-10 lg:mb-0",
59
+ // }}
60
+ textContainer={{
61
+ className: "flex-1 px-5 lg:px-8 lg:self-start pt-0 md:pt-2 lg:pt-4",
62
+ }} buttonsContainer={{
63
+ className: [
64
+ "gap-4 mt-8 sm:flex-col lg:flex-row",
65
+ "[--btn-ring:oklch(1_0_0)]", // white ring to match on purple bg
66
+ ].join(" "),
67
+ }}
68
+ // buttonsContainer={{ className: "flex gap-4 mt-8" }}
69
+ textAlign="center" ariaLabel="Digital innovation that drives growth hero section"/>
70
+ </section>);
71
+ }
@@ -0,0 +1,21 @@
1
+ import type { ComponentProps } from "react";
2
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
3
+ /**
4
+ * Digital Agency preset Navbar (Nexus Digital)
5
+ *
6
+ * - Preserves original branding, colors, and blur effect
7
+ * - No CTA button (ctaButton = null)
8
+ * - Fuchsia hover/focus accents for links and toggles
9
+ * - Exposes the full Shared Navbar API via shallow-merge overrides
10
+ *
11
+ * Example overrides:
12
+ * <Navbar
13
+ * links={{ className: "hover:text-emerald-600" }}
14
+ * container={{ className: "max-w-6xl mx-auto" }}
15
+ * />
16
+ */
17
+ type SharedNavbarProps = ComponentProps<typeof SharedNavbar>;
18
+ type PresetOverrides = Partial<SharedNavbarProps>;
19
+ export declare function Navbar(overrides?: PresetOverrides): import("react").JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=Navbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/Navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAGpE;;;;;;;;;;;;;GAaG;AACH,KAAK,iBAAiB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC;AAC7D,KAAK,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AA2FlD,wBAAgB,MAAM,CAAC,SAAS,GAAE,eAAoB,+BAOrD"}
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
4
+ import { BrandNodeGradientRing } from "@nextworks/blocks-core";
5
+ const defaultProps = {
6
+ brand: "Nexus Digital",
7
+ brandNode: (_jsx(BrandNodeGradientRing, { gradient: "conic-gradient(#7c3aed, #ec4899, #7c3aed)" })),
8
+ menuItems: [
9
+ { label: "Home", href: "#home" },
10
+ { label: "Services", href: "#services" },
11
+ { label: "Portfolio", href: "#portfolio" },
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: "Nexus Digital main navigation",
20
+ // Allow page-level layout overrides if needed
21
+ className: "",
22
+ // Style slots (preserve original look; add defaults for new slots)
23
+ nav: {
24
+ className: "bg-white/80 dark:bg-gray-900/80 backdrop-blur border-b border-gray-200 dark:border-gray-800 " +
25
+ "text-gray-800 dark:text-white " +
26
+ // Accent variables for this preset (read by toggle, links, mobile links)
27
+ "[--navbar-accent:theme(colors.fuchsia.600)] dark:[--navbar-accent:theme(colors.fuchsia.400)] " +
28
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
29
+ "[--navbar-hover-bg:theme(colors.fuchsia.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.24 0.07 330) 20%, transparent)] " +
30
+ "[--navbar-ring:theme(colors.fuchsia.500)] dark:[--navbar-ring:theme(colors.fuchsia.400)] " +
31
+ "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
32
+ },
33
+ brandText: {
34
+ className: "text-2xl font-bold font-poppins text-fuchsia-600 dark:text-fuchsia-400",
35
+ },
36
+ links: {
37
+ className: "text-sm font-inter font-medium text-gray-700 dark:text-gray-200 " +
38
+ "hover:text-fuchsia-600 dark:hover:text-fuchsia-400 " +
39
+ "focus:ring-[var(--navbar-ring)]",
40
+ },
41
+ // CTA hidden by default; styled to match theme if enabled later
42
+ ctaButtonStyle: {
43
+ variant: "default",
44
+ size: "default",
45
+ className: "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 " +
46
+ "bg-fuchsia-600 text-white hover:bg-fuchsia-700 " +
47
+ "dark:bg-fuchsia-500 dark:hover:bg-fuchsia-400",
48
+ },
49
+ mobileMenu: {
50
+ className: "border-t border-gray-200 dark:border-gray-800",
51
+ },
52
+ container: {
53
+ className: "max-w-7xl mx-auto",
54
+ },
55
+ brandWrapper: {
56
+ className: "",
57
+ },
58
+ desktopMenu: {
59
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
60
+ },
61
+ toggleButton: {
62
+ className: "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
63
+ "hover:bg-fuchsia-50 dark:hover:bg-fuchsia-900/20 " +
64
+ "focus:outline-none focus:ring-2 focus:ring-fuchsia-500 dark:focus:ring-fuchsia-400",
65
+ },
66
+ colorModeWrapper: {
67
+ className: "ml-2",
68
+ },
69
+ // With variables above, ThemeToggle can rely on them; explicit override optional
70
+ // themeToggle: { ... }
71
+ ctaButtonWrapper: {
72
+ className: "ml-2",
73
+ },
74
+ mobileMenuInner: {
75
+ className: "space-y-2 px-4 pt-2 pb-4",
76
+ },
77
+ // Mobile links will read --navbar-hover-bg; explicit class optional
78
+ mobileLinks: {
79
+ className: "hover:bg-[var(--navbar-hover-bg)]",
80
+ },
81
+ };
82
+ export function Navbar(overrides = {}) {
83
+ // Shallow-merge: providing a slot object replaces that slot entirely.
84
+ const props = Object.assign(Object.assign({}, defaultProps), overrides);
85
+ return _jsx(SharedNavbar, Object.assign({}, props));
86
+ }
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import { Navbar as SharedNavbar } from "@nextworks/blocks-sections";
3
+ import { BrandNodeGradientRing } from "@nextworks/blocks-core";
4
+ const defaultProps = {
5
+ brand: "Nexus Digital",
6
+ brandNode: (<BrandNodeGradientRing gradient="conic-gradient(#7c3aed, #ec4899, #7c3aed)"/>),
7
+ menuItems: [
8
+ { label: "Home", href: "#home" },
9
+ { label: "Services", href: "#services" },
10
+ { label: "Portfolio", href: "#portfolio" },
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: "Nexus Digital main navigation",
19
+ // Allow page-level layout overrides if needed
20
+ className: "",
21
+ // Style slots (preserve original look; add defaults for new slots)
22
+ nav: {
23
+ className: "bg-white/80 dark:bg-gray-900/80 backdrop-blur border-b border-gray-200 dark:border-gray-800 " +
24
+ "text-gray-800 dark:text-white " +
25
+ // Accent variables for this preset (read by toggle, links, mobile links)
26
+ "[--navbar-accent:theme(colors.fuchsia.600)] dark:[--navbar-accent:theme(colors.fuchsia.400)] " +
27
+ "[--navbar-toggle-bg:theme(colors.white)] dark:[--navbar-toggle-bg:theme(colors.gray.900)] " +
28
+ "[--navbar-hover-bg:theme(colors.fuchsia.50)] dark:[--navbar-hover-bg:color-mix(in oklab,oklch(0.24 0.07 330) 20%, transparent)] " +
29
+ "[--navbar-ring:theme(colors.fuchsia.500)] dark:[--navbar-ring:theme(colors.fuchsia.400)] " +
30
+ "[--navbar-border:theme(colors.gray.200)] dark:[--navbar-border:theme(colors.gray.800)]",
31
+ },
32
+ brandText: {
33
+ className: "text-2xl font-bold font-poppins text-fuchsia-600 dark:text-fuchsia-400",
34
+ },
35
+ links: {
36
+ className: "text-sm font-inter font-medium text-gray-700 dark:text-gray-200 " +
37
+ "hover:text-fuchsia-600 dark:hover:text-fuchsia-400 " +
38
+ "focus:ring-[var(--navbar-ring)]",
39
+ },
40
+ // CTA hidden by default; styled to match theme if enabled later
41
+ ctaButtonStyle: {
42
+ variant: "default",
43
+ size: "default",
44
+ className: "shadow-lg hover:shadow-xl transition-all duration-200 hover:-translate-y-0.5 " +
45
+ "bg-fuchsia-600 text-white hover:bg-fuchsia-700 " +
46
+ "dark:bg-fuchsia-500 dark:hover:bg-fuchsia-400",
47
+ },
48
+ mobileMenu: {
49
+ className: "border-t border-gray-200 dark:border-gray-800",
50
+ },
51
+ container: {
52
+ className: "max-w-7xl mx-auto",
53
+ },
54
+ brandWrapper: {
55
+ className: "",
56
+ },
57
+ desktopMenu: {
58
+ className: "hidden items-center space-x-1 md:flex lg:space-x-6",
59
+ },
60
+ toggleButton: {
61
+ className: "md:hidden flex items-center justify-center rounded-md p-2 transition-colors " +
62
+ "hover:bg-fuchsia-50 dark:hover:bg-fuchsia-900/20 " +
63
+ "focus:outline-none focus:ring-2 focus:ring-fuchsia-500 dark:focus:ring-fuchsia-400",
64
+ },
65
+ colorModeWrapper: {
66
+ className: "ml-2",
67
+ },
68
+ // With variables above, ThemeToggle can rely on them; explicit override optional
69
+ // themeToggle: { ... }
70
+ ctaButtonWrapper: {
71
+ className: "ml-2",
72
+ },
73
+ mobileMenuInner: {
74
+ className: "space-y-2 px-4 pt-2 pb-4",
75
+ },
76
+ // Mobile links will read --navbar-hover-bg; explicit class optional
77
+ mobileLinks: {
78
+ className: "hover:bg-[var(--navbar-hover-bg)]",
79
+ },
80
+ };
81
+ export function Navbar(overrides = {}) {
82
+ // Shallow-merge: providing a slot object replaces that slot entirely.
83
+ const props = Object.assign(Object.assign({}, defaultProps), overrides);
84
+ return <SharedNavbar {...props}/>;
85
+ }
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ /**
3
+ * NetworkPattern
4
+ * Tailwind-based animated network background for hero fallbacks.
5
+ * Lightweight and dependency-free (no Chakra).
6
+ */
7
+ export declare const NetworkPattern: React.FC;
8
+ //# sourceMappingURL=NetworkPattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkPattern.d.ts","sourceRoot":"","sources":["../../../../src/templates/digitalagency/components/NetworkPattern.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EA+RlC,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * NetworkPattern
5
+ * Tailwind-based animated network background for hero fallbacks.
6
+ * Lightweight and dependency-free (no Chakra).
7
+ */
8
+ export const NetworkPattern = () => {
9
+ return (
10
+ // <div className="relative h-full w-full">
11
+ _jsxs("div", { className: "relative h-full w-full overflow-hidden", children: [_jsxs("div", { className: "pointer-events-none absolute inset-0 -z-10 overflow-hidden", children: [_jsx("div", { className: "absolute -top-16 -left-16 h-72 w-72 rounded-full bg-blue-500/25 blur-3xl" }), _jsx("div", { className: "absolute right-0 bottom-0 h-80 w-80 rounded-full bg-cyan-400/25 blur-3xl" }), _jsx("div", { className: "absolute top-14 right-1/3 h-56 w-56 rounded-full bg-indigo-500/15 blur-3xl" }), _jsx("div", { className: "absolute -bottom-10 left-1/4 h-64 w-64 rounded-full bg-sky-500/10 blur-3xl" })] }), _jsxs("svg", { width: "100%", height: "100%", viewBox: "0 0 900 520", className: "absolute top-0 left-0 [transform:scale(1.12)]", children: [_jsxs("defs", { children: [_jsxs("linearGradient", { id: "nodeGradient", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [_jsx("stop", { offset: "0%", stopColor: "#3B82F6", stopOpacity: 1 }), _jsx("stop", { offset: "100%", stopColor: "#2563EB", stopOpacity: 1 })] }), _jsxs("linearGradient", { id: "lineGradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [_jsx("stop", { offset: "0%", stopColor: "#60A5FA", stopOpacity: 0.28 }), _jsx("stop", { offset: "50%", stopColor: "#3B82F6", stopOpacity: 0.6 }), _jsx("stop", { offset: "100%", stopColor: "#60A5FA", stopOpacity: 0.28 })] })] }), _jsxs("g", { className: "opacity-30", children: [Array.from({ length: 18 }).map((_, i) => (_jsx("line", { x1: i * 50, y1: 0, x2: i * 50, y2: 520, stroke: "#e5e7eb", strokeWidth: "0.5" }, `v-${i}`))), Array.from({ length: 12 }).map((_, i) => (_jsx("line", { x1: 0, y1: i * 45, x2: 900, y2: i * 45, stroke: "#e5e7eb", strokeWidth: "0.5" }, `h-${i}`)))] }), _jsxs("g", { children: [_jsx("line", { x1: "120", y1: "80", x2: "320", y2: "180", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "320", y1: "180", x2: "600", y2: "140", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "600", y1: "140", x2: "720", y2: "340", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "320", y1: "180", x2: "420", y2: "420", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "120", y1: "80", x2: "220", y2: "320", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "220", y1: "320", x2: "420", y2: "420", stroke: "url(#lineGradient)", strokeWidth: "2" }), _jsx("line", { x1: "60", y1: "260", x2: "120", y2: "80", stroke: "url(#lineGradient)", strokeWidth: "1.5" }), _jsx("line", { x1: "420", y1: "420", x2: "580", y2: "470", stroke: "url(#lineGradient)", strokeWidth: "1.5" }), _jsx("line", { x1: "600", y1: "140", x2: "780", y2: "80", stroke: "url(#lineGradient)", strokeWidth: "1.5" }), _jsx("line", { x1: "320", y1: "180", x2: "540", y2: "260", stroke: "url(#lineGradient)", strokeWidth: "1.5" }), _jsx("line", { x1: "220", y1: "320", x2: "540", y2: "260", stroke: "url(#lineGradient)", strokeWidth: "1.5" })] }), _jsxs("g", { children: [_jsx("circle", { cx: "320", cy: "180", r: "12", fill: "url(#nodeGradient)", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "12;15;12", dur: "3s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "600", cy: "140", r: "10", fill: "url(#nodeGradient)", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "10;13;10", dur: "3.5s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "120", cy: "80", r: "8", fill: "#3B82F6", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "8;11;8", dur: "4s", begin: "1s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "420", cy: "420", r: "8", fill: "#3B82F6", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "8;11;8", dur: "4.5s", begin: "2.5s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "720", cy: "340", r: "8", fill: "#3B82F6", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "8;11;8", dur: "3.8s", begin: "1.8s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "220", cy: "320", r: "8", fill: "#3B82F6", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "8;11;8", dur: "4.2s", begin: "0.5s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "60", cy: "260", r: "5", fill: "#60A5FA", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "5;7;5", dur: "5s", begin: "3s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "580", cy: "470", r: "5", fill: "#60A5FA", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "5;7;5", dur: "5.5s", begin: "4s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "780", cy: "80", r: "5", fill: "#60A5FA", className: "pulse-node", children: _jsx("animate", { attributeName: "r", values: "5;7;5", dur: "4.8s", begin: "2s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "200", cy: "100", r: "3", fill: "#93C5FD" }), _jsx("circle", { cx: "380", cy: "200", r: "3", fill: "#93C5FD" }), _jsx("circle", { cx: "150", cy: "320", r: "3", fill: "#93C5FD" }), _jsx("circle", { cx: "500", cy: "260", r: "3", fill: "#93C5FD" }), _jsx("circle", { cx: "660", cy: "220", r: "3", fill: "#93C5FD" }), _jsx("circle", { cx: "740", cy: "420", r: "3", fill: "#93C5FD" })] })] }), _jsx("style", { children: `
12
+ .pulse-node {
13
+ filter: drop-shadow(0 0 8px rgba(37, 99, 235, 0.3));
14
+ }
15
+
16
+ @keyframes slow-pan {
17
+ 0% {
18
+ transform: scale(1.08) translateY(0px);
19
+ }
20
+ 50% {
21
+ transform: scale(1.1) translateY(-6px);
22
+ }
23
+ 100% {
24
+ transform: scale(1.08) translateY(0px);
25
+ }
26
+ }
27
+
28
+ svg {
29
+ animation: slow-pan 18s ease-in-out infinite;
30
+ }
31
+
32
+ @media (max-width: 768px) {
33
+ svg {
34
+ transform: scale(1.15);
35
+ }
36
+ }
37
+ ` })] }));
38
+ };