fix: apply recent accessibility and layout changes
This commit is contained in:
@@ -140,11 +140,11 @@ export default function CennikMontazuPage() {
|
||||
<Phone className="size-5" /> Zadzwoń po wycenę
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Formularz kontaktowy <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -251,11 +251,11 @@ export default function CennikMontazuPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Napisz do nas <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
+3
-3
@@ -72,7 +72,7 @@
|
||||
--secondary-foreground: #0f2a47;
|
||||
--muted: #f5f7fa;
|
||||
--muted-foreground: #5a6678;
|
||||
--accent: #2ba8e0;
|
||||
--accent: #1777a3;
|
||||
--accent-foreground: #ffffff;
|
||||
--accent-light: #e3f4fc;
|
||||
--cta: #F39320;
|
||||
@@ -81,7 +81,7 @@
|
||||
--destructive: oklch(0.577 0.245 27.325);
|
||||
--theme-border: #e2e8f0;
|
||||
--input: #e2e8f0;
|
||||
--ring: #2ba8e0;
|
||||
--ring: #1777a3;
|
||||
--success: #16a34a;
|
||||
--chart-1: oklch(0.87 0 0);
|
||||
--chart-2: oklch(0.556 0 0);
|
||||
@@ -96,7 +96,7 @@
|
||||
--sidebar-accent: #f5f7fa;
|
||||
--sidebar-accent-foreground: #0f2a47;
|
||||
--sidebar-border: #e2e8f0;
|
||||
--sidebar-ring: #2ba8e0;
|
||||
--sidebar-ring: #1777a3;
|
||||
|
||||
/* DaisyUI Overrides */
|
||||
--color-primary: var(--accent);
|
||||
|
||||
@@ -139,11 +139,11 @@ export default function KlimatyzacjaDoBiuraPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zapytaj o wycenę dla firmy <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -231,11 +231,11 @@ export default function KlimatyzacjaDoBiuraPage() {
|
||||
<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-white/50 text-xs mb-4">rocznie / urządzenie</p>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zapytaj o abonament <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -277,11 +277,11 @@ export default function KlimatyzacjaDoBiuraPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Napisz do nas <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -117,11 +117,11 @@ export default function KlimatyzacjaDoDomuPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kalkulator">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Dobierz urządzenie <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -197,16 +197,16 @@ export default function KlimatyzacjaDoDomuPage() {
|
||||
))}
|
||||
</div>
|
||||
<div className="flex flex-col sm:flex-row gap-3">
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
<Link href="/sklep">
|
||||
<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">
|
||||
|
||||
</Link>
|
||||
<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">
|
||||
|
||||
Zobacz klimatyzatory w sklepie <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -246,11 +246,11 @@ export default function KlimatyzacjaDoDomuPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kalkulator">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Kalkulator doboru <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -158,12 +158,12 @@ export default async function MiastoPage({ params }: Props) {
|
||||
Pompa ciepła {city.przyimek} {city.nameDopelniacz}
|
||||
</h2>
|
||||
<p className="text-white/80 leading-relaxed mb-6">{city.heatPumpTeaser}</p>
|
||||
<Link href="/pompy-ciepla">
|
||||
<button className="btn btn-primary font-bold text-white flex items-center gap-2">
|
||||
<Link href="/pompy-ciepla" className="btn btn-primary font-bold text-white flex items-center gap-2">
|
||||
|
||||
Dowiedz się więcej o pompach ciepła
|
||||
<ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-3 gap-4">
|
||||
{[
|
||||
|
||||
+7
-7
@@ -16,9 +16,9 @@ export default function KoszykPage() {
|
||||
<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>
|
||||
<p className="text-text-muted mb-6">Dodaj produkty ze sklepu aby złożyć zamówienie.</p>
|
||||
<Link href="/sklep">
|
||||
<button className="btn btn-primary text-white font-bold">Przejdź do sklepu</button>
|
||||
</Link>
|
||||
<Link href="/sklep" className="btn btn-primary text-white font-bold">
|
||||
Przejdź do sklepu
|
||||
</Link>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
@@ -80,11 +80,11 @@ export default function KoszykPage() {
|
||||
</div>
|
||||
<p className="text-xs text-text-muted mt-1">+ koszt montażu ustalany indywidualnie</p>
|
||||
</div>
|
||||
<Link href="/zamowienie" className="block">
|
||||
<button className="btn btn-primary text-white font-bold w-full flex items-center justify-center gap-2">
|
||||
<Link href="/zamowienie" className="block btn btn-primary text-white font-bold w-full flex items-center justify-center gap-2">
|
||||
|
||||
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">
|
||||
Wyczyść koszyk
|
||||
</button>
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ const fontSans = Inter({
|
||||
|
||||
const fontHeading = Poppins({
|
||||
subsets: ["latin"],
|
||||
weight: ["400", "500", "600", "700", "800"],
|
||||
weight: ["600", "700", "800"],
|
||||
variable: "--font-heading",
|
||||
});
|
||||
|
||||
|
||||
@@ -117,11 +117,11 @@ export default function MontazKlimatyzacjiPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kalkulator">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Dobierz urządzenie <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -211,11 +211,11 @@ export default function MontazKlimatyzacjiPage() {
|
||||
))}
|
||||
</div>
|
||||
<div className="mt-6 text-center">
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zapytaj o bezpłatną wycenę <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
+8
-8
@@ -161,11 +161,11 @@ export default function Home() {
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-col gap-3 shrink-0">
|
||||
<Link href="/serwis-lg">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Dowiedz się więcej <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
<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">
|
||||
<Phone className="size-4" /> Zadzwoń teraz
|
||||
@@ -310,11 +310,11 @@ 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>
|
||||
</div>
|
||||
<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">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Umów serwis <Calendar className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
<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">
|
||||
<Phone className="size-4" /> Zadzwoń do nas
|
||||
|
||||
@@ -15,9 +15,9 @@ export default function PorownajPage() {
|
||||
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
||||
<div className="text-center">
|
||||
<p className="text-text-muted mb-4">Nie masz żadnych produktów do porównania.</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>
|
||||
</main>
|
||||
);
|
||||
|
||||
@@ -94,11 +94,11 @@ export default function SerwisDaikinPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -197,11 +197,11 @@ export default function SerwisDaikinPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -150,11 +150,11 @@ export default function SerwisKlimatyzacjiPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -235,11 +235,11 @@ export default function SerwisKlimatyzacjiPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -90,11 +90,11 @@ export default function SerwisLGPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Napisz do nas <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -94,11 +94,11 @@ export default function SerwisMitsubishiPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -201,11 +201,11 @@ export default function SerwisMitsubishiPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -94,11 +94,11 @@ export default function SerwisSamsungPage() {
|
||||
<Phone className="size-5" /> Zadzwoń: {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś awarię online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -197,11 +197,11 @@ export default function SerwisSamsungPage() {
|
||||
<Phone className="size-5" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zgłoś online <ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
+3
-2
@@ -14,7 +14,8 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
||||
|
||||
'/realizacje',
|
||||
'/blog',
|
||||
// '/o-nas',
|
||||
'/o-nas',
|
||||
'/kalkulator',
|
||||
'/kontakt',
|
||||
'/sklep',
|
||||
'/koszyk',
|
||||
@@ -29,7 +30,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
||||
'/serwis-samsung',
|
||||
'/serwis-mitsubishi',
|
||||
'/klimatyzacja-do-domu',
|
||||
/* '/klimatyzacja-do-biura', */
|
||||
'/klimatyzacja-do-biura',
|
||||
'/cennik-montazu',
|
||||
'/zgloszenie-awarii',
|
||||
'/dostawa',
|
||||
|
||||
@@ -22,7 +22,9 @@ export default function ZamowieniePage() {
|
||||
<main className="min-h-screen bg-slate-50 flex items-center justify-center">
|
||||
<div className="text-center">
|
||||
<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>
|
||||
</main>
|
||||
);
|
||||
@@ -35,7 +37,9 @@ export default function ZamowieniePage() {
|
||||
<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>
|
||||
<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>
|
||||
</main>
|
||||
);
|
||||
|
||||
@@ -168,11 +168,11 @@ export function AwariaClient() {
|
||||
<Phone className="size-4" /> {companyDetails.phone}
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/">
|
||||
<button className="text-sm text-text-muted hover:text-accent transition-colors">
|
||||
<Link href="/" className="text-sm text-text-muted hover:text-accent transition-colors">
|
||||
|
||||
Wróć na stronę główną
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</main>
|
||||
);
|
||||
|
||||
@@ -949,11 +949,11 @@ export function KalkulatorClient({ products }: Props) {
|
||||
<Phone className="size-3.5" /> Bezpłatna wycena
|
||||
</button>
|
||||
</a>
|
||||
<Link href="/kontakt">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Prześlij zdjęcia
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -976,11 +976,11 @@ export function KalkulatorClient({ products }: Props) {
|
||||
</button>
|
||||
)
|
||||
) : (
|
||||
<Link href="/sklep">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Przejdź do sklepu <ArrowRight className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -240,17 +240,17 @@ export function Header() {
|
||||
|
||||
{/* CTA Button */}
|
||||
<div className="hidden lg:flex items-center gap-3">
|
||||
<Link href="/zgloszenie-awarii">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
<Wrench className="size-4" />
|
||||
Zgłoś awarię
|
||||
</button>
|
||||
</Link>
|
||||
<Link href="/kontakt">
|
||||
<button className="btn btn-primary font-bold">
|
||||
|
||||
</Link>
|
||||
<Link href="/kontakt" className="btn btn-primary font-bold">
|
||||
|
||||
Darmowa wycena
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -41,7 +41,7 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
||||
{ label: 'Serwis Mitsubishi Electric', href: '/serwis-mitsubishi' },
|
||||
{ label: 'Serwis LG', href: '/serwis-lg' },
|
||||
{ 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,11 +248,11 @@ export function MobileMenu({ isOpen, onClose }: MobileMenuProps) {
|
||||
<Phone className="size-4 text-accent" />
|
||||
<span>Zadzwoń: {companyDetails.phone}</span>
|
||||
</a>
|
||||
<Link href="/kontakt" onClick={onClose}>
|
||||
<button className="btn btn-primary w-full font-bold">
|
||||
<Link href="/kontakt" onClick={onClose} className="btn btn-primary w-full font-bold">
|
||||
|
||||
Darmowa konsultacja
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -39,9 +39,9 @@ export function TrustBar() {
|
||||
<Icon className="size-6" />
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="text-sm font-semibold text-primary font-heading">
|
||||
<h3 className="text-sm font-semibold text-primary font-heading">
|
||||
{item.title}
|
||||
</h4>
|
||||
</h3>
|
||||
<p className="text-xs text-text-muted mt-0.5">
|
||||
{item.description}
|
||||
</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="flex items-center gap-4">
|
||||
<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+"}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -92,12 +92,12 @@ export function BlogPreview() {
|
||||
|
||||
{/* Blog Catalog Button */}
|
||||
<div className="flex justify-center mt-12">
|
||||
<Link href="/blog">
|
||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||
<Link href="/blog" className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||
|
||||
<span>Przejdź do bloga</span>
|
||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -60,12 +60,12 @@ export function CtaBanner({
|
||||
|
||||
{/* Action buttons */}
|
||||
<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">
|
||||
<button className="btn btn-primary w-full sm:w-auto font-bold text-white">
|
||||
<Link href={ctaLink} className="w-full sm:w-auto btn btn-primary font-bold text-white">
|
||||
|
||||
<span>{ctaText}</span>
|
||||
<ArrowRight className="size-5" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
|
||||
<a
|
||||
href={`tel:${companyDetails.phoneRaw}`}
|
||||
|
||||
@@ -26,12 +26,12 @@ export function FeaturedProducts() {
|
||||
|
||||
{/* Catalog Link */}
|
||||
<div className="flex justify-center mt-12">
|
||||
<Link href="/sklep">
|
||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||
<Link href="/sklep" className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 group">
|
||||
|
||||
<span>Zobacz cały sklep</span>
|
||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -80,12 +80,12 @@ export function HeroSection({
|
||||
{/* CTA Buttons */}
|
||||
<div className="mt-10 flex flex-col sm:flex-row items-center gap-4 w-full sm:w-auto">
|
||||
{ctaText && ctaLink && (
|
||||
<Link href={ctaLink} className="w-full sm:w-auto group">
|
||||
<button className="btn btn-primary text-white font-bold w-full sm:w-auto">
|
||||
<Link href={ctaLink} className="w-full sm:w-auto group btn btn-primary text-white font-bold">
|
||||
|
||||
<span>{ctaText}</span>
|
||||
<ArrowRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
)}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -132,11 +132,11 @@ 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>
|
||||
</div>
|
||||
<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">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Umów serwis <Calendar className="size-4" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
<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">
|
||||
<Phone className="size-4" /> Zadzwoń do nas
|
||||
|
||||
@@ -24,12 +24,12 @@ export function PillarsSection() {
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Link href="/klimatyzacja">
|
||||
<button className="btn btn-primary text-white flex items-center gap-2">
|
||||
<Link href="/klimatyzacja" className="btn btn-primary text-white flex items-center gap-2">
|
||||
|
||||
<span>Przejdź do oferty HVAC</span>
|
||||
<ChevronRight className="size-5 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -51,12 +51,12 @@ export function PillarsSection() {
|
||||
</div>
|
||||
|
||||
<div className="mt-12 text-center">
|
||||
<Link href="/uslugi-domowe">
|
||||
<button className="btn btn-outline btn-primary bg-white font-bold flex items-center gap-2 mx-auto group">
|
||||
<Link href="/uslugi-domowe" 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>
|
||||
<ArrowRight className="size-4 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -43,11 +43,11 @@ export function Testimonials() {
|
||||
<p className="text-text-muted mt-1">Opinie klientów</p>
|
||||
</div>
|
||||
<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">
|
||||
<ChevronLeft className="size-5" />
|
||||
</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">
|
||||
<ChevronRight className="size-5" />
|
||||
</button>
|
||||
|
||||
@@ -58,12 +58,12 @@ export function CartSummary() {
|
||||
</div>
|
||||
|
||||
{/* Przycisk */}
|
||||
<Link href="/zamowienie" className="block w-full">
|
||||
<button className="btn btn-primary w-full font-bold group cursor-pointer text-white">
|
||||
<Link href="/zamowienie" className="block w-full btn btn-primary font-bold group cursor-pointer text-white">
|
||||
|
||||
Przejdź do zamówienia
|
||||
<ArrowRight className="w-5 h-5 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
|
||||
{/* Zaufanie */}
|
||||
<div className="mt-6 flex flex-col gap-3">
|
||||
|
||||
@@ -47,11 +47,11 @@ export function CompareBar() {
|
||||
|
||||
<div className="flex items-center gap-2 shrink-0">
|
||||
{items.length >= 2 && (
|
||||
<Link href="/porownaj">
|
||||
<button className="btn btn-primary text-white font-bold text-sm py-2 px-4">
|
||||
<Link href="/porownaj" className="btn btn-primary text-white font-bold text-sm py-2 px-4">
|
||||
|
||||
Porównaj
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
)}
|
||||
<button onClick={clearAll} className="text-xs text-text-muted hover:text-primary transition-colors">
|
||||
Wyczyść
|
||||
|
||||
@@ -311,17 +311,17 @@ export function ProductPageClient({ product, seriesProducts, companyPhone, compa
|
||||
</button>
|
||||
)}
|
||||
{cartState === 'cart' && (
|
||||
<Link href="/koszyk" className="flex-1">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
<ShoppingCart className="size-4" /> Zobacz koszyk
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
)}
|
||||
<Link href="/kontakt" className="flex-1">
|
||||
<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">
|
||||
<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">
|
||||
|
||||
Zapytaj o montaż
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<button
|
||||
|
||||
@@ -438,11 +438,11 @@ export function ProductsGrid({ products, brands }: ProductsGridProps) {
|
||||
{companyDetails.phone}
|
||||
</a>
|
||||
<p className="text-xs text-text-muted mt-1">{companyDetails.hours}</p>
|
||||
<Link href="/kontakt">
|
||||
<button className="mt-3 w-full btn btn-primary text-white font-bold text-sm py-2">
|
||||
<Link href="/kontakt" className="mt-3 w-full btn btn-primary text-white font-bold text-sm py-2">
|
||||
|
||||
Zadaj pytanie
|
||||
</button>
|
||||
</Link>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</aside>
|
||||
);
|
||||
|
||||
+9
-1
@@ -1,6 +1,14 @@
|
||||
import type { NextConfig } from "next";
|
||||
import bundleAnalyzer from '@next/bundle-analyzer';
|
||||
|
||||
const withBundleAnalyzer = bundleAnalyzer({
|
||||
enabled: process.env.ANALYZE === 'true',
|
||||
});
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
experimental: {
|
||||
optimizeCss: true,
|
||||
},
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{ 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"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "^16.2.10",
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/node": "^20",
|
||||
"@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": {
|
||||
"version": "1.75.0",
|
||||
"resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.75.0.tgz",
|
||||
@@ -1706,6 +1717,16 @@
|
||||
"@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": {
|
||||
"version": "16.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.9.tgz",
|
||||
@@ -1920,6 +1941,13 @@
|
||||
"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": {
|
||||
"version": "1.1.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
|
||||
@@ -4059,6 +4100,13 @@
|
||||
"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": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
|
||||
@@ -4279,6 +4327,13 @@
|
||||
"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": {
|
||||
"version": "1.1.1",
|
||||
"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==",
|
||||
"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": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
|
||||
@@ -5766,6 +5837,13 @@
|
||||
"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": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
|
||||
@@ -6265,6 +6343,16 @@
|
||||
"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": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
|
||||
@@ -7192,6 +7280,16 @@
|
||||
"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": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
@@ -7618,6 +7716,16 @@
|
||||
"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": {
|
||||
"version": "0.9.4",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
|
||||
@@ -8869,6 +8977,21 @@
|
||||
"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": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
|
||||
@@ -9370,6 +9493,16 @@
|
||||
"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": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
|
||||
@@ -9779,6 +9912,44 @@
|
||||
"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": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
@@ -9899,6 +10070,28 @@
|
||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||
"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": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
||||
|
||||
+7
-1
@@ -31,6 +31,7 @@
|
||||
"zustand": "^5.0.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "^16.2.10",
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
@@ -39,5 +40,10 @@
|
||||
"eslint-config-next": "16.2.9",
|
||||
"tailwindcss": "^4",
|
||||
"typescript": "^5"
|
||||
}
|
||||
},
|
||||
"browserslist": [
|
||||
"defaults",
|
||||
"not IE 11",
|
||||
"maintained node versions"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user