diff --git a/apps/sim/app/(landing)/components/not-found-view.tsx b/apps/sim/app/(landing)/components/not-found-view.tsx
new file mode 100644
index 00000000000..69a0f2d6778
--- /dev/null
+++ b/apps/sim/app/(landing)/components/not-found-view.tsx
@@ -0,0 +1,40 @@
+import Link from 'next/link'
+import { getNavBlogPosts } from '@/lib/blog/registry'
+import AuthBackground from '@/app/(auth)/components/auth-background'
+import { AUTH_PRIMARY_CTA_BASE } from '@/app/(auth)/components/auth-button-classes'
+import Navbar from '@/app/(landing)/components/navbar/navbar'
+
+/**
+ * Shared 404 view used by every `not-found.tsx` under the landing surface.
+ *
+ * Rendered outside the route-group `(shell)` layout so it owns the full
+ * viewport (Navbar + AuthBackground decoration, no Footer), matching the
+ * root `/` 404 treatment.
+ */
+export default async function NotFoundView() {
+ const blogPosts = await getNavBlogPosts()
+ return (
+
+
+
+
+
+
+ Page not found
+
+
+ The page you're looking for doesn't exist or has been moved.
+
+
+
+ Return to Home
+
+
+
+
+
+
+ )
+}
diff --git a/apps/sim/app/(landing)/integrations/[slug]/components/integration-cta-button.tsx b/apps/sim/app/(landing)/integrations/(shell)/[slug]/components/integration-cta-button.tsx
similarity index 100%
rename from apps/sim/app/(landing)/integrations/[slug]/components/integration-cta-button.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/[slug]/components/integration-cta-button.tsx
diff --git a/apps/sim/app/(landing)/integrations/[slug]/components/integration-faq.tsx b/apps/sim/app/(landing)/integrations/(shell)/[slug]/components/integration-faq.tsx
similarity index 100%
rename from apps/sim/app/(landing)/integrations/[slug]/components/integration-faq.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/[slug]/components/integration-faq.tsx
diff --git a/apps/sim/app/(landing)/integrations/[slug]/components/template-card-button.tsx b/apps/sim/app/(landing)/integrations/(shell)/[slug]/components/template-card-button.tsx
similarity index 100%
rename from apps/sim/app/(landing)/integrations/[slug]/components/template-card-button.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/[slug]/components/template-card-button.tsx
diff --git a/apps/sim/app/(landing)/integrations/[slug]/loading.tsx b/apps/sim/app/(landing)/integrations/(shell)/[slug]/loading.tsx
similarity index 100%
rename from apps/sim/app/(landing)/integrations/[slug]/loading.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/[slug]/loading.tsx
diff --git a/apps/sim/app/(landing)/integrations/[slug]/page.tsx b/apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
similarity index 99%
rename from apps/sim/app/(landing)/integrations/[slug]/page.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
index 8915a643494..51a6dfa72fe 100644
--- a/apps/sim/app/(landing)/integrations/[slug]/page.tsx
+++ b/apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
@@ -3,9 +3,9 @@ import Image from 'next/image'
import Link from 'next/link'
import { notFound } from 'next/navigation'
import { SITE_URL } from '@/lib/core/utils/urls'
-import { IntegrationCtaButton } from '@/app/(landing)/integrations/[slug]/components/integration-cta-button'
-import { IntegrationFAQ } from '@/app/(landing)/integrations/[slug]/components/integration-faq'
-import { TemplateCardButton } from '@/app/(landing)/integrations/[slug]/components/template-card-button'
+import { IntegrationCtaButton } from '@/app/(landing)/integrations/(shell)/[slug]/components/integration-cta-button'
+import { IntegrationFAQ } from '@/app/(landing)/integrations/(shell)/[slug]/components/integration-faq'
+import { TemplateCardButton } from '@/app/(landing)/integrations/(shell)/[slug]/components/template-card-button'
import { IntegrationIcon } from '@/app/(landing)/integrations/components/integration-icon'
import { blockTypeToIconMap } from '@/app/(landing)/integrations/data/icon-mapping'
import integrations from '@/app/(landing)/integrations/data/integrations.json'
diff --git a/apps/sim/app/(landing)/integrations/layout.tsx b/apps/sim/app/(landing)/integrations/(shell)/layout.tsx
similarity index 100%
rename from apps/sim/app/(landing)/integrations/layout.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/layout.tsx
diff --git a/apps/sim/app/(landing)/integrations/page.tsx b/apps/sim/app/(landing)/integrations/(shell)/page.tsx
similarity index 91%
rename from apps/sim/app/(landing)/integrations/page.tsx
rename to apps/sim/app/(landing)/integrations/(shell)/page.tsx
index 3340ba7f271..14daefeeacd 100644
--- a/apps/sim/app/(landing)/integrations/page.tsx
+++ b/apps/sim/app/(landing)/integrations/(shell)/page.tsx
@@ -1,13 +1,13 @@
import type { Metadata } from 'next'
import { Badge } from '@/components/emcn'
import { SITE_URL } from '@/lib/core/utils/urls'
-import { IntegrationCard } from './components/integration-card'
-import { IntegrationGrid } from './components/integration-grid'
-import { RequestIntegrationModal } from './components/request-integration-modal'
-import { blockTypeToIconMap } from './data/icon-mapping'
-import integrations from './data/integrations.json'
-import { POPULAR_WORKFLOWS } from './data/popular-workflows'
-import type { Integration } from './data/types'
+import { IntegrationCard } from '@/app/(landing)/integrations/components/integration-card'
+import { IntegrationGrid } from '@/app/(landing)/integrations/components/integration-grid'
+import { RequestIntegrationModal } from '@/app/(landing)/integrations/components/request-integration-modal'
+import { blockTypeToIconMap } from '@/app/(landing)/integrations/data/icon-mapping'
+import integrations from '@/app/(landing)/integrations/data/integrations.json'
+import { POPULAR_WORKFLOWS } from '@/app/(landing)/integrations/data/popular-workflows'
+import type { Integration } from '@/app/(landing)/integrations/data/types'
const allIntegrations = integrations as Integration[]
const INTEGRATION_COUNT = allIntegrations.length
diff --git a/apps/sim/app/(landing)/integrations/not-found.tsx b/apps/sim/app/(landing)/integrations/not-found.tsx
index b4ca1ec9d64..549bf6aca0f 100644
--- a/apps/sim/app/(landing)/integrations/not-found.tsx
+++ b/apps/sim/app/(landing)/integrations/not-found.tsx
@@ -1,6 +1,5 @@
import type { Metadata } from 'next'
-import Link from 'next/link'
-import { AUTH_PRIMARY_CTA_BASE } from '@/app/(auth)/components/auth-button-classes'
+import NotFoundView from '@/app/(landing)/components/not-found-view'
export const metadata: Metadata = {
title: 'Page Not Found',
@@ -8,21 +7,5 @@ export const metadata: Metadata = {
}
export default function IntegrationsNotFound() {
- return (
-
-
-
- Page not found
-
-
- The page you're looking for doesn't exist or has been moved.
-
-
-
- Return to Home
-
-
-
-
- )
+ return
}
diff --git a/apps/sim/app/(landing)/models/[provider]/[model]/loading.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/[model]/loading.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/[model]/loading.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/[model]/loading.tsx
diff --git a/apps/sim/app/(landing)/models/[provider]/[model]/opengraph-image.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/[model]/opengraph-image.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/[model]/opengraph-image.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/[model]/opengraph-image.tsx
diff --git a/apps/sim/app/(landing)/models/[provider]/[model]/page.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/[model]/page.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/[model]/page.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/[model]/page.tsx
diff --git a/apps/sim/app/(landing)/models/[provider]/loading.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/loading.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/loading.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/loading.tsx
diff --git a/apps/sim/app/(landing)/models/[provider]/opengraph-image.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/opengraph-image.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/opengraph-image.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/opengraph-image.tsx
diff --git a/apps/sim/app/(landing)/models/[provider]/page.tsx b/apps/sim/app/(landing)/models/(shell)/[provider]/page.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/[provider]/page.tsx
rename to apps/sim/app/(landing)/models/(shell)/[provider]/page.tsx
diff --git a/apps/sim/app/(landing)/models/layout.tsx b/apps/sim/app/(landing)/models/(shell)/layout.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/layout.tsx
rename to apps/sim/app/(landing)/models/(shell)/layout.tsx
diff --git a/apps/sim/app/(landing)/models/opengraph-image.tsx b/apps/sim/app/(landing)/models/(shell)/opengraph-image.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/opengraph-image.tsx
rename to apps/sim/app/(landing)/models/(shell)/opengraph-image.tsx
diff --git a/apps/sim/app/(landing)/models/page.tsx b/apps/sim/app/(landing)/models/(shell)/page.tsx
similarity index 100%
rename from apps/sim/app/(landing)/models/page.tsx
rename to apps/sim/app/(landing)/models/(shell)/page.tsx
diff --git a/apps/sim/app/(landing)/models/not-found.tsx b/apps/sim/app/(landing)/models/not-found.tsx
index 7db4e7cbfb8..e034fd58c67 100644
--- a/apps/sim/app/(landing)/models/not-found.tsx
+++ b/apps/sim/app/(landing)/models/not-found.tsx
@@ -1,6 +1,5 @@
import type { Metadata } from 'next'
-import Link from 'next/link'
-import { AUTH_PRIMARY_CTA_BASE } from '@/app/(auth)/components/auth-button-classes'
+import NotFoundView from '@/app/(landing)/components/not-found-view'
export const metadata: Metadata = {
title: 'Page Not Found',
@@ -8,21 +7,5 @@ export const metadata: Metadata = {
}
export default function ModelsNotFound() {
- return (
-
-
-
- Page not found
-
-
- The page you're looking for doesn't exist or has been moved.
-
-
-
- Return to Home
-
-
-
-
- )
+ return
}
diff --git a/apps/sim/app/not-found.tsx b/apps/sim/app/not-found.tsx
index 73b95cf2caf..74956afdaf1 100644
--- a/apps/sim/app/not-found.tsx
+++ b/apps/sim/app/not-found.tsx
@@ -1,39 +1,11 @@
import type { Metadata } from 'next'
-import Link from 'next/link'
-import { getNavBlogPosts } from '@/lib/blog/registry'
-import AuthBackground from '@/app/(auth)/components/auth-background'
-import { AUTH_PRIMARY_CTA_BASE } from '@/app/(auth)/components/auth-button-classes'
-import Navbar from '@/app/(landing)/components/navbar/navbar'
+import NotFoundView from '@/app/(landing)/components/not-found-view'
export const metadata: Metadata = {
title: 'Page Not Found',
robots: { index: false, follow: true },
}
-export default async function NotFound() {
- const blogPosts = await getNavBlogPosts()
- return (
-
-
-
-
-
-
- Page not found
-
-
- The page you're looking for doesn't exist or has been moved.
-
-
-
- Return to Home
-
-
-
-
-
-
- )
+export default function NotFound() {
+ return
}