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