Merge pull request #14 from fullsizemalt/claude/build-frontend-home-012xoTDMpYDsGdrWYRe2kVZ2
Build frontend home screen with API integration
This commit is contained in:
commit
65be7e1522
43 changed files with 333 additions and 19 deletions
|
|
@ -126,6 +126,7 @@ services:
|
||||||
- ./ssl:/etc/nginx/ssl:ro
|
- ./ssl:/etc/nginx/ssl:ro
|
||||||
- ./certbot/conf:/etc/letsencrypt:ro
|
- ./certbot/conf:/etc/letsencrypt:ro
|
||||||
- ./certbot/www:/var/www/certbot:ro
|
- ./certbot/www:/var/www/certbot:ro
|
||||||
|
- ../web/out:/usr/share/nginx/html:ro
|
||||||
networks:
|
networks:
|
||||||
- mtad-network
|
- mtad-network
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,26 @@ services:
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
|
nginx:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: mtad-nginx
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
volumes:
|
||||||
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ../web/out:/usr/share/nginx/html:ro
|
||||||
|
networks:
|
||||||
|
- mtad-network
|
||||||
|
depends_on:
|
||||||
|
- api
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
mtad-network:
|
mtad-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|
|
||||||
|
|
@ -151,9 +151,16 @@ http {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Default response
|
# Frontend static files
|
||||||
location / {
|
location / {
|
||||||
return 404;
|
root /usr/share/nginx/html;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
|
||||||
|
# Cache static assets
|
||||||
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
||||||
|
expires 1y;
|
||||||
|
add_header Cache-Control "public, immutable";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Deny access to sensitive files
|
# Deny access to sensitive files
|
||||||
|
|
|
||||||
31
web/.gitignore
vendored
Normal file
31
web/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Dependencies
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Next.js
|
||||||
|
.next/
|
||||||
|
.env*.local
|
||||||
|
|
||||||
|
# Production - commit out/ directory for deployment
|
||||||
|
# out/
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
coverage/
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import React, { useState, useEffect } from 'react'
|
import React, { useState, useEffect, Suspense } from 'react'
|
||||||
import { useSearchParams, useRouter } from 'next/navigation'
|
import { useSearchParams, useRouter } from 'next/navigation'
|
||||||
import { AuthLayout } from '@/components/layouts/AuthLayout'
|
import { AuthLayout } from '@/components/layouts/AuthLayout'
|
||||||
import { Input } from '@/components/common/Input'
|
import { Input } from '@/components/common/Input'
|
||||||
|
|
@ -8,7 +8,7 @@ import { Button } from '@/components/common/Button'
|
||||||
import { Link } from '@/components/common/Link'
|
import { Link } from '@/components/common/Link'
|
||||||
import { useApi } from '@/lib/hooks/useApi'
|
import { useApi } from '@/lib/hooks/useApi'
|
||||||
|
|
||||||
export default function ResetPasswordConfirmPage() {
|
function ResetPasswordConfirmContent() {
|
||||||
const searchParams = useSearchParams()
|
const searchParams = useSearchParams()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { execute, isLoading, error } = useApi()
|
const { execute, isLoading, error } = useApi()
|
||||||
|
|
@ -193,3 +193,17 @@ export default function ResetPasswordConfirmPage() {
|
||||||
</AuthLayout>
|
</AuthLayout>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default function ResetPasswordConfirmPage() {
|
||||||
|
return (
|
||||||
|
<Suspense fallback={
|
||||||
|
<AuthLayout title="Loading..." subtitle="Please wait">
|
||||||
|
<div className="flex justify-center py-8">
|
||||||
|
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"></div>
|
||||||
|
</div>
|
||||||
|
</AuthLayout>
|
||||||
|
}>
|
||||||
|
<ResetPasswordConfirmContent />
|
||||||
|
</Suspense>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
import type { Metadata } from 'next'
|
import type { Metadata } from 'next'
|
||||||
import { Inter } from 'next/font/google'
|
|
||||||
import './globals.css'
|
import './globals.css'
|
||||||
|
|
||||||
const inter = Inter({ subsets: ['latin'] })
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: 'MoreThanADiagnosis',
|
title: 'MoreThanADiagnosis',
|
||||||
description: 'Community platform for health advocacy and support',
|
description: 'Community platform for health advocacy and support',
|
||||||
|
|
@ -16,7 +13,7 @@ export default function RootLayout({
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<body className={inter.className}>{children}</body>
|
<body className="font-sans antialiased">{children}</body>
|
||||||
</html>
|
</html>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
177
web/app/page.tsx
177
web/app/page.tsx
|
|
@ -1,14 +1,175 @@
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return (
|
return (
|
||||||
<main className="min-h-screen flex items-center justify-center bg-gray-50">
|
<main className="min-h-screen bg-gradient-to-br from-blue-50 via-white to-purple-50">
|
||||||
<div className="text-center">
|
{/* Header */}
|
||||||
<h1 className="text-4xl font-bold text-gray-900 mb-4">
|
<header className="bg-white shadow-sm border-b border-gray-200">
|
||||||
MoreThanADiagnosis
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
|
||||||
</h1>
|
<div className="flex items-center justify-between">
|
||||||
<p className="text-lg text-gray-600">
|
<h1 className="text-2xl font-bold text-gray-900">MoreThanADiagnosis</h1>
|
||||||
Web frontend implementation in progress...
|
<nav className="flex gap-6">
|
||||||
</p>
|
<a href="/docs" className="text-gray-600 hover:text-blue-600 transition-colors">API Docs</a>
|
||||||
|
<a href="/redoc" className="text-gray-600 hover:text-blue-600 transition-colors">ReDoc</a>
|
||||||
|
<a href="/health" className="text-gray-600 hover:text-blue-600 transition-colors">Health</a>
|
||||||
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{/* Hero Section */}
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20">
|
||||||
|
<div className="text-center mb-16">
|
||||||
|
<h2 className="text-5xl font-extrabold text-gray-900 mb-6">
|
||||||
|
Welcome to MoreThanADiagnosis
|
||||||
|
</h2>
|
||||||
|
<p className="text-xl text-gray-600 max-w-3xl mx-auto mb-8">
|
||||||
|
A community platform for health advocacy and support. Connect, share, and find resources for your health journey.
|
||||||
|
</p>
|
||||||
|
<div className="flex gap-4 justify-center">
|
||||||
|
<a
|
||||||
|
href="/docs"
|
||||||
|
className="px-8 py-3 bg-blue-600 text-white font-semibold rounded-lg hover:bg-blue-700 transition-colors shadow-lg hover:shadow-xl"
|
||||||
|
>
|
||||||
|
Explore API
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="/api/v1"
|
||||||
|
className="px-8 py-3 bg-white text-blue-600 font-semibold rounded-lg border-2 border-blue-600 hover:bg-blue-50 transition-colors"
|
||||||
|
>
|
||||||
|
API Endpoints
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Features Grid */}
|
||||||
|
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8 mt-16">
|
||||||
|
{/* API Status */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">API Status</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Backend API is live and operational</p>
|
||||||
|
<a href="/health" className="text-blue-600 hover:text-blue-700 font-medium">
|
||||||
|
Check Health →
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Interactive Docs */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">Documentation</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Interactive API documentation with Swagger UI</p>
|
||||||
|
<a href="/docs" className="text-blue-600 hover:text-blue-700 font-medium">
|
||||||
|
View Docs →
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* ReDoc */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-purple-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-purple-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">ReDoc</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Beautiful API reference documentation</p>
|
||||||
|
<a href="/redoc" className="text-blue-600 hover:text-blue-700 font-medium">
|
||||||
|
View ReDoc →
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Authentication */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-yellow-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-yellow-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">Authentication</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Secure JWT-based authentication (HS256)</p>
|
||||||
|
<span className="text-gray-500">Access & Refresh tokens</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Rate Limiting */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-red-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">Rate Limiting</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Protected endpoints with intelligent rate limiting</p>
|
||||||
|
<span className="text-gray-500">10 req/sec for API</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* HTTPS Secure */}
|
||||||
|
<div className="bg-white p-6 rounded-xl shadow-md hover:shadow-lg transition-shadow border border-gray-100">
|
||||||
|
<div className="flex items-center mb-4">
|
||||||
|
<div className="w-12 h-12 bg-indigo-100 rounded-lg flex items-center justify-center">
|
||||||
|
<svg className="w-6 h-6 text-indigo-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h3 className="ml-4 text-lg font-semibold text-gray-900">HTTPS Enabled</h3>
|
||||||
|
</div>
|
||||||
|
<p className="text-gray-600 mb-4">Cloudflare SSL with full security headers</p>
|
||||||
|
<span className="text-gray-500">Production ready</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* API Info */}
|
||||||
|
<div className="mt-16 bg-white rounded-xl shadow-md p-8 border border-gray-100">
|
||||||
|
<h3 className="text-2xl font-bold text-gray-900 mb-4">API Information</h3>
|
||||||
|
<div className="grid md:grid-cols-2 gap-6">
|
||||||
|
<div>
|
||||||
|
<h4 className="font-semibold text-gray-900 mb-2">Base URL</h4>
|
||||||
|
<code className="bg-gray-100 px-3 py-1 rounded text-sm text-gray-800">
|
||||||
|
https://mtd.runfoo.run/api/v1
|
||||||
|
</code>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 className="font-semibold text-gray-900 mb-2">Authentication</h4>
|
||||||
|
<code className="bg-gray-100 px-3 py-1 rounded text-sm text-gray-800">
|
||||||
|
Bearer {'{'}token{'}'}
|
||||||
|
</code>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 className="font-semibold text-gray-900 mb-2">Protocol</h4>
|
||||||
|
<span className="text-gray-600">HTTPS (Cloudflare Flexible SSL)</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4 className="font-semibold text-gray-900 mb-2">Database</h4>
|
||||||
|
<span className="text-gray-600">PostgreSQL 15 + Redis 7</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Footer */}
|
||||||
|
<footer className="bg-white border-t border-gray-200 mt-20">
|
||||||
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
||||||
|
<div className="text-center text-gray-600">
|
||||||
|
<p className="mb-2">MoreThanADiagnosis Platform</p>
|
||||||
|
<p className="text-sm text-gray-500">Backend API v1.0 • Deployed on nexus-vector</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
</main>
|
</main>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
||||||
label?: string
|
label?: React.ReactNode
|
||||||
error?: string
|
error?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ export interface LinkProps {
|
||||||
variant?: 'primary' | 'secondary' | 'neutral'
|
variant?: 'primary' | 'secondary' | 'neutral'
|
||||||
external?: boolean
|
external?: boolean
|
||||||
className?: string
|
className?: string
|
||||||
|
onClick?: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const variantStyles = {
|
const variantStyles = {
|
||||||
|
|
@ -23,6 +24,7 @@ export const Link = ({
|
||||||
variant = 'primary',
|
variant = 'primary',
|
||||||
external = false,
|
external = false,
|
||||||
className = '',
|
className = '',
|
||||||
|
onClick,
|
||||||
}: LinkProps) => {
|
}: LinkProps) => {
|
||||||
const baseStyles = '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'
|
const baseStyles = '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'
|
||||||
|
|
||||||
|
|
@ -35,6 +37,7 @@ export const Link = ({
|
||||||
className={combinedClassName}
|
className={combinedClassName}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -42,7 +45,7 @@ export const Link = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NextLink href={href} className={combinedClassName}>
|
<NextLink href={href} className={combinedClassName} onClick={onClick}>
|
||||||
{children}
|
{children}
|
||||||
</NextLink>
|
</NextLink>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
|
output: 'export',
|
||||||
reactStrictMode: true,
|
reactStrictMode: true,
|
||||||
swcMinify: true,
|
swcMinify: true,
|
||||||
images: {
|
images: {
|
||||||
|
unoptimized: true, // Required for static export
|
||||||
remotePatterns: [
|
remotePatterns: [
|
||||||
{
|
{
|
||||||
protocol: 'https',
|
protocol: 'https',
|
||||||
|
|
@ -11,7 +13,7 @@ const nextConfig = {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
env: {
|
env: {
|
||||||
NEXT_PUBLIC_API_BASE_URL: process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:8000/api/v1',
|
NEXT_PUBLIC_API_BASE_URL: process.env.NEXT_PUBLIC_API_BASE_URL || 'https://mtd.runfoo.run/api/v1',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
1
web/out/404.html
Normal file
1
web/out/404.html
Normal file
File diff suppressed because one or more lines are too long
2
web/out/_next/static/chunks/117-1c6ec4db508e602a.js
Normal file
2
web/out/_next/static/chunks/117-1c6ec4db508e602a.js
Normal file
File diff suppressed because one or more lines are too long
1
web/out/_next/static/chunks/238-b84527dc4d0e8072.js
Normal file
1
web/out/_next/static/chunks/238-b84527dc4d0e8072.js
Normal file
File diff suppressed because one or more lines are too long
1
web/out/_next/static/chunks/299-3c70e0f8b88ecbb2.js
Normal file
1
web/out/_next/static/chunks/299-3c70e0f8b88ecbb2.js
Normal file
File diff suppressed because one or more lines are too long
1
web/out/_next/static/chunks/634-c9bfd8cab683cbb5.js
Normal file
1
web/out/_next/static/chunks/634-c9bfd8cab683cbb5.js
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[665],{3663:function(e,r,a){Promise.resolve().then(a.bind(a,1734))},1734:function(e,r,a){"use strict";a.r(r),a.d(r,{default:function(){return c}});var s=a(7437),t=a(2265),i=a(5965),l=a(3813),n=a(4274),o=a(3607),d=a(1649),m=a(4774);function c(){let{login:e,isLoading:r,error:a}=(0,m.a)(),[c,u]=(0,t.useState)({email:"",password:"",rememberMe:!1}),[p,h]=(0,t.useState)({}),x=()=>{let e={};return c.email?/\S+@\S+\.\S+/.test(c.email)||(e.email="Email is invalid"):e.email="Email is required",c.password?c.password.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",h(e),0===Object.keys(e).length},b=async r=>{r.preventDefault(),x()&&await e({email:c.email,password:c.password})},w=e=>{let{name:r,value:a,type:s,checked:t}=e.target;u(e=>({...e,[r]:"checkbox"===s?t:a})),p[r]&&h(e=>{let a={...e};return delete a[r],a})};return(0,s.jsx)(i.g,{title:"Welcome back",subtitle:"Sign in to your account to continue",children:(0,s.jsxs)("form",{onSubmit:b,className:"space-y-6",children:[a&&(0,s.jsx)("div",{className:"bg-error-50 border border-error-200 text-error-800 px-4 py-3 rounded-md",role:"alert",children:(0,s.jsx)("p",{className:"text-sm",children:a.message||"Login failed. Please check your credentials and try again."})}),(0,s.jsx)(l.I,{type:"email",name:"email",label:"Email address",placeholder:"you@example.com",value:c.email,onChange:w,error:p.email,required:!0,fullWidth:!0,autoComplete:"email"}),(0,s.jsx)(l.I,{type:"password",name:"password",label:"Password",placeholder:"••••••••",value:c.password,onChange:w,error:p.password,required:!0,fullWidth:!0,autoComplete:"current-password"}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(o.X,{name:"rememberMe",label:"Remember me",checked:c.rememberMe,onChange:w}),(0,s.jsx)(d.r,{href:"/auth/reset-password",variant:"primary",className:"text-sm",children:"Forgot password?"})]}),(0,s.jsx)(n.z,{type:"submit",variant:"primary",size:"lg",fullWidth:!0,isLoading:r,disabled:r,children:"Sign in"}),(0,s.jsxs)("div",{className:"text-center text-sm text-gray-600 dark:text-gray-400",children:["Don't have an account?"," ",(0,s.jsx)(d.r,{href:"/auth/signup",variant:"primary",children:"Sign up"})]})]})})}}},function(e){e.O(0,[634,299,238,971,117,744],function(){return e(e.s=3663)}),_N_E=e.O()}]);
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[129],{3220:function(e,a,r){Promise.resolve().then(r.bind(r,819))},819:function(e,a,r){"use strict";r.r(a),r.d(a,{default:function(){return m}});var s=r(7437),t=r(2265),l=r(5965),o=r(3813),i=r(4274),n=r(3607),d=r(1649),c=r(4774);function m(){let{signup:e,isLoading:a,error:r}=(0,c.a)(),[m,p]=(0,t.useState)({email:"",password:"",confirmPassword:"",display_name:"",acceptTerms:!1}),[u,h]=(0,t.useState)({}),w=()=>{let e={};return m.email?/\S+@\S+\.\S+/.test(m.email)||(e.email="Email is invalid"):e.email="Email is required",m.password?m.password.length<8?e.password="Password must be at least 8 characters":/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/.test(m.password)||(e.password="Password must contain uppercase, lowercase, and number"):e.password="Password is required",m.confirmPassword?m.password!==m.confirmPassword&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",m.acceptTerms||(e.acceptTerms="You must accept the terms and conditions"),h(e),0===Object.keys(e).length},y=async a=>{a.preventDefault(),w()&&await e({email:m.email,password:m.password,display_name:m.display_name||void 0})},f=e=>{let{name:a,value:r,type:s,checked:t}=e.target;p(e=>({...e,[a]:"checkbox"===s?t:r})),u[a]&&h(e=>{let r={...e};return delete r[a],r})};return(0,s.jsx)(l.g,{title:"Create your account",subtitle:"Join the MoreThanADiagnosis community",children:(0,s.jsxs)("form",{onSubmit:y,className:"space-y-6",children:[r&&(0,s.jsx)("div",{className:"bg-error-50 border border-error-200 text-error-800 px-4 py-3 rounded-md",role:"alert",children:(0,s.jsx)("p",{className:"text-sm",children:r.message||"Signup failed. Please try again."})}),(0,s.jsx)(o.I,{type:"email",name:"email",label:"Email address",placeholder:"you@example.com",value:m.email,onChange:f,error:u.email,required:!0,fullWidth:!0,autoComplete:"email"}),(0,s.jsx)(o.I,{type:"text",name:"display_name",label:"Display name (optional)",placeholder:"How should we call you?",value:m.display_name,onChange:f,helperText:"This will be your public display name",fullWidth:!0,autoComplete:"name"}),(0,s.jsx)(o.I,{type:"password",name:"password",label:"Password",placeholder:"••••••••",value:m.password,onChange:f,error:u.password,helperText:"At least 8 characters with uppercase, lowercase, and number",required:!0,fullWidth:!0,autoComplete:"new-password"}),(0,s.jsx)(o.I,{type:"password",name:"confirmPassword",label:"Confirm password",placeholder:"••••••••",value:m.confirmPassword,onChange:f,error:u.confirmPassword,required:!0,fullWidth:!0,autoComplete:"new-password"}),(0,s.jsx)("div",{children:(0,s.jsx)(n.X,{name:"acceptTerms",checked:m.acceptTerms,onChange:f,error:u.acceptTerms,label:(0,s.jsxs)("span",{children:["I accept the"," ",(0,s.jsx)(d.r,{href:"/legal/terms",external:!0,variant:"primary",children:"Terms of Service"})," ","and"," ",(0,s.jsx)(d.r,{href:"/legal/privacy",external:!0,variant:"primary",children:"Privacy Policy"})]})})}),(0,s.jsx)(i.z,{type:"submit",variant:"primary",size:"lg",fullWidth:!0,isLoading:a,disabled:a,children:"Create account"}),(0,s.jsxs)("div",{className:"text-center text-sm text-gray-600 dark:text-gray-400",children:["Already have an account?"," ",(0,s.jsx)(d.r,{href:"/auth/login",variant:"primary",children:"Sign in"})]})]})})}}},function(e){e.O(0,[634,299,238,971,117,744],function(){return e(e.s=3220)}),_N_E=e.O()}]);
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{7589:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return n(3634)}])},3634:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),n(7043);let i=n(7437);n(2265);let o={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"},l={display:"inline-block"},r={display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},d={fontSize:14,fontWeight:400,lineHeight:"49px",margin:0};function s(){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("title",{children:"404: This page could not be found."}),(0,i.jsx)("div",{style:o,children:(0,i.jsxs)("div",{children:[(0,i.jsx)("style",{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)}}"}}),(0,i.jsx)("h1",{className:"next-error-h1",style:r,children:"404"}),(0,i.jsx)("div",{style:l,children:(0,i.jsx)("h2",{style:d,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},function(e){e.O(0,[971,117,744],function(){return e(e.s=7589)}),_N_E=e.O()}]);
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{5206:function(n,e,u){Promise.resolve().then(u.t.bind(u,7960,23))},7960:function(){}},function(n){n.O(0,[587,971,117,744],function(){return n(n.s=5206)}),_N_E=n.O()}]);
|
||||||
1
web/out/_next/static/chunks/app/page-0a8b9a7b052e6eac.js
Normal file
1
web/out/_next/static/chunks/app/page-0a8b9a7b052e6eac.js
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{3521:function(){}},function(n){n.O(0,[971,117,744],function(){return n(n.s=3521)}),_N_E=n.O()}]);
|
||||||
1
web/out/_next/static/chunks/fd9d1056-1fc65f315c536022.js
Normal file
1
web/out/_next/static/chunks/fd9d1056-1fc65f315c536022.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
web/out/_next/static/chunks/main-app-8701eb579938262e.js
Normal file
1
web/out/_next/static/chunks/main-app-8701eb579938262e.js
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{6803:function(e,n,t){Promise.resolve().then(t.t.bind(t,2846,23)),Promise.resolve().then(t.t.bind(t,9107,23)),Promise.resolve().then(t.t.bind(t,1060,23)),Promise.resolve().then(t.t.bind(t,4707,23)),Promise.resolve().then(t.t.bind(t,80,23)),Promise.resolve().then(t.t.bind(t,6423,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[971,117],function(){return n(4278),n(6803)}),_N_E=e.O()}]);
|
||||||
1
web/out/_next/static/chunks/main-e8b09ee506fc5549.js
Normal file
1
web/out/_next/static/chunks/main-e8b09ee506fc5549.js
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888],{1597:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return u(8141)}])}},function(n){var _=function(_){return n(n.s=_)};n.O(0,[774,179],function(){return _(1597),_(7253)}),_N_E=n.O()}]);
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{1981:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(8529)}])}},function(n){n.O(0,[888,774,179],function(){return n(n.s=1981)}),_N_E=n.O()}]);
|
||||||
File diff suppressed because one or more lines are too long
1
web/out/_next/static/chunks/webpack-03f7c6bc932ce1e3.js
Normal file
1
web/out/_next/static/chunks/webpack-03f7c6bc932ce1e3.js
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
!function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function d(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}},r=!0;try{a[e](n,n.exports,d),r=!1}finally{r&&delete l[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],c=!0,f=0;f<n.length;f++)i>=o&&Object.keys(d.O).every(function(e){return d.O[e](n[f])})?n.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);d.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},d.d(o,u),o},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){},d.miniCssF=function(e){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",d.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",o+n),i.src=d.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),c&&document.head.appendChild(i)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/_next/",i={272:0,587:0},d.f.j=function(e,t){var n=d.o(i,e)?i[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(272|587)$/.test(e))i[e]=0;else{var r=new Promise(function(t,r){n=i[e]=[t,r]});t.push(n[2]=r);var o=d.p+d.u(e),u=Error();d.l(o,function(t){if(d.o(i,e)&&(0!==(n=i[e])&&(i[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},d.O.j=function(e){return 0===i[e]},c=function(e,t){var n,r,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(n in u)d.o(u,n)&&(d.m[n]=u[n]);if(c)var a=c(d)}for(e&&e(t);f<o.length;f++)r=o[f],d.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return d.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
|
||||||
1
web/out/_next/static/css/24908548532a696d.css
Normal file
1
web/out/_next/static/css/24908548532a696d.css
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
@tailwind base;@tailwind components;@tailwind utilities;:root{--color-primary:#3b82f6;--color-secondary:#8b5cf6;--color-error:#ef4444;--color-success:#10b981;--color-warning:#f59e0b;--color-bg:#fff;--color-bg-secondary:#f9fafb;--color-text:#111827;--color-text-secondary:#6b7280;--color-border:#d1d5db;--spacing-unit:4px}.dark{--color-bg:#1f2937;--color-bg-secondary:#111827;--color-text:#f9fafb;--color-text-secondary:#d1d5db;--color-border:#4b5563}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden}body{color:var(--color-text);background:var(--color-bg);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (prefers-contrast:high){:root{--color-border:#000}.dark{--color-border:#fff}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-7ba65e1336b92748.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||||
1
web/out/index.html
Normal file
1
web/out/index.html
Normal file
File diff suppressed because one or more lines are too long
5
web/out/index.txt
Normal file
5
web/out/index.txt
Normal file
File diff suppressed because one or more lines are too long
1
web/out/login.html
Normal file
1
web/out/login.html
Normal file
File diff suppressed because one or more lines are too long
11
web/out/login.txt
Normal file
11
web/out/login.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
|
3: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]
|
||||||
|
4:I[4707,[],""]
|
||||||
|
5:I[6423,[],""]
|
||||||
|
6:{"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"}
|
||||||
|
7:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
|
||||||
|
8:{"display":"inline-block"}
|
||||||
|
9:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
|
||||||
|
0:["yGcYFFIcEuqzxcriqkURO",[[["",{"children":["(auth)",{"children":["login",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["(auth)",{"children":["login",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$6","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":"$7","children":"404"}],["$","div",null,{"style":"$8","children":["$","h2",null,{"style":"$9","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$La",null]]]]
|
||||||
|
a:[["$","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"}]]
|
||||||
|
1:null
|
||||||
1
web/out/reset-password.html
Normal file
1
web/out/reset-password.html
Normal file
File diff suppressed because one or more lines are too long
11
web/out/reset-password.txt
Normal file
11
web/out/reset-password.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
|
3:I[9395,["634","static/chunks/634-c9bfd8cab683cbb5.js","277","static/chunks/app/(auth)/reset-password/page-2d31eb2010a928fb.js"],"default",1]
|
||||||
|
4:I[4707,[],""]
|
||||||
|
5:I[6423,[],""]
|
||||||
|
6:{"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"}
|
||||||
|
7:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
|
||||||
|
8:{"display":"inline-block"}
|
||||||
|
9:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
|
||||||
|
0:["yGcYFFIcEuqzxcriqkURO",[[["",{"children":["(auth)",{"children":["reset-password",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["(auth)",{"children":["reset-password",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children","reset-password","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$6","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":"$7","children":"404"}],["$","div",null,{"style":"$8","children":["$","h2",null,{"style":"$9","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$La",null]]]]
|
||||||
|
a:[["$","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"}]]
|
||||||
|
1:null
|
||||||
1
web/out/reset-password/confirm.html
Normal file
1
web/out/reset-password/confirm.html
Normal file
File diff suppressed because one or more lines are too long
11
web/out/reset-password/confirm.txt
Normal file
11
web/out/reset-password/confirm.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
|
3:I[1108,["634","static/chunks/634-c9bfd8cab683cbb5.js","49","static/chunks/app/(auth)/reset-password/confirm/page-d6e9a36138bfaaec.js"],"default",1]
|
||||||
|
4:I[4707,[],""]
|
||||||
|
5:I[6423,[],""]
|
||||||
|
6:{"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"}
|
||||||
|
7:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
|
||||||
|
8:{"display":"inline-block"}
|
||||||
|
9:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
|
||||||
|
0:["yGcYFFIcEuqzxcriqkURO",[[["",{"children":["(auth)",{"children":["reset-password",{"children":["confirm",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",{"children":["(auth)",{"children":["reset-password",{"children":["confirm",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children","reset-password","children","confirm","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children","reset-password","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$6","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":"$7","children":"404"}],["$","div",null,{"style":"$8","children":["$","h2",null,{"style":"$9","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$La",null]]]]
|
||||||
|
a:[["$","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"}]]
|
||||||
|
1:null
|
||||||
1
web/out/signup.html
Normal file
1
web/out/signup.html
Normal file
File diff suppressed because one or more lines are too long
11
web/out/signup.txt
Normal file
11
web/out/signup.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
2:I[9107,[],"ClientPageRoot"]
|
||||||
|
3:I[819,["634","static/chunks/634-c9bfd8cab683cbb5.js","299","static/chunks/299-3c70e0f8b88ecbb2.js","238","static/chunks/238-b84527dc4d0e8072.js","129","static/chunks/app/(auth)/signup/page-1d0dfb555947c1ff.js"],"default",1]
|
||||||
|
4:I[4707,[],""]
|
||||||
|
5:I[6423,[],""]
|
||||||
|
6:{"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"}
|
||||||
|
7:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"}
|
||||||
|
8:{"display":"inline-block"}
|
||||||
|
9:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0}
|
||||||
|
0:["yGcYFFIcEuqzxcriqkURO",[[["",{"children":["(auth)",{"children":["signup",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["(auth)",{"children":["signup",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children","signup","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","(auth)","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$6","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":"$7","children":"404"}],["$","div",null,{"style":"$8","children":["$","h2",null,{"style":"$9","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$La",null]]]]
|
||||||
|
a:[["$","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"}]]
|
||||||
|
1:null
|
||||||
Loading…
Add table
Reference in a new issue