Poprawki w stylach, oraz przebudowa image w hero
BIN
src/assets/hero/desktop/fiber-desktop.webp
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
src/assets/hero/desktop/section-fiber-desktop.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
src/assets/hero/desktop/section-telefon-desktop.webp
Normal file
|
After Width: | Height: | Size: 162 KiB |
BIN
src/assets/hero/desktop/section-tv-desktop.webp
Normal file
|
After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 105 KiB |
BIN
src/assets/hero/mobile/fiber-mobile.webp
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
src/assets/hero/mobile/section-fiber-mobile.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
src/assets/hero/mobile/section-telefon-mobile.webp
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
src/assets/hero/mobile/section-tv-mobile.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 90 KiB |
BIN
src/assets/hero/tablet/fiber-tablet.webp
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
src/assets/hero/tablet/section-fiber-tablet.webp
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
src/assets/hero/tablet/section-telefon-tablet.webp
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
src/assets/hero/tablet/section-tv-tablet.webp
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
src/assets/sections/AC3000.webp
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/assets/sections/HL-4BX3V-F.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
@@ -1,118 +1,109 @@
|
||||
---
|
||||
import { Image } from "astro:assets";
|
||||
import type { ImageMetadata } from 'astro';
|
||||
|
||||
type TextPosition = "right" | "left" | "center";
|
||||
interface CTA {
|
||||
label: string;
|
||||
href: string;
|
||||
primary?: boolean;
|
||||
}
|
||||
|
||||
interface Props {
|
||||
title?: string | string[];
|
||||
subtitle?: string[];
|
||||
description?: string;
|
||||
imageUrl?: string;
|
||||
ctas?: Array<{
|
||||
label: string;
|
||||
href: string;
|
||||
primary?: boolean;
|
||||
}>;
|
||||
textPosition?: TextPosition;
|
||||
textPosition?: "right" | "left" | "center";
|
||||
ctas?: CTA[];
|
||||
}
|
||||
|
||||
const {
|
||||
title = [],
|
||||
subtitle = [],
|
||||
description,
|
||||
imageUrl,
|
||||
ctas = [],
|
||||
textPosition = "right" as TextPosition
|
||||
description = "",
|
||||
imageUrl = "",
|
||||
textPosition = "right",
|
||||
ctas = []
|
||||
} = Astro.props;
|
||||
|
||||
const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/hero/*.{png,jpg,jpeg,webp,avif}', {
|
||||
eager: true
|
||||
});
|
||||
// Wyciągnij nazwę bazową bez rozszerzenia
|
||||
const imageBase = imageUrl.replace(/\.(webp|png|jpg|jpeg)$/i, '');
|
||||
|
||||
let imageAsset: ImageMetadata | null = null;
|
||||
// Importuj wszystkie obrazki
|
||||
const images = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/hero/**/*.webp',
|
||||
{ eager: true }
|
||||
);
|
||||
|
||||
if (imageUrl) {
|
||||
const path = `/src/assets/hero/${imageUrl}`;
|
||||
const mod = images[path];
|
||||
if (mod) {
|
||||
imageAsset = mod.default;
|
||||
}
|
||||
// Funkcja do znajdowania obrazka dla danego rozmiaru
|
||||
function findImage(folder: string): ImageMetadata | null {
|
||||
const key = `/src/assets/hero/${folder}/${imageBase}-${folder}.webp`;
|
||||
return images[key]?.default || null;
|
||||
}
|
||||
|
||||
const isLCP = true;
|
||||
const mobile = findImage('mobile');
|
||||
const tablet = findImage('tablet');
|
||||
const desktop = findImage('desktop');
|
||||
---
|
||||
|
||||
<section class={`f-hero f-hero--${textPosition}`}>
|
||||
<picture>
|
||||
{mobile && (
|
||||
<source
|
||||
srcset={mobile.src}
|
||||
media="(max-width: 640px)"
|
||||
/>
|
||||
)}
|
||||
{tablet && (
|
||||
<source
|
||||
srcset={tablet.src}
|
||||
media="(max-width: 1024px)"
|
||||
/>
|
||||
)}
|
||||
|
||||
<!-- Background Image -->
|
||||
{imageAsset && (
|
||||
<Image
|
||||
src={imageAsset}
|
||||
alt="Światłowód FUZ, szybki internet w Wyszkowie"
|
||||
class="f-hero__bg"
|
||||
loading="eager"
|
||||
fetchpriority={isLCP ? "high" : "auto"}
|
||||
decoding="async"
|
||||
format="webp"
|
||||
widths={[640, 960, 1280, 1350, 1920]}
|
||||
sizes="100vw"
|
||||
/>
|
||||
)}
|
||||
{desktop && (
|
||||
<img
|
||||
src={desktop.src}
|
||||
alt={imageBase}
|
||||
class="f-hero-background"
|
||||
loading="eager"
|
||||
fetchpriority="high"
|
||||
decoding="async"
|
||||
/>
|
||||
)}
|
||||
</picture>
|
||||
|
||||
<!-- Overlay -->
|
||||
<div class="f-hero__overlay"></div>
|
||||
<div class="f-hero-overlay"></div>
|
||||
|
||||
<!-- Container -->
|
||||
<div class="f-hero__container">
|
||||
<div class="f-hero-container">
|
||||
<div class="f-hero-content">
|
||||
{Array.isArray(title) ? (
|
||||
title.map(t => <h1 class="f-hero-title">{t}</h1>)
|
||||
) : (
|
||||
<h1 class="f-hero-title">{title}</h1>
|
||||
)}
|
||||
|
||||
<!-- Content -->
|
||||
<div class="f-hero__content">
|
||||
|
||||
<!-- Titles -->
|
||||
<div class="f-hero__titles">
|
||||
{Array.isArray(title)
|
||||
? title.map(line => (
|
||||
<h1 class="f-hero__title">{line}</h1>
|
||||
))
|
||||
: <h1 class="f-hero__title">{title}</h1>
|
||||
}
|
||||
</div>
|
||||
|
||||
<!-- Subtitles -->
|
||||
{subtitle && Array.isArray(subtitle) && subtitle.length > 0 && (
|
||||
<div class="f-hero__subtitles">
|
||||
{subtitle.map((line, i) => (
|
||||
<p
|
||||
class="f-hero__subtitle"
|
||||
style={`--delay: ${i}`}
|
||||
>
|
||||
{line}
|
||||
</p>
|
||||
{subtitle.length > 0 && (
|
||||
<div class="f-hero-subtitles">
|
||||
{subtitle.map((s, i) => (
|
||||
<p class="f-hero-subtitle" style={`--delay:${i}`}>{s}</p>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<!-- Description -->
|
||||
{description && (
|
||||
<p class="f-hero__description">{description}</p>
|
||||
)}
|
||||
{description && <p class="f-hero-description">{description}</p>}
|
||||
|
||||
<!-- CTAs -->
|
||||
{ctas.length > 0 && (
|
||||
<div class="f-hero__ctas">
|
||||
{ctas.map((cta) => (
|
||||
<div class="f-hero-ctas">
|
||||
{ctas.map(cta => (
|
||||
<a
|
||||
href={cta.href}
|
||||
class={cta.primary ? "btn-hero-primary" : "btn-hero-outline"}
|
||||
class={cta.primary ? "btn btn-primary" : "btn btn-primary"}
|
||||
>
|
||||
{cta.label}
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
@@ -53,7 +53,7 @@ if (section.image) {
|
||||
<div class="f-section-nav">
|
||||
<a
|
||||
href={section.button.url}
|
||||
class="btn btn-outline"
|
||||
class="btn btn-primary"
|
||||
title={section.button.title}
|
||||
>
|
||||
{section.button.text}
|
||||
|
||||
@@ -14,12 +14,12 @@ ctas:
|
||||
href: "/internet-swiatlowodowy"
|
||||
title: "Przejdź do oferty Internetu światłowodowego"
|
||||
primary: false
|
||||
- label: "Zobacz ofertę Internetu + Telewizja"
|
||||
- label: "Zobacz ofertę Telewizji"
|
||||
href: "/internet-telewizja"
|
||||
title: "Przejdź do oferty Internet + Telewizja w FUZ"
|
||||
primary: false
|
||||
|
||||
# - label: "Sprawdź dostępność"
|
||||
# href: "/mapa-zasiegu"
|
||||
# title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
# primary: false
|
||||
- label: "Sprawdź dostępność usługi"
|
||||
href: "/mapa-zasiegu"
|
||||
title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
primary: false
|
||||
|
||||
@@ -11,17 +11,17 @@ subtitle:
|
||||
# Sprawdź zasięg usług i wybierz najlepsze łącze dla swojego domu.
|
||||
imageUrl: "section-fiber.webp"
|
||||
ctas:
|
||||
- label: "Zobacz ofertę Internetu + Telewizja"
|
||||
- label: "Zobacz ofertę Telewizji"
|
||||
href: "/internet-telewizja"
|
||||
title: "Przejdź do oferty Internet + Telewizja w FUZ"
|
||||
primary: false
|
||||
|
||||
- label: "Zobacz ofertę telefonu "
|
||||
- label: "Zobacz ofertę Telefonu "
|
||||
href: "/telefon"
|
||||
primary: false
|
||||
title: "Przejdź do oferty telefonu"
|
||||
|
||||
- label: "Sprawdź dostępność"
|
||||
- label: "Sprawdź dostępność usługi"
|
||||
href: "/mapa-zasiegu"
|
||||
title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
primary: false
|
||||
@@ -12,15 +12,11 @@ sections:
|
||||
|
||||
[Sprawdź](/mapa-zasiegu "Sprawdź zasięg naszego Internetu") na interaktywnej mapie, czy internet światłowodowy jest już dostępny pod Twoim adresem.
|
||||
|
||||
- title: Router WiFi 5 AC1200
|
||||
image: "E5400.webp"
|
||||
- title: Router WiFi HL-4BX3V-F
|
||||
image: "HL-4BX3V-F.webp"
|
||||
content: |
|
||||
Dwuzakresowy router WiFi 5 AC1200 zapewnia prędkość do 1200 Mb/s.
|
||||
Nowoczesny router marki HALNy to urządzenie stworzone z myślą o wymagających użytkownikach.
|
||||
|
||||
Zapewnij gościom dostęp do sieci, jednocześnie utrzymując niepożądanych gości od Twojej sieci WiFi i urządzeń podłączonych do sieci przez Twoją rodzinę.
|
||||
Znajdziesz w nim nowoczesny standard WiFi 6, porty 2,5 Gb/s oraz 1 Gb/s, wsparcie dla sieci Mesh i VoIP. Stabilność, niezawodność i pełne wykorzystanie łącza – w całym Twoim domu.
|
||||
|
||||
Podwójna szerokość pasma (2,4 + 5 GHz), aby uniknąć zakłóceń i zmaksymalizować przepustowość.
|
||||
|
||||
Łatwe połączenia WiFi za pomocą przycisku (WPS), aby dodać urządzenia do swojej sieci WiFi za jednym naciśnięciem przycisku.
|
||||
|
||||
Szyfrowanie WPA2 i zapora SPI pomagają utrzymać bezpieczne połączenie z siecią.
|
||||
Naszym Klientom oferujemy najnowocześniejsze, sprawdzone routery HALNy, które gwarantują najlepsze osiągi.
|
||||
@@ -10,17 +10,17 @@ subtitle:
|
||||
# Sprawdź zasięg usług i wybierz najlepsze łącze dla swojego domu.
|
||||
imageUrl: "section-tv.webp"
|
||||
ctas:
|
||||
- label: "Zobacz ofertę internetu"
|
||||
- label: "Zobacz ofertę Internetu"
|
||||
href: "/internet-swiatlowodowy"
|
||||
title: "Przejdź do oferty Internetu światłowodowego"
|
||||
primary: false
|
||||
|
||||
- label: "Zobacz ofertę telefonu"
|
||||
- label: "Zobacz ofertę Telefonu"
|
||||
href: "/telefon"
|
||||
title: "Przejdź do oferty telefonu"
|
||||
primary: false
|
||||
|
||||
# - label: "Sprawdź dostępność"
|
||||
# href: "/mapa-zasiegu"
|
||||
# title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
# primary: false
|
||||
- label: "Sprawdź dostępność usługi"
|
||||
href: "/mapa-zasiegu"
|
||||
title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
primary: false
|
||||
|
||||
@@ -10,17 +10,17 @@ subtitle:
|
||||
# Dziś dla wielu to niezbędne narzędzie pełne funkcji – „bez telefonu jak bez ręki".
|
||||
imageUrl: section-telefon.webp
|
||||
ctas:
|
||||
- label: "Zobacz ofertę internetu"
|
||||
- label: "Zobacz ofertę Internetu"
|
||||
href: "/internet-swiatlowodowy"
|
||||
title: "Przejdź do oferty Internetu światłowodowego"
|
||||
primary: false
|
||||
|
||||
- label: "Zobacz ofertę Internetu + Telewizji"
|
||||
- label: "Zobacz ofertę Telewizji"
|
||||
href: "/internet-telewizja"
|
||||
title: "Przejdź do oferty Internet + Telewizja w FUZ"
|
||||
primary: false
|
||||
|
||||
# - label: "Sprawdź dostępność"
|
||||
# href: "/mapa-zasiegu"
|
||||
# title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
# primary: false
|
||||
- label: "Sprawdź dostępność usługi "
|
||||
href: "/mapa-zasiegu"
|
||||
title: "Sprawdź zasięg Internetu światłowodowego FUZ"
|
||||
primary: false
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
title:
|
||||
- USLUGA TELEFONU
|
||||
- USŁUGA TELEFONU
|
||||
paragraphs:
|
||||
- title:
|
||||
# content: |
|
||||
|
||||
@@ -31,7 +31,7 @@ export default function Cookie({ config }) {
|
||||
|
||||
<p class="f-cookie-text">
|
||||
{config.text.message}
|
||||
<a href={config.links.privacy} class="f-cookie-privacy-link" rel="noopener noreferrer">
|
||||
<a href={config.links.privacy} rel="noopener noreferrer">
|
||||
{config.text.more}
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -314,7 +314,7 @@ export default function RangeForm() {
|
||||
)}
|
||||
|
||||
<button
|
||||
class="btn btn-outline"
|
||||
class="btn btn-primary"
|
||||
disabled={loading}
|
||||
>
|
||||
{loading ? (
|
||||
|
||||
@@ -156,7 +156,7 @@ const mapStyleId = "8e0a97af9476f2d3";
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-full flex justify-center mb-4">
|
||||
<a href="/kontakt" class="btn btn-outline">Przejdź do kontaktu →</a>
|
||||
<a href="/kontakt" class="btn btn-primary">Przejdź do kontaktu →</a>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
@@ -23,6 +23,31 @@ html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/* Body */
|
||||
body {
|
||||
background-color: var(--f-background);
|
||||
color: var(--f-text);
|
||||
}
|
||||
|
||||
/* Theme Toggle */
|
||||
/* .theme-toggle-btn {
|
||||
@apply text-xl p-2 rounded-full cursor-pointer transition-colors;
|
||||
color: var(--f-text);
|
||||
} */
|
||||
|
||||
.theme-toggle-btn:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.grecaptcha-badge {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
|
||||
a {
|
||||
@apply text-[--f-link-text];
|
||||
}
|
||||
|
||||
a:hover {
|
||||
@apply text-[--f-link-text-hover];
|
||||
}
|
||||
@@ -7,24 +7,9 @@
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
@apply brightness-[0.95];
|
||||
@apply bg-[--btn-background-hover] text-[--btn-text-hover];
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
@apply border border-solid border-[--btn-outline-border] text-[--btn-outline-text] bg-[--btn-outline-background];
|
||||
}
|
||||
|
||||
.btn-outline:hover {
|
||||
@apply bg-[--btn-outline-background-hover] text-[--btn-outline-text-hover];
|
||||
}
|
||||
|
||||
.btn-ghost {
|
||||
@apply bg-transparent text-[--btn-ghost-text];
|
||||
}
|
||||
|
||||
.btn-ghost:hover {
|
||||
@apply bg-[--btn-ghost-hover-bg];
|
||||
}
|
||||
|
||||
.f-input {
|
||||
@apply w-full py-3 px-4 rounded-xl border border-[--f-input-border] bg-[--f-background] text-[--f-text] transition-all duration-200;
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
@apply text-2xl font-semibold text-[--f-text] m-0;
|
||||
@apply text-2xl font-semibold text-[--f-contact-item-text] m-0;
|
||||
}
|
||||
|
||||
p {
|
||||
@apply text-xl mt-4 leading-relaxed text-[--f-text];
|
||||
@apply text-xl mt-4 leading-relaxed text-[--f-link];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -51,21 +51,13 @@
|
||||
.f-rodo {
|
||||
@apply flex items-start gap-3 text-lg text-[--f-text];
|
||||
|
||||
a {
|
||||
@apply text-[--f-link-text];
|
||||
}
|
||||
|
||||
a:hover {
|
||||
@apply text-[--fuz-link-hover];
|
||||
}
|
||||
|
||||
input {
|
||||
@apply mt-2 h-4 w-4;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
@apply btn btn-outline w-full py-3 text-lg;
|
||||
@apply btn btn-primary w-full py-3 text-lg;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +77,7 @@
|
||||
}
|
||||
|
||||
.f-toast-msg {
|
||||
@apply px-5 py-3 rounded-xl shadow-lg text-lg bg-[--f-background-o] text-[--f-text];
|
||||
@apply px-5 py-3 rounded-xl shadow-lg text-lg bg-[--f-background-toast] text-[--f-text];
|
||||
}
|
||||
|
||||
.f-toast-msg.success {
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
@apply text-base leading-snug;
|
||||
}
|
||||
|
||||
.f-cookie-privacy-link {
|
||||
@apply ml-3 text-[--f-link-text];
|
||||
}
|
||||
|
||||
.f-cookie-accept,
|
||||
.f-cookie-reject {
|
||||
@apply px-8 py-4 rounded-md text-sm font-medium transition-colors;
|
||||
|
||||
@@ -19,14 +19,6 @@
|
||||
@apply text-xl font-semibold text-[--f-header];
|
||||
}
|
||||
|
||||
a {
|
||||
@apply text-[--f-footer-link-text];
|
||||
}
|
||||
|
||||
a:hover {
|
||||
@apply text-[--fuz-link-hover];
|
||||
}
|
||||
|
||||
p {
|
||||
@apply text-base;
|
||||
}
|
||||
@@ -38,9 +30,5 @@
|
||||
|
||||
.f-footer-recaptcha {
|
||||
@apply text-base;
|
||||
|
||||
a {
|
||||
@apply text-[--f-link-text];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,161 +1,114 @@
|
||||
/* .f-hero {
|
||||
@apply relative overflow-hidden text-center py-28 px-6;
|
||||
}
|
||||
|
||||
.f-hero-bg {
|
||||
@apply absolute top-0 left-0 w-full h-full object-cover opacity-[0.6];
|
||||
}
|
||||
|
||||
.f-hero-inner {
|
||||
@apply relative max-w-7xl mx-auto text-[f-text];
|
||||
|
||||
h1 {
|
||||
@apply text-5xl md:text-6xl font-extrabold leading-tight mb-6 text-[--f-header];
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply text-xl md:text-4xl font-semibold mb-2 opacity-0 text-[--f-header-2];
|
||||
animation-name: fade-in;
|
||||
animation-duration: 0.8s;
|
||||
animation-timing-function: ease-out;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
p {
|
||||
@apply text-xl md:text-4xl font-semibold mb-2 opacity-0 text-[--f-header-items];
|
||||
animation: fade-in 0.3s ease-out forwards;
|
||||
animation-delay: calc(var(--delay) * 0.4s);
|
||||
}
|
||||
|
||||
p.description {
|
||||
@apply max-w-6xl mx-auto text-lg md:text-xl my-6 leading-snug text-[--f-text];
|
||||
}
|
||||
}
|
||||
|
||||
.f-hero-cta {
|
||||
@apply flex justify-center items-center flex-wrap gap-3 mt-8;
|
||||
}
|
||||
|
||||
@keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
} */
|
||||
|
||||
|
||||
/* ==========================================
|
||||
HERO COMPONENT STYLES - TAILWIND
|
||||
========================================== */
|
||||
|
||||
/* Base Hero Section */
|
||||
.f-hero {
|
||||
@apply relative min-h-[500px] md:min-h-[600px] h-5/6;
|
||||
@apply relative min-h-[600px] md:min-h-[700px] lg:min-h-[700px];
|
||||
@apply flex items-center overflow-hidden;
|
||||
}
|
||||
|
||||
/* Background Image */
|
||||
.f-hero__bg {
|
||||
.f-hero-background {
|
||||
@apply absolute inset-0 w-full h-full object-cover z-0;
|
||||
object-position: center center;
|
||||
}
|
||||
|
||||
/* Overlay - Mobile (jednolity) */
|
||||
.f-hero__overlay {
|
||||
@apply absolute inset-0 z-[1] bg-black/30;
|
||||
.f-hero-overlay {
|
||||
@apply absolute inset-0 z-[1] bg-black/5;
|
||||
}
|
||||
|
||||
/* Overlay - Desktop Right */
|
||||
.f-hero--right .f-hero__overlay {
|
||||
@apply md:bg-gradient-to-r md:from-transparent md:via-transparent md:via-50% md:to-black/60 md:to-50%;
|
||||
.f-hero--right .f-hero-overlay {
|
||||
@apply md:bg-gradient-to-r;
|
||||
background-image: linear-gradient(
|
||||
to right,
|
||||
rgba(0, 0, 0, 0) 0%,
|
||||
rgba(0, 0, 0, 0.1) 15%,
|
||||
rgba(0, 0, 0, 0.1) 30%,
|
||||
rgba(0, 0, 0, 0.5) 45%,
|
||||
rgba(0, 0, 0, 0.5) 55%,
|
||||
rgba(0, 0, 0, 0.5) 65%,
|
||||
rgba(0, 0, 0, 0.5) 75%,
|
||||
rgba(0, 0, 0, 0.75) 100%
|
||||
);
|
||||
}
|
||||
|
||||
/* Overlay - Desktop Left */
|
||||
.f-hero--left .f-hero__overlay {
|
||||
@apply md:bg-gradient-to-l md:from-transparent md:via-transparent md:via-50% md:to-black/75 md:to-50%;
|
||||
.f-hero--left .f-hero-overlay {
|
||||
@apply md:bg-gradient-to-l;
|
||||
background-image: linear-gradient(
|
||||
to left,
|
||||
rgba(0, 0, 0, 0) 0%,
|
||||
rgba(0, 0, 0, 0.1) 30%,
|
||||
rgba(0, 0, 0, 0.5) 60%,
|
||||
rgba(0, 0, 0, 0.75) 100%
|
||||
);
|
||||
}
|
||||
|
||||
/* Overlay - Center */
|
||||
.f-hero--center .f-hero__overlay {
|
||||
@apply bg-black/60;
|
||||
.f-hero--center .f-hero-overlay {
|
||||
@apply bg-black/50;
|
||||
}
|
||||
|
||||
/* Container - Mobile */
|
||||
.f-hero__container {
|
||||
.f-hero-container {
|
||||
@apply relative z-[2] w-full max-w-[1400px] mx-auto;
|
||||
@apply px-6 md:px-8 py-12 md:py-16;
|
||||
@apply grid grid-cols-1 gap-8;
|
||||
@apply px-6 md:px-8 py-8 md:py-1;
|
||||
@apply grid grid-cols-1 gap-4;
|
||||
}
|
||||
|
||||
/* Container - Desktop Right */
|
||||
.f-hero--right .f-hero__container {
|
||||
.f-hero--right .f-hero-container {
|
||||
@apply md:grid-cols-2;
|
||||
}
|
||||
|
||||
.f-hero--right .f-hero__content {
|
||||
.f-hero--right .f-hero-content {
|
||||
@apply md:col-start-2;
|
||||
}
|
||||
|
||||
/* Container - Desktop Left */
|
||||
.f-hero--left .f-hero__container {
|
||||
.f-hero--left .f-hero-container {
|
||||
@apply md:grid-cols-2;
|
||||
}
|
||||
|
||||
.f-hero--left .f-hero__content {
|
||||
.f-hero--left .f-hero-content {
|
||||
@apply md:col-start-1;
|
||||
}
|
||||
|
||||
/* Container - Center */
|
||||
.f-hero--center .f-hero__container {
|
||||
.f-hero--center .f-hero-container {
|
||||
@apply md:grid-cols-1 md:max-w-4xl md:text-center;
|
||||
}
|
||||
|
||||
/* Content */
|
||||
.f-hero__content {
|
||||
@apply flex flex-col gap-6 text-[--f-hero-text] mx-8;
|
||||
.f-hero-content {
|
||||
@apply flex flex-col gap-6 text-[--f-hero-text] mx-1;
|
||||
}
|
||||
|
||||
/* Titles Container */
|
||||
.f-hero__titles {
|
||||
.f-hero-titles {
|
||||
@apply space-y-2;
|
||||
}
|
||||
|
||||
/* Title */
|
||||
.f-hero__title {
|
||||
@apply text-4xl md:text-5xl lg:text-6xl;
|
||||
.f-hero-title {
|
||||
@apply text-4xl md:text-5xl lg:text-6xl text-[--f-hero-header];
|
||||
@apply font-bold leading-tight m-0;
|
||||
@apply drop-shadow-lg;
|
||||
@apply drop-shadow-[0_2px_8px_rgba(0,0,0,0.8)];
|
||||
}
|
||||
|
||||
/* Subtitles Container */
|
||||
.f-hero__subtitles {
|
||||
.f-hero-subtitles {
|
||||
@apply space-y-4;
|
||||
}
|
||||
|
||||
/* Subtitle with Animation */
|
||||
.f-hero__subtitle {
|
||||
.f-hero-subtitle {
|
||||
@apply text-lg md:text-xl lg:text-2xl pl-9;
|
||||
@apply leading-relaxed m-0;
|
||||
@apply opacity-0 animate-fade-in-up;
|
||||
@apply drop-shadow-[0_1px_4px_rgba(0,0,0,0.8)];
|
||||
animation-delay: calc(var(--delay, 0) * 150ms);
|
||||
}
|
||||
|
||||
/* Description */
|
||||
.f-hero__description {
|
||||
.f-hero-description {
|
||||
@apply text-base md:text-lg leading-relaxed;
|
||||
@apply opacity-90 max-w-2xl m-0;
|
||||
@apply drop-shadow-[0_1px_4px_rgba(0,0,0,0.8)];
|
||||
}
|
||||
|
||||
/* CTAs */
|
||||
.f-hero__ctas {
|
||||
@apply flex flex-wrap gap-4 mt-2;
|
||||
.f-hero-ctas {
|
||||
@apply flex flex-wrap gap-4 mt-2 justify-center;
|
||||
}
|
||||
|
||||
/* Animation Keyframes */
|
||||
.f-hero-ctas a {
|
||||
@apply w-full md:w-auto md:min-w-[280px] md:flex-1 md:max-w-[400px] justify-center;
|
||||
}
|
||||
|
||||
|
||||
@keyframes fade-in-up {
|
||||
from {
|
||||
opacity: 0;
|
||||
@@ -170,13 +123,3 @@
|
||||
.animate-fade-in-up {
|
||||
animation: fade-in-up 0.6s ease-out forwards;
|
||||
}
|
||||
|
||||
.btn-hero-primary,
|
||||
.btn-hero-outline{
|
||||
@apply inline-flex items-center justify-center font-semibold rounded-lg px-6 py-3 text-base transition-all duration-200 cursor-pointer select-none;
|
||||
@apply border border-solid border-[--btn-hero-border] text-[--btn-hero-text] bg-[--btn-hero-background];
|
||||
}
|
||||
|
||||
.btn-hero-outline:hover {
|
||||
@apply bg-[--btn-outline-background-hover] text-[--btn-outline-text-hover];
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
.f-navbar {
|
||||
@apply w-full shadow-sm sticky top-0 z-50 bg-[--f-background] text-[--f-text];
|
||||
@apply w-full shadow-sm sticky top-0 z-50 bg-[--f-navbar-background] text-[--f-text];
|
||||
}
|
||||
|
||||
.f-navbar-inner {
|
||||
@@ -10,11 +10,10 @@
|
||||
@apply gap-6;
|
||||
}
|
||||
|
||||
.f-navbar-link{
|
||||
@apply text-base hover:text-[--fuz-accent] transition-colors;
|
||||
.f-navbar-link {
|
||||
@apply text-base text-[--f-navbar-link] hover:text-[--f-navbar-link-hover] transition-colors;
|
||||
}
|
||||
|
||||
|
||||
.f-mobile-toggle {
|
||||
@apply text-3xl p-2 text-[--f-text];
|
||||
}
|
||||
@@ -28,9 +27,9 @@
|
||||
}
|
||||
|
||||
.f-mobile-link {
|
||||
@apply text-lg py-2 border-b text-[--f-text] hover:text-[--fuz-accent] border-[--f-border-color];
|
||||
@apply text-lg py-2 border-b text-[--f-navbar-link] hover:text-[--f-navbar-link-hover] border-[--f-border-color];
|
||||
}
|
||||
|
||||
.f-navbar-logo{
|
||||
.f-navbar-logo {
|
||||
@apply w-[70] h-[36];
|
||||
}
|
||||
@@ -11,9 +11,9 @@
|
||||
}
|
||||
|
||||
.f-switch.active {
|
||||
@apply text-[--f-text-switcher] bg-[--f-background-switcher] ;
|
||||
@apply text-[--f-switcher-text] bg-[--f-switcher-background] ;
|
||||
}
|
||||
|
||||
.f-switch:hover {
|
||||
@apply opacity-[0.6]
|
||||
@apply text-[--f-switcher-text-hover] bg-[--f-switcher-background-hover] ;
|
||||
}
|
||||
@@ -63,7 +63,7 @@
|
||||
border-left: 2px solid var(--f-offers-popular);
|
||||
border-right: 2px solid var(--f-offers-popular);
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.f-popular-top {
|
||||
|
||||
@@ -1,22 +1,32 @@
|
||||
* {
|
||||
--brand: #0af;
|
||||
--brand: hsl(200 100% 50%);
|
||||
--brand: hsla(200 100% 50% 1);
|
||||
|
||||
--brand-hue: 200;
|
||||
--brand-saturation: 100%;
|
||||
--brand-lightness: 50%;
|
||||
|
||||
--brand-light: hsl(var(--brand-hue) var(--brand-saturation) var(--brand-lightness));
|
||||
--link-color-light: hsla(210, 100%, 40%, 1);
|
||||
--link-hover-light: hsla(165, 80%, 35%, 1);
|
||||
/* --link-background-light: hsla(0 0% 50% 1); */
|
||||
|
||||
|
||||
|
||||
--text1-light: hsl(var(--brand-hue) var(--brand-saturation) 10%);
|
||||
--text2-light: hsl(var(--brand-hue) 30% 30%);
|
||||
--text3-light: hsl(var(--brand-hue) 15% 85%);
|
||||
--surface1-light: hsl(var(--brand-hue) 25% 90%);
|
||||
--surface2-light: hsl(var(--brand-hue) 20% 99%);
|
||||
--surface3-light: hsl(var(--brand-hue) 20% 92%);
|
||||
--surface4-light: hsl(var(--brand-hue) 20% 85%);
|
||||
--surface5-light: hsla(217, 70%, 26%, 1);
|
||||
|
||||
--surface-shadow-light: var(--brand-hue) 10% 20%;
|
||||
--shadow-strength-light: .02;
|
||||
--border1-light: hsl(var(--brand-hue) 5% 80%);
|
||||
|
||||
|
||||
--brand-dark: hsl(var(--brand-hue) calc(var(--brand-saturation) / 0.2) calc(var(--brand-lightness) / 1.5));
|
||||
--text1-dark: hsl(var(--brand-hue) 15% 85%);
|
||||
--text2-dark: hsl(var(--brand-hue) 5% 65%);
|
||||
@@ -24,162 +34,120 @@
|
||||
--surface2-dark: hsl(var(--brand-hue) 10% 15%);
|
||||
--surface3-dark: hsl(var(--brand-hue) 5% 20%);
|
||||
--surface4-dark: hsl(var(--brand-hue) 5% 25%);
|
||||
--surface5-dark: hsl(var(--brand-hue) 35% 25%);
|
||||
|
||||
--surface-shadow-dark: var(--brand-hue) 50% 3%;
|
||||
--shadow-strength-dark: .8;
|
||||
--border1-dark: hsl(var(--brand-hue) 40% 70%);
|
||||
|
||||
--brand-dim: hsl(var(--brand-hue) calc(var(--brand-saturation) / 1.25) calc(var(--brand-lightness) / 1.25));
|
||||
|
||||
--brand-50: hsl(var(--brand-hue) 100% 97%);
|
||||
--brand-100: hsl(var(--brand-hue) 100% 93%);
|
||||
--brand-200: hsl(var(--brand-hue) 100% 85%);
|
||||
--brand-300: hsl(var(--brand-hue) 100% 75%);
|
||||
--brand-400: hsl(var(--brand-hue) 100% 62%);
|
||||
--brand-500: hsl(var(--brand-hue) 100% 50%);
|
||||
--brand-600: hsl(var(--brand-hue) 100% 42%);
|
||||
--brand-700: hsl(var(--brand-hue) 100% 35%);
|
||||
--brand-800: hsl(var(--brand-hue) 100% 28%);
|
||||
--brand-900: hsl(var(--brand-hue) 100% 20%);
|
||||
--link-hover-dark: hsla(45, 80%, 70%, 1);
|
||||
--cookie-accept-dark: hsla(120, 60%, 45%, 1);
|
||||
|
||||
--link-color: hsl(190 100% 30%);
|
||||
}
|
||||
|
||||
:root {
|
||||
--f-background: var(--surface2-light);
|
||||
--f-text: var(--text2-light);
|
||||
--f-text-1: var(--text1-light);
|
||||
|
||||
--f-background-switch: var(--surface3-light);
|
||||
--f-text-switcher: var(--brand-dark);
|
||||
--f-background-switcher: var(--surface4-dark);
|
||||
|
||||
/* --- Hero --- */
|
||||
--f-hero-text: var(--text1-dark);
|
||||
--f-hero-header: var(--text1-dark);
|
||||
/* --- Background and Text --- */
|
||||
--f-background: var(--surface3-light);
|
||||
--f-text: var(--text1-light);
|
||||
--f-header: var(--text1-light);
|
||||
--f-header-2: var(--text1-light);
|
||||
--f-header-items: (var(--text2-light));
|
||||
--f-header-items: (var(--text1-light));
|
||||
/*--- Navbar --- */
|
||||
--f-navbar-background: var(--surface4-light);
|
||||
--f-navbar-link: var(--link-color-light);
|
||||
--f-navbar-link-hover: var(--link-hover-light);
|
||||
/*--- Footer --- */
|
||||
--f-footer-background: var(--surface4-light);
|
||||
--f-footer-link-text: var(--link-color-light);
|
||||
/* --- Linki --- */
|
||||
--f-link-text: var(--link-color-light);
|
||||
--f-link-text-hover: var(--link-hover-light);
|
||||
/* Buttons Input */
|
||||
--btn-background: var(--link-color-light);
|
||||
--btn-text: var(--surface4-light);
|
||||
--btn-background-hover: var(--surface4-light);
|
||||
--btn-text-hover: var(--link-color-light);
|
||||
|
||||
--gray-500: hsl(var(--brand-hue) 0% 97%);
|
||||
--link-color-aaa: hsl(var(--brand-hue) 100% 28%);
|
||||
/* Kontrast: ~7.1:1 - spełnia AAA */
|
||||
--link-hover-aaa: hsl(var(--brand-hue) 100% 20%);
|
||||
--f-background-toast: var(--surface2-dark);
|
||||
|
||||
--f-footer-background: var(--gray-500);
|
||||
--f-footer-link-text: var(--link-color-aaa);
|
||||
|
||||
--f-link-text: var(--link-color);
|
||||
|
||||
/* var(--brand-light); */
|
||||
--f-link-text-hover: var(--f-text2-light);
|
||||
|
||||
--btn-background: var(--surface2-light);
|
||||
--btn-text: var(--text1-light);
|
||||
|
||||
--f-background-o: var(--surface3-light);
|
||||
|
||||
--btn-outline-background: transparent;
|
||||
--btn-outline-border: var(--border1-light);
|
||||
--btn-outline-text: var(--text1-light);
|
||||
|
||||
--btn-outline-background-hover: var(--surface4-light);
|
||||
--btn-outline-text-hover: var(--brand-light);
|
||||
|
||||
--f-input-border: var(--surface1-light);
|
||||
--f-input-border: var(--surface4-light);
|
||||
--f-autocomplete-hover-bg: var(--surface3-dark);
|
||||
--f-autocomplete-hover-text: var(--text1-dark);
|
||||
/* --- Switchery --- */
|
||||
--f-background-switch: var(--surface4-light);
|
||||
|
||||
--f-switcher-background: var(--link-color-light);
|
||||
--f-switcher-text: var(--surface4-light);
|
||||
--f-switcher-background-hover: var(--surface2-light);
|
||||
--f-switcher-text-hover: var(--f-link-text-hover);
|
||||
/* --- Cookie --- */
|
||||
--f-cookie-background: var(--surface2-light);
|
||||
--f-cookie-text: var(--text1-light);
|
||||
--f-cookie-accept-background: var(--link-color-light);
|
||||
--f-cookie-accept-text: var(--surface4-light);
|
||||
--f-cookie-reject-background: var(--surface4-light);
|
||||
--f-cookie-reject-text: var(--surface1-dark);
|
||||
/* --- Offers --- */
|
||||
--f-offers-border: var(--surface4-light);
|
||||
--f-offers-price: var(--brand-700);
|
||||
/* var(--brand-light); */
|
||||
--f-offers-price: var(--brand-light);
|
||||
--f-offers-popular: var(--brand-light);
|
||||
--f-offers-popular-bg: color-mix(in srgb, var(--f-offers-popular) 22%, transparent);
|
||||
|
||||
--f-cookie-background: var(--text1-light);
|
||||
--f-cookie-text: var(--surface2-light);
|
||||
|
||||
--f-cookie-accept-background: green;
|
||||
/* --f-cookie-accept-text: */
|
||||
--f-cookie-reject-background: var(--text2-light);
|
||||
|
||||
--f-autocomplete-hover-bg: var(--surface4-light);
|
||||
--f-autocomplete-hover-text: var(--surface2-light);
|
||||
|
||||
--f-hero-text: var(--surface2-light);
|
||||
-fuz-hero-from: #3b82f6;
|
||||
/* niebieski - kolor początkowy */
|
||||
--fuz-hero-to: #8b5cf6;
|
||||
/* fioletowy - kolor końcowy */
|
||||
}
|
||||
|
||||
:root.dark {
|
||||
/* --- Hero --- */
|
||||
--f-hero-text: var(--text1-dark);
|
||||
--f-hero-header: var(--text1-dark);
|
||||
/* --- Background and Text --- */
|
||||
--f-background: var(--surface1-dark);
|
||||
--f-text: var(--text1-dark);
|
||||
--f-text-1: var(--text1-dark);
|
||||
|
||||
--f-background-switch: var(--surface2-dark);
|
||||
|
||||
--f-background-switch: var(--surface3-dark);
|
||||
--f-text-switcher: var(--brand-dark);
|
||||
--f-background-switcher: var(--text2-light);
|
||||
|
||||
--f-header: var(--text1-dark);
|
||||
--f-header-2: var(--text1-dark);
|
||||
--f-header-items: (var(--text2-dark));
|
||||
|
||||
|
||||
--f-header-items: (var(--text1-dark));
|
||||
/*--- Navbar --- */
|
||||
--f-navbar-background: var(--surface2-dark);
|
||||
--f-navbar-link: var(--brand-dark);
|
||||
--f-navbar-link-hover: var(--link-hover-dark);
|
||||
/*--- Footer --- */
|
||||
--f-footer-background: var(--surface2-dark);
|
||||
--f-footer-link-text: var(--brand-dark);
|
||||
/* --- Linki --- */
|
||||
--f-link-text: var(--brand-dark);
|
||||
--f-link-text-hover: var(--f-text2-dark);
|
||||
--f-link-text-hover: var(--link-hover-dark);
|
||||
/* Buttons Input */
|
||||
--btn-background: var(--f-link-text);
|
||||
--btn-text: var(--surface1-dark);
|
||||
--btn-background-hover: var(--surface4-dark);
|
||||
--btn-text-hover: var(--f-link-text-hover);
|
||||
|
||||
--btn-background: var(--surface4-dark);
|
||||
--btn-text: var(--text1-dark);
|
||||
|
||||
--btn-outline-background: transparent;
|
||||
--btn-outline-border: var(--border1-dark);
|
||||
--btn-outline-text: var(--text1-dark);
|
||||
|
||||
--btn-outline-background-hover: var(--surface4-dark);
|
||||
--btn-outline-text-hover: var(--brand-dark);
|
||||
|
||||
--f-background-o: var(--surface2-dark);
|
||||
--f-background-toast: var(--surface2-dark);
|
||||
|
||||
--f-input-border: var(--surface4-dark);
|
||||
--f-autocomplete-hover-bg: var(--surface3-dark);
|
||||
--f-autocomplete-hover-text: var(--text1-dark);
|
||||
|
||||
/* --- Switchery --- */
|
||||
--f-background-switch: var(--surface3-dark);
|
||||
|
||||
--f-switcher-background: var(--f-link-text);
|
||||
--f-switcher-text: var(--surface1-dark);
|
||||
|
||||
--f-switcher-background-hover: var(--surface4-dark);
|
||||
--f-switcher-text-hover: var(--f-link-text-hover);
|
||||
|
||||
/* --- Cookie --- */
|
||||
--f-cookie-background: var(--surface4-dark);
|
||||
--f-cookie-text: var(--surface2-light);
|
||||
--f-cookie-accept-background: var(--f-link-text);
|
||||
--f-cookie-accept-text: var(--surface1-dark);
|
||||
--f-cookie-reject-background: var(--surface3-dark);
|
||||
--f-cookie-reject-text: var(--f-link-text);
|
||||
|
||||
/* --- Offers --- */
|
||||
--f-offers-border: var(--surface4-dark);
|
||||
--f-offers-price: var(--brand-dark);
|
||||
--f-offers-popular: var(--brand-dark);
|
||||
--f-offers-popular-bg: color-mix(in srgb, var(--f-offers-popular) 22%, transparent);
|
||||
|
||||
--f-cookie-background: var(--text1-light);
|
||||
--f-cookie-text: var(--surface2-light);
|
||||
|
||||
--f-cookie-accept-background: green;
|
||||
/* --f-cookie-accept-text: */
|
||||
--f-cookie-reject-background: var(--text2-light);
|
||||
|
||||
--f-autocomplete-hover-bg: var(--surface3-dark);
|
||||
--f-autocomplete-hover-text: var(--text1-dark);
|
||||
|
||||
--f-footer-background: var(--surface2-dark);
|
||||
--f-footer-link-text: var(--brand-dark);
|
||||
}
|
||||
|
||||
/* Body */
|
||||
body {
|
||||
background-color: var(--f-background);
|
||||
color: var(--f-text);
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: var(--fuz-link);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--fuz-link-hover);
|
||||
}
|
||||
|
||||
/* Theme Toggle */
|
||||
.theme-toggle-btn {
|
||||
@apply text-xl p-2 rounded-full cursor-pointer transition-colors;
|
||||
color: var(--f-text);
|
||||
}
|
||||
|
||||
.theme-toggle-btn:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||