feat(branding): add imprint and privacy links to GuestJoin and Home components
All checks were successful
Build & Push Docker Image / build (push) Successful in 6m28s
All checks were successful
Build & Push Docker Image / build (push) Successful in 6m28s
This commit is contained in:
@@ -1,16 +1,18 @@
|
|||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { useParams, Link } from 'react-router-dom';
|
import { useParams, Link } from 'react-router-dom';
|
||||||
import { Video, User, Lock, Shield, ArrowRight, Loader2, Users, Radio, AlertCircle } from 'lucide-react';
|
import { Video, User, Lock, Shield, ArrowRight, Loader2, Users, Radio, AlertCircle, FileText } from 'lucide-react';
|
||||||
import BrandLogo from '../components/BrandLogo';
|
import BrandLogo from '../components/BrandLogo';
|
||||||
import api from '../services/api';
|
import api from '../services/api';
|
||||||
import toast from 'react-hot-toast';
|
import toast from 'react-hot-toast';
|
||||||
import { useLanguage } from '../contexts/LanguageContext';
|
import { useLanguage } from '../contexts/LanguageContext';
|
||||||
import { useAuth } from '../contexts/AuthContext';
|
import { useAuth } from '../contexts/AuthContext';
|
||||||
|
import { useBranding } from '../contexts/BrandingContext';
|
||||||
|
|
||||||
export default function GuestJoin() {
|
export default function GuestJoin() {
|
||||||
const { uid } = useParams();
|
const { uid } = useParams();
|
||||||
const { t } = useLanguage();
|
const { t } = useLanguage();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
|
const { imprintUrl, privacyUrl } = useBranding();
|
||||||
const isLoggedIn = !!user;
|
const isLoggedIn = !!user;
|
||||||
const [roomInfo, setRoomInfo] = useState(null);
|
const [roomInfo, setRoomInfo] = useState(null);
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
@@ -260,6 +262,36 @@ export default function GuestJoin() {
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{(imprintUrl || privacyUrl) && (
|
||||||
|
<div className="flex items-center justify-center gap-4 mt-4 pt-4 border-t border-th-border/60">
|
||||||
|
{imprintUrl && (
|
||||||
|
<a
|
||||||
|
href={imprintUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-1 text-xs text-th-text-s hover:text-th-accent transition-colors"
|
||||||
|
>
|
||||||
|
<FileText size={11} />
|
||||||
|
{t('nav.imprint')}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
{imprintUrl && privacyUrl && (
|
||||||
|
<span className="text-th-border text-xs">·</span>
|
||||||
|
)}
|
||||||
|
{privacyUrl && (
|
||||||
|
<a
|
||||||
|
href={privacyUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-1 text-xs text-th-text-s hover:text-th-accent transition-colors"
|
||||||
|
>
|
||||||
|
<Lock size={11} />
|
||||||
|
{t('nav.privacy')}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Video, Shield, Users, Palette, ArrowRight, Zap, Globe } from 'lucide-react';
|
import { Video, Shield, Users, Palette, ArrowRight, Zap, Globe, FileText, Lock } from 'lucide-react';
|
||||||
import BrandLogo from '../components/BrandLogo';
|
import BrandLogo from '../components/BrandLogo';
|
||||||
import { useLanguage } from '../contexts/LanguageContext';
|
import { useLanguage } from '../contexts/LanguageContext';
|
||||||
import { useBranding } from '../contexts/BrandingContext';
|
import { useBranding } from '../contexts/BrandingContext';
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
const { t } = useLanguage();
|
const { t } = useLanguage();
|
||||||
const { registrationMode } = useBranding();
|
const { registrationMode, imprintUrl, privacyUrl } = useBranding();
|
||||||
const isInviteOnly = registrationMode === 'invite';
|
const isInviteOnly = registrationMode === 'invite';
|
||||||
|
|
||||||
const features = [
|
const features = [
|
||||||
@@ -143,6 +143,35 @@ export default function Home() {
|
|||||||
<p className="text-sm text-th-text-s">
|
<p className="text-sm text-th-text-s">
|
||||||
{t('home.footer', { year: new Date().getFullYear() })}
|
{t('home.footer', { year: new Date().getFullYear() })}
|
||||||
</p>
|
</p>
|
||||||
|
{(imprintUrl || privacyUrl) && (
|
||||||
|
<div className="flex items-center justify-center gap-4 mt-3">
|
||||||
|
{imprintUrl && (
|
||||||
|
<a
|
||||||
|
href={imprintUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-1 text-xs text-th-text-s hover:text-th-accent transition-colors"
|
||||||
|
>
|
||||||
|
<FileText size={12} />
|
||||||
|
{t('nav.imprint')}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
{imprintUrl && privacyUrl && (
|
||||||
|
<span className="text-th-border text-xs">·</span>
|
||||||
|
)}
|
||||||
|
{privacyUrl && (
|
||||||
|
<a
|
||||||
|
href={privacyUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="inline-flex items-center gap-1 text-xs text-th-text-s hover:text-th-accent transition-colors"
|
||||||
|
>
|
||||||
|
<Lock size={12} />
|
||||||
|
{t('nav.privacy')}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user