Fix auth form errors and redirects: Add React keys/useEffects for error rendering and scroll, Inertia::location in controllers for SPA navigation, extend RegistrationTest and add E2E. Update docs (changes/2025-10-02-registration-fixes.md, prp/13-backend-authentication.md). Add new UI components (accordion, carousel, progress, table, tabs), marketing/legal pages (Blog, Kontakt, Datenschutz, etc.), fonts, user migration (remove_name), views/css/package updates, seeders/factories.

This commit is contained in:
Codex Agent
2025-10-02 11:40:48 +02:00
parent 1945f664c6
commit 7475210893
101 changed files with 3406 additions and 376 deletions

View File

@@ -0,0 +1,41 @@
import React from 'react';
import { Head, Link } from '@inertiajs/react';
import MarketingLayout from '@/layouts/MarketingLayout';
import { usePage } from '@inertiajs/react';
const Datenschutz: React.FC = () => {
const { props } = usePage();
const { __ } = props as any; // Für i18n
return (
<MarketingLayout title={__('legal.datenschutz_title')}>
<Head title={__('legal.datenschutz_title')} />
<div className="container mx-auto px-4 py-8">
<h1 className="text-2xl font-bold mb-4 font-display">{__('legal.datenschutz')}</h1>
<p className="mb-4 font-sans-marketing">{__('legal.datenschutz_intro')}</p>
<p className="mb-4 font-sans-marketing">{__('legal.responsible')}</p>
<p className="mb-4 font-sans-marketing">{__('legal.data_collection')}</p>
<h2 className="text-xl font-semibold mb-2 font-display">{__('legal.payments')}</h2>
<p className="mb-4 font-sans-marketing">
{__('legal.payments_desc')} <a href="https://stripe.com/de/privacy" target="_blank" rel="noopener noreferrer">{__('legal.stripe_privacy')}</a> {__('legal.and')} <a href="https://www.paypal.com/de/webapps/mpp/ua/privacy-full" target="_blank" rel="noopener noreferrer">{__('legal.paypal_privacy')}</a>.
</p>
<p className="mb-4 font-sans-marketing">{__('legal.data_retention')}</p>
<p className="mb-4 font-sans-marketing">
{__('legal.rights')} <Link href="/de/kontakt">{__('legal.contact')}</Link>.
</p>
<p className="mb-4 font-sans-marketing">{__('legal.cookies')}</p>
<h2 className="text-xl font-semibold mb-2 font-display">{__('legal.personal_data')}</h2>
<p className="mb-4 font-sans-marketing">{__('legal.personal_data_desc')}</p>
<h2 className="text-xl font-semibold mb-2 font-display">{__('legal.account_deletion')}</h2>
<p className="mb-4 font-sans-marketing">{__('legal.account_deletion_desc')}</p>
<h2 className="text-xl font-semibold mb-2 font-display">{__('legal.data_security')}</h2>
<p className="mb-4 font-sans-marketing">{__('legal.data_security_desc')}</p>
</div>
</MarketingLayout>
);
};
export default Datenschutz;

View File

@@ -0,0 +1,32 @@
import React from 'react';
import { Head, Link } from '@inertiajs/react';
import MarketingLayout from '@/layouts/MarketingLayout';
import { usePage } from '@inertiajs/react';
const Impressum: React.FC = () => {
const { props } = usePage();
const { __ } = props as any; // Für i18n
return (
<MarketingLayout title={__('legal.impressum_title')}>
<Head title={__('legal.impressum_title')} />
<div className="container mx-auto px-4 py-8">
<h1 className="text-2xl font-bold mb-4 font-display">{__('legal.impressum')}</h1>
<p className="mb-4 font-sans-marketing">{__('legal.impressum_section')}</p>
<p className="mb-4 font-sans-marketing">
{__('legal.company')}<br />
{__('legal.address')}<br />
{__('legal.representative')}<br />
{__('legal.contact')}: <Link href={route('kontakt')}>{__('legal.contact')}</Link>
</p>
<p className="mb-4 font-sans-marketing">{__('legal.vat_id')}</p>
<h2 className="text-xl font-semibold mb-2 font-display">{__('legal.monetization')}</h2>
<p className="mb-4 font-sans-marketing">{__('legal.monetization_desc')}</p>
<p className="mb-4 font-sans-marketing">{__('legal.register_court')}</p>
<p className="mb-4 font-sans-marketing">{__('legal.commercial_register')}</p>
</div>
</MarketingLayout>
);
};
export default Impressum;