morethanadiagnosis-hub/web/out/login.html
Claude 1c0680b1de
feat: implement frontend home screen with API navigation
- Built responsive home page with navigation to API docs
- Created feature cards highlighting API capabilities
- Configured Next.js for static export
- Updated nginx to serve frontend static files
- Added nginx service to docker-compose configurations
- Fixed TypeScript issues in auth components

Components updated:
- web/app/page.tsx: Complete home page redesign
- web/components/common/Checkbox.tsx: Support ReactNode labels
- web/components/common/Link.tsx: Add onClick handler support
- web/app/(auth)/reset-password/confirm/page.tsx: Suspense boundary

Infrastructure:
- backend/nginx.conf: Serve static files from /usr/share/nginx/html
- backend/docker-compose.yml: Added nginx service
- backend/docker-compose.prod.yml: Mount frontend build output
- web/next.config.js: Static export configuration

Job ID: MTAD-IMPL-2025-11-18-CL
2025-11-18 05:50:21 +00:00

1 line
No EOL
11 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/24908548532a696d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-03f7c6bc932ce1e3.js"/><script src="/_next/static/chunks/fd9d1056-1fc65f315c536022.js" async=""></script><script src="/_next/static/chunks/117-1c6ec4db508e602a.js" async=""></script><script src="/_next/static/chunks/main-app-8701eb579938262e.js" async=""></script><script src="/_next/static/chunks/634-c9bfd8cab683cbb5.js" async=""></script><script src="/_next/static/chunks/299-3c70e0f8b88ecbb2.js" async=""></script><script src="/_next/static/chunks/238-b84527dc4d0e8072.js" async=""></script><script src="/_next/static/chunks/app/(auth)/login/page-67e9ce6dd7b9fa5f.js" async=""></script><title>MoreThanADiagnosis</title><meta name="description" content="Community platform for health advocacy and support"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans antialiased"><div class="min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900"><header class="py-6"><div class="max-w-md mx-auto px-4 sm:px-6 lg:px-8"><a class="underline decoration-1 underline-offset-2 hover:decoration-2 transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 rounded-sm text-gray-700 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100 no-underline" href="/"><h1 class="text-2xl font-bold text-primary-600 dark:text-primary-400 text-center">MoreThanADiagnosis</h1></a></div></header><main class="flex-1 flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8"><div class="w-full max-w-md space-y-8"><div class="text-center"><h2 class="text-3xl font-bold text-gray-900 dark:text-white">Welcome back</h2><p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Sign in to your account to continue</p></div><div class="bg-white dark:bg-gray-800 py-8 px-6 shadow-lg rounded-lg"><form class="space-y-6"><div class="w-full"><label for="input-9o9nl0nfy" class="block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1">Email address<span class="text-error-500 ml-1" aria-label="required">*</span></label><div class="relative"><input type="email" id="input-9o9nl0nfy" class="block w-full rounded-md border transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-offset-0 border-gray-300 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-800 dark:text-white disabled:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-60 dark:disabled:bg-gray-900 px-4 py-2" aria-invalid="false" required="" placeholder="you@example.com" autoComplete="email" name="email" value=""/></div></div><div class="w-full"><label for="input-3ul1f5r2j" class="block text-sm font-medium text-gray-700 dark:text-gray-200 mb-1">Password<span class="text-error-500 ml-1" aria-label="required">*</span></label><div class="relative"><input type="password" id="input-3ul1f5r2j" class="block w-full rounded-md border transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-offset-0 border-gray-300 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-800 dark:text-white disabled:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-60 dark:disabled:bg-gray-900 px-4 py-2" aria-invalid="false" required="" placeholder="••••••••" autoComplete="current-password" name="password" value=""/></div></div><div class="flex items-center justify-between"><div class="flex items-start"><div class="flex items-center h-5"><input type="checkbox" id="checkbox-1v5w1fe7a" class="h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-800 dark:ring-offset-gray-900" aria-invalid="false" name="rememberMe"/></div><div class="ml-3 text-sm"><label for="checkbox-1v5w1fe7a" class="text-gray-700 dark:text-gray-200">Remember me</label></div></div><a class="underline decoration-1 underline-offset-2 hover:decoration-2 transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 rounded-sm text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 text-sm" href="/auth/reset-password">Forgot password?</a></div><button class="inline-flex items-center justify-center font-semibold rounded-md transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60 bg-primary-500 hover:bg-primary-600 active:bg-primary-700 text-white shadow-sm disabled:bg-primary-300 px-6 py-3 text-lg w-full" aria-busy="false" type="submit">Sign in</button><div class="text-center text-sm text-gray-600 dark:text-gray-400">Don&#x27;t have an account?<!-- --> <a class="underline decoration-1 underline-offset-2 hover:decoration-2 transition-all focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 rounded-sm text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300" href="/auth/signup">Sign up</a></div></form></div></div></main><footer class="py-6"><div class="max-w-md mx-auto px-4 sm:px-6 lg:px-8"><p class="text-center text-sm text-gray-600 dark:text-gray-400">© <!-- -->2025<!-- --> MoreThanADiagnosis. All rights reserved.</p></div></footer></div><script src="/_next/static/chunks/webpack-03f7c6bc932ce1e3.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/24908548532a696d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[9107,[],\"ClientPageRoot\"]\n5:I[1734,[\"634\",\"static/chunks/634-c9bfd8cab683cbb5.js\",\"299\",\"static/chunks/299-3c70e0f8b88ecbb2.js\",\"238\",\"static/chunks/238-b84527dc4d0e8072.js\",\"665\",\"static/chunks/app/(auth)/login/page-67e9ce6dd7b9fa5f.js\"],\"default\",1]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\nd:I[1060,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"yGcYFFIcEuqzxcriqkURO\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"login\"],\"initialTree\":[\"\",{\"children\":[\"(auth)\",{\"children\":[\"login\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"(auth)\",{\"children\":[\"login\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(auth)\",\"children\",\"login\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(auth)\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/24908548532a696d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"MoreThanADiagnosis\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Community platform for health advocacy and support\"}]]\n3:null\n"])</script></body></html>