diff --git a/app/cennik-montazu/page.tsx b/app/cennik-montazu/page.tsx index 139e780..1f30a4e 100644 --- a/app/cennik-montazu/page.tsx +++ b/app/cennik-montazu/page.tsx @@ -140,11 +140,11 @@ export default function CennikMontazuPage() { Zadzwoń po wycenę - - - + + @@ -251,11 +251,11 @@ export default function CennikMontazuPage() { {companyDetails.phone} - - - + + diff --git a/app/globals.css b/app/globals.css index 20c9829..8b1736f 100644 --- a/app/globals.css +++ b/app/globals.css @@ -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); diff --git a/app/klimatyzacja-do-biura/page.tsx b/app/klimatyzacja-do-biura/page.tsx index 9950812..2a95f42 100644 --- a/app/klimatyzacja-do-biura/page.tsx +++ b/app/klimatyzacja-do-biura/page.tsx @@ -139,11 +139,11 @@ export default function KlimatyzacjaDoBiuraPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -231,11 +231,11 @@ export default function KlimatyzacjaDoBiuraPage() {

od

199 zł

rocznie / urządzenie

- - - + + @@ -277,11 +277,11 @@ export default function KlimatyzacjaDoBiuraPage() { {companyDetails.phone} - - - + + diff --git a/app/klimatyzacja-do-domu/page.tsx b/app/klimatyzacja-do-domu/page.tsx index 69dd71a..38c3157 100644 --- a/app/klimatyzacja-do-domu/page.tsx +++ b/app/klimatyzacja-do-domu/page.tsx @@ -117,11 +117,11 @@ export default function KlimatyzacjaDoDomuPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -197,16 +197,16 @@ export default function KlimatyzacjaDoDomuPage() { ))}
- - - - - - + +
@@ -246,11 +246,11 @@ export default function KlimatyzacjaDoDomuPage() { {companyDetails.phone} - - - + + diff --git a/app/klimatyzacja/[miasto]/page.tsx b/app/klimatyzacja/[miasto]/page.tsx index 5c78761..607b013 100644 --- a/app/klimatyzacja/[miasto]/page.tsx +++ b/app/klimatyzacja/[miasto]/page.tsx @@ -158,12 +158,12 @@ export default async function MiastoPage({ params }: Props) { Pompa ciepła {city.przyimek} {city.nameDopelniacz}

{city.heatPumpTeaser}

- - - + +
{[ diff --git a/app/koszyk/page.tsx b/app/koszyk/page.tsx index 65477dc..eb8e98f 100644 --- a/app/koszyk/page.tsx +++ b/app/koszyk/page.tsx @@ -16,9 +16,9 @@ export default function KoszykPage() {

Koszyk jest pusty

Dodaj produkty ze sklepu aby złożyć zamówienie.

- - - + +Przejdź do sklepu +
); @@ -80,11 +80,11 @@ export default function KoszykPage() {

+ koszt montażu ustalany indywidualnie

- - - + + diff --git a/app/layout.tsx b/app/layout.tsx index c77de62..79e5887 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -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", }); diff --git a/app/montaz-klimatyzacji/page.tsx b/app/montaz-klimatyzacji/page.tsx index 0079e67..4470e0c 100644 --- a/app/montaz-klimatyzacji/page.tsx +++ b/app/montaz-klimatyzacji/page.tsx @@ -117,11 +117,11 @@ export default function MontazKlimatyzacjiPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -211,11 +211,11 @@ export default function MontazKlimatyzacjiPage() { ))}
- - - + +
diff --git a/app/page.tsx b/app/page.tsx index 3432f63..6afc822 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -161,11 +161,11 @@ export default function Home() {

); diff --git a/app/serwis-daikin/page.tsx b/app/serwis-daikin/page.tsx index 8ded7a8..e1dd5dc 100644 --- a/app/serwis-daikin/page.tsx +++ b/app/serwis-daikin/page.tsx @@ -94,11 +94,11 @@ export default function SerwisDaikinPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -197,11 +197,11 @@ export default function SerwisDaikinPage() { {companyDetails.phone} - - - + + diff --git a/app/serwis-klimatyzacji/page.tsx b/app/serwis-klimatyzacji/page.tsx index 547ad64..3c13e8c 100644 --- a/app/serwis-klimatyzacji/page.tsx +++ b/app/serwis-klimatyzacji/page.tsx @@ -150,11 +150,11 @@ export default function SerwisKlimatyzacjiPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -235,11 +235,11 @@ export default function SerwisKlimatyzacjiPage() { {companyDetails.phone} - - - + + diff --git a/app/serwis-lg/page.tsx b/app/serwis-lg/page.tsx index 3454103..8ab3d1d 100644 --- a/app/serwis-lg/page.tsx +++ b/app/serwis-lg/page.tsx @@ -90,11 +90,11 @@ export default function SerwisLGPage() { Zadzwoń: {companyDetails.phone} - - - + + diff --git a/app/serwis-mitsubishi/page.tsx b/app/serwis-mitsubishi/page.tsx index 88320c6..45c7cfd 100644 --- a/app/serwis-mitsubishi/page.tsx +++ b/app/serwis-mitsubishi/page.tsx @@ -94,11 +94,11 @@ export default function SerwisMitsubishiPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -201,11 +201,11 @@ export default function SerwisMitsubishiPage() { {companyDetails.phone} - - - + + diff --git a/app/serwis-samsung/page.tsx b/app/serwis-samsung/page.tsx index 8edd190..c984c70 100644 --- a/app/serwis-samsung/page.tsx +++ b/app/serwis-samsung/page.tsx @@ -94,11 +94,11 @@ export default function SerwisSamsungPage() { Zadzwoń: {companyDetails.phone} - - - + + @@ -197,11 +197,11 @@ export default function SerwisSamsungPage() { {companyDetails.phone} - - - + + diff --git a/app/sitemap.ts b/app/sitemap.ts index 079b0f6..ef0d9c5 100644 --- a/app/sitemap.ts +++ b/app/sitemap.ts @@ -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', diff --git a/app/zamowienie/page.tsx b/app/zamowienie/page.tsx index 975a45c..c06b1d1 100644 --- a/app/zamowienie/page.tsx +++ b/app/zamowienie/page.tsx @@ -22,7 +22,9 @@ export default function ZamowieniePage() {

Koszyk jest pusty.

- + +Wróć do sklepu +
); @@ -35,7 +37,9 @@ export default function ZamowieniePage() {

Zamówienie przyjęte!

{state.message}

- + +Wróć do sklepu + ); diff --git a/components/awaria/AwariaClient.tsx b/components/awaria/AwariaClient.tsx index cb080de..d0c9617 100644 --- a/components/awaria/AwariaClient.tsx +++ b/components/awaria/AwariaClient.tsx @@ -168,11 +168,11 @@ export function AwariaClient() { {companyDetails.phone} - - - + + ); diff --git a/components/kalkulator/KalkulatorClient.tsx b/components/kalkulator/KalkulatorClient.tsx index cb5c051..792dd12 100644 --- a/components/kalkulator/KalkulatorClient.tsx +++ b/components/kalkulator/KalkulatorClient.tsx @@ -949,11 +949,11 @@ export function KalkulatorClient({ products }: Props) { Bezpłatna wycena - - - + + @@ -976,11 +976,11 @@ export function KalkulatorClient({ products }: Props) { ) ) : ( - - - + + )} diff --git a/components/layout/Header.tsx b/components/layout/Header.tsx index 54abddb..de0c375 100644 --- a/components/layout/Header.tsx +++ b/components/layout/Header.tsx @@ -240,17 +240,17 @@ export function Header() { {/* CTA Button */}
- - - - - - + +
diff --git a/components/layout/MobileMenu.tsx b/components/layout/MobileMenu.tsx index 987f6b5..26e6983 100644 --- a/components/layout/MobileMenu.tsx +++ b/components/layout/MobileMenu.tsx @@ -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) { Zadzwoń: {companyDetails.phone} - - - + + diff --git a/components/layout/TrustBar.tsx b/components/layout/TrustBar.tsx index 562aaab..66ea7fc 100644 --- a/components/layout/TrustBar.tsx +++ b/components/layout/TrustBar.tsx @@ -39,9 +39,9 @@ export function TrustBar() {
-

+

{item.title} -

+

{item.description}

diff --git a/components/sections/AboutStory.tsx b/components/sections/AboutStory.tsx index 2f4630c..4760006 100644 --- a/components/sections/AboutStory.tsx +++ b/components/sections/AboutStory.tsx @@ -22,7 +22,7 @@ export function AboutStory() {
- + {companyDetails.stats.find(s => s.label.includes("doświadczenia"))?.value || "15+"}
diff --git a/components/sections/BlogPreview.tsx b/components/sections/BlogPreview.tsx index 01b03a8..3fcc4e1 100644 --- a/components/sections/BlogPreview.tsx +++ b/components/sections/BlogPreview.tsx @@ -92,12 +92,12 @@ export function BlogPreview() { {/* Blog Catalog Button */}
- - - + +
diff --git a/components/sections/CtaBanner.tsx b/components/sections/CtaBanner.tsx index 1eb97d6..fbfed66 100644 --- a/components/sections/CtaBanner.tsx +++ b/components/sections/CtaBanner.tsx @@ -60,12 +60,12 @@ export function CtaBanner({ {/* Action buttons */}
- - - + + - - - + +
diff --git a/components/sections/HeroSection.tsx b/components/sections/HeroSection.tsx index c5b1d00..2881f15 100644 --- a/components/sections/HeroSection.tsx +++ b/components/sections/HeroSection.tsx @@ -80,12 +80,12 @@ export function HeroSection({ {/* CTA Buttons */}
{ctaText && ctaLink && ( - - - + + )}
diff --git a/components/sections/HomeServices.tsx b/components/sections/HomeServices.tsx index 86ecec9..3e9a669 100644 --- a/components/sections/HomeServices.tsx +++ b/components/sections/HomeServices.tsx @@ -132,11 +132,11 @@ export function HomeServices() {

Nasi certyfikowani technicy są dostępni od poniedziałku do soboty. Zarezerwuj termin już dziś, aby uniknąć kolejek w sezonie.

- - - + +
@@ -51,12 +51,12 @@ export function PillarsSection() {
- - - + +
diff --git a/components/sections/Testimonials.tsx b/components/sections/Testimonials.tsx index dc9510d..05eae3d 100644 --- a/components/sections/Testimonials.tsx +++ b/components/sections/Testimonials.tsx @@ -43,11 +43,11 @@ export function Testimonials() {

Opinie klientów

- - diff --git a/components/shop/CartSummary.tsx b/components/shop/CartSummary.tsx index c26d3af..4044af7 100644 --- a/components/shop/CartSummary.tsx +++ b/components/shop/CartSummary.tsx @@ -58,12 +58,12 @@ export function CartSummary() {
{/* Przycisk */} - - - + + {/* Zaufanie */}
diff --git a/components/shop/CompareBar.tsx b/components/shop/CompareBar.tsx index ad53fac..dcb5d9d 100644 --- a/components/shop/CompareBar.tsx +++ b/components/shop/CompareBar.tsx @@ -47,11 +47,11 @@ export function CompareBar() {
{items.length >= 2 && ( - - - + + )} )} {cartState === 'cart' && ( - - - + + )} - - - + +
- + +
); diff --git a/next.config.ts b/next.config.ts index 16f1658..81d45fb 100644 --- a/next.config.ts +++ b/next.config.ts @@ -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); diff --git a/package-lock.json b/package-lock.json index 3eb38d8..f52f779 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 1ed9d68..e07b415 100644 --- a/package.json +++ b/package.json @@ -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" + ] }