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