setIsHovered(true)}
+ onMouseLeave={() => setIsHovered(false)}
+ >
!isGifExpanded && goTo(i)}
- className={`h-2 rounded-full transition-all duration-300 ${
+ className={`relative h-2 overflow-hidden rounded-full transition-all duration-300 ${
i === activeIndex
- ? "w-6 bg-neutral-900 dark:bg-white"
+ ? shouldAutoPlay
+ ? "w-6 bg-neutral-300 dark:bg-neutral-600"
+ : "w-6 bg-neutral-900 dark:bg-white"
: "w-2 bg-neutral-300 hover:bg-neutral-400 dark:bg-neutral-600 dark:hover:bg-neutral-500"
}`}
aria-label={`Go to slide ${i + 1}`}
- />
+ >
+ {i === activeIndex && shouldAutoPlay && (
+
+ )}
+
))}
diff --git a/surfsense_web/next.config.ts b/surfsense_web/next.config.ts
index 075383682..0f71a9eaf 100644
--- a/surfsense_web/next.config.ts
+++ b/surfsense_web/next.config.ts
@@ -1,3 +1,4 @@
+import path from "path";
import { createMDX } from "fumadocs-mdx/next";
import type { NextConfig } from "next";
import createNextIntlPlugin from "next-intl/plugin";
@@ -5,8 +6,12 @@ import createNextIntlPlugin from "next-intl/plugin";
// Create the next-intl plugin
const withNextIntl = createNextIntlPlugin("./i18n/request.ts");
+// TODO: Separate app routes (/login, /dashboard) from marketing routes
+// (landing page, /contact, /pricing, /docs) so the desktop build only
+// ships what desktop users actually need.
const nextConfig: NextConfig = {
output: "standalone",
+ outputFileTracingRoot: path.join(__dirname, ".."),
reactStrictMode: false,
typescript: {
ignoreBuildErrors: true,
diff --git a/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.gif b/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.gif
index 43b182f05..bc9c70417 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.gif and b/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.gif differ
diff --git a/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.mp4 b/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.mp4
index 99c9d9d1b..8c6f6cae7 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.mp4 and b/surfsense_web/public/homepage/hero_tutorial/BQnaGif_compressed.mp4 differ
diff --git a/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.gif b/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.gif
index de3330f51..afc22d9a0 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.gif and b/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.gif differ
diff --git a/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.mp4 b/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.mp4
index cbf290815..2b6d50fb5 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.mp4 and b/surfsense_web/public/homepage/hero_tutorial/ConnectorFlowGif.mp4 differ
diff --git a/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.gif b/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.gif
index 9e7b0ed58..fa29eef83 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.gif and b/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.gif differ
diff --git a/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.mp4 b/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.mp4
index bba95afe4..46758e33d 100644
Binary files a/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.mp4 and b/surfsense_web/public/homepage/hero_tutorial/DocUploadGif.mp4 differ