181
src/layouts/Layout.astro
Normal file
181
src/layouts/Layout.astro
Normal file
@@ -0,0 +1,181 @@
|
||||
---
|
||||
interface Props {
|
||||
title?: string;
|
||||
description?: string;
|
||||
canonicalPath?: string;
|
||||
noindex?: boolean;
|
||||
}
|
||||
|
||||
const {
|
||||
title = 'Ignis Network - Cat-Inspired Meditation & Mindfulness',
|
||||
description = 'Redefining the digital frontier with next-generation internet services and advanced AI.',
|
||||
canonicalPath = '',
|
||||
noindex = false,
|
||||
} = Astro.props;
|
||||
|
||||
const siteUrl = Astro.site?.href || '';
|
||||
const canonicalUrl = `${siteUrl.replace(/\/$/, '')}${canonicalPath}`;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content={description} />
|
||||
<meta name="theme-color" content="#E8A598" />
|
||||
{noindex && <meta name="robots" content="noindex, nofollow" />}
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="canonical" href={canonicalUrl} />
|
||||
|
||||
<title>{title}</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Fredoka:wght@300..700&family=Nunito:ital,wght@0,200..1000;1,200..1000&family=Patrick+Hand&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<script
|
||||
type="application/ld+json"
|
||||
set:html={JSON.stringify({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'WebApplication',
|
||||
name: 'Ignis Network',
|
||||
description: 'Cat-inspired meditation and mindfulness application',
|
||||
applicationCategory: 'HealthApplication',
|
||||
operatingSystem: 'Web',
|
||||
offers: {
|
||||
'@type': 'Offer',
|
||||
price: '0',
|
||||
priceCurrency: 'USD',
|
||||
},
|
||||
})}
|
||||
/>
|
||||
</head>
|
||||
<body>
|
||||
<slot />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style is:global>
|
||||
@import 'tailwindcss';
|
||||
|
||||
@custom-variant hover (&:hover);
|
||||
|
||||
@theme inline {
|
||||
--color-background: hsl(var(--background));
|
||||
--color-foreground: hsl(var(--foreground));
|
||||
--color-card: hsl(var(--card));
|
||||
--color-card-foreground: hsl(var(--card-foreground));
|
||||
--color-popover: hsl(var(--popover));
|
||||
--color-popover-foreground: hsl(var(--popover-foreground));
|
||||
--color-primary: hsl(var(--primary));
|
||||
--color-primary-foreground: hsl(var(--primary-foreground));
|
||||
--color-secondary: hsl(var(--secondary));
|
||||
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
||||
--color-muted: hsl(var(--muted));
|
||||
--color-muted-foreground: hsl(var(--muted-foreground));
|
||||
--color-accent: hsl(var(--accent));
|
||||
--color-accent-foreground: hsl(var(--accent-foreground));
|
||||
--color-destructive: hsl(var(--destructive));
|
||||
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
||||
--color-border: hsl(var(--border));
|
||||
--color-input: hsl(var(--input));
|
||||
--color-ring: hsl(var(--ring));
|
||||
|
||||
--radius-sm: 0.5rem;
|
||||
--radius-md: 0.75rem;
|
||||
--radius-lg: 1rem;
|
||||
--radius-xl: 1.5rem;
|
||||
|
||||
--font-sans: 'Nunito', sans-serif;
|
||||
--font-heading: 'Fredoka', sans-serif;
|
||||
--font-hand: 'Patrick Hand', cursive;
|
||||
}
|
||||
|
||||
:root {
|
||||
--background: 40 33% 96%;
|
||||
--foreground: 25 10% 30%;
|
||||
|
||||
--primary: 5 78% 75%;
|
||||
--primary-foreground: 25 10% 20%;
|
||||
|
||||
--secondary: 140 25% 85%;
|
||||
--secondary-foreground: 140 30% 25%;
|
||||
|
||||
--card: 0 0% 100%;
|
||||
--card-foreground: 25 10% 30%;
|
||||
|
||||
--popover: 0 0% 100%;
|
||||
--popover-foreground: 25 10% 30%;
|
||||
|
||||
--muted: 40 20% 90%;
|
||||
--muted-foreground: 25 10% 50%;
|
||||
|
||||
--accent: 45 80% 90%;
|
||||
--accent-foreground: 25 10% 30%;
|
||||
|
||||
--destructive: 0 84% 60%;
|
||||
--destructive-foreground: 0 0% 98%;
|
||||
|
||||
--border: 40 20% 90%;
|
||||
--input: 40 20% 90%;
|
||||
--ring: 6 78% 75%;
|
||||
|
||||
--radius: 1rem;
|
||||
}
|
||||
|
||||
@layer base {
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
* {
|
||||
@apply border-border;
|
||||
}
|
||||
|
||||
body {
|
||||
@apply bg-background text-foreground font-sans antialiased;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
@apply font-heading font-semibold tracking-tight;
|
||||
}
|
||||
}
|
||||
|
||||
button,
|
||||
a,
|
||||
nav,
|
||||
[role='button'],
|
||||
.no-select {
|
||||
@apply select-none;
|
||||
}
|
||||
|
||||
[role='presentation'],
|
||||
.pointer-none,
|
||||
svg[aria-hidden='true'] {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.absolute.blur-3xl,
|
||||
[class*='blob'],
|
||||
[class*='pattern'] {
|
||||
@apply pointer-events-none;
|
||||
}
|
||||
|
||||
svg:not([role='img']) {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.font-hand {
|
||||
font-family: var(--font-hand);
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user