diff --git a/apps/start/public/robots.txt b/apps/start/public/robots.txt index e9e57dc4..5a7b4b1b 100644 --- a/apps/start/public/robots.txt +++ b/apps/start/public/robots.txt @@ -1,3 +1,6 @@ # https://www.robotstxt.org/robotstxt.html User-agent: * -Disallow: +Allow: /share/ +Allow: /login +Allow: /onboarding +Disallow: / diff --git a/apps/start/src/components/login-left-panel.tsx b/apps/start/src/components/login-left-panel.tsx index 7eb7ac49..ccc4288d 100644 --- a/apps/start/src/components/login-left-panel.tsx +++ b/apps/start/src/components/login-left-panel.tsx @@ -1,4 +1,3 @@ -import { LogoSquare } from '@/components/logo'; import { Carousel, CarouselContent, @@ -64,18 +63,8 @@ const sellingPoints = [ export function LoginLeftPanel() { return (
-
- - - Back to website → - -
- {/* Carousel */} -
+
+ + + + {isSelfHosted ? 'Self-hosted analytics' : 'OpenPanel.dev'} + + + +
+ + {mobileMenuOpen && ( + <> +
+
+ ); +} diff --git a/apps/start/src/components/onboarding-left-panel.tsx b/apps/start/src/components/onboarding-left-panel.tsx index dd49ca65..d17c48cd 100644 --- a/apps/start/src/components/onboarding-left-panel.tsx +++ b/apps/start/src/components/onboarding-left-panel.tsx @@ -91,19 +91,8 @@ const onboardingSellingPoints = [ export function OnboardingLeftPanel() { return (
-
- - -
- Already have an account?{' '} - - Sign in - -
-
- {/* Carousel */} -
+
({ - meta: [{ title: createTitle(PAGE_TITLES.LOGIN) }], + meta: [ + { title: createTitle(PAGE_TITLES.LOGIN) }, + { name: 'robots', content: 'noindex, follow' }, + ], }), validateSearch: z.object({ error: z.string().optional(), @@ -26,11 +29,13 @@ function LoginPage() { return (
-

Sign in

Don't have an account?{' '} - + Create one today

diff --git a/apps/start/src/routes/_login.reset-password.tsx b/apps/start/src/routes/_login.reset-password.tsx index 1e0b2a34..bcf1789a 100644 --- a/apps/start/src/routes/_login.reset-password.tsx +++ b/apps/start/src/routes/_login.reset-password.tsx @@ -6,7 +6,10 @@ import { z } from 'zod'; export const Route = createFileRoute('/_login/reset-password')({ head: () => ({ - meta: [{ title: createTitle(PAGE_TITLES.RESET_PASSWORD) }], + meta: [ + { title: createTitle(PAGE_TITLES.RESET_PASSWORD) }, + { name: 'robots', content: 'noindex, follow' }, + ], }), component: Component, validateSearch: z.object({ diff --git a/apps/start/src/routes/_login.tsx b/apps/start/src/routes/_login.tsx index df975b66..e5add47a 100644 --- a/apps/start/src/routes/_login.tsx +++ b/apps/start/src/routes/_login.tsx @@ -1,4 +1,5 @@ import { LoginLeftPanel } from '@/components/login-left-panel'; +import { LoginNavbar } from '@/components/login-navbar'; import { SkeletonDashboard } from '@/components/skeleton-dashboard'; import { Outlet, createFileRoute, redirect } from '@tanstack/react-router'; @@ -14,6 +15,7 @@ export const Route = createFileRoute('/_login')({ function AuthLayout() { return (
+
diff --git a/apps/start/src/routes/_public.onboarding.tsx b/apps/start/src/routes/_public.onboarding.tsx index 1561c15c..653d98bb 100644 --- a/apps/start/src/routes/_public.onboarding.tsx +++ b/apps/start/src/routes/_public.onboarding.tsx @@ -18,6 +18,7 @@ export const Route = createFileRoute('/_public/onboarding')({ head: () => ({ meta: [ { title: createEntityTitle('Create an account', PAGE_TITLES.ONBOARDING) }, + { name: 'robots', content: 'noindex, follow' }, ], }), beforeLoad: async ({ context }) => { @@ -56,7 +57,6 @@ function Component() { return (
-

Create an account

diff --git a/apps/start/src/routes/_public.tsx b/apps/start/src/routes/_public.tsx index 8b736d9d..50bf898d 100644 --- a/apps/start/src/routes/_public.tsx +++ b/apps/start/src/routes/_public.tsx @@ -1,3 +1,4 @@ +import { LoginNavbar } from '@/components/login-navbar'; import { OnboardingLeftPanel } from '@/components/onboarding-left-panel'; import { Outlet, createFileRoute, redirect } from '@tanstack/react-router'; @@ -8,6 +9,7 @@ export const Route = createFileRoute('/_public')({ function OnboardingLayout() { return (
+
diff --git a/apps/start/src/routes/share.overview.$shareId.tsx b/apps/start/src/routes/share.overview.$shareId.tsx index 7989d826..34b9f813 100644 --- a/apps/start/src/routes/share.overview.$shareId.tsx +++ b/apps/start/src/routes/share.overview.$shareId.tsx @@ -1,6 +1,7 @@ import { ShareEnterPassword } from '@/components/auth/share-enter-password'; import { FullPageEmptyState } from '@/components/full-page-empty-state'; import FullPageLoadingState from '@/components/full-page-loading-state'; +import { LoginNavbar } from '@/components/login-navbar'; import { OverviewFiltersButtons } from '@/components/overview/filters/overview-filters-buttons'; import { LiveCounter } from '@/components/overview/live-counter'; import OverviewMetrics from '@/components/overview/overview-metrics'; @@ -24,11 +25,32 @@ export const Route = createFileRoute('/share/overview/$shareId')({ component: RouteComponent, validateSearch: shareSearchSchema, loader: async ({ context, params }) => { - await context.queryClient.prefetchQuery( + const share = await context.queryClient.ensureQueryData( context.trpc.share.overview.queryOptions({ shareId: params.shareId, }), ); + + return { share }; + }, + head: ({ loaderData }) => { + if (!loaderData || !loaderData.share) { + return { + meta: [ + { + title: 'Share not found - OpenPanel.dev', + }, + ], + }; + } + + return { + meta: [ + { + title: `${loaderData.share.project?.name} - ${loaderData.share.organization?.name} - OpenPanel.dev`, + }, + ], + }; }, pendingComponent: FullPageLoadingState, errorComponent: () => ( @@ -78,19 +100,8 @@ function RouteComponent() { return (
{isHeaderVisible && ( -
-
- {share.organization?.name} -

{share.project?.name}

-
- - POWERED BY - openpanel.dev - +
+
)}