Initial commit - Black Canyon Tickets whitelabel platform
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
48
src/layouts/Layout.astro
Normal file
48
src/layouts/Layout.astro
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
export interface Props {
|
||||
title: string;
|
||||
}
|
||||
|
||||
const { title } = Astro.props;
|
||||
import Footer from '../components/Footer.astro';
|
||||
import CookieConsent from '../components/CookieConsent.astro';
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="description" content="Professional ticketing platform for events" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>{title}</title>
|
||||
</head>
|
||||
<body class="min-h-screen flex flex-col">
|
||||
<!-- Skip Links for Accessibility -->
|
||||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
<a href="#navigation" class="skip-link">Skip to navigation</a>
|
||||
|
||||
<div class="flex-1">
|
||||
<main id="main-content" tabindex="-1">
|
||||
<slot />
|
||||
</main>
|
||||
</div>
|
||||
<Footer />
|
||||
<CookieConsent />
|
||||
|
||||
<!-- Initialize accessibility features -->
|
||||
<script>
|
||||
import { initializeAccessibility, initializeHighContrastSupport, initializeReducedMotionSupport } from '../lib/accessibility';
|
||||
|
||||
// Initialize all accessibility features
|
||||
initializeAccessibility();
|
||||
initializeHighContrastSupport();
|
||||
initializeReducedMotionSupport();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style is:global>
|
||||
@import '../styles/global.css';
|
||||
</style>
|
||||
42
src/layouts/LoginLayout.astro
Normal file
42
src/layouts/LoginLayout.astro
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
export interface Props {
|
||||
title: string;
|
||||
}
|
||||
|
||||
const { title } = Astro.props;
|
||||
import CookieConsent from '../components/CookieConsent.astro';
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="description" content="Professional ticketing platform for events" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>{title}</title>
|
||||
</head>
|
||||
<body class="min-h-screen">
|
||||
<!-- Skip Links for Accessibility -->
|
||||
<a href="#main-content" class="skip-link">Skip to main content</a>
|
||||
|
||||
<slot />
|
||||
|
||||
<CookieConsent />
|
||||
|
||||
<!-- Initialize accessibility features -->
|
||||
<script>
|
||||
import { initializeAccessibility, initializeHighContrastSupport, initializeReducedMotionSupport } from '../lib/accessibility';
|
||||
|
||||
// Initialize all accessibility features
|
||||
initializeAccessibility();
|
||||
initializeHighContrastSupport();
|
||||
initializeReducedMotionSupport();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style is:global>
|
||||
@import '../styles/global.css';
|
||||
</style>
|
||||
82
src/layouts/SecureLayout.astro
Normal file
82
src/layouts/SecureLayout.astro
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
export interface Props {
|
||||
title: string;
|
||||
showBackLink?: boolean;
|
||||
backLinkUrl?: string;
|
||||
backLinkText?: string;
|
||||
showLogo?: boolean;
|
||||
}
|
||||
|
||||
const { title, showBackLink = false, backLinkUrl = "/dashboard", backLinkText = "← Back", showLogo = false } = Astro.props;
|
||||
|
||||
import Layout from './Layout.astro';
|
||||
import Navigation from '../components/Navigation.astro';
|
||||
---
|
||||
|
||||
<Layout title={title}>
|
||||
<style>
|
||||
.bg-grid-pattern {
|
||||
background-image:
|
||||
linear-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(255, 255, 255, 0.1) 1px, transparent 1px);
|
||||
background-size: 20px 20px;
|
||||
}
|
||||
|
||||
@keyframes fadeInUp {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-20px);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-fadeInUp {
|
||||
animation: fadeInUp 0.6s ease-out forwards;
|
||||
}
|
||||
|
||||
.animate-float {
|
||||
animation: float 6s ease-in-out infinite;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="min-h-screen bg-gradient-to-br from-indigo-900 via-purple-900 to-slate-900">
|
||||
<!-- Animated background elements -->
|
||||
<div class="fixed inset-0 overflow-hidden pointer-events-none">
|
||||
<div class="absolute -top-40 -right-40 w-80 h-80 bg-gradient-to-br from-purple-600/20 to-pink-600/20 rounded-full blur-3xl animate-pulse"></div>
|
||||
<div class="absolute -bottom-40 -left-40 w-80 h-80 bg-gradient-to-br from-blue-600/20 to-cyan-600/20 rounded-full blur-3xl animate-pulse"></div>
|
||||
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-gradient-to-br from-indigo-600/10 to-purple-600/10 rounded-full blur-3xl animate-pulse"></div>
|
||||
</div>
|
||||
|
||||
<!-- Grid pattern overlay -->
|
||||
<div class="absolute inset-0 bg-grid-pattern opacity-5"></div>
|
||||
|
||||
{showLogo && (
|
||||
<div class="absolute top-8 left-8 z-10">
|
||||
<img src="/images/logo.png" alt="Black Canyon Tickets" class="h-12 w-auto opacity-20" />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<Navigation
|
||||
title={title}
|
||||
showBackLink={showBackLink}
|
||||
backLinkUrl={backLinkUrl}
|
||||
backLinkText={backLinkText}
|
||||
/>
|
||||
|
||||
<main class="relative">
|
||||
<slot />
|
||||
</main>
|
||||
</div>
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user