[{"data":1,"prerenderedAt":6610},["ShallowReactive",2],{"\u002Fdocs\u002Fgetting-started\u002Finstallation":3,"docs-nav":885},{"id":4,"title":5,"body":6,"description":875,"extension":876,"links":877,"meta":878,"navigation":879,"path":881,"seo":882,"stem":883,"__hash__":884},"docs\u002F1.getting-started\u002F2.installation.md","Installation",{"type":7,"value":8,"toc":859},"minimark",[9,13,18,21,58,62,65,124,127,131,134,150,157,288,401,405,413,435,446,457,461,464,511,514,522,528,532,535,540,601,633,637,650,661,665,677,681,727,734,753,757,760,796,800,812,824,828,855],[10,11,12],"p",{},"This guide will walk you through installing WooNuxt and getting your first headless eCommerce store running.",[14,15,17],"h2",{"id":16},"step-1-clone-repository","Step 1: Clone Repository",[10,19,20],{},"Clone the WooNuxt repository to your local machine:",[22,23,29],"pre",{"className":24,"code":25,"filename":26,"language":27,"meta":28,"style":28},"language-bash shiki shiki-themes material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n","Terminal","bash","",[30,31,32,48],"code",{"__ignoreMap":28},[33,34,37,41,45],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"s5Dmg","git",[33,42,44],{"class":43},"sfyAc"," clone",[33,46,47],{"class":43}," https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\n",[33,49,51,55],{"class":35,"line":50},2,[33,52,54],{"class":53},"sdLwU","cd",[33,56,57],{"class":43}," woonuxt\n",[14,59,61],{"id":60},"step-2-install-dependencies","Step 2: Install Dependencies",[10,63,64],{},"Install the required Node.js packages:",[22,66,68],{"className":24,"code":67,"filename":26,"language":27,"meta":28,"style":28},"# Using npm\nnpm install\n\n# Or using yarn\nyarn install\n\n# Or using pnpm\npnpm install\n",[30,69,70,76,84,91,97,105,110,116],{"__ignoreMap":28},[33,71,72],{"class":35,"line":36},[33,73,75],{"class":74},"saEQR","# Using npm\n",[33,77,78,81],{"class":35,"line":50},[33,79,80],{"class":39},"npm",[33,82,83],{"class":43}," install\n",[33,85,87],{"class":35,"line":86},3,[33,88,90],{"emptyLinePlaceholder":89},true,"\n",[33,92,94],{"class":35,"line":93},4,[33,95,96],{"class":74},"# Or using yarn\n",[33,98,100,103],{"class":35,"line":99},5,[33,101,102],{"class":39},"yarn",[33,104,83],{"class":43},[33,106,108],{"class":35,"line":107},6,[33,109,90],{"emptyLinePlaceholder":89},[33,111,113],{"class":35,"line":112},7,[33,114,115],{"class":74},"# Or using pnpm\n",[33,117,119,122],{"class":35,"line":118},8,[33,120,121],{"class":39},"pnpm",[33,123,83],{"class":43},[10,125,126],{},"This will install all dependencies including Nuxt.js, Vue, and other required packages.",[14,128,130],{"id":129},"step-3-environment-configuration","Step 3: Environment Configuration",[10,132,133],{},"Create your environment configuration file:",[22,135,137],{"className":24,"code":136,"filename":26,"language":27,"meta":28,"style":28},"cp .env.example .env\n",[30,138,139],{"__ignoreMap":28},[33,140,141,144,147],{"class":35,"line":36},[33,142,143],{"class":39},"cp",[33,145,146],{"class":43}," .env.example",[33,148,149],{"class":43}," .env\n",[10,151,152,153,156],{},"Edit the ",[30,154,155],{},".env"," file with your WordPress site details:",[22,158,162],{"className":159,"code":160,"filename":155,"language":161,"meta":28,"style":28},"language-env shiki shiki-themes material-theme-palenight","# ─── Required ────────────────────────────────────────────────\n# WordPress GraphQL endpoint\nGQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n\n# Comma-separated list of image domains for @nuxt\u002Fimage optimization\nNUXT_IMAGE_DOMAINS=yoursite.com,cdn.yoursite.com\n\n# ─── Optional ────────────────────────────────────────────────\n# Origin header sent with GraphQL requests (defaults to http:\u002F\u002Flocalhost:3000)\nAPP_HOST=http:\u002F\u002Flocalhost:3000\n\n# ISR cache lifetime in seconds for product\u002Fcategory pages (default: 3600)\n# Increase for large catalogs (10 000+ products) to reduce build times\nCATALOG_ISR_TTL=3600\n\n# Override products per page set in WooNuxt Settings plugin\nNUXT_PUBLIC_PRODUCTS_PER_PAGE=24\n\n# Stripe publishable key (overrides value fetched from WordPress)\nNUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...\n\n# Override brand primary color (hex, overrides WooNuxt Settings plugin value)\nPRIMARY_COLOR=#7F54B2\n","env",[30,163,164,169,174,179,183,188,193,197,202,208,214,219,225,231,237,242,248,254,259,265,271,276,282],{"__ignoreMap":28},[33,165,166],{"class":35,"line":36},[33,167,168],{},"# ─── Required ────────────────────────────────────────────────\n",[33,170,171],{"class":35,"line":50},[33,172,173],{},"# WordPress GraphQL endpoint\n",[33,175,176],{"class":35,"line":86},[33,177,178],{},"GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[33,180,181],{"class":35,"line":93},[33,182,90],{"emptyLinePlaceholder":89},[33,184,185],{"class":35,"line":99},[33,186,187],{},"# Comma-separated list of image domains for @nuxt\u002Fimage optimization\n",[33,189,190],{"class":35,"line":107},[33,191,192],{},"NUXT_IMAGE_DOMAINS=yoursite.com,cdn.yoursite.com\n",[33,194,195],{"class":35,"line":112},[33,196,90],{"emptyLinePlaceholder":89},[33,198,199],{"class":35,"line":118},[33,200,201],{},"# ─── Optional ────────────────────────────────────────────────\n",[33,203,205],{"class":35,"line":204},9,[33,206,207],{},"# Origin header sent with GraphQL requests (defaults to http:\u002F\u002Flocalhost:3000)\n",[33,209,211],{"class":35,"line":210},10,[33,212,213],{},"APP_HOST=http:\u002F\u002Flocalhost:3000\n",[33,215,217],{"class":35,"line":216},11,[33,218,90],{"emptyLinePlaceholder":89},[33,220,222],{"class":35,"line":221},12,[33,223,224],{},"# ISR cache lifetime in seconds for product\u002Fcategory pages (default: 3600)\n",[33,226,228],{"class":35,"line":227},13,[33,229,230],{},"# Increase for large catalogs (10 000+ products) to reduce build times\n",[33,232,234],{"class":35,"line":233},14,[33,235,236],{},"CATALOG_ISR_TTL=3600\n",[33,238,240],{"class":35,"line":239},15,[33,241,90],{"emptyLinePlaceholder":89},[33,243,245],{"class":35,"line":244},16,[33,246,247],{},"# Override products per page set in WooNuxt Settings plugin\n",[33,249,251],{"class":35,"line":250},17,[33,252,253],{},"NUXT_PUBLIC_PRODUCTS_PER_PAGE=24\n",[33,255,257],{"class":35,"line":256},18,[33,258,90],{"emptyLinePlaceholder":89},[33,260,262],{"class":35,"line":261},19,[33,263,264],{},"# Stripe publishable key (overrides value fetched from WordPress)\n",[33,266,268],{"class":35,"line":267},20,[33,269,270],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...\n",[33,272,274],{"class":35,"line":273},21,[33,275,90],{"emptyLinePlaceholder":89},[33,277,279],{"class":35,"line":278},22,[33,280,281],{},"# Override brand primary color (hex, overrides WooNuxt Settings plugin value)\n",[33,283,285],{"class":35,"line":284},23,[33,286,287],{},"PRIMARY_COLOR=#7F54B2\n",[289,290,291,307],"table",{},[292,293,294],"thead",{},[295,296,297,301,304],"tr",{},[298,299,300],"th",{},"Variable",[298,302,303],{},"Required",[298,305,306],{},"Description",[308,309,310,324,336,349,365,377,389],"tbody",{},[295,311,312,318,321],{},[313,314,315],"td",{},[30,316,317],{},"GQL_HOST",[313,319,320],{},"✅",[313,322,323],{},"WordPress GraphQL endpoint",[295,325,326,331,333],{},[313,327,328],{},[30,329,330],{},"NUXT_IMAGE_DOMAINS",[313,332,320],{},[313,334,335],{},"Allowed image domains for optimization",[295,337,338,343,346],{},[313,339,340],{},[30,341,342],{},"APP_HOST",[313,344,345],{},"—",[313,347,348],{},"Origin header for GraphQL requests",[295,350,351,356,358],{},[313,352,353],{},[30,354,355],{},"CATALOG_ISR_TTL",[313,357,345],{},[313,359,360,361,364],{},"ISR cache TTL in seconds (default ",[30,362,363],{},"3600",")",[295,366,367,372,374],{},[313,368,369],{},[30,370,371],{},"NUXT_PUBLIC_PRODUCTS_PER_PAGE",[313,373,345],{},[313,375,376],{},"Overrides plugin setting",[295,378,379,384,386],{},[313,380,381],{},[30,382,383],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY",[313,385,345],{},[313,387,388],{},"Overrides Stripe key from plugin",[295,390,391,396,398],{},[313,392,393],{},[30,394,395],{},"PRIMARY_COLOR",[313,397,345],{},[313,399,400],{},"Overrides brand color from plugin",[14,402,404],{"id":403},"step-4-wordpress-setup","Step 4: WordPress Setup",[10,406,407,408,412],{},"Before starting the frontend, you need to configure WordPress. Download and install the ",[409,410,411],"strong",{},"WooNuxt Settings Plugin"," which will automatically install and configure:",[414,415,416,423,429],"ul",{},[417,418,419,422],"li",{},[409,420,421],{},"WPGraphQL 2.12.0+"," - GraphQL API for WordPress",[417,424,425,428],{},[409,426,427],{},"WooGraphQL 1.0.2+"," - WooCommerce integration for GraphQL",[417,430,431,434],{},[409,432,433],{},"WPGraphQL Headless Login 0.4.4+"," - Authentication for headless sites",[10,436,437],{},[409,438,439],{},[440,441,445],"a",{"href":442,"rel":443},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt-settings\u002Freleases\u002Flatest\u002Fdownload\u002Fwoonuxt-settings.zip",[444],"nofollow","Download woonuxt-settings.zip",[447,448,449],"tip",{},[10,450,451,452,456],{},"See the ",[440,453,455],{"href":454},"\u002Fdocs\u002Fwordpress-setup","WordPress Setup Guide"," for complete installation instructions.",[14,458,460],{"id":459},"step-5-start-development-server","Step 5: Start Development Server",[10,462,463],{},"Once WordPress is configured, start your WooNuxt development server:",[22,465,467],{"className":24,"code":466,"filename":26,"language":27,"meta":28,"style":28},"# Using npm\nnpm run dev\n\n# Or using yarn\nyarn dev\n\n# Or using pnpm\npnpm dev\n",[30,468,469,473,483,487,491,497,501,505],{"__ignoreMap":28},[33,470,471],{"class":35,"line":36},[33,472,75],{"class":74},[33,474,475,477,480],{"class":35,"line":50},[33,476,80],{"class":39},[33,478,479],{"class":43}," run",[33,481,482],{"class":43}," dev\n",[33,484,485],{"class":35,"line":86},[33,486,90],{"emptyLinePlaceholder":89},[33,488,489],{"class":35,"line":93},[33,490,96],{"class":74},[33,492,493,495],{"class":35,"line":99},[33,494,102],{"class":39},[33,496,482],{"class":43},[33,498,499],{"class":35,"line":107},[33,500,90],{"emptyLinePlaceholder":89},[33,502,503],{"class":35,"line":112},[33,504,115],{"class":74},[33,506,507,509],{"class":35,"line":118},[33,508,121],{"class":39},[33,510,482],{"class":43},[10,512,513],{},"Your store should now be running at:",[22,515,520],{"className":516,"code":518,"language":519},[517],"language-text","http:\u002F\u002Flocalhost:3000\n","text",[30,521,518],{"__ignoreMap":28},[523,524,525],"success",{},[10,526,527],{},"🎉 Congratulations! Your WooNuxt store is now running.",[14,529,531],{"id":530},"optional-ssl-for-local-development","Optional: SSL for Local Development",[10,533,534],{},"If you need HTTPS for local development (for testing payment gateways, PWA features, or third-party integrations):",[536,537,539],"h3",{"id":538},"install-mkcert","Install mkcert",[22,541,544],{"className":24,"code":542,"filename":543,"language":27,"meta":28,"style":28},"# macOS (Homebrew)\nbrew install mkcert\n\n# Linux\nsudo apt install mkcert   # Debian\u002FUbuntu\nsudo yum install mkcert    # Fedora\u002FRHEL\n","macOS\u002FLinux",[30,545,546,551,562,566,571,587],{"__ignoreMap":28},[33,547,548],{"class":35,"line":36},[33,549,550],{"class":74},"# macOS (Homebrew)\n",[33,552,553,556,559],{"class":35,"line":50},[33,554,555],{"class":39},"brew",[33,557,558],{"class":43}," install",[33,560,561],{"class":43}," mkcert\n",[33,563,564],{"class":35,"line":86},[33,565,90],{"emptyLinePlaceholder":89},[33,567,568],{"class":35,"line":93},[33,569,570],{"class":74},"# Linux\n",[33,572,573,576,579,581,584],{"class":35,"line":99},[33,574,575],{"class":39},"sudo",[33,577,578],{"class":43}," apt",[33,580,558],{"class":43},[33,582,583],{"class":43}," mkcert",[33,585,586],{"class":74},"   # Debian\u002FUbuntu\n",[33,588,589,591,594,596,598],{"class":35,"line":107},[33,590,575],{"class":39},[33,592,593],{"class":43}," yum",[33,595,558],{"class":43},[33,597,583],{"class":43},[33,599,600],{"class":74},"    # Fedora\u002FRHEL\n",[22,602,607],{"className":603,"code":604,"filename":605,"language":606,"meta":28,"style":28},"language-powershell shiki shiki-themes material-theme-palenight","# Using Chocolatey\nchoco install mkcert\n\n# Or using Scoop\nscoop install mkcert\n","Windows","powershell",[30,608,609,614,619,623,628],{"__ignoreMap":28},[33,610,611],{"class":35,"line":36},[33,612,613],{},"# Using Chocolatey\n",[33,615,616],{"class":35,"line":50},[33,617,618],{},"choco install mkcert\n",[33,620,621],{"class":35,"line":86},[33,622,90],{"emptyLinePlaceholder":89},[33,624,625],{"class":35,"line":93},[33,626,627],{},"# Or using Scoop\n",[33,629,630],{"class":35,"line":99},[33,631,632],{},"scoop install mkcert\n",[536,634,636],{"id":635},"generate-certificate","Generate Certificate",[22,638,640],{"className":24,"code":639,"filename":26,"language":27,"meta":28,"style":28},"mkcert localhost\n",[30,641,642],{"__ignoreMap":28},[33,643,644,647],{"class":35,"line":36},[33,645,646],{"class":39},"mkcert",[33,648,649],{"class":43}," localhost\n",[10,651,652,653,656,657,660],{},"This creates ",[30,654,655],{},"localhost.pem"," and ",[30,658,659],{},"localhost-key.pem"," files in your current directory.",[536,662,664],{"id":663},"install-certificate-authority","Install Certificate Authority",[22,666,668],{"className":24,"code":667,"filename":26,"language":27,"meta":28,"style":28},"mkcert -install\n",[30,669,670],{"__ignoreMap":28},[33,671,672,674],{"class":35,"line":36},[33,673,646],{"class":39},[33,675,676],{"class":43}," -install\n",[536,678,680],{"id":679},"start-with-ssl","Start with SSL",[22,682,684],{"className":24,"code":683,"filename":26,"language":27,"meta":28,"style":28},"# Using npm\nnpm run dev:ssl\n\n# Or using yarn\nyarn dev:ssl\n\n# Or using pnpm\npnpm dev:ssl\n",[30,685,686,690,699,703,707,713,717,721],{"__ignoreMap":28},[33,687,688],{"class":35,"line":36},[33,689,75],{"class":74},[33,691,692,694,696],{"class":35,"line":50},[33,693,80],{"class":39},[33,695,479],{"class":43},[33,697,698],{"class":43}," dev:ssl\n",[33,700,701],{"class":35,"line":86},[33,702,90],{"emptyLinePlaceholder":89},[33,704,705],{"class":35,"line":93},[33,706,96],{"class":74},[33,708,709,711],{"class":35,"line":99},[33,710,102],{"class":39},[33,712,698],{"class":43},[33,714,715],{"class":35,"line":107},[33,716,90],{"emptyLinePlaceholder":89},[33,718,719],{"class":35,"line":112},[33,720,115],{"class":74},[33,722,723,725],{"class":35,"line":118},[33,724,121],{"class":39},[33,726,698],{"class":43},[10,728,729,730,733],{},"Your store will now be available at ",[30,731,732],{},"https:\u002F\u002Flocalhost:3000"," with a valid SSL certificate.",[447,735,736],{},[10,737,738,739,742,743,746,747,752],{},"The ",[30,740,741],{},"dev:ssl"," script must be configured in your ",[30,744,745],{},"package.json",". Check the ",[440,748,751],{"href":749,"rel":750},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt",[444],"WooNuxt repository"," for the latest configuration.",[14,754,756],{"id":755},"verify-installation","Verify Installation",[10,758,759],{},"Check that everything is working:",[761,762,763,772,778,784,790],"ol",{},[417,764,765,768,769],{},[409,766,767],{},"Homepage loads"," - Navigate to ",[30,770,771],{},"http:\u002F\u002Flocalhost:3000",[417,773,774,777],{},[409,775,776],{},"Products display"," - Products from WooCommerce appear",[417,779,780,783],{},[409,781,782],{},"No errors"," - Check browser console (F12) for errors",[417,785,786,789],{},[409,787,788],{},"Images load"," - Product images display correctly",[417,791,792,795],{},[409,793,794],{},"Navigation works"," - Menu and links function properly",[14,797,799],{"id":798},"common-issues","Common Issues",[10,801,802,805,806,808,809,811],{},[409,803,804],{},"GraphQL connection errors?"," Verify your ",[30,807,317],{}," in ",[30,810,155],{}," matches your WordPress GraphQL endpoint and ensure the WooNuxt Settings plugin is installed.",[10,813,814,817,818,823],{},[409,815,816],{},"Need help?"," Visit ",[440,819,822],{"href":820,"rel":821},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt\u002Fissues",[444],"GitHub Issues"," for support.",[14,825,827],{"id":826},"next-steps","Next Steps",[829,830,831,839,847],"card-group",{},[832,833,836],"card",{"icon":834,"title":835,"to":454},"i-lucide-server","WordPress Setup",[10,837,838],{},"Configure your WordPress backend with required plugins",[832,840,844],{"icon":841,"title":842,"to":843},"i-lucide-zap","Quick Start","\u002Fdocs\u002Fgetting-started\u002Fquick-start",[10,845,846],{},"Get your store running in minutes",[832,848,852],{"icon":849,"title":850,"to":851},"i-lucide-plug","Plugin Setup","\u002Fdocs\u002Fwordpress-setup\u002Fplugins",[10,853,854],{},"Install and configure WooNuxt Settings",[856,857,858],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}",{"title":28,"searchDepth":50,"depth":50,"links":860},[861,862,863,864,865,866,872,873,874],{"id":16,"depth":50,"text":17},{"id":60,"depth":50,"text":61},{"id":129,"depth":50,"text":130},{"id":403,"depth":50,"text":404},{"id":459,"depth":50,"text":460},{"id":530,"depth":50,"text":531,"children":867},[868,869,870,871],{"id":538,"depth":86,"text":539},{"id":635,"depth":86,"text":636},{"id":663,"depth":86,"text":664},{"id":679,"depth":86,"text":680},{"id":755,"depth":50,"text":756},{"id":798,"depth":50,"text":799},{"id":826,"depth":50,"text":827},"Step-by-step guide to installing WooNuxt","md",null,{},{"icon":880},"i-lucide-download","\u002Fgetting-started\u002Finstallation",{"title":5,"description":875},"1.getting-started\u002F2.installation","X3bIq_deJosp8ZoaEAjpkrkL8FsI8s52IBlYCVsLJ5I",[886,1203,1823,2343,3171,3355,3473,4748,5099,6152],{"id":887,"title":888,"body":889,"description":1195,"extension":876,"links":877,"meta":1196,"navigation":1197,"path":1199,"seo":1200,"stem":1201,"__hash__":1202},"docs\u002F1.getting-started\u002F1.index.md","Introduction",{"type":7,"value":890,"toc":1188},[891,898,902,905,937,941,944,1006,1010,1017,1023,1026,1040,1043,1046,1153,1159,1161,1185],[10,892,893,894,897],{},"WooNuxt is the ",[409,895,896],{},"Next Generation Front-End for WooCommerce",". A modern, headless eCommerce solution that combines the power of WooCommerce with the performance of Nuxt.js. Build blazing-fast, SEO-friendly online stores with complete control over your frontend while leveraging WooCommerce's robust backend.",[14,899,901],{"id":900},"what-is-woonuxt","What is WooNuxt?",[10,903,904],{},"WooNuxt provides a complete eCommerce frontend built with:",[414,906,907,913,919,925,931],{},[417,908,909,912],{},[409,910,911],{},"Nuxt.js 4"," - The latest version of the Vue.js framework",[417,914,915,918],{},[409,916,917],{},"WooCommerce"," - Industry-standard eCommerce platform",[417,920,921,924],{},[409,922,923],{},"GraphQL"," - Efficient data fetching via WPGraphQL & WooGraphQL",[417,926,927,930],{},[409,928,929],{},"Tailwind CSS"," - Utility-first styling framework",[417,932,933,936],{},[409,934,935],{},"Vue 3"," - Reactive, component-based architecture",[14,938,940],{"id":939},"key-features","Key Features",[10,942,943],{},"WooNuxt comes with everything you need to build a modern online store:",[414,945,946,952,958,964,970,976,982,988,994,1000],{},[417,947,948,951],{},[409,949,950],{},"🚀 Lightning Fast",": Server-side rendering and optimized performance",[417,953,954,957],{},[409,955,956],{},"🛒 Complete Cart & Checkout",": Full shopping experience with secure payments",[417,959,960,963],{},[409,961,962],{},"🔐 User Authentication",": Customer accounts with JWT-based auth",[417,965,966,969],{},[409,967,968],{},"💳 Stripe Integration",": Built-in payment processing",[417,971,972,975],{},[409,973,974],{},"🔍 Advanced Filtering",": Dynamic product filters and search",[417,977,978,981],{},[409,979,980],{},"📱 Responsive Design",": Mobile-first, works on all devices",[417,983,984,987],{},[409,985,986],{},"🎨 Fully Customizable",": Built with Nuxt Layers for easy overrides",[417,989,990,993],{},[409,991,992],{},"♿ Accessible",": WCAG compliant components",[417,995,996,999],{},[409,997,998],{},"🌍 i18n Ready",": Multi-language support included",[417,1001,1002,1005],{},[409,1003,1004],{},"🖼️ Image Optimization",": Automatic image optimization with Nuxt Image",[14,1007,1009],{"id":1008},"architecture","Architecture",[10,1011,1012,1013,1016],{},"WooNuxt uses a ",[409,1014,1015],{},"Nuxt Layers"," architecture - similar to WordPress parent\u002Fchild themes:",[22,1018,1021],{"className":1019,"code":1020,"language":519},[517],"\nwoonuxt\u002F\n├── woonuxt_base\u002F # Core functionality (parent)\n└── app\u002F # Your customizations (child)\n\n",[30,1022,1020],{"__ignoreMap":28},[10,1024,1025],{},"This means:",[414,1027,1028,1031,1034,1037],{},[417,1029,1030],{},"✅ Easy updates to core without losing customizations",[417,1032,1033],{},"✅ Override any component, page, or composable",[417,1035,1036],{},"✅ Clean separation of concerns",[417,1038,1039],{},"✅ Full control over your implementation",[14,1041,842],{"id":1042},"quick-start",[10,1044,1045],{},"Get started in minutes:",[22,1047,1049],{"className":24,"code":1048,"language":27,"meta":28,"style":28},"# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n\n# Install dependencies\nnpm install\n# or: yarn install\n# or: pnpm install\n\n# Create environment file\ncp .env.example .env\n\n# Edit .env with your WordPress URL\n# GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n\n# Start development server\nnpm run dev\n# or: yarn dev\n# or: pnpm dev\n",[30,1050,1051,1056,1064,1070,1074,1079,1085,1090,1095,1099,1104,1112,1116,1121,1126,1130,1135,1143,1148],{"__ignoreMap":28},[33,1052,1053],{"class":35,"line":36},[33,1054,1055],{"class":74},"# Clone the repository\n",[33,1057,1058,1060,1062],{"class":35,"line":50},[33,1059,40],{"class":39},[33,1061,44],{"class":43},[33,1063,47],{"class":43},[33,1065,1066,1068],{"class":35,"line":86},[33,1067,54],{"class":53},[33,1069,57],{"class":43},[33,1071,1072],{"class":35,"line":93},[33,1073,90],{"emptyLinePlaceholder":89},[33,1075,1076],{"class":35,"line":99},[33,1077,1078],{"class":74},"# Install dependencies\n",[33,1080,1081,1083],{"class":35,"line":107},[33,1082,80],{"class":39},[33,1084,83],{"class":43},[33,1086,1087],{"class":35,"line":112},[33,1088,1089],{"class":74},"# or: yarn install\n",[33,1091,1092],{"class":35,"line":118},[33,1093,1094],{"class":74},"# or: pnpm install\n",[33,1096,1097],{"class":35,"line":204},[33,1098,90],{"emptyLinePlaceholder":89},[33,1100,1101],{"class":35,"line":210},[33,1102,1103],{"class":74},"# Create environment file\n",[33,1105,1106,1108,1110],{"class":35,"line":216},[33,1107,143],{"class":39},[33,1109,146],{"class":43},[33,1111,149],{"class":43},[33,1113,1114],{"class":35,"line":221},[33,1115,90],{"emptyLinePlaceholder":89},[33,1117,1118],{"class":35,"line":227},[33,1119,1120],{"class":74},"# Edit .env with your WordPress URL\n",[33,1122,1123],{"class":35,"line":233},[33,1124,1125],{"class":74},"# GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[33,1127,1128],{"class":35,"line":239},[33,1129,90],{"emptyLinePlaceholder":89},[33,1131,1132],{"class":35,"line":244},[33,1133,1134],{"class":74},"# Start development server\n",[33,1136,1137,1139,1141],{"class":35,"line":250},[33,1138,80],{"class":39},[33,1140,479],{"class":43},[33,1142,482],{"class":43},[33,1144,1145],{"class":35,"line":256},[33,1146,1147],{"class":74},"# or: yarn dev\n",[33,1149,1150],{"class":35,"line":261},[33,1151,1152],{"class":74},"# or: pnpm dev\n",[10,1154,1155,1156,1158],{},"Your store will be running at ",[30,1157,771],{}," 🎉",[14,1160,827],{"id":826},[829,1162,1163,1169,1174,1180],{},[832,1164,1166],{"icon":880,"title":5,"to":1165},"\u002Fdocs\u002Fgetting-started\u002Finstallation",[10,1167,1168],{},"Step-by-step installation guide",[832,1170,1171],{"icon":834,"title":835,"to":454},[10,1172,1173],{},"Configure your WordPress backend",[832,1175,1177],{"icon":1176,"title":842,"to":843},"i-lucide-code",[10,1178,1179],{},"Get up and running quickly",[832,1181,1183],{"icon":1182,"title":850,"to":851},"i-lucide-sliders",[10,1184,854],{},[856,1186,1187],{},"html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":28,"searchDepth":50,"depth":50,"links":1189},[1190,1191,1192,1193,1194],{"id":900,"depth":50,"text":901},{"id":939,"depth":50,"text":940},{"id":1008,"depth":50,"text":1009},{"id":1042,"depth":50,"text":842},{"id":826,"depth":50,"text":827},"Welcome to WooNuxt - Modern headless eCommerce with WooCommerce and Nuxt.js",{},{"icon":1198},"i-lucide-house","\u002Fgetting-started",{"title":888,"description":1195},"1.getting-started\u002F1.index","SN5RIBfETaeRkCglu_xAcCOAAp9lgpbb36XRRtpc9ng",{"id":4,"title":5,"body":1204,"description":875,"extension":876,"links":877,"meta":1820,"navigation":1821,"path":881,"seo":1822,"stem":883,"__hash__":884},{"type":7,"value":1205,"toc":1804},[1206,1208,1210,1212,1230,1232,1234,1276,1278,1280,1282,1294,1298,1394,1480,1482,1486,1500,1507,1513,1515,1517,1561,1563,1568,1572,1574,1576,1578,1626,1650,1652,1662,1668,1670,1680,1682,1726,1730,1741,1743,1745,1769,1771,1779,1786,1788,1802],[10,1207,12],{},[14,1209,17],{"id":16},[10,1211,20],{},[22,1213,1214],{"className":24,"code":25,"filename":26,"language":27,"meta":28,"style":28},[30,1215,1216,1224],{"__ignoreMap":28},[33,1217,1218,1220,1222],{"class":35,"line":36},[33,1219,40],{"class":39},[33,1221,44],{"class":43},[33,1223,47],{"class":43},[33,1225,1226,1228],{"class":35,"line":50},[33,1227,54],{"class":53},[33,1229,57],{"class":43},[14,1231,61],{"id":60},[10,1233,64],{},[22,1235,1236],{"className":24,"code":67,"filename":26,"language":27,"meta":28,"style":28},[30,1237,1238,1242,1248,1252,1256,1262,1266,1270],{"__ignoreMap":28},[33,1239,1240],{"class":35,"line":36},[33,1241,75],{"class":74},[33,1243,1244,1246],{"class":35,"line":50},[33,1245,80],{"class":39},[33,1247,83],{"class":43},[33,1249,1250],{"class":35,"line":86},[33,1251,90],{"emptyLinePlaceholder":89},[33,1253,1254],{"class":35,"line":93},[33,1255,96],{"class":74},[33,1257,1258,1260],{"class":35,"line":99},[33,1259,102],{"class":39},[33,1261,83],{"class":43},[33,1263,1264],{"class":35,"line":107},[33,1265,90],{"emptyLinePlaceholder":89},[33,1267,1268],{"class":35,"line":112},[33,1269,115],{"class":74},[33,1271,1272,1274],{"class":35,"line":118},[33,1273,121],{"class":39},[33,1275,83],{"class":43},[10,1277,126],{},[14,1279,130],{"id":129},[10,1281,133],{},[22,1283,1284],{"className":24,"code":136,"filename":26,"language":27,"meta":28,"style":28},[30,1285,1286],{"__ignoreMap":28},[33,1287,1288,1290,1292],{"class":35,"line":36},[33,1289,143],{"class":39},[33,1291,146],{"class":43},[33,1293,149],{"class":43},[10,1295,152,1296,156],{},[30,1297,155],{},[22,1299,1300],{"className":159,"code":160,"filename":155,"language":161,"meta":28,"style":28},[30,1301,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342,1346,1350,1354,1358,1362,1366,1370,1374,1378,1382,1386,1390],{"__ignoreMap":28},[33,1303,1304],{"class":35,"line":36},[33,1305,168],{},[33,1307,1308],{"class":35,"line":50},[33,1309,173],{},[33,1311,1312],{"class":35,"line":86},[33,1313,178],{},[33,1315,1316],{"class":35,"line":93},[33,1317,90],{"emptyLinePlaceholder":89},[33,1319,1320],{"class":35,"line":99},[33,1321,187],{},[33,1323,1324],{"class":35,"line":107},[33,1325,192],{},[33,1327,1328],{"class":35,"line":112},[33,1329,90],{"emptyLinePlaceholder":89},[33,1331,1332],{"class":35,"line":118},[33,1333,201],{},[33,1335,1336],{"class":35,"line":204},[33,1337,207],{},[33,1339,1340],{"class":35,"line":210},[33,1341,213],{},[33,1343,1344],{"class":35,"line":216},[33,1345,90],{"emptyLinePlaceholder":89},[33,1347,1348],{"class":35,"line":221},[33,1349,224],{},[33,1351,1352],{"class":35,"line":227},[33,1353,230],{},[33,1355,1356],{"class":35,"line":233},[33,1357,236],{},[33,1359,1360],{"class":35,"line":239},[33,1361,90],{"emptyLinePlaceholder":89},[33,1363,1364],{"class":35,"line":244},[33,1365,247],{},[33,1367,1368],{"class":35,"line":250},[33,1369,253],{},[33,1371,1372],{"class":35,"line":256},[33,1373,90],{"emptyLinePlaceholder":89},[33,1375,1376],{"class":35,"line":261},[33,1377,264],{},[33,1379,1380],{"class":35,"line":267},[33,1381,270],{},[33,1383,1384],{"class":35,"line":273},[33,1385,90],{"emptyLinePlaceholder":89},[33,1387,1388],{"class":35,"line":278},[33,1389,281],{},[33,1391,1392],{"class":35,"line":284},[33,1393,287],{},[289,1395,1396,1406],{},[292,1397,1398],{},[295,1399,1400,1402,1404],{},[298,1401,300],{},[298,1403,303],{},[298,1405,306],{},[308,1407,1408,1418,1428,1438,1450,1460,1470],{},[295,1409,1410,1414,1416],{},[313,1411,1412],{},[30,1413,317],{},[313,1415,320],{},[313,1417,323],{},[295,1419,1420,1424,1426],{},[313,1421,1422],{},[30,1423,330],{},[313,1425,320],{},[313,1427,335],{},[295,1429,1430,1434,1436],{},[313,1431,1432],{},[30,1433,342],{},[313,1435,345],{},[313,1437,348],{},[295,1439,1440,1444,1446],{},[313,1441,1442],{},[30,1443,355],{},[313,1445,345],{},[313,1447,360,1448,364],{},[30,1449,363],{},[295,1451,1452,1456,1458],{},[313,1453,1454],{},[30,1455,371],{},[313,1457,345],{},[313,1459,376],{},[295,1461,1462,1466,1468],{},[313,1463,1464],{},[30,1465,383],{},[313,1467,345],{},[313,1469,388],{},[295,1471,1472,1476,1478],{},[313,1473,1474],{},[30,1475,395],{},[313,1477,345],{},[313,1479,400],{},[14,1481,404],{"id":403},[10,1483,407,1484,412],{},[409,1485,411],{},[414,1487,1488,1492,1496],{},[417,1489,1490,422],{},[409,1491,421],{},[417,1493,1494,428],{},[409,1495,427],{},[417,1497,1498,434],{},[409,1499,433],{},[10,1501,1502],{},[409,1503,1504],{},[440,1505,445],{"href":442,"rel":1506},[444],[447,1508,1509],{},[10,1510,451,1511,456],{},[440,1512,455],{"href":454},[14,1514,460],{"id":459},[10,1516,463],{},[22,1518,1519],{"className":24,"code":466,"filename":26,"language":27,"meta":28,"style":28},[30,1520,1521,1525,1533,1537,1541,1547,1551,1555],{"__ignoreMap":28},[33,1522,1523],{"class":35,"line":36},[33,1524,75],{"class":74},[33,1526,1527,1529,1531],{"class":35,"line":50},[33,1528,80],{"class":39},[33,1530,479],{"class":43},[33,1532,482],{"class":43},[33,1534,1535],{"class":35,"line":86},[33,1536,90],{"emptyLinePlaceholder":89},[33,1538,1539],{"class":35,"line":93},[33,1540,96],{"class":74},[33,1542,1543,1545],{"class":35,"line":99},[33,1544,102],{"class":39},[33,1546,482],{"class":43},[33,1548,1549],{"class":35,"line":107},[33,1550,90],{"emptyLinePlaceholder":89},[33,1552,1553],{"class":35,"line":112},[33,1554,115],{"class":74},[33,1556,1557,1559],{"class":35,"line":118},[33,1558,121],{"class":39},[33,1560,482],{"class":43},[10,1562,513],{},[22,1564,1566],{"className":1565,"code":518,"language":519},[517],[30,1567,518],{"__ignoreMap":28},[523,1569,1570],{},[10,1571,527],{},[14,1573,531],{"id":530},[10,1575,534],{},[536,1577,539],{"id":538},[22,1579,1580],{"className":24,"code":542,"filename":543,"language":27,"meta":28,"style":28},[30,1581,1582,1586,1594,1598,1602,1614],{"__ignoreMap":28},[33,1583,1584],{"class":35,"line":36},[33,1585,550],{"class":74},[33,1587,1588,1590,1592],{"class":35,"line":50},[33,1589,555],{"class":39},[33,1591,558],{"class":43},[33,1593,561],{"class":43},[33,1595,1596],{"class":35,"line":86},[33,1597,90],{"emptyLinePlaceholder":89},[33,1599,1600],{"class":35,"line":93},[33,1601,570],{"class":74},[33,1603,1604,1606,1608,1610,1612],{"class":35,"line":99},[33,1605,575],{"class":39},[33,1607,578],{"class":43},[33,1609,558],{"class":43},[33,1611,583],{"class":43},[33,1613,586],{"class":74},[33,1615,1616,1618,1620,1622,1624],{"class":35,"line":107},[33,1617,575],{"class":39},[33,1619,593],{"class":43},[33,1621,558],{"class":43},[33,1623,583],{"class":43},[33,1625,600],{"class":74},[22,1627,1628],{"className":603,"code":604,"filename":605,"language":606,"meta":28,"style":28},[30,1629,1630,1634,1638,1642,1646],{"__ignoreMap":28},[33,1631,1632],{"class":35,"line":36},[33,1633,613],{},[33,1635,1636],{"class":35,"line":50},[33,1637,618],{},[33,1639,1640],{"class":35,"line":86},[33,1641,90],{"emptyLinePlaceholder":89},[33,1643,1644],{"class":35,"line":93},[33,1645,627],{},[33,1647,1648],{"class":35,"line":99},[33,1649,632],{},[536,1651,636],{"id":635},[22,1653,1654],{"className":24,"code":639,"filename":26,"language":27,"meta":28,"style":28},[30,1655,1656],{"__ignoreMap":28},[33,1657,1658,1660],{"class":35,"line":36},[33,1659,646],{"class":39},[33,1661,649],{"class":43},[10,1663,652,1664,656,1666,660],{},[30,1665,655],{},[30,1667,659],{},[536,1669,664],{"id":663},[22,1671,1672],{"className":24,"code":667,"filename":26,"language":27,"meta":28,"style":28},[30,1673,1674],{"__ignoreMap":28},[33,1675,1676,1678],{"class":35,"line":36},[33,1677,646],{"class":39},[33,1679,676],{"class":43},[536,1681,680],{"id":679},[22,1683,1684],{"className":24,"code":683,"filename":26,"language":27,"meta":28,"style":28},[30,1685,1686,1690,1698,1702,1706,1712,1716,1720],{"__ignoreMap":28},[33,1687,1688],{"class":35,"line":36},[33,1689,75],{"class":74},[33,1691,1692,1694,1696],{"class":35,"line":50},[33,1693,80],{"class":39},[33,1695,479],{"class":43},[33,1697,698],{"class":43},[33,1699,1700],{"class":35,"line":86},[33,1701,90],{"emptyLinePlaceholder":89},[33,1703,1704],{"class":35,"line":93},[33,1705,96],{"class":74},[33,1707,1708,1710],{"class":35,"line":99},[33,1709,102],{"class":39},[33,1711,698],{"class":43},[33,1713,1714],{"class":35,"line":107},[33,1715,90],{"emptyLinePlaceholder":89},[33,1717,1718],{"class":35,"line":112},[33,1719,115],{"class":74},[33,1721,1722,1724],{"class":35,"line":118},[33,1723,121],{"class":39},[33,1725,698],{"class":43},[10,1727,729,1728,733],{},[30,1729,732],{},[447,1731,1732],{},[10,1733,738,1734,742,1736,746,1738,752],{},[30,1735,741],{},[30,1737,745],{},[440,1739,751],{"href":749,"rel":1740},[444],[14,1742,756],{"id":755},[10,1744,759],{},[761,1746,1747,1753,1757,1761,1765],{},[417,1748,1749,768,1751],{},[409,1750,767],{},[30,1752,771],{},[417,1754,1755,777],{},[409,1756,776],{},[417,1758,1759,783],{},[409,1760,782],{},[417,1762,1763,789],{},[409,1764,788],{},[417,1766,1767,795],{},[409,1768,794],{},[14,1770,799],{"id":798},[10,1772,1773,805,1775,808,1777,811],{},[409,1774,804],{},[30,1776,317],{},[30,1778,155],{},[10,1780,1781,817,1783,823],{},[409,1782,816],{},[440,1784,822],{"href":820,"rel":1785},[444],[14,1787,827],{"id":826},[829,1789,1790,1794,1798],{},[832,1791,1792],{"icon":834,"title":835,"to":454},[10,1793,838],{},[832,1795,1796],{"icon":841,"title":842,"to":843},[10,1797,846],{},[832,1799,1800],{"icon":849,"title":850,"to":851},[10,1801,854],{},[856,1803,858],{},{"title":28,"searchDepth":50,"depth":50,"links":1805},[1806,1807,1808,1809,1810,1811,1817,1818,1819],{"id":16,"depth":50,"text":17},{"id":60,"depth":50,"text":61},{"id":129,"depth":50,"text":130},{"id":403,"depth":50,"text":404},{"id":459,"depth":50,"text":460},{"id":530,"depth":50,"text":531,"children":1812},[1813,1814,1815,1816],{"id":538,"depth":86,"text":539},{"id":635,"depth":86,"text":636},{"id":663,"depth":86,"text":664},{"id":679,"depth":86,"text":680},{"id":755,"depth":50,"text":756},{"id":798,"depth":50,"text":799},{"id":826,"depth":50,"text":827},{},{"icon":880},{"title":5,"description":875},{"id":1824,"title":1825,"body":1826,"description":2336,"extension":876,"links":877,"meta":2337,"navigation":2338,"path":2339,"seo":2340,"stem":2341,"__hash__":2342},"docs\u002F1.getting-started\u002F3.quick-start.md","Quick Start Guide",{"type":7,"value":1827,"toc":2325},[1828,1831,1835,1838,1858,1862,1865,1896,1899,1908,1912,1918,1947,1953,1971,1975,1978,1988,2069,2074,2078,2140,2146,2180,2184,2228,2234,2238,2241,2269,2271,2277,2287,2295,2304,2308,2311,2322],[10,1829,1830],{},"Follow these steps to get WooNuxt running quickly. This is the condensed version - see detailed sections for more information.",[14,1832,1834],{"id":1833},"step-1-prerequisites-checklist","Step 1: Prerequisites Checklist",[10,1836,1837],{},"Make sure you have everything ready:",[1839,1840,1841],"checklist",{},[414,1842,1843,1846,1849,1852,1855],{},[417,1844,1845],{},"WordPress 6.9.4+ with WooCommerce 10.7.0+",[417,1847,1848],{},"At least one product published",[417,1850,1851],{},"At least one product attribute configured (this is a prerequisite of WooGraphQL)",[417,1853,1854],{},"Permalinks set to \"Post name\"",[417,1856,1857],{},"Node.js 20+ installed locally",[14,1859,1861],{"id":1860},"step-2-install-woonuxt-settings-plugin","Step 2: Install WooNuxt Settings Plugin",[10,1863,1864],{},"This plugin is essential - it installs all dependencies automatically:",[761,1866,1867,1875,1881,1884,1890,1893],{},[417,1868,1869,1870],{},"Download from ",[440,1871,1874],{"href":1872,"rel":1873},"https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt-settings\u002Freleases\u002Flatest",[444],"GitHub Releases",[417,1876,1877,1878],{},"Upload to ",[409,1879,1880],{},"Plugins > Add New > Upload Plugin",[417,1882,1883],{},"Activate the plugin",[417,1885,1886,1887],{},"Go to ",[409,1888,1889],{},"Settings > WooNuxt",[417,1891,1892],{},"Click \"Install Now\" for each required plugin",[417,1894,1895],{},"Wait for all plugins to show \"✅ Installed\"",[10,1897,1898],{},"Required plugins that will be installed:",[414,1900,1901,1903,1905],{},[417,1902,421],{},[417,1904,427],{},[417,1906,1907],{},"Headless Login for WPGraphQL 0.4.4+",[14,1909,1911],{"id":1910},"step-3-configure-woonuxt-settings","Step 3: Configure WooNuxt Settings",[10,1913,1914,1915,1917],{},"In ",[409,1916,1889],{},", configure these key settings:",[414,1919,1920,1926,1932,1941],{},[417,1921,1922,1925],{},[409,1923,1924],{},"Logo URL"," - Upload a logo to Media Library and paste the URL",[417,1927,1928,1931],{},[409,1929,1930],{},"Primary Color"," - Set your brand color (default: #7F54B2)",[417,1933,1934,1937,1938,1940],{},[409,1935,1936],{},"Front End URL"," - Set to ",[30,1939,771],{}," for development",[417,1942,1943,1946],{},[409,1944,1945],{},"Products Per Page"," - Set to 24 (or your preference)",[10,1948,1949,1952],{},[409,1950,1951],{},"Global Attributes"," - Add at least one product attribute for filtering:",[761,1954,1955,1962,1965,1968],{},[417,1956,1957,1958,1961],{},"Click ",[409,1959,1960],{},"Add New"," under Global Attributes",[417,1963,1964],{},"Select an attribute (Color, Size, etc.)",[417,1966,1967],{},"Configure display options",[417,1969,1970],{},"Save changes",[14,1972,1974],{"id":1973},"step-4-test-wordpress-graphql","Step 4: Test WordPress GraphQL",[10,1976,1977],{},"Verify your setup works:",[761,1979,1980,1985],{},[417,1981,1886,1982],{},[409,1983,1984],{},"GraphQL > GraphiQL IDE",[417,1986,1987],{},"Run this test query:",[22,1989,1993],{"className":1990,"code":1991,"language":1992,"meta":28,"style":28},"language-graphql shiki shiki-themes material-theme-palenight","query TestSetup {\n  products(first: 5) {\n    nodes {\n      id\n      name\n      ... on SimpleProduct {\n        price\n      }\n    }\n  }\n  woonuxtSettings {\n    primary_color\n    logo\n  }\n}\n","graphql",[30,1994,1995,2000,2005,2010,2015,2020,2025,2030,2035,2040,2045,2050,2055,2060,2064],{"__ignoreMap":28},[33,1996,1997],{"class":35,"line":36},[33,1998,1999],{},"query TestSetup {\n",[33,2001,2002],{"class":35,"line":50},[33,2003,2004],{},"  products(first: 5) {\n",[33,2006,2007],{"class":35,"line":86},[33,2008,2009],{},"    nodes {\n",[33,2011,2012],{"class":35,"line":93},[33,2013,2014],{},"      id\n",[33,2016,2017],{"class":35,"line":99},[33,2018,2019],{},"      name\n",[33,2021,2022],{"class":35,"line":107},[33,2023,2024],{},"      ... on SimpleProduct {\n",[33,2026,2027],{"class":35,"line":112},[33,2028,2029],{},"        price\n",[33,2031,2032],{"class":35,"line":118},[33,2033,2034],{},"      }\n",[33,2036,2037],{"class":35,"line":204},[33,2038,2039],{},"    }\n",[33,2041,2042],{"class":35,"line":210},[33,2043,2044],{},"  }\n",[33,2046,2047],{"class":35,"line":216},[33,2048,2049],{},"  woonuxtSettings {\n",[33,2051,2052],{"class":35,"line":221},[33,2053,2054],{},"    primary_color\n",[33,2056,2057],{"class":35,"line":227},[33,2058,2059],{},"    logo\n",[33,2061,2062],{"class":35,"line":233},[33,2063,2044],{},[33,2065,2066],{"class":35,"line":239},[33,2067,2068],{},"}\n",[523,2070,2071],{},[10,2072,2073],{},"If you see products and settings, WordPress is configured correctly! ✅",[14,2075,2077],{"id":2076},"step-5-clone-configure-frontend","Step 5: Clone & Configure Frontend",[22,2079,2081],{"className":24,"code":2080,"filename":26,"language":27,"meta":28,"style":28},"# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002Fscottyzen\u002Fwoonuxt.git\ncd woonuxt\n\n# Install dependencies\nnpm install\n# or: yarn install\n# or: pnpm install\n\n# Create environment file\ncp .env.example .env\n",[30,2082,2083,2088,2096,2102,2106,2110,2116,2120,2124,2128,2132],{"__ignoreMap":28},[33,2084,2085],{"class":35,"line":36},[33,2086,2087],{"class":74},"# Clone repository\n",[33,2089,2090,2092,2094],{"class":35,"line":50},[33,2091,40],{"class":39},[33,2093,44],{"class":43},[33,2095,47],{"class":43},[33,2097,2098,2100],{"class":35,"line":86},[33,2099,54],{"class":53},[33,2101,57],{"class":43},[33,2103,2104],{"class":35,"line":93},[33,2105,90],{"emptyLinePlaceholder":89},[33,2107,2108],{"class":35,"line":99},[33,2109,1078],{"class":74},[33,2111,2112,2114],{"class":35,"line":107},[33,2113,80],{"class":39},[33,2115,83],{"class":43},[33,2117,2118],{"class":35,"line":112},[33,2119,1089],{"class":74},[33,2121,2122],{"class":35,"line":118},[33,2123,1094],{"class":74},[33,2125,2126],{"class":35,"line":204},[33,2127,90],{"emptyLinePlaceholder":89},[33,2129,2130],{"class":35,"line":210},[33,2131,1103],{"class":74},[33,2133,2134,2136,2138],{"class":35,"line":216},[33,2135,143],{"class":39},[33,2137,146],{"class":43},[33,2139,149],{"class":43},[10,2141,2142,2143,2145],{},"Edit ",[30,2144,155],{},":",[22,2147,2149],{"className":24,"code":2148,"filename":155,"language":27,"meta":28,"style":28},"GQL_HOST=https:\u002F\u002Fyoursite.com\u002Fgraphql\nAPP_HOST=http:\u002F\u002Flocalhost:3000\nNUXT_IMAGE_DOMAINS=yoursite.com\n",[30,2150,2151,2163,2171],{"__ignoreMap":28},[33,2152,2153,2156,2160],{"class":35,"line":36},[33,2154,317],{"class":2155},"s0W1g",[33,2157,2159],{"class":2158},"sAklC","=",[33,2161,2162],{"class":43},"https:\u002F\u002Fyoursite.com\u002Fgraphql\n",[33,2164,2165,2167,2169],{"class":35,"line":50},[33,2166,342],{"class":2155},[33,2168,2159],{"class":2158},[33,2170,518],{"class":43},[33,2172,2173,2175,2177],{"class":35,"line":86},[33,2174,330],{"class":2155},[33,2176,2159],{"class":2158},[33,2178,2179],{"class":43},"yoursite.com\n",[14,2181,2183],{"id":2182},"step-6-start-development-server","Step 6: Start Development Server",[22,2185,2186],{"className":24,"code":466,"filename":26,"language":27,"meta":28,"style":28},[30,2187,2188,2192,2200,2204,2208,2214,2218,2222],{"__ignoreMap":28},[33,2189,2190],{"class":35,"line":36},[33,2191,75],{"class":74},[33,2193,2194,2196,2198],{"class":35,"line":50},[33,2195,80],{"class":39},[33,2197,479],{"class":43},[33,2199,482],{"class":43},[33,2201,2202],{"class":35,"line":86},[33,2203,90],{"emptyLinePlaceholder":89},[33,2205,2206],{"class":35,"line":93},[33,2207,96],{"class":74},[33,2209,2210,2212],{"class":35,"line":99},[33,2211,102],{"class":39},[33,2213,482],{"class":43},[33,2215,2216],{"class":35,"line":107},[33,2217,90],{"emptyLinePlaceholder":89},[33,2219,2220],{"class":35,"line":112},[33,2221,115],{"class":74},[33,2223,2224,2226],{"class":35,"line":118},[33,2225,121],{"class":39},[33,2227,482],{"class":43},[10,2229,2230,2231,2233],{},"Open ",[30,2232,771],{}," in your browser.",[14,2235,2237],{"id":2236},"step-7-verify-everything-works","Step 7: Verify Everything Works",[10,2239,2240],{},"Test these features:",[1839,2242,2243],{},[414,2244,2245,2248,2251,2254,2257,2260,2263,2266],{},[417,2246,2247],{},"Homepage loads with products",[417,2249,2250],{},"Product images display",[417,2252,2253],{},"Click on a product to view details",[417,2255,2256],{},"Add product to cart",[417,2258,2259],{},"Cart drawer opens",[417,2261,2262],{},"Filters appear (if attributes configured)",[417,2264,2265],{},"Search works",[417,2267,2268],{},"No console errors (F12 to check)",[14,2270,799],{"id":798},[10,2272,2273,2276],{},[409,2274,2275],{},"No products showing?"," Ensure products are published in WooCommerce and the WooNuxt Settings plugin is configured.",[10,2278,2279,2282,2283,2286],{},[409,2280,2281],{},"Filters not working?"," Add product attributes in WooCommerce and configure them in ",[409,2284,2285],{},"Settings > WooNuxt > Global Attributes",".",[10,2288,2289,2292,2293,2145],{},[409,2290,2291],{},"Images not loading?"," Add your WordPress domain to ",[30,2294,155],{},[22,2296,2298],{"className":159,"code":2297,"language":161,"meta":28,"style":28},"NUXT_IMAGE_DOMAINS=yoursite.com\n",[30,2299,2300],{"__ignoreMap":28},[33,2301,2302],{"class":35,"line":36},[33,2303,2297],{},[14,2305,2307],{"id":2306},"whats-next","What's Next?",[10,2309,2310],{},"Now that you're running, customize your store:",[829,2312,2313,2317],{},[832,2314,2315],{"icon":834,"title":835,"to":454},[10,2316,1173],{},[832,2318,2320],{"icon":2319,"title":850,"to":851},"i-lucide-settings",[10,2321,854],{},[856,2323,2324],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}",{"title":28,"searchDepth":50,"depth":50,"links":2326},[2327,2328,2329,2330,2331,2332,2333,2334,2335],{"id":1833,"depth":50,"text":1834},{"id":1860,"depth":50,"text":1861},{"id":1910,"depth":50,"text":1911},{"id":1973,"depth":50,"text":1974},{"id":2076,"depth":50,"text":2077},{"id":2182,"depth":50,"text":2183},{"id":2236,"depth":50,"text":2237},{"id":798,"depth":50,"text":799},{"id":2306,"depth":50,"text":2307},"Get your WooNuxt store up and running in minutes",{},{"icon":841},"\u002Fgetting-started\u002Fquick-start",{"title":1825,"description":2336},"1.getting-started\u002F3.quick-start","swHE3iLj3qRGWZi4db-WhaniMQCOq9mp8DgnXcqAkJo",{"id":2344,"title":2345,"body":2346,"description":3163,"extension":876,"links":877,"meta":3164,"navigation":3165,"path":3167,"seo":3168,"stem":3169,"__hash__":3170},"docs\u002F1.getting-started\u002F4.customization.md","Customization & Architecture",{"type":7,"value":2347,"toc":3152},[2348,2354,2358,2361,2367,2374,2437,2443,2447,2458,2509,2512,2516,2692,2696,2699,2731,2735,2742,2818,2822,2836,2856,2860,2870,3098,3102,3109,3137,3149],[10,2349,2350,2351,2353],{},"WooNuxt uses ",[409,2352,1015],{}," to separate core functionality from your customizations. This means you can override any component, page, composable, or style without touching the base layer — and safely pull in upstream updates without losing your changes.",[14,2355,2357],{"id":2356},"how-it-works","How It Works",[10,2359,2360],{},"The project has two layers:",[22,2362,2365],{"className":2363,"code":2364,"language":519},[517],"woonuxt\u002F                    ← Your project (customize here)\n├── app\u002F\n│   └── types\u002F             ← Type overrides\n├── nuxt.config.ts         ← Extends woonuxt_base\n└── ...\n\nwoonuxt_base\u002F              ← Core layer (do not edit directly)\n├── app\u002F\n│   ├── components\u002F        ← All default components\n│   ├── composables\u002F       ← All composables\n│   ├── pages\u002F             ← All pages\n│   ├── queries\u002F           ← All GraphQL queries\n│   └── assets\u002Fcss\u002F        ← Base styles\n└── nuxt.config.ts         ← Core Nuxt config\n",[30,2366,2364],{"__ignoreMap":28},[10,2368,2369,2370,2373],{},"Your root ",[30,2371,2372],{},"nuxt.config.ts"," extends the base:",[22,2375,2379],{"className":2376,"code":2377,"filename":2372,"language":2378,"meta":28,"style":28},"language-ts shiki shiki-themes material-theme-palenight","export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n  \u002F\u002F your overrides here\n})\n","ts",[30,2380,2381,2399,2424,2429],{"__ignoreMap":28},[33,2382,2383,2387,2390,2393,2396],{"class":35,"line":36},[33,2384,2386],{"class":2385},"s6cf3","export",[33,2388,2389],{"class":2385}," default",[33,2391,2392],{"class":53}," defineNuxtConfig",[33,2394,2395],{"class":2155},"(",[33,2397,2398],{"class":2158},"{\n",[33,2400,2401,2405,2407,2410,2413,2416,2418,2421],{"class":35,"line":50},[33,2402,2404],{"class":2403},"s-wAU","  extends",[33,2406,2145],{"class":2158},[33,2408,2409],{"class":2155}," [",[33,2411,2412],{"class":2158},"'",[33,2414,2415],{"class":43},".\u002Fwoonuxt_base",[33,2417,2412],{"class":2158},[33,2419,2420],{"class":2155},"]",[33,2422,2423],{"class":2158},",\n",[33,2425,2426],{"class":35,"line":86},[33,2427,2428],{"class":74},"  \u002F\u002F your overrides here\n",[33,2430,2431,2434],{"class":35,"line":93},[33,2432,2433],{"class":2158},"}",[33,2435,2436],{"class":2155},")\n",[10,2438,2439,2440,2286],{},"Nuxt merges both layers at build time, with your root-level files taking priority over ",[30,2441,2442],{},"woonuxt_base",[14,2444,2446],{"id":2445},"overriding-components","Overriding Components",[10,2448,2449,2450,2453,2454,2457],{},"To override any component, create a file with the ",[409,2451,2452],{},"same name"," in your root ",[30,2455,2456],{},"app\u002Fcomponents\u002F"," folder:",[22,2459,2461],{"className":24,"code":2460,"language":27,"meta":28,"style":28},"# Example: override the default ProductCard\napp\u002F\n└── components\u002F\n    └── productElements\u002F\n        └── ProductCard.vue   ← your version wins\n",[30,2462,2463,2468,2473,2481,2489],{"__ignoreMap":28},[33,2464,2465],{"class":35,"line":36},[33,2466,2467],{"class":74},"# Example: override the default ProductCard\n",[33,2469,2470],{"class":35,"line":50},[33,2471,2472],{"class":39},"app\u002F\n",[33,2474,2475,2478],{"class":35,"line":86},[33,2476,2477],{"class":39},"└──",[33,2479,2480],{"class":43}," components\u002F\n",[33,2482,2483,2486],{"class":35,"line":93},[33,2484,2485],{"class":39},"    └──",[33,2487,2488],{"class":43}," productElements\u002F\n",[33,2490,2491,2494,2497,2500,2503,2506],{"class":35,"line":99},[33,2492,2493],{"class":39},"        └──",[33,2495,2496],{"class":43}," ProductCard.vue",[33,2498,2499],{"class":43},"   ←",[33,2501,2502],{"class":43}," your",[33,2504,2505],{"class":43}," version",[33,2507,2508],{"class":43}," wins\n",[10,2510,2511],{},"You don't need to copy the original — just create a new file at the same path. The base layer version is completely replaced.",[536,2513,2515],{"id":2514},"example-custom-herobanner","Example: Custom HeroBanner",[22,2517,2522],{"className":2518,"code":2519,"filename":2520,"language":2521,"meta":28,"style":28},"language-vue shiki shiki-themes material-theme-palenight","\u003Ctemplate>\n  \u003Csection class=\"hero bg-primary text-white py-20\">\n    \u003Ch1 class=\"text-4xl font-bold\">{{ title }}\u003C\u002Fh1>\n    \u003Cp>{{ description }}\u003C\u002Fp>\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\ndefineProps\u003C{ title: string; description: string }>()\n\u003C\u002Fscript>\n","app\u002Fcomponents\u002FgeneralElements\u002FHeroBanner.vue","vue",[30,2523,2524,2535,2559,2591,2608,2617,2625,2629,2652,2684],{"__ignoreMap":28},[33,2525,2526,2529,2532],{"class":35,"line":36},[33,2527,2528],{"class":2158},"\u003C",[33,2530,2531],{"class":2403},"template",[33,2533,2534],{"class":2158},">\n",[33,2536,2537,2540,2543,2547,2549,2552,2555,2557],{"class":35,"line":50},[33,2538,2539],{"class":2158},"  \u003C",[33,2541,2542],{"class":2403},"section",[33,2544,2546],{"class":2545},"sJ14y"," class",[33,2548,2159],{"class":2158},[33,2550,2551],{"class":2158},"\"",[33,2553,2554],{"class":43},"hero bg-primary text-white py-20",[33,2556,2551],{"class":2158},[33,2558,2534],{"class":2158},[33,2560,2561,2564,2567,2569,2571,2573,2576,2578,2581,2584,2587,2589],{"class":35,"line":86},[33,2562,2563],{"class":2158},"    \u003C",[33,2565,2566],{"class":2403},"h1",[33,2568,2546],{"class":2545},[33,2570,2159],{"class":2158},[33,2572,2551],{"class":2158},[33,2574,2575],{"class":43},"text-4xl font-bold",[33,2577,2551],{"class":2158},[33,2579,2580],{"class":2158},">",[33,2582,2583],{"class":2155},"{{ title }}",[33,2585,2586],{"class":2158},"\u003C\u002F",[33,2588,2566],{"class":2403},[33,2590,2534],{"class":2158},[33,2592,2593,2595,2597,2599,2602,2604,2606],{"class":35,"line":93},[33,2594,2563],{"class":2158},[33,2596,10],{"class":2403},[33,2598,2580],{"class":2158},[33,2600,2601],{"class":2155},"{{ description }}",[33,2603,2586],{"class":2158},[33,2605,10],{"class":2403},[33,2607,2534],{"class":2158},[33,2609,2610,2613,2615],{"class":35,"line":99},[33,2611,2612],{"class":2158},"  \u003C\u002F",[33,2614,2542],{"class":2403},[33,2616,2534],{"class":2158},[33,2618,2619,2621,2623],{"class":35,"line":107},[33,2620,2586],{"class":2158},[33,2622,2531],{"class":2403},[33,2624,2534],{"class":2158},[33,2626,2627],{"class":35,"line":112},[33,2628,90],{"emptyLinePlaceholder":89},[33,2630,2631,2633,2636,2639,2642,2644,2646,2648,2650],{"class":35,"line":118},[33,2632,2528],{"class":2158},[33,2634,2635],{"class":2403},"script",[33,2637,2638],{"class":2545}," setup",[33,2640,2641],{"class":2545}," lang",[33,2643,2159],{"class":2158},[33,2645,2551],{"class":2158},[33,2647,2378],{"class":43},[33,2649,2551],{"class":2158},[33,2651,2534],{"class":2158},[33,2653,2654,2657,2660,2663,2665,2668,2671,2674,2676,2678,2681],{"class":35,"line":204},[33,2655,2656],{"class":53},"defineProps",[33,2658,2659],{"class":2158},"\u003C{",[33,2661,2662],{"class":2403}," title",[33,2664,2145],{"class":2158},[33,2666,2667],{"class":39}," string",[33,2669,2670],{"class":2158},";",[33,2672,2673],{"class":2403}," description",[33,2675,2145],{"class":2158},[33,2677,2667],{"class":39},[33,2679,2680],{"class":2158}," }>",[33,2682,2683],{"class":2155},"()\n",[33,2685,2686,2688,2690],{"class":35,"line":210},[33,2687,2586],{"class":2158},[33,2689,2635],{"class":2403},[33,2691,2534],{"class":2158},[14,2693,2695],{"id":2694},"overriding-pages","Overriding Pages",[10,2697,2698],{},"Same principle — create a page at the same path:",[22,2700,2702],{"className":24,"code":2701,"language":27,"meta":28,"style":28},"app\u002F\n└── pages\u002F\n    └── index.vue    ← replaces woonuxt_base\u002Fapp\u002Fpages\u002Findex.vue\n",[30,2703,2704,2708,2715],{"__ignoreMap":28},[33,2705,2706],{"class":35,"line":36},[33,2707,2472],{"class":39},[33,2709,2710,2712],{"class":35,"line":50},[33,2711,2477],{"class":39},[33,2713,2714],{"class":43}," pages\u002F\n",[33,2716,2717,2719,2722,2725,2728],{"class":35,"line":86},[33,2718,2485],{"class":39},[33,2720,2721],{"class":43}," index.vue",[33,2723,2724],{"class":43},"    ←",[33,2726,2727],{"class":43}," replaces",[33,2729,2730],{"class":43}," woonuxt_base\u002Fapp\u002Fpages\u002Findex.vue\n",[14,2732,2734],{"id":2733},"overriding-styles","Overriding Styles",[10,2736,2737,2738,2741],{},"Add custom CSS in ",[30,2739,2740],{},"app\u002Fassets\u002Fcss\u002Fmain.css",". Tailwind CSS 4 is configured via PostCSS — extend the theme in your CSS directly:",[22,2743,2747],{"className":2744,"code":2745,"filename":2740,"language":2746,"meta":28,"style":28},"language-css shiki shiki-themes material-theme-palenight","@import \"tailwindcss\";\n\n\u002F* Extend or override Tailwind theme *\u002F\n@theme {\n  --color-primary: v-bind(primaryColor);\n}\n\n\u002F* Your custom styles *\u002F\n.my-custom-class {\n  \u002F* ... *\u002F\n}\n","css",[30,2748,2749,2765,2769,2774,2782,2787,2791,2795,2800,2809,2814],{"__ignoreMap":28},[33,2750,2751,2754,2757,2760,2762],{"class":35,"line":36},[33,2752,2753],{"class":2385},"@import",[33,2755,2756],{"class":2158}," \"",[33,2758,2759],{"class":43},"tailwindcss",[33,2761,2551],{"class":2158},[33,2763,2764],{"class":2158},";\n",[33,2766,2767],{"class":35,"line":50},[33,2768,90],{"emptyLinePlaceholder":89},[33,2770,2771],{"class":35,"line":86},[33,2772,2773],{"class":74},"\u002F* Extend or override Tailwind theme *\u002F\n",[33,2775,2776,2779],{"class":35,"line":93},[33,2777,2778],{"class":2385},"@theme",[33,2780,2781],{"class":2158}," {\n",[33,2783,2784],{"class":35,"line":99},[33,2785,2786],{"class":2155},"  --color-primary: v-bind(primaryColor);\n",[33,2788,2789],{"class":35,"line":107},[33,2790,2068],{"class":2158},[33,2792,2793],{"class":35,"line":112},[33,2794,90],{"emptyLinePlaceholder":89},[33,2796,2797],{"class":35,"line":118},[33,2798,2799],{"class":74},"\u002F* Your custom styles *\u002F\n",[33,2801,2802,2804,2807],{"class":35,"line":204},[33,2803,2286],{"class":2158},[33,2805,2806],{"class":39},"my-custom-class",[33,2808,2781],{"class":2158},[33,2810,2811],{"class":35,"line":210},[33,2812,2813],{"class":74},"  \u002F* ... *\u002F\n",[33,2815,2816],{"class":35,"line":216},[33,2817,2068],{"class":2158},[14,2819,2821],{"id":2820},"adding-custom-graphql-queries","Adding Custom GraphQL Queries",[10,2823,2824,2825,2828,2829,2832,2833,2145],{},"Place ",[30,2826,2827],{},".gql"," files in ",[30,2830,2831],{},"app\u002Fqueries\u002F",". These are picked up automatically by ",[30,2834,2835],{},"nuxt-graphql-client",[22,2837,2840],{"className":1990,"code":2838,"filename":2839,"language":1992,"meta":28,"style":28},"query GetMyCustomData {\n  # your query\n}\n","app\u002Fqueries\u002FgetMyCustomData.gql",[30,2841,2842,2847,2852],{"__ignoreMap":28},[33,2843,2844],{"class":35,"line":36},[33,2845,2846],{},"query GetMyCustomData {\n",[33,2848,2849],{"class":35,"line":50},[33,2850,2851],{},"  # your query\n",[33,2853,2854],{"class":35,"line":86},[33,2855,2068],{},[14,2857,2859],{"id":2858},"modifying-nuxtconfigts","Modifying nuxt.config.ts",[10,2861,2862,2863,2865,2866,2869],{},"Add modules, routes, or runtime config in the root ",[30,2864,2372],{},". It is ",[409,2867,2868],{},"merged"," with the base config, not replaced:",[22,2871,2873],{"className":2376,"code":2872,"filename":2372,"language":2378,"meta":28,"style":28},"export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n\n  \u002F\u002F Add extra modules\n  modules: ['@nuxtjs\u002Fgoogle-fonts'],\n\n  \u002F\u002F Override runtime config\n  runtimeConfig: {\n    public: {\n      PRODUCTS_PER_PAGE: 12,\n    },\n  },\n\n  \u002F\u002F Add custom routes\n  hooks: {\n    'pages:extend'(pages) {\n      pages.push({ name: 'custom', path: '\u002Fcustom', file: '~\u002Fapp\u002Fpages\u002Fcustom.vue' })\n    },\n  },\n})\n",[30,2874,2875,2887,2905,2909,2914,2934,2938,2943,2952,2961,2974,2979,2984,2988,2993,3002,3022,3084,3088,3092],{"__ignoreMap":28},[33,2876,2877,2879,2881,2883,2885],{"class":35,"line":36},[33,2878,2386],{"class":2385},[33,2880,2389],{"class":2385},[33,2882,2392],{"class":53},[33,2884,2395],{"class":2155},[33,2886,2398],{"class":2158},[33,2888,2889,2891,2893,2895,2897,2899,2901,2903],{"class":35,"line":50},[33,2890,2404],{"class":2403},[33,2892,2145],{"class":2158},[33,2894,2409],{"class":2155},[33,2896,2412],{"class":2158},[33,2898,2415],{"class":43},[33,2900,2412],{"class":2158},[33,2902,2420],{"class":2155},[33,2904,2423],{"class":2158},[33,2906,2907],{"class":35,"line":86},[33,2908,90],{"emptyLinePlaceholder":89},[33,2910,2911],{"class":35,"line":93},[33,2912,2913],{"class":74},"  \u002F\u002F Add extra modules\n",[33,2915,2916,2919,2921,2923,2925,2928,2930,2932],{"class":35,"line":99},[33,2917,2918],{"class":2403},"  modules",[33,2920,2145],{"class":2158},[33,2922,2409],{"class":2155},[33,2924,2412],{"class":2158},[33,2926,2927],{"class":43},"@nuxtjs\u002Fgoogle-fonts",[33,2929,2412],{"class":2158},[33,2931,2420],{"class":2155},[33,2933,2423],{"class":2158},[33,2935,2936],{"class":35,"line":107},[33,2937,90],{"emptyLinePlaceholder":89},[33,2939,2940],{"class":35,"line":112},[33,2941,2942],{"class":74},"  \u002F\u002F Override runtime config\n",[33,2944,2945,2948,2950],{"class":35,"line":118},[33,2946,2947],{"class":2403},"  runtimeConfig",[33,2949,2145],{"class":2158},[33,2951,2781],{"class":2158},[33,2953,2954,2957,2959],{"class":35,"line":204},[33,2955,2956],{"class":2403},"    public",[33,2958,2145],{"class":2158},[33,2960,2781],{"class":2158},[33,2962,2963,2966,2968,2972],{"class":35,"line":210},[33,2964,2965],{"class":2403},"      PRODUCTS_PER_PAGE",[33,2967,2145],{"class":2158},[33,2969,2971],{"class":2970},"sx098"," 12",[33,2973,2423],{"class":2158},[33,2975,2976],{"class":35,"line":216},[33,2977,2978],{"class":2158},"    },\n",[33,2980,2981],{"class":35,"line":221},[33,2982,2983],{"class":2158},"  },\n",[33,2985,2986],{"class":35,"line":227},[33,2987,90],{"emptyLinePlaceholder":89},[33,2989,2990],{"class":35,"line":233},[33,2991,2992],{"class":74},"  \u002F\u002F Add custom routes\n",[33,2994,2995,2998,3000],{"class":35,"line":239},[33,2996,2997],{"class":2403},"  hooks",[33,2999,2145],{"class":2158},[33,3001,2781],{"class":2158},[33,3003,3004,3007,3010,3012,3014,3018,3020],{"class":35,"line":244},[33,3005,3006],{"class":2158},"    '",[33,3008,3009],{"class":43},"pages:extend",[33,3011,2412],{"class":2158},[33,3013,2395],{"class":2158},[33,3015,3017],{"class":3016},"s7ZW3","pages",[33,3019,364],{"class":2158},[33,3021,2781],{"class":2158},[33,3023,3024,3027,3029,3032,3034,3037,3040,3042,3045,3048,3050,3053,3056,3058,3060,3063,3065,3067,3070,3072,3074,3077,3079,3082],{"class":35,"line":250},[33,3025,3026],{"class":2155},"      pages",[33,3028,2286],{"class":2158},[33,3030,3031],{"class":53},"push",[33,3033,2395],{"class":2403},[33,3035,3036],{"class":2158},"{",[33,3038,3039],{"class":2403}," name",[33,3041,2145],{"class":2158},[33,3043,3044],{"class":2158}," '",[33,3046,3047],{"class":43},"custom",[33,3049,2412],{"class":2158},[33,3051,3052],{"class":2158},",",[33,3054,3055],{"class":2403}," path",[33,3057,2145],{"class":2158},[33,3059,3044],{"class":2158},[33,3061,3062],{"class":43},"\u002Fcustom",[33,3064,2412],{"class":2158},[33,3066,3052],{"class":2158},[33,3068,3069],{"class":2403}," file",[33,3071,2145],{"class":2158},[33,3073,3044],{"class":2158},[33,3075,3076],{"class":43},"~\u002Fapp\u002Fpages\u002Fcustom.vue",[33,3078,2412],{"class":2158},[33,3080,3081],{"class":2158}," }",[33,3083,2436],{"class":2403},[33,3085,3086],{"class":35,"line":256},[33,3087,2978],{"class":2158},[33,3089,3090],{"class":35,"line":261},[33,3091,2983],{"class":2158},[33,3093,3094,3096],{"class":35,"line":267},[33,3095,2433],{"class":2158},[33,3097,2436],{"class":2155},[14,3099,3101],{"id":3100},"what-should-not-be-edited","What Should NOT Be Edited",[10,3103,3104,3105,3108],{},"Avoid editing files inside ",[30,3106,3107],{},"woonuxt_base\u002F"," directly. Changes there will be lost when you pull upstream updates. If you need to change base behavior:",[414,3110,3111,3120,3129],{},[417,3112,3113,3116,3117,3119],{},[409,3114,3115],{},"Components"," → copy to ",[30,3118,2456],{}," with the same path",[417,3121,3122,3116,3125,3128],{},[409,3123,3124],{},"Composables",[30,3126,3127],{},"app\u002Fcomposables\u002F"," and adjust imports",[417,3130,3131,3134,3135],{},[409,3132,3133],{},"Config"," → override in root ",[30,3136,2372],{},[447,3138,3139],{},[10,3140,3141,3142,3144,3145,3148],{},"Keep ",[30,3143,3107],{}," as a clean git submodule or subtree so you can ",[30,3146,3147],{},"git pull"," upstream changes without conflicts.",[856,3150,3151],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s6cf3, html code.shiki .s6cf3{--shiki-default:#89DDFF;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sJ14y, html code.shiki .sJ14y{--shiki-default:#C792EA}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html pre.shiki code .s7ZW3, html code.shiki .s7ZW3{--shiki-default:#BABED8;--shiki-default-font-style:italic}",{"title":28,"searchDepth":50,"depth":50,"links":3153},[3154,3155,3158,3159,3160,3161,3162],{"id":2356,"depth":50,"text":2357},{"id":2445,"depth":50,"text":2446,"children":3156},[3157],{"id":2514,"depth":86,"text":2515},{"id":2694,"depth":50,"text":2695},{"id":2733,"depth":50,"text":2734},{"id":2820,"depth":50,"text":2821},{"id":2858,"depth":50,"text":2859},{"id":3100,"depth":50,"text":3101},"How to customize WooNuxt using Nuxt Layers without modifying core files",{},{"icon":3166},"i-lucide-layers","\u002Fgetting-started\u002Fcustomization",{"title":2345,"description":3163},"1.getting-started\u002F4.customization","UXX0ykM4xIERhxoKzxQRR19xaD6Knxzf4UtV0eAncfU",{"id":3172,"title":835,"body":3173,"description":3348,"extension":876,"links":877,"meta":3349,"navigation":3350,"path":3351,"seo":3352,"stem":3353,"__hash__":3354},"docs\u002F2.wordpress-setup\u002F1.index.md",{"type":7,"value":3174,"toc":3340},[3175,3178,3182,3185,3189,3224,3228,3231,3249,3253,3256,3288,3292,3330,3333],[10,3176,3177],{},"This section covers everything you need to configure on the WordPress side for WooNuxt to work properly.",[14,3179,3181],{"id":3180},"overview","Overview",[10,3183,3184],{},"WooNuxt requires a properly configured WordPress installation with WooCommerce and several plugins to function as a headless eCommerce backend.",[14,3186,3188],{"id":3187},"required-components","Required Components",[414,3190,3191,3197,3203,3208,3213,3218],{},[417,3192,3193,3196],{},[409,3194,3195],{},"WordPress 6.9.4+"," - Core WordPress installation with proper permalinks",[417,3198,3199,3202],{},[409,3200,3201],{},"WooCommerce 10.7.0+"," - Fully configured with products, shipping, and payments",[417,3204,3205,3207],{},[409,3206,411],{}," - Essential plugin that configures everything for you",[417,3209,3210,3212],{},[409,3211,421],{}," - Exposes WordPress data via GraphQL (auto-installed)",[417,3214,3215,3217],{},[409,3216,427],{}," - Adds WooCommerce support to WPGraphQL (auto-installed)",[417,3219,3220,3223],{},[409,3221,3222],{},"Headless Login 0.4.4+"," - Enables customer authentication (auto-installed)",[14,3225,3227],{"id":3226},"setup-process","Setup Process",[10,3229,3230],{},"Follow these guides in order:",[761,3232,3233,3242],{},[417,3234,3235,3241],{},[409,3236,3237],{},[440,3238,3240],{"href":3239},"\u002Fdocs\u002Fwordpress-setup\u002Fconfiguration","Initial Configuration"," - Set up WordPress basics and permalinks",[417,3243,3244,3248],{},[409,3245,3246],{},[440,3247,850],{"href":851}," - Install and configure WooNuxt Settings plugin (version 2.5.9+)",[14,3250,3252],{"id":3251},"quick-checklist","Quick Checklist",[10,3254,3255],{},"Before proceeding to frontend setup, ensure:",[1839,3257,3258],{},[414,3259,3260,3262,3264,3267,3270,3273,3276,3279,3282,3285],{},[417,3261,1854],{},[417,3263,1848],{},[417,3265,3266],{},"Product attributes created and assigned",[417,3268,3269],{},"Shipping zones configured",[417,3271,3272],{},"Payment method enabled",[417,3274,3275],{},"WooNuxt Settings plugin installed",[417,3277,3278],{},"Required plugins auto-installed",[417,3280,3281],{},"Global attributes configured",[417,3283,3284],{},"GraphQL endpoint accessible",[417,3286,3287],{},"Test queries work in GraphiQL IDE",[14,3289,3291],{"id":3290},"why-this-setup-works","Why This Setup Works",[414,3293,3294,3300,3306,3312,3318,3324],{},[417,3295,3296,3299],{},[409,3297,3298],{},"⚡ Fast Performance",": Static generation and optimized delivery",[417,3301,3302,3305],{},[409,3303,3304],{},"🎨 Design Freedom",": Complete control over frontend appearance",[417,3307,3308,3311],{},[409,3309,3310],{},"🔒 Secure",": WordPress admin hidden from public",[417,3313,3314,3317],{},[409,3315,3316],{},"📈 Scalable",": Frontend can be deployed on CDN",[417,3319,3320,3323],{},[409,3321,3322],{},"🔧 Maintainable",": Updates to WordPress don't break frontend",[417,3325,3326,3329],{},[409,3327,3328],{},"🌍 Multi-Platform",": Same backend can power web, mobile, etc.",[14,3331,3332],{"id":2306},"What's Next",[829,3334,3335],{},[832,3336,3337],{"icon":2319,"title":3240,"to":3239},[10,3338,3339],{},"Set up WordPress permalinks and basic settings",{"title":28,"searchDepth":50,"depth":50,"links":3341},[3342,3343,3344,3345,3346,3347],{"id":3180,"depth":50,"text":3181},{"id":3187,"depth":50,"text":3188},{"id":3226,"depth":50,"text":3227},{"id":3251,"depth":50,"text":3252},{"id":3290,"depth":50,"text":3291},{"id":2306,"depth":50,"text":3332},"Configure WordPress and WooCommerce for WooNuxt",{},{"icon":834},"\u002Fwordpress-setup",{"title":835,"description":3348},"2.wordpress-setup\u002F1.index","MyLkmfCUKDqfuk_7U9y8sgUUsawYrQWDAY3jYuxTPxA",{"id":3356,"title":3240,"body":3357,"description":3466,"extension":876,"links":877,"meta":3467,"navigation":3468,"path":3469,"seo":3470,"stem":3471,"__hash__":3472},"docs\u002F2.wordpress-setup\u002F2.configuration.md",{"type":7,"value":3358,"toc":3461},[3359,3362,3366,3376,3396,3410,3414,3417,3443,3446,3448,3451],[10,3360,3361],{},"WooNuxt requires specific WordPress configuration to enable the GraphQL endpoint. This should only take a few minutes.",[14,3363,3365],{"id":3364},"configure-permalinks","Configure Permalinks",[3367,3368,3369],"warning",{},[10,3370,3371,3372,3375],{},"WPGraphQL requires pretty permalinks. Without this, your GraphQL endpoint at ",[30,3373,3374],{},"\u002Fgraphql"," won't be accessible.",[761,3377,3378,3384,3391],{},[417,3379,1886,3380,3383],{},[409,3381,3382],{},"Settings > Permalinks"," in WordPress admin",[417,3385,3386,3387,3390],{},"Select ",[409,3388,3389],{},"Post name"," structure",[417,3392,1957,3393],{},[409,3394,3395],{},"Save Changes",[10,3397,3398,3399,3402,3403,3406,3407,3409],{},"This changes URLs from ",[30,3400,3401],{},"?p=123"," to ",[30,3404,3405],{},"\u002Fsample-post\u002F"," and enables the ",[30,3408,3374],{}," endpoint.",[14,3411,3413],{"id":3412},"verify-requirements","Verify Requirements",[10,3415,3416],{},"Ensure you have:",[414,3418,3419,3428,3437],{},[417,3420,3421,3424,3425],{},[409,3422,3423],{},"WordPress 6.8.3+"," - Check ",[409,3426,3427],{},"Dashboard > Updates",[417,3429,3430,3424,3433,3436],{},[409,3431,3432],{},"WooCommerce 10.3.5+",[409,3434,3435],{},"Plugins"," page",[417,3438,3439,3442],{},[409,3440,3441],{},"At least one published product"," - For testing the connection",[10,3444,3445],{},"That's it for WordPress configuration! The rest is handled by the WooNuxt Settings plugin.",[14,3447,3332],{"id":2306},[10,3449,3450],{},"Now install the required plugins:",[829,3452,3453],{},[832,3454,3456],{"icon":849,"title":3455},"Install Plugins",[10,3457,3458],{},[440,3459,3460],{"href":851},"Continue to Plugin Installation →",{"title":28,"searchDepth":50,"depth":50,"links":3462},[3463,3464,3465],{"id":3364,"depth":50,"text":3365},{"id":3412,"depth":50,"text":3413},{"id":2306,"depth":50,"text":3332},"Configure WordPress basics for WooNuxt",{},{"icon":2319},"\u002Fwordpress-setup\u002Fconfiguration",{"title":3240,"description":3466},"2.wordpress-setup\u002F2.configuration","_MNEHn4oByp3HtbGJ0VT0DNKQYNNHwDAMWhH4sEvD3c",{"id":3474,"title":850,"body":3475,"description":4741,"extension":876,"links":877,"meta":4742,"navigation":4743,"path":4744,"seo":4745,"stem":4746,"__hash__":4747},"docs\u002F2.wordpress-setup\u002F3.plugins.md",{"type":7,"value":3476,"toc":4709},[3477,3480,3531,3535,3539,3573,3577,3580,3589,3593,3596,3638,3642,3645,3774,3778,3784,3807,3813,3817,3820,3824,3910,3913,3916,3951,3958,3962,3965,3985,3989,3992,4027,4031,4038,4163,4167,4170,4191,4193,4209,4221,4225,4228,4232,4238,4243,4247,4250,4256,4261,4279,4284,4298,4301,4304,4310,4333,4338,4352,4355,4358,4364,4369,4380,4383,4386,4389,4395,4400,4414,4420,4423,4426,4432,4437,4451,4456,4470,4477,4480,4483,4488,4491,4496,4527,4536,4539,4542,4547,4572,4575,4578,4581,4594,4599,4602,4605,4691,4693,4696,4706],[10,3478,3479],{},"The WooNuxt Settings plugin is the cornerstone of your WooNuxt setup. It automatically installs dependencies and provides a central configuration hub for your headless WooCommerce store.",[3481,3482,3491,3492],"div",{"className":3483},[3484,3485,3486,3487,3488,3489,3490],"flex","items-center","justify-center","gap-4","mb-8","md:justify-start","not-prose","\n  ",[440,3493,3506,3507,3506,3523,3491],{"href":442,"download":89,"className":3494},[3484,3485,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505],"gap-6","p-4","transition-shadow","duration-200","ease-in-out","bg-white","border","border-gray-300","border-dashed","rounded-lg","hover:shadow-md","\n    ",[3481,3508,3512,3513,3512,3518,3506],{"className":3509},[3484,3510,3511],"flex-col","flex-1","\n      ",[33,3514,3517],{"className":3515},[3516],"font-semibold","WooNuxt setup plugin",[33,3519,3522],{"className":3520},[3521],"text-xs","woonuxt-settings.zip",[3524,3525],"img",{"className":3526,"width":3528,"height":3528,"src":3529,"alt":3530},[3527],"mr-2",36,"\u002Flogo.svg","Logo",[14,3532,3534],{"id":3533},"installation-steps","Installation Steps",[536,3536,3538],{"id":3537},"upload-to-wordpress","Upload to WordPress",[761,3540,3541,3547,3554,3562,3567],{},[417,3542,3543,3544],{},"In WordPress admin, navigate to ",[409,3545,3546],{},"Plugins > Add New",[417,3548,3549,3550,3553],{},"Click the ",[409,3551,3552],{},"Upload Plugin"," button at the top",[417,3555,1957,3556,3559,3560],{},[409,3557,3558],{},"Choose File"," and select ",[30,3561,3522],{},[417,3563,1957,3564],{},[409,3565,3566],{},"Install Now",[417,3568,1957,3569,3572],{},[409,3570,3571],{},"Activate"," once installation completes",[536,3574,3576],{"id":3575},"access-settings","Access Settings",[10,3578,3579],{},"After activation, find the settings page:",[414,3581,3582,3586],{},[417,3583,1886,3584,3383],{},[409,3585,1889],{},[417,3587,3588],{},"You'll see a comprehensive dashboard with multiple sections",[14,3590,3592],{"id":3591},"what-the-plugin-does","What the Plugin Does",[10,3594,3595],{},"The WooNuxt Settings plugin handles the heavy lifting of WordPress configuration for your headless WooCommerce store.",[829,3597,3598,3604,3611,3618,3625,3632],{},[832,3599,3601],{"icon":880,"title":3600},"Auto-Install Dependencies",[10,3602,3603],{},"Automatically downloads and activates WPGraphQL, WooGraphQL, and Headless Login plugins",[832,3605,3608],{"icon":3606,"title":3607},"i-lucide-settings-2","GraphQL Configuration",[10,3609,3610],{},"Exposes all WooCommerce and WooNuxt settings via GraphQL API",[832,3612,3615],{"icon":3613,"title":3614},"i-lucide-credit-card","Payment Integration",[10,3616,3617],{},"Handles Stripe payment intent creation and exposes payment settings",[832,3619,3622],{"icon":3620,"title":3621},"i-lucide-filter","Product Filtering",[10,3623,3624],{},"Manages global product attributes for advanced filtering capabilities",[832,3626,3629],{"icon":3627,"title":3628},"i-lucide-palette","Brand Customization",[10,3630,3631],{},"Configure logo, primary colors, and visual branding",[832,3633,3635],{"icon":841,"title":3634},"Deployment Hooks",[10,3636,3637],{},"Trigger Netlify\u002FVercel builds directly from WordPress",[14,3639,3641],{"id":3640},"required-dependencies","Required Dependencies",[10,3643,3644],{},"The plugin will automatically install these dependencies for you:",[3646,3647,3648,3694,3734],"code-group",{},[22,3649,3653],{"className":3650,"code":3651,"filename":421,"language":3652,"meta":28,"style":28},"language-yaml shiki shiki-themes material-theme-palenight","Name: WPGraphQL\nPurpose: GraphQL API for WordPress\nDescription: Provides GraphQL endpoint at \u002Fgraphql\nAuto-installed: ✅ Yes\n","yaml",[30,3654,3655,3665,3675,3684],{"__ignoreMap":28},[33,3656,3657,3660,3662],{"class":35,"line":36},[33,3658,3659],{"class":2403},"Name",[33,3661,2145],{"class":2158},[33,3663,3664],{"class":43}," WPGraphQL\n",[33,3666,3667,3670,3672],{"class":35,"line":50},[33,3668,3669],{"class":2403},"Purpose",[33,3671,2145],{"class":2158},[33,3673,3674],{"class":43}," GraphQL API for WordPress\n",[33,3676,3677,3679,3681],{"class":35,"line":86},[33,3678,306],{"class":2403},[33,3680,2145],{"class":2158},[33,3682,3683],{"class":43}," Provides GraphQL endpoint at \u002Fgraphql\n",[33,3685,3686,3689,3691],{"class":35,"line":93},[33,3687,3688],{"class":2403},"Auto-installed",[33,3690,2145],{"class":2158},[33,3692,3693],{"class":43}," ✅ Yes\n",[22,3695,3697],{"className":3650,"code":3696,"filename":427,"language":3652,"meta":28,"style":28},"Name: WPGraphQL WooCommerce (WooGraphQL)\nPurpose: WooCommerce GraphQL integration\nDescription: Exposes WooCommerce data via GraphQL\nAuto-installed: ✅ Yes\n",[30,3698,3699,3708,3717,3726],{"__ignoreMap":28},[33,3700,3701,3703,3705],{"class":35,"line":36},[33,3702,3659],{"class":2403},[33,3704,2145],{"class":2158},[33,3706,3707],{"class":43}," WPGraphQL WooCommerce (WooGraphQL)\n",[33,3709,3710,3712,3714],{"class":35,"line":50},[33,3711,3669],{"class":2403},[33,3713,2145],{"class":2158},[33,3715,3716],{"class":43}," WooCommerce GraphQL integration\n",[33,3718,3719,3721,3723],{"class":35,"line":86},[33,3720,306],{"class":2403},[33,3722,2145],{"class":2158},[33,3724,3725],{"class":43}," Exposes WooCommerce data via GraphQL\n",[33,3727,3728,3730,3732],{"class":35,"line":93},[33,3729,3688],{"class":2403},[33,3731,2145],{"class":2158},[33,3733,3693],{"class":43},[22,3735,3737],{"className":3650,"code":3736,"filename":3222,"language":3652,"meta":28,"style":28},"Name: WPGraphQL Headless Login\nPurpose: Headless authentication\nDescription: Enables login\u002Flogout via GraphQL mutations\nAuto-installed: ✅ Yes\n",[30,3738,3739,3748,3757,3766],{"__ignoreMap":28},[33,3740,3741,3743,3745],{"class":35,"line":36},[33,3742,3659],{"class":2403},[33,3744,2145],{"class":2158},[33,3746,3747],{"class":43}," WPGraphQL Headless Login\n",[33,3749,3750,3752,3754],{"class":35,"line":50},[33,3751,3669],{"class":2403},[33,3753,2145],{"class":2158},[33,3755,3756],{"class":43}," Headless authentication\n",[33,3758,3759,3761,3763],{"class":35,"line":86},[33,3760,306],{"class":2403},[33,3762,2145],{"class":2158},[33,3764,3765],{"class":43}," Enables login\u002Flogout via GraphQL mutations\n",[33,3767,3768,3770,3772],{"class":35,"line":93},[33,3769,3688],{"class":2403},[33,3771,2145],{"class":2158},[33,3773,3693],{"class":43},[536,3775,3777],{"id":3776},"auto-installation-process","Auto-Installation Process",[10,3779,3780,3781,3783],{},"When you visit ",[409,3782,1889],{}," for the first time:",[761,3785,3786,3789,3796,3801,3804],{},[417,3787,3788],{},"The plugin checks for required dependencies",[417,3790,3791,3792,3795],{},"Shows ",[409,3793,3794],{},"\"Required Plugins\""," section with install buttons",[417,3797,1957,3798,3800],{},[409,3799,3566],{}," for each plugin",[417,3802,3803],{},"Plugins are downloaded, installed, and activated automatically",[417,3805,3806],{},"Once all plugins are installed, the section changes to deployment options",[3808,3809,3810],"note",{},[10,3811,3812],{},"The plugin uses secure AJAX requests with nonce verification to handle installations. Each plugin status is checked in real-time via jQuery.",[14,3814,3816],{"id":3815},"plugin-settings-overview","Plugin Settings Overview",[10,3818,3819],{},"Once installed, the WooNuxt Settings plugin provides these configuration options:",[536,3821,3823],{"id":3822},"global-settings","Global Settings",[289,3825,3826,3838],{},[292,3827,3828],{},[295,3829,3830,3833,3835],{},[298,3831,3832],{},"Setting",[298,3834,306],{},[298,3836,3837],{},"GraphQL Field",[308,3839,3840,3854,3869,3883,3897],{},[295,3841,3842,3846,3849],{},[313,3843,3844],{},[409,3845,3530],{},[313,3847,3848],{},"Your site logo URL",[313,3850,3851],{},[30,3852,3853],{},"logo",[295,3855,3856,3861,3864],{},[313,3857,3858],{},[409,3859,3860],{},"Frontend URL",[313,3862,3863],{},"Your Nuxt site URL (not WordPress)",[313,3865,3866],{},[30,3867,3868],{},"frontEndUrl",[295,3870,3871,3875,3878],{},[313,3872,3873],{},[409,3874,1945],{},[313,3876,3877],{},"Pagination limit (default: 24)",[313,3879,3880],{},[30,3881,3882],{},"productsPerPage",[295,3884,3885,3889,3892],{},[313,3886,3887],{},[409,3888,1930],{},[313,3890,3891],{},"Brand color in hex format",[313,3893,3894],{},[30,3895,3896],{},"primary_color",[295,3898,3899,3904,3907],{},[313,3900,3901],{},[409,3902,3903],{},"Build Hook",[313,3905,3906],{},"Netlify\u002FVercel deployment webhook",[313,3908,3909],{},"-",[536,3911,1951],{"id":3912},"global-attributes",[10,3914,3915],{},"Configure product attributes for filtering:",[414,3917,3918,3924,3933,3939,3945],{},[417,3919,3920,3923],{},[409,3921,3922],{},"Custom Label"," - Display name for the filter",[417,3925,3926,3929,3930,364],{},[409,3927,3928],{},"Attribute"," - WooCommerce attribute taxonomy (e.g., ",[30,3931,3932],{},"pa_color",[417,3934,3935,3938],{},[409,3936,3937],{},"Show Count"," - Display product count per term",[417,3940,3941,3944],{},[409,3942,3943],{},"Hide Empty"," - Hide attributes with no products",[417,3946,3947,3950],{},[409,3948,3949],{},"Open By Default"," - Expand filter by default",[10,3952,3953,3954,3957],{},"These settings are exposed via GraphQL as ",[30,3955,3956],{},"global_attributes"," array.",[536,3959,3961],{"id":3960},"seo-settings","SEO Settings",[10,3963,3964],{},"Add social media handles:",[414,3966,3967,3973,3979],{},[417,3968,3969,3972],{},[409,3970,3971],{},"Provider"," - Social platform (Facebook, Twitter, Instagram, etc.)",[417,3974,3975,3978],{},[409,3976,3977],{},"Handle"," - Your username\u002Fhandle",[417,3980,3981,3984],{},[409,3982,3983],{},"URL"," - Full profile URL",[536,3986,3988],{"id":3987},"stripe-configuration","Stripe Configuration",[10,3990,3991],{},"Stripe settings are automatically exposed via GraphQL:",[414,3993,3994,4000],{},[417,3995,3996,3997],{},"Reads from ",[409,3998,3999],{},"WooCommerce > Settings > Payments > Stripe",[417,4001,4002,4003,4006,4007],{},"Exposes ",[30,4004,4005],{},"stripeSettings"," with:\n",[414,4008,4009,4015,4021],{},[417,4010,4011,4014],{},[30,4012,4013],{},"enabled"," - Whether Stripe is active",[417,4016,4017,4020],{},[30,4018,4019],{},"testmode"," - Test or live mode",[417,4022,4023,4026],{},[30,4024,4025],{},"publishable_key"," - Public key based on environment",[14,4028,4030],{"id":4029},"graphql-schema","GraphQL Schema",[10,4032,4033,4034,4037],{},"After installation, the plugin adds ",[30,4035,4036],{},"woonuxtSettings"," to your GraphQL schema:",[22,4039,4041],{"className":1990,"code":4040,"language":1992,"meta":28,"style":28},"query getWooNuxtSettings {\n  woonuxtSettings {\n    primary_color\n    logo\n    publicIntrospectionEnabled\n    frontEndUrl\n    domain\n    maxPrice\n    productsPerPage\n    wooCommerceSettingsVersion\n    global_attributes {\n      slug\n      showCount\n      openByDefault\n      label\n      hideEmpty\n    }\n    stripeSettings {\n      enabled\n      testmode\n      test_publishable_key\n      publishable_key\n    }\n  }\n}\n",[30,4042,4043,4048,4052,4056,4060,4065,4070,4075,4080,4085,4090,4095,4100,4105,4110,4115,4120,4124,4129,4134,4139,4144,4149,4153,4158],{"__ignoreMap":28},[33,4044,4045],{"class":35,"line":36},[33,4046,4047],{},"query getWooNuxtSettings {\n",[33,4049,4050],{"class":35,"line":50},[33,4051,2049],{},[33,4053,4054],{"class":35,"line":86},[33,4055,2054],{},[33,4057,4058],{"class":35,"line":93},[33,4059,2059],{},[33,4061,4062],{"class":35,"line":99},[33,4063,4064],{},"    publicIntrospectionEnabled\n",[33,4066,4067],{"class":35,"line":107},[33,4068,4069],{},"    frontEndUrl\n",[33,4071,4072],{"class":35,"line":112},[33,4073,4074],{},"    domain\n",[33,4076,4077],{"class":35,"line":118},[33,4078,4079],{},"    maxPrice\n",[33,4081,4082],{"class":35,"line":204},[33,4083,4084],{},"    productsPerPage\n",[33,4086,4087],{"class":35,"line":210},[33,4088,4089],{},"    wooCommerceSettingsVersion\n",[33,4091,4092],{"class":35,"line":216},[33,4093,4094],{},"    global_attributes {\n",[33,4096,4097],{"class":35,"line":221},[33,4098,4099],{},"      slug\n",[33,4101,4102],{"class":35,"line":227},[33,4103,4104],{},"      showCount\n",[33,4106,4107],{"class":35,"line":233},[33,4108,4109],{},"      openByDefault\n",[33,4111,4112],{"class":35,"line":239},[33,4113,4114],{},"      label\n",[33,4116,4117],{"class":35,"line":244},[33,4118,4119],{},"      hideEmpty\n",[33,4121,4122],{"class":35,"line":250},[33,4123,2039],{},[33,4125,4126],{"class":35,"line":256},[33,4127,4128],{},"    stripeSettings {\n",[33,4130,4131],{"class":35,"line":261},[33,4132,4133],{},"      enabled\n",[33,4135,4136],{"class":35,"line":267},[33,4137,4138],{},"      testmode\n",[33,4140,4141],{"class":35,"line":273},[33,4142,4143],{},"      test_publishable_key\n",[33,4145,4146],{"class":35,"line":278},[33,4147,4148],{},"      publishable_key\n",[33,4150,4151],{"class":35,"line":284},[33,4152,2039],{},[33,4154,4156],{"class":35,"line":4155},24,[33,4157,2044],{},[33,4159,4161],{"class":35,"line":4160},25,[33,4162,2068],{},[14,4164,4166],{"id":4165},"verification","Verification",[10,4168,4169],{},"After installation, verify everything is working:",[1839,4171,4172],{},[414,4173,4174,4177,4180,4185,4188],{},[417,4175,4176],{},"WooNuxt Settings plugin is activated",[417,4178,4179],{},"All required plugins show as \"Installed\" in Settings > WooNuxt",[417,4181,4182,4183],{},"GraphQL endpoint is accessible at ",[30,4184,3374],{},[417,4186,4187],{},"WPGraphQL shows in WordPress admin sidebar",[417,4189,4190],{},"WooCommerce products are visible in GraphQL IDE",[14,4192,799],{"id":798},[10,4194,4195,4198,4199,656,4204,2286],{},[409,4196,4197],{},"Plugin auto-installation fails?"," Ensure WordPress is 6.9.4+ and you have admin access. Manual installation: download from ",[440,4200,4203],{"href":4201,"rel":4202},"https:\u002F\u002Fwordpress.org\u002Fplugins\u002F",[444],"WordPress.org",[440,4205,4208],{"href":4206,"rel":4207},"https:\u002F\u002Fgithub.com\u002Fwp-graphql\u002Fwp-graphql-woocommerce\u002Freleases",[444],"GitHub releases",[10,4210,4211,4214,4215,4217,4218,4220],{},[409,4212,4213],{},"GraphQL endpoint not accessible?"," Go to ",[409,4216,3382],{}," and click ",[409,4219,3395],{}," to flush rewrite rules.",[14,4222,4224],{"id":4223},"plugin-configuration","Plugin Configuration",[10,4226,4227],{},"After installing the WooNuxt Settings plugin, configure it to connect your WordPress backend with your Nuxt frontend.",[536,4229,4231],{"id":4230},"accessing-settings","Accessing Settings",[10,4233,4234,4235,4237],{},"Navigate to ",[409,4236,1889],{}," in your WordPress admin dashboard.",[3808,4239,4240],{},[10,4241,4242],{},"You'll see different sections based on whether all required plugins are installed. If dependencies are missing, you'll see the \"Required Plugins\" section first.",[536,4244,4246],{"id":4245},"logo-configuration","Logo Configuration",[10,4248,4249],{},"Upload or specify your site logo:",[22,4251,4254],{"className":4252,"code":4253,"language":519},[517],"Logo URL: https:\u002F\u002Fyoursite.com\u002Fwp-content\u002Fuploads\u002Flogo.svg\n",[30,4255,4253],{"__ignoreMap":28},[10,4257,4258],{},[409,4259,4260],{},"How to set:",[761,4262,4263,4269,4272,4275],{},[417,4264,4265,4266],{},"Upload logo to ",[409,4267,4268],{},"Media Library",[417,4270,4271],{},"Copy the file URL",[417,4273,4274],{},"Paste into the Logo field",[417,4276,1957,4277],{},[409,4278,3395],{},[10,4280,4281],{},[409,4282,4283],{},"Best practices:",[414,4285,4286,4289,4292,4295],{},[417,4287,4288],{},"Use SVG format for best quality",[417,4290,4291],{},"Recommended size: 200x50px to 400x100px",[417,4293,4294],{},"Transparent background works best",[417,4296,4297],{},"Logo appears in your Nuxt frontend header",[536,4299,3860],{"id":4300},"frontend-url",[10,4302,4303],{},"Specify your Nuxt application URL (not your WordPress URL):",[22,4305,4308],{"className":4306,"code":4307,"language":519},[517],"Frontend URL: https:\u002F\u002Fyour-store.netlify.app\n",[30,4309,4307],{"__ignoreMap":28},[3367,4311,4312,4319],{},[10,4313,4314,4315,4318],{},"This should be your ",[409,4316,4317],{},"Nuxt site URL",", not your WordPress backend URL. Example:",[414,4320,4321,4327],{},[417,4322,4323,4324],{},"✅ Correct: ",[30,4325,4326],{},"https:\u002F\u002Fmystore.netlify.app",[417,4328,4329,4330],{},"❌ Wrong: ",[30,4331,4332],{},"https:\u002F\u002Fwordpress.mystore.com",[10,4334,4335],{},[409,4336,4337],{},"Use cases:",[414,4339,4340,4343,4346,4349],{},[417,4341,4342],{},"Links in emails point to frontend",[417,4344,4345],{},"Redirects after login\u002Flogout",[417,4347,4348],{},"CORS configuration",[417,4350,4351],{},"Social sharing links",[536,4353,1945],{"id":4354},"products-per-page",[10,4356,4357],{},"Set pagination limit for product listings:",[22,4359,4362],{"className":4360,"code":4361,"language":519},[517],"Products Per Page: 24 (default)\n",[30,4363,4361],{"__ignoreMap":28},[10,4365,4366],{},[409,4367,4368],{},"Common values:",[414,4370,4371,4374,4377],{},[417,4372,4373],{},"12 - Fewer products, faster loading",[417,4375,4376],{},"24 - Balanced (default)",[417,4378,4379],{},"48 - More products per page",[10,4381,4382],{},"This value is exposed via GraphQL and used by your Nuxt frontend for pagination.",[536,4384,1930],{"id":4385},"primary-color",[10,4387,4388],{},"Define your brand's primary color:",[22,4390,4393],{"className":4391,"code":4392,"language":519},[517],"Primary Color: #7F54B2 (default)\n",[30,4394,4392],{"__ignoreMap":28},[10,4396,4397],{},[409,4398,4399],{},"Features:",[414,4401,4402,4405,4408,4411],{},[417,4403,4404],{},"Color picker interface",[417,4406,4407],{},"Live preview of frontend elements",[417,4409,4410],{},"Hex color code input",[417,4412,4413],{},"Affects buttons, links, and interactive elements",[10,4415,4416,4417,4419],{},"The color is exposed via GraphQL as ",[30,4418,3896],{}," for your Nuxt theme.",[536,4421,3903],{"id":4422},"build-hook",[10,4424,4425],{},"Trigger deployments from WordPress:",[22,4427,4430],{"className":4428,"code":4429,"language":519},[517],"Build Hook: https:\u002F\u002Fapi.netlify.com\u002Fbuild_hooks\u002Fyour_unique_id\n",[30,4431,4429],{"__ignoreMap":28},[10,4433,4434],{},[409,4435,4436],{},"Where to find:",[761,4438,4439,4445],{},[417,4440,4441,4444],{},[409,4442,4443],{},"Netlify",": Site Settings > Build & Deploy > Build Hooks",[417,4446,4447,4450],{},[409,4448,4449],{},"Vercel",": Project Settings > Git > Deploy Hooks",[10,4452,4453],{},[409,4454,4455],{},"When to use:",[414,4457,4458,4461,4464,4467],{},[417,4459,4460],{},"After publishing new products",[417,4462,4463],{},"After updating content",[417,4465,4466],{},"After changing settings",[417,4468,4469],{},"Automatic deployments on save",[10,4471,4472,4473,4476],{},"Once configured, a ",[409,4474,4475],{},"Deploy"," button appears in the WooNuxt toolbar.",[536,4478,1951],{"id":4479},"global-attributes-1",[10,4481,4482],{},"Global Attributes enable advanced product filtering on your frontend.",[10,4484,4485],{},[409,4486,4487],{},"What Are Global Attributes?",[10,4489,4490],{},"Product attributes in WooCommerce (like Color, Size, Material) that you want to use as filters across all product pages.",[10,4492,4493],{},[409,4494,4495],{},"Adding a Filter:",[761,4497,4498,4503,4506,4509,4523],{},[417,4499,1957,4500,4502],{},[409,4501,1960],{}," button",[417,4504,4505],{},"Enter a custom label (e.g., \"Filter by Color\")",[417,4507,4508],{},"Select the attribute from dropdown (e.g., Color)",[417,4510,4511,4512],{},"Configure display options:\n",[414,4513,4514,4517,4520],{},[417,4515,4516],{},"☑️ Show Count - Display number of products",[417,4518,4519],{},"☑️ Hide Empty - Hide terms with 0 products",[417,4521,4522],{},"☑️ Open By Default - Start expanded",[417,4524,1957,4525],{},[409,4526,3395],{},[447,4528,4529],{},[10,4530,4531,4532,4535],{},"Create product attributes first in ",[409,4533,4534],{},"Products > Attributes"," before configuring global attributes in WooNuxt Settings.",[536,4537,3961],{"id":4538},"seo-settings-1",[10,4540,4541],{},"Configure social media profiles for rich meta tags:",[10,4543,4544],{},[409,4545,4546],{},"Adding Social Profiles:",[761,4548,4549,4554,4557,4560,4568],{},[417,4550,1957,4551,4502],{},[409,4552,4553],{},"Add new",[417,4555,4556],{},"Enter provider name (e.g., \"facebook\", \"twitter\", \"instagram\")",[417,4558,4559],{},"Add your handle (e.g., \"@yourstore\")",[417,4561,4562,4563,4567],{},"Add full profile URL (e.g., \"",[440,4564,4565],{"href":4565,"rel":4566},"https:\u002F\u002Ffacebook.com\u002Fyourstore",[444],"\")",[417,4569,1957,4570],{},[409,4571,3395],{},[10,4573,4574],{},"These settings populate Open Graph and Twitter Card meta tags on your frontend for better social sharing.",[536,4576,3988],{"id":4577},"stripe-configuration-1",[10,4579,4580],{},"Stripe settings are automatically pulled from WooCommerce:",[761,4582,4583,4588,4591],{},[417,4584,4585,4586],{},"Configure Stripe in ",[409,4587,3999],{},[417,4589,4590],{},"WooNuxt Settings automatically exposes these via GraphQL",[417,4592,4593],{},"Your Nuxt frontend reads the appropriate key based on environment",[3808,4595,4596],{},[10,4597,4598],{},"The plugin intelligently returns test or live keys based on your WooCommerce Stripe mode setting.",[14,4600,4166],{"id":4601},"verification-1",[10,4603,4604],{},"After configuring settings, verify in GraphQL IDE:",[22,4606,4608],{"className":1990,"code":4607,"language":1992,"meta":28,"style":28},"query TestSettings {\n  woonuxtSettings {\n    logo\n    primary_color\n    frontEndUrl\n    productsPerPage\n    global_attributes {\n      label\n      slug\n      showCount\n      hideEmpty\n      openByDefault\n    }\n    stripeSettings {\n      enabled\n      testmode\n      publishable_key\n    }\n  }\n}\n",[30,4609,4610,4615,4619,4623,4627,4631,4635,4639,4643,4647,4651,4655,4659,4663,4667,4671,4675,4679,4683,4687],{"__ignoreMap":28},[33,4611,4612],{"class":35,"line":36},[33,4613,4614],{},"query TestSettings {\n",[33,4616,4617],{"class":35,"line":50},[33,4618,2049],{},[33,4620,4621],{"class":35,"line":86},[33,4622,2059],{},[33,4624,4625],{"class":35,"line":93},[33,4626,2054],{},[33,4628,4629],{"class":35,"line":99},[33,4630,4069],{},[33,4632,4633],{"class":35,"line":107},[33,4634,4084],{},[33,4636,4637],{"class":35,"line":112},[33,4638,4094],{},[33,4640,4641],{"class":35,"line":118},[33,4642,4114],{},[33,4644,4645],{"class":35,"line":204},[33,4646,4099],{},[33,4648,4649],{"class":35,"line":210},[33,4650,4104],{},[33,4652,4653],{"class":35,"line":216},[33,4654,4119],{},[33,4656,4657],{"class":35,"line":221},[33,4658,4109],{},[33,4660,4661],{"class":35,"line":227},[33,4662,2039],{},[33,4664,4665],{"class":35,"line":233},[33,4666,4128],{},[33,4668,4669],{"class":35,"line":239},[33,4670,4133],{},[33,4672,4673],{"class":35,"line":244},[33,4674,4138],{},[33,4676,4677],{"class":35,"line":250},[33,4678,4148],{},[33,4680,4681],{"class":35,"line":256},[33,4682,2039],{},[33,4684,4685],{"class":35,"line":261},[33,4686,2044],{},[33,4688,4689],{"class":35,"line":267},[33,4690,2068],{},[14,4692,3332],{"id":2306},[10,4694,4695],{},"With WordPress fully configured, you're ready to start building with WooNuxt!",[523,4697,4698],{},[10,4699,4700,4701,4705],{},"Your WordPress backend is now configured and ready to power your headless WooCommerce store. Check out the ",[440,4702,4704],{"href":749,"rel":4703},[444],"WooNuxt GitHub repository"," to get started with the frontend.",[856,4707,4708],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}",{"title":28,"searchDepth":50,"depth":50,"links":4710},[4711,4715,4716,4719,4725,4726,4727,4728,4739,4740],{"id":3533,"depth":50,"text":3534,"children":4712},[4713,4714],{"id":3537,"depth":86,"text":3538},{"id":3575,"depth":86,"text":3576},{"id":3591,"depth":50,"text":3592},{"id":3640,"depth":50,"text":3641,"children":4717},[4718],{"id":3776,"depth":86,"text":3777},{"id":3815,"depth":50,"text":3816,"children":4720},[4721,4722,4723,4724],{"id":3822,"depth":86,"text":3823},{"id":3912,"depth":86,"text":1951},{"id":3960,"depth":86,"text":3961},{"id":3987,"depth":86,"text":3988},{"id":4029,"depth":50,"text":4030},{"id":4165,"depth":50,"text":4166},{"id":798,"depth":50,"text":799},{"id":4223,"depth":50,"text":4224,"children":4729},[4730,4731,4732,4733,4734,4735,4736,4737,4738],{"id":4230,"depth":86,"text":4231},{"id":4245,"depth":86,"text":4246},{"id":4300,"depth":86,"text":3860},{"id":4354,"depth":86,"text":1945},{"id":4385,"depth":86,"text":1930},{"id":4422,"depth":86,"text":3903},{"id":4479,"depth":86,"text":1951},{"id":4538,"depth":86,"text":3961},{"id":4577,"depth":86,"text":3988},{"id":4601,"depth":50,"text":4166},{"id":2306,"depth":50,"text":3332},"Install and configure WooNuxt Settings plugin",{},{"icon":849},"\u002Fwordpress-setup\u002Fplugins",{"title":850,"description":4741},"2.wordpress-setup\u002F3.plugins","c1gThVqcKW9rBW7VG4rq8dgTOdt0k8yi_xQhzSeG9a4",{"id":4749,"title":4750,"body":4751,"description":5091,"extension":876,"links":877,"meta":5092,"navigation":5093,"path":5095,"seo":5096,"stem":5097,"__hash__":5098},"docs\u002F3.configuration\u002F1.deployment.md","Deployment",{"type":7,"value":4752,"toc":5079},[4753,4756,4760,4822,4825,4829,4855,4859,4862,4887,4890,4893,4918,4922,4936,4940,4943,4998,5006,5010,5013,5069,5076],[10,4754,4755],{},"WooNuxt supports three output modes. Choose the one that fits your hosting and catalog size.",[14,4757,4759],{"id":4758},"output-modes","Output Modes",[289,4761,4762,4775],{},[292,4763,4764],{},[295,4765,4766,4769,4772],{},[298,4767,4768],{},"Mode",[298,4770,4771],{},"Command",[298,4773,4774],{},"Best For",[308,4776,4777,4792,4807],{},[295,4778,4779,4784,4789],{},[313,4780,4781],{},[409,4782,4783],{},"Static (SSG)",[313,4785,4786],{},[30,4787,4788],{},"nuxt generate",[313,4790,4791],{},"Small–medium catalogs, cheapest hosting",[295,4793,4794,4799,4804],{},[313,4795,4796],{},[409,4797,4798],{},"Server (SSR)",[313,4800,4801],{},[30,4802,4803],{},"nuxt build",[313,4805,4806],{},"Large catalogs, always-fresh data",[295,4808,4809,4814,4819],{},[313,4810,4811],{},[409,4812,4813],{},"Hybrid (ISR)",[313,4815,4816,4818],{},[30,4817,4803],{}," + ISR routes",[313,4820,4821],{},"Large catalogs with caching",[14,4823,4443],{"id":4824},"netlify",[536,4826,4828],{"id":4827},"static-generation-recommended","Static Generation (Recommended)",[761,4830,4831,4834,4844,4852],{},[417,4832,4833],{},"Connect your GitHub repo in the Netlify dashboard",[417,4835,4836,4837,4840,4841],{},"Set ",[409,4838,4839],{},"Build command",": ",[30,4842,4843],{},"npm run generate",[417,4845,4836,4846,4840,4849],{},[409,4847,4848],{},"Publish directory",[30,4850,4851],{},".output\u002Fpublic",[417,4853,4854],{},"Add environment variables (see below)",[536,4856,4858],{"id":4857},"build-hook-trigger-rebuild-from-wordpress","Build Hook (Trigger Rebuild from WordPress)",[10,4860,4861],{},"When content changes in WooCommerce (new products, price updates), you can trigger a rebuild automatically:",[761,4863,4864,4871,4874,4881],{},[417,4865,4866,4867,4870],{},"In Netlify: ",[409,4868,4869],{},"Site settings > Build & deploy > Build hooks"," → create a hook",[417,4872,4873],{},"Copy the hook URL",[417,4875,4876,4877,4880],{},"In WordPress: ",[409,4878,4879],{},"Settings > WooNuxt > Build Hook"," → paste the URL",[417,4882,1957,4883,4886],{},[409,4884,4885],{},"Trigger Rebuild"," to test",[10,4888,4889],{},"The rebuild button appears in the WooNuxt Settings admin page only when a Build Hook URL is configured.",[14,4891,4449],{"id":4892},"vercel",[761,4894,4895,4898,4905,4915],{},[417,4896,4897],{},"Import your GitHub repo in the Vercel dashboard",[417,4899,4900,4901,4904],{},"Framework preset: ",[409,4902,4903],{},"Nuxt.js"," (auto-detected)",[417,4906,4907,4908,4910,4911,4914],{},"Build command: ",[30,4909,4843],{}," (SSG) or ",[30,4912,4913],{},"npm run build"," (SSR)",[417,4916,4917],{},"Add environment variables",[536,4919,4921],{"id":4920},"build-hook-for-vercel","Build Hook for Vercel",[761,4923,4924,4930],{},[417,4925,4926,4927,4870],{},"In Vercel: ",[409,4928,4929],{},"Project > Settings > Git > Deploy Hooks",[417,4931,4932,4933,4935],{},"Copy the URL and paste it into ",[409,4934,4879],{}," in WordPress",[14,4937,4939],{"id":4938},"required-environment-variables","Required Environment Variables",[10,4941,4942],{},"Set these in your hosting provider's environment variables panel:",[22,4944,4946],{"className":159,"code":4945,"language":161,"meta":28,"style":28},"# Required\nGQL_HOST=https:\u002F\u002Fyourwordpress.com\u002Fgraphql\nNUXT_IMAGE_DOMAINS=yourwordpress.com,cdn.yourwordpress.com\n\n# Optional — overrides WooNuxt Settings plugin values\nNUXT_PUBLIC_PRODUCTS_PER_PAGE=24\nNUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...\nPRIMARY_COLOR=#7F54B2\n\n# Optional — ISR cache lifetime (SSR\u002Fhybrid mode only)\nCATALOG_ISR_TTL=3600\n",[30,4947,4948,4953,4958,4963,4967,4972,4976,4981,4985,4989,4994],{"__ignoreMap":28},[33,4949,4950],{"class":35,"line":36},[33,4951,4952],{},"# Required\n",[33,4954,4955],{"class":35,"line":50},[33,4956,4957],{},"GQL_HOST=https:\u002F\u002Fyourwordpress.com\u002Fgraphql\n",[33,4959,4960],{"class":35,"line":86},[33,4961,4962],{},"NUXT_IMAGE_DOMAINS=yourwordpress.com,cdn.yourwordpress.com\n",[33,4964,4965],{"class":35,"line":93},[33,4966,90],{"emptyLinePlaceholder":89},[33,4968,4969],{"class":35,"line":99},[33,4970,4971],{},"# Optional — overrides WooNuxt Settings plugin values\n",[33,4973,4974],{"class":35,"line":107},[33,4975,253],{},[33,4977,4978],{"class":35,"line":112},[33,4979,4980],{},"NUXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...\n",[33,4982,4983],{"class":35,"line":118},[33,4984,287],{},[33,4986,4987],{"class":35,"line":204},[33,4988,90],{"emptyLinePlaceholder":89},[33,4990,4991],{"class":35,"line":210},[33,4992,4993],{},"# Optional — ISR cache lifetime (SSR\u002Fhybrid mode only)\n",[33,4995,4996],{"class":35,"line":216},[33,4997,236],{},[3367,4999,5000],{},[10,5001,5002,5003,5005],{},"Never commit your ",[30,5004,155],{}," file. All secrets should be set via your hosting provider's environment variables UI.",[14,5007,5009],{"id":5008},"ssl-for-local-development","SSL for Local Development",[10,5011,5012],{},"If you need HTTPS locally (Stripe, PWA, OAuth providers):",[22,5014,5016],{"className":24,"code":5015,"filename":26,"language":27,"meta":28,"style":28},"# Install mkcert\nbrew install mkcert\nmkcert -install\n\n# Generate local certificate\nmkcert localhost\n\n# Run dev server with SSL\nnpm run dev:ssl\n",[30,5017,5018,5023,5031,5037,5041,5046,5052,5056,5061],{"__ignoreMap":28},[33,5019,5020],{"class":35,"line":36},[33,5021,5022],{"class":74},"# Install mkcert\n",[33,5024,5025,5027,5029],{"class":35,"line":50},[33,5026,555],{"class":39},[33,5028,558],{"class":43},[33,5030,561],{"class":43},[33,5032,5033,5035],{"class":35,"line":86},[33,5034,646],{"class":39},[33,5036,676],{"class":43},[33,5038,5039],{"class":35,"line":93},[33,5040,90],{"emptyLinePlaceholder":89},[33,5042,5043],{"class":35,"line":99},[33,5044,5045],{"class":74},"# Generate local certificate\n",[33,5047,5048,5050],{"class":35,"line":107},[33,5049,646],{"class":39},[33,5051,649],{"class":43},[33,5053,5054],{"class":35,"line":112},[33,5055,90],{"emptyLinePlaceholder":89},[33,5057,5058],{"class":35,"line":118},[33,5059,5060],{"class":74},"# Run dev server with SSL\n",[33,5062,5063,5065,5067],{"class":35,"line":204},[33,5064,80],{"class":39},[33,5066,479],{"class":43},[33,5068,698],{"class":43},[10,5070,738,5071,5073,5074,2286],{},[30,5072,741],{}," script is pre-configured in ",[30,5075,745],{},[856,5077,5078],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}",{"title":28,"searchDepth":50,"depth":50,"links":5080},[5081,5082,5086,5089,5090],{"id":4758,"depth":50,"text":4759},{"id":4824,"depth":50,"text":4443,"children":5083},[5084,5085],{"id":4827,"depth":86,"text":4828},{"id":4857,"depth":86,"text":4858},{"id":4892,"depth":50,"text":4449,"children":5087},[5088],{"id":4920,"depth":86,"text":4921},{"id":4938,"depth":50,"text":4939},{"id":5008,"depth":50,"text":5009},"Deploy WooNuxt to Netlify, Vercel, or any static host",{},{"icon":5094},"i-lucide-rocket","\u002Fconfiguration\u002Fdeployment",{"title":4750,"description":5091},"3.configuration\u002F1.deployment","SlfnFYHvqwXRGCh2f75QwzbwC1_O6bmFQybrW1g_3LY",{"id":5100,"title":3124,"body":5101,"description":6144,"extension":876,"links":877,"meta":6145,"navigation":6146,"path":6148,"seo":6149,"stem":6150,"__hash__":6151},"docs\u002F3.configuration\u002F2.composables.md",{"type":7,"value":5102,"toc":6129},[5103,5106,5110,5113,5237,5251,5254,5258,5261,5393,5399,5401,5405,5408,5480,5482,5486,5489,5541,5548,5550,5554,5557,5618,5620,5624,5627,5669,5688,5690,5694,5697,5759,5761,5765,5771,5843,5845,5849,5852,5904,5906,5910,5913,5974,5976,5980,5983,6012,6014,6018,6021,6049,6063,6065,6068,6074,6126],[10,5104,5105],{},"WooNuxt provides 13 composables that handle all store logic. They are available globally — no import needed.",[14,5107,5109],{"id":5108},"usecart","useCart",[10,5111,5112],{},"Manages the shopping cart state and all cart mutations.",[22,5114,5116],{"className":2376,"code":5115,"language":2378,"meta":28,"style":28},"const {\n  cart,              \u002F\u002F Ref\u003CCart> — reactive cart object\n  cartTotals,        \u002F\u002F Computed cart totals\n  cartCount,         \u002F\u002F Computed item count\n  isUpdatingCart,    \u002F\u002F Ref\u003Cboolean> — loading state\n  addToCart,         \u002F\u002F (input: AddToCartInput) => Promise\u003Cvoid>\n  updateItemQuantity,\u002F\u002F (key: string, quantity: number) => Promise\u003Cvoid>\n  removeItem,        \u002F\u002F (key: string) => Promise\u003Cvoid>\n  emptyCart,         \u002F\u002F () => Promise\u003Cvoid>\n  applyCoupon,       \u002F\u002F (code: string) => Promise\u003Cvoid>\n  removeCoupon,      \u002F\u002F (code: string) => Promise\u003Cvoid>\n} = useCart()\n",[30,5117,5118,5125,5135,5145,5155,5165,5175,5185,5195,5205,5215,5225],{"__ignoreMap":28},[33,5119,5120,5123],{"class":35,"line":36},[33,5121,5122],{"class":2545},"const",[33,5124,2781],{"class":2158},[33,5126,5127,5130,5132],{"class":35,"line":50},[33,5128,5129],{"class":2155},"  cart",[33,5131,3052],{"class":2158},[33,5133,5134],{"class":74},"              \u002F\u002F Ref\u003CCart> — reactive cart object\n",[33,5136,5137,5140,5142],{"class":35,"line":86},[33,5138,5139],{"class":2155},"  cartTotals",[33,5141,3052],{"class":2158},[33,5143,5144],{"class":74},"        \u002F\u002F Computed cart totals\n",[33,5146,5147,5150,5152],{"class":35,"line":93},[33,5148,5149],{"class":2155},"  cartCount",[33,5151,3052],{"class":2158},[33,5153,5154],{"class":74},"         \u002F\u002F Computed item count\n",[33,5156,5157,5160,5162],{"class":35,"line":99},[33,5158,5159],{"class":2155},"  isUpdatingCart",[33,5161,3052],{"class":2158},[33,5163,5164],{"class":74},"    \u002F\u002F Ref\u003Cboolean> — loading state\n",[33,5166,5167,5170,5172],{"class":35,"line":107},[33,5168,5169],{"class":2155},"  addToCart",[33,5171,3052],{"class":2158},[33,5173,5174],{"class":74},"         \u002F\u002F (input: AddToCartInput) => Promise\u003Cvoid>\n",[33,5176,5177,5180,5182],{"class":35,"line":112},[33,5178,5179],{"class":2155},"  updateItemQuantity",[33,5181,3052],{"class":2158},[33,5183,5184],{"class":74},"\u002F\u002F (key: string, quantity: number) => Promise\u003Cvoid>\n",[33,5186,5187,5190,5192],{"class":35,"line":118},[33,5188,5189],{"class":2155},"  removeItem",[33,5191,3052],{"class":2158},[33,5193,5194],{"class":74},"        \u002F\u002F (key: string) => Promise\u003Cvoid>\n",[33,5196,5197,5200,5202],{"class":35,"line":204},[33,5198,5199],{"class":2155},"  emptyCart",[33,5201,3052],{"class":2158},[33,5203,5204],{"class":74},"         \u002F\u002F () => Promise\u003Cvoid>\n",[33,5206,5207,5210,5212],{"class":35,"line":210},[33,5208,5209],{"class":2155},"  applyCoupon",[33,5211,3052],{"class":2158},[33,5213,5214],{"class":74},"       \u002F\u002F (code: string) => Promise\u003Cvoid>\n",[33,5216,5217,5220,5222],{"class":35,"line":216},[33,5218,5219],{"class":2155},"  removeCoupon",[33,5221,3052],{"class":2158},[33,5223,5224],{"class":74},"      \u002F\u002F (code: string) => Promise\u003Cvoid>\n",[33,5226,5227,5229,5232,5235],{"class":35,"line":221},[33,5228,2433],{"class":2158},[33,5230,5231],{"class":2158}," =",[33,5233,5234],{"class":53}," useCart",[33,5236,2683],{"class":2155},[10,5238,5239,5242,5243,5246,5247,5250],{},[409,5240,5241],{},"Modes:"," The cart supports ",[30,5244,5245],{},"optimistic"," (instant UI feedback) and ",[30,5248,5249],{},"safe"," (wait for server confirmation) update modes. Mutations are queued to prevent race conditions.",[5252,5253],"hr",{},[14,5255,5257],{"id":5256},"useauth","useAuth",[10,5259,5260],{},"Handles customer authentication, sessions, and account data.",[22,5262,5264],{"className":2376,"code":5263,"language":2378,"meta":28,"style":28},"const {\n  customer,          \u002F\u002F Ref\u003CCustomer> — logged-in customer data\n  viewer,            \u002F\u002F Ref\u003CViewer> — current user\n  orders,            \u002F\u002F Ref\u003COrder[]>\n  downloads,         \u002F\u002F Ref\u003CDownload[]>\n  isPending,         \u002F\u002F Ref\u003Cboolean>\n  isLoggedIn,        \u002F\u002F ComputedRef\u003Cboolean>\n  loginUser,         \u002F\u002F (input: LoginInput) => Promise\u003C{ success, error }>\n  logoutUser,        \u002F\u002F () => Promise\u003Cvoid>\n  registerUser,      \u002F\u002F (input: RegisterInput) => Promise\u003C{ success, error }>\n  updateCustomer,    \u002F\u002F (input: UpdateCustomerInput) => Promise\u003Cvoid>\n  refreshCart,       \u002F\u002F () => Promise\u003Cvoid>\n} = useAuth()\n",[30,5265,5266,5272,5282,5292,5302,5312,5322,5332,5342,5352,5362,5372,5382],{"__ignoreMap":28},[33,5267,5268,5270],{"class":35,"line":36},[33,5269,5122],{"class":2545},[33,5271,2781],{"class":2158},[33,5273,5274,5277,5279],{"class":35,"line":50},[33,5275,5276],{"class":2155},"  customer",[33,5278,3052],{"class":2158},[33,5280,5281],{"class":74},"          \u002F\u002F Ref\u003CCustomer> — logged-in customer data\n",[33,5283,5284,5287,5289],{"class":35,"line":86},[33,5285,5286],{"class":2155},"  viewer",[33,5288,3052],{"class":2158},[33,5290,5291],{"class":74},"            \u002F\u002F Ref\u003CViewer> — current user\n",[33,5293,5294,5297,5299],{"class":35,"line":93},[33,5295,5296],{"class":2155},"  orders",[33,5298,3052],{"class":2158},[33,5300,5301],{"class":74},"            \u002F\u002F Ref\u003COrder[]>\n",[33,5303,5304,5307,5309],{"class":35,"line":99},[33,5305,5306],{"class":2155},"  downloads",[33,5308,3052],{"class":2158},[33,5310,5311],{"class":74},"         \u002F\u002F Ref\u003CDownload[]>\n",[33,5313,5314,5317,5319],{"class":35,"line":107},[33,5315,5316],{"class":2155},"  isPending",[33,5318,3052],{"class":2158},[33,5320,5321],{"class":74},"         \u002F\u002F Ref\u003Cboolean>\n",[33,5323,5324,5327,5329],{"class":35,"line":112},[33,5325,5326],{"class":2155},"  isLoggedIn",[33,5328,3052],{"class":2158},[33,5330,5331],{"class":74},"        \u002F\u002F ComputedRef\u003Cboolean>\n",[33,5333,5334,5337,5339],{"class":35,"line":118},[33,5335,5336],{"class":2155},"  loginUser",[33,5338,3052],{"class":2158},[33,5340,5341],{"class":74},"         \u002F\u002F (input: LoginInput) => Promise\u003C{ success, error }>\n",[33,5343,5344,5347,5349],{"class":35,"line":204},[33,5345,5346],{"class":2155},"  logoutUser",[33,5348,3052],{"class":2158},[33,5350,5351],{"class":74},"        \u002F\u002F () => Promise\u003Cvoid>\n",[33,5353,5354,5357,5359],{"class":35,"line":210},[33,5355,5356],{"class":2155},"  registerUser",[33,5358,3052],{"class":2158},[33,5360,5361],{"class":74},"      \u002F\u002F (input: RegisterInput) => Promise\u003C{ success, error }>\n",[33,5363,5364,5367,5369],{"class":35,"line":216},[33,5365,5366],{"class":2155},"  updateCustomer",[33,5368,3052],{"class":2158},[33,5370,5371],{"class":74},"    \u002F\u002F (input: UpdateCustomerInput) => Promise\u003Cvoid>\n",[33,5373,5374,5377,5379],{"class":35,"line":221},[33,5375,5376],{"class":2155},"  refreshCart",[33,5378,3052],{"class":2158},[33,5380,5381],{"class":74},"       \u002F\u002F () => Promise\u003Cvoid>\n",[33,5383,5384,5386,5388,5391],{"class":35,"line":227},[33,5385,2433],{"class":2158},[33,5387,5231],{"class":2158},[33,5389,5390],{"class":53}," useAuth",[33,5392,2683],{"class":2155},[10,5394,5395,5396,2286],{},"Authentication uses JWT tokens stored in cookies. Tokens are refreshed automatically on expiry via ",[30,5397,5398],{},"useAuthTokens",[5252,5400],{},[14,5402,5404],{"id":5403},"usecheckout","useCheckout",[10,5406,5407],{},"Controls the checkout flow, shipping, and payment method selection.",[22,5409,5411],{"className":2376,"code":5410,"language":2378,"meta":28,"style":28},"const {\n  orderInput,        \u002F\u002F Ref — checkout form state\n  isProcessingOrder, \u002F\u002F Ref\u003Cboolean>\n  proccessCheckout,  \u002F\u002F () => Promise\u003Cvoid>\n  paymentGateways,   \u002F\u002F Ref\u003CPaymentGateway[]>\n  shippingMethods,   \u002F\u002F Ref\u003CShippingMethod[]>\n} = useCheckout()\n",[30,5412,5413,5419,5429,5439,5449,5459,5469],{"__ignoreMap":28},[33,5414,5415,5417],{"class":35,"line":36},[33,5416,5122],{"class":2545},[33,5418,2781],{"class":2158},[33,5420,5421,5424,5426],{"class":35,"line":50},[33,5422,5423],{"class":2155},"  orderInput",[33,5425,3052],{"class":2158},[33,5427,5428],{"class":74},"        \u002F\u002F Ref — checkout form state\n",[33,5430,5431,5434,5436],{"class":35,"line":86},[33,5432,5433],{"class":2155},"  isProcessingOrder",[33,5435,3052],{"class":2158},[33,5437,5438],{"class":74}," \u002F\u002F Ref\u003Cboolean>\n",[33,5440,5441,5444,5446],{"class":35,"line":93},[33,5442,5443],{"class":2155},"  proccessCheckout",[33,5445,3052],{"class":2158},[33,5447,5448],{"class":74},"  \u002F\u002F () => Promise\u003Cvoid>\n",[33,5450,5451,5454,5456],{"class":35,"line":99},[33,5452,5453],{"class":2155},"  paymentGateways",[33,5455,3052],{"class":2158},[33,5457,5458],{"class":74},"   \u002F\u002F Ref\u003CPaymentGateway[]>\n",[33,5460,5461,5464,5466],{"class":35,"line":107},[33,5462,5463],{"class":2155},"  shippingMethods",[33,5465,3052],{"class":2158},[33,5467,5468],{"class":74},"   \u002F\u002F Ref\u003CShippingMethod[]>\n",[33,5470,5471,5473,5475,5478],{"class":35,"line":112},[33,5472,2433],{"class":2158},[33,5474,5231],{"class":2158},[33,5476,5477],{"class":53}," useCheckout",[33,5479,2683],{"class":2155},[5252,5481],{},[14,5483,5485],{"id":5484},"usefiltering","useFiltering",[10,5487,5488],{},"Manages URL-based product filtering by attributes, price range, and sale status.",[22,5490,5492],{"className":2376,"code":5491,"language":2378,"meta":28,"style":28},"const {\n  isFiltersActive,   \u002F\u002F ComputedRef\u003Cboolean>\n  activeFilters,     \u002F\u002F ComputedRef\u003CActiveFilters>\n  resetFilters,      \u002F\u002F () => void\n} = useFiltering()\n",[30,5493,5494,5500,5510,5520,5530],{"__ignoreMap":28},[33,5495,5496,5498],{"class":35,"line":36},[33,5497,5122],{"class":2545},[33,5499,2781],{"class":2158},[33,5501,5502,5505,5507],{"class":35,"line":50},[33,5503,5504],{"class":2155},"  isFiltersActive",[33,5506,3052],{"class":2158},[33,5508,5509],{"class":74},"   \u002F\u002F ComputedRef\u003Cboolean>\n",[33,5511,5512,5515,5517],{"class":35,"line":86},[33,5513,5514],{"class":2155},"  activeFilters",[33,5516,3052],{"class":2158},[33,5518,5519],{"class":74},"     \u002F\u002F ComputedRef\u003CActiveFilters>\n",[33,5521,5522,5525,5527],{"class":35,"line":93},[33,5523,5524],{"class":2155},"  resetFilters",[33,5526,3052],{"class":2158},[33,5528,5529],{"class":74},"      \u002F\u002F () => void\n",[33,5531,5532,5534,5536,5539],{"class":35,"line":99},[33,5533,2433],{"class":2158},[33,5535,5231],{"class":2158},[33,5537,5538],{"class":53}," useFiltering",[33,5540,2683],{"class":2155},[10,5542,5543,5544,5547],{},"Filter state is synced with the URL query string so filters are shareable and survive page refresh. Global attributes are configured via the ",[409,5545,5546],{},"WooNuxt Settings"," plugin.",[5252,5549],{},[14,5551,5553],{"id":5552},"useproducts","useProducts",[10,5555,5556],{},"Manages product list state and the full filtering\u002Fsorting pipeline.",[22,5558,5560],{"className":2376,"code":5559,"language":2378,"meta":28,"style":28},"const {\n  products,          \u002F\u002F Ref\u003CProduct[]>\n  allProducts,       \u002F\u002F Ref\u003CProduct[]> — unfiltered\n  isLoading,         \u002F\u002F Ref\u003Cboolean>\n  loadMore,          \u002F\u002F () => Promise\u003Cvoid>\n} = useProducts()\n",[30,5561,5562,5568,5578,5588,5597,5607],{"__ignoreMap":28},[33,5563,5564,5566],{"class":35,"line":36},[33,5565,5122],{"class":2545},[33,5567,2781],{"class":2158},[33,5569,5570,5573,5575],{"class":35,"line":50},[33,5571,5572],{"class":2155},"  products",[33,5574,3052],{"class":2158},[33,5576,5577],{"class":74},"          \u002F\u002F Ref\u003CProduct[]>\n",[33,5579,5580,5583,5585],{"class":35,"line":86},[33,5581,5582],{"class":2155},"  allProducts",[33,5584,3052],{"class":2158},[33,5586,5587],{"class":74},"       \u002F\u002F Ref\u003CProduct[]> — unfiltered\n",[33,5589,5590,5593,5595],{"class":35,"line":93},[33,5591,5592],{"class":2155},"  isLoading",[33,5594,3052],{"class":2158},[33,5596,5321],{"class":74},[33,5598,5599,5602,5604],{"class":35,"line":99},[33,5600,5601],{"class":2155},"  loadMore",[33,5603,3052],{"class":2158},[33,5605,5606],{"class":74},"          \u002F\u002F () => Promise\u003Cvoid>\n",[33,5608,5609,5611,5613,5616],{"class":35,"line":107},[33,5610,2433],{"class":2158},[33,5612,5231],{"class":2158},[33,5614,5615],{"class":53}," useProducts",[33,5617,2683],{"class":2155},[5252,5619],{},[14,5621,5623],{"id":5622},"usesorting","useSorting",[10,5625,5626],{},"Controls product sort order.",[22,5628,5630],{"className":2376,"code":5629,"language":2378,"meta":28,"style":28},"const {\n  sortOrder,         \u002F\u002F Ref\u003Cstring>\n  setSortOrder,      \u002F\u002F (order: string) => void\n} = useSorting()\n",[30,5631,5632,5638,5648,5658],{"__ignoreMap":28},[33,5633,5634,5636],{"class":35,"line":36},[33,5635,5122],{"class":2545},[33,5637,2781],{"class":2158},[33,5639,5640,5643,5645],{"class":35,"line":50},[33,5641,5642],{"class":2155},"  sortOrder",[33,5644,3052],{"class":2158},[33,5646,5647],{"class":74},"         \u002F\u002F Ref\u003Cstring>\n",[33,5649,5650,5653,5655],{"class":35,"line":86},[33,5651,5652],{"class":2155},"  setSortOrder",[33,5654,3052],{"class":2158},[33,5656,5657],{"class":74},"      \u002F\u002F (order: string) => void\n",[33,5659,5660,5662,5664,5667],{"class":35,"line":93},[33,5661,2433],{"class":2158},[33,5663,5231],{"class":2158},[33,5665,5666],{"class":53}," useSorting",[33,5668,2683],{"class":2155},[10,5670,5671,5672,5675,5676,5675,5679,5675,5682,5675,5685,2286],{},"Available sort options: ",[30,5673,5674],{},"DATE",", ",[30,5677,5678],{},"PRICE",[30,5680,5681],{},"PRICE_DESC",[30,5683,5684],{},"RATING",[30,5686,5687],{},"POPULARITY",[5252,5689],{},[14,5691,5693],{"id":5692},"usesearch","useSearch",[10,5695,5696],{},"Handles product search queries.",[22,5698,5700],{"className":2376,"code":5699,"language":2378,"meta":28,"style":28},"const {\n  searchQuery,       \u002F\u002F Ref\u003Cstring>\n  searchResults,     \u002F\u002F Ref\u003CProduct[]>\n  isSearching,       \u002F\u002F Ref\u003Cboolean>\n  clearSearch,       \u002F\u002F () => void\n} = useSearch()\n",[30,5701,5702,5708,5718,5728,5738,5748],{"__ignoreMap":28},[33,5703,5704,5706],{"class":35,"line":36},[33,5705,5122],{"class":2545},[33,5707,2781],{"class":2158},[33,5709,5710,5713,5715],{"class":35,"line":50},[33,5711,5712],{"class":2155},"  searchQuery",[33,5714,3052],{"class":2158},[33,5716,5717],{"class":74},"       \u002F\u002F Ref\u003Cstring>\n",[33,5719,5720,5723,5725],{"class":35,"line":86},[33,5721,5722],{"class":2155},"  searchResults",[33,5724,3052],{"class":2158},[33,5726,5727],{"class":74},"     \u002F\u002F Ref\u003CProduct[]>\n",[33,5729,5730,5733,5735],{"class":35,"line":93},[33,5731,5732],{"class":2155},"  isSearching",[33,5734,3052],{"class":2158},[33,5736,5737],{"class":74},"       \u002F\u002F Ref\u003Cboolean>\n",[33,5739,5740,5743,5745],{"class":35,"line":99},[33,5741,5742],{"class":2155},"  clearSearch",[33,5744,3052],{"class":2158},[33,5746,5747],{"class":74},"       \u002F\u002F () => void\n",[33,5749,5750,5752,5754,5757],{"class":35,"line":107},[33,5751,2433],{"class":2158},[33,5753,5231],{"class":2158},[33,5755,5756],{"class":53}," useSearch",[33,5758,2683],{"class":2155},[5252,5760],{},[14,5762,5764],{"id":5763},"usewishlist","useWishlist",[10,5766,5767,5768,2286],{},"Persists a wishlist in ",[30,5769,5770],{},"localStorage",[22,5772,5774],{"className":2376,"code":5773,"language":2378,"meta":28,"style":28},"const {\n  wishlist,          \u002F\u002F Ref\u003Cnumber[]> — array of product IDs\n  addToWishlist,     \u002F\u002F (productId: number) => void\n  removeFromWishlist,\u002F\u002F (productId: number) => void\n  isInWishlist,      \u002F\u002F (productId: number) => boolean\n  toggleWishlist,    \u002F\u002F (productId: number) => void\n} = useWishlist()\n",[30,5775,5776,5782,5792,5802,5812,5822,5832],{"__ignoreMap":28},[33,5777,5778,5780],{"class":35,"line":36},[33,5779,5122],{"class":2545},[33,5781,2781],{"class":2158},[33,5783,5784,5787,5789],{"class":35,"line":50},[33,5785,5786],{"class":2155},"  wishlist",[33,5788,3052],{"class":2158},[33,5790,5791],{"class":74},"          \u002F\u002F Ref\u003Cnumber[]> — array of product IDs\n",[33,5793,5794,5797,5799],{"class":35,"line":86},[33,5795,5796],{"class":2155},"  addToWishlist",[33,5798,3052],{"class":2158},[33,5800,5801],{"class":74},"     \u002F\u002F (productId: number) => void\n",[33,5803,5804,5807,5809],{"class":35,"line":93},[33,5805,5806],{"class":2155},"  removeFromWishlist",[33,5808,3052],{"class":2158},[33,5810,5811],{"class":74},"\u002F\u002F (productId: number) => void\n",[33,5813,5814,5817,5819],{"class":35,"line":99},[33,5815,5816],{"class":2155},"  isInWishlist",[33,5818,3052],{"class":2158},[33,5820,5821],{"class":74},"      \u002F\u002F (productId: number) => boolean\n",[33,5823,5824,5827,5829],{"class":35,"line":107},[33,5825,5826],{"class":2155},"  toggleWishlist",[33,5828,3052],{"class":2158},[33,5830,5831],{"class":74},"    \u002F\u002F (productId: number) => void\n",[33,5833,5834,5836,5838,5841],{"class":35,"line":112},[33,5835,2433],{"class":2158},[33,5837,5231],{"class":2158},[33,5839,5840],{"class":53}," useWishlist",[33,5842,2683],{"class":2155},[5252,5844],{},[14,5846,5848],{"id":5847},"usecountry","useCountry",[10,5850,5851],{},"Manages country and state selection for address forms.",[22,5853,5855],{"className":2376,"code":5854,"language":2378,"meta":28,"style":28},"const {\n  allowedCountries,  \u002F\u002F Ref\u003CCountry[]>\n  states,            \u002F\u002F Ref\u003CState[]>\n  getStates,         \u002F\u002F (countryCode: string) => Promise\u003Cvoid>\n} = useCountry()\n",[30,5856,5857,5863,5873,5883,5893],{"__ignoreMap":28},[33,5858,5859,5861],{"class":35,"line":36},[33,5860,5122],{"class":2545},[33,5862,2781],{"class":2158},[33,5864,5865,5868,5870],{"class":35,"line":50},[33,5866,5867],{"class":2155},"  allowedCountries",[33,5869,3052],{"class":2158},[33,5871,5872],{"class":74},"  \u002F\u002F Ref\u003CCountry[]>\n",[33,5874,5875,5878,5880],{"class":35,"line":86},[33,5876,5877],{"class":2155},"  states",[33,5879,3052],{"class":2158},[33,5881,5882],{"class":74},"            \u002F\u002F Ref\u003CState[]>\n",[33,5884,5885,5888,5890],{"class":35,"line":93},[33,5886,5887],{"class":2155},"  getStates",[33,5889,3052],{"class":2158},[33,5891,5892],{"class":74},"         \u002F\u002F (countryCode: string) => Promise\u003Cvoid>\n",[33,5894,5895,5897,5899,5902],{"class":35,"line":99},[33,5896,2433],{"class":2158},[33,5898,5231],{"class":2158},[33,5900,5901],{"class":53}," useCountry",[33,5903,2683],{"class":2155},[5252,5905],{},[14,5907,5909],{"id":5908},"usehelpers","useHelpers",[10,5911,5912],{},"Utility functions used throughout the app.",[22,5914,5916],{"className":2376,"code":5915,"language":2378,"meta":28,"style":28},"const {\n  formatPrice,       \u002F\u002F (price: string) => string\n  stripHtml,         \u002F\u002F (html: string) => string\n  scrollToTop,       \u002F\u002F () => void\n  isClient,          \u002F\u002F boolean\n} = useHelpers()\n",[30,5917,5918,5924,5934,5944,5953,5963],{"__ignoreMap":28},[33,5919,5920,5922],{"class":35,"line":36},[33,5921,5122],{"class":2545},[33,5923,2781],{"class":2158},[33,5925,5926,5929,5931],{"class":35,"line":50},[33,5927,5928],{"class":2155},"  formatPrice",[33,5930,3052],{"class":2158},[33,5932,5933],{"class":74},"       \u002F\u002F (price: string) => string\n",[33,5935,5936,5939,5941],{"class":35,"line":86},[33,5937,5938],{"class":2155},"  stripHtml",[33,5940,3052],{"class":2158},[33,5942,5943],{"class":74},"         \u002F\u002F (html: string) => string\n",[33,5945,5946,5949,5951],{"class":35,"line":93},[33,5947,5948],{"class":2155},"  scrollToTop",[33,5950,3052],{"class":2158},[33,5952,5747],{"class":74},[33,5954,5955,5958,5960],{"class":35,"line":99},[33,5956,5957],{"class":2155},"  isClient",[33,5959,3052],{"class":2158},[33,5961,5962],{"class":74},"          \u002F\u002F boolean\n",[33,5964,5965,5967,5969,5972],{"class":35,"line":107},[33,5966,2433],{"class":2158},[33,5968,5231],{"class":2158},[33,5970,5971],{"class":53}," useHelpers",[33,5973,2683],{"class":2155},[5252,5975],{},[14,5977,5979],{"id":5978},"useseofallbacks","useSEOFallbacks",[10,5981,5982],{},"Provides fallback SEO meta tags when Yoast data is unavailable.",[22,5984,5986],{"className":2376,"code":5985,"language":2378,"meta":28,"style":28},"const { generateSEO } = useSEOFallbacks()\n\u002F\u002F generateSEO(product) → useSeoMeta()-compatible object\n",[30,5987,5988,6007],{"__ignoreMap":28},[33,5989,5990,5992,5995,5998,6000,6002,6005],{"class":35,"line":36},[33,5991,5122],{"class":2545},[33,5993,5994],{"class":2158}," {",[33,5996,5997],{"class":2155}," generateSEO ",[33,5999,2433],{"class":2158},[33,6001,5231],{"class":2158},[33,6003,6004],{"class":53}," useSEOFallbacks",[33,6006,2683],{"class":2155},[33,6008,6009],{"class":35,"line":50},[33,6010,6011],{"class":74},"\u002F\u002F generateSEO(product) → useSeoMeta()-compatible object\n",[5252,6013],{},[14,6015,6017],{"id":6016},"useyoasthead","useYoastHead",[10,6019,6020],{},"Injects full Yoast SEO head tags for a product.",[22,6022,6024],{"className":2376,"code":6023,"language":2378,"meta":28,"style":28},"const { setYoastHead } = useYoastHead()\n\u002F\u002F setYoastHead(fullYoastHead: string) → void\n",[30,6025,6026,6044],{"__ignoreMap":28},[33,6027,6028,6030,6032,6035,6037,6039,6042],{"class":35,"line":36},[33,6029,5122],{"class":2545},[33,6031,5994],{"class":2158},[33,6033,6034],{"class":2155}," setYoastHead ",[33,6036,2433],{"class":2158},[33,6038,5231],{"class":2158},[33,6040,6041],{"class":53}," useYoastHead",[33,6043,2683],{"class":2155},[33,6045,6046],{"class":35,"line":50},[33,6047,6048],{"class":74},"\u002F\u002F setYoastHead(fullYoastHead: string) → void\n",[10,6050,6051,6052,6055,6056,6058,6059,6062],{},"Requires the ",[30,6053,6054],{},"fullYoastHead"," field to be exposed by the ",[409,6057,5546],{}," plugin (",[30,6060,6061],{},"graphql\u002Fyoast.php",").",[5252,6064],{},[14,6066,5398],{"id":6067},"useauthtokens",[10,6069,6070,6071,6073],{},"Low-level JWT token management. Used internally by ",[30,6072,5257],{}," — you should not need to call this directly.",[22,6075,6077],{"className":2376,"code":6076,"language":2378,"meta":28,"style":28},"const {\n  getAuthToken,      \u002F\u002F () => string | null\n  setAuthToken,      \u002F\u002F (token: string) => void\n  clearAuthToken,    \u002F\u002F () => void\n} = useAuthTokens()\n",[30,6078,6079,6085,6095,6105,6115],{"__ignoreMap":28},[33,6080,6081,6083],{"class":35,"line":36},[33,6082,5122],{"class":2545},[33,6084,2781],{"class":2158},[33,6086,6087,6090,6092],{"class":35,"line":50},[33,6088,6089],{"class":2155},"  getAuthToken",[33,6091,3052],{"class":2158},[33,6093,6094],{"class":74},"      \u002F\u002F () => string | null\n",[33,6096,6097,6100,6102],{"class":35,"line":86},[33,6098,6099],{"class":2155},"  setAuthToken",[33,6101,3052],{"class":2158},[33,6103,6104],{"class":74},"      \u002F\u002F (token: string) => void\n",[33,6106,6107,6110,6112],{"class":35,"line":93},[33,6108,6109],{"class":2155},"  clearAuthToken",[33,6111,3052],{"class":2158},[33,6113,6114],{"class":74},"    \u002F\u002F () => void\n",[33,6116,6117,6119,6121,6124],{"class":35,"line":99},[33,6118,2433],{"class":2158},[33,6120,5231],{"class":2158},[33,6122,6123],{"class":53}," useAuthTokens",[33,6125,2683],{"class":2155},[856,6127,6128],{},"html pre.shiki code .sJ14y, html code.shiki .sJ14y{--shiki-default:#C792EA}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":28,"searchDepth":50,"depth":50,"links":6130},[6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143],{"id":5108,"depth":50,"text":5109},{"id":5256,"depth":50,"text":5257},{"id":5403,"depth":50,"text":5404},{"id":5484,"depth":50,"text":5485},{"id":5552,"depth":50,"text":5553},{"id":5622,"depth":50,"text":5623},{"id":5692,"depth":50,"text":5693},{"id":5763,"depth":50,"text":5764},{"id":5847,"depth":50,"text":5848},{"id":5908,"depth":50,"text":5909},{"id":5978,"depth":50,"text":5979},{"id":6016,"depth":50,"text":6017},{"id":6067,"depth":50,"text":5398},"Reference for all WooNuxt composables",{},{"icon":6147},"i-lucide-puzzle","\u002Fconfiguration\u002Fcomposables",{"title":3124,"description":6144},"3.configuration\u002F2.composables","WcoLoKGBbsXUSkhzRx9477rZ7V6xKMdt6YSvwyVMGIQ",{"id":6153,"title":6154,"body":6155,"description":6602,"extension":876,"links":877,"meta":6603,"navigation":6604,"path":6606,"seo":6607,"stem":6608,"__hash__":6609},"docs\u002F3.configuration\u002F3.performance.md","Performance & ISR",{"type":7,"value":6156,"toc":6590},[6157,6164,6168,6171,6181,6185,6191,6267,6271,6276,6318,6326,6330,6340,6357,6361,6367,6371,6380,6388,6391,6395,6401,6456,6460,6463,6576,6587],[10,6158,6159,6160,6163],{},"WooNuxt is optimized for performance at every layer. For large catalogs, ",[409,6161,6162],{},"Incremental Static Regeneration (ISR)"," lets you cache product pages at the CDN edge while still serving fresh data.",[14,6165,6167],{"id":6166},"isr-incremental-static-regeneration","ISR (Incremental Static Regeneration)",[10,6169,6170],{},"ISR pre-renders pages on first request and caches them for a configurable TTL. Subsequent requests are served from cache — zero cold-start latency — until the TTL expires and the page is regenerated in the background.",[10,6172,6173,6174,6177,6178,6180],{},"This is ideal for catalogs with ",[409,6175,6176],{},"10,000+ products"," where full ",[30,6179,4788],{}," would take too long.",[536,6182,6184],{"id":6183},"which-routes-use-isr","Which Routes Use ISR",[10,6186,6187,6188,2145],{},"The following routes are ISR-enabled by default in ",[30,6189,6190],{},"woonuxt_base\u002Fnuxt.config.ts",[289,6192,6193,6203],{},[292,6194,6195],{},[295,6196,6197,6200],{},[298,6198,6199],{},"Route Pattern",[298,6201,6202],{},"Behavior",[308,6204,6205,6217,6228,6239,6251],{},[295,6206,6207,6212],{},[313,6208,6209],{},[30,6210,6211],{},"\u002Fproduct\u002F**",[313,6213,6214,6215],{},"ISR with ",[30,6216,355],{},[295,6218,6219,6224],{},[313,6220,6221],{},[30,6222,6223],{},"\u002Fproduct-category\u002F**",[313,6225,6214,6226],{},[30,6227,355],{},[295,6229,6230,6235],{},[313,6231,6232],{},[30,6233,6234],{},"\u002Fproducts",[313,6236,6214,6237],{},[30,6238,355],{},[295,6240,6241,6247],{},[313,6242,6243,6246],{},[30,6244,6245],{},"\u002Fproducts\u002F**"," (pagination)",[313,6248,6214,6249],{},[30,6250,355],{},[295,6252,6253,6261],{},[313,6254,6255,5675,6258],{},[30,6256,6257],{},"\u002Fcheckout",[30,6259,6260],{},"\u002Forder-summary",[313,6262,6263,6266],{},[30,6264,6265],{},"prerender: false"," (always live)",[536,6268,6270],{"id":6269},"configuring-isr-ttl","Configuring ISR TTL",[10,6272,4836,6273,6275],{},[30,6274,355],{}," in your environment variables (value in seconds):",[22,6277,6279],{"className":159,"code":6278,"filename":155,"language":161,"meta":28,"style":28},"# Cache product pages for 1 hour (default)\nCATALOG_ISR_TTL=3600\n\n# Cache for 24 hours (high-traffic stores with infrequent updates)\nCATALOG_ISR_TTL=86400\n\n# Cache for 5 minutes (stores with frequent price\u002Fstock changes)\nCATALOG_ISR_TTL=300\n",[30,6280,6281,6286,6290,6294,6299,6304,6308,6313],{"__ignoreMap":28},[33,6282,6283],{"class":35,"line":36},[33,6284,6285],{},"# Cache product pages for 1 hour (default)\n",[33,6287,6288],{"class":35,"line":50},[33,6289,236],{},[33,6291,6292],{"class":35,"line":86},[33,6293,90],{"emptyLinePlaceholder":89},[33,6295,6296],{"class":35,"line":93},[33,6297,6298],{},"# Cache for 24 hours (high-traffic stores with infrequent updates)\n",[33,6300,6301],{"class":35,"line":99},[33,6302,6303],{},"CATALOG_ISR_TTL=86400\n",[33,6305,6306],{"class":35,"line":107},[33,6307,90],{"emptyLinePlaceholder":89},[33,6309,6310],{"class":35,"line":112},[33,6311,6312],{},"# Cache for 5 minutes (stores with frequent price\u002Fstock changes)\n",[33,6314,6315],{"class":35,"line":118},[33,6316,6317],{},"CATALOG_ISR_TTL=300\n",[447,6319,6320],{},[10,6321,6322,6323,6325],{},"After updating a product in WooCommerce, the cache for that product's page will be stale until the TTL expires. Pair ISR with a ",[409,6324,3903],{}," (configured in WooNuxt Settings) to trigger a full rebuild on important changes.",[536,6327,6329],{"id":6328},"requirements","Requirements",[10,6331,6332,6333,6336,6337,6339],{},"ISR requires a ",[409,6334,6335],{},"server runtime"," — it does not work with pure static output (",[30,6338,4788],{},"). Deploy with:",[414,6341,6342,6345,6348],{},[417,6343,6344],{},"Netlify (serverless functions)",[417,6346,6347],{},"Vercel (edge functions)",[417,6349,6350,6351,6353,6354,364],{},"Node.js server (",[30,6352,4803],{}," + ",[30,6355,6356],{},"node .output\u002Fserver\u002Findex.mjs",[14,6358,6360],{"id":6359},"image-optimization","Image Optimization",[10,6362,2350,6363,6366],{},[30,6364,6365],{},"@nuxt\u002Fimage"," to automatically optimize WooCommerce product images.",[536,6368,6370],{"id":6369},"configure-allowed-domains","Configure Allowed Domains",[10,6372,6373,6374,6377,6378,2145],{},"You ",[409,6375,6376],{},"must"," list all image domains in ",[30,6379,330],{},[22,6381,6382],{"className":159,"code":4962,"filename":155,"language":161,"meta":28,"style":28},[30,6383,6384],{"__ignoreMap":28},[33,6385,6386],{"class":35,"line":36},[33,6387,4962],{},[10,6389,6390],{},"Multiple domains are comma-separated. Without this, images from those domains will not be optimized.",[536,6392,6394],{"id":6393},"netlify-image-cdn","Netlify Image CDN",[10,6396,6397,6398,6400],{},"When deploying to Netlify, ",[30,6399,6365],{}," automatically uses Netlify's Image CDN. The base config already ignores Netlify CDN URLs during prerendering to avoid double-optimization:",[22,6402,6404],{"className":2376,"code":6403,"language":2378,"meta":28,"style":28},"\u002F\u002F Already configured in woonuxt_base\u002Fnuxt.config.ts\nnitro: {\n  prerender: {\n    ignore: ['\u002F_netlify\u002Fimages']\n  }\n}\n",[30,6405,6406,6411,6420,6429,6448,6452],{"__ignoreMap":28},[33,6407,6408],{"class":35,"line":36},[33,6409,6410],{"class":74},"\u002F\u002F Already configured in woonuxt_base\u002Fnuxt.config.ts\n",[33,6412,6413,6416,6418],{"class":35,"line":50},[33,6414,6415],{"class":39},"nitro",[33,6417,2145],{"class":2158},[33,6419,2781],{"class":2158},[33,6421,6422,6425,6427],{"class":35,"line":86},[33,6423,6424],{"class":39},"  prerender",[33,6426,2145],{"class":2158},[33,6428,2781],{"class":2158},[33,6430,6431,6434,6436,6438,6440,6443,6445],{"class":35,"line":93},[33,6432,6433],{"class":39},"    ignore",[33,6435,2145],{"class":2158},[33,6437,2409],{"class":2403},[33,6439,2412],{"class":2158},[33,6441,6442],{"class":43},"\u002F_netlify\u002Fimages",[33,6444,2412],{"class":2158},[33,6446,6447],{"class":2403},"]\n",[33,6449,6450],{"class":35,"line":99},[33,6451,2044],{"class":2158},[33,6453,6454],{"class":35,"line":107},[33,6455,2068],{"class":2158},[14,6457,6459],{"id":6458},"build-performance","Build Performance",[10,6461,6462],{},"For SSG builds with large catalogs:",[22,6464,6466],{"className":2376,"code":6465,"filename":2372,"language":2378,"meta":28,"style":28},"export default defineNuxtConfig({\n  extends: ['.\u002Fwoonuxt_base'],\n  nitro: {\n    prerender: {\n      concurrency: 10,    \u002F\u002F Pages prerendered in parallel (default)\n      interval: 1000,     \u002F\u002F ms between batches (avoids WordPress rate limits)\n      failOnError: false, \u002F\u002F Continue build if a product page fails\n    },\n  },\n})\n",[30,6467,6468,6480,6498,6507,6516,6531,6546,6562,6566,6570],{"__ignoreMap":28},[33,6469,6470,6472,6474,6476,6478],{"class":35,"line":36},[33,6471,2386],{"class":2385},[33,6473,2389],{"class":2385},[33,6475,2392],{"class":53},[33,6477,2395],{"class":2155},[33,6479,2398],{"class":2158},[33,6481,6482,6484,6486,6488,6490,6492,6494,6496],{"class":35,"line":50},[33,6483,2404],{"class":2403},[33,6485,2145],{"class":2158},[33,6487,2409],{"class":2155},[33,6489,2412],{"class":2158},[33,6491,2415],{"class":43},[33,6493,2412],{"class":2158},[33,6495,2420],{"class":2155},[33,6497,2423],{"class":2158},[33,6499,6500,6503,6505],{"class":35,"line":86},[33,6501,6502],{"class":2403},"  nitro",[33,6504,2145],{"class":2158},[33,6506,2781],{"class":2158},[33,6508,6509,6512,6514],{"class":35,"line":93},[33,6510,6511],{"class":2403},"    prerender",[33,6513,2145],{"class":2158},[33,6515,2781],{"class":2158},[33,6517,6518,6521,6523,6526,6528],{"class":35,"line":99},[33,6519,6520],{"class":2403},"      concurrency",[33,6522,2145],{"class":2158},[33,6524,6525],{"class":2970}," 10",[33,6527,3052],{"class":2158},[33,6529,6530],{"class":74},"    \u002F\u002F Pages prerendered in parallel (default)\n",[33,6532,6533,6536,6538,6541,6543],{"class":35,"line":107},[33,6534,6535],{"class":2403},"      interval",[33,6537,2145],{"class":2158},[33,6539,6540],{"class":2970}," 1000",[33,6542,3052],{"class":2158},[33,6544,6545],{"class":74},"     \u002F\u002F ms between batches (avoids WordPress rate limits)\n",[33,6547,6548,6551,6553,6557,6559],{"class":35,"line":112},[33,6549,6550],{"class":2403},"      failOnError",[33,6552,2145],{"class":2158},[33,6554,6556],{"class":6555},"sbqyR"," false",[33,6558,3052],{"class":2158},[33,6560,6561],{"class":74}," \u002F\u002F Continue build if a product page fails\n",[33,6563,6564],{"class":35,"line":118},[33,6565,2978],{"class":2158},[33,6567,6568],{"class":35,"line":204},[33,6569,2983],{"class":2158},[33,6571,6572,6574],{"class":35,"line":210},[33,6573,2433],{"class":2158},[33,6575,2436],{"class":2155},[10,6577,6578,6579,6582,6583,6586],{},"Increase ",[30,6580,6581],{},"concurrency"," if your WordPress server can handle more parallel requests. Lower ",[30,6584,6585],{},"interval"," if you hit WordPress rate limiting.",[856,6588,6589],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .saEQR, html code.shiki .saEQR{--shiki-default:#676E95;--shiki-default-font-style:italic}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .s-wAU, html code.shiki .s-wAU{--shiki-default:#F07178}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .s6cf3, html code.shiki .s6cf3{--shiki-default:#89DDFF;--shiki-default-font-style:italic}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html pre.shiki code .sbqyR, html code.shiki .sbqyR{--shiki-default:#FF9CAC}",{"title":28,"searchDepth":50,"depth":50,"links":6591},[6592,6597,6601],{"id":6166,"depth":50,"text":6167,"children":6593},[6594,6595,6596],{"id":6183,"depth":86,"text":6184},{"id":6269,"depth":86,"text":6270},{"id":6328,"depth":86,"text":6329},{"id":6359,"depth":50,"text":6360,"children":6598},[6599,6600],{"id":6369,"depth":86,"text":6370},{"id":6393,"depth":86,"text":6394},{"id":6458,"depth":50,"text":6459},"Caching strategies and ISR configuration for large WooCommerce catalogs",{},{"icon":6605},"i-lucide-gauge","\u002Fconfiguration\u002Fperformance",{"title":6154,"description":6602},"3.configuration\u002F3.performance","EHr8AwBtr_HQhcZ4dXHtInQnYWGIW4xjZ3gQcGOOYMA",1777753060702]