fix: apply recent accessibility and layout changes
This commit is contained in:
@@ -140,10 +140,10 @@ export default function CennikMontazuPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń po wycenę
|
<Phone className="size-5" /> Zadzwoń po wycenę
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Formularz kontaktowy <ArrowRight className="size-5" />
|
Formularz kontaktowy <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -251,10 +251,10 @@ export default function CennikMontazuPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Napisz do nas <ArrowRight className="size-5" />
|
Napisz do nas <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-3
@@ -72,7 +72,7 @@
|
|||||||
--secondary-foreground: #0f2a47;
|
--secondary-foreground: #0f2a47;
|
||||||
--muted: #f5f7fa;
|
--muted: #f5f7fa;
|
||||||
--muted-foreground: #5a6678;
|
--muted-foreground: #5a6678;
|
||||||
--accent: #2ba8e0;
|
--accent: #1777a3;
|
||||||
--accent-foreground: #ffffff;
|
--accent-foreground: #ffffff;
|
||||||
--accent-light: #e3f4fc;
|
--accent-light: #e3f4fc;
|
||||||
--cta: #F39320;
|
--cta: #F39320;
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
--destructive: oklch(0.577 0.245 27.325);
|
--destructive: oklch(0.577 0.245 27.325);
|
||||||
--theme-border: #e2e8f0;
|
--theme-border: #e2e8f0;
|
||||||
--input: #e2e8f0;
|
--input: #e2e8f0;
|
||||||
--ring: #2ba8e0;
|
--ring: #1777a3;
|
||||||
--success: #16a34a;
|
--success: #16a34a;
|
||||||
--chart-1: oklch(0.87 0 0);
|
--chart-1: oklch(0.87 0 0);
|
||||||
--chart-2: oklch(0.556 0 0);
|
--chart-2: oklch(0.556 0 0);
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
--sidebar-accent: #f5f7fa;
|
--sidebar-accent: #f5f7fa;
|
||||||
--sidebar-accent-foreground: #0f2a47;
|
--sidebar-accent-foreground: #0f2a47;
|
||||||
--sidebar-border: #e2e8f0;
|
--sidebar-border: #e2e8f0;
|
||||||
--sidebar-ring: #2ba8e0;
|
--sidebar-ring: #1777a3;
|
||||||
|
|
||||||
/* DaisyUI Overrides */
|
/* DaisyUI Overrides */
|
||||||
--color-primary: var(--accent);
|
--color-primary: var(--accent);
|
||||||
|
|||||||
@@ -139,10 +139,10 @@ export default function KlimatyzacjaDoBiuraPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zapytaj o wycenę dla firmy <ArrowRight className="size-5" />
|
Zapytaj o wycenę dla firmy <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -231,10 +231,10 @@ export default function KlimatyzacjaDoBiuraPage() {
|
|||||||
<p className="text-white/50 text-xs mb-1">od</p>
|
<p className="text-white/50 text-xs mb-1">od</p>
|
||||||
<p className="text-4xl font-extrabold text-white mb-1">199 zł</p>
|
<p className="text-4xl font-extrabold text-white mb-1">199 zł</p>
|
||||||
<p className="text-white/50 text-xs mb-4">rocznie / urządzenie</p>
|
<p className="text-white/50 text-xs mb-4">rocznie / urządzenie</p>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="inline-flex items-center gap-2 px-5 py-2.5 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors whitespace-nowrap">
|
||||||
<button className="inline-flex items-center gap-2 px-5 py-2.5 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors whitespace-nowrap">
|
|
||||||
Zapytaj o abonament <ArrowRight className="size-4" />
|
Zapytaj o abonament <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -277,10 +277,10 @@ export default function KlimatyzacjaDoBiuraPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Napisz do nas <ArrowRight className="size-5" />
|
Napisz do nas <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -117,10 +117,10 @@ export default function KlimatyzacjaDoDomuPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kalkulator">
|
<Link href="/kalkulator" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Dobierz urządzenie <ArrowRight className="size-5" />
|
Dobierz urządzenie <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -197,15 +197,15 @@ export default function KlimatyzacjaDoDomuPage() {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col sm:flex-row gap-3">
|
<div className="flex flex-col sm:flex-row gap-3">
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
|
||||||
<button className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
|
|
||||||
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/sklep">
|
<Link href="/sklep" className="inline-flex items-center gap-2 px-6 py-3 bg-white border border-border font-bold rounded-xl text-sm hover:border-accent transition-colors text-primary">
|
||||||
<button className="inline-flex items-center gap-2 px-6 py-3 bg-white border border-border font-bold rounded-xl text-sm hover:border-accent transition-colors text-primary">
|
|
||||||
Zobacz klimatyzatory w sklepie <ArrowRight className="size-4" />
|
Zobacz klimatyzatory w sklepie <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -246,10 +246,10 @@ export default function KlimatyzacjaDoDomuPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kalkulator">
|
<Link href="/kalkulator" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Kalkulator doboru <ArrowRight className="size-5" />
|
Kalkulator doboru <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -158,11 +158,11 @@ export default async function MiastoPage({ params }: Props) {
|
|||||||
Pompa ciepła {city.przyimek} {city.nameDopelniacz}
|
Pompa ciepła {city.przyimek} {city.nameDopelniacz}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-white/80 leading-relaxed mb-6">{city.heatPumpTeaser}</p>
|
<p className="text-white/80 leading-relaxed mb-6">{city.heatPumpTeaser}</p>
|
||||||
<Link href="/pompy-ciepla">
|
<Link href="/pompy-ciepla" className="btn btn-primary font-bold text-white flex items-center gap-2">
|
||||||
<button className="btn btn-primary font-bold text-white flex items-center gap-2">
|
|
||||||
Dowiedz się więcej o pompach ciepła
|
Dowiedz się więcej o pompach ciepła
|
||||||
<ArrowRight className="size-4" />
|
<ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
||||||
|
|||||||
+5
-5
@@ -16,8 +16,8 @@ export default function KoszykPage() {
|
|||||||
<ShoppingBag className="size-16 text-border mx-auto mb-4" />
|
<ShoppingBag className="size-16 text-border mx-auto mb-4" />
|
||||||
<h1 className="text-2xl font-bold text-primary font-heading mb-2">Koszyk jest pusty</h1>
|
<h1 className="text-2xl font-bold text-primary font-heading mb-2">Koszyk jest pusty</h1>
|
||||||
<p className="text-text-muted mb-6">Dodaj produkty ze sklepu aby złożyć zamówienie.</p>
|
<p className="text-text-muted mb-6">Dodaj produkty ze sklepu aby złożyć zamówienie.</p>
|
||||||
<Link href="/sklep">
|
<Link href="/sklep" className="btn btn-primary text-white font-bold">
|
||||||
<button className="btn btn-primary text-white font-bold">Przejdź do sklepu</button>
|
Przejdź do sklepu
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@@ -80,10 +80,10 @@ export default function KoszykPage() {
|
|||||||
</div>
|
</div>
|
||||||
<p className="text-xs text-text-muted mt-1">+ koszt montażu ustalany indywidualnie</p>
|
<p className="text-xs text-text-muted mt-1">+ koszt montażu ustalany indywidualnie</p>
|
||||||
</div>
|
</div>
|
||||||
<Link href="/zamowienie" className="block">
|
<Link href="/zamowienie" className="block btn btn-primary text-white font-bold w-full flex items-center justify-center gap-2">
|
||||||
<button className="btn btn-primary text-white font-bold w-full flex items-center justify-center gap-2">
|
|
||||||
Złóż zamówienie <ArrowRight className="size-4" />
|
Złóż zamówienie <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<button onClick={clearCart} className="w-full text-xs text-text-muted hover:text-primary transition-colors mt-3">
|
<button onClick={clearCart} className="w-full text-xs text-text-muted hover:text-primary transition-colors mt-3">
|
||||||
Wyczyść koszyk
|
Wyczyść koszyk
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ const fontSans = Inter({
|
|||||||
|
|
||||||
const fontHeading = Poppins({
|
const fontHeading = Poppins({
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
weight: ["400", "500", "600", "700", "800"],
|
weight: ["600", "700", "800"],
|
||||||
variable: "--font-heading",
|
variable: "--font-heading",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -117,10 +117,10 @@ export default function MontazKlimatyzacjiPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kalkulator">
|
<Link href="/kalkulator" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Dobierz urządzenie <ArrowRight className="size-5" />
|
Dobierz urządzenie <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -211,10 +211,10 @@ export default function MontazKlimatyzacjiPage() {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-6 text-center">
|
<div className="mt-6 text-center">
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
|
||||||
<button className="inline-flex items-center gap-2 px-6 py-3 bg-accent text-white font-bold rounded-xl text-sm hover:bg-accent/90 transition-colors">
|
|
||||||
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+6
-6
@@ -161,10 +161,10 @@ export default function Home() {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-3 shrink-0">
|
<div className="flex flex-col gap-3 shrink-0">
|
||||||
<Link href="/serwis-lg">
|
<Link href="/serwis-lg" className="flex items-center gap-2 px-6 py-3 bg-accent text-white rounded-xl font-bold hover:bg-accent/90 transition-colors whitespace-nowrap">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-accent text-white rounded-xl font-bold hover:bg-accent/90 transition-colors whitespace-nowrap">
|
|
||||||
Dowiedz się więcej <ArrowRight className="size-4" />
|
Dowiedz się więcej <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<a href={`tel:${companyDetails.phoneRaw}`}>
|
<a href={`tel:${companyDetails.phoneRaw}`}>
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20 whitespace-nowrap">
|
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20 whitespace-nowrap">
|
||||||
@@ -310,10 +310,10 @@ export default function Home() {
|
|||||||
<p className="text-sm text-text-muted leading-relaxed">Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.</p>
|
<p className="text-sm text-text-muted leading-relaxed">Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col sm:flex-row items-stretch sm:items-center gap-4 shrink-0 w-full lg:w-auto">
|
<div className="flex flex-col sm:flex-row items-stretch sm:items-center gap-4 shrink-0 w-full lg:w-auto">
|
||||||
<Link href="/kontakt" className="w-full sm:w-auto">
|
<Link href="/kontakt" className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-accent text-white font-bold text-sm hover:bg-accent/90 transition-colors rounded-xl">
|
||||||
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-accent text-white font-bold text-sm hover:bg-accent/90 transition-colors rounded-xl">
|
|
||||||
Umów serwis <Calendar className="size-4" />
|
Umów serwis <Calendar className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
|
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
|
||||||
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-white text-primary border border-border font-bold text-sm hover:bg-slate-50 transition-colors rounded-xl">
|
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-white text-primary border border-border font-bold text-sm hover:bg-slate-50 transition-colors rounded-xl">
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ export default function PorownajPage() {
|
|||||||
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<p className="text-text-muted mb-4">Nie masz żadnych produktów do porównania.</p>
|
<p className="text-text-muted mb-4">Nie masz żadnych produktów do porównania.</p>
|
||||||
<Link href="/sklep">
|
<Link href="/sklep" className="btn btn-primary text-white font-bold">
|
||||||
<button className="btn btn-primary text-white font-bold">Wróć do sklepu</button>
|
Wróć do sklepu
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -94,10 +94,10 @@ export default function SerwisDaikinPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -197,10 +197,10 @@ export default function SerwisDaikinPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś online <ArrowRight className="size-5" />
|
Zgłoś online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -150,10 +150,10 @@ export default function SerwisKlimatyzacjiPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -235,10 +235,10 @@ export default function SerwisKlimatyzacjiPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś online <ArrowRight className="size-5" />
|
Zgłoś online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -90,10 +90,10 @@ export default function SerwisLGPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Napisz do nas <ArrowRight className="size-5" />
|
Napisz do nas <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -94,10 +94,10 @@ export default function SerwisMitsubishiPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -201,10 +201,10 @@ export default function SerwisMitsubishiPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś online <ArrowRight className="size-5" />
|
Zgłoś online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -94,10 +94,10 @@ export default function SerwisSamsungPage() {
|
|||||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-6 py-3 bg-white/10 text-white rounded-xl font-bold hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -197,10 +197,10 @@ export default function SerwisSamsungPage() {
|
|||||||
<Phone className="size-5" /> {companyDetails.phone}
|
<Phone className="size-5" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
||||||
<button className="flex items-center gap-2 px-8 py-4 bg-white/10 text-white rounded-xl font-bold text-lg hover:bg-white/20 transition-colors border border-white/20">
|
|
||||||
Zgłoś online <ArrowRight className="size-5" />
|
Zgłoś online <ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+3
-2
@@ -14,7 +14,8 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
|||||||
|
|
||||||
'/realizacje',
|
'/realizacje',
|
||||||
'/blog',
|
'/blog',
|
||||||
// '/o-nas',
|
'/o-nas',
|
||||||
|
'/kalkulator',
|
||||||
'/kontakt',
|
'/kontakt',
|
||||||
'/sklep',
|
'/sklep',
|
||||||
'/koszyk',
|
'/koszyk',
|
||||||
@@ -29,7 +30,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
|||||||
'/serwis-samsung',
|
'/serwis-samsung',
|
||||||
'/serwis-mitsubishi',
|
'/serwis-mitsubishi',
|
||||||
'/klimatyzacja-do-domu',
|
'/klimatyzacja-do-domu',
|
||||||
/* '/klimatyzacja-do-biura', */
|
'/klimatyzacja-do-biura',
|
||||||
'/cennik-montazu',
|
'/cennik-montazu',
|
||||||
'/zgloszenie-awarii',
|
'/zgloszenie-awarii',
|
||||||
'/dostawa',
|
'/dostawa',
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ export default function ZamowieniePage() {
|
|||||||
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<p className="text-text-muted mb-4">Koszyk jest pusty.</p>
|
<p className="text-text-muted mb-4">Koszyk jest pusty.</p>
|
||||||
<Link href="/sklep"><button className="btn btn-primary text-white font-bold">Wróć do sklepu</button></Link>
|
<Link href="/sklep" className="btn btn-primary text-white font-bold">
|
||||||
|
Wróć do sklepu
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
@@ -35,7 +37,9 @@ export default function ZamowieniePage() {
|
|||||||
<CheckCircle className="size-16 text-green-500 mx-auto mb-4" />
|
<CheckCircle className="size-16 text-green-500 mx-auto mb-4" />
|
||||||
<h1 className="text-2xl font-bold text-primary font-heading mb-2">Zamówienie przyjęte!</h1>
|
<h1 className="text-2xl font-bold text-primary font-heading mb-2">Zamówienie przyjęte!</h1>
|
||||||
<p className="text-text-muted mb-6">{state.message}</p>
|
<p className="text-text-muted mb-6">{state.message}</p>
|
||||||
<Link href="/sklep"><button className="btn btn-primary text-white font-bold">Wróć do sklepu</button></Link>
|
<Link href="/sklep" className="btn btn-primary text-white font-bold">
|
||||||
|
Wróć do sklepu
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -168,10 +168,10 @@ export function AwariaClient() {
|
|||||||
<Phone className="size-4" /> {companyDetails.phone}
|
<Phone className="size-4" /> {companyDetails.phone}
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/">
|
<Link href="/" className="text-sm text-text-muted hover:text-accent transition-colors">
|
||||||
<button className="text-sm text-text-muted hover:text-accent transition-colors">
|
|
||||||
Wróć na stronę główną
|
Wróć na stronę główną
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -949,10 +949,10 @@ export function KalkulatorClient({ products }: Props) {
|
|||||||
<Phone className="size-3.5" /> Bezpłatna wycena
|
<Phone className="size-3.5" /> Bezpłatna wycena
|
||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="flex items-center gap-2 px-4 py-2 bg-amber-100 text-amber-800 rounded-xl text-xs font-bold hover:bg-amber-200 transition-colors border border-amber-300">
|
||||||
<button className="flex items-center gap-2 px-4 py-2 bg-amber-100 text-amber-800 rounded-xl text-xs font-bold hover:bg-amber-200 transition-colors border border-amber-300">
|
|
||||||
Prześlij zdjęcia
|
Prześlij zdjęcia
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -976,10 +976,10 @@ export function KalkulatorClient({ products }: Props) {
|
|||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
) : (
|
) : (
|
||||||
<Link href="/sklep">
|
<Link href="/sklep" className="flex items-center gap-2 px-6 py-2.5 bg-accent text-white rounded-xl text-sm font-bold hover:bg-accent/90 transition-colors">
|
||||||
<button className="flex items-center gap-2 px-6 py-2.5 bg-accent text-white rounded-xl text-sm font-bold hover:bg-accent/90 transition-colors">
|
|
||||||
Przejdź do sklepu <ArrowRight className="size-4" />
|
Przejdź do sklepu <ArrowRight className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -240,16 +240,16 @@ export function Header() {
|
|||||||
|
|
||||||
{/* CTA Button */}
|
{/* CTA Button */}
|
||||||
<div className="hidden lg:flex items-center gap-3">
|
<div className="hidden lg:flex items-center gap-3">
|
||||||
<Link href="/zgloszenie-awarii">
|
<Link href="/zgloszenie-awarii" className="flex items-center gap-1.5 px-4 py-2 bg-red-500 text-white rounded-[var(--radius-field)] font-bold text-sm hover:bg-red-600 transition-colors whitespace-nowrap">
|
||||||
<button className="flex items-center gap-1.5 px-4 py-2 bg-red-500 text-white rounded-[var(--radius-field)] font-bold text-sm hover:bg-red-600 transition-colors whitespace-nowrap">
|
|
||||||
<Wrench className="size-4" />
|
<Wrench className="size-4" />
|
||||||
Zgłoś awarię
|
Zgłoś awarię
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="btn btn-primary font-bold">
|
||||||
<button className="btn btn-primary font-bold">
|
|
||||||
Darmowa wycena
|
Darmowa wycena
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
|||||||
{ label: 'Serwis Mitsubishi Electric', href: '/serwis-mitsubishi' },
|
{ label: 'Serwis Mitsubishi Electric', href: '/serwis-mitsubishi' },
|
||||||
{ label: 'Serwis LG', href: '/serwis-lg' },
|
{ label: 'Serwis LG', href: '/serwis-lg' },
|
||||||
{ label: 'Klimatyzacja do domu', href: '/klimatyzacja-do-domu' },
|
{ label: 'Klimatyzacja do domu', href: '/klimatyzacja-do-domu' },
|
||||||
/* { label: 'Klimatyzacja do biura', href: '/klimatyzacja-do-biura' }, */
|
{ label: 'Klimatyzacja do biura', href: '/klimatyzacja-do-biura' },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@@ -248,10 +248,10 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
|||||||
<Phone className="size-4 text-accent" />
|
<Phone className="size-4 text-accent" />
|
||||||
<span>Zadzwoń: {companyDetails.phone}</span>
|
<span>Zadzwoń: {companyDetails.phone}</span>
|
||||||
</a>
|
</a>
|
||||||
<Link href="/kontakt" onClick={onClose}>
|
<Link href="/kontakt" onClick={onClose} className="btn btn-primary w-full font-bold">
|
||||||
<button className="btn btn-primary w-full font-bold">
|
|
||||||
Darmowa konsultacja
|
Darmowa konsultacja
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ export function TrustBar() {
|
|||||||
<Icon className="size-6" />
|
<Icon className="size-6" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4 className="text-sm font-semibold text-primary font-heading">
|
<h3 className="text-sm font-semibold text-primary font-heading">
|
||||||
{item.title}
|
{item.title}
|
||||||
</h4>
|
</h3>
|
||||||
<p className="text-xs text-text-muted mt-0.5">
|
<p className="text-xs text-text-muted mt-0.5">
|
||||||
{item.description}
|
{item.description}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export function AboutStory() {
|
|||||||
<div className="absolute -bottom-8 -right-8 bg-white p-6 rounded-2xl shadow-xl hidden md:block">
|
<div className="absolute -bottom-8 -right-8 bg-white p-6 rounded-2xl shadow-xl hidden md:block">
|
||||||
<div className="flex items-center gap-4">
|
<div className="flex items-center gap-4">
|
||||||
<div className="flex-shrink-0 w-16 h-16 bg-accent/10 rounded-full flex items-center justify-center">
|
<div className="flex-shrink-0 w-16 h-16 bg-accent/10 rounded-full flex items-center justify-center">
|
||||||
<span className="text-2xl font-black text-accent font-heading">
|
<span className="text-2xl font-extrabold text-accent font-heading">
|
||||||
{companyDetails.stats.find(s => s.label.includes("doświadczenia"))?.value || "15+"}
|
{companyDetails.stats.find(s => s.label.includes("doświadczenia"))?.value || "15+"}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -92,11 +92,11 @@ export function BlogPreview() {
|
|||||||
|
|
||||||
{/* Blog Catalog Button */}
|
{/* Blog Catalog Button */}
|
||||||
<div className="flex justify-center mt-12">
|
<div className="flex justify-center mt-12">
|
||||||
<Link href="/blog">
|
<Link href="/blog" className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
|
||||||
<span>Przejdź do bloga</span>
|
<span>Przejdź do bloga</span>
|
||||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -60,11 +60,11 @@ export function CtaBanner({
|
|||||||
|
|
||||||
{/* Action buttons */}
|
{/* Action buttons */}
|
||||||
<div className="flex flex-col sm:flex-row items-center gap-4 mt-8 w-full sm:w-auto shrink-0">
|
<div className="flex flex-col sm:flex-row items-center gap-4 mt-8 w-full sm:w-auto shrink-0">
|
||||||
<Link href={ctaLink} className="w-full sm:w-auto">
|
<Link href={ctaLink} className="w-full sm:w-auto btn btn-primary font-bold text-white">
|
||||||
<button className="btn btn-primary w-full sm:w-auto font-bold text-white">
|
|
||||||
<span>{ctaText}</span>
|
<span>{ctaText}</span>
|
||||||
<ArrowRight className="size-5" />
|
<ArrowRight className="size-5" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ export function FeaturedProducts() {
|
|||||||
|
|
||||||
{/* Catalog Link */}
|
{/* Catalog Link */}
|
||||||
<div className="flex justify-center mt-12">
|
<div className="flex justify-center mt-12">
|
||||||
<Link href="/sklep">
|
<Link href="/sklep" className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
|
||||||
<span>Zobacz cały sklep</span>
|
<span>Zobacz cały sklep</span>
|
||||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -80,11 +80,11 @@ export function HeroSection({
|
|||||||
{/* CTA Buttons */}
|
{/* CTA Buttons */}
|
||||||
<div className="mt-10 flex flex-col sm:flex-row items-center gap-4 w-full sm:w-auto">
|
<div className="mt-10 flex flex-col sm:flex-row items-center gap-4 w-full sm:w-auto">
|
||||||
{ctaText && ctaLink && (
|
{ctaText && ctaLink && (
|
||||||
<Link href={ctaLink} className="w-full sm:w-auto group">
|
<Link href={ctaLink} className="w-full sm:w-auto group btn btn-primary text-white font-bold">
|
||||||
<button className="btn btn-primary text-white font-bold w-full sm:w-auto">
|
|
||||||
<span>{ctaText}</span>
|
<span>{ctaText}</span>
|
||||||
<ArrowRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
<ArrowRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
@@ -132,10 +132,10 @@ export function HomeServices() {
|
|||||||
<p className="text-sm text-text-muted leading-relaxed">Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.</p>
|
<p className="text-sm text-text-muted leading-relaxed">Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col sm:flex-row items-stretch sm:items-center gap-4 shrink-0 w-full lg:w-auto">
|
<div className="flex flex-col sm:flex-row items-stretch sm:items-center gap-4 shrink-0 w-full lg:w-auto">
|
||||||
<Link href="/kontakt" className="w-full sm:w-auto">
|
<Link href="/kontakt" className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-accent text-white font-bold text-sm hover:bg-accent/90 transition-colors rounded-xl">
|
||||||
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-accent text-white font-bold text-sm hover:bg-accent/90 transition-colors rounded-xl">
|
|
||||||
Umów serwis <Calendar className="size-4" />
|
Umów serwis <Calendar className="size-4" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
|
<a href={`tel:${companyDetails.phoneRaw}`} className="w-full sm:w-auto">
|
||||||
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-white text-primary border border-border font-bold text-sm hover:bg-slate-50 transition-colors rounded-xl">
|
<button className="w-full sm:w-auto flex justify-center items-center gap-2 px-6 py-3.5 bg-white text-primary border border-border font-bold text-sm hover:bg-slate-50 transition-colors rounded-xl">
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ export function PillarsSection() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<Link href="/klimatyzacja">
|
<Link href="/klimatyzacja" className="btn btn-primary text-white flex items-center gap-2">
|
||||||
<button className="btn btn-primary text-white flex items-center gap-2">
|
|
||||||
<span>Przejdź do oferty HVAC</span>
|
<span>Przejdź do oferty HVAC</span>
|
||||||
<ChevronRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
<ChevronRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -51,11 +51,11 @@ export function PillarsSection() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-12 text-center">
|
<div className="mt-12 text-center">
|
||||||
<Link href="/uslugi-domowe">
|
<Link href="/uslugi-domowe" className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 mx-auto group">
|
||||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 mx-auto group">
|
|
||||||
<span>Pełna oferta usług</span>
|
<span>Pełna oferta usług</span>
|
||||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ export function Testimonials() {
|
|||||||
<p className="text-text-muted mt-1">Opinie klientów</p>
|
<p className="text-text-muted mt-1">Opinie klientów</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<button onClick={scrollPrev}
|
<button onClick={scrollPrev} aria-label="Poprzednia opinia"
|
||||||
className="size-10 rounded-xl border border-border bg-white flex items-center justify-center text-primary hover:border-accent hover:text-accent transition-colors">
|
className="size-10 rounded-xl border border-border bg-white flex items-center justify-center text-primary hover:border-accent hover:text-accent transition-colors">
|
||||||
<ChevronLeft className="size-5" />
|
<ChevronLeft className="size-5" />
|
||||||
</button>
|
</button>
|
||||||
<button onClick={scrollNext}
|
<button onClick={scrollNext} aria-label="Następna opinia"
|
||||||
className="size-10 rounded-xl border border-border bg-white flex items-center justify-center text-primary hover:border-accent hover:text-accent transition-colors">
|
className="size-10 rounded-xl border border-border bg-white flex items-center justify-center text-primary hover:border-accent hover:text-accent transition-colors">
|
||||||
<ChevronRight className="size-5" />
|
<ChevronRight className="size-5" />
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -58,11 +58,11 @@ export function CartSummary() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Przycisk */}
|
{/* Przycisk */}
|
||||||
<Link href="/zamowienie" className="block w-full">
|
<Link href="/zamowienie" className="block w-full btn btn-primary font-bold group cursor-pointer text-white">
|
||||||
<button className="btn btn-primary w-full font-bold group cursor-pointer text-white">
|
|
||||||
Przejdź do zamówienia
|
Przejdź do zamówienia
|
||||||
<ArrowRight className="w-5 h-5 ml-2 group-hover:translate-x-1 transition-transform" />
|
<ArrowRight className="w-5 h-5 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Zaufanie */}
|
{/* Zaufanie */}
|
||||||
|
|||||||
@@ -47,10 +47,10 @@ export function CompareBar() {
|
|||||||
|
|
||||||
<div className="flex items-center gap-2 shrink-0">
|
<div className="flex items-center gap-2 shrink-0">
|
||||||
{items.length >= 2 && (
|
{items.length >= 2 && (
|
||||||
<Link href="/porownaj">
|
<Link href="/porownaj" className="btn btn-primary text-white font-bold text-sm py-2 px-4">
|
||||||
<button className="btn btn-primary text-white font-bold text-sm py-2 px-4">
|
|
||||||
Porównaj
|
Porównaj
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
<button onClick={clearAll} className="text-xs text-text-muted hover:text-primary transition-colors">
|
<button onClick={clearAll} className="text-xs text-text-muted hover:text-primary transition-colors">
|
||||||
|
|||||||
@@ -311,16 +311,16 @@ export function ProductPageClient({ product, seriesProducts, companyPhone, compa
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
{cartState === 'cart' && (
|
{cartState === 'cart' && (
|
||||||
<Link href="/koszyk" className="flex-1">
|
<Link href="/koszyk" className="flex-1 w-full flex items-center justify-center gap-2 py-2.5 px-4 rounded-xl font-bold text-sm bg-green-500 text-white hover:bg-green-600 transition-colors">
|
||||||
<button className="w-full flex items-center justify-center gap-2 py-2.5 px-4 rounded-xl font-bold text-sm bg-green-500 text-white hover:bg-green-600 transition-colors">
|
|
||||||
<ShoppingCart className="size-4" /> Zobacz koszyk
|
<ShoppingCart className="size-4" /> Zobacz koszyk
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
<Link href="/kontakt" className="flex-1">
|
<Link href="/kontakt" className="flex-1 w-full flex items-center justify-center gap-2 py-2.5 px-4 rounded-xl font-bold text-sm border-2 border-primary text-primary hover:bg-primary hover:text-white transition-all">
|
||||||
<button className="w-full flex items-center justify-center gap-2 py-2.5 px-4 rounded-xl font-bold text-sm border-2 border-primary text-primary hover:bg-primary hover:text-white transition-all">
|
|
||||||
Zapytaj o montaż
|
Zapytaj o montaż
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -438,10 +438,10 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) {
|
|||||||
{companyDetails.phone}
|
{companyDetails.phone}
|
||||||
</a>
|
</a>
|
||||||
<p className="text-xs text-text-muted mt-1">{companyDetails.hours}</p>
|
<p className="text-xs text-text-muted mt-1">{companyDetails.hours}</p>
|
||||||
<Link href="/kontakt">
|
<Link href="/kontakt" className="mt-3 w-full btn btn-primary text-white font-bold text-sm py-2">
|
||||||
<button className="mt-3 w-full btn btn-primary text-white font-bold text-sm py-2">
|
|
||||||
Zadaj pytanie
|
Zadaj pytanie
|
||||||
</button>
|
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|||||||
+9
-1
@@ -1,6 +1,14 @@
|
|||||||
import type { NextConfig } from "next";
|
import type { NextConfig } from "next";
|
||||||
|
import bundleAnalyzer from '@next/bundle-analyzer';
|
||||||
|
|
||||||
|
const withBundleAnalyzer = bundleAnalyzer({
|
||||||
|
enabled: process.env.ANALYZE === 'true',
|
||||||
|
});
|
||||||
|
|
||||||
const nextConfig: NextConfig = {
|
const nextConfig: NextConfig = {
|
||||||
|
experimental: {
|
||||||
|
optimizeCss: true,
|
||||||
|
},
|
||||||
images: {
|
images: {
|
||||||
remotePatterns: [
|
remotePatterns: [
|
||||||
{ protocol: 'https', hostname: 'images.unsplash.com' },
|
{ protocol: 'https', hostname: 'images.unsplash.com' },
|
||||||
@@ -23,4 +31,4 @@ const nextConfig: NextConfig = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default nextConfig;
|
export default withBundleAnalyzer(nextConfig);
|
||||||
|
|||||||
Generated
+193
@@ -30,6 +30,7 @@
|
|||||||
"zustand": "^5.0.14"
|
"zustand": "^5.0.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@next/bundle-analyzer": "^16.2.10",
|
||||||
"@tailwindcss/postcss": "^4",
|
"@tailwindcss/postcss": "^4",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/react": "^19",
|
"@types/react": "^19",
|
||||||
@@ -527,6 +528,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@discoveryjs/json-ext": {
|
||||||
|
"version": "0.5.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
|
||||||
|
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@dotenvx/dotenvx": {
|
"node_modules/@dotenvx/dotenvx": {
|
||||||
"version": "1.75.0",
|
"version": "1.75.0",
|
||||||
"resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.75.0.tgz",
|
"resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.75.0.tgz",
|
||||||
@@ -1706,6 +1717,16 @@
|
|||||||
"@emnapi/runtime": "^1.7.1"
|
"@emnapi/runtime": "^1.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@next/bundle-analyzer": {
|
||||||
|
"version": "16.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-16.2.10.tgz",
|
||||||
|
"integrity": "sha512-KcepWhb3IVniZgm00GSSCQDEUQqZXuXtuXRh8J6e3Un342TcQ77iK4DedeEkct+fcx7yFEDL2J6z4Jeho5JDAw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"webpack-bundle-analyzer": "4.10.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "16.2.9",
|
"version": "16.2.9",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.9.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.9.tgz",
|
||||||
@@ -1920,6 +1941,13 @@
|
|||||||
"node": ">=12.4.0"
|
"node": ">=12.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@polka/url": {
|
||||||
|
"version": "1.0.0-next.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
|
||||||
|
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@rtsao/scc": {
|
"node_modules/@rtsao/scc": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
|
||||||
@@ -3102,6 +3130,19 @@
|
|||||||
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/acorn-walk": {
|
||||||
|
"version": "8.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
|
||||||
|
"integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"acorn": "^8.11.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/agent-base": {
|
"node_modules/agent-base": {
|
||||||
"version": "7.1.4",
|
"version": "7.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
|
||||||
@@ -4059,6 +4100,13 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/debounce": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/debounce-fn": {
|
"node_modules/debounce-fn": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
|
||||||
@@ -4279,6 +4327,13 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/duplexer": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/ee-first": {
|
"node_modules/ee-first": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||||
@@ -5648,6 +5703,22 @@
|
|||||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/gzip-size": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"duplexer": "^0.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/has-bigints": {
|
"node_modules/has-bigints": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
|
||||||
@@ -5766,6 +5837,13 @@
|
|||||||
"node": ">=16.9.0"
|
"node": ">=16.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/html-escaper": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/http-errors": {
|
"node_modules/http-errors": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
||||||
@@ -6265,6 +6343,16 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/is-plain-object": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/is-promise": {
|
"node_modules/is-promise": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
|
||||||
@@ -7192,6 +7280,16 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/mrmime": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ms": {
|
"node_modules/ms": {
|
||||||
"version": "2.1.3",
|
"version": "2.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
@@ -7618,6 +7716,16 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/opener": {
|
||||||
|
"version": "1.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
|
||||||
|
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "(WTFPL OR MIT)",
|
||||||
|
"bin": {
|
||||||
|
"opener": "bin/opener-bin.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/optionator": {
|
"node_modules/optionator": {
|
||||||
"version": "0.9.4",
|
"version": "0.9.4",
|
||||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
||||||
@@ -8869,6 +8977,21 @@
|
|||||||
"url": "https://github.com/sponsors/isaacs"
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/sirv": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@polka/url": "^1.0.0-next.24",
|
||||||
|
"mrmime": "^2.0.0",
|
||||||
|
"totalist": "^3.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/sisteransi": {
|
"node_modules/sisteransi": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
|
||||||
@@ -9370,6 +9493,16 @@
|
|||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/totalist": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ts-api-utils": {
|
"node_modules/ts-api-utils": {
|
||||||
"version": "2.5.0",
|
"version": "2.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
|
||||||
@@ -9779,6 +9912,44 @@
|
|||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/webpack-bundle-analyzer": {
|
||||||
|
"version": "4.10.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz",
|
||||||
|
"integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@discoveryjs/json-ext": "0.5.7",
|
||||||
|
"acorn": "^8.0.4",
|
||||||
|
"acorn-walk": "^8.0.0",
|
||||||
|
"commander": "^7.2.0",
|
||||||
|
"debounce": "^1.2.1",
|
||||||
|
"escape-string-regexp": "^4.0.0",
|
||||||
|
"gzip-size": "^6.0.0",
|
||||||
|
"html-escaper": "^2.0.2",
|
||||||
|
"is-plain-object": "^5.0.0",
|
||||||
|
"opener": "^1.5.2",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"sirv": "^2.0.3",
|
||||||
|
"ws": "^7.3.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"webpack-bundle-analyzer": "lib/bin/analyzer.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
@@ -9899,6 +10070,28 @@
|
|||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/ws": {
|
||||||
|
"version": "7.5.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
|
||||||
|
"integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.3.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bufferutil": "^4.0.1",
|
||||||
|
"utf-8-validate": "^5.0.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bufferutil": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"utf-8-validate": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/wsl-utils": {
|
"node_modules/wsl-utils": {
|
||||||
"version": "0.3.1",
|
"version": "0.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
||||||
|
|||||||
+7
-1
@@ -31,6 +31,7 @@
|
|||||||
"zustand": "^5.0.14"
|
"zustand": "^5.0.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@next/bundle-analyzer": "^16.2.10",
|
||||||
"@tailwindcss/postcss": "^4",
|
"@tailwindcss/postcss": "^4",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/react": "^19",
|
"@types/react": "^19",
|
||||||
@@ -39,5 +40,10 @@
|
|||||||
"eslint-config-next": "16.2.9",
|
"eslint-config-next": "16.2.9",
|
||||||
"tailwindcss": "^4",
|
"tailwindcss": "^4",
|
||||||
"typescript": "^5"
|
"typescript": "^5"
|
||||||
}
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"defaults",
|
||||||
|
"not IE 11",
|
||||||
|
"maintained node versions"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user