feat(gallery): add public templates gallery frontend (Tasks 4 & 5)

Add types, API client, page component, card components, detail modal,
and /templates route for the public templates gallery. Uses raw fetch()
for unauthenticated access, glass-card design system, and URL-synced
filters with debounced search.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 19:18:58 +00:00
parent bacdb9d466
commit 2b657fc4ac
9 changed files with 1089 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ import {
// Public pages
const LandingPage = lazy(() => import('@/pages/LandingPage'))
const PublicTemplatesPage = lazy(() => import('@/pages/PublicTemplatesPage'))
const SharedSessionPage = lazy(() => import('@/pages/SharedSessionPage'))
const SurveyPage = lazy(() => import('@/pages/SurveyPage'))
const SurveyThankYouPage = lazy(() => import('@/pages/SurveyThankYouPage'))
@@ -92,6 +93,11 @@ export const router = sentryCreateBrowserRouter([
element: page(LandingPage),
errorElement: <RouteError />,
},
{
path: '/templates',
element: page(PublicTemplatesPage),
errorElement: <RouteError />,
},
{
path: '/login',
element: <LoginPage />,