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