nextworks 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (145) hide show
  1. package/README.md +280 -228
  2. package/dist/cli_manifests/blocks_manifest.json +193 -194
  3. package/dist/commands/blocks.d.ts +3 -0
  4. package/dist/commands/blocks.d.ts.map +1 -1
  5. package/dist/commands/blocks.js +128 -19
  6. package/dist/commands/blocks.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +136 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +696 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/remove-blocks.d.ts +4 -1
  12. package/dist/commands/remove-blocks.d.ts.map +1 -1
  13. package/dist/commands/remove-blocks.js +24 -6
  14. package/dist/commands/remove-blocks.js.map +1 -1
  15. package/dist/index.js +125 -4
  16. package/dist/index.js.map +1 -1
  17. package/dist/kits/blocks/.nextworks/docs/BLOCKS_QUICKSTART.md +104 -194
  18. package/dist/kits/blocks/.nextworks/docs/BLOCKS_README.md +115 -75
  19. package/dist/kits/blocks/.nextworks/docs/THEME_GUIDE.md +269 -251
  20. package/dist/kits/blocks/app/templates/digitalagency/PresetThemeVars.tsx +80 -80
  21. package/dist/kits/blocks/app/templates/digitalagency/README.md +42 -36
  22. package/dist/kits/blocks/app/templates/digitalagency/components/About.tsx +71 -99
  23. package/dist/kits/blocks/app/templates/digitalagency/components/CTA.tsx +40 -74
  24. package/dist/kits/blocks/app/templates/digitalagency/components/Contact.tsx +123 -227
  25. package/dist/kits/blocks/app/templates/digitalagency/components/Footer.tsx +89 -89
  26. package/dist/kits/blocks/app/templates/digitalagency/components/Hero.tsx +83 -90
  27. package/dist/kits/blocks/app/templates/digitalagency/components/Navbar.tsx +121 -168
  28. package/dist/kits/blocks/app/templates/digitalagency/components/NetworkPattern.tsx +288 -297
  29. package/dist/kits/blocks/app/templates/digitalagency/components/Portfolio.tsx +157 -157
  30. package/dist/kits/blocks/app/templates/digitalagency/components/Pricing.tsx +114 -114
  31. package/dist/kits/blocks/app/templates/digitalagency/components/Process.tsx +59 -59
  32. package/dist/kits/blocks/app/templates/digitalagency/components/Services.tsx +55 -55
  33. package/dist/kits/blocks/app/templates/digitalagency/components/Team.tsx +28 -28
  34. package/dist/kits/blocks/app/templates/digitalagency/components/Testimonials.tsx +65 -65
  35. package/dist/kits/blocks/app/templates/digitalagency/page.tsx +38 -38
  36. package/dist/kits/blocks/app/templates/gallery/PresetThemeVars.tsx +130 -85
  37. package/dist/kits/blocks/app/templates/gallery/page.tsx +357 -303
  38. package/dist/kits/blocks/app/templates/productlaunch/PresetThemeVars.tsx +75 -74
  39. package/dist/kits/blocks/app/templates/productlaunch/README.md +62 -55
  40. package/dist/kits/blocks/app/templates/productlaunch/components/About.tsx +84 -178
  41. package/dist/kits/blocks/app/templates/productlaunch/components/CTA.tsx +50 -93
  42. package/dist/kits/blocks/app/templates/productlaunch/components/Contact.tsx +231 -231
  43. package/dist/kits/blocks/app/templates/productlaunch/components/FAQ.tsx +86 -93
  44. package/dist/kits/blocks/app/templates/productlaunch/components/Features.tsx +83 -84
  45. package/dist/kits/blocks/app/templates/productlaunch/components/Footer.tsx +132 -132
  46. package/dist/kits/blocks/app/templates/productlaunch/components/Hero.tsx +88 -89
  47. package/dist/kits/blocks/app/templates/productlaunch/components/Navbar.tsx +116 -162
  48. package/dist/kits/blocks/app/templates/productlaunch/components/Pricing.tsx +106 -106
  49. package/dist/kits/blocks/app/templates/productlaunch/components/ProcessTimeline.tsx +110 -110
  50. package/dist/kits/blocks/app/templates/productlaunch/components/ServicesGrid.tsx +68 -68
  51. package/dist/kits/blocks/app/templates/productlaunch/components/Team.tsx +104 -104
  52. package/dist/kits/blocks/app/templates/productlaunch/components/Testimonials.tsx +90 -89
  53. package/dist/kits/blocks/app/templates/productlaunch/components/TrustBadges.tsx +76 -76
  54. package/dist/kits/blocks/app/templates/productlaunch/page.tsx +43 -43
  55. package/dist/kits/blocks/app/templates/saasdashboard/PresetThemeVars.tsx +80 -80
  56. package/dist/kits/blocks/app/templates/saasdashboard/README.md +44 -38
  57. package/dist/kits/blocks/app/templates/saasdashboard/components/Contact.tsx +129 -176
  58. package/dist/kits/blocks/app/templates/saasdashboard/components/Dashboard.tsx +293 -293
  59. package/dist/kits/blocks/app/templates/saasdashboard/components/FAQ.tsx +55 -55
  60. package/dist/kits/blocks/app/templates/saasdashboard/components/Features.tsx +90 -91
  61. package/dist/kits/blocks/app/templates/saasdashboard/components/Footer.tsx +77 -77
  62. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero.tsx +104 -105
  63. package/dist/kits/blocks/app/templates/saasdashboard/components/Hero_mask.tsx +126 -127
  64. package/dist/kits/blocks/app/templates/saasdashboard/components/Navbar.tsx +117 -159
  65. package/dist/kits/blocks/app/templates/saasdashboard/components/Pricing.tsx +90 -90
  66. package/dist/kits/blocks/app/templates/saasdashboard/components/SmoothScroll.tsx +96 -97
  67. package/dist/kits/blocks/app/templates/saasdashboard/components/Testimonials.tsx +72 -72
  68. package/dist/kits/blocks/app/templates/saasdashboard/components/TrustBadges.tsx +53 -53
  69. package/dist/kits/blocks/app/templates/saasdashboard/page.tsx +39 -39
  70. package/dist/kits/blocks/components/enhanced-theme-provider.tsx +195 -183
  71. package/dist/kits/blocks/components/providers/BlocksAppProviders.tsx +27 -27
  72. package/dist/kits/blocks/components/sections/About.tsx +291 -291
  73. package/dist/kits/blocks/components/sections/CTA.tsx +257 -258
  74. package/dist/kits/blocks/components/sections/CommandShowcase.tsx +517 -0
  75. package/dist/kits/blocks/components/sections/Contact.tsx +267 -267
  76. package/dist/kits/blocks/components/sections/FAQ.tsx +214 -225
  77. package/dist/kits/blocks/components/sections/FeaturedProjectShowcase.tsx +687 -0
  78. package/dist/kits/blocks/components/sections/Features.tsx +268 -270
  79. package/dist/kits/blocks/components/sections/Footer.tsx +302 -302
  80. package/dist/kits/blocks/components/sections/HeroMotion.tsx +308 -308
  81. package/dist/kits/blocks/components/sections/HeroOverlay.tsx +358 -358
  82. package/dist/kits/blocks/components/sections/HeroProductDemo.tsx +246 -0
  83. package/dist/kits/blocks/components/sections/HeroSplit.tsx +352 -352
  84. package/dist/kits/blocks/components/sections/HeroWithVideo.tsx +495 -0
  85. package/dist/kits/blocks/components/sections/Navbar.tsx +352 -353
  86. package/dist/kits/blocks/components/sections/PortfolioSimple.tsx +549 -550
  87. package/dist/kits/blocks/components/sections/Pricing.tsx +264 -264
  88. package/dist/kits/blocks/components/sections/ProcessTimeline.tsx +325 -325
  89. package/dist/kits/blocks/components/sections/ProjectDeepDive.tsx +805 -0
  90. package/dist/kits/blocks/components/sections/SelectedWorkRail.tsx +485 -0
  91. package/dist/kits/blocks/components/sections/ServicesGrid.tsx +210 -210
  92. package/dist/kits/blocks/components/sections/Team.tsx +309 -309
  93. package/dist/kits/blocks/components/sections/Testimonials.tsx +158 -158
  94. package/dist/kits/blocks/components/sections/TrustBadges.tsx +162 -162
  95. package/dist/kits/blocks/components/sections/product-demo/ApprovalInboxPanel.tsx +128 -0
  96. package/dist/kits/blocks/components/sections/product-demo/DemoStage.tsx +519 -0
  97. package/dist/kits/blocks/components/sections/product-demo/DemoWindow.tsx +140 -0
  98. package/dist/kits/blocks/components/sections/product-demo/KnowledgePanel.tsx +130 -0
  99. package/dist/kits/blocks/components/sections/product-demo/RunConsolePanel.tsx +430 -0
  100. package/dist/kits/blocks/components/sections/product-demo/TaskListPanel.tsx +302 -0
  101. package/dist/kits/blocks/components/sections/product-demo/WorkflowStudioPanel.tsx +744 -0
  102. package/dist/kits/blocks/components/sections/product-demo/types.ts +262 -0
  103. package/dist/kits/blocks/components/theme-provider.tsx +1 -34
  104. package/dist/kits/blocks/components/ui/alert-dialog.tsx +134 -134
  105. package/dist/kits/blocks/components/ui/brand-node.tsx +121 -121
  106. package/dist/kits/blocks/components/ui/button.tsx +122 -122
  107. package/dist/kits/blocks/components/ui/card.tsx +95 -95
  108. package/dist/kits/blocks/components/ui/checkbox.tsx +30 -30
  109. package/dist/kits/blocks/components/ui/cta-button.tsx +125 -125
  110. package/dist/kits/blocks/components/ui/dropdown-menu.tsx +201 -201
  111. package/dist/kits/blocks/components/ui/feature-card.tsx +91 -91
  112. package/dist/kits/blocks/components/ui/input.tsx +27 -27
  113. package/dist/kits/blocks/components/ui/label.tsx +29 -29
  114. package/dist/kits/blocks/components/ui/pricing-card.tsx +120 -120
  115. package/dist/kits/blocks/components/ui/select.tsx +25 -25
  116. package/dist/kits/blocks/components/ui/skeleton.tsx +13 -13
  117. package/dist/kits/blocks/components/ui/table.tsx +98 -98
  118. package/dist/kits/blocks/components/ui/testimonial-card.tsx +108 -108
  119. package/dist/kits/blocks/components/ui/textarea.tsx +26 -26
  120. package/dist/kits/blocks/components/ui/theme-selector.tsx +243 -247
  121. package/dist/kits/blocks/components/ui/theme-toggle.tsx +74 -74
  122. package/dist/kits/blocks/components/ui/toaster.tsx +7 -7
  123. package/dist/kits/blocks/lib/themes.ts +400 -400
  124. package/dist/kits/blocks/lib/utils.ts +6 -9
  125. package/dist/kits/blocks/package-deps.json +40 -28
  126. package/dist/kits/blocks/tsconfig.json +11 -0
  127. package/dist/kits/blocks/tsconfig.tsbuildinfo +1 -0
  128. package/dist/utils/file-operations.d.ts +3 -1
  129. package/dist/utils/file-operations.d.ts.map +1 -1
  130. package/dist/utils/file-operations.js +84 -12
  131. package/dist/utils/file-operations.js.map +1 -1
  132. package/dist/utils/installation-tracker.d.ts +2 -2
  133. package/dist/utils/installation-tracker.d.ts.map +1 -1
  134. package/dist/utils/installation-tracker.js +11 -11
  135. package/dist/utils/installation-tracker.js.map +1 -1
  136. package/dist/utils/package-manager.d.ts +6 -0
  137. package/dist/utils/package-manager.d.ts.map +1 -0
  138. package/dist/utils/package-manager.js +58 -0
  139. package/dist/utils/package-manager.js.map +1 -0
  140. package/dist/utils/yarn-pnp.d.ts +6 -0
  141. package/dist/utils/yarn-pnp.d.ts.map +1 -0
  142. package/dist/utils/yarn-pnp.js +39 -0
  143. package/dist/utils/yarn-pnp.js.map +1 -0
  144. package/package.json +5 -2
  145. package/dist/kits/blocks/notes/THEME_GUIDE.md +0 -29
@@ -1,297 +1,288 @@
1
- "use client";
2
-
3
- import React from "react";
4
-
5
- /**
6
- * NetworkPattern
7
- * Tailwind-based animated network background for hero fallbacks.
8
- * Lightweight and dependency-free (no Chakra).
9
- */
10
- export const NetworkPattern: React.FC = () => {
11
- return (
12
- // <div className="relative h-full w-full">
13
- <div className="relative h-full w-full overflow-hidden">
14
- {/* Ambient gradient blobs behind the network */}
15
- <div className="pointer-events-none absolute inset-0 -z-10 overflow-hidden">
16
- <div className="absolute -top-16 -left-16 h-72 w-72 rounded-full bg-blue-500/25 blur-3xl" />
17
- <div className="absolute right-0 bottom-0 h-80 w-80 rounded-full bg-cyan-400/25 blur-3xl" />
18
- <div className="absolute top-14 right-1/3 h-56 w-56 rounded-full bg-indigo-500/15 blur-3xl" />
19
- <div className="absolute -bottom-10 left-1/4 h-64 w-64 rounded-full bg-sky-500/10 blur-3xl" />
20
- </div>
21
-
22
- {/* Main SVG network pattern */}
23
- <svg
24
- width="100%"
25
- height="100%"
26
- viewBox="0 0 900 520"
27
- className="absolute top-0 left-0 [transform:scale(1.12)]"
28
- >
29
- <defs>
30
- <linearGradient id="nodeGradient" x1="0%" y1="0%" x2="100%" y2="100%">
31
- <stop offset="0%" stopColor="#3B82F6" stopOpacity={1} />
32
- <stop offset="100%" stopColor="#2563EB" stopOpacity={1} />
33
- </linearGradient>
34
-
35
- <linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="0%">
36
- <stop offset="0%" stopColor="#60A5FA" stopOpacity={0.28} />
37
- <stop offset="50%" stopColor="#3B82F6" stopOpacity={0.6} />
38
- <stop offset="100%" stopColor="#60A5FA" stopOpacity={0.28} />
39
- </linearGradient>
40
- </defs>
41
-
42
- {/* Subtle grid for depth */}
43
- <g className="opacity-30">
44
- {Array.from({ length: 18 }).map((_, i) => (
45
- <line
46
- key={`v-${i}`}
47
- x1={i * 50}
48
- y1={0}
49
- x2={i * 50}
50
- y2={520}
51
- stroke="#e5e7eb"
52
- strokeWidth="0.5"
53
- />
54
- ))}
55
- {Array.from({ length: 12 }).map((_, i) => (
56
- <line
57
- key={`h-${i}`}
58
- x1={0}
59
- y1={i * 45}
60
- x2={900}
61
- y2={i * 45}
62
- stroke="#e5e7eb"
63
- strokeWidth="0.5"
64
- />
65
- ))}
66
- </g>
67
-
68
- {/* Connection Lines */}
69
- <g>
70
- <line
71
- x1="120"
72
- y1="80"
73
- x2="320"
74
- y2="180"
75
- stroke="url(#lineGradient)"
76
- strokeWidth="2"
77
- />
78
- <line
79
- x1="320"
80
- y1="180"
81
- x2="600"
82
- y2="140"
83
- stroke="url(#lineGradient)"
84
- strokeWidth="2"
85
- />
86
- <line
87
- x1="600"
88
- y1="140"
89
- x2="720"
90
- y2="340"
91
- stroke="url(#lineGradient)"
92
- strokeWidth="2"
93
- />
94
- <line
95
- x1="320"
96
- y1="180"
97
- x2="420"
98
- y2="420"
99
- stroke="url(#lineGradient)"
100
- strokeWidth="2"
101
- />
102
- <line
103
- x1="120"
104
- y1="80"
105
- x2="220"
106
- y2="320"
107
- stroke="url(#lineGradient)"
108
- strokeWidth="2"
109
- />
110
- <line
111
- x1="220"
112
- y1="320"
113
- x2="420"
114
- y2="420"
115
- stroke="url(#lineGradient)"
116
- strokeWidth="2"
117
- />
118
-
119
- <line
120
- x1="60"
121
- y1="260"
122
- x2="120"
123
- y2="80"
124
- stroke="url(#lineGradient)"
125
- strokeWidth="1.5"
126
- />
127
- <line
128
- x1="420"
129
- y1="420"
130
- x2="580"
131
- y2="470"
132
- stroke="url(#lineGradient)"
133
- strokeWidth="1.5"
134
- />
135
- <line
136
- x1="600"
137
- y1="140"
138
- x2="780"
139
- y2="80"
140
- stroke="url(#lineGradient)"
141
- strokeWidth="1.5"
142
- />
143
- <line
144
- x1="320"
145
- y1="180"
146
- x2="540"
147
- y2="260"
148
- stroke="url(#lineGradient)"
149
- strokeWidth="1.5"
150
- />
151
- <line
152
- x1="220"
153
- y1="320"
154
- x2="540"
155
- y2="260"
156
- stroke="url(#lineGradient)"
157
- strokeWidth="1.5"
158
- />
159
- </g>
160
-
161
- {/* Network Nodes */}
162
- <g>
163
- <circle
164
- cx="320"
165
- cy="180"
166
- r="12"
167
- fill="url(#nodeGradient)"
168
- className="pulse-node"
169
- >
170
- <animate
171
- attributeName="r"
172
- values="12;15;12"
173
- dur="3s"
174
- repeatCount="indefinite"
175
- />
176
- </circle>
177
- <circle
178
- cx="600"
179
- cy="140"
180
- r="10"
181
- fill="url(#nodeGradient)"
182
- className="pulse-node"
183
- >
184
- <animate
185
- attributeName="r"
186
- values="10;13;10"
187
- dur="3.5s"
188
- repeatCount="indefinite"
189
- />
190
- </circle>
191
-
192
- <circle cx="120" cy="80" r="8" fill="#3B82F6" className="pulse-node">
193
- <animate
194
- attributeName="r"
195
- values="8;11;8"
196
- dur="4s"
197
- begin="1s"
198
- repeatCount="indefinite"
199
- />
200
- </circle>
201
- <circle cx="420" cy="420" r="8" fill="#3B82F6" className="pulse-node">
202
- <animate
203
- attributeName="r"
204
- values="8;11;8"
205
- dur="4.5s"
206
- begin="2.5s"
207
- repeatCount="indefinite"
208
- />
209
- </circle>
210
- <circle cx="720" cy="340" r="8" fill="#3B82F6" className="pulse-node">
211
- <animate
212
- attributeName="r"
213
- values="8;11;8"
214
- dur="3.8s"
215
- begin="1.8s"
216
- repeatCount="indefinite"
217
- />
218
- </circle>
219
- <circle cx="220" cy="320" r="8" fill="#3B82F6" className="pulse-node">
220
- <animate
221
- attributeName="r"
222
- values="8;11;8"
223
- dur="4.2s"
224
- begin="0.5s"
225
- repeatCount="indefinite"
226
- />
227
- </circle>
228
-
229
- <circle cx="60" cy="260" r="5" fill="#60A5FA" className="pulse-node">
230
- <animate
231
- attributeName="r"
232
- values="5;7;5"
233
- dur="5s"
234
- begin="3s"
235
- repeatCount="indefinite"
236
- />
237
- </circle>
238
- <circle cx="580" cy="470" r="5" fill="#60A5FA" className="pulse-node">
239
- <animate
240
- attributeName="r"
241
- values="5;7;5"
242
- dur="5.5s"
243
- begin="4s"
244
- repeatCount="indefinite"
245
- />
246
- </circle>
247
- <circle cx="780" cy="80" r="5" fill="#60A5FA" className="pulse-node">
248
- <animate
249
- attributeName="r"
250
- values="5;7;5"
251
- dur="4.8s"
252
- begin="2s"
253
- repeatCount="indefinite"
254
- />
255
- </circle>
256
-
257
- {/* Extra tiny detail nodes */}
258
- <circle cx="200" cy="100" r="3" fill="#93C5FD" />
259
- <circle cx="380" cy="200" r="3" fill="#93C5FD" />
260
- <circle cx="150" cy="320" r="3" fill="#93C5FD" />
261
- <circle cx="500" cy="260" r="3" fill="#93C5FD" />
262
- <circle cx="660" cy="220" r="3" fill="#93C5FD" />
263
- <circle cx="740" cy="420" r="3" fill="#93C5FD" />
264
- </g>
265
- </svg>
266
-
267
- {/* Component-scoped CSS for subtle effects */}
268
- <style jsx>{`
269
- .pulse-node {
270
- filter: drop-shadow(0 0 8px rgba(37, 99, 235, 0.3));
271
- }
272
-
273
- @keyframes slow-pan {
274
- 0% {
275
- transform: scale(1.08) translateY(0px);
276
- }
277
- 50% {
278
- transform: scale(1.1) translateY(-6px);
279
- }
280
- 100% {
281
- transform: scale(1.08) translateY(0px);
282
- }
283
- }
284
-
285
- svg {
286
- animation: slow-pan 18s ease-in-out infinite;
287
- }
288
-
289
- @media (max-width: 768px) {
290
- svg {
291
- transform: scale(1.15);
292
- }
293
- }
294
- `}</style>
295
- </div>
296
- );
297
- };
1
+ "use client";
2
+
3
+ import React from "react";
4
+
5
+ /**
6
+ * NetworkPattern
7
+ * Tailwind-based animated network background for hero fallbacks.
8
+ */
9
+ export const NetworkPattern: React.FC = () => {
10
+ return (
11
+ <div className="relative h-full w-full overflow-hidden">
12
+ <div className="pointer-events-none absolute inset-0 -z-10 overflow-hidden">
13
+ <div className="absolute -top-16 -left-16 h-72 w-72 rounded-full bg-blue-500/25 blur-3xl" />
14
+ <div className="absolute right-0 bottom-0 h-80 w-80 rounded-full bg-cyan-400/25 blur-3xl" />
15
+ <div className="absolute top-14 right-1/3 h-56 w-56 rounded-full bg-indigo-500/15 blur-3xl" />
16
+ <div className="absolute -bottom-10 left-1/4 h-64 w-64 rounded-full bg-sky-500/10 blur-3xl" />
17
+ </div>
18
+
19
+ <svg
20
+ width="100%"
21
+ height="100%"
22
+ viewBox="0 0 900 520"
23
+ className="absolute top-0 left-0 [transform:scale(1.12)]"
24
+ >
25
+ <defs>
26
+ <linearGradient id="nodeGradient" x1="0%" y1="0%" x2="100%" y2="100%">
27
+ <stop offset="0%" stopColor="#3B82F6" stopOpacity={1} />
28
+ <stop offset="100%" stopColor="#2563EB" stopOpacity={1} />
29
+ </linearGradient>
30
+
31
+ <linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="0%">
32
+ <stop offset="0%" stopColor="#60A5FA" stopOpacity={0.28} />
33
+ <stop offset="50%" stopColor="#3B82F6" stopOpacity={0.6} />
34
+ <stop offset="100%" stopColor="#60A5FA" stopOpacity={0.28} />
35
+ </linearGradient>
36
+ </defs>
37
+
38
+ <g className="opacity-30">
39
+ {Array.from({ length: 18 }).map((_, i) => (
40
+ <line
41
+ key={`v-${i}`}
42
+ x1={i * 50}
43
+ y1={0}
44
+ x2={i * 50}
45
+ y2={520}
46
+ stroke="#e5e7eb"
47
+ strokeWidth="0.5"
48
+ />
49
+ ))}
50
+ {Array.from({ length: 12 }).map((_, i) => (
51
+ <line
52
+ key={`h-${i}`}
53
+ x1={0}
54
+ y1={i * 45}
55
+ x2={900}
56
+ y2={i * 45}
57
+ stroke="#e5e7eb"
58
+ strokeWidth="0.5"
59
+ />
60
+ ))}
61
+ </g>
62
+
63
+ <g>
64
+ <line
65
+ x1="120"
66
+ y1="80"
67
+ x2="320"
68
+ y2="180"
69
+ stroke="url(#lineGradient)"
70
+ strokeWidth="2"
71
+ />
72
+ <line
73
+ x1="320"
74
+ y1="180"
75
+ x2="600"
76
+ y2="140"
77
+ stroke="url(#lineGradient)"
78
+ strokeWidth="2"
79
+ />
80
+ <line
81
+ x1="600"
82
+ y1="140"
83
+ x2="720"
84
+ y2="340"
85
+ stroke="url(#lineGradient)"
86
+ strokeWidth="2"
87
+ />
88
+ <line
89
+ x1="320"
90
+ y1="180"
91
+ x2="420"
92
+ y2="420"
93
+ stroke="url(#lineGradient)"
94
+ strokeWidth="2"
95
+ />
96
+ <line
97
+ x1="120"
98
+ y1="80"
99
+ x2="220"
100
+ y2="320"
101
+ stroke="url(#lineGradient)"
102
+ strokeWidth="2"
103
+ />
104
+ <line
105
+ x1="220"
106
+ y1="320"
107
+ x2="420"
108
+ y2="420"
109
+ stroke="url(#lineGradient)"
110
+ strokeWidth="2"
111
+ />
112
+
113
+ <line
114
+ x1="60"
115
+ y1="260"
116
+ x2="120"
117
+ y2="80"
118
+ stroke="url(#lineGradient)"
119
+ strokeWidth="1.5"
120
+ />
121
+ <line
122
+ x1="420"
123
+ y1="420"
124
+ x2="580"
125
+ y2="470"
126
+ stroke="url(#lineGradient)"
127
+ strokeWidth="1.5"
128
+ />
129
+ <line
130
+ x1="600"
131
+ y1="140"
132
+ x2="780"
133
+ y2="80"
134
+ stroke="url(#lineGradient)"
135
+ strokeWidth="1.5"
136
+ />
137
+ <line
138
+ x1="320"
139
+ y1="180"
140
+ x2="540"
141
+ y2="260"
142
+ stroke="url(#lineGradient)"
143
+ strokeWidth="1.5"
144
+ />
145
+ <line
146
+ x1="220"
147
+ y1="320"
148
+ x2="540"
149
+ y2="260"
150
+ stroke="url(#lineGradient)"
151
+ strokeWidth="1.5"
152
+ />
153
+ </g>
154
+
155
+ <g>
156
+ <circle
157
+ cx="320"
158
+ cy="180"
159
+ r="12"
160
+ fill="url(#nodeGradient)"
161
+ className="pulse-node"
162
+ >
163
+ <animate
164
+ attributeName="r"
165
+ values="12;15;12"
166
+ dur="3s"
167
+ repeatCount="indefinite"
168
+ />
169
+ </circle>
170
+ <circle
171
+ cx="600"
172
+ cy="140"
173
+ r="10"
174
+ fill="url(#nodeGradient)"
175
+ className="pulse-node"
176
+ >
177
+ <animate
178
+ attributeName="r"
179
+ values="10;13;10"
180
+ dur="3.5s"
181
+ repeatCount="indefinite"
182
+ />
183
+ </circle>
184
+
185
+ <circle cx="120" cy="80" r="8" fill="#3B82F6" className="pulse-node">
186
+ <animate
187
+ attributeName="r"
188
+ values="8;11;8"
189
+ dur="4s"
190
+ begin="1s"
191
+ repeatCount="indefinite"
192
+ />
193
+ </circle>
194
+ <circle cx="420" cy="420" r="8" fill="#3B82F6" className="pulse-node">
195
+ <animate
196
+ attributeName="r"
197
+ values="8;11;8"
198
+ dur="4.5s"
199
+ begin="2.5s"
200
+ repeatCount="indefinite"
201
+ />
202
+ </circle>
203
+ <circle cx="720" cy="340" r="8" fill="#3B82F6" className="pulse-node">
204
+ <animate
205
+ attributeName="r"
206
+ values="8;11;8"
207
+ dur="3.8s"
208
+ begin="1.8s"
209
+ repeatCount="indefinite"
210
+ />
211
+ </circle>
212
+ <circle cx="220" cy="320" r="8" fill="#3B82F6" className="pulse-node">
213
+ <animate
214
+ attributeName="r"
215
+ values="8;11;8"
216
+ dur="4.2s"
217
+ begin="0.5s"
218
+ repeatCount="indefinite"
219
+ />
220
+ </circle>
221
+
222
+ <circle cx="60" cy="260" r="5" fill="#60A5FA" className="pulse-node">
223
+ <animate
224
+ attributeName="r"
225
+ values="5;7;5"
226
+ dur="5s"
227
+ begin="3s"
228
+ repeatCount="indefinite"
229
+ />
230
+ </circle>
231
+ <circle cx="580" cy="470" r="5" fill="#60A5FA" className="pulse-node">
232
+ <animate
233
+ attributeName="r"
234
+ values="5;7;5"
235
+ dur="5.5s"
236
+ begin="4s"
237
+ repeatCount="indefinite"
238
+ />
239
+ </circle>
240
+ <circle cx="780" cy="80" r="5" fill="#60A5FA" className="pulse-node">
241
+ <animate
242
+ attributeName="r"
243
+ values="5;7;5"
244
+ dur="4.8s"
245
+ begin="2s"
246
+ repeatCount="indefinite"
247
+ />
248
+ </circle>
249
+
250
+ <circle cx="200" cy="100" r="3" fill="#93C5FD" />
251
+ <circle cx="380" cy="200" r="3" fill="#93C5FD" />
252
+ <circle cx="150" cy="320" r="3" fill="#93C5FD" />
253
+ <circle cx="500" cy="260" r="3" fill="#93C5FD" />
254
+ <circle cx="660" cy="220" r="3" fill="#93C5FD" />
255
+ <circle cx="740" cy="420" r="3" fill="#93C5FD" />
256
+ </g>
257
+ </svg>
258
+
259
+ <style jsx>{`
260
+ .pulse-node {
261
+ filter: drop-shadow(0 0 8px rgba(37, 99, 235, 0.3));
262
+ }
263
+
264
+ @keyframes slow-pan {
265
+ 0% {
266
+ transform: scale(1.08) translateY(0px);
267
+ }
268
+ 50% {
269
+ transform: scale(1.1) translateY(-6px);
270
+ }
271
+ 100% {
272
+ transform: scale(1.08) translateY(0px);
273
+ }
274
+ }
275
+
276
+ svg {
277
+ animation: slow-pan 18s ease-in-out infinite;
278
+ }
279
+
280
+ @media (max-width: 768px) {
281
+ svg {
282
+ transform: scale(1.15);
283
+ }
284
+ }
285
+ `}</style>
286
+ </div>
287
+ );
288
+ };