From 50234d34a97b38a3bc66b7890227867cb1c8722a Mon Sep 17 00:00:00 2001 From: Richard R Date: Sun, 31 May 2026 14:10:59 -0600 Subject: [PATCH] refactor(ui): centralize button primitives and update imports across app Move all button-related class utilities and types from formPrimitives to a new ui/buttonPrimitives module. Update all component imports to reference the new location, ensuring consistent button styling and easier future maintenance. Remove redundant button code from formPrimitives and re-export as needed for admin UI compatibility. Add public.css for landing and privacy layout styles. --- src/app/(app)/signin/page.tsx | 2 +- src/app/(app)/signup/page.tsx | 2 +- src/app/(public)/layout.tsx | 376 ++------- src/app/(public)/page.tsx | 565 ++++---------- src/app/(public)/privacy/page.tsx | 445 ++++------- src/app/(public)/public.css | 733 ++++++++++++++++++ src/components/CodeBlock.tsx | 2 +- src/components/ConfirmDialog.tsx | 2 +- src/components/CookieConsentBanner.tsx | 2 +- src/components/ProgressCard.tsx | 2 +- src/components/SettingsModal.tsx | 2 +- src/components/admin/AdminFeaturesPanel.tsx | 2 +- src/components/admin/AdminProvidersPanel.tsx | 2 +- src/components/admin/ui.tsx | 17 +- src/components/auth/AuthLoader.tsx | 2 +- src/components/doclist/views/GalleryView.tsx | 2 +- .../documents/DocumentSelectionModal.tsx | 2 +- src/components/documents/DocumentSettings.tsx | 3 +- src/components/documents/ZoomControl.tsx | 2 +- src/components/formPrimitives.tsx | 58 +- src/components/reader/ReaderSidebarShell.tsx | 2 +- src/components/reader/SegmentsSidebar.tsx | 2 +- src/components/ui/buttonPrimitives.ts | 38 + 23 files changed, 1179 insertions(+), 1086 deletions(-) create mode 100644 src/app/(public)/public.css create mode 100644 src/components/ui/buttonPrimitives.ts diff --git a/src/app/(app)/signin/page.tsx b/src/app/(app)/signin/page.tsx index 23ba379..fd46578 100644 --- a/src/app/(app)/signin/page.tsx +++ b/src/app/(app)/signin/page.tsx @@ -10,7 +10,7 @@ import { useFeatureFlag } from '@/contexts/RuntimeConfigContext'; import { showPrivacyModal } from '@/components/PrivacyModal'; import { GithubIcon } from '@/components/icons/Icons'; import { LoadingSpinner } from '@/components/Spinner'; -import { buttonClass } from '@/components/formPrimitives'; +import { buttonClass } from '@/components/ui/buttonPrimitives'; function SessionExpiredLoader({ setSessionExpired }: { setSessionExpired: (v: boolean) => void }) { const searchParams = useSearchParams(); diff --git a/src/app/(app)/signup/page.tsx b/src/app/(app)/signup/page.tsx index af55a28..9d9fbf1 100644 --- a/src/app/(app)/signup/page.tsx +++ b/src/app/(app)/signup/page.tsx @@ -9,7 +9,7 @@ import { useAuthConfig, useAuthRateLimit } from '@/contexts/AuthRateLimitContext import { useFeatureFlag } from '@/contexts/RuntimeConfigContext'; import { showPrivacyModal } from '@/components/PrivacyModal'; import { LoadingSpinner } from '@/components/Spinner'; -import { buttonClass } from '@/components/formPrimitives'; +import { buttonClass } from '@/components/ui/buttonPrimitives'; import toast from 'react-hot-toast'; export default function SignUpPage() { diff --git a/src/app/(public)/layout.tsx b/src/app/(public)/layout.tsx index 2d4ff21..29606b5 100644 --- a/src/app/(public)/layout.tsx +++ b/src/app/(public)/layout.tsx @@ -1,338 +1,74 @@ import type { ReactNode } from 'react'; import Link from 'next/link'; import { getResolvedRuntimeConfigForRsc } from '@/lib/server/runtime-config-rsc'; +import { buttonClass } from '@/components/ui/buttonPrimitives'; +import './public.css'; export default async function PublicLayout({ children }: { children: ReactNode }) { const runtimeConfig = await getResolvedRuntimeConfigForRsc(); const enableUserSignups = runtimeConfig.enableUserSignups; return ( - <> - - -
- {/* ── Ambient orbs ────────────── */} -