From 6251d143d10dae6e9d4eba5f0e8d1734f67583a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Sun, 1 Mar 2026 13:33:55 +0100 Subject: [PATCH] fix(dashboard): pagination and login --- .../app/(home)/_sections/why-openpanel.tsx | 49 +++--- apps/start/src/components/login-navbar.tsx | 80 ++++----- .../src/components/onboarding-left-panel.tsx | 157 ++++++++---------- .../overview/overview-top-events.tsx | 29 +++- .../src/components/profiles/table/index.tsx | 9 +- ...Id.$projectId.profiles._tabs.anonymous.tsx | 4 +- ...d.$projectId.profiles._tabs.identified.tsx | 2 +- ....$projectId.profiles._tabs.power-users.tsx | 4 +- ...onId.$projectId.settings._tabs.imports.tsx | 92 +++++----- apps/start/src/routes/_login.tsx | 4 +- apps/start/src/routes/_public.onboarding.tsx | 9 +- 11 files changed, 218 insertions(+), 221 deletions(-) diff --git a/apps/public/src/app/(home)/_sections/why-openpanel.tsx b/apps/public/src/app/(home)/_sections/why-openpanel.tsx index 43c79987..d10d4e59 100644 --- a/apps/public/src/app/(home)/_sections/why-openpanel.tsx +++ b/apps/public/src/app/(home)/_sections/why-openpanel.tsx @@ -1,13 +1,11 @@ 'use client'; -import { FeatureCardBackground } from '@/components/feature-card'; -import { Section, SectionHeader, SectionLabel } from '@/components/section'; -import { Button } from '@/components/ui/button'; -import { cn } from '@/lib/utils'; import { QuoteIcon } from 'lucide-react'; import Image from 'next/image'; -import { useState } from 'react'; import Markdown from 'react-markdown'; +import { FeatureCardBackground } from '@/components/feature-card'; +import { Section, SectionHeader, SectionLabel } from '@/components/section'; +import { cn } from '@/lib/utils'; const images = [ { @@ -65,55 +63,54 @@ const quotes: { ]; export function WhyOpenPanel() { - const [showMore, setShowMore] = useState(false); return (
- + USED BY -
+
{images.map((image) => ( -
+ ))}
-
- {quotes.slice(0, showMore ? quotes.length : 2).map((quote) => ( +
+ {quotes.map((quote) => (
- -
+ +
{quote.quote}
-
+
{quote.author} {quote.site && ( {quote.site.replace('https://', '')} @@ -123,14 +120,6 @@ export function WhyOpenPanel() {
))}
-
); diff --git a/apps/start/src/components/login-navbar.tsx b/apps/start/src/components/login-navbar.tsx index 1c703abb..67d70418 100644 --- a/apps/start/src/components/login-navbar.tsx +++ b/apps/start/src/components/login-navbar.tsx @@ -1,9 +1,9 @@ -import { useAppContext } from '@/hooks/use-app-context'; -import { cn } from '@/utils/cn'; import { MenuIcon, XIcon } from 'lucide-react'; import { useState } from 'react'; import { LogoSquare } from './logo'; -import { Button, LinkButton } from './ui/button'; +import { Button } from './ui/button'; +import { useAppContext } from '@/hooks/use-app-context'; +import { cn } from '@/utils/cn'; export function LoginNavbar({ className }: { className?: string }) { const { isSelfHosted } = useAppContext(); @@ -12,59 +12,61 @@ export function LoginNavbar({ className }: { className?: string }) { return (
- + - + {isSelfHosted ? 'Self-hosted analytics' : 'OpenPanel.dev'} - -
+ {isSelfHosted && ( + + )} +
{mobileMenuOpen && ( <> @@ -153,9 +153,9 @@ function ImportsSettings() {
-

Import History

+

Import History

-
+
@@ -172,8 +172,8 @@ function ImportsSettings() { @@ -196,7 +196,7 @@ function ImportsSettings() { - + @@ -204,9 +204,9 @@ function ImportsSettings() { {imports.map((imp) => ( -
+
{imp.config.provider}
- + {imp.config.type}
@@ -220,7 +220,7 @@ function ImportsSettings() {
{getStatusBadge(imp.status, imp.errorMessage)} {imp.statusMessage && ( -
+
{imp.statusMessage}
)} @@ -237,13 +237,13 @@ function ImportsSettings() { tooltipClassName="max-w-xs" > {imp.totalEvents.toLocaleString()}{' '} - +
{imp.status === 'processing' && ( -
+
+
                           {JSON.stringify(imp.config, null, 2)}
                         
} @@ -274,20 +274,20 @@ function ImportsSettings() { Config
- + {imp.status === 'failed' && ( )} diff --git a/apps/start/src/routes/_login.tsx b/apps/start/src/routes/_login.tsx index f4fc47a1..16c822a3 100644 --- a/apps/start/src/routes/_login.tsx +++ b/apps/start/src/routes/_login.tsx @@ -1,6 +1,6 @@ import { createFileRoute, Outlet, redirect } from '@tanstack/react-router'; -import { LoginLeftPanel } from '@/components/login-left-panel'; import { LoginNavbar } from '@/components/login-navbar'; +import { OnboardingLeftPanel } from '@/components/onboarding-left-panel'; export const Route = createFileRoute('/_login')({ beforeLoad: async ({ context }) => { @@ -16,7 +16,7 @@ function AuthLayout() {
- +
diff --git a/apps/start/src/routes/_public.onboarding.tsx b/apps/start/src/routes/_public.onboarding.tsx index 8fdfb54c..a5515f4f 100644 --- a/apps/start/src/routes/_public.onboarding.tsx +++ b/apps/start/src/routes/_public.onboarding.tsx @@ -57,11 +57,11 @@ function Component() {

- Create an account + Start tracking in minutes

- Let's start with creating your account. By creating an account you - accept the{' '} + Join 1,000+ projects already using OpenPanel. By creating an account + you accept the{' '}

+

+ No credit card required · Free 30-day trial · Cancel anytime +