Skip to main content

Insights & Articles

Insights, tutorials, and thoughts on web development, technology, and more.

Latest

Stay updated with the latest trends and insights in web development.

Dokploy deployment architecture showing Laravel backend and Nuxt frontend services with Traefik proxy and Let's Encrypt SSL

Deploying Laravel + Nuxt with Dokploy: Production Setup Guide

A complete guide to deploying Laravel backend and Nuxt frontend using Dokploy, covering Docker Compose, domains, environment variables, DNS, HTTPS, and Traefik routing.

Friday, July 3, 2026
Read More
gem-team v1.75.0 - Pre-Flight Verification, A11y Audits & Agent Quality Gates

gem-team v1.75.0 - Pre-Flight Verification, A11y Audits & Agent Quality Gates

gem-team v1.75.0 introduces pre-flight verification steps, visual diff thresholds, accessibility audit levels, and major agent workflow improvements including Devil's Advocate, Differential Diagnosis, and Hypothesis-driven planning.

Gem TeamAI Agents
Monday, June 22, 2026
Read More
Hybrid backend architecture showing Laravel orchestration layer connecting to AI agent systems via queues and API gateway

Laravel + AI Agent Systems: Building Hybrid Backends in 2026

Laravel as the orchestration backend for AI agents - queue-driven execution, API gateway for LLM systems, and real-world SaaS architecture patterns.

LaravelAI
Tuesday, May 26, 2026
Read More
Multi-agent memory architecture showing short-term context, persistent state store, and vector retrieval layers

Multi-Agent Memory Systems: What Actually Works in Production

Memory is the hardest part of AI systems - not reasoning. Here's what actually works for multi-agent memory in production: structured state, controlled injection, lifecycle management.

AIMemory Systems
Thursday, May 21, 2026
Read More
Async-first engineering workflow showing written specs, GitHub issues, and structured delivery process

Async-First Engineering in 2026: Why I Avoid Most Technical Calls

Senior engineering work is increasingly async-first. Written specs, GitHub workflows, and structured delivery beat discovery calls and sync meetings.

Async-FirstRemote Work
Saturday, May 16, 2026
Read More
Execution system architecture showing flow design, state management, and task decomposition layers

I Stopped Building Features First - I Now Design Execution Systems First

Feature-first development leads to technical debt. Designing execution systems first - flows, state, task decomposition - produces better software with less rework.

ArchitectureSoftware Design
Monday, May 11, 2026
Read More
Gem Team v1.20.0 - marketplace integration, APM structure, and enhanced installation experience

Gem Team v1.20.0: Marketplace Integration, APM Structure, and Enhanced Install Experience

A deep dive into the latest Gem Team release featuring marketplace support for multiple AI tools, APM-compatible structure, simplified installation, and improved developer experience.

AIGem Team
Saturday, May 9, 2026
Read More
DAG execution graph showing parallel agent waves with dependency resolution and branch merging

DAG-Based AI Orchestration: Why Linear Agent Pipelines Break at Scale

Linear pipelines don't scale for real-world AI workloads. Here's why DAG-based orchestration beats sequential chains for production agent systems.

AIDAG
Wednesday, May 6, 2026
Read More
Production AI agent architecture - orchestration layer with DAG execution, routing, and specialist agents

Production-Grade AI Agents Are Not Prompts - They Are Systems

Most 2026 agent frameworks are still demo-level. Real production agents require orchestration layers, not prompt chains. Here's what separates toy agents from systems that ship.

AIAgents
Friday, May 1, 2026
Read More
Gem Team Orchestrator - AI workflow orchestration with phase detection, agent routing, and wave-based execution

Introducing gem-orchestrator: The Team Lead Your AI Development Workflow Has Been Waiting For

gem-orchestrator is the central intelligence of the Gem Team framework - automatically choosing the right workflow, routing tasks to specialized agents, and keeping every decision traceable to your original goal. Here's what makes it different.

AIGem Team
Wednesday, April 8, 2026
Read More
React Compiler End of Manual Memoization - React logo with automatic gear symbols and optimization icons on purple-blue gradient background

React Compiler and the End of Manual Memoization

Explore how the React Compiler is revolutionizing React development in 2026 by automating memoization, eliminating performance pitfalls, and changing best practices forever.

ReactPerformance
Friday, March 13, 2026
Read More
Core Web Vitals 2026 Optimization - Speed metrics dashboard with green checkmarks and performance graphs on blue-green gradient background

Core Web Vitals 2026: Performance Optimization Strategies

Master the latest Core Web Vitals metrics and learn proven optimization strategies to deliver lightning-fast web experiences that rank higher and convert better in 2026.

PerformanceCore Web Vitals
Tuesday, March 10, 2026
Read More
Edge Computing and Serverless Future - Global network with connected nodes and cloud symbols on blue-purple gradient background

Edge Computing and Serverless: The Future of Web Deployment

Learn how edge computing and serverless architectures are revolutionizing web deployment in 2026, delivering unprecedented performance and scalability for modern applications.

Edge ComputingServerless
Saturday, March 7, 2026
Read More
TypeScript 2026 New Features - Blue TypeScript logo with futuristic code symbols and type annotations on dark gradient background

TypeScript 2026: New Features Every Developer Should Know

Discover the groundbreaking TypeScript features released in 2026 that are changing how we write type-safe code, from enhanced inference to revolutionary module resolution.

TypeScriptJavaScript
Wednesday, March 4, 2026
Read More
AI-Powered Development Tools 2026 - Futuristic brain with circuit patterns and code symbols on purple-blue gradient background

AI-Powered Development Tools in 2026: A Complete Guide

Explore the AI-first development tools transforming how we build software in 2026, from intelligent code completion to automated testing and deployment.

AIDeveloper Tools
Sunday, March 1, 2026
Read More
Nuxt 3 to Nuxt 4 Migration Guide - Upgrade path diagram with before and after code examples

Nuxt 3 to Nuxt 4 Migration Guide: Complete Checklist for 2026

Step-by-step guide to migrate from Nuxt 3 to Nuxt 4 before January 2026 EOL. Includes codemod tools, breaking changes, module compatibility, and troubleshooting.

NuxtVue
Wednesday, February 25, 2026
Read More
AI Search Engine Optimization - Developer blog content being cited by ChatGPT, Gemini, and Perplexity

AI SEO for Developer Blogs: Get Cited by ChatGPT, Gemini & Perplexity in 2026

Complete guide to AI Search Engine Optimization (AISEO) for developer blogs. Learn how to optimize content for citations in ChatGPT, Google AI Overviews, Gemini, and Perplexity.

SEOAI
Wednesday, February 25, 2026
Read More
AI-First Development 2026 - Futuristic AI brain with code streams and neural networks on dark blue gradient

AI-First Development: Building the Future of Software in 2026

Discover how AI-first development is revolutionizing software creation in 2026, from autonomous agents to intelligent code generation and beyond.

AIDevelopment
Wednesday, February 25, 2026
Read More
WebAssembly 2026 Performance - Speed and performance visualization with Wasm logo on purple gradient

WebAssembly in 2026: The Performance Revolution

Explore how WebAssembly is revolutionizing web performance in 2026, enabling near-native speed for web applications and opening new possibilities.

WebAssemblyPerformance
Tuesday, February 24, 2026
Read More
Meta-Frameworks 2026 - Modern framework logos connected in network on dark gradient background

Meta-Frameworks in 2026: The New Default for Web Development

Discover why meta-frameworks like Next.js, Nuxt, and SvelteKit have become the default choice for web development in 2026.

Meta-FrameworksNext.js
Monday, February 23, 2026
Read More
Nuxt 4 SSR Performance Optimization - Lightning-fast page loads with speedometer and lightning bolt icons on green gradient background

Nuxt 4 SSR Performance Optimization: Complete Guide to Core Web Vitals

Master Nuxt 4 SSR performance with proven strategies for Core Web Vitals optimization. Learn caching, data fetching, hybrid rendering, and monitoring for lightning-fast page loads.

NuxtVue.js
Sunday, February 22, 2026
Read More
End-to-End Type Safety - Connected type chain from database to frontend on blue gradient

End-to-End Type Safety: The Complete Guide for 2026

Master end-to-end type safety in 2026 with TypeScript, Zod, and modern tools that eliminate runtime errors across your entire stack.

TypeScriptType Safety
Sunday, February 22, 2026
Read More
Edge Computing Serverless 2026 - Global network with edge nodes and cloud connections on dark blue

Edge Computing & Serverless in 2026: The Complete Guide

Master edge computing and serverless architectures in 2026 with practical examples, performance optimizations, and real-world deployment strategies.

Edge ComputingServerless
Saturday, February 21, 2026
Read More
Design Tokens Tailwind v4 - Color palette and typography tokens on gradient background

Design Tokens & Tailwind v4: The Complete Guide

Master design tokens and Tailwind CSS v4 in 2026 with practical examples for building scalable, maintainable design systems.

Design TokensTailwind CSS
Friday, February 20, 2026
Read More
AI SEO 2026 Guide - Search optimization with AI brain and graph charts on gradient

AI-Powered SEO in 2026: Complete Developer's Guide

Master AI-powered SEO techniques for 2026 including schema markup, Core Web Vitals optimization, and AI search visibility strategies.

SEOAI
Thursday, February 19, 2026
Read More
Web Accessibility WCAG 2026 - Accessibility symbols and inclusive design icons on blue gradient

Web Accessibility WCAG 2026: Complete Compliance Guide

Master web accessibility in 2026 with WCAG 2.2 guidelines, practical implementation examples, and automated testing strategies.

AccessibilityWCAG
Wednesday, February 18, 2026
Read More
React Compiler Auto-Memoization - React logo with automatic optimization gears on purple gradient

React Compiler & Auto-Memoization: End of Manual Optimization

Discover how React Compiler in 2026 eliminates manual memoization with automatic optimization, making React apps faster with less code.

ReactPerformance
Tuesday, February 17, 2026
Read More
Full Stack Development 2026 - Complete tech stack visualization with frontend, backend, and database

Full-Stack Development in 2026: Complete Roadmap

Master full-stack development in 2026 with this comprehensive roadmap covering modern frameworks, tools, and best practices.

Full-StackCareer
Monday, February 16, 2026
Read More
Advanced TypeScript patterns code examples

Advanced TypeScript Patterns for Enterprise Applications

Master advanced TypeScript patterns including conditional types, template literals, and design patterns for building robust enterprise applications.

TypeScriptAdvanced Patterns
Saturday, February 22, 2025
Read More
Introducing the gem-team Repository

Introducing the gem-team Repository

Discover how the gem-team repository enhances AI development workflows with powerful tools and best practices.

CopilotAI
Friday, February 14, 2025
Read More
Vue 3 Composition API: Best Practices for Modern Development

Vue 3 Composition API: Best Practices for Modern Development

Discover the most effective patterns and practices for using Vue 3's Composition API in production applications.

Vue.jsJavaScript
Thursday, December 12, 2024
Read More
Getting Started with Full Stack Development

Getting Started with Full Stack Development

Master full stack development with Node.js and Vue.js. Learn project structuring, environment setup, and best practices for building scalable web applications.

Node.jsVue.js
Tuesday, November 19, 2024
Read More
Screenshot of VSCode with Minimal Mist theme in dark mode

My VSCode Setup | Blog

Discover my minimalist VSCode setup with the Minimal Mist theme and custom settings for a distraction-free, accessible coding environment.

VSCodeProductivity
Wednesday, July 17, 2024
Read More
Code editor with mountain landscape - Starting a tech blog journey

My First Blog Post | Blog

Welcome to my tech blog! Learn why I started blogging, what topics I cover, and how you can connect with me and the developer community.

Web DevelopmentFreelancing
Tuesday, July 16, 2024
Read More
Docker microservices architecture diagram

Docker and Microservices Deployment - Production-Ready Strategies

Master Docker containerization and microservices deployment with Kubernetes, monitoring, and CI/CD pipelines for scalable applications.

DockerMicroservices
Tuesday, June 18, 2024
Read More
Next.js 14 App Router architecture diagram

Next.js 14 App Router Complete Guide - Server Components and Beyond

Master Next.js 14 App Router with Server Components, streaming, caching strategies, and migration patterns for modern React applications.

Next.jsReact
Wednesday, April 10, 2024
Read More
Modern JavaScript ES2024 features code examples

Modern JavaScript ES2024 Features Every Developer Should Know

Explore the latest JavaScript ES2024 features including temporal API, decorators, and pattern matching that are revolutionizing modern web development.

JavaScriptES2024
Friday, March 15, 2024
Read More
GraphQL API architecture and design patterns

GraphQL API Design Patterns - Building Scalable and Efficient APIs

Master GraphQL API design with advanced patterns, performance optimization, security best practices, and real-world implementation strategies.

GraphQLAPI Design
Friday, March 8, 2024
Read More
TypeScript + Node.js in Production: A Complete Guide

TypeScript + Node.js in Production: A Complete Guide

Learn how to build, deploy, and maintain TypeScript Node.js applications in production environments with best practices and real-world examples.

TypeScriptNode.js
Wednesday, February 28, 2024
Read More
React Server Components architecture diagram

React Server Components Deep Dive - The Future of React Architecture

Master React Server Components with practical examples, performance benefits, and migration strategies for modern web applications.

ReactServer Components
Wednesday, February 28, 2024
Read More
Web performance optimization metrics dashboard

Web Performance Optimization in 2024 - Complete Guide to Core Web Vitals

Master modern web performance optimization techniques, Core Web Vitals improvements, and advanced strategies for lightning-fast websites in 2024.

PerformanceWeb Vitals
Saturday, January 20, 2024
Read More
CSS Grid and Flexbox layout examples

CSS Grid and Flexbox Mastery - Modern Layout Techniques

Master CSS Grid and Flexbox with practical examples, responsive design patterns, and advanced layout techniques for modern web development.

CSSGrid
Friday, January 12, 2024
Read More
Kickstart Your Browser Extension Development

Kickstart Your Browser Extension Development

description: Quickly start building browser extensions with Vite, Vue 3, and Manifest V3. Discover a feature-rich, accessible starter template for modern web extension development. headline: Kickstart Your Browser Extension Development with Vite, Vue 3, and Manifest V3 abstract: Our template is pre-packed with essential features, making it easier for you to focus on developing your extension rather than setting up the environment. date: 2024-08-13T12:00:00.000Z dateUpdated: 2024-08-13T12:00:00.000Z author: Muhammad Ubaid Raza authorUrl: / featured: true tags:

Read More

Full-stack engineer leading teams to build scalable systems & tools, with solid DevOps expertise.

Muhammad Ubaid R.

\n",[118,28993,28994,28999,29017,29025,29040,29055,29070,29085,29100,29106,29110,29116,29125,29140,29155,29170,29181,29190,29205,29218,29222,29230,29239,29254,29267,29273,29277],{"__ignoreMap":196},[200,28995,28996],{"class":202,"line":203},[200,28997,28998],{"class":555},"// app/pages/blog/[...slug].vue\n",[200,29000,29001,29003,29006,29008,29010,29013,29015],{"class":202,"line":214},[200,29002,10416],{"class":210},[200,29004,29005],{"class":317},"script setup lang",[200,29007,4280],{"class":210},[200,29009,1093],{"class":210},[200,29011,29012],{"class":286},"ts",[200,29014,1093],{"class":210},[200,29016,10425],{"class":210},[200,29018,29019,29021,29023],{"class":202,"line":16},[200,29020,28987],{"class":923},[200,29022,6268],{"class":317},[200,29024,388],{"class":210},[200,29026,29027,29030,29032,29034,29036,29038],{"class":202,"line":229},[200,29028,29029],{"class":206}," title",[200,29031,283],{"class":210},[200,29033,1969],{"class":210},[200,29035,28087],{"class":286},[200,29037,1983],{"class":210},[200,29039,2455],{"class":210},[200,29041,29042,29044,29046,29048,29051,29053],{"class":202,"line":237},[200,29043,18295],{"class":206},[200,29045,283],{"class":210},[200,29047,1969],{"class":210},[200,29049,29050],{"class":286},"Step-by-step guide...",[200,29052,1983],{"class":210},[200,29054,2455],{"class":210},[200,29056,29057,29060,29062,29064,29066,29068],{"class":202,"line":245},[200,29058,29059],{"class":206}," ogTitle",[200,29061,283],{"class":210},[200,29063,1969],{"class":210},[200,29065,28087],{"class":286},[200,29067,1983],{"class":210},[200,29069,2455],{"class":210},[200,29071,29072,29075,29077,29079,29081,29083],{"class":202,"line":253},[200,29073,29074],{"class":206}," ogDescription",[200,29076,283],{"class":210},[200,29078,1969],{"class":210},[200,29080,29050],{"class":286},[200,29082,1983],{"class":210},[200,29084,2455],{"class":210},[200,29086,29087,29090,29092,29094,29097],{"class":202,"line":261},[200,29088,29089],{"class":206}," twitterCard",[200,29091,283],{"class":210},[200,29093,1969],{"class":210},[200,29095,29096],{"class":286},"summary_large_image",[200,29098,29099],{"class":210},"'\n",[200,29101,29102,29104],{"class":202,"line":269},[200,29103,21331],{"class":210},[200,29105,4304],{"class":317},[200,29107,29108],{"class":202,"line":277},[200,29109,376],{"emptyLinePlaceholder":375},[200,29111,29112,29114],{"class":202,"line":417},[200,29113,28984],{"class":923},[200,29115,6690],{"class":317},[200,29117,29118,29121,29123],{"class":202,"line":422},[200,29119,29120],{"class":923}," defineTechArticle",[200,29122,6268],{"class":317},[200,29124,388],{"class":210},[200,29126,29127,29130,29132,29134,29136,29138],{"class":202,"line":29},[200,29128,29129],{"class":206}," headline",[200,29131,283],{"class":210},[200,29133,1969],{"class":210},[200,29135,28087],{"class":286},[200,29137,1983],{"class":210},[200,29139,2455],{"class":210},[200,29141,29142,29145,29147,29149,29151,29153],{"class":202,"line":445},[200,29143,29144],{"class":206}," datePublished",[200,29146,283],{"class":210},[200,29148,1969],{"class":210},[200,29150,27377],{"class":286},[200,29152,1983],{"class":210},[200,29154,2455],{"class":210},[200,29156,29157,29160,29162,29164,29166,29168],{"class":202,"line":455},[200,29158,29159],{"class":206}," dateModified",[200,29161,283],{"class":210},[200,29163,1969],{"class":210},[200,29165,27377],{"class":286},[200,29167,1983],{"class":210},[200,29169,2455],{"class":210},[200,29171,29172,29175,29177,29179],{"class":202,"line":466},[200,29173,29174],{"class":206}," wordCount",[200,29176,283],{"class":210},[200,29178,28235],{"class":326},[200,29180,2455],{"class":210},[200,29182,29183,29186,29188],{"class":202,"line":482},[200,29184,29185],{"class":206}," author",[200,29187,283],{"class":210},[200,29189,318],{"class":210},[200,29191,29192,29195,29197,29199,29201,29203],{"class":202,"line":493},[200,29193,29194],{"class":206}," name",[200,29196,283],{"class":210},[200,29198,1969],{"class":210},[200,29200,28157],{"class":286},[200,29202,1983],{"class":210},[200,29204,2455],{"class":210},[200,29206,29207,29210,29212,29214,29216],{"class":202,"line":498},[200,29208,29209],{"class":206}," url",[200,29211,283],{"class":210},[200,29213,1969],{"class":210},[200,29215,28177],{"class":286},[200,29217,29099],{"class":210},[200,29219,29220],{"class":202,"line":503},[200,29221,414],{"class":210},[200,29223,29224,29226,29228],{"class":202,"line":515},[200,29225,13682],{"class":210},[200,29227,5072],{"class":317},[200,29229,2455],{"class":210},[200,29231,29232,29235,29237],{"class":202,"line":521},[200,29233,29234],{"class":923}," defineOrganization",[200,29236,6268],{"class":317},[200,29238,388],{"class":210},[200,29240,29241,29244,29246,29248,29250,29252],{"class":202,"line":526},[200,29242,29243],{"class":206}," name",[200,29245,283],{"class":210},[200,29247,1969],{"class":210},[200,29249,28390],{"class":286},[200,29251,1983],{"class":210},[200,29253,2455],{"class":210},[200,29255,29256,29259,29261,29263,29265],{"class":202,"line":687},[200,29257,29258],{"class":206}," url",[200,29260,283],{"class":210},[200,29262,1969],{"class":210},[200,29264,28177],{"class":286},[200,29266,29099],{"class":210},[200,29268,29269,29271],{"class":202,"line":693},[200,29270,13682],{"class":210},[200,29272,4304],{"class":317},[200,29274,29275],{"class":202,"line":699},[200,29276,9054],{"class":317},[200,29278,29279,29281,29283],{"class":202,"line":704},[200,29280,22205],{"class":210},[200,29282,22507],{"class":317},[200,29284,10425],{"class":210},[5291,29286],{},[100,29288,29290],{"id":29289},"content-freshness-signals","Content Freshness Signals",[104,29292,29293,29294,29297],{},"AI systems show a ",[137,29295,29296],{},"26% recency bias",", preferring content that's regularly updated.",[123,29299,29301],{"id":29300},"add-visible-update-signals","Add Visible Update Signals",[104,29303,29304],{},[137,29305,27857],{},[191,29307,29309],{"className":11683,"code":29308,"language":11685,"meta":196,"style":196},"**Last updated:** February 2026\n\n**What changed in this update:**\n\n- Added migration timeline reminder (Nuxt 3 EOL: January 31, 2026)\n- Updated codemod tool instructions\n- Added new module compatibility matrix\n- Expanded troubleshooting section\n",[118,29310,29311,29316,29320,29325,29329,29334,29339,29344],{"__ignoreMap":196},[200,29312,29313],{"class":202,"line":203},[200,29314,29315],{},"**Last updated:** February 2026\n",[200,29317,29318],{"class":202,"line":214},[200,29319,376],{"emptyLinePlaceholder":375},[200,29321,29322],{"class":202,"line":16},[200,29323,29324],{},"**What changed in this update:**\n",[200,29326,29327],{"class":202,"line":229},[200,29328,376],{"emptyLinePlaceholder":375},[200,29330,29331],{"class":202,"line":237},[200,29332,29333],{},"- Added migration timeline reminder (Nuxt 3 EOL: January 31, 2026)\n",[200,29335,29336],{"class":202,"line":245},[200,29337,29338],{},"- Updated codemod tool instructions\n",[200,29340,29341],{"class":202,"line":253},[200,29342,29343],{},"- Added new module compatibility matrix\n",[200,29345,29346],{"class":202,"line":261},[200,29347,29348],{},"- Expanded troubleshooting section\n",[123,29350,29352],{"id":29351},"update-frontmatter","Update Frontmatter",[191,29354,29356],{"className":193,"code":29355,"language":195,"meta":196,"style":196},"---\ndate: 2026-01-15\ndateUpdated: 2026-02-25 # Critical for AI\n---\n",[118,29357,29358,29362,29371,29384],{"__ignoreMap":196},[200,29359,29360],{"class":202,"line":203},[200,29361,11692],{"class":384},[200,29363,29364,29366,29368],{"class":202,"line":214},[200,29365,4298],{"class":206},[200,29367,283],{"class":210},[200,29369,29370],{"class":317}," 2026-01-15\n",[200,29372,29373,29376,29378,29381],{"class":202,"line":16},[200,29374,29375],{"class":206},"dateUpdated",[200,29377,283],{"class":210},[200,29379,29380],{"class":317}," 2026-02-25 ",[200,29382,29383],{"class":555},"# Critical for AI\n",[200,29385,29386],{"class":202,"line":229},[200,29387,11692],{"class":384},[123,29389,29391],{"id":29390},"content-maintenance-schedule","Content Maintenance Schedule",[131,29393,29394,29400,29406],{},[134,29395,29396,29399],{},[137,29397,29398],{},"Monthly",": Review top 10 posts for accuracy",[134,29401,29402,29405],{},[137,29403,29404],{},"Quarterly",": Update statistics, code examples, dependencies",[134,29407,29408,29411],{},[137,29409,29410],{},"When frameworks update",": Immediately revise affected posts",[5291,29413],{},[100,29415,29417],{"id":29416},"entity-based-authority-building","Entity-Based Authority Building",[104,29419,29420,29421,29424],{},"AI systems model your ",[137,29422,29423],{},"brand as an entity",". Clear, consistent entity definition improves citation likelihood.",[123,29426,29428],{"id":29427},"build-entity-signals","Build Entity Signals",[3806,29430,29431,29437,29443,29449,29455],{},[134,29432,29433,29436],{},[137,29434,29435],{},"Consistent branding",": Same name, logo, description across platforms",[134,29438,29439,29442],{},[137,29440,29441],{},"Author profiles",": Clear authorship with bio and credentials",[134,29444,29445,29448],{},[137,29446,29447],{},"Social proof",": Links to GitHub, Twitter, LinkedIn",[134,29450,29451,29454],{},[137,29452,29453],{},"Citations",": Get mentioned by other authoritative sites",[134,29456,29457,29460],{},[137,29458,29459],{},"Topic clusters",": Demonstrate deep expertise in specific areas",[123,29462,29464],{"id":29463},"example-entity-structure","Example Entity Structure",[191,29466,29469],{"className":29467,"code":29468,"language":5853},[5851],"Your Brand (Organization)\n├── You (Person/Author)\n│ ├── Expertise: Nuxt, Vue, TypeScript\n│ ├── Social: Twitter, GitHub, LinkedIn\n│ └── Publications: Your blog, guest posts\n├── Content Topics\n│ ├── Nuxt Tutorials (pillar)\n│ ├── Vue Best Practices (cluster)\n│ └── TypeScript Guides (cluster)\n└── Brand Mentions\n ├── Other blogs citing you\n ├── Conference talks\n └── Open source contributions\n",[118,29470,29468],{"__ignoreMap":196},[5291,29472],{},[100,29474,29476],{"id":29475},"topic-clusters-for-topical-authority","Topic Clusters for Topical Authority",[104,29478,29479,29480,29483],{},"AI systems prioritize sites demonstrating ",[137,29481,29482],{},"topical depth"," over broad, shallow content.",[123,29485,29487],{"id":29486},"build-topic-clusters","Build Topic Clusters",[104,29489,29490,29493,29494,29497],{},[137,29491,29492],{},"Pillar Page",": Comprehensive guide covering core topic\n",[137,29495,29496],{},"Cluster Content",": 5-10 supporting articles diving into subtopics",[104,29499,29500],{},[137,29501,29502],{},"Example: Nuxt 4 Topic Cluster",[191,29504,29507],{"className":29505,"code":29506,"language":5853},[5851],"Pillar: \"Nuxt 4 Complete Guide\"\n├─ Cluster 1: Nuxt 3 to Nuxt 4 Migration\n├─ Cluster 2: Nuxt 4 Performance Optimization\n├─ Cluster 3: Nuxt UI v4 Components\n├─ Cluster 4: Nuxt 4 + TypeScript Best Practices\n├─ Cluster 5: Nuxt 4 Edge Deployment\n├─ Cluster 6: Nuxt 4 Data Fetching Patterns\n└─ Cluster 7: Nuxt 4 SEO Guide\n",[118,29508,29506],{"__ignoreMap":196},[123,29510,29512],{"id":29511},"internal-linking-strategy","Internal Linking Strategy",[104,29514,29515],{},"Link cluster posts to pillar and to each other:",[191,29517,29519],{"className":11683,"code":29518,"language":11685,"meta":196,"style":196},"\n\nFor performance tips, see our [Nuxt 4 Performance Guide](/blog/nuxt-4-performance).\n\n\n\nBefore optimizing, ensure you've [migrated to Nuxt 4](/blog/nuxt-4-migration).\n",[118,29520,29521,29526,29530,29535,29539,29544,29548],{"__ignoreMap":196},[200,29522,29523],{"class":202,"line":203},[200,29524,29525],{},"\n",[200,29527,29528],{"class":202,"line":214},[200,29529,376],{"emptyLinePlaceholder":375},[200,29531,29532],{"class":202,"line":16},[200,29533,29534],{},"For performance tips, see our [Nuxt 4 Performance Guide](/blog/nuxt-4-performance).\n",[200,29536,29537],{"class":202,"line":229},[200,29538,376],{"emptyLinePlaceholder":375},[200,29540,29541],{"class":202,"line":237},[200,29542,29543],{},"\n",[200,29545,29546],{"class":202,"line":245},[200,29547,376],{"emptyLinePlaceholder":375},[200,29549,29550],{"class":202,"line":253},[200,29551,29552],{},"Before optimizing, ensure you've [migrated to Nuxt 4](/blog/nuxt-4-migration).\n",[5291,29554],{},[100,29556,29558],{"id":29557},"measuring-ai-visibility","Measuring AI Visibility",[123,29560,29562],{"id":29561},"manual-testing","Manual Testing",[104,29564,29565],{},"Regularly test your content in AI platforms:",[3806,29567,29568,29573,29578,29583],{},[134,29569,29570,29572],{},[137,29571,27460],{},": Ask questions related to your content",[134,29574,29575,29577],{},[137,29576,27478],{},": Test same queries",[134,29579,29580,29582],{},[137,29581,27466],{},": Check if your posts are cited",[134,29584,29585,29587],{},[137,29586,27472],{},": Search and check AI-generated answers",[104,29589,29590],{},[137,29591,29592],{},"Example queries to test:",[131,29594,29595,29597,29600],{},[134,29596,27497],{},[134,29598,29599],{},"\"Best Nuxt 4 performance optimization techniques\"",[134,29601,29602],{},"\"Nuxt UI vs Tailwind CSS\"",[123,29604,29606],{"id":29605},"ai-visibility-tools","AI Visibility Tools",[131,29608,29609,29619,29624],{},[134,29610,29611,29618],{},[137,29612,29613],{},[5667,29614,29617],{"href":29615,"rel":29616},"https://www.amivisibleonai.com/",[5671],"Am I Visible on AI?",": Free AI visibility checker",[134,29620,29621,29623],{},[137,29622,27466],{},": Search and check citations",[134,29625,29626,29629],{},[137,29627,29628],{},"Bing Webmaster",": Monitor indexing",[123,29631,29633],{"id":29632},"metrics-to-track","Metrics to Track",[5343,29635,29636,29648],{},[5346,29637,29638],{},[5349,29639,29640,29642,29645],{},[5352,29641,27048],{},[5352,29643,29644],{},"Tool",[5352,29646,29647],{},"Target",[5363,29649,29650,29660,29671,29681],{},[5349,29651,29652,29654,29657],{},[5368,29653,27587],{},[5368,29655,29656],{},"Manual testing",[5368,29658,29659],{},"Increasing",[5349,29661,29662,29665,29668],{},[5368,29663,29664],{},"AI referral traffic",[5368,29666,29667],{},"Analytics",[5368,29669,29670],{},"5-10% of total",[5349,29672,29673,29676,29678],{},[5368,29674,29675],{},"Bounce rate (AI traffic)",[5368,29677,29667],{},[5368,29679,29680],{},"<40%",[5349,29682,29683,29686,29688],{},[5368,29684,29685],{},"Time on page (AI traffic)",[5368,29687,29667],{},[5368,29689,29690],{},">3 minutes",[5291,29692],{},[100,29694,29696],{"id":29695},"platform-specific-optimization","Platform-Specific Optimization",[123,29698,29700],{"id":29699},"chatgpt-optimization","ChatGPT Optimization",[131,29702,29703,29709,29715,29721],{},[134,29704,29705,29708],{},[137,29706,29707],{},"Long-form content",": 2000+ words performs better",[134,29710,29711,29714],{},[137,29712,29713],{},"Clear structure",": H2/H3 hierarchy essential",[134,29716,29717,29720],{},[137,29718,29719],{},"Code examples",": Well-formatted, syntax-highlighted",[134,29722,29723,29726],{},[137,29724,29725],{},"Statistics",": Specific, sourced data points",[123,29728,27472],{"id":29729},"google-ai-overviews",[131,29731,29732,29738,29744,29750],{},[134,29733,29734,29737],{},[137,29735,29736],{},"FAQ sections",": Direct question-answer format",[134,29739,29740,29743],{},[137,29741,29742],{},"Schema markup",": Critical for understanding",[134,29745,29746,29749],{},[137,29747,29748],{},"Featured snippets",": Optimize for position 0",[134,29751,29752,29755],{},[137,29753,29754],{},"E-E-A-T",": Demonstrate Experience, Expertise, Authoritativeness, Trustworthiness",[123,29757,27478],{"id":29758},"gemini",[131,29760,29761,29767,29773],{},[134,29762,29763,29766],{},[137,29764,29765],{},"Google integration",": Ensure good traditional SEO",[134,29768,29769,29772],{},[137,29770,29771],{},"Workspace compatibility",": Content works well with Google Docs integration",[134,29774,29775,29778],{},[137,29776,29777],{},"Multimodal",": Include images, diagrams where helpful",[123,29780,27466],{"id":29781},"perplexity",[131,29783,29784,29789,29795,29801],{},[134,29785,29786,29788],{},[137,29787,29453],{},": Clear source attribution",[134,29790,29791,29794],{},[137,29792,29793],{},"Recent content",": Strong recency bias",[134,29796,29797,29800],{},[137,29798,29799],{},"Depth",": Comprehensive coverage preferred",[134,29802,29803,29806],{},[137,29804,29805],{},"Links",": outbound links to authoritative sources",[5291,29808],{},[100,29810,29812],{"id":29811},"common-aiseo-mistakes","Common AISEO Mistakes",[123,29814,29816],{"id":29815},"mistake-1-blocking-ai-crawlers","❌ Mistake 1: Blocking AI Crawlers",[104,29818,29819,29821],{},[137,29820,4997],{},": Update robots.txt to allow GPTBot, ClaudeBot, etc.",[123,29823,29825],{"id":29824},"mistake-2-vague-context-dependent-content","❌ Mistake 2: Vague, Context-Dependent Content",[104,29827,29828,29830],{},[137,29829,4997],{},": Make each section standalone (\"information island\")",[123,29832,29834],{"id":29833},"mistake-3-no-schema-markup","❌ Mistake 3: No Schema Markup",[104,29836,29837,29839],{},[137,29838,4997],{},": Add Article, Organization, FAQ schema",[123,29841,29843],{"id":29842},"mistake-4-outdated-content","❌ Mistake 4: Outdated Content",[104,29845,29846,29848],{},[137,29847,4997],{},": Add dateModified, update quarterly",[123,29850,29852],{"id":29851},"mistake-5-keyword-stuffing","❌ Mistake 5: Keyword Stuffing",[104,29854,29855,29857],{},[137,29856,4997],{},": Write for humans, optimize for semantic understanding",[123,29859,29861],{"id":29860},"mistake-6-no-topic-clusters","❌ Mistake 6: No Topic Clusters",[104,29863,29864,29866],{},[137,29865,4997],{},": Build pillar + cluster content structure",[123,29868,29870],{"id":29869},"mistake-7-ignoring-mobile","❌ Mistake 7: Ignoring Mobile",[104,29872,29873,29875],{},[137,29874,4997],{},": Ensure responsive design, fast mobile loading",[5291,29877],{},[100,29879,29881],{"id":29880},"aiseo-checklist-for-developer-blogs","AISEO Checklist for Developer Blogs",[123,29883,29885],{"id":29884},"technical-foundation","Technical Foundation",[131,29887,29890,29898,29904,29910,29916,29922,29928],{"className":29888},[29889],"contains-task-list",[134,29891,29894,29897],{"className":29892},[29893],"task-list-item",[6428,29895],{"disabled":375,"type":29896},"checkbox"," AI crawlers allowed in robots.txt",[134,29899,29901,29903],{"className":29900},[29893],[6428,29902],{"disabled":375,"type":29896}," Sitemap submitted to Bing Webmaster Tools",[134,29905,29907,29909],{"className":29906},[29893],[6428,29908],{"disabled":375,"type":29896}," Schema.org markup implemented (Article, Organization, FAQ)",[134,29911,29913,29915],{"className":29912},[29893],[6428,29914],{"disabled":375,"type":29896}," Mobile-responsive design",[134,29917,29919,29921],{"className":29918},[29893],[6428,29920],{"disabled":375,"type":29896}," Core Web Vitals optimized (LCP <2.5s, FID <100ms, CLS <0.1)",[134,29923,29925,29927],{"className":29924},[29893],[6428,29926],{"disabled":375,"type":29896}," HTTPS enabled",[134,29929,29931,29933],{"className":29930},[29893],[6428,29932],{"disabled":375,"type":29896}," Clear URL structure",[123,29935,29937],{"id":29936},"content-optimization","Content Optimization",[131,29939,29941,29947,29953,29959,29965,29971,29977,29983],{"className":29940},[29889],[134,29942,29944,29946],{"className":29943},[29893],[6428,29945],{"disabled":375,"type":29896}," Question-based H2/H3 headings",[134,29948,29950,29952],{"className":29949},[29893],[6428,29951],{"disabled":375,"type":29896}," Direct answers in first paragraph",[134,29954,29956,29958],{"className":29955},[29893],[6428,29957],{"disabled":375,"type":29896}," Each section standalone (\"information island\")",[134,29960,29962,29964],{"className":29961},[29893],[6428,29963],{"disabled":375,"type":29896}," FAQ sections on key posts",[134,29966,29968,29970],{"className":29967},[29893],[6428,29969],{"disabled":375,"type":29896}," Code examples with syntax highlighting",[134,29972,29974,29976],{"className":29973},[29893],[6428,29975],{"disabled":375,"type":29896}," Specific statistics and data points",[134,29978,29980,29982],{"className":29979},[29893],[6428,29981],{"disabled":375,"type":29896}," Visible \"Last updated\" dates",[134,29984,29986,29988],{"className":29985},[29893],[6428,29987],{"disabled":375,"type":29896}," Update changelog for major posts",[123,29990,29992],{"id":29991},"authority-building","Authority Building",[131,29994,29996,30002,30008,30014,30020,30026],{"className":29995},[29889],[134,29997,29999,30001],{"className":29998},[29893],[6428,30000],{"disabled":375,"type":29896}," Topic clusters (pillar + 5-10 supporting posts)",[134,30003,30005,30007],{"className":30004},[29893],[6428,30006],{"disabled":375,"type":29896}," Internal linking between related content",[134,30009,30011,30013],{"className":30010},[29893],[6428,30012],{"disabled":375,"type":29896}," Clear author profiles with credentials",[134,30015,30017,30019],{"className":30016},[29893],[6428,30018],{"disabled":375,"type":29896}," Consistent branding across platforms",[134,30021,30023,30025],{"className":30022},[29893],[6428,30024],{"disabled":375,"type":29896}," Social proof (GitHub, Twitter, LinkedIn)",[134,30027,30029,30031],{"className":30028},[29893],[6428,30030],{"disabled":375,"type":29896}," Regular content updates (monthly/quarterly)",[123,30033,30035],{"id":30034},"measurement","Measurement",[131,30037,30039,30045,30051,30057],{"className":30038},[29889],[134,30040,30042,30044],{"className":30041},[29893],[6428,30043],{"disabled":375,"type":29896}," Test content in ChatGPT, Gemini, Perplexity monthly",[134,30046,30048,30050],{"className":30047},[29893],[6428,30049],{"disabled":375,"type":29896}," Track AI referral traffic in analytics",[134,30052,30054,30056],{"className":30053},[29893],[6428,30055],{"disabled":375,"type":29896}," Monitor citation frequency",[134,30058,30060,30062],{"className":30059},[29893],[6428,30061],{"disabled":375,"type":29896}," Use AI visibility tools",[5291,30064],{},[100,30066,30068],{"id":30067},"the-bottom-line","The Bottom Line",[104,30070,30071,30072,30075,30076],{},"We're witnessing the transition from the ",[137,30073,30074],{},"\"Search Era\""," to the ",[137,30077,30078],{},"\"Answer Era.\"",[104,30080,30081,30082,30085],{},"Developers who optimize for AI visibility today will become the default sources that ChatGPT, Claude, and Gemini recommend tomorrow. Those who don't will suffer from ",[137,30083,30084],{},"\"Ghost Equity\"","—ranking well in traditional search but invisible to the 800+ million people using AI assistants weekly.",[104,30087,30088,30091],{},[137,30089,30090],{},"The research is unambiguous",": proper AI SEO boosts visibility by up to 40%. Start implementing these strategies today, and you'll see your content cited in AI responses within weeks.",[5291,30093],{},[100,30095,27225],{"id":27224},[3806,30097,30098,30104,30110,30116,30122],{},[134,30099,30100,30103],{},[137,30101,30102],{},"Audit your site",": Use the checklist above",[134,30105,30106,30109],{},[137,30107,30108],{},"Fix technical issues",": Update robots.txt, add schema",[134,30111,30112,30115],{},[137,30113,30114],{},"Optimize top posts",": Add FAQs, update dates, improve structure",[134,30117,30118,30121],{},[137,30119,30120],{},"Build topic clusters",": Create pillar + cluster content",[134,30123,30124,30127],{},[137,30125,30126],{},"Measure results",": Test in AI platforms monthly",[104,30129,30130],{},[137,30131,30132],{},"Related Reading:",[131,30134,30135,30139,30144],{},[134,30136,30137],{},[5667,30138,28087],{"href":27391},[134,30140,30141],{},[5667,30142,30143],{"href":27239},"Nuxt 4 Performance Optimization",[134,30145,30146],{},[5667,30147,30148],{"href":24632},"AI-Powered Development Tools 2026",[5291,30150],{},[104,30152,30153,30156,30157,30160],{},[137,30154,30155],{},"Questions?"," Drop a comment below or reach out on Twitter ",[5667,30158,27273],{"href":27271,"rel":30159},[5671],". Let's make your developer blog visible in the AI era!",[5134,30162,30163],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":196,"searchDepth":214,"depth":214,"links":30165},[30166,30167,30171,30175,30179,30184,30188,30193,30197,30201,30206,30212,30221,30227,30228],{"id":27408,"depth":214,"text":27403},{"id":27445,"depth":214,"text":27446,"children":30168},[30169,30170],{"id":27452,"depth":16,"text":27453},{"id":27488,"depth":16,"text":27489},{"id":27515,"depth":214,"text":27516,"children":30172},[30173,30174],{"id":27522,"depth":16,"text":27523},{"id":27532,"depth":16,"text":27533},{"id":27592,"depth":214,"text":27593,"children":30176},[30177,30178],{"id":27596,"depth":16,"text":27597},{"id":27727,"depth":16,"text":27728},{"id":27762,"depth":214,"text":27763,"children":30180},[30181,30182,30183],{"id":27766,"depth":16,"text":27767},{"id":27848,"depth":16,"text":27849},{"id":27918,"depth":16,"text":27919},{"id":28009,"depth":214,"text":28010,"children":30185},[30186,30187],{"id":28016,"depth":16,"text":28017},{"id":28977,"depth":16,"text":28978},{"id":29289,"depth":214,"text":29290,"children":30189},[30190,30191,30192],{"id":29300,"depth":16,"text":29301},{"id":29351,"depth":16,"text":29352},{"id":29390,"depth":16,"text":29391},{"id":29416,"depth":214,"text":29417,"children":30194},[30195,30196],{"id":29427,"depth":16,"text":29428},{"id":29463,"depth":16,"text":29464},{"id":29475,"depth":214,"text":29476,"children":30198},[30199,30200],{"id":29486,"depth":16,"text":29487},{"id":29511,"depth":16,"text":29512},{"id":29557,"depth":214,"text":29558,"children":30202},[30203,30204,30205],{"id":29561,"depth":16,"text":29562},{"id":29605,"depth":16,"text":29606},{"id":29632,"depth":16,"text":29633},{"id":29695,"depth":214,"text":29696,"children":30207},[30208,30209,30210,30211],{"id":29699,"depth":16,"text":29700},{"id":29729,"depth":16,"text":27472},{"id":29758,"depth":16,"text":27478},{"id":29781,"depth":16,"text":27466},{"id":29811,"depth":214,"text":29812,"children":30213},[30214,30215,30216,30217,30218,30219,30220],{"id":29815,"depth":16,"text":29816},{"id":29824,"depth":16,"text":29825},{"id":29833,"depth":16,"text":29834},{"id":29842,"depth":16,"text":29843},{"id":29851,"depth":16,"text":29852},{"id":29860,"depth":16,"text":29861},{"id":29869,"depth":16,"text":29870},{"id":29880,"depth":214,"text":29881,"children":30222},[30223,30224,30225,30226],{"id":29884,"depth":16,"text":29885},{"id":29936,"depth":16,"text":29937},{"id":29991,"depth":16,"text":29992},{"id":30034,"depth":16,"text":30035},{"id":30067,"depth":214,"text":30068},{"id":27224,"depth":214,"text":27225},"Complete guide to AI Search Engine Optimization (AISEO) for developer blogs. Learn how to optimize content for citations in ChatGPT, Google AI Overviews, Gemini, and Perplexity.",{"readingTime":9983,"keywords":30231},[30232,30233,30234,30235,30236,30237,30238,27472,30239,30240],"AI SEO for developers","get cited by ChatGPT","Gemini search optimization","AI search engine optimization","developer blog visibility","AISEO 2026","Perplexity optimization","technical content AI","LLM content optimization","/blog/23-ai-seo-developer-blog-guide-2026",{"title":27403,"description":30229},{"src":30244,"mime":5204,"alt":30245,"width":5206,"height":21112},"/img/blog/23-ai-seo-developer-blog-guide-2026/banner.svg","AI Search Engine Optimization - Developer blog content being cited by ChatGPT, Gemini, and Perplexity","blog/23-ai-seo-developer-blog-guide-2026",[22830,9993,30248,5775,30249],"Content Strategy","Technical Writing","crP2_8Sx7xbdyyO0Rg7kVVGj6z7nWpokzYz-zM1-vco",{"id":30252,"title":30253,"abstract":5196,"author":94,"authorUrl":5196,"body":30254,"date":27377,"dateUpdated":27377,"description":30997,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":30998,"navigation":375,"ogImage":5196,"path":30999,"seo":31000,"series":15865,"seriesDescription":15866,"seriesOrder":203,"socialImage":31001,"stem":31004,"tags":31005,"__hash__":31008},"blog/blog/24-ai-first-development-2026.md","AI-First Development: Building the Future of Software in 2026",{"type":97,"value":30255,"toc":30962},[30256,30259,30262,30265,30269,30272,30303,30307,30310,30314,30317,30334,30338,30341,30478,30482,30485,30505,30509,30512,30538,30542,30546,30549,30575,30579,30582,30631,30635,30638,30663,30667,30671,30674,30694,30698,30701,30727,30731,30734,30760,30764,30767,30771,30784,30788,30814,30818,30822,30828,30833,30837,30842,30847,30851,30856,30861,30865,30868,30894,30898,30902,30919,30923,30940,30942,30945,30948,30951,30953,30959],[100,30257,30253],{"id":30258},"ai-first-development-building-the-future-of-software-in-2026",[104,30260,30261],{},"The software development landscape has fundamentally shifted. In 2026, AI-first development isn't just a buzzword—it's the new standard for how we build, test, and deploy applications. As someone who's been deeply involved in the evolution of development tools, I've witnessed this transformation firsthand, and it's nothing short of revolutionary.",[104,30263,30264],{},"In this comprehensive guide, we'll explore how AI-first development is reshaping our industry, the tools and techniques you need to master, and practical strategies for integrating AI into your development workflow.",[100,30266,30268],{"id":30267},"what-is-ai-first-development","What is AI-First Development?",[104,30270,30271],{},"AI-first development represents a paradigm shift where artificial intelligence is not just an add-on tool but a core component of the entire development lifecycle. Unlike traditional development where AI might be used sporadically for code completion, AI-first development embeds intelligent assistance at every stage:",[131,30273,30274,30280,30286,30292,30297],{},[134,30275,30276,30279],{},[137,30277,30278],{},"Planning & Design",": AI helps architect solutions and generate initial scaffolding",[134,30281,30282,30285],{},[137,30283,30284],{},"Code Generation",": Intelligent systems create boilerplate and complex patterns",[134,30287,30288,30291],{},[137,30289,30290],{},"Testing",": Automated test generation and intelligent bug detection",[134,30293,30294,30296],{},[137,30295,21119],{},": AI-driven performance tuning and code review",[134,30298,30299,30302],{},[137,30300,30301],{},"Deployment",": Smart deployment strategies and monitoring",[100,30304,30306],{"id":30305},"the-rise-of-autonomous-ai-agents","The Rise of Autonomous AI Agents",[104,30308,30309],{},"The most significant development in 2026 is the emergence of autonomous AI agents. These aren't your typical chatbots—they're sophisticated systems capable of:",[123,30311,30313],{"id":30312},"_1-independent-task-execution","1. Independent Task Execution",[104,30315,30316],{},"Modern AI agents can take high-level objectives and break them down into executable tasks. For example, you can instruct an agent to \"create a REST API endpoint for user authentication,\" and it will:",[131,30318,30319,30322,30325,30328,30331],{},[134,30320,30321],{},"Generate the route handlers",[134,30323,30324],{},"Implement validation logic",[134,30326,30327],{},"Create database schemas",[134,30329,30330],{},"Write unit and integration tests",[134,30332,30333],{},"Document the API",[123,30335,30337],{"id":30336},"_2-context-aware-code-generation","2. Context-Aware Code Generation",[104,30339,30340],{},"Unlike early code completion tools, today's AI understands your entire codebase context:",[191,30342,30344],{"className":10095,"code":30343,"language":10097,"meta":196,"style":196},"// AI understands your project's patterns and generates consistent code\n// Based on existing patterns in your codebase\n\n// Your existing pattern:\ninterface ApiResponse {\n data: T\n meta: {\n timestamp: string\n version: string\n }\n}\n\n// AI generates new endpoints following your pattern:\nasync function getUserProfile(\n userId: string,\n): Promise> {\n // Implementation follows your project's conventions\n}\n",[118,30345,30346,30351,30356,30360,30365,30379,30387,30395,30403,30411,30415,30419,30423,30428,30439,30450,30469,30474],{"__ignoreMap":196},[200,30347,30348],{"class":202,"line":203},[200,30349,30350],{"class":555},"// AI understands your project's patterns and generates consistent code\n",[200,30352,30353],{"class":202,"line":214},[200,30354,30355],{"class":555},"// Based on existing patterns in your codebase\n",[200,30357,30358],{"class":202,"line":16},[200,30359,376],{"emptyLinePlaceholder":375},[200,30361,30362],{"class":202,"line":229},[200,30363,30364],{"class":555},"// Your existing pattern:\n",[200,30366,30367,30369,30371,30373,30375,30377],{"class":202,"line":237},[200,30368,10118],{"class":313},[200,30370,24095],{"class":384},[200,30372,10416],{"class":210},[200,30374,23704],{"class":384},[200,30376,4335],{"class":210},[200,30378,318],{"class":210},[200,30380,30381,30383,30385],{"class":202,"line":245},[200,30382,24110],{"class":206},[200,30384,283],{"class":210},[200,30386,24115],{"class":384},[200,30388,30389,30391,30393],{"class":202,"line":253},[200,30390,24120],{"class":206},[200,30392,283],{"class":210},[200,30394,318],{"class":210},[200,30396,30397,30399,30401],{"class":202,"line":261},[200,30398,24129],{"class":206},[200,30400,283],{"class":210},[200,30402,10143],{"class":384},[200,30404,30405,30407,30409],{"class":202,"line":269},[200,30406,24138],{"class":206},[200,30408,283],{"class":210},[200,30410,10143],{"class":384},[200,30412,30413],{"class":202,"line":277},[200,30414,10383],{"class":210},[200,30416,30417],{"class":202,"line":417},[200,30418,529],{"class":210},[200,30420,30421],{"class":202,"line":422},[200,30422,376],{"emptyLinePlaceholder":375},[200,30424,30425],{"class":202,"line":29},[200,30426,30427],{"class":555},"// AI generates new endpoints following your pattern:\n",[200,30429,30430,30432,30434,30437],{"class":202,"line":445},[200,30431,18714],{"class":313},[200,30433,6225],{"class":313},[200,30435,30436],{"class":923}," getUserProfile",[200,30438,6231],{"class":210},[200,30440,30441,30444,30446,30448],{"class":202,"line":455},[200,30442,30443],{"class":1257}," userId",[200,30445,283],{"class":210},[200,30447,7591],{"class":384},[200,30449,2455],{"class":210},[200,30451,30452,30454,30456,30458,30460,30462,30465,30467],{"class":202,"line":466},[200,30453,6278],{"class":210},[200,30455,10532],{"class":384},[200,30457,10416],{"class":210},[200,30459,24199],{"class":384},[200,30461,10416],{"class":210},[200,30463,30464],{"class":384},"UserProfile",[200,30466,17007],{"class":210},[200,30468,318],{"class":210},[200,30470,30471],{"class":202,"line":482},[200,30472,30473],{"class":555}," // Implementation follows your project's conventions\n",[200,30475,30476],{"class":202,"line":493},[200,30477,529],{"class":210},[123,30479,30481],{"id":30480},"_3-intelligent-debugging","3. Intelligent Debugging",[104,30483,30484],{},"AI agents now proactively identify and fix issues:",[131,30486,30487,30493,30499],{},[134,30488,30489,30492],{},[137,30490,30491],{},"Predictive Analysis",": Identifies potential bugs before they occur",[134,30494,30495,30498],{},[137,30496,30497],{},"Root Cause Analysis",": Traces errors to their source across complex systems",[134,30500,30501,30504],{},[137,30502,30503],{},"Automated Fixes",": Suggests and implements fixes with understanding of context",[100,30506,30508],{"id":30507},"real-world-impact-statistics-and-trends","Real-World Impact: Statistics and Trends",[104,30510,30511],{},"The adoption of AI-first development has exploded in 2026:",[131,30513,30514,30520,30526,30532],{},[134,30515,30516,30519],{},[137,30517,30518],{},"73% of developers"," report using AI tools daily (up from 35% in 2024)",[134,30521,30522,30525],{},[137,30523,30524],{},"55% reduction"," in time spent on boilerplate code",[134,30527,30528,30531],{},[137,30529,30530],{},"40% faster"," onboarding for new team members",[134,30533,30534,30537],{},[137,30535,30536],{},"60% improvement"," in code review efficiency",[100,30539,30541],{"id":30540},"key-ai-first-development-tools-in-2026","Key AI-First Development Tools in 2026",[123,30543,30545],{"id":30544},"_1-advanced-code-generation","1. Advanced Code Generation",[104,30547,30548],{},"Modern AI coding assistants have evolved beyond simple completions:",[131,30550,30551,30557,30563,30569],{},[134,30552,30553,30556],{},[137,30554,30555],{},"Contextual Understanding",": They understand your entire codebase",[134,30558,30559,30562],{},[137,30560,30561],{},"Multi-file Operations",": Can modify multiple files coherently",[134,30564,30565,30568],{},[137,30566,30567],{},"Framework Expertise",": Deep knowledge of Nuxt, React, Vue, and other frameworks",[134,30570,30571,30574],{},[137,30572,30573],{},"Best Practices",": Automatically implements security and performance best practices",[123,30576,30578],{"id":30577},"_2-ai-powered-testing","2. AI-Powered Testing",[104,30580,30581],{},"Testing has been revolutionized by AI:",[191,30583,30585],{"className":10095,"code":30584,"language":10097,"meta":196,"style":196},"// AI can generate comprehensive test suites\n// Input: Your function signature and requirements\n// Output: Complete test coverage\n\n// Generated test suite includes:\n// - Unit tests for edge cases\n// - Integration tests for API calls\n// - Performance tests for bottlenecks\n// - Accessibility tests for UI components\n",[118,30586,30587,30592,30597,30602,30606,30611,30616,30621,30626],{"__ignoreMap":196},[200,30588,30589],{"class":202,"line":203},[200,30590,30591],{"class":555},"// AI can generate comprehensive test suites\n",[200,30593,30594],{"class":202,"line":214},[200,30595,30596],{"class":555},"// Input: Your function signature and requirements\n",[200,30598,30599],{"class":202,"line":16},[200,30600,30601],{"class":555},"// Output: Complete test coverage\n",[200,30603,30604],{"class":202,"line":229},[200,30605,376],{"emptyLinePlaceholder":375},[200,30607,30608],{"class":202,"line":237},[200,30609,30610],{"class":555},"// Generated test suite includes:\n",[200,30612,30613],{"class":202,"line":245},[200,30614,30615],{"class":555},"// - Unit tests for edge cases\n",[200,30617,30618],{"class":202,"line":253},[200,30619,30620],{"class":555},"// - Integration tests for API calls\n",[200,30622,30623],{"class":202,"line":261},[200,30624,30625],{"class":555},"// - Performance tests for bottlenecks\n",[200,30627,30628],{"class":202,"line":269},[200,30629,30630],{"class":555},"// - Accessibility tests for UI components\n",[123,30632,30634],{"id":30633},"_3-intelligent-code-review","3. Intelligent Code Review",[104,30636,30637],{},"AI-powered code review tools now provide:",[131,30639,30640,30646,30652,30658],{},[134,30641,30642,30645],{},[137,30643,30644],{},"Security Vulnerability Detection",": Identifies potential security issues",[134,30647,30648,30651],{},[137,30649,30650],{},"Performance Optimization",": Suggests performance improvements",[134,30653,30654,30657],{},[137,30655,30656],{},"Code Quality",": Ensures adherence to team standards",[134,30659,30660,30662],{},[137,30661,5697],{},": Auto-generates documentation and comments",[100,30664,30666],{"id":30665},"practical-implementation-getting-started-with-ai-first-development","Practical Implementation: Getting Started with AI-First Development",[123,30668,30670],{"id":30669},"step-1-choose-your-ai-tools","Step 1: Choose Your AI Tools",[104,30672,30673],{},"Select AI tools that integrate well with your tech stack:",[131,30675,30676,30682,30688],{},[134,30677,30678,30681],{},[137,30679,30680],{},"IDE Integration",": VS Code extensions with AI capabilities",[134,30683,30684,30687],{},[137,30685,30686],{},"CI/CD Integration",": AI-powered testing and deployment",[134,30689,30690,30693],{},[137,30691,30692],{},"Project Management",": AI-assisted task breakdown and estimation",[123,30695,30697],{"id":30696},"step-2-establish-workflows","Step 2: Establish Workflows",[104,30699,30700],{},"Create structured workflows for AI collaboration:",[3806,30702,30703,30709,30715,30721],{},[134,30704,30705,30708],{},[137,30706,30707],{},"Define Clear Objectives",": Be specific about what you want AI to accomplish",[134,30710,30711,30714],{},[137,30712,30713],{},"Review Generated Code",": Always review and understand AI-generated code",[134,30716,30717,30720],{},[137,30718,30719],{},"Iterate and Refine",": Use AI feedback loops to improve outputs",[134,30722,30723,30726],{},[137,30724,30725],{},"Document Patterns",": Capture successful AI interaction patterns",[123,30728,30730],{"id":30729},"step-3-maintain-human-oversight","Step 3: Maintain Human Oversight",[104,30732,30733],{},"While AI is powerful, human oversight remains critical:",[131,30735,30736,30742,30748,30754],{},[134,30737,30738,30741],{},[137,30739,30740],{},"Architectural Decisions",": Humans make high-level design choices",[134,30743,30744,30747],{},[137,30745,30746],{},"Ethical Considerations",": Ensure AI outputs align with ethical standards",[134,30749,30750,30753],{},[137,30751,30752],{},"Quality Assurance",": Final review and approval by human developers",[134,30755,30756,30759],{},[137,30757,30758],{},"Security Validation",": Security-critical code requires human review",[100,30761,30763],{"id":30762},"case-study-building-a-nuxt-4-application-with-ai-first-approach","Case Study: Building a Nuxt 4 Application with AI-First Approach",[104,30765,30766],{},"Let's examine how AI-first development transforms a real project:",[123,30768,30770],{"id":30769},"traditional-approach-weeks","Traditional Approach (Weeks)",[3806,30772,30773,30776,30779,30781],{},[134,30774,30775],{},"Manual scaffolding",[134,30777,30778],{},"Component-by-component development",[134,30780,29656],{},[134,30782,30783],{},"Iterative debugging",[123,30785,30787],{"id":30786},"ai-first-approach-days","AI-First Approach (Days)",[3806,30789,30790,30796,30802,30808],{},[134,30791,30792,30795],{},[137,30793,30794],{},"Day 1",": AI generates project structure and boilerplate",[134,30797,30798,30801],{},[137,30799,30800],{},"Day 2",": AI creates components based on design specs",[134,30803,30804,30807],{},[137,30805,30806],{},"Day 3",": AI generates tests and identifies edge cases",[134,30809,30810,30813],{},[137,30811,30812],{},"Day 4",": Human refinement and optimization",[100,30815,30817],{"id":30816},"challenges-and-considerations","Challenges and Considerations",[123,30819,30821],{"id":30820},"_1-code-quality-concerns","1. Code Quality Concerns",[104,30823,30824,30827],{},[137,30825,30826],{},"Challenge",": AI-generated code may not always meet quality standards.",[104,30829,30830,30832],{},[137,30831,4679],{},": Implement rigorous review processes and maintain coding standards documentation.",[123,30834,30836],{"id":30835},"_2-dependency-on-ai-tools","2. Dependency on AI Tools",[104,30838,30839,30841],{},[137,30840,30826],{},": Over-reliance on AI can erode fundamental skills.",[104,30843,30844,30846],{},[137,30845,4679],{},": Balance AI assistance with learning and understanding underlying concepts.",[123,30848,30850],{"id":30849},"_3-security-and-privacy","3. Security and Privacy",[104,30852,30853,30855],{},[137,30854,30826],{},": Sensitive code in AI prompts may raise security concerns.",[104,30857,30858,30860],{},[137,30859,4679],{},": Use enterprise AI tools with proper data handling policies and avoid sharing sensitive information.",[100,30862,30864],{"id":30863},"the-future-whats-next-for-ai-first-development","The Future: What's Next for AI-First Development?",[104,30866,30867],{},"Looking ahead, we can expect:",[3806,30869,30870,30876,30882,30888],{},[134,30871,30872,30875],{},[137,30873,30874],{},"Fully Autonomous Features",": AI handling entire features from specification to deployment",[134,30877,30878,30881],{},[137,30879,30880],{},"Enhanced Collaboration",": Better human-AI collaboration interfaces",[134,30883,30884,30887],{},[137,30885,30886],{},"Specialized AI Models",": Domain-specific AI for different tech stacks",[134,30889,30890,30893],{},[137,30891,30892],{},"Real-time Optimization",": Continuous performance optimization in production",[100,30895,30897],{"id":30896},"best-practices-for-ai-first-development","Best Practices for AI-First Development",[123,30899,30901],{"id":30900},"dos","Do's",[131,30903,30904,30907,30910,30913,30916],{},[134,30905,30906],{},"✅ Use AI for repetitive tasks and boilerplate",[134,30908,30909],{},"✅ Leverage AI for exploring new technologies",[134,30911,30912],{},"✅ Implement AI-assisted code reviews",[134,30914,30915],{},"✅ Document AI-generated code thoroughly",[134,30917,30918],{},"✅ Keep humans in the loop for critical decisions",[123,30920,30922],{"id":30921},"donts","Don'ts",[131,30924,30925,30928,30931,30934,30937],{},[134,30926,30927],{},"❌ Don't accept AI code without understanding it",[134,30929,30930],{},"❌ Don't use AI for security-critical code without review",[134,30932,30933],{},"❌ Don't rely solely on AI for architectural decisions",[134,30935,30936],{},"❌ Don't ignore AI suggestions without consideration",[134,30938,30939],{},"❌ Don't forget to test AI-generated code",[100,30941,5123],{"id":5122},[104,30943,30944],{},"AI-first development represents the future of software creation. As we've seen in 2026, the technology has matured from experimental to essential. Developers who embrace AI-first methodologies are already seeing dramatic improvements in productivity, code quality, and job satisfaction.",[104,30946,30947],{},"The key to success is finding the right balance—leveraging AI's power while maintaining human creativity, oversight, and strategic thinking. As the technology continues to evolve, staying current with AI-first practices will be crucial for every developer's career.",[104,30949,30950],{},"Start small, experiment with different tools, and gradually integrate AI into your workflow. The future of development is here, and it's powered by AI.",[5291,30952],{},[104,30954,30955,30958],{},[137,30956,30957],{},"Ready to embrace AI-first development?"," Start by integrating one AI tool into your workflow this week and gradually expand from there. The learning curve is worth it.",[5134,30960,30961],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":196,"searchDepth":214,"depth":214,"links":30963},[30964,30965,30966,30971,30972,30977,30982,30986,30991,30992,30996],{"id":30258,"depth":214,"text":30253},{"id":30267,"depth":214,"text":30268},{"id":30305,"depth":214,"text":30306,"children":30967},[30968,30969,30970],{"id":30312,"depth":16,"text":30313},{"id":30336,"depth":16,"text":30337},{"id":30480,"depth":16,"text":30481},{"id":30507,"depth":214,"text":30508},{"id":30540,"depth":214,"text":30541,"children":30973},[30974,30975,30976],{"id":30544,"depth":16,"text":30545},{"id":30577,"depth":16,"text":30578},{"id":30633,"depth":16,"text":30634},{"id":30665,"depth":214,"text":30666,"children":30978},[30979,30980,30981],{"id":30669,"depth":16,"text":30670},{"id":30696,"depth":16,"text":30697},{"id":30729,"depth":16,"text":30730},{"id":30762,"depth":214,"text":30763,"children":30983},[30984,30985],{"id":30769,"depth":16,"text":30770},{"id":30786,"depth":16,"text":30787},{"id":30816,"depth":214,"text":30817,"children":30987},[30988,30989,30990],{"id":30820,"depth":16,"text":30821},{"id":30835,"depth":16,"text":30836},{"id":30849,"depth":16,"text":30850},{"id":30863,"depth":214,"text":30864},{"id":30896,"depth":214,"text":30897,"children":30993},[30994,30995],{"id":30900,"depth":16,"text":30901},{"id":30921,"depth":16,"text":30922},{"id":5122,"depth":214,"text":5123},"Discover how AI-first development is revolutionizing software creation in 2026, from autonomous agents to intelligent code generation and beyond.",{"readingTime":21104},"/blog/24-ai-first-development-2026",{"title":30253,"description":30997},{"src":31002,"mime":5204,"alt":31003,"width":5206,"height":21112},"/img/blog/24-ai-first-development-2026/banner.svg","AI-First Development 2026 - Futuristic AI brain with code streams and neural networks on dark blue gradient","blog/24-ai-first-development-2026",[9993,31006,24642,24641,31007],"Development","Future Tech","NzXmLhSnsVBOs91ObAaI8O0gKHSV8ig3ljcVUGFzW-M",{"id":31010,"title":31011,"abstract":5196,"author":94,"authorUrl":5196,"body":31012,"date":31770,"dateUpdated":31770,"description":31771,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":31772,"navigation":375,"ogImage":5196,"path":31773,"seo":31774,"series":30650,"seriesDescription":31775,"seriesOrder":214,"socialImage":31776,"stem":31779,"tags":31780,"__hash__":31783},"blog/blog/25-webassembly-performance-revolution-2026.md","WebAssembly in 2026: The Performance Revolution",{"type":97,"value":31013,"toc":31743},[31014,31017,31020,31023,31027,31030,31062,31066,31070,31073,31150,31154,31157,31171,31175,31178,31204,31208,31212,31215,31251,31255,31258,31272,31276,31279,31293,31297,31300,31373,31377,31381,31384,31409,31413,31479,31483,31579,31582,31586,31597,31601,31612,31616,31692,31696,31698,31724,31726,31729,31732,31734,31740],[100,31015,31011],{"id":31016},"webassembly-in-2026-the-performance-revolution",[104,31018,31019],{},"WebAssembly (Wasm) has reached a tipping point in 2026. What started as a promise of near-native performance for the web has evolved into a mature technology that's reshaping how we build high-performance applications. From real-time video processing to complex data analysis in the browser, WebAssembly is enabling capabilities that were previously impossible.",[104,31021,31022],{},"In this guide, we'll explore the current state of WebAssembly, practical use cases, and how you can leverage this powerful technology in your projects.",[100,31024,31026],{"id":31025},"why-webassembly-matters-in-2026","Why WebAssembly Matters in 2026",[104,31028,31029],{},"WebAssembly provides several critical advantages:",[131,31031,31032,31038,31044,31050,31056],{},[134,31033,31034,31037],{},[137,31035,31036],{},"Near-Native Performance",": Code runs at 70-90% of native speed",[134,31039,31040,31043],{},[137,31041,31042],{},"Cross-Platform Compatibility",": Runs consistently across all modern browsers",[134,31045,31046,31049],{},[137,31047,31048],{},"Language Flexibility",": Write code in C++, Rust, Go, and compile to Wasm",[134,31051,31052,31055],{},[137,31053,31054],{},"Security",": Sandboxed execution environment",[134,31057,31058,31061],{},[137,31059,31060],{},"Small Bundle Sizes",": Efficient binary format",[100,31063,31065],{"id":31064},"key-developments-in-2026","Key Developments in 2026",[123,31067,31069],{"id":31068},"_1-enhanced-javascript-interop","1. Enhanced JavaScript Interop",[104,31071,31072],{},"The JavaScript-WebAssembly interface has become significantly smoother:",[191,31074,31076],{"className":10095,"code":31075,"language":10097,"meta":196,"style":196},"// Seamless integration with modern JavaScript\nconst wasmModule = await WebAssembly.instantiateStreaming(fetch(\"/module.wasm\"))\n\n// Direct function calls with automatic type conversion\nconst result = wasmModule.exports.processData(dataArray)\n",[118,31077,31078,31083,31118,31122,31127],{"__ignoreMap":196},[200,31079,31080],{"class":202,"line":203},[200,31081,31082],{"class":555},"// Seamless integration with modern JavaScript\n",[200,31084,31085,31087,31090,31092,31094,31097,31099,31102,31104,31107,31109,31111,31114,31116],{"class":202,"line":214},[200,31086,10803],{"class":313},[200,31088,31089],{"class":317}," wasmModule ",[200,31091,4280],{"class":210},[200,31093,13781],{"class":1006},[200,31095,31096],{"class":317}," WebAssembly",[200,31098,3975],{"class":210},[200,31100,31101],{"class":923},"instantiateStreaming",[200,31103,6268],{"class":317},[200,31105,31106],{"class":923},"fetch",[200,31108,6268],{"class":317},[200,31110,1093],{"class":210},[200,31112,31113],{"class":286},"/module.wasm",[200,31115,1093],{"class":210},[200,31117,7826],{"class":317},[200,31119,31120],{"class":202,"line":16},[200,31121,376],{"emptyLinePlaceholder":375},[200,31123,31124],{"class":202,"line":229},[200,31125,31126],{"class":555},"// Direct function calls with automatic type conversion\n",[200,31128,31129,31131,31133,31135,31138,31140,31142,31144,31147],{"class":202,"line":237},[200,31130,10803],{"class":313},[200,31132,23750],{"class":317},[200,31134,4280],{"class":210},[200,31136,31137],{"class":317}," wasmModule",[200,31139,3975],{"class":210},[200,31141,23875],{"class":317},[200,31143,3975],{"class":210},[200,31145,31146],{"class":923},"processData",[200,31148,31149],{"class":317},"(dataArray)\n",[123,31151,31153],{"id":31152},"_2-multi-threading-support","2. Multi-Threading Support",[104,31155,31156],{},"WebAssembly threads are now widely supported, enabling:",[131,31158,31159,31162,31165,31168],{},[134,31160,31161],{},"Parallel processing of large datasets",[134,31163,31164],{},"Real-time video encoding/decoding",[134,31166,31167],{},"Complex simulations and calculations",[134,31169,31170],{},"Game physics engines",[123,31172,31174],{"id":31173},"_3-improved-tooling","3. Improved Tooling",[104,31176,31177],{},"The ecosystem has matured with better tools:",[131,31179,31180,31186,31192,31198],{},[134,31181,31182,31185],{},[137,31183,31184],{},"wasm-pack",": Streamlined Rust to Wasm compilation",[134,31187,31188,31191],{},[137,31189,31190],{},"AssemblyScript",": TypeScript-like language for Wasm",[134,31193,31194,31197],{},[137,31195,31196],{},"Emscripten",": C/C++ to Wasm toolchain",[134,31199,31200,31203],{},[137,31201,31202],{},"Wasmtime",": Standalone Wasm runtime",[100,31205,31207],{"id":31206},"real-world-use-cases","Real-World Use Cases",[123,31209,31211],{"id":31210},"_1-image-and-video-processing","1. Image and Video Processing",[104,31213,31214],{},"WebAssembly excels at computationally intensive tasks:",[191,31216,31220],{"className":31217,"code":31218,"language":31219,"meta":196,"style":196},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// Rust code compiled to WebAssembly\n#[wasm_bindgen]\npub fn apply_filter(image_data: &[u8], filter_type: &str) -> Vec {\n // High-performance image processing\n // Runs 10-50x faster than JavaScript\n}\n","rust",[118,31221,31222,31227,31232,31237,31242,31247],{"__ignoreMap":196},[200,31223,31224],{"class":202,"line":203},[200,31225,31226],{},"// Rust code compiled to WebAssembly\n",[200,31228,31229],{"class":202,"line":214},[200,31230,31231],{},"#[wasm_bindgen]\n",[200,31233,31234],{"class":202,"line":16},[200,31235,31236],{},"pub fn apply_filter(image_data: &[u8], filter_type: &str) -> Vec {\n",[200,31238,31239],{"class":202,"line":229},[200,31240,31241],{}," // High-performance image processing\n",[200,31243,31244],{"class":202,"line":237},[200,31245,31246],{}," // Runs 10-50x faster than JavaScript\n",[200,31248,31249],{"class":202,"line":245},[200,31250,529],{},[123,31252,31254],{"id":31253},"_2-data-analysis-and-visualization","2. Data Analysis and Visualization",[104,31256,31257],{},"Process large datasets directly in the browser:",[131,31259,31260,31263,31266,31269],{},[134,31261,31262],{},"Financial modeling and analysis",[134,31264,31265],{},"Scientific data visualization",[134,31267,31268],{},"Real-time analytics dashboards",[134,31270,31271],{},"Machine learning inference",[123,31273,31275],{"id":31274},"_3-gaming","3. Gaming",[104,31277,31278],{},"Game developers are leveraging WebAssembly for:",[131,31280,31281,31284,31287,31290],{},[134,31282,31283],{},"Physics engines",[134,31285,31286],{},"AI behavior calculations",[134,31288,31289],{},"3D rendering optimizations",[134,31291,31292],{},"Audio processing",[100,31294,31296],{"id":31295},"performance-benchmarks","Performance Benchmarks",[104,31298,31299],{},"Recent benchmarks show impressive results:",[5343,31301,31302,31317],{},[5346,31303,31304],{},[5349,31305,31306,31309,31311,31314],{},[5352,31307,31308],{},"Task",[5352,31310,21118],{},[5352,31312,31313],{},"WebAssembly",[5352,31315,31316],{},"Speedup",[5363,31318,31319,31333,31346,31360],{},[5349,31320,31321,31324,31327,31330],{},[5368,31322,31323],{},"Image Filter",[5368,31325,31326],{},"150ms",[5368,31328,31329],{},"15ms",[5368,31331,31332],{},"10x",[5349,31334,31335,31338,31340,31343],{},[5368,31336,31337],{},"Data Sorting (1M items)",[5368,31339,27082],{},[5368,31341,31342],{},"120ms",[5368,31344,31345],{},"6.7x",[5349,31347,31348,31351,31354,31357],{},[5368,31349,31350],{},"Encryption",[5368,31352,31353],{},"200ms",[5368,31355,31356],{},"25ms",[5368,31358,31359],{},"8x",[5349,31361,31362,31365,31368,31371],{},[5368,31363,31364],{},"Video Encoding",[5368,31366,31367],{},"2000ms",[5368,31369,31370],{},"250ms",[5368,31372,31359],{},[100,31374,31376],{"id":31375},"getting-started-with-webassembly","Getting Started with WebAssembly",[123,31378,31380],{"id":31379},"step-1-choose-your-language","Step 1: Choose Your Language",[104,31382,31383],{},"Popular options include:",[131,31385,31386,31392,31398,31404],{},[134,31387,31388,31391],{},[137,31389,31390],{},"Rust",": Best ecosystem support, memory safety",[134,31393,31394,31397],{},[137,31395,31396],{},"C/C++",": Mature tooling, maximum performance",[134,31399,31400,31403],{},[137,31401,31402],{},"Go",": Easy to learn, good standard library",[134,31405,31406,31408],{},[137,31407,31190],{},": TypeScript-like syntax",[123,31410,31412],{"id":31411},"step-2-set-up-your-development-environment","Step 2: Set Up Your Development Environment",[191,31414,31416],{"className":909,"code":31415,"language":911,"meta":196,"style":196},"# Install Rust and wasm-pack\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | run_in_terminal\ncargo install wasm-pack\n\n# Create a new Wasm project\nwasm-pack new my-wasm-module\n",[118,31417,31418,31423,31451,31461,31465,31470],{"__ignoreMap":196},[200,31419,31420],{"class":202,"line":203},[200,31421,31422],{"class":555},"# Install Rust and wasm-pack\n",[200,31424,31425,31427,31430,31432,31435,31437,31440,31443,31446,31448],{"class":202,"line":214},[200,31426,15228],{"class":384},[200,31428,31429],{"class":286}," --proto",[200,31431,1969],{"class":210},[200,31433,31434],{"class":286},"=https",[200,31436,1983],{"class":210},[200,31438,31439],{"class":286}," --tlsv1.2",[200,31441,31442],{"class":286}," -sSf",[200,31444,31445],{"class":286}," https://sh.rustup.rs",[200,31447,10173],{"class":210},[200,31449,31450],{"class":384}," run_in_terminal\n",[200,31452,31453,31456,31458],{"class":202,"line":16},[200,31454,31455],{"class":384},"cargo",[200,31457,15256],{"class":286},[200,31459,31460],{"class":286}," wasm-pack\n",[200,31462,31463],{"class":202,"line":229},[200,31464,376],{"emptyLinePlaceholder":375},[200,31466,31467],{"class":202,"line":237},[200,31468,31469],{"class":555},"# Create a new Wasm project\n",[200,31471,31472,31474,31476],{"class":202,"line":245},[200,31473,31184],{"class":384},[200,31475,8138],{"class":286},[200,31477,31478],{"class":286}," my-wasm-module\n",[123,31480,31482],{"id":31481},"step-3-build-and-integrate","Step 3: Build and Integrate",[191,31484,31486],{"className":10095,"code":31485,"language":10097,"meta":196,"style":196},"// Import and use in your JavaScript/TypeScript code\nimport init, { process_data } from \"./pkg/my_wasm_module.js\"\n\nasync function run() {\n await init()\n const result = process_data(inputData)\n console.log(result)\n}\n",[118,31487,31488,31493,31517,31521,31533,31542,31559,31575],{"__ignoreMap":196},[200,31489,31490],{"class":202,"line":203},[200,31491,31492],{"class":555},"// Import and use in your JavaScript/TypeScript code\n",[200,31494,31495,31497,31499,31501,31503,31506,31508,31510,31512,31515],{"class":202,"line":214},[200,31496,22235],{"class":1006},[200,31498,21996],{"class":317},[200,31500,1966],{"class":210},[200,31502,13631],{"class":210},[200,31504,31505],{"class":317}," process_data",[200,31507,13647],{"class":210},[200,31509,22255],{"class":1006},[200,31511,1030],{"class":210},[200,31513,31514],{"class":286},"./pkg/my_wasm_module.js",[200,31516,1036],{"class":210},[200,31518,31519],{"class":202,"line":16},[200,31520,376],{"emptyLinePlaceholder":375},[200,31522,31523,31525,31527,31529,31531],{"class":202,"line":229},[200,31524,18714],{"class":313},[200,31526,6225],{"class":313},[200,31528,25002],{"class":923},[200,31530,10978],{"class":210},[200,31532,318],{"class":210},[200,31534,31535,31538,31540],{"class":202,"line":237},[200,31536,31537],{"class":1006}," await",[200,31539,21996],{"class":923},[200,31541,8169],{"class":206},[200,31543,31544,31546,31548,31550,31552,31554,31557],{"class":202,"line":245},[200,31545,13628],{"class":313},[200,31547,17310],{"class":317},[200,31549,1096],{"class":210},[200,31551,31505],{"class":923},[200,31553,6268],{"class":206},[200,31555,31556],{"class":317},"inputData",[200,31558,4304],{"class":206},[200,31560,31561,31564,31566,31569,31571,31573],{"class":202,"line":253},[200,31562,31563],{"class":317}," console",[200,31565,3975],{"class":210},[200,31567,31568],{"class":923},"log",[200,31570,6268],{"class":206},[200,31572,6717],{"class":317},[200,31574,4304],{"class":206},[200,31576,31577],{"class":202,"line":261},[200,31578,529],{"class":210},[100,31580,30573],{"id":31581},"best-practices",[123,31583,31585],{"id":31584},"_1-optimize-for-size","1. Optimize for Size",[131,31587,31588,31591,31594],{},[134,31589,31590],{},"Use tree-shaking to remove unused code",[134,31592,31593],{},"Enable compression (gzip/brotli)",[134,31595,31596],{},"Consider lazy loading for large modules",[123,31598,31600],{"id":31599},"_2-manage-memory-carefully","2. Manage Memory Carefully",[131,31602,31603,31606,31609],{},[134,31604,31605],{},"Free memory explicitly when done",[134,31607,31608],{},"Avoid unnecessary data copying",[134,31610,31611],{},"Use efficient data structures",[123,31613,31615],{"id":31614},"_3-handle-errors-gracefully","3. Handle Errors Gracefully",[191,31617,31619],{"className":10095,"code":31618,"language":10097,"meta":196,"style":196},"try {\n const result = wasmModule.exports.riskyOperation()\n} catch (error) {\n // Handle Wasm errors appropriately\n console.error(\"Wasm operation failed:\", error)\n}\n",[118,31620,31621,31628,31649,31660,31665,31688],{"__ignoreMap":196},[200,31622,31623,31626],{"class":202,"line":203},[200,31624,31625],{"class":1006},"try",[200,31627,318],{"class":210},[200,31629,31630,31632,31634,31636,31638,31640,31642,31644,31647],{"class":202,"line":214},[200,31631,13628],{"class":313},[200,31633,17310],{"class":317},[200,31635,1096],{"class":210},[200,31637,31137],{"class":317},[200,31639,3975],{"class":210},[200,31641,23875],{"class":317},[200,31643,3975],{"class":210},[200,31645,31646],{"class":923},"riskyOperation",[200,31648,8169],{"class":206},[200,31650,31651,31653,31655,31658],{"class":202,"line":16},[200,31652,21331],{"class":210},[200,31654,6847],{"class":1006},[200,31656,31657],{"class":317}," (error) ",[200,31659,388],{"class":210},[200,31661,31662],{"class":202,"line":229},[200,31663,31664],{"class":555}," // Handle Wasm errors appropriately\n",[200,31666,31667,31669,31671,31673,31675,31677,31680,31682,31684,31686],{"class":202,"line":237},[200,31668,31563],{"class":317},[200,31670,3975],{"class":210},[200,31672,6872],{"class":923},[200,31674,6268],{"class":206},[200,31676,1093],{"class":210},[200,31678,31679],{"class":286},"Wasm operation failed:",[200,31681,1093],{"class":210},[200,31683,1966],{"class":210},[200,31685,13639],{"class":317},[200,31687,4304],{"class":206},[200,31689,31690],{"class":202,"line":245},[200,31691,529],{"class":210},[100,31693,31695],{"id":31694},"the-future-of-webassembly","The Future of WebAssembly",[104,31697,30867],{},[3806,31699,31700,31706,31712,31718],{},[134,31701,31702,31705],{},[137,31703,31704],{},"WASM 2.0",": New features and optimizations",[134,31707,31708,31711],{},[137,31709,31710],{},"Better Debugging",": Improved debugging tools and source maps",[134,31713,31714,31717],{},[137,31715,31716],{},"Server-Side Wasm",": More serverless platforms supporting Wasm",[134,31719,31720,31723],{},[137,31721,31722],{},"AI/ML Integration",": Native support for machine learning models",[100,31725,5123],{"id":5122},[104,31727,31728],{},"WebAssembly in 2026 is no longer experimental—it's a production-ready technology that can dramatically improve your application's performance. Whether you're building a data-intensive dashboard, a media processing tool, or a game, WebAssembly offers the performance boost you need.",[104,31730,31731],{},"Start small by identifying performance bottlenecks in your application, and consider whether WebAssembly could help. The investment in learning this technology will pay dividends in user experience and capabilities.",[5291,31733],{},[104,31735,31736,31739],{},[137,31737,31738],{},"Ready to try WebAssembly?"," Start with a simple computation-heavy function and measure the performance difference. You might be surprised by the results.",[5134,31741,31742],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":196,"searchDepth":214,"depth":214,"links":31744},[31745,31746,31747,31752,31757,31758,31763,31768,31769],{"id":31016,"depth":214,"text":31011},{"id":31025,"depth":214,"text":31026},{"id":31064,"depth":214,"text":31065,"children":31748},[31749,31750,31751],{"id":31068,"depth":16,"text":31069},{"id":31152,"depth":16,"text":31153},{"id":31173,"depth":16,"text":31174},{"id":31206,"depth":214,"text":31207,"children":31753},[31754,31755,31756],{"id":31210,"depth":16,"text":31211},{"id":31253,"depth":16,"text":31254},{"id":31274,"depth":16,"text":31275},{"id":31295,"depth":214,"text":31296},{"id":31375,"depth":214,"text":31376,"children":31759},[31760,31761,31762],{"id":31379,"depth":16,"text":31380},{"id":31411,"depth":16,"text":31412},{"id":31481,"depth":16,"text":31482},{"id":31581,"depth":214,"text":30573,"children":31764},[31765,31766,31767],{"id":31584,"depth":16,"text":31585},{"id":31599,"depth":16,"text":31600},{"id":31614,"depth":16,"text":31615},{"id":31694,"depth":214,"text":31695},{"id":5122,"depth":214,"text":5123},"2026-02-24","Explore how WebAssembly is revolutionizing web performance in 2026, enabling near-native speed for web applications and opening new possibilities.",{"readingTime":24363},"/blog/25-webassembly-performance-revolution-2026",{"title":31011,"description":31771},"Deep dive into modern web performance techniques",{"src":31777,"mime":5204,"alt":31778,"width":5206,"height":21112},"/img/blog/25-webassembly-performance-revolution-2026/banner.svg","WebAssembly 2026 Performance - Speed and performance visualization with Wasm logo on purple gradient","blog/25-webassembly-performance-revolution-2026",[31313,21116,31781,21119,31782],"Web Technologies","Wasm","42gZ8gxKaKNhUuGXUCW2sx2RLKzzF5bLf96W11FtVT4",{"id":31785,"title":31786,"abstract":5196,"author":94,"authorUrl":5196,"body":31787,"date":32857,"dateUpdated":32857,"description":32858,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":32859,"navigation":375,"ogImage":5196,"path":32861,"seo":32862,"series":32863,"seriesDescription":32864,"seriesOrder":203,"socialImage":32865,"stem":32868,"tags":32869,"__hash__":32873},"blog/blog/26-meta-frameworks-new-default-2026.md","Meta-Frameworks in 2026: The New Default for Web Development",{"type":97,"value":31788,"toc":32830},[31789,31792,31795,31798,31802,31805,31843,31847,31851,31854,31936,31939,31956,31960,31963,31994,31998,32001,32015,32019,32023,32028,32121,32126,32140,32143,32148,32188,32192,32206,32210,32215,32261,32265,32279,32283,32288,32347,32351,32365,32369,32453,32455,32459,32496,32500,32526,32530,32534,32616,32620,32690,32694,32780,32784,32787,32812,32814,32817,32820,32822,32827],[100,31790,31786],{"id":31791},"meta-frameworks-in-2026-the-new-default-for-web-development",[104,31793,31794],{},"The debate is over. In 2026, meta-frameworks have become the undisputed standard for web development. Whether you're building a simple blog or a complex enterprise application, frameworks like Next.js, Nuxt, SvelteKit, and Remix offer compelling advantages that plain React, Vue, or Svelte simply can't match.",[104,31796,31797],{},"This shift represents more than just convenience—it's a fundamental change in how we think about building web applications. Let's explore why meta-frameworks have become essential and what this means for developers.",[100,31799,31801],{"id":31800},"what-are-meta-frameworks","What Are Meta-Frameworks?",[104,31803,31804],{},"Meta-frameworks are frameworks built on top of existing libraries that provide:",[131,31806,31807,31813,31819,31825,31831,31837],{},[134,31808,31809,31812],{},[137,31810,31811],{},"File-based routing"," with conventions",[134,31814,31815,31818],{},[137,31816,31817],{},"Server-side rendering"," (SSR) out of the box",[134,31820,31821,31824],{},[137,31822,31823],{},"Static site generation"," (SSG) capabilities",[134,31826,31827,31830],{},[137,31828,31829],{},"API routes"," for backend functionality",[134,31832,31833,31836],{},[137,31834,31835],{},"Optimized builds"," with zero configuration",[134,31838,31839,31842],{},[137,31840,31841],{},"Type safety"," across the entire stack",[100,31844,31846],{"id":31845},"why-meta-frameworks-won-in-2026","Why Meta-Frameworks Won in 2026",[123,31848,31850],{"id":31849},"_1-performance-by-default","1. Performance by Default",[104,31852,31853],{},"Meta-frameworks optimize performance automatically:",[191,31855,31857],{"className":10095,"code":31856,"language":10097,"meta":196,"style":196},"// Nuxt 4 - Automatic code splitting and tree-shaking\n// No manual optimization needed\nexport default defineNuxtComponent({\n setup() {\n const { data } = useFetch(\"/api/data\")\n return { data }\n },\n})\n",[118,31858,31859,31864,31869,31882,31891,31916,31926,31930],{"__ignoreMap":196},[200,31860,31861],{"class":202,"line":203},[200,31862,31863],{"class":555},"// Nuxt 4 - Automatic code splitting and tree-shaking\n",[200,31865,31866],{"class":202,"line":214},[200,31867,31868],{"class":555},"// No manual optimization needed\n",[200,31870,31871,31873,31875,31878,31880],{"class":202,"line":16},[200,31872,13614],{"class":1006},[200,31874,22954],{"class":1006},[200,31876,31877],{"class":923}," defineNuxtComponent",[200,31879,6268],{"class":317},[200,31881,388],{"class":210},[200,31883,31884,31887,31889],{"class":202,"line":229},[200,31885,31886],{"class":206}," setup",[200,31888,10978],{"class":210},[200,31890,318],{"class":210},[200,31892,31893,31895,31897,31899,31901,31903,31905,31907,31909,31912,31914],{"class":202,"line":237},[200,31894,10640],{"class":313},[200,31896,13631],{"class":210},[200,31898,13634],{"class":317},[200,31900,13647],{"class":210},[200,31902,1096],{"class":210},[200,31904,13652],{"class":923},[200,31906,6268],{"class":206},[200,31908,1093],{"class":210},[200,31910,31911],{"class":286},"/api/data",[200,31913,1093],{"class":210},[200,31915,4304],{"class":206},[200,31917,31918,31920,31922,31924],{"class":202,"line":245},[200,31919,10733],{"class":1006},[200,31921,13631],{"class":210},[200,31923,13634],{"class":317},[200,31925,13928],{"class":210},[200,31927,31928],{"class":202,"line":253},[200,31929,23076],{"class":210},[200,31931,31932,31934],{"class":202,"line":261},[200,31933,21331],{"class":210},[200,31935,4304],{"class":317},[104,31937,31938],{},"Key performance benefits:",[131,31940,31941,31944,31947,31950,31953],{},[134,31942,31943],{},"Automatic code splitting",[134,31945,31946],{},"Tree-shaking and dead code elimination",[134,31948,31949],{},"Optimized bundle sizes",[134,31951,31952],{},"Built-in image optimization",[134,31954,31955],{},"Smart prefetching",[123,31957,31959],{"id":31958},"_2-developer-experience","2. Developer Experience",[104,31961,31962],{},"The DX improvements are substantial:",[131,31964,31965,31971,31977,31983,31988],{},[134,31966,31967,31970],{},[137,31968,31969],{},"Hot Module Replacement",": Instant updates during development",[134,31972,31973,31976],{},[137,31974,31975],{},"File-based Routing",": No complex routing configuration",[134,31978,31979,31982],{},[137,31980,31981],{},"Auto-imports",": Components and composables imported automatically",[134,31984,31985,31987],{},[137,31986,24374],{},": End-to-end TypeScript support",[134,31989,31990,31993],{},[137,31991,31992],{},"Dev Tools",": Built-in debugging and performance tools",[123,31995,31997],{"id":31996},"_3-seo-benefits","3. SEO Benefits",[104,31999,32000],{},"Server-side rendering provides crucial SEO advantages:",[131,32002,32003,32006,32009,32012],{},[134,32004,32005],{},"Content rendered on the server for search engines",[134,32007,32008],{},"Faster initial page loads",[134,32010,32011],{},"Better social media previews",[134,32013,32014],{},"Improved Core Web Vitals scores",[100,32016,32018],{"id":32017},"the-major-players-in-2026","The Major Players in 2026",[123,32020,32022],{"id":32021},"nextjs-16","Next.js 16+",[104,32024,32025,32027],{},[137,32026,11375],{},": React developers, enterprise applications",[191,32029,32031],{"className":10095,"code":32030,"language":10097,"meta":196,"style":196},"// Next.js 16 App Router\nexport default async function Page() {\n const data = await fetch('...', { cache: 'force-cache' })\n return
{/* content */}
\n}\n",[118,32032,32033,32038,32055,32096,32117],{"__ignoreMap":196},[200,32034,32035],{"class":202,"line":203},[200,32036,32037],{"class":555},"// Next.js 16 App Router\n",[200,32039,32040,32042,32044,32046,32048,32051,32053],{"class":202,"line":214},[200,32041,13614],{"class":1006},[200,32043,22954],{"class":1006},[200,32045,11089],{"class":313},[200,32047,6225],{"class":313},[200,32049,32050],{"class":923}," Page",[200,32052,10978],{"class":210},[200,32054,318],{"class":210},[200,32056,32057,32059,32061,32063,32065,32067,32069,32071,32074,32076,32078,32080,32083,32085,32087,32090,32092,32094],{"class":202,"line":16},[200,32058,13628],{"class":313},[200,32060,13634],{"class":317},[200,32062,1096],{"class":210},[200,32064,13781],{"class":1006},[200,32066,20079],{"class":923},[200,32068,6268],{"class":206},[200,32070,1983],{"class":210},[200,32072,32073],{"class":286},"...",[200,32075,1983],{"class":210},[200,32077,1966],{"class":210},[200,32079,13631],{"class":210},[200,32081,32082],{"class":206}," cache",[200,32084,283],{"class":210},[200,32086,1969],{"class":210},[200,32088,32089],{"class":286},"force-cache",[200,32091,1983],{"class":210},[200,32093,13647],{"class":210},[200,32095,4304],{"class":206},[200,32097,32098,32100,32102,32104,32106,32108,32111,32113,32115],{"class":202,"line":229},[200,32099,13913],{"class":1006},[200,32101,17043],{"class":206},[200,32103,20182],{"class":384},[200,32105,4335],{"class":206},[200,32107,17294],{"class":210},[200,32109,32110],{"class":555},"/* content */",[200,32112,20194],{"class":210},[200,32114,20182],{"class":317},[200,32116,10425],{"class":210},[200,32118,32119],{"class":202,"line":237},[200,32120,529],{"class":210},[104,32122,32123,283],{},[137,32124,32125],{},"Strengths",[131,32127,32128,32131,32134,32137],{},[134,32129,32130],{},"Mature ecosystem",[134,32132,32133],{},"Vercel integration",[134,32135,32136],{},"Extensive documentation",[134,32138,32139],{},"Large community",[123,32141,27054],{"id":32142},"nuxt-4",[104,32144,32145,32147],{},[137,32146,11375],{},": Vue developers, content-heavy sites",[191,32149,32151],{"className":10095,"code":32150,"language":10097,"meta":196,"style":196},"// Nuxt 4 - Fully typed with auto-imports\nconst { data: posts } = await useFetch(\"/api/posts\")\n",[118,32152,32153,32158],{"__ignoreMap":196},[200,32154,32155],{"class":202,"line":203},[200,32156,32157],{"class":555},"// Nuxt 4 - Fully typed with auto-imports\n",[200,32159,32160,32162,32164,32166,32168,32170,32172,32174,32176,32178,32180,32182,32184,32186],{"class":202,"line":214},[200,32161,10803],{"class":313},[200,32163,13631],{"class":210},[200,32165,13634],{"class":206},[200,32167,283],{"class":210},[200,32169,25772],{"class":317},[200,32171,21331],{"class":210},[200,32173,1096],{"class":210},[200,32175,13781],{"class":1006},[200,32177,13652],{"class":923},[200,32179,6268],{"class":317},[200,32181,1093],{"class":210},[200,32183,25581],{"class":286},[200,32185,1093],{"class":210},[200,32187,4304],{"class":317},[104,32189,32190,283],{},[137,32191,32125],{},[131,32193,32194,32197,32200,32203],{},[134,32195,32196],{},"Vue 3 Composition API",[134,32198,32199],{},"Nuxt Content for MDX",[134,32201,32202],{},"Excellent TypeScript integration",[134,32204,32205],{},"Module ecosystem",[123,32207,32209],{"id":32208},"sveltekit-3","SvelteKit 3",[104,32211,32212,32214],{},[137,32213,11375],{},": Performance enthusiasts, smaller bundles",[191,32216,32220],{"className":32217,"code":32218,"language":32219,"meta":196,"style":196},"language-svelte shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\n\n\n{#each data.items as item}\n
{item.name}
\n{/each}\n","svelte",[118,32221,32222,32227,32232,32237,32242,32246,32251,32256],{"__ignoreMap":196},[200,32223,32224],{"class":202,"line":203},[200,32225,32226],{},"\n",[200,32228,32229],{"class":202,"line":214},[200,32230,32231],{},"\n",[200,32243,32244],{"class":202,"line":237},[200,32245,376],{"emptyLinePlaceholder":375},[200,32247,32248],{"class":202,"line":245},[200,32249,32250],{},"{#each data.items as item}\n",[200,32252,32253],{"class":202,"line":253},[200,32254,32255],{},"
{item.name}
\n",[200,32257,32258],{"class":202,"line":261},[200,32259,32260],{},"{/each}\n",[104,32262,32263,283],{},[137,32264,32125],{},[131,32266,32267,32270,32273,32276],{},[134,32268,32269],{},"Minimal runtime",[134,32271,32272],{},"Excellent performance",[134,32274,32275],{},"Simple syntax",[134,32277,32278],{},"Small bundle sizes",[123,32280,32282],{"id":32281},"remix","Remix",[104,32284,32285,32287],{},[137,32286,11375],{},": Data-driven applications, forms",[191,32289,32291],{"className":10095,"code":32290,"language":10097,"meta":196,"style":196},"// Remix - Form handling\nexport async function action({ request }) {\n const formData = await request.formData()\n // Process form\n}\n",[118,32292,32293,32298,32318,32338,32343],{"__ignoreMap":196},[200,32294,32295],{"class":202,"line":203},[200,32296,32297],{"class":555},"// Remix - Form handling\n",[200,32299,32300,32302,32304,32306,32309,32311,32314,32316],{"class":202,"line":214},[200,32301,13614],{"class":1006},[200,32303,11089],{"class":313},[200,32305,6225],{"class":313},[200,32307,32308],{"class":923}," action",[200,32310,20035],{"class":210},[200,32312,32313],{"class":1257}," request",[200,32315,20041],{"class":210},[200,32317,318],{"class":210},[200,32319,32320,32322,32325,32327,32329,32331,32333,32336],{"class":202,"line":16},[200,32321,13628],{"class":313},[200,32323,32324],{"class":317}," formData",[200,32326,1096],{"class":210},[200,32328,13781],{"class":1006},[200,32330,32313],{"class":317},[200,32332,3975],{"class":210},[200,32334,32335],{"class":923},"formData",[200,32337,8169],{"class":206},[200,32339,32340],{"class":202,"line":229},[200,32341,32342],{"class":555}," // Process form\n",[200,32344,32345],{"class":202,"line":237},[200,32346,529],{"class":210},[104,32348,32349,283],{},[137,32350,32125],{},[131,32352,32353,32356,32359,32362],{},[134,32354,32355],{},"Web standards focus",[134,32357,32358],{},"Excellent form handling",[134,32360,32361],{},"Progressive enhancement",[134,32363,32364],{},"Nested routing",[100,32366,32368],{"id":32367},"real-world-performance-comparison","Real-World Performance Comparison",[5343,32370,32371,32387],{},[5346,32372,32373],{},[5349,32374,32375,32378,32380,32382,32384],{},[5352,32376,32377],{},"Framework",[5352,32379,27126],{},[5352,32381,27110],{},[5352,32383,22301],{},[5352,32385,32386],{},"FID",[5363,32388,32389,32405,32421,32436],{},[5349,32390,32391,32394,32397,32400,32403],{},[5368,32392,32393],{},"Next.js 16",[5368,32395,32396],{},"1.2s",[5368,32398,32399],{},"145KB",[5368,32401,32402],{},"1.5s",[5368,32404,31329],{},[5349,32406,32407,32409,32412,32415,32418],{},[5368,32408,27054],{},[5368,32410,32411],{},"1.1s",[5368,32413,32414],{},"132KB",[5368,32416,32417],{},"1.4s",[5368,32419,32420],{},"12ms",[5349,32422,32423,32425,32428,32431,32433],{},[5368,32424,32209],{},[5368,32426,32427],{},"0.9s",[5368,32429,32430],{},"85KB",[5368,32432,32411],{},[5368,32434,32435],{},"10ms",[5349,32437,32438,32441,32444,32447,32450],{},[5368,32439,32440],{},"React SPA",[5368,32442,32443],{},"2.5s",[5368,32445,32446],{},"250KB",[5368,32448,32449],{},"2.8s",[5368,32451,32452],{},"45ms",[100,32454,20560],{"id":20559},[123,32456,32458],{"id":32457},"from-create-react-app","From Create React App",[191,32460,32462],{"className":909,"code":32461,"language":911,"meta":196,"style":196},"# Using create-next-app\nnpx create-next-app@latest my-app\n# Or use codemods for automatic migration\nnpx @next/codemod@latest react-to-next my-app\n",[118,32463,32464,32469,32479,32484],{"__ignoreMap":196},[200,32465,32466],{"class":202,"line":203},[200,32467,32468],{"class":555},"# Using create-next-app\n",[200,32470,32471,32473,32476],{"class":202,"line":214},[200,32472,24855],{"class":384},[200,32474,32475],{"class":286}," create-next-app@latest",[200,32477,32478],{"class":286}," my-app\n",[200,32480,32481],{"class":202,"line":16},[200,32482,32483],{"class":555},"# Or use codemods for automatic migration\n",[200,32485,32486,32488,32491,32494],{"class":202,"line":229},[200,32487,24855],{"class":384},[200,32489,32490],{"class":286}," @next/codemod@latest",[200,32492,32493],{"class":286}," react-to-next",[200,32495,32478],{"class":286},[123,32497,32499],{"id":32498},"from-vue-cli","From Vue CLI",[191,32501,32503],{"className":909,"code":32502,"language":911,"meta":196,"style":196},"# Migrate to Nuxt 4\nnpx nuxi@latest init my-app\n# Follow migration guide for Vue 3 composition API\n",[118,32504,32505,32510,32521],{"__ignoreMap":196},[200,32506,32507],{"class":202,"line":203},[200,32508,32509],{"class":555},"# Migrate to Nuxt 4\n",[200,32511,32512,32514,32517,32519],{"class":202,"line":214},[200,32513,24855],{"class":384},[200,32515,32516],{"class":286}," nuxi@latest",[200,32518,21996],{"class":286},[200,32520,32478],{"class":286},[200,32522,32523],{"class":202,"line":16},[200,32524,32525],{"class":555},"# Follow migration guide for Vue 3 composition API\n",[100,32527,32529],{"id":32528},"best-practices-for-2026","Best Practices for 2026",[123,32531,32533],{"id":32532},"_1-embrace-server-components","1. Embrace Server Components",[191,32535,32537],{"className":10095,"code":32536,"language":10097,"meta":196,"style":196},"// Server Component - runs on server only\nexport default async function ServerComponent() {\n const data = await db.query('SELECT * FROM ...')\n return \n}\n",[118,32538,32539,32544,32561,32590,32612],{"__ignoreMap":196},[200,32540,32541],{"class":202,"line":203},[200,32542,32543],{"class":555},"// Server Component - runs on server only\n",[200,32545,32546,32548,32550,32552,32554,32557,32559],{"class":202,"line":214},[200,32547,13614],{"class":1006},[200,32549,22954],{"class":1006},[200,32551,11089],{"class":313},[200,32553,6225],{"class":313},[200,32555,32556],{"class":923}," ServerComponent",[200,32558,10978],{"class":210},[200,32560,318],{"class":210},[200,32562,32563,32565,32567,32569,32571,32574,32576,32579,32581,32583,32586,32588],{"class":202,"line":16},[200,32564,13628],{"class":313},[200,32566,13634],{"class":317},[200,32568,1096],{"class":210},[200,32570,13781],{"class":1006},[200,32572,32573],{"class":317}," db",[200,32575,3975],{"class":210},[200,32577,32578],{"class":923},"query",[200,32580,6268],{"class":206},[200,32582,1983],{"class":210},[200,32584,32585],{"class":286},"SELECT * FROM ...",[200,32587,1983],{"class":210},[200,32589,4304],{"class":206},[200,32591,32592,32594,32596,32599,32601,32603,32605,32607,32610],{"class":202,"line":229},[200,32593,13913],{"class":1006},[200,32595,17043],{"class":210},[200,32597,32598],{"class":384},"ClientComponent",[200,32600,13634],{"class":384},[200,32602,20828],{"class":210},[200,32604,14324],{"class":206},[200,32606,21331],{"class":210},[200,32608,32609],{"class":206}," /",[200,32611,10425],{"class":210},[200,32613,32614],{"class":202,"line":237},[200,32615,529],{"class":206},[123,32617,32619],{"id":32618},"_2-optimize-data-fetching","2. Optimize Data Fetching",[191,32621,32623],{"className":10095,"code":32622,"language":10097,"meta":196,"style":196},"// Use appropriate caching strategies\nconst { data } = await useFetch(\"/api/data\", {\n cache: \"force-cache\", // Static\n // cache: 'no-store', // Dynamic\n})\n",[118,32624,32625,32630,32658,32676,32684],{"__ignoreMap":196},[200,32626,32627],{"class":202,"line":203},[200,32628,32629],{"class":555},"// Use appropriate caching strategies\n",[200,32631,32632,32634,32636,32638,32640,32642,32644,32646,32648,32650,32652,32654,32656],{"class":202,"line":214},[200,32633,10803],{"class":313},[200,32635,13631],{"class":210},[200,32637,25566],{"class":317},[200,32639,21331],{"class":210},[200,32641,1096],{"class":210},[200,32643,13781],{"class":1006},[200,32645,13652],{"class":923},[200,32647,6268],{"class":317},[200,32649,1093],{"class":210},[200,32651,31911],{"class":286},[200,32653,1093],{"class":210},[200,32655,1966],{"class":210},[200,32657,318],{"class":210},[200,32659,32660,32663,32665,32667,32669,32671,32673],{"class":202,"line":16},[200,32661,32662],{"class":206}," cache",[200,32664,283],{"class":210},[200,32666,1030],{"class":210},[200,32668,32089],{"class":286},[200,32670,1093],{"class":210},[200,32672,1966],{"class":210},[200,32674,32675],{"class":555}," // Static\n",[200,32677,32678,32681],{"class":202,"line":229},[200,32679,32680],{"class":555}," // cache: 'no-store',",[200,32682,32683],{"class":555}," // Dynamic\n",[200,32685,32686,32688],{"class":202,"line":237},[200,32687,21331],{"class":210},[200,32689,4304],{"class":317},[123,32691,32693],{"id":32692},"_3-implement-proper-error-handling","3. Implement Proper Error Handling",[191,32695,32697],{"className":10095,"code":32696,"language":10097,"meta":196,"style":196},"// Error boundaries and error pages\nexport default defineComponent({\n setup() {\n const { error } = useAsyncData()\n if (error) return \n }\n})\n",[118,32698,32699,32704,32717,32725,32742,32771,32775],{"__ignoreMap":196},[200,32700,32701],{"class":202,"line":203},[200,32702,32703],{"class":555},"// Error boundaries and error pages\n",[200,32705,32706,32708,32710,32713,32715],{"class":202,"line":214},[200,32707,13614],{"class":1006},[200,32709,22954],{"class":1006},[200,32711,32712],{"class":923}," defineComponent",[200,32714,6268],{"class":317},[200,32716,388],{"class":210},[200,32718,32719,32721,32723],{"class":202,"line":16},[200,32720,31886],{"class":206},[200,32722,10978],{"class":210},[200,32724,318],{"class":210},[200,32726,32727,32729,32731,32733,32735,32737,32740],{"class":202,"line":229},[200,32728,10640],{"class":313},[200,32730,13631],{"class":210},[200,32732,13639],{"class":317},[200,32734,13647],{"class":210},[200,32736,1096],{"class":210},[200,32738,32739],{"class":923}," useAsyncData",[200,32741,8169],{"class":206},[200,32743,32744,32746,32748,32750,32752,32754,32756,32759,32761,32763,32765,32767,32769],{"class":202,"line":237},[200,32745,10663],{"class":1006},[200,32747,5253],{"class":206},[200,32749,6872],{"class":317},[200,32751,10673],{"class":206},[200,32753,10676],{"class":1006},[200,32755,17043],{"class":210},[200,32757,32758],{"class":384},"ErrorPage",[200,32760,13639],{"class":384},[200,32762,20828],{"class":210},[200,32764,6872],{"class":206},[200,32766,21331],{"class":210},[200,32768,32609],{"class":206},[200,32770,10425],{"class":210},[200,32772,32773],{"class":202,"line":245},[200,32774,10383],{"class":206},[200,32776,32777],{"class":202,"line":253},[200,32778,32779],{"class":206},"})\n",[100,32781,32783],{"id":32782},"the-future-of-meta-frameworks","The Future of Meta-Frameworks",[104,32785,32786],{},"Looking ahead, we expect:",[3806,32788,32789,32794,32800,32806],{},[134,32790,32791,32793],{},[137,32792,23651],{},": More edge-native features",[134,32795,32796,32799],{},[137,32797,32798],{},"AI Integration",": Built-in AI capabilities",[134,32801,32802,32805],{},[137,32803,32804],{},"Better DX",": Even more automation and conventions",[134,32807,32808,32811],{},[137,32809,32810],{},"Unified APIs",": Standardization across frameworks",[100,32813,5123],{"id":5122},[104,32815,32816],{},"Meta-frameworks have won because they solve real problems: performance, SEO, developer experience, and maintainability. Whether you choose Next.js, Nuxt, SvelteKit, or another framework, the meta-framework approach is now the standard for good reason.",[104,32818,32819],{},"The question is no longer \"Should I use a meta-framework?\" but \"Which meta-framework is right for my project?\"",[5291,32821],{},[104,32823,32824,32826],{},[137,32825,27315],{}," Start with a new project or a non-critical section of your application. The learning curve is gentle, and the benefits are immediate.",[5134,32828,32829],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":196,"searchDepth":214,"depth":214,"links":32831},[32832,32833,32834,32839,32845,32846,32850,32855,32856],{"id":31791,"depth":214,"text":31786},{"id":31800,"depth":214,"text":31801},{"id":31845,"depth":214,"text":31846,"children":32835},[32836,32837,32838],{"id":31849,"depth":16,"text":31850},{"id":31958,"depth":16,"text":31959},{"id":31996,"depth":16,"text":31997},{"id":32017,"depth":214,"text":32018,"children":32840},[32841,32842,32843,32844],{"id":32021,"depth":16,"text":32022},{"id":32142,"depth":16,"text":27054},{"id":32208,"depth":16,"text":32209},{"id":32281,"depth":16,"text":32282},{"id":32367,"depth":214,"text":32368},{"id":20559,"depth":214,"text":20560,"children":32847},[32848,32849],{"id":32457,"depth":16,"text":32458},{"id":32498,"depth":16,"text":32499},{"id":32528,"depth":214,"text":32529,"children":32851},[32852,32853,32854],{"id":32532,"depth":16,"text":32533},{"id":32618,"depth":16,"text":32619},{"id":32692,"depth":16,"text":32693},{"id":32782,"depth":214,"text":32783},{"id":5122,"depth":214,"text":5123},"2026-02-23","Discover why meta-frameworks like Next.js, Nuxt, and SvelteKit have become the default choice for web development in 2026.",{"readingTime":32860},"8 min read","/blog/26-meta-frameworks-new-default-2026",{"title":31786,"description":32858},"Modern Web Development","Exploring the latest in web framework technology",{"src":32866,"mime":5204,"alt":32867,"width":5206,"height":21112},"/img/blog/26-meta-frameworks-new-default-2026/banner.svg","Meta-Frameworks 2026 - Modern framework logos connected in network on dark gradient background","blog/26-meta-frameworks-new-default-2026",[32870,32871,15176,32872,22831],"Meta-Frameworks","Next.js","SvelteKit","8iJs8iUFApsYayvqX9yXG9_wUixKKAiyYmRvfxBOuNI",{"id":32875,"title":32876,"abstract":5196,"author":94,"authorUrl":5196,"body":32877,"date":33336,"dateUpdated":27377,"description":33337,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":33338,"navigation":375,"ogImage":5196,"path":27239,"seo":33350,"series":24634,"seriesDescription":24635,"seriesOrder":229,"socialImage":33351,"stem":33354,"tags":33355,"__hash__":33358},"blog/blog/16-nuxt-4-ssr-performance-optimization.md","Nuxt 4 SSR Performance Optimization: Complete Guide to Core Web Vitals",{"type":97,"value":32878,"toc":33318},[32879,32883,32888,32892,32906,32909,32912,32916,32919,32931,32935,32939,32942,33082,33086,33103,33107,33110,33112,33115,33118,33122,33126,33132,33136,33139,33159,33162,33166,33172,33192,33199,33203,33206,33241,33244,33248,33251,33283,33286,33288,33290,33293,33296,33300,33315],[100,32880,32882],{"id":32881},"nuxt-4-ssr-performance-optimization","Nuxt 4 SSR Performance Optimization",[104,32884,32885,32887],{},[137,32886,10012],{}," February 2026",[104,32889,32890],{},[137,32891,11605],{},[131,32893,32894,32897,32900,32903],{},[134,32895,32896],{},"Enhanced with Core Web Vitals optimization strategies",[134,32898,32899],{},"Added detailed caching configuration examples",[134,32901,32902],{},"Expanded monitoring and measurement section",[134,32904,32905],{},"Updated for Nuxt 4.0+ latest features",[104,32907,32908],{},"Server-side rendering (SSR) is one of Nuxt's most powerful features, delivering fast initial page loads and excellent SEO out of the box. However, as applications grow, optimizing SSR performance becomes crucial for maintaining sub-second response times and ensuring a smooth user experience.",[104,32910,32911],{},"After deploying multiple Nuxt 4 applications to production, I've identified key strategies that consistently deliver measurable performance improvements.",[100,32913,32915],{"id":32914},"understanding-nuxt-4-ssr-architecture","Understanding Nuxt 4 SSR Architecture",[104,32917,32918],{},"Nuxt 4 introduces several architectural improvements that impact SSR performance. The framework now uses Nitro as its server engine, which provides better caching mechanisms, more efficient rendering pipelines, and improved hydration strategies. The key to optimization lies in understanding how data flows through the SSR process: server receives request → fetches data → renders HTML → sends to client → client hydrates Vue application. Each stage presents optimization opportunities.",[104,32920,32921,32922,3839,32924,32926,32927,32930],{},"The most common performance bottleneck I've encountered is data fetching. In Nuxt 4, ",[118,32923,24417],{},[118,32925,24766],{}," are optimized for SSR, but improper usage can lead to unnecessary server round trips. The golden rule is to fetch data as close to where it's needed as possible and leverage Nuxt's built-in caching. For example, fetching global site configuration in ",[118,32928,32929],{},"app.vue"," with a long cache time prevents repeated database queries on every page request.",[100,32932,32934],{"id":32933},"essential-optimization-strategies","Essential Optimization Strategies",[123,32936,32938],{"id":32937},"implement-smart-caching","Implement Smart Caching",[104,32940,32941],{},"Caching is the most impactful optimization technique. Nuxt 4 provides multiple caching layers that work together to reduce server load. Route-level caching stores rendered HTML for static or semi-static content, while data caching memoizes API responses. For a blog site like this one, caching individual blog posts for 24 hours and the homepage for 5 minutes reduces server load by over 80%.",[191,32943,32945],{"className":10095,"code":32944,"language":10097,"meta":196,"style":196},"// In nuxt.config.ts\nexport default defineNuxtConfig({\n routeRules: {\n \"/blog/**\": { isr: 86400 }, // 24 hours\n \"/\": { isr: 300 }, // 5 minutes\n \"/api/**\": {\n cors: true,\n headers: { \"Cache-Control\": \"public, max-age=3600\" },\n },\n },\n})\n",[118,32946,32947,32952,32964,32972,32995,33018,33030,33041,33068,33072,33076],{"__ignoreMap":196},[200,32948,32949],{"class":202,"line":203},[200,32950,32951],{"class":555},"// In nuxt.config.ts\n",[200,32953,32954,32956,32958,32960,32962],{"class":202,"line":214},[200,32955,13614],{"class":1006},[200,32957,22954],{"class":1006},[200,32959,22957],{"class":923},[200,32961,6268],{"class":317},[200,32963,388],{"class":210},[200,32965,32966,32968,32970],{"class":202,"line":16},[200,32967,22966],{"class":206},[200,32969,283],{"class":210},[200,32971,318],{"class":210},[200,32973,32974,32976,32978,32980,32982,32984,32986,32988,32990,32992],{"class":202,"line":229},[200,32975,22442],{"class":210},[200,32977,23003],{"class":206},[200,32979,1093],{"class":210},[200,32981,283],{"class":210},[200,32983,13631],{"class":210},[200,32985,22986],{"class":206},[200,32987,283],{"class":210},[200,32989,23016],{"class":326},[200,32991,22993],{"class":210},[200,32993,32994],{"class":555}," // 24 hours\n",[200,32996,32997,32999,33001,33003,33005,33007,33009,33011,33013,33015],{"class":202,"line":237},[200,32998,22442],{"class":210},[200,33000,22977],{"class":206},[200,33002,1093],{"class":210},[200,33004,283],{"class":210},[200,33006,13631],{"class":210},[200,33008,22986],{"class":206},[200,33010,283],{"class":210},[200,33012,6162],{"class":326},[200,33014,22993],{"class":210},[200,33016,33017],{"class":555}," // 5 minutes\n",[200,33019,33020,33022,33024,33026,33028],{"class":202,"line":245},[200,33021,22442],{"class":210},[200,33023,23028],{"class":206},[200,33025,1093],{"class":210},[200,33027,283],{"class":210},[200,33029,318],{"class":210},[200,33031,33032,33035,33037,33039],{"class":202,"line":253},[200,33033,33034],{"class":206}," cors",[200,33036,283],{"class":210},[200,33038,21477],{"class":5604},[200,33040,2455],{"class":210},[200,33042,33043,33046,33048,33050,33052,33055,33057,33059,33061,33064,33066],{"class":202,"line":261},[200,33044,33045],{"class":206}," headers",[200,33047,283],{"class":210},[200,33049,13631],{"class":210},[200,33051,1030],{"class":210},[200,33053,33054],{"class":206},"Cache-Control",[200,33056,1093],{"class":210},[200,33058,283],{"class":210},[200,33060,1030],{"class":210},[200,33062,33063],{"class":286},"public, max-age=3600",[200,33065,1093],{"class":210},[200,33067,21814],{"class":210},[200,33069,33070],{"class":202,"line":269},[200,33071,21319],{"class":210},[200,33073,33074],{"class":202,"line":277},[200,33075,23076],{"class":210},[200,33077,33078,33080],{"class":202,"line":417},[200,33079,21331],{"class":210},[200,33081,4304],{"class":317},[123,33083,33085],{"id":33084},"optimize-data-fetching-patterns","Optimize Data Fetching Patterns",[104,33087,33088,33089,33091,33092,33095,33096,3839,33099,33102],{},"Proper data fetching patterns significantly impact SSR performance. Always use ",[118,33090,24417],{}," with a unique key to enable request deduplication. When fetching multiple independent data sources, use ",[118,33093,33094],{},"Promise.all"," to parallelize requests instead of awaiting them sequentially. Additionally, leverage ",[118,33097,33098],{},"pick",[118,33100,33101],{},"transform"," options to minimize payload size—sending only the data you need reduces both network transfer and processing time.",[123,33104,33106],{"id":33105},"leverage-static-generation-where-possible","Leverage Static Generation Where Possible",[104,33108,33109],{},"Not every page needs full SSR. Nuxt 4's hybrid rendering allows you to choose the optimal rendering strategy per route. Marketing pages, documentation, and blog posts work perfectly with static generation or incremental static regeneration (ISR). Reserve full SSR for pages with highly dynamic content like user dashboards or real-time data displays. This approach dramatically reduces server load while maintaining the benefits of server rendering for SEO.",[100,33111,22213],{"id":22212},[104,33113,33114],{},"Optimization without measurement is guesswork. Implement comprehensive monitoring to track SSR performance metrics. Key metrics to watch include Time to First Byte (TTFB), First Contentful Paint (FCP), and server response times. Nuxt 4 integrates seamlessly with monitoring tools like Sentry and DataDog, providing real-time insights into performance bottlenecks.",[104,33116,33117],{},"Set up performance budgets in your CI/CD pipeline to catch regressions early. For example, fail the build if TTFB increases by more than 100ms compared to the previous deployment. This proactive approach prevents performance degradation from accumulating over time.",[100,33119,33121],{"id":33120},"faq-nuxt-4-ssr-performance","FAQ: Nuxt 4 SSR Performance",[123,33123,33125],{"id":33124},"what-is-the-most-impactful-ssr-optimization-for-nuxt-4","What is the most impactful SSR optimization for Nuxt 4?",[104,33127,33128,33131],{},[137,33129,33130],{},"Caching is the highest-impact optimization."," Implementing route-level caching with ISR (Incremental Static Regeneration) can reduce server load by 80% or more. For a blog or content site, cache pages for 5-60 minutes and API responses for 1-24 hours depending on how frequently data changes.",[123,33133,33135],{"id":33134},"how-do-i-improve-core-web-vitals-with-nuxt-4","How do I improve Core Web Vitals with Nuxt 4?",[104,33137,33138],{},"Focus on these key areas:",[131,33140,33141,33147,33153],{},[134,33142,33143,33146],{},[137,33144,33145],{},"LCP (Largest Contentful Paint)",": Use ISR, optimize images, implement smart caching",[134,33148,33149,33152],{},[137,33150,33151],{},"FID (First Input Delay)",": Code splitting, reduce JavaScript bundle size",[134,33154,33155,33158],{},[137,33156,33157],{},"CLS (Cumulative Layout Shift)",": Reserve space for images and dynamic content, use skeleton loaders",[104,33160,33161],{},"Nuxt 4's hybrid rendering and Nitro caching make achieving good Core Web Vitals significantly easier than previous versions.",[123,33163,33165],{"id":33164},"should-i-use-ssr-or-static-generation-for-my-nuxt-app","Should I use SSR or static generation for my Nuxt app?",[104,33167,28981,33168,33171],{},[137,33169,33170],{},"hybrid rendering"," based on page requirements:",[131,33173,33174,33180,33186],{},[134,33175,33176,33179],{},[137,33177,33178],{},"Static generation (prerender)",": Blog posts, documentation, marketing pages",[134,33181,33182,33185],{},[137,33183,33184],{},"ISR (Incremental Static Regeneration)",": Homepage, category pages, product listings",[134,33187,33188,33191],{},[137,33189,33190],{},"Full SSR",": User dashboards, real-time data, personalized content",[104,33193,33194,33195,33198],{},"Nuxt 4's ",[118,33196,33197],{},"routeRules"," make it easy to mix strategies in a single application.",[123,33200,33202],{"id":33201},"why-is-my-nuxt-app-slow-despite-using-ssr","Why is my Nuxt app slow despite using SSR?",[104,33204,33205],{},"Common causes:",[3806,33207,33208,33214,33223,33229,33235],{},[134,33209,33210,33213],{},[137,33211,33212],{},"No caching",": Every request hits the server",[134,33215,33216,33219,33220,33222],{},[137,33217,33218],{},"Sequential data fetching",": Not using ",[118,33221,33094],{}," for parallel requests",[134,33224,33225,33228],{},[137,33226,33227],{},"Over-fetching",": Loading more data than needed",[134,33230,33231,33234],{},[137,33232,33233],{},"Large bundles",": Not code splitting effectively",[134,33236,33237,33240],{},[137,33238,33239],{},"Database bottlenecks",": Missing database query optimization",[104,33242,33243],{},"Start by implementing caching—it typically provides 50-80% performance improvement.",[123,33245,33247],{"id":33246},"how-do-i-monitor-ssr-performance-in-production","How do I monitor SSR performance in production?",[104,33249,33250],{},"Use these tools and metrics:",[131,33252,33253,33259,33265,33271,33277],{},[134,33254,33255,33258],{},[137,33256,33257],{},"Nuxt DevTools",": Local development performance",[134,33260,33261,33264],{},[137,33262,33263],{},"Sentry",": Error tracking and performance monitoring",[134,33266,33267,33270],{},[137,33268,33269],{},"Google Analytics 4",": Real user monitoring (RUM)",[134,33272,33273,33276],{},[137,33274,33275],{},"Lighthouse CI",": Automated performance budgets in CI/CD",[134,33278,33279,33282],{},[137,33280,33281],{},"Nitro server logs",": TTFB and server response times",[104,33284,33285],{},"Key metrics to track: TTFB <200ms, LCP <2.5s, FID <100ms, CLS <0.1.",[5291,33287],{},[100,33289,5123],{"id":5122},[104,33291,33292],{},"Optimizing Nuxt 4 SSR performance is an iterative process that requires understanding the framework's architecture, implementing smart caching strategies, and continuously monitoring results. The strategies outlined here—smart caching, optimized data fetching, hybrid rendering, and comprehensive monitoring—have consistently delivered 50-80% performance improvements in production applications.",[104,33294,33295],{},"Start with the highest-impact optimizations (caching and static generation), measure the results, and iterate based on real-world performance data. Your users—and search engines—will thank you.",[104,33297,33298],{},[137,33299,30132],{},[131,33301,33302,33306,33311],{},[134,33303,33304],{},[5667,33305,28087],{"href":27391},[134,33307,33308],{},[5667,33309,33310],{"href":30241},"AI SEO for Developer Blogs",[134,33312,33313],{},[5667,33314,27259],{"href":27249},[5134,33316,33317],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":196,"searchDepth":214,"depth":214,"links":33319},[33320,33321,33322,33327,33328,33335],{"id":32881,"depth":214,"text":32882},{"id":32914,"depth":214,"text":32915},{"id":32933,"depth":214,"text":32934,"children":33323},[33324,33325,33326],{"id":32937,"depth":16,"text":32938},{"id":33084,"depth":16,"text":33085},{"id":33105,"depth":16,"text":33106},{"id":22212,"depth":214,"text":22213},{"id":33120,"depth":214,"text":33121,"children":33329},[33330,33331,33332,33333,33334],{"id":33124,"depth":16,"text":33125},{"id":33134,"depth":16,"text":33135},{"id":33164,"depth":16,"text":33165},{"id":33201,"depth":16,"text":33202},{"id":33246,"depth":16,"text":33247},{"id":5122,"depth":214,"text":5123},"2026-02-22","Master Nuxt 4 SSR performance with proven strategies for Core Web Vitals optimization. Learn caching, data fetching, hybrid rendering, and monitoring for lightning-fast page loads.",{"readingTime":21104,"keywords":33339},[33340,33341,33342,33343,33344,33345,33346,33347,33348,33349],"nuxt 4 performance","core web vitals nuxt","nuxt lighthouse score","ssr optimization","nuxt caching strategies","nuxt 4 speed","vue ssr performance","nuxt nitro caching","web vitals optimization","nuxt 4 best practices",{"title":32876,"description":33337},{"src":33352,"mime":5204,"alt":33353,"width":5206,"height":21112},"/img/blog/16-nuxt-4-ssr-performance-optimization/banner.svg","Nuxt 4 SSR Performance Optimization - Lightning-fast page loads with speedometer and lightning bolt icons on green gradient background","blog/16-nuxt-4-ssr-performance-optimization",[15176,33356,33357,21116,21119,22829],"Vue.js","SSR","XhRUZiLhn6SJsObNSFfkCf0T1Lb4RVB7phsNfmDX75E",{"id":33360,"title":33361,"abstract":5196,"author":94,"authorUrl":5196,"body":33362,"date":33336,"dateUpdated":33336,"description":37092,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":37093,"navigation":375,"ogImage":5196,"path":37094,"seo":37095,"series":24366,"seriesDescription":37096,"seriesOrder":16,"socialImage":37097,"stem":37100,"tags":37101,"__hash__":37104},"blog/blog/27-end-to-end-type-safety-guide-2026.md","End-to-End Type Safety: The Complete Guide for 2026",{"type":97,"value":33363,"toc":37055},[33364,33367,33370,33374,33377,33403,33406,33410,33414,33444,33448,33474,33478,33482,33485,33833,33837,34189,34193,34635,34639,34920,34924,34928,35164,35168,35375,35379,35511,35515,35519,35735,35739,36056,36060,36352,36354,36358,36420,36424,36642,36646,36651,36728,36732,36736,36762,36765,36785,36789,36809,36813,36997,37001,37004,37036,37038,37041,37044,37046,37052],[100,33365,33361],{"id":33366},"end-to-end-type-safety-the-complete-guide-for-2026",[104,33368,33369],{},"Type safety has evolved dramatically. In 2026, having TypeScript on the frontend isn't enough—true type safety spans your entire stack, from database to UI. This comprehensive guide shows you how to achieve end-to-end type safety and eliminate an entire class of runtime errors.",[100,33371,33373],{"id":33372},"what-is-end-to-end-type-safety","What is End-to-End Type Safety?",[104,33375,33376],{},"End-to-end type safety means maintaining type consistency across all layers of your application:",[131,33378,33379,33385,33391,33397],{},[134,33380,33381,33384],{},[137,33382,33383],{},"Database",": Schema types and constraints",[134,33386,33387,33390],{},[137,33388,33389],{},"Backend",": API routes, business logic, validation",[134,33392,33393,33396],{},[137,33394,33395],{},"Frontend",": API clients, components, state management",[134,33398,33399,33402],{},[137,33400,33401],{},"Shared",": Common types, utilities, constants",[104,33404,33405],{},"When done right, changing a database field triggers type errors in your frontend code, catching bugs before they reach production.",[100,33407,33409],{"id":33408},"the-modern-type-safe-stack-2026","The Modern Type-Safe Stack (2026)",[123,33411,33413],{"id":33412},"core-technologies","Core Technologies",[191,33415,33417],{"className":10095,"code":33416,"language":10097,"meta":196,"style":196},"// Database: Drizzle ORM with PostgreSQL\n// Backend: Hono or Express with TypeScript\n// Validation: Zod for runtime validation\n// Frontend: Nuxt 4 or Next.js 16\n// API Client: TanStack Query with generated types\n",[118,33418,33419,33424,33429,33434,33439],{"__ignoreMap":196},[200,33420,33421],{"class":202,"line":203},[200,33422,33423],{"class":555},"// Database: Drizzle ORM with PostgreSQL\n",[200,33425,33426],{"class":202,"line":214},[200,33427,33428],{"class":555},"// Backend: Hono or Express with TypeScript\n",[200,33430,33431],{"class":202,"line":16},[200,33432,33433],{"class":555},"// Validation: Zod for runtime validation\n",[200,33435,33436],{"class":202,"line":229},[200,33437,33438],{"class":555},"// Frontend: Nuxt 4 or Next.js 16\n",[200,33440,33441],{"class":202,"line":237},[200,33442,33443],{"class":555},"// API Client: TanStack Query with generated types\n",[123,33445,33447],{"id":33446},"why-this-stack","Why This Stack?",[3806,33449,33450,33456,33462,33468],{},[134,33451,33452,33455],{},[137,33453,33454],{},"TypeScript First",": Everything is typed from the ground up",[134,33457,33458,33461],{},[137,33459,33460],{},"Runtime Validation",": Zod ensures data matches types at runtime",[134,33463,33464,33467],{},[137,33465,33466],{},"Type Inference",": Minimal manual type definitions",[134,33469,33470,33473],{},[137,33471,33472],{},"Developer Experience",": Excellent IDE support and error messages",[100,33475,33477],{"id":33476},"setting-up-end-to-end-types","Setting Up End-to-End Types",[123,33479,33481],{"id":33480},"step-1-database-layer","Step 1: Database Layer",[104,33483,33484],{},"Start with strongly-typed database schemas:",[191,33486,33488],{"className":10095,"code":33487,"language":10097,"meta":196,"style":196},"// db/schema/users.ts\nimport { pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\"\nimport { createInsertSchema, createSelectSchema } from \"drizzle-zod\"\nimport { z } from \"zod\"\n\nexport const users = pgTable(\"users\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n email: text(\"email\").notNull().unique(),\n name: text(\"name\").notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n})\n\n// Generate Zod schemas from database schema\nexport const insertUserSchema = createInsertSchema(users)\nexport const selectUserSchema = createSelectSchema(users)\n\n// Export types\nexport type User = typeof users.$inferSelect\nexport type NewUser = typeof users.$inferInsert\n",[118,33489,33490,33495,33530,33555,33575,33579,33604,33638,33674,33701,33736,33742,33746,33751,33767,33782,33786,33791,33813],{"__ignoreMap":196},[200,33491,33492],{"class":202,"line":203},[200,33493,33494],{"class":555},"// db/schema/users.ts\n",[200,33496,33497,33499,33501,33504,33506,33509,33511,33514,33516,33519,33521,33523,33525,33528],{"class":202,"line":214},[200,33498,22235],{"class":1006},[200,33500,13631],{"class":210},[200,33502,33503],{"class":317}," pgTable",[200,33505,1966],{"class":210},[200,33507,33508],{"class":317}," text",[200,33510,1966],{"class":210},[200,33512,33513],{"class":317}," timestamp",[200,33515,1966],{"class":210},[200,33517,33518],{"class":317}," uuid",[200,33520,13647],{"class":210},[200,33522,22255],{"class":1006},[200,33524,1030],{"class":210},[200,33526,33527],{"class":286},"drizzle-orm/pg-core",[200,33529,1036],{"class":210},[200,33531,33532,33534,33536,33539,33541,33544,33546,33548,33550,33553],{"class":202,"line":16},[200,33533,22235],{"class":1006},[200,33535,13631],{"class":210},[200,33537,33538],{"class":317}," createInsertSchema",[200,33540,1966],{"class":210},[200,33542,33543],{"class":317}," createSelectSchema",[200,33545,13647],{"class":210},[200,33547,22255],{"class":1006},[200,33549,1030],{"class":210},[200,33551,33552],{"class":286},"drizzle-zod",[200,33554,1036],{"class":210},[200,33556,33557,33559,33561,33564,33566,33568,33570,33573],{"class":202,"line":229},[200,33558,22235],{"class":1006},[200,33560,13631],{"class":210},[200,33562,33563],{"class":317}," z",[200,33565,13647],{"class":210},[200,33567,22255],{"class":1006},[200,33569,1030],{"class":210},[200,33571,33572],{"class":286},"zod",[200,33574,1036],{"class":210},[200,33576,33577],{"class":202,"line":237},[200,33578,376],{"emptyLinePlaceholder":375},[200,33580,33581,33583,33585,33588,33590,33592,33594,33596,33598,33600,33602],{"class":202,"line":245},[200,33582,13614],{"class":1006},[200,33584,7445],{"class":313},[200,33586,33587],{"class":317}," users ",[200,33589,4280],{"class":210},[200,33591,33503],{"class":923},[200,33593,6268],{"class":317},[200,33595,1093],{"class":210},[200,33597,23270],{"class":286},[200,33599,1093],{"class":210},[200,33601,1966],{"class":210},[200,33603,318],{"class":210},[200,33605,33606,33608,33610,33612,33614,33616,33618,33620,33622,33624,33627,33629,33631,33634,33636],{"class":202,"line":253},[200,33607,16175],{"class":206},[200,33609,283],{"class":210},[200,33611,33518],{"class":923},[200,33613,6268],{"class":317},[200,33615,1093],{"class":210},[200,33617,6905],{"class":286},[200,33619,1093],{"class":210},[200,33621,5072],{"class":317},[200,33623,3975],{"class":210},[200,33625,33626],{"class":923},"primaryKey",[200,33628,10978],{"class":317},[200,33630,3975],{"class":210},[200,33632,33633],{"class":923},"defaultRandom",[200,33635,10978],{"class":317},[200,33637,2455],{"class":210},[200,33639,33640,33643,33645,33647,33649,33651,33654,33656,33658,33660,33663,33665,33667,33670,33672],{"class":202,"line":261},[200,33641,33642],{"class":206}," email",[200,33644,283],{"class":210},[200,33646,33508],{"class":923},[200,33648,6268],{"class":317},[200,33650,1093],{"class":210},[200,33652,33653],{"class":286},"email",[200,33655,1093],{"class":210},[200,33657,5072],{"class":317},[200,33659,3975],{"class":210},[200,33661,33662],{"class":923},"notNull",[200,33664,10978],{"class":317},[200,33666,3975],{"class":210},[200,33668,33669],{"class":923},"unique",[200,33671,10978],{"class":317},[200,33673,2455],{"class":210},[200,33675,33676,33679,33681,33683,33685,33687,33689,33691,33693,33695,33697,33699],{"class":202,"line":269},[200,33677,33678],{"class":206}," name",[200,33680,283],{"class":210},[200,33682,33508],{"class":923},[200,33684,6268],{"class":317},[200,33686,1093],{"class":210},[200,33688,1607],{"class":286},[200,33690,1093],{"class":210},[200,33692,5072],{"class":317},[200,33694,3975],{"class":210},[200,33696,33662],{"class":923},[200,33698,10978],{"class":317},[200,33700,2455],{"class":210},[200,33702,33703,33706,33708,33710,33712,33714,33717,33719,33721,33723,33726,33728,33730,33732,33734],{"class":202,"line":277},[200,33704,33705],{"class":206}," createdAt",[200,33707,283],{"class":210},[200,33709,33513],{"class":923},[200,33711,6268],{"class":317},[200,33713,1093],{"class":210},[200,33715,33716],{"class":286},"created_at",[200,33718,1093],{"class":210},[200,33720,5072],{"class":317},[200,33722,3975],{"class":210},[200,33724,33725],{"class":923},"defaultNow",[200,33727,10978],{"class":317},[200,33729,3975],{"class":210},[200,33731,33662],{"class":923},[200,33733,10978],{"class":317},[200,33735,2455],{"class":210},[200,33737,33738,33740],{"class":202,"line":417},[200,33739,21331],{"class":210},[200,33741,4304],{"class":317},[200,33743,33744],{"class":202,"line":422},[200,33745,376],{"emptyLinePlaceholder":375},[200,33747,33748],{"class":202,"line":29},[200,33749,33750],{"class":555},"// Generate Zod schemas from database schema\n",[200,33752,33753,33755,33757,33760,33762,33764],{"class":202,"line":445},[200,33754,13614],{"class":1006},[200,33756,7445],{"class":313},[200,33758,33759],{"class":317}," insertUserSchema ",[200,33761,4280],{"class":210},[200,33763,33538],{"class":923},[200,33765,33766],{"class":317},"(users)\n",[200,33768,33769,33771,33773,33776,33778,33780],{"class":202,"line":455},[200,33770,13614],{"class":1006},[200,33772,7445],{"class":313},[200,33774,33775],{"class":317}," selectUserSchema ",[200,33777,4280],{"class":210},[200,33779,33543],{"class":923},[200,33781,33766],{"class":317},[200,33783,33784],{"class":202,"line":466},[200,33785,376],{"emptyLinePlaceholder":375},[200,33787,33788],{"class":202,"line":482},[200,33789,33790],{"class":555},"// Export types\n",[200,33792,33793,33795,33798,33801,33803,33806,33808,33810],{"class":202,"line":493},[200,33794,13614],{"class":1006},[200,33796,33797],{"class":313}," type",[200,33799,33800],{"class":384}," User",[200,33802,1096],{"class":210},[200,33804,33805],{"class":210}," typeof",[200,33807,23364],{"class":317},[200,33809,3975],{"class":210},[200,33811,33812],{"class":317},"$inferSelect\n",[200,33814,33815,33817,33819,33822,33824,33826,33828,33830],{"class":202,"line":498},[200,33816,13614],{"class":1006},[200,33818,33797],{"class":313},[200,33820,33821],{"class":384}," NewUser",[200,33823,1096],{"class":210},[200,33825,33805],{"class":210},[200,33827,23364],{"class":317},[200,33829,3975],{"class":210},[200,33831,33832],{"class":317},"$inferInsert\n",[123,33834,33836],{"id":33835},"step-2-api-layer-with-type-safe-routes","Step 2: API Layer with Type-Safe Routes",[191,33838,33840],{"className":10095,"code":33839,"language":10097,"meta":196,"style":196},"// server/routes/api/users.ts\nimport { Hono } from \"hono\"\nimport { zValidator } from \"@hono/zod-validator\"\nimport { insertUserSchema, selectUserSchema } from \"@/db/schema\"\n\nconst app = new Hono()\n\n// Type-safe route with validation\napp.post(\"/users\", zValidator(\"json\", insertUserSchema), async (c) => {\n const data = c.req.valid(\"json\")\n // data is fully typed as NewUser\n\n const user = await db.insert(users).values(data).returning()\n\n return c.json({\n data: user[0],\n meta: {\n timestamp: new Date().toISOString(),\n version: \"v1\",\n },\n })\n})\n\n// Export route type\nexport type UsersRoutes = typeof app\n",[118,33841,33842,33847,33867,33887,33912,33916,33931,33935,33940,33990,34020,34025,34029,34069,34073,34087,34104,34113,34134,34149,34153,34159,34165,34169,34174],{"__ignoreMap":196},[200,33843,33844],{"class":202,"line":203},[200,33845,33846],{"class":555},"// server/routes/api/users.ts\n",[200,33848,33849,33851,33853,33856,33858,33860,33862,33865],{"class":202,"line":214},[200,33850,22235],{"class":1006},[200,33852,13631],{"class":210},[200,33854,33855],{"class":317}," Hono",[200,33857,13647],{"class":210},[200,33859,22255],{"class":1006},[200,33861,1030],{"class":210},[200,33863,33864],{"class":286},"hono",[200,33866,1036],{"class":210},[200,33868,33869,33871,33873,33876,33878,33880,33882,33885],{"class":202,"line":16},[200,33870,22235],{"class":1006},[200,33872,13631],{"class":210},[200,33874,33875],{"class":317}," zValidator",[200,33877,13647],{"class":210},[200,33879,22255],{"class":1006},[200,33881,1030],{"class":210},[200,33883,33884],{"class":286},"@hono/zod-validator",[200,33886,1036],{"class":210},[200,33888,33889,33891,33893,33896,33898,33901,33903,33905,33907,33910],{"class":202,"line":229},[200,33890,22235],{"class":1006},[200,33892,13631],{"class":210},[200,33894,33895],{"class":317}," insertUserSchema",[200,33897,1966],{"class":210},[200,33899,33900],{"class":317}," selectUserSchema",[200,33902,13647],{"class":210},[200,33904,22255],{"class":1006},[200,33906,1030],{"class":210},[200,33908,33909],{"class":286},"@/db/schema",[200,33911,1036],{"class":210},[200,33913,33914],{"class":202,"line":237},[200,33915,376],{"emptyLinePlaceholder":375},[200,33917,33918,33920,33923,33925,33927,33929],{"class":202,"line":245},[200,33919,10803],{"class":313},[200,33921,33922],{"class":317}," app ",[200,33924,4280],{"class":210},[200,33926,8138],{"class":210},[200,33928,33855],{"class":923},[200,33930,8169],{"class":317},[200,33932,33933],{"class":202,"line":253},[200,33934,376],{"emptyLinePlaceholder":375},[200,33936,33937],{"class":202,"line":261},[200,33938,33939],{"class":555},"// Type-safe route with validation\n",[200,33941,33942,33945,33947,33949,33951,33953,33956,33958,33960,33962,33964,33966,33968,33970,33972,33975,33977,33979,33981,33984,33986,33988],{"class":202,"line":269},[200,33943,33944],{"class":317},"app",[200,33946,3975],{"class":210},[200,33948,7833],{"class":923},[200,33950,6268],{"class":317},[200,33952,1093],{"class":210},[200,33954,33955],{"class":286},"/users",[200,33957,1093],{"class":210},[200,33959,1966],{"class":210},[200,33961,33875],{"class":923},[200,33963,6268],{"class":317},[200,33965,1093],{"class":210},[200,33967,6659],{"class":286},[200,33969,1093],{"class":210},[200,33971,1966],{"class":210},[200,33973,33974],{"class":317}," insertUserSchema)",[200,33976,1966],{"class":210},[200,33978,11089],{"class":313},[200,33980,5253],{"class":210},[200,33982,33983],{"class":1257},"c",[200,33985,5072],{"class":210},[200,33987,6313],{"class":313},[200,33989,318],{"class":210},[200,33991,33992,33994,33996,33998,34001,34003,34006,34008,34010,34012,34014,34016,34018],{"class":202,"line":277},[200,33993,13628],{"class":313},[200,33995,13634],{"class":317},[200,33997,1096],{"class":210},[200,33999,34000],{"class":317}," c",[200,34002,3975],{"class":210},[200,34004,34005],{"class":317},"req",[200,34007,3975],{"class":210},[200,34009,13745],{"class":923},[200,34011,6268],{"class":206},[200,34013,1093],{"class":210},[200,34015,6659],{"class":286},[200,34017,1093],{"class":210},[200,34019,4304],{"class":206},[200,34021,34022],{"class":202,"line":417},[200,34023,34024],{"class":555}," // data is fully typed as NewUser\n",[200,34026,34027],{"class":202,"line":422},[200,34028,376],{"emptyLinePlaceholder":375},[200,34030,34031,34033,34035,34037,34039,34041,34043,34046,34048,34050,34052,34054,34056,34058,34060,34062,34064,34067],{"class":202,"line":29},[200,34032,13628],{"class":313},[200,34034,20132],{"class":317},[200,34036,1096],{"class":210},[200,34038,13781],{"class":1006},[200,34040,32573],{"class":317},[200,34042,3975],{"class":210},[200,34044,34045],{"class":923},"insert",[200,34047,6268],{"class":206},[200,34049,23270],{"class":317},[200,34051,5072],{"class":206},[200,34053,3975],{"class":210},[200,34055,10817],{"class":923},[200,34057,6268],{"class":206},[200,34059,14324],{"class":317},[200,34061,5072],{"class":206},[200,34063,3975],{"class":210},[200,34065,34066],{"class":923},"returning",[200,34068,8169],{"class":206},[200,34070,34071],{"class":202,"line":445},[200,34072,376],{"emptyLinePlaceholder":375},[200,34074,34075,34077,34079,34081,34083,34085],{"class":202,"line":455},[200,34076,13913],{"class":1006},[200,34078,34000],{"class":317},[200,34080,3975],{"class":210},[200,34082,6659],{"class":923},[200,34084,6268],{"class":206},[200,34086,388],{"class":210},[200,34088,34089,34092,34094,34096,34098,34100,34102],{"class":202,"line":466},[200,34090,34091],{"class":206}," data",[200,34093,283],{"class":210},[200,34095,20132],{"class":317},[200,34097,6431],{"class":206},[200,34099,20921],{"class":326},[200,34101,7760],{"class":206},[200,34103,2455],{"class":210},[200,34105,34106,34109,34111],{"class":202,"line":482},[200,34107,34108],{"class":206}," meta",[200,34110,283],{"class":210},[200,34112,318],{"class":210},[200,34114,34115,34117,34119,34121,34123,34125,34127,34130,34132],{"class":202,"line":493},[200,34116,10369],{"class":206},[200,34118,283],{"class":210},[200,34120,8138],{"class":210},[200,34122,10924],{"class":923},[200,34124,10978],{"class":206},[200,34126,3975],{"class":210},[200,34128,34129],{"class":923},"toISOString",[200,34131,10978],{"class":206},[200,34133,2455],{"class":210},[200,34135,34136,34139,34141,34143,34145,34147],{"class":202,"line":498},[200,34137,34138],{"class":206}," version",[200,34140,283],{"class":210},[200,34142,1030],{"class":210},[200,34144,24145],{"class":286},[200,34146,1093],{"class":210},[200,34148,2455],{"class":210},[200,34150,34151],{"class":202,"line":503},[200,34152,21319],{"class":210},[200,34154,34155,34157],{"class":202,"line":515},[200,34156,13682],{"class":210},[200,34158,4304],{"class":206},[200,34160,34161,34163],{"class":202,"line":521},[200,34162,21331],{"class":210},[200,34164,4304],{"class":317},[200,34166,34167],{"class":202,"line":526},[200,34168,376],{"emptyLinePlaceholder":375},[200,34170,34171],{"class":202,"line":687},[200,34172,34173],{"class":555},"// Export route type\n",[200,34175,34176,34178,34180,34183,34185,34187],{"class":202,"line":693},[200,34177,13614],{"class":1006},[200,34179,33797],{"class":313},[200,34181,34182],{"class":384}," UsersRoutes",[200,34184,1096],{"class":210},[200,34186,33805],{"class":210},[200,34188,25487],{"class":317},[123,34190,34192],{"id":34191},"step-3-type-safe-api-client","Step 3: Type-Safe API Client",[191,34194,34196],{"className":10095,"code":34195,"language":10097,"meta":196,"style":196},"// lib/api/client.ts\nimport type { UsersRoutes } from \"@/server/routes/api/users\"\nimport type { SelectUserSchema } from \"@/db/schema\"\n\n// Infer types from routes\ntype UsersApi = typeof UsersRoutes\n\nasync function api(endpoint: string, options?: RequestInit): Promise {\n const response = await fetch(`/api/${endpoint}`, options)\n\n if (!response.ok) {\n throw new Error(`API Error: ${response.status}`)\n }\n\n return response.json()\n}\n\n// Fully typed API calls\nexport const usersApi = {\n getAll: () => api(\"/api/users\"),\n getById: (id: string) => api(`/api/users/${id}`),\n create: (data: NewUser) =>\n api(\"/api/users\", {\n method: \"POST\",\n body: JSON.stringify(data),\n headers: { \"Content-Type\": \"application/json\" },\n }),\n}\n",[118,34197,34198,34203,34224,34245,34249,34254,34268,34272,34317,34347,34351,34369,34397,34401,34405,34417,34421,34425,34430,34443,34477,34520,34539,34562,34578,34596,34622,34631],{"__ignoreMap":196},[200,34199,34200],{"class":202,"line":203},[200,34201,34202],{"class":555},"// lib/api/client.ts\n",[200,34204,34205,34207,34209,34211,34213,34215,34217,34219,34222],{"class":202,"line":214},[200,34206,22235],{"class":1006},[200,34208,33797],{"class":1006},[200,34210,13631],{"class":210},[200,34212,34182],{"class":317},[200,34214,13647],{"class":210},[200,34216,22255],{"class":1006},[200,34218,1030],{"class":210},[200,34220,34221],{"class":286},"@/server/routes/api/users",[200,34223,1036],{"class":210},[200,34225,34226,34228,34230,34232,34235,34237,34239,34241,34243],{"class":202,"line":16},[200,34227,22235],{"class":1006},[200,34229,33797],{"class":1006},[200,34231,13631],{"class":210},[200,34233,34234],{"class":317}," SelectUserSchema",[200,34236,13647],{"class":210},[200,34238,22255],{"class":1006},[200,34240,1030],{"class":210},[200,34242,33909],{"class":286},[200,34244,1036],{"class":210},[200,34246,34247],{"class":202,"line":229},[200,34248,376],{"emptyLinePlaceholder":375},[200,34250,34251],{"class":202,"line":237},[200,34252,34253],{"class":555},"// Infer types from routes\n",[200,34255,34256,34258,34261,34263,34265],{"class":202,"line":245},[200,34257,16100],{"class":313},[200,34259,34260],{"class":384}," UsersApi",[200,34262,1096],{"class":210},[200,34264,33805],{"class":210},[200,34266,34267],{"class":317}," UsersRoutes\n",[200,34269,34270],{"class":202,"line":253},[200,34271,376],{"emptyLinePlaceholder":375},[200,34273,34274,34276,34278,34281,34283,34285,34287,34290,34292,34294,34296,34299,34302,34305,34307,34309,34311,34313,34315],{"class":202,"line":261},[200,34275,18714],{"class":313},[200,34277,6225],{"class":313},[200,34279,34280],{"class":923}," api",[200,34282,10416],{"class":210},[200,34284,23704],{"class":384},[200,34286,23707],{"class":210},[200,34288,34289],{"class":1257},"endpoint",[200,34291,283],{"class":210},[200,34293,7591],{"class":384},[200,34295,1966],{"class":210},[200,34297,34298],{"class":1257}," options",[200,34300,34301],{"class":210},"?:",[200,34303,34304],{"class":384}," RequestInit",[200,34306,6278],{"class":210},[200,34308,10532],{"class":384},[200,34310,10416],{"class":210},[200,34312,23704],{"class":384},[200,34314,4335],{"class":210},[200,34316,318],{"class":210},[200,34318,34319,34321,34323,34325,34327,34329,34331,34333,34335,34337,34339,34341,34343,34345],{"class":202,"line":269},[200,34320,13628],{"class":313},[200,34322,20072],{"class":317},[200,34324,1096],{"class":210},[200,34326,13781],{"class":1006},[200,34328,20079],{"class":923},[200,34330,6268],{"class":206},[200,34332,20084],{"class":210},[200,34334,23917],{"class":286},[200,34336,20090],{"class":210},[200,34338,34289],{"class":317},[200,34340,20096],{"class":210},[200,34342,1966],{"class":210},[200,34344,34298],{"class":317},[200,34346,4304],{"class":206},[200,34348,34349],{"class":202,"line":277},[200,34350,376],{"emptyLinePlaceholder":375},[200,34352,34353,34355,34357,34359,34361,34363,34365,34367],{"class":202,"line":417},[200,34354,18891],{"class":1006},[200,34356,5253],{"class":206},[200,34358,10668],{"class":210},[200,34360,8056],{"class":317},[200,34362,3975],{"class":210},[200,34364,14256],{"class":317},[200,34366,10673],{"class":206},[200,34368,388],{"class":210},[200,34370,34371,34374,34376,34378,34380,34382,34385,34387,34389,34391,34393,34395],{"class":202,"line":422},[200,34372,34373],{"class":1006}," throw",[200,34375,8138],{"class":210},[200,34377,13755],{"class":923},[200,34379,6268],{"class":206},[200,34381,20084],{"class":210},[200,34383,34384],{"class":286},"API Error: ",[200,34386,20090],{"class":210},[200,34388,8056],{"class":317},[200,34390,3975],{"class":210},[200,34392,6308],{"class":317},[200,34394,20096],{"class":210},[200,34396,4304],{"class":206},[200,34398,34399],{"class":202,"line":29},[200,34400,10383],{"class":210},[200,34402,34403],{"class":202,"line":445},[200,34404,376],{"emptyLinePlaceholder":375},[200,34406,34407,34409,34411,34413,34415],{"class":202,"line":455},[200,34408,13913],{"class":1006},[200,34410,20072],{"class":317},[200,34412,3975],{"class":210},[200,34414,6659],{"class":923},[200,34416,8169],{"class":206},[200,34418,34419],{"class":202,"line":466},[200,34420,529],{"class":210},[200,34422,34423],{"class":202,"line":482},[200,34424,376],{"emptyLinePlaceholder":375},[200,34426,34427],{"class":202,"line":493},[200,34428,34429],{"class":555},"// Fully typed API calls\n",[200,34431,34432,34434,34436,34439,34441],{"class":202,"line":498},[200,34433,13614],{"class":1006},[200,34435,7445],{"class":313},[200,34437,34438],{"class":317}," usersApi ",[200,34440,4280],{"class":210},[200,34442,318],{"class":210},[200,34444,34445,34448,34450,34452,34454,34456,34458,34461,34463,34465,34467,34469,34471,34473,34475],{"class":202,"line":503},[200,34446,34447],{"class":923}," getAll",[200,34449,283],{"class":210},[200,34451,13350],{"class":210},[200,34453,6313],{"class":313},[200,34455,34280],{"class":923},[200,34457,10416],{"class":210},[200,34459,34460],{"class":384},"SelectUserSchema",[200,34462,10771],{"class":317},[200,34464,4335],{"class":210},[200,34466,6268],{"class":317},[200,34468,1093],{"class":210},[200,34470,23306],{"class":286},[200,34472,1093],{"class":210},[200,34474,5072],{"class":317},[200,34476,2455],{"class":210},[200,34478,34479,34482,34484,34486,34488,34490,34492,34494,34496,34498,34500,34502,34504,34506,34508,34510,34512,34514,34516,34518],{"class":202,"line":515},[200,34480,34481],{"class":923}," getById",[200,34483,283],{"class":210},[200,34485,5253],{"class":210},[200,34487,6905],{"class":1257},[200,34489,283],{"class":210},[200,34491,7591],{"class":384},[200,34493,5072],{"class":210},[200,34495,6313],{"class":313},[200,34497,34280],{"class":923},[200,34499,10416],{"class":210},[200,34501,34460],{"class":384},[200,34503,4335],{"class":210},[200,34505,6268],{"class":317},[200,34507,20084],{"class":210},[200,34509,20087],{"class":286},[200,34511,20090],{"class":210},[200,34513,6905],{"class":317},[200,34515,20096],{"class":210},[200,34517,5072],{"class":317},[200,34519,2455],{"class":210},[200,34521,34522,34525,34527,34529,34531,34533,34535,34537],{"class":202,"line":521},[200,34523,34524],{"class":923}," create",[200,34526,283],{"class":210},[200,34528,5253],{"class":210},[200,34530,14324],{"class":1257},[200,34532,283],{"class":210},[200,34534,33821],{"class":384},[200,34536,5072],{"class":210},[200,34538,10916],{"class":313},[200,34540,34541,34544,34546,34548,34550,34552,34554,34556,34558,34560],{"class":202,"line":526},[200,34542,34543],{"class":923}," api",[200,34545,10416],{"class":210},[200,34547,34460],{"class":384},[200,34549,4335],{"class":210},[200,34551,6268],{"class":317},[200,34553,1093],{"class":210},[200,34555,23306],{"class":286},[200,34557,1093],{"class":210},[200,34559,1966],{"class":210},[200,34561,318],{"class":210},[200,34563,34564,34567,34569,34571,34574,34576],{"class":202,"line":687},[200,34565,34566],{"class":206}," method",[200,34568,283],{"class":210},[200,34570,1030],{"class":210},[200,34572,34573],{"class":286},"POST",[200,34575,1093],{"class":210},[200,34577,2455],{"class":210},[200,34579,34580,34583,34585,34587,34589,34591,34594],{"class":202,"line":693},[200,34581,34582],{"class":206}," body",[200,34584,283],{"class":210},[200,34586,21752],{"class":317},[200,34588,3975],{"class":210},[200,34590,21757],{"class":923},[200,34592,34593],{"class":317},"(data)",[200,34595,2455],{"class":210},[200,34597,34598,34600,34602,34604,34606,34609,34611,34613,34615,34618,34620],{"class":202,"line":699},[200,34599,33045],{"class":206},[200,34601,283],{"class":210},[200,34603,13631],{"class":210},[200,34605,1030],{"class":210},[200,34607,34608],{"class":206},"Content-Type",[200,34610,1093],{"class":210},[200,34612,283],{"class":210},[200,34614,1030],{"class":210},[200,34616,34617],{"class":286},"application/json",[200,34619,1093],{"class":210},[200,34621,21814],{"class":210},[200,34623,34624,34627,34629],{"class":202,"line":704},[200,34625,34626],{"class":210}," }",[200,34628,5072],{"class":317},[200,34630,2455],{"class":210},[200,34632,34633],{"class":202,"line":709},[200,34634,529],{"class":210},[123,34636,34638],{"id":34637},"step-4-frontend-with-auto-generated-types","Step 4: Frontend with Auto-Generated Types",[191,34640,34642],{"className":10095,"code":34641,"language":10097,"meta":196,"style":196},"// app/pages/users.vue\n\n",[118,34643,34644,34649,34665,34685,34705,34709,34714,34753,34765,34769,34773,34778,34804,34813,34822,34844,34853,34857,34861,34873,34902,34906,34912],{"__ignoreMap":196},[200,34645,34646],{"class":202,"line":203},[200,34647,34648],{"class":555},"// app/pages/users.vue\n",[200,34650,34651,34653,34655,34657,34659,34661,34663],{"class":202,"line":214},[200,34652,10416],{"class":210},[200,34654,29005],{"class":317},[200,34656,4280],{"class":210},[200,34658,1093],{"class":210},[200,34660,29012],{"class":286},[200,34662,1093],{"class":210},[200,34664,10425],{"class":210},[200,34666,34667,34669,34671,34674,34676,34678,34680,34683],{"class":202,"line":16},[200,34668,22235],{"class":1006},[200,34670,13631],{"class":210},[200,34672,34673],{"class":317}," usersApi",[200,34675,13647],{"class":210},[200,34677,22255],{"class":1006},[200,34679,1969],{"class":210},[200,34681,34682],{"class":286},"@/lib/api/client",[200,34684,29099],{"class":210},[200,34686,34687,34689,34691,34693,34695,34697,34699,34701,34703],{"class":202,"line":229},[200,34688,22235],{"class":1006},[200,34690,33797],{"class":1006},[200,34692,13631],{"class":210},[200,34694,33800],{"class":317},[200,34696,13647],{"class":210},[200,34698,22255],{"class":1006},[200,34700,1969],{"class":210},[200,34702,33909],{"class":286},[200,34704,29099],{"class":210},[200,34706,34707],{"class":202,"line":237},[200,34708,376],{"emptyLinePlaceholder":375},[200,34710,34711],{"class":202,"line":245},[200,34712,34713],{"class":555},"// Fully typed with inference\n",[200,34715,34716,34718,34720,34722,34724,34726,34728,34731,34733,34735,34737,34739,34741,34743,34745,34747,34749,34751],{"class":202,"line":253},[200,34717,10803],{"class":313},[200,34719,13631],{"class":210},[200,34721,13634],{"class":206},[200,34723,283],{"class":210},[200,34725,23364],{"class":317},[200,34727,1966],{"class":210},[200,34729,34730],{"class":317}," error ",[200,34732,21331],{"class":210},[200,34734,1096],{"class":210},[200,34736,13781],{"class":1006},[200,34738,32739],{"class":923},[200,34740,6268],{"class":317},[200,34742,1983],{"class":210},[200,34744,23270],{"class":286},[200,34746,1983],{"class":210},[200,34748,1966],{"class":210},[200,34750,13350],{"class":210},[200,34752,10916],{"class":313},[200,34754,34755,34758,34760,34763],{"class":202,"line":261},[200,34756,34757],{"class":317}," usersApi",[200,34759,3975],{"class":210},[200,34761,34762],{"class":923},"getAll",[200,34764,8169],{"class":317},[200,34766,34767],{"class":202,"line":269},[200,34768,4304],{"class":317},[200,34770,34771],{"class":202,"line":277},[200,34772,376],{"emptyLinePlaceholder":375},[200,34774,34775],{"class":202,"line":417},[200,34776,34777],{"class":555},"// Type-safe component\n",[200,34779,34780,34782,34785,34787,34789,34791,34793,34795,34797,34800,34802],{"class":202,"line":422},[200,34781,10803],{"class":313},[200,34783,34784],{"class":317}," UserCard ",[200,34786,4280],{"class":210},[200,34788,32712],{"class":923},[200,34790,24202],{"class":210},[200,34792,20132],{"class":206},[200,34794,283],{"class":210},[200,34796,33800],{"class":384},[200,34798,34799],{"class":210}," }>",[200,34801,6268],{"class":317},[200,34803,388],{"class":210},[200,34805,34806,34809,34811],{"class":202,"line":29},[200,34807,34808],{"class":206}," props",[200,34810,283],{"class":210},[200,34812,318],{"class":210},[200,34814,34815,34818,34820],{"class":202,"line":445},[200,34816,34817],{"class":206}," user",[200,34819,283],{"class":210},[200,34821,318],{"class":210},[200,34823,34824,34826,34828,34831,34833,34836,34838,34841],{"class":202,"line":455},[200,34825,21731],{"class":206},[200,34827,283],{"class":210},[200,34829,34830],{"class":317}," Object ",[200,34832,18881],{"class":1006},[200,34834,34835],{"class":384}," PropType",[200,34837,10416],{"class":210},[200,34839,34840],{"class":384},"User",[200,34842,34843],{"class":210},">,\n",[200,34845,34846,34849,34851],{"class":202,"line":466},[200,34847,34848],{"class":206}," required",[200,34850,283],{"class":210},[200,34852,1143],{"class":5604},[200,34854,34855],{"class":202,"line":482},[200,34856,414],{"class":210},[200,34858,34859],{"class":202,"line":493},[200,34860,23076],{"class":210},[200,34862,34863,34865,34867,34869,34871],{"class":202,"line":498},[200,34864,31886],{"class":206},[200,34866,20035],{"class":210},[200,34868,20132],{"class":1257},[200,34870,20041],{"class":210},[200,34872,318],{"class":210},[200,34874,34875,34877,34879,34881,34884,34886,34888,34890,34892,34894,34896,34898,34900],{"class":202,"line":503},[200,34876,10733],{"class":1006},[200,34878,13350],{"class":210},[200,34880,6313],{"class":313},[200,34882,34883],{"class":923}," h",[200,34885,6268],{"class":206},[200,34887,1983],{"class":210},[200,34889,20182],{"class":286},[200,34891,1983],{"class":210},[200,34893,1966],{"class":210},[200,34895,20132],{"class":317},[200,34897,3975],{"class":210},[200,34899,1607],{"class":317},[200,34901,4304],{"class":206},[200,34903,34904],{"class":202,"line":515},[200,34905,10383],{"class":210},[200,34907,34908,34910],{"class":202,"line":521},[200,34909,21331],{"class":210},[200,34911,4304],{"class":317},[200,34913,34914,34916,34918],{"class":202,"line":526},[200,34915,22205],{"class":210},[200,34917,22507],{"class":317},[200,34919,10425],{"class":210},[100,34921,34923],{"id":34922},"advanced-type-safety-patterns","Advanced Type Safety Patterns",[123,34925,34927],{"id":34926},"_1-shared-type-definitions","1. Shared Type Definitions",[191,34929,34931],{"className":10095,"code":34930,"language":10097,"meta":196,"style":196},"// shared/types/common.ts\nimport { z } from \"zod\"\n\n// Common response structure\nexport const apiResponseSchema = (dataSchema: T) =>\n z.object({\n data: dataSchema,\n meta: z.object({\n timestamp: z.string().datetime(),\n version: z.string(),\n requestId: z.string().uuid(),\n }),\n })\n\nexport type ApiResponse = z.infer>>\n",[118,34932,34933,34938,34956,34960,34965,35002,35016,35027,35043,35066,35082,35106,35114,35120,35124],{"__ignoreMap":196},[200,34934,34935],{"class":202,"line":203},[200,34936,34937],{"class":555},"// shared/types/common.ts\n",[200,34939,34940,34942,34944,34946,34948,34950,34952,34954],{"class":202,"line":214},[200,34941,22235],{"class":1006},[200,34943,13631],{"class":210},[200,34945,33563],{"class":317},[200,34947,13647],{"class":210},[200,34949,22255],{"class":1006},[200,34951,1030],{"class":210},[200,34953,33572],{"class":286},[200,34955,1036],{"class":210},[200,34957,34958],{"class":202,"line":16},[200,34959,376],{"emptyLinePlaceholder":375},[200,34961,34962],{"class":202,"line":229},[200,34963,34964],{"class":555},"// Common response structure\n",[200,34966,34967,34969,34971,34974,34976,34978,34980,34982,34984,34986,34989,34991,34994,34996,34998,35000],{"class":202,"line":237},[200,34968,13614],{"class":1006},[200,34970,7445],{"class":313},[200,34972,34973],{"class":317}," apiResponseSchema ",[200,34975,4280],{"class":210},[200,34977,17043],{"class":210},[200,34979,23704],{"class":384},[200,34981,12675],{"class":313},[200,34983,33563],{"class":384},[200,34985,3975],{"class":210},[200,34987,34988],{"class":384},"ZodType",[200,34990,23707],{"class":210},[200,34992,34993],{"class":1257},"dataSchema",[200,34995,283],{"class":210},[200,34997,23714],{"class":384},[200,34999,5072],{"class":210},[200,35001,10916],{"class":313},[200,35003,35004,35007,35009,35012,35014],{"class":202,"line":245},[200,35005,35006],{"class":317}," z",[200,35008,3975],{"class":210},[200,35010,35011],{"class":923},"object",[200,35013,6268],{"class":317},[200,35015,388],{"class":210},[200,35017,35018,35020,35022,35025],{"class":202,"line":253},[200,35019,34091],{"class":206},[200,35021,283],{"class":210},[200,35023,35024],{"class":317}," dataSchema",[200,35026,2455],{"class":210},[200,35028,35029,35031,35033,35035,35037,35039,35041],{"class":202,"line":261},[200,35030,34108],{"class":206},[200,35032,283],{"class":210},[200,35034,33563],{"class":317},[200,35036,3975],{"class":210},[200,35038,35011],{"class":923},[200,35040,6268],{"class":317},[200,35042,388],{"class":210},[200,35044,35045,35047,35049,35051,35053,35055,35057,35059,35062,35064],{"class":202,"line":269},[200,35046,10369],{"class":206},[200,35048,283],{"class":210},[200,35050,33563],{"class":317},[200,35052,3975],{"class":210},[200,35054,8386],{"class":923},[200,35056,10978],{"class":317},[200,35058,3975],{"class":210},[200,35060,35061],{"class":923},"datetime",[200,35063,10978],{"class":317},[200,35065,2455],{"class":210},[200,35067,35068,35070,35072,35074,35076,35078,35080],{"class":202,"line":277},[200,35069,34138],{"class":206},[200,35071,283],{"class":210},[200,35073,33563],{"class":317},[200,35075,3975],{"class":210},[200,35077,8386],{"class":923},[200,35079,10978],{"class":317},[200,35081,2455],{"class":210},[200,35083,35084,35087,35089,35091,35093,35095,35097,35099,35102,35104],{"class":202,"line":417},[200,35085,35086],{"class":206}," requestId",[200,35088,283],{"class":210},[200,35090,33563],{"class":317},[200,35092,3975],{"class":210},[200,35094,8386],{"class":923},[200,35096,10978],{"class":317},[200,35098,3975],{"class":210},[200,35100,35101],{"class":923},"uuid",[200,35103,10978],{"class":317},[200,35105,2455],{"class":210},[200,35107,35108,35110,35112],{"class":202,"line":422},[200,35109,34626],{"class":210},[200,35111,5072],{"class":317},[200,35113,2455],{"class":210},[200,35115,35116,35118],{"class":202,"line":29},[200,35117,13682],{"class":210},[200,35119,4304],{"class":317},[200,35121,35122],{"class":202,"line":445},[200,35123,376],{"emptyLinePlaceholder":375},[200,35125,35126,35128,35130,35132,35134,35136,35138,35140,35142,35144,35146,35148,35151,35154,35157,35159,35161],{"class":202,"line":455},[200,35127,13614],{"class":1006},[200,35129,33797],{"class":313},[200,35131,24095],{"class":384},[200,35133,10416],{"class":210},[200,35135,23704],{"class":384},[200,35137,4335],{"class":210},[200,35139,1096],{"class":210},[200,35141,33563],{"class":384},[200,35143,3975],{"class":210},[200,35145,23970],{"class":384},[200,35147,10416],{"class":210},[200,35149,35150],{"class":384},"ReturnType",[200,35152,35153],{"class":210},">>\n",[123,35165,35167],{"id":35166},"_2-type-safe-environment-variables","2. Type-Safe Environment Variables",[191,35169,35171],{"className":10095,"code":35170,"language":10097,"meta":196,"style":196},"// lib/env.ts\nimport { z } from \"zod\"\n\nconst envSchema = z.object({\n DATABASE_URL: z.string().url(),\n API_KEY: z.string().min(1),\n NODE_ENV: z.enum([\"development\", \"production\", \"test\"]),\n})\n\nexport const env = envSchema.parse(process.env)\nexport type Env = z.infer\n",[118,35172,35173,35178,35196,35200,35219,35242,35270,35315,35321,35325,35352],{"__ignoreMap":196},[200,35174,35175],{"class":202,"line":203},[200,35176,35177],{"class":555},"// lib/env.ts\n",[200,35179,35180,35182,35184,35186,35188,35190,35192,35194],{"class":202,"line":214},[200,35181,22235],{"class":1006},[200,35183,13631],{"class":210},[200,35185,33563],{"class":317},[200,35187,13647],{"class":210},[200,35189,22255],{"class":1006},[200,35191,1030],{"class":210},[200,35193,33572],{"class":286},[200,35195,1036],{"class":210},[200,35197,35198],{"class":202,"line":16},[200,35199,376],{"emptyLinePlaceholder":375},[200,35201,35202,35204,35207,35209,35211,35213,35215,35217],{"class":202,"line":229},[200,35203,10803],{"class":313},[200,35205,35206],{"class":317}," envSchema ",[200,35208,4280],{"class":210},[200,35210,33563],{"class":317},[200,35212,3975],{"class":210},[200,35214,35011],{"class":923},[200,35216,6268],{"class":317},[200,35218,388],{"class":210},[200,35220,35221,35224,35226,35228,35230,35232,35234,35236,35238,35240],{"class":202,"line":237},[200,35222,35223],{"class":206}," DATABASE_URL",[200,35225,283],{"class":210},[200,35227,33563],{"class":317},[200,35229,3975],{"class":210},[200,35231,8386],{"class":923},[200,35233,10978],{"class":317},[200,35235,3975],{"class":210},[200,35237,28168],{"class":923},[200,35239,10978],{"class":317},[200,35241,2455],{"class":210},[200,35243,35244,35247,35249,35251,35253,35255,35257,35259,35262,35264,35266,35268],{"class":202,"line":245},[200,35245,35246],{"class":206}," API_KEY",[200,35248,283],{"class":210},[200,35250,33563],{"class":317},[200,35252,3975],{"class":210},[200,35254,8386],{"class":923},[200,35256,10978],{"class":317},[200,35258,3975],{"class":210},[200,35260,35261],{"class":923},"min",[200,35263,6268],{"class":317},[200,35265,18008],{"class":326},[200,35267,5072],{"class":317},[200,35269,2455],{"class":210},[200,35271,35272,35275,35277,35279,35281,35283,35285,35287,35290,35292,35294,35296,35299,35301,35303,35305,35308,35310,35313],{"class":202,"line":253},[200,35273,35274],{"class":206}," NODE_ENV",[200,35276,283],{"class":210},[200,35278,33563],{"class":317},[200,35280,3975],{"class":210},[200,35282,12939],{"class":923},[200,35284,6303],{"class":317},[200,35286,1093],{"class":210},[200,35288,35289],{"class":286},"development",[200,35291,1093],{"class":210},[200,35293,1966],{"class":210},[200,35295,1030],{"class":210},[200,35297,35298],{"class":286},"production",[200,35300,1093],{"class":210},[200,35302,1966],{"class":210},[200,35304,1030],{"class":210},[200,35306,35307],{"class":286},"test",[200,35309,1093],{"class":210},[200,35311,35312],{"class":317},"])",[200,35314,2455],{"class":210},[200,35316,35317,35319],{"class":202,"line":261},[200,35318,21331],{"class":210},[200,35320,4304],{"class":317},[200,35322,35323],{"class":202,"line":269},[200,35324,376],{"emptyLinePlaceholder":375},[200,35326,35327,35329,35331,35334,35336,35339,35341,35344,35347,35349],{"class":202,"line":277},[200,35328,13614],{"class":1006},[200,35330,7445],{"class":313},[200,35332,35333],{"class":317}," env ",[200,35335,4280],{"class":210},[200,35337,35338],{"class":317}," envSchema",[200,35340,3975],{"class":210},[200,35342,35343],{"class":923},"parse",[200,35345,35346],{"class":317},"(process",[200,35348,3975],{"class":210},[200,35350,35351],{"class":317},"env)\n",[200,35353,35354,35356,35358,35361,35363,35365,35367,35369,35371,35373],{"class":202,"line":417},[200,35355,13614],{"class":1006},[200,35357,33797],{"class":313},[200,35359,35360],{"class":384}," Env",[200,35362,1096],{"class":210},[200,35364,33563],{"class":384},[200,35366,3975],{"class":210},[200,35368,23970],{"class":384},[200,35370,35153],{"class":210},[200,35372,35338],{"class":317},[200,35374,10425],{"class":210},[123,35376,35378],{"id":35377},"_3-database-migrations-with-type-safety","3. Database Migrations with Type Safety",[191,35380,35382],{"className":10095,"code":35381,"language":10097,"meta":196,"style":196},"// db/migrations/001_create_users.ts\nimport { sql } from \"drizzle-orm\"\n\nexport async function up() {\n await sql`\n CREATE TABLE users (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n email TEXT NOT NULL UNIQUE,\n name TEXT NOT NULL,\n created_at TIMESTAMPTZ DEFAULT NOW()\n )\n `\n}\n\nexport async function down() {\n await sql`DROP TABLE users`\n}\n",[118,35383,35384,35389,35409,35413,35428,35437,35442,35447,35452,35457,35462,35466,35471,35475,35479,35494,35507],{"__ignoreMap":196},[200,35385,35386],{"class":202,"line":203},[200,35387,35388],{"class":555},"// db/migrations/001_create_users.ts\n",[200,35390,35391,35393,35395,35398,35400,35402,35404,35407],{"class":202,"line":214},[200,35392,22235],{"class":1006},[200,35394,13631],{"class":210},[200,35396,35397],{"class":317}," sql",[200,35399,13647],{"class":210},[200,35401,22255],{"class":1006},[200,35403,1030],{"class":210},[200,35405,35406],{"class":286},"drizzle-orm",[200,35408,1036],{"class":210},[200,35410,35411],{"class":202,"line":16},[200,35412,376],{"emptyLinePlaceholder":375},[200,35414,35415,35417,35419,35421,35424,35426],{"class":202,"line":229},[200,35416,13614],{"class":1006},[200,35418,11089],{"class":313},[200,35420,6225],{"class":313},[200,35422,35423],{"class":923}," up",[200,35425,10978],{"class":210},[200,35427,318],{"class":210},[200,35429,35430,35432,35434],{"class":202,"line":237},[200,35431,31537],{"class":1006},[200,35433,35397],{"class":923},[200,35435,35436],{"class":210},"`\n",[200,35438,35439],{"class":202,"line":245},[200,35440,35441],{"class":286}," CREATE TABLE users (\n",[200,35443,35444],{"class":202,"line":253},[200,35445,35446],{"class":286}," id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n",[200,35448,35449],{"class":202,"line":261},[200,35450,35451],{"class":286}," email TEXT NOT NULL UNIQUE,\n",[200,35453,35454],{"class":202,"line":269},[200,35455,35456],{"class":286}," name TEXT NOT NULL,\n",[200,35458,35459],{"class":202,"line":277},[200,35460,35461],{"class":286}," created_at TIMESTAMPTZ DEFAULT NOW()\n",[200,35463,35464],{"class":202,"line":417},[200,35465,10985],{"class":286},[200,35467,35468],{"class":202,"line":422},[200,35469,35470],{"class":210}," `\n",[200,35472,35473],{"class":202,"line":29},[200,35474,529],{"class":210},[200,35476,35477],{"class":202,"line":445},[200,35478,376],{"emptyLinePlaceholder":375},[200,35480,35481,35483,35485,35487,35490,35492],{"class":202,"line":455},[200,35482,13614],{"class":1006},[200,35484,11089],{"class":313},[200,35486,6225],{"class":313},[200,35488,35489],{"class":923}," down",[200,35491,10978],{"class":210},[200,35493,318],{"class":210},[200,35495,35496,35498,35500,35502,35505],{"class":202,"line":466},[200,35497,31537],{"class":1006},[200,35499,35397],{"class":923},[200,35501,20084],{"class":210},[200,35503,35504],{"class":286},"DROP TABLE users",[200,35506,35436],{"class":210},[200,35508,35509],{"class":202,"line":482},[200,35510,529],{"class":210},[100,35512,35514],{"id":35513},"real-world-example-e-commerce-product-api","Real-World Example: E-Commerce Product API",[123,35516,35518],{"id":35517},"database-schema","Database Schema",[191,35520,35522],{"className":10095,"code":35521,"language":10097,"meta":196,"style":196},"// db/schema/products.ts\nexport const products = pgTable(\"products\", {\n id: uuid(\"id\").primaryKey(),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n price: numeric(\"price\").notNull(),\n inventory: integer(\"inventory\").default(0),\n categoryId: uuid(\"category_id\").references(() => categories.id),\n})\n",[118,35523,35524,35529,35554,35580,35606,35626,35655,35688,35729],{"__ignoreMap":196},[200,35525,35526],{"class":202,"line":203},[200,35527,35528],{"class":555},"// db/schema/products.ts\n",[200,35530,35531,35533,35535,35538,35540,35542,35544,35546,35548,35550,35552],{"class":202,"line":214},[200,35532,13614],{"class":1006},[200,35534,7445],{"class":313},[200,35536,35537],{"class":317}," products ",[200,35539,4280],{"class":210},[200,35541,33503],{"class":923},[200,35543,6268],{"class":317},[200,35545,1093],{"class":210},[200,35547,20800],{"class":286},[200,35549,1093],{"class":210},[200,35551,1966],{"class":210},[200,35553,318],{"class":210},[200,35555,35556,35558,35560,35562,35564,35566,35568,35570,35572,35574,35576,35578],{"class":202,"line":16},[200,35557,16175],{"class":206},[200,35559,283],{"class":210},[200,35561,33518],{"class":923},[200,35563,6268],{"class":317},[200,35565,1093],{"class":210},[200,35567,6905],{"class":286},[200,35569,1093],{"class":210},[200,35571,5072],{"class":317},[200,35573,3975],{"class":210},[200,35575,33626],{"class":923},[200,35577,10978],{"class":317},[200,35579,2455],{"class":210},[200,35581,35582,35584,35586,35588,35590,35592,35594,35596,35598,35600,35602,35604],{"class":202,"line":229},[200,35583,33678],{"class":206},[200,35585,283],{"class":210},[200,35587,33508],{"class":923},[200,35589,6268],{"class":317},[200,35591,1093],{"class":210},[200,35593,1607],{"class":286},[200,35595,1093],{"class":210},[200,35597,5072],{"class":317},[200,35599,3975],{"class":210},[200,35601,33662],{"class":923},[200,35603,10978],{"class":317},[200,35605,2455],{"class":210},[200,35607,35608,35610,35612,35614,35616,35618,35620,35622,35624],{"class":202,"line":237},[200,35609,18295],{"class":206},[200,35611,283],{"class":210},[200,35613,33508],{"class":923},[200,35615,6268],{"class":317},[200,35617,1093],{"class":210},[200,35619,18338],{"class":286},[200,35621,1093],{"class":210},[200,35623,5072],{"class":317},[200,35625,2455],{"class":210},[200,35627,35628,35631,35633,35636,35638,35640,35643,35645,35647,35649,35651,35653],{"class":202,"line":245},[200,35629,35630],{"class":206}," price",[200,35632,283],{"class":210},[200,35634,35635],{"class":923}," numeric",[200,35637,6268],{"class":317},[200,35639,1093],{"class":210},[200,35641,35642],{"class":286},"price",[200,35644,1093],{"class":210},[200,35646,5072],{"class":317},[200,35648,3975],{"class":210},[200,35650,33662],{"class":923},[200,35652,10978],{"class":317},[200,35654,2455],{"class":210},[200,35656,35657,35660,35662,35665,35667,35669,35672,35674,35676,35678,35680,35682,35684,35686],{"class":202,"line":253},[200,35658,35659],{"class":206}," inventory",[200,35661,283],{"class":210},[200,35663,35664],{"class":923}," integer",[200,35666,6268],{"class":317},[200,35668,1093],{"class":210},[200,35670,35671],{"class":286},"inventory",[200,35673,1093],{"class":210},[200,35675,5072],{"class":317},[200,35677,3975],{"class":210},[200,35679,9227],{"class":923},[200,35681,6268],{"class":317},[200,35683,20921],{"class":326},[200,35685,5072],{"class":317},[200,35687,2455],{"class":210},[200,35689,35690,35693,35695,35697,35699,35701,35704,35706,35708,35710,35713,35715,35717,35719,35722,35724,35727],{"class":202,"line":261},[200,35691,35692],{"class":206}," categoryId",[200,35694,283],{"class":210},[200,35696,33518],{"class":923},[200,35698,6268],{"class":317},[200,35700,1093],{"class":210},[200,35702,35703],{"class":286},"category_id",[200,35705,1093],{"class":210},[200,35707,5072],{"class":317},[200,35709,3975],{"class":210},[200,35711,35712],{"class":923},"references",[200,35714,6268],{"class":317},[200,35716,10978],{"class":210},[200,35718,6313],{"class":313},[200,35720,35721],{"class":317}," categories",[200,35723,3975],{"class":210},[200,35725,35726],{"class":317},"id)",[200,35728,2455],{"class":210},[200,35730,35731,35733],{"class":202,"line":269},[200,35732,21331],{"class":210},[200,35734,4304],{"class":317},[123,35736,35738],{"id":35737},"api-route","API Route",[191,35740,35742],{"className":10095,"code":35741,"language":10097,"meta":196,"style":196},"// server/routes/api/products.ts\napp.get(\n \"/products/:id\",\n zValidator(\"param\", z.object({ id: z.string().uuid() })),\n async (c) => {\n const { id } = c.req.valid(\"param\")\n\n const product = await db.query.products.findFirst({\n where: eq(products.id, id),\n with: {\n category: true,\n images: true,\n },\n })\n\n if (!product) {\n return c.json({ error: \"Product not found\" }, 404)\n }\n\n return c.json({ data: product })\n },\n)\n",[118,35743,35744,35749,35759,35770,35820,35834,35866,35870,35899,35925,35934,35945,35956,35960,35966,35970,35984,36016,36020,36024,36048,36052],{"__ignoreMap":196},[200,35745,35746],{"class":202,"line":203},[200,35747,35748],{"class":555},"// server/routes/api/products.ts\n",[200,35750,35751,35753,35755,35757],{"class":202,"line":214},[200,35752,33944],{"class":317},[200,35754,3975],{"class":210},[200,35756,7657],{"class":923},[200,35758,6231],{"class":317},[200,35760,35761,35763,35766,35768],{"class":202,"line":16},[200,35762,15331],{"class":210},[200,35764,35765],{"class":286},"/products/:id",[200,35767,1093],{"class":210},[200,35769,2455],{"class":210},[200,35771,35772,35775,35777,35779,35782,35784,35786,35788,35790,35792,35794,35796,35798,35800,35802,35804,35806,35808,35810,35812,35814,35816,35818],{"class":202,"line":229},[200,35773,35774],{"class":923}," zValidator",[200,35776,6268],{"class":317},[200,35778,1093],{"class":210},[200,35780,35781],{"class":286},"param",[200,35783,1093],{"class":210},[200,35785,1966],{"class":210},[200,35787,33563],{"class":317},[200,35789,3975],{"class":210},[200,35791,35011],{"class":923},[200,35793,6268],{"class":317},[200,35795,17294],{"class":210},[200,35797,17297],{"class":206},[200,35799,283],{"class":210},[200,35801,33563],{"class":317},[200,35803,3975],{"class":210},[200,35805,8386],{"class":923},[200,35807,10978],{"class":317},[200,35809,3975],{"class":210},[200,35811,35101],{"class":923},[200,35813,10947],{"class":317},[200,35815,21331],{"class":210},[200,35817,7665],{"class":317},[200,35819,2455],{"class":210},[200,35821,35822,35824,35826,35828,35830,35832],{"class":202,"line":237},[200,35823,10515],{"class":313},[200,35825,5253],{"class":210},[200,35827,33983],{"class":1257},[200,35829,5072],{"class":210},[200,35831,6313],{"class":313},[200,35833,318],{"class":210},[200,35835,35836,35838,35840,35842,35844,35846,35848,35850,35852,35854,35856,35858,35860,35862,35864],{"class":202,"line":245},[200,35837,10640],{"class":313},[200,35839,13631],{"class":210},[200,35841,17297],{"class":317},[200,35843,13647],{"class":210},[200,35845,1096],{"class":210},[200,35847,34000],{"class":317},[200,35849,3975],{"class":210},[200,35851,34005],{"class":317},[200,35853,3975],{"class":210},[200,35855,13745],{"class":923},[200,35857,6268],{"class":206},[200,35859,1093],{"class":210},[200,35861,35781],{"class":286},[200,35863,1093],{"class":210},[200,35865,4304],{"class":206},[200,35867,35868],{"class":202,"line":253},[200,35869,376],{"emptyLinePlaceholder":375},[200,35871,35872,35874,35876,35878,35880,35882,35884,35886,35888,35890,35892,35895,35897],{"class":202,"line":261},[200,35873,10640],{"class":313},[200,35875,20761],{"class":317},[200,35877,1096],{"class":210},[200,35879,13781],{"class":1006},[200,35881,32573],{"class":317},[200,35883,3975],{"class":210},[200,35885,32578],{"class":317},[200,35887,3975],{"class":210},[200,35889,20800],{"class":317},[200,35891,3975],{"class":210},[200,35893,35894],{"class":923},"findFirst",[200,35896,6268],{"class":206},[200,35898,388],{"class":210},[200,35900,35901,35904,35906,35909,35911,35913,35915,35917,35919,35921,35923],{"class":202,"line":269},[200,35902,35903],{"class":206}," where",[200,35905,283],{"class":210},[200,35907,35908],{"class":923}," eq",[200,35910,6268],{"class":206},[200,35912,20800],{"class":317},[200,35914,3975],{"class":210},[200,35916,6905],{"class":317},[200,35918,1966],{"class":210},[200,35920,17297],{"class":317},[200,35922,5072],{"class":206},[200,35924,2455],{"class":210},[200,35926,35927,35930,35932],{"class":202,"line":277},[200,35928,35929],{"class":206}," with",[200,35931,283],{"class":210},[200,35933,318],{"class":210},[200,35935,35936,35939,35941,35943],{"class":202,"line":417},[200,35937,35938],{"class":206}," category",[200,35940,283],{"class":210},[200,35942,21477],{"class":5604},[200,35944,2455],{"class":210},[200,35946,35947,35950,35952,35954],{"class":202,"line":422},[200,35948,35949],{"class":206}," images",[200,35951,283],{"class":210},[200,35953,21477],{"class":5604},[200,35955,2455],{"class":210},[200,35957,35958],{"class":202,"line":29},[200,35959,20390],{"class":210},[200,35961,35962,35964],{"class":202,"line":445},[200,35963,34626],{"class":210},[200,35965,4304],{"class":206},[200,35967,35968],{"class":202,"line":455},[200,35969,376],{"emptyLinePlaceholder":375},[200,35971,35972,35974,35976,35978,35980,35982],{"class":202,"line":466},[200,35973,10663],{"class":1006},[200,35975,5253],{"class":206},[200,35977,10668],{"class":210},[200,35979,20718],{"class":317},[200,35981,10673],{"class":206},[200,35983,388],{"class":210},[200,35985,35986,35988,35990,35992,35994,35996,35998,36000,36002,36004,36007,36009,36011,36014],{"class":202,"line":482},[200,35987,10722],{"class":1006},[200,35989,34000],{"class":317},[200,35991,3975],{"class":210},[200,35993,6659],{"class":923},[200,35995,6268],{"class":206},[200,35997,17294],{"class":210},[200,35999,13639],{"class":206},[200,36001,283],{"class":210},[200,36003,1030],{"class":210},[200,36005,36006],{"class":286},"Product not found",[200,36008,1093],{"class":210},[200,36010,22993],{"class":210},[200,36012,36013],{"class":326}," 404",[200,36015,4304],{"class":206},[200,36017,36018],{"class":202,"line":493},[200,36019,414],{"class":210},[200,36021,36022],{"class":202,"line":498},[200,36023,376],{"emptyLinePlaceholder":375},[200,36025,36026,36028,36030,36032,36034,36036,36038,36040,36042,36044,36046],{"class":202,"line":503},[200,36027,10733],{"class":1006},[200,36029,34000],{"class":317},[200,36031,3975],{"class":210},[200,36033,6659],{"class":923},[200,36035,6268],{"class":206},[200,36037,17294],{"class":210},[200,36039,13634],{"class":206},[200,36041,283],{"class":210},[200,36043,20761],{"class":317},[200,36045,13647],{"class":210},[200,36047,4304],{"class":206},[200,36049,36050],{"class":202,"line":515},[200,36051,23076],{"class":210},[200,36053,36054],{"class":202,"line":521},[200,36055,4304],{"class":317},[123,36057,36059],{"id":36058},"frontend-component","Frontend Component",[191,36061,36065],{"className":36062,"code":36063,"language":36064,"meta":196,"style":196},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\n\n\n\n","vue",[118,36066,36067,36072,36094,36115,36119,36133,36143,36150,36154,36172,36198,36214,36229,36258,36262,36270,36274,36282,36302,36319,36336,36344],{"__ignoreMap":196},[200,36068,36069],{"class":202,"line":203},[200,36070,36071],{"class":555},"\n",[200,36073,36074,36076,36078,36081,36084,36086,36088,36090,36092],{"class":202,"line":214},[200,36075,10416],{"class":210},[200,36077,22507],{"class":206},[200,36079,36080],{"class":313}," setup",[200,36082,36083],{"class":313}," lang",[200,36085,4280],{"class":210},[200,36087,1093],{"class":210},[200,36089,29012],{"class":286},[200,36091,1093],{"class":210},[200,36093,10425],{"class":210},[200,36095,36096,36098,36100,36102,36105,36107,36109,36111,36113],{"class":202,"line":16},[200,36097,22235],{"class":1006},[200,36099,33797],{"class":1006},[200,36101,13631],{"class":210},[200,36103,36104],{"class":317}," Product",[200,36106,13647],{"class":210},[200,36108,22255],{"class":1006},[200,36110,1030],{"class":210},[200,36112,33909],{"class":286},[200,36114,1036],{"class":210},[200,36116,36117],{"class":202,"line":229},[200,36118,376],{"emptyLinePlaceholder":375},[200,36120,36121,36123,36126,36128,36131],{"class":202,"line":237},[200,36122,10803],{"class":313},[200,36124,36125],{"class":317}," props ",[200,36127,4280],{"class":210},[200,36129,36130],{"class":923}," defineProps",[200,36132,10326],{"class":210},[200,36134,36135,36138,36140],{"class":202,"line":245},[200,36136,36137],{"class":206}," product",[200,36139,283],{"class":210},[200,36141,36142],{"class":384}," Product\n",[200,36144,36145,36148],{"class":202,"line":253},[200,36146,36147],{"class":210},"}>",[200,36149,8169],{"class":317},[200,36151,36152],{"class":202,"line":261},[200,36153,376],{"emptyLinePlaceholder":375},[200,36155,36156,36158,36161,36163,36166,36168,36170],{"class":202,"line":269},[200,36157,10803],{"class":313},[200,36159,36160],{"class":317}," formattedPrice ",[200,36162,4280],{"class":210},[200,36164,36165],{"class":923}," computed",[200,36167,6268],{"class":317},[200,36169,10978],{"class":210},[200,36171,10916],{"class":313},[200,36173,36174,36177,36180,36182,36185,36187,36189,36192,36194,36196],{"class":202,"line":277},[200,36175,36176],{"class":210}," new",[200,36178,36179],{"class":317}," Intl",[200,36181,3975],{"class":210},[200,36183,36184],{"class":923},"NumberFormat",[200,36186,6268],{"class":317},[200,36188,1093],{"class":210},[200,36190,36191],{"class":286},"en-US",[200,36193,1093],{"class":210},[200,36195,1966],{"class":210},[200,36197,318],{"class":210},[200,36199,36200,36203,36205,36207,36210,36212],{"class":202,"line":417},[200,36201,36202],{"class":206}," style",[200,36204,283],{"class":210},[200,36206,1030],{"class":210},[200,36208,36209],{"class":286},"currency",[200,36211,1093],{"class":210},[200,36213,2455],{"class":210},[200,36215,36216,36219,36221,36223,36225,36227],{"class":202,"line":422},[200,36217,36218],{"class":206}," currency",[200,36220,283],{"class":210},[200,36222,1030],{"class":210},[200,36224,41],{"class":286},[200,36226,1093],{"class":210},[200,36228,2455],{"class":210},[200,36230,36231,36233,36235,36237,36239,36241,36244,36247,36249,36251,36253,36256],{"class":202,"line":29},[200,36232,13682],{"class":210},[200,36234,5072],{"class":317},[200,36236,3975],{"class":210},[200,36238,8532],{"class":923},[200,36240,6268],{"class":317},[200,36242,36243],{"class":923},"Number",[200,36245,36246],{"class":317},"(props",[200,36248,3975],{"class":210},[200,36250,20718],{"class":317},[200,36252,3975],{"class":210},[200,36254,36255],{"class":317},"price))",[200,36257,2455],{"class":210},[200,36259,36260],{"class":202,"line":445},[200,36261,4304],{"class":317},[200,36263,36264,36266,36268],{"class":202,"line":455},[200,36265,22205],{"class":210},[200,36267,22507],{"class":206},[200,36269,10425],{"class":210},[200,36271,36272],{"class":202,"line":466},[200,36273,376],{"emptyLinePlaceholder":375},[200,36275,36276,36278,36280],{"class":202,"line":482},[200,36277,10416],{"class":210},[200,36279,22112],{"class":206},[200,36281,10425],{"class":210},[200,36283,36284,36286,36288,36291,36293,36295,36298,36300],{"class":202,"line":493},[200,36285,22119],{"class":210},[200,36287,20182],{"class":206},[200,36289,36290],{"class":313}," class",[200,36292,4280],{"class":210},[200,36294,1093],{"class":210},[200,36296,36297],{"class":286},"product-card",[200,36299,1093],{"class":210},[200,36301,10425],{"class":210},[200,36303,36304,36306,36308,36310,36313,36315,36317],{"class":202,"line":498},[200,36305,20788],{"class":210},[200,36307,123],{"class":206},[200,36309,4335],{"class":210},[200,36311,36312],{"class":317},"{{ product.name }}",[200,36314,22205],{"class":210},[200,36316,123],{"class":206},[200,36318,10425],{"class":210},[200,36320,36321,36323,36325,36327,36330,36332,36334],{"class":202,"line":503},[200,36322,20788],{"class":210},[200,36324,104],{"class":206},[200,36326,4335],{"class":210},[200,36328,36329],{"class":317},"{{ formattedPrice }}",[200,36331,22205],{"class":210},[200,36333,104],{"class":206},[200,36335,10425],{"class":210},[200,36337,36338,36340,36342],{"class":202,"line":515},[200,36339,22139],{"class":210},[200,36341,20182],{"class":206},[200,36343,10425],{"class":210},[200,36345,36346,36348,36350],{"class":202,"line":521},[200,36347,22205],{"class":210},[200,36349,22112],{"class":206},[200,36351,10425],{"class":210},[100,36353,20990],{"id":20989},[123,36355,36357],{"id":36356},"pitfall-1-type-widening","Pitfall 1: Type Widening",[191,36359,36361],{"className":10095,"code":36360,"language":10097,"meta":196,"style":196},"// ❌ Bad: Type is widened to string\nconst id = query.id // string\n\n// ✅ Good: Preserve literal type\nconst id = query.id as string & {}\n",[118,36362,36363,36368,36388,36392,36397],{"__ignoreMap":196},[200,36364,36365],{"class":202,"line":203},[200,36366,36367],{"class":555},"// ❌ Bad: Type is widened to string\n",[200,36369,36370,36372,36375,36377,36380,36382,36385],{"class":202,"line":214},[200,36371,10803],{"class":313},[200,36373,36374],{"class":317}," id ",[200,36376,4280],{"class":210},[200,36378,36379],{"class":317}," query",[200,36381,3975],{"class":210},[200,36383,36384],{"class":317},"id ",[200,36386,36387],{"class":555},"// string\n",[200,36389,36390],{"class":202,"line":16},[200,36391,376],{"emptyLinePlaceholder":375},[200,36393,36394],{"class":202,"line":229},[200,36395,36396],{"class":555},"// ✅ Good: Preserve literal type\n",[200,36398,36399,36401,36403,36405,36407,36409,36411,36413,36415,36418],{"class":202,"line":237},[200,36400,10803],{"class":313},[200,36402,36374],{"class":317},[200,36404,4280],{"class":210},[200,36406,36379],{"class":317},[200,36408,3975],{"class":210},[200,36410,36384],{"class":317},[200,36412,18881],{"class":1006},[200,36414,7591],{"class":384},[200,36416,36417],{"class":210}," &",[200,36419,6252],{"class":210},[123,36421,36423],{"id":36422},"pitfall-2-missing-runtime-validation","Pitfall 2: Missing Runtime Validation",[191,36425,36427],{"className":10095,"code":36426,"language":10097,"meta":196,"style":196},"// ❌ Bad: TypeScript types only exist at compile time\ninterface User {\n id: string\n email: string\n}\n\nfunction createUser(data: unknown) {\n const user = data as User // Unsafe!\n}\n\n// ✅ Good: Validate at runtime with Zod\nconst userSchema = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n})\n\nfunction createUser(data: unknown) {\n const user = userSchema.parse(data) // Safe!\n return user\n}\n",[118,36428,36429,36434,36442,36450,36458,36462,36466,36485,36503,36507,36511,36516,36535,36557,36579,36585,36589,36607,36631,36638],{"__ignoreMap":196},[200,36430,36431],{"class":202,"line":203},[200,36432,36433],{"class":555},"// ❌ Bad: TypeScript types only exist at compile time\n",[200,36435,36436,36438,36440],{"class":202,"line":214},[200,36437,10118],{"class":313},[200,36439,33800],{"class":384},[200,36441,318],{"class":210},[200,36443,36444,36446,36448],{"class":202,"line":16},[200,36445,16175],{"class":206},[200,36447,283],{"class":210},[200,36449,10143],{"class":384},[200,36451,36452,36454,36456],{"class":202,"line":229},[200,36453,33642],{"class":206},[200,36455,283],{"class":210},[200,36457,10143],{"class":384},[200,36459,36460],{"class":202,"line":237},[200,36461,529],{"class":210},[200,36463,36464],{"class":202,"line":245},[200,36465,376],{"emptyLinePlaceholder":375},[200,36467,36468,36470,36473,36475,36477,36479,36481,36483],{"class":202,"line":253},[200,36469,13347],{"class":313},[200,36471,36472],{"class":923}," createUser",[200,36474,6268],{"class":210},[200,36476,14324],{"class":1257},[200,36478,283],{"class":210},[200,36480,16128],{"class":384},[200,36482,5072],{"class":210},[200,36484,318],{"class":210},[200,36486,36487,36489,36491,36493,36495,36498,36500],{"class":202,"line":261},[200,36488,13628],{"class":313},[200,36490,20132],{"class":317},[200,36492,1096],{"class":210},[200,36494,13634],{"class":317},[200,36496,36497],{"class":1006}," as",[200,36499,33800],{"class":384},[200,36501,36502],{"class":555}," // Unsafe!\n",[200,36504,36505],{"class":202,"line":269},[200,36506,529],{"class":210},[200,36508,36509],{"class":202,"line":277},[200,36510,376],{"emptyLinePlaceholder":375},[200,36512,36513],{"class":202,"line":417},[200,36514,36515],{"class":555},"// ✅ Good: Validate at runtime with Zod\n",[200,36517,36518,36520,36523,36525,36527,36529,36531,36533],{"class":202,"line":422},[200,36519,10803],{"class":313},[200,36521,36522],{"class":317}," userSchema ",[200,36524,4280],{"class":210},[200,36526,33563],{"class":317},[200,36528,3975],{"class":210},[200,36530,35011],{"class":923},[200,36532,6268],{"class":317},[200,36534,388],{"class":210},[200,36536,36537,36539,36541,36543,36545,36547,36549,36551,36553,36555],{"class":202,"line":29},[200,36538,16175],{"class":206},[200,36540,283],{"class":210},[200,36542,33563],{"class":317},[200,36544,3975],{"class":210},[200,36546,8386],{"class":923},[200,36548,10978],{"class":317},[200,36550,3975],{"class":210},[200,36552,35101],{"class":923},[200,36554,10978],{"class":317},[200,36556,2455],{"class":210},[200,36558,36559,36561,36563,36565,36567,36569,36571,36573,36575,36577],{"class":202,"line":445},[200,36560,33642],{"class":206},[200,36562,283],{"class":210},[200,36564,33563],{"class":317},[200,36566,3975],{"class":210},[200,36568,8386],{"class":923},[200,36570,10978],{"class":317},[200,36572,3975],{"class":210},[200,36574,33653],{"class":923},[200,36576,10978],{"class":317},[200,36578,2455],{"class":210},[200,36580,36581,36583],{"class":202,"line":455},[200,36582,21331],{"class":210},[200,36584,4304],{"class":317},[200,36586,36587],{"class":202,"line":466},[200,36588,376],{"emptyLinePlaceholder":375},[200,36590,36591,36593,36595,36597,36599,36601,36603,36605],{"class":202,"line":482},[200,36592,13347],{"class":313},[200,36594,36472],{"class":923},[200,36596,6268],{"class":210},[200,36598,14324],{"class":1257},[200,36600,283],{"class":210},[200,36602,16128],{"class":384},[200,36604,5072],{"class":210},[200,36606,318],{"class":210},[200,36608,36609,36611,36613,36615,36618,36620,36622,36624,36626,36628],{"class":202,"line":493},[200,36610,13628],{"class":313},[200,36612,20132],{"class":317},[200,36614,1096],{"class":210},[200,36616,36617],{"class":317}," userSchema",[200,36619,3975],{"class":210},[200,36621,35343],{"class":923},[200,36623,6268],{"class":206},[200,36625,14324],{"class":317},[200,36627,10673],{"class":206},[200,36629,36630],{"class":555},"// Safe!\n",[200,36632,36633,36635],{"class":202,"line":498},[200,36634,13913],{"class":1006},[200,36636,36637],{"class":317}," user\n",[200,36639,36640],{"class":202,"line":503},[200,36641,529],{"class":210},[123,36643,36645],{"id":36644},"pitfall-3-inconsistent-types-across-services","Pitfall 3: Inconsistent Types Across Services",[104,36647,36648,36650],{},[137,36649,4679],{},": Use a shared types package:",[191,36652,36654],{"className":909,"code":36653,"language":911,"meta":196,"style":196},"# packages/types/package.json\n{\n \"name\": \"@myapp/types\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./schema\": \"./dist/schema.js\"\n }\n}\n",[118,36655,36656,36661,36665,36681,36690,36706,36720,36724],{"__ignoreMap":196},[200,36657,36658],{"class":202,"line":203},[200,36659,36660],{"class":555},"# packages/types/package.json\n",[200,36662,36663],{"class":202,"line":214},[200,36664,388],{"class":210},[200,36666,36667,36670,36672,36674,36677,36679],{"class":202,"line":16},[200,36668,36669],{"class":384}," \"name\"",[200,36671,283],{"class":923},[200,36673,1030],{"class":210},[200,36675,36676],{"class":286},"@myapp/types",[200,36678,1093],{"class":210},[200,36680,2455],{"class":286},[200,36682,36683,36686,36688],{"class":202,"line":229},[200,36684,36685],{"class":384}," \"exports\"",[200,36687,283],{"class":923},[200,36689,318],{"class":286},[200,36691,36692,36695,36697,36699,36702,36704],{"class":202,"line":237},[200,36693,36694],{"class":384}," \".\"",[200,36696,283],{"class":923},[200,36698,1030],{"class":210},[200,36700,36701],{"class":286},"./dist/index.js",[200,36703,1093],{"class":210},[200,36705,2455],{"class":286},[200,36707,36708,36711,36713,36715,36718],{"class":202,"line":245},[200,36709,36710],{"class":384}," \"./schema\"",[200,36712,283],{"class":923},[200,36714,1030],{"class":210},[200,36716,36717],{"class":286},"./dist/schema.js",[200,36719,1036],{"class":210},[200,36721,36722],{"class":202,"line":253},[200,36723,10383],{"class":210},[200,36725,36726],{"class":202,"line":261},[200,36727,529],{"class":317},[100,36729,36731],{"id":36730},"tools-and-libraries-for-2026","Tools and Libraries for 2026",[123,36733,36735],{"id":36734},"type-generation","Type Generation",[131,36737,36738,36744,36750,36756],{},[134,36739,36740,36743],{},[137,36741,36742],{},"drizzle-kit",": Database schema to TypeScript types",[134,36745,36746,36749],{},[137,36747,36748],{},"openapi-typescript",": OpenAPI/Swagger to TypeScript",[134,36751,36752,36755],{},[137,36753,36754],{},"graphql-codegen",": GraphQL to TypeScript",[134,36757,36758,36761],{},[137,36759,36760],{},"tRPC",": End-to-end typesafe APIs",[123,36763,36764],{"id":13740},"Validation",[131,36766,36767,36773,36779],{},[134,36768,36769,36772],{},[137,36770,36771],{},"Zod",": TypeScript-first schema validation",[134,36774,36775,36778],{},[137,36776,36777],{},"Valibot",": Lightweight alternative to Zod",[134,36780,36781,36784],{},[137,36782,36783],{},"ArkType",": High-performance validation",[123,36786,36788],{"id":36787},"api-clients","API Clients",[131,36790,36791,36797,36803],{},[134,36792,36793,36796],{},[137,36794,36795],{},"TanStack Query",": Data fetching with types",[134,36798,36799,36802],{},[137,36800,36801],{},"SWR",": React Hooks for data fetching",[134,36804,36805,36808],{},[137,36806,36807],{},"TRPC Client",": End-to-end typesafe RPC",[100,36810,36812],{"id":36811},"testing-type-safety","Testing Type Safety",[191,36814,36816],{"className":10095,"code":36815,"language":10097,"meta":196,"style":196},"// tests/types.test.ts\nimport { expectTypeOf } from \"expect-type\"\nimport { usersApi } from \"@/lib/api/client\"\n\ntest(\"usersApi.getAll returns User[]\", () => {\n expectTypeOf(usersApi.getAll()).resolves.toEqualTypeOf()\n})\n\ntest(\"usersApi.create accepts NewUser\", () => {\n expectTypeOf(usersApi.create).parameter(0).toEqualTypeOf()\n})\n",[118,36817,36818,36823,36843,36861,36865,36886,36922,36928,36932,36953,36991],{"__ignoreMap":196},[200,36819,36820],{"class":202,"line":203},[200,36821,36822],{"class":555},"// tests/types.test.ts\n",[200,36824,36825,36827,36829,36832,36834,36836,36838,36841],{"class":202,"line":214},[200,36826,22235],{"class":1006},[200,36828,13631],{"class":210},[200,36830,36831],{"class":317}," expectTypeOf",[200,36833,13647],{"class":210},[200,36835,22255],{"class":1006},[200,36837,1030],{"class":210},[200,36839,36840],{"class":286},"expect-type",[200,36842,1036],{"class":210},[200,36844,36845,36847,36849,36851,36853,36855,36857,36859],{"class":202,"line":16},[200,36846,22235],{"class":1006},[200,36848,13631],{"class":210},[200,36850,34673],{"class":317},[200,36852,13647],{"class":210},[200,36854,22255],{"class":1006},[200,36856,1030],{"class":210},[200,36858,34682],{"class":286},[200,36860,1036],{"class":210},[200,36862,36863],{"class":202,"line":229},[200,36864,376],{"emptyLinePlaceholder":375},[200,36866,36867,36869,36871,36873,36876,36878,36880,36882,36884],{"class":202,"line":237},[200,36868,35307],{"class":923},[200,36870,6268],{"class":317},[200,36872,1093],{"class":210},[200,36874,36875],{"class":286},"usersApi.getAll returns User[]",[200,36877,1093],{"class":210},[200,36879,1966],{"class":210},[200,36881,13350],{"class":210},[200,36883,6313],{"class":313},[200,36885,318],{"class":210},[200,36887,36888,36891,36893,36896,36898,36900,36902,36904,36907,36909,36912,36914,36916,36918,36920],{"class":202,"line":245},[200,36889,36890],{"class":923}," expectTypeOf",[200,36892,6268],{"class":206},[200,36894,36895],{"class":317},"usersApi",[200,36897,3975],{"class":210},[200,36899,34762],{"class":923},[200,36901,8063],{"class":206},[200,36903,3975],{"class":210},[200,36905,36906],{"class":317},"resolves",[200,36908,3975],{"class":210},[200,36910,36911],{"class":923},"toEqualTypeOf",[200,36913,10416],{"class":210},[200,36915,34840],{"class":384},[200,36917,10771],{"class":206},[200,36919,4335],{"class":210},[200,36921,8169],{"class":206},[200,36923,36924,36926],{"class":202,"line":253},[200,36925,21331],{"class":210},[200,36927,4304],{"class":317},[200,36929,36930],{"class":202,"line":261},[200,36931,376],{"emptyLinePlaceholder":375},[200,36933,36934,36936,36938,36940,36943,36945,36947,36949,36951],{"class":202,"line":269},[200,36935,35307],{"class":923},[200,36937,6268],{"class":317},[200,36939,1093],{"class":210},[200,36941,36942],{"class":286},"usersApi.create accepts NewUser",[200,36944,1093],{"class":210},[200,36946,1966],{"class":210},[200,36948,13350],{"class":210},[200,36950,6313],{"class":313},[200,36952,318],{"class":210},[200,36954,36955,36957,36959,36961,36963,36965,36967,36969,36972,36974,36976,36978,36980,36982,36984,36987,36989],{"class":202,"line":277},[200,36956,36890],{"class":923},[200,36958,6268],{"class":206},[200,36960,36895],{"class":317},[200,36962,3975],{"class":210},[200,36964,5311],{"class":317},[200,36966,5072],{"class":206},[200,36968,3975],{"class":210},[200,36970,36971],{"class":923},"parameter",[200,36973,6268],{"class":206},[200,36975,20921],{"class":326},[200,36977,5072],{"class":206},[200,36979,3975],{"class":210},[200,36981,36911],{"class":923},[200,36983,10416],{"class":210},[200,36985,36986],{"class":384},"NewUser",[200,36988,4335],{"class":210},[200,36990,8169],{"class":206},[200,36992,36993,36995],{"class":202,"line":417},[200,36994,21331],{"class":210},[200,36996,4304],{"class":317},[100,36998,37000],{"id":36999},"performance-considerations","Performance Considerations",[104,37002,37003],{},"Type safety doesn't have to impact performance:",[3806,37005,37006,37012,37021,37030],{},[134,37007,37008,37011],{},[137,37009,37010],{},"Tree-shaking",": Unused types are removed in production",[134,37013,37014,21183,37017,37020],{},[137,37015,37016],{},"Type-only imports",[118,37018,37019],{},"import type"," to avoid runtime overhead",[134,37022,37023,21183,37026,37029],{},[137,37024,37025],{},"Zod optimization",[118,37027,37028],{},"z.safeParse()"," for better performance",[134,37031,37032,37035],{},[137,37033,37034],{},"Code splitting",": Split types by feature/route",[100,37037,5123],{"id":5122},[104,37039,37040],{},"End-to-end type safety is no longer optional in 2026—it's a fundamental requirement for building reliable, maintainable applications. By leveraging modern tools like TypeScript, Zod, and type-safe frameworks, you can catch errors before they reach production and provide a better developer experience.",[104,37042,37043],{},"Start small by adding types to your most critical paths, then gradually expand coverage. The investment pays dividends in reduced bugs, better documentation, and improved developer confidence.",[5291,37045],{},[104,37047,37048,37051],{},[137,37049,37050],{},"Ready to implement end-to-end type safety?"," Start with your database schema and work outward. Each layer builds on the previous one, creating a solid foundation for your entire application.",[5134,37053,37054],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":196,"searchDepth":214,"depth":214,"links":37056},[37057,37058,37059,37063,37069,37074,37079,37084,37089,37090,37091],{"id":33366,"depth":214,"text":33361},{"id":33372,"depth":214,"text":33373},{"id":33408,"depth":214,"text":33409,"children":37060},[37061,37062],{"id":33412,"depth":16,"text":33413},{"id":33446,"depth":16,"text":33447},{"id":33476,"depth":214,"text":33477,"children":37064},[37065,37066,37067,37068],{"id":33480,"depth":16,"text":33481},{"id":33835,"depth":16,"text":33836},{"id":34191,"depth":16,"text":34192},{"id":34637,"depth":16,"text":34638},{"id":34922,"depth":214,"text":34923,"children":37070},[37071,37072,37073],{"id":34926,"depth":16,"text":34927},{"id":35166,"depth":16,"text":35167},{"id":35377,"depth":16,"text":35378},{"id":35513,"depth":214,"text":35514,"children":37075},[37076,37077,37078],{"id":35517,"depth":16,"text":35518},{"id":35737,"depth":16,"text":35738},{"id":36058,"depth":16,"text":36059},{"id":20989,"depth":214,"text":20990,"children":37080},[37081,37082,37083],{"id":36356,"depth":16,"text":36357},{"id":36422,"depth":16,"text":36423},{"id":36644,"depth":16,"text":36645},{"id":36730,"depth":214,"text":36731,"children":37085},[37086,37087,37088],{"id":36734,"depth":16,"text":36735},{"id":13740,"depth":16,"text":36764},{"id":36787,"depth":16,"text":36788},{"id":36811,"depth":214,"text":36812},{"id":36999,"depth":214,"text":37000},{"id":5122,"depth":214,"text":5123},"Master end-to-end type safety in 2026 with TypeScript, Zod, and modern tools that eliminate runtime errors across your entire stack.",{"readingTime":12429},"/blog/27-end-to-end-type-safety-guide-2026",{"title":33361,"description":37092},"Advanced TypeScript patterns for full-stack development",{"src":37098,"mime":5204,"alt":37099,"width":5206,"height":21112},"/img/blog/27-end-to-end-type-safety-guide-2026/banner.svg","End-to-End Type Safety - Connected type chain from database to frontend on blue gradient","blog/27-end-to-end-type-safety-guide-2026",[24373,24374,37102,36771,37103],"Full-Stack","API Design","N8RnEQivPlHqHoUy1OdwWQLnfChWlNh-gR5oMZhHnsA",{"id":37106,"title":37107,"abstract":5196,"author":94,"authorUrl":5196,"body":37108,"date":41060,"dateUpdated":41060,"description":41061,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":41062,"navigation":375,"ogImage":5196,"path":41063,"seo":41064,"series":41065,"seriesDescription":41066,"seriesOrder":203,"socialImage":41067,"stem":41070,"tags":41071,"__hash__":41072},"blog/blog/28-edge-computing-serverless-guide-2026.md","Edge Computing & Serverless in 2026: The Complete Guide",{"type":97,"value":37109,"toc":41017},[37110,37113,37116,37119,37123,37127,37130,37135,37141,37146,37152,37156,37186,37190,37194,37198,37385,37390,37394,37660,37665,37669,37809,37814,37818,37976,37981,37983,37987,38142,38146,38384,38388,38614,38618,38874,38877,38881,39101,39105,39309,39313,39387,39391,39395,39540,39544,39713,39717,39721,39993,39997,40221,40225,40229,40240,40244,40255,40259,40407,40411,40415,40690,40694,40950,40952,40956,40980,40984,40998,41000,41003,41006,41008,41014],[100,37111,37107],{"id":37112},"edge-computing-serverless-in-2026-the-complete-guide",[104,37114,37115],{},"The cloud has evolved. In 2026, the question isn't whether to use serverless—it's how to leverage edge computing to deliver faster, more reliable applications. Edge computing has moved from experimental to essential, with major providers offering sophisticated tools for deploying code closer to users worldwide.",[104,37117,37118],{},"This guide covers everything you need to know about edge computing and serverless in 2026, from basic concepts to advanced deployment strategies.",[100,37120,37122],{"id":37121},"understanding-the-edge-revolution","Understanding the Edge Revolution",[123,37124,37126],{"id":37125},"what-is-edge-computing","What is Edge Computing?",[104,37128,37129],{},"Edge computing brings computation and data storage closer to the location where it's needed. Instead of routing every request to a central data center, edge functions run in distributed locations worldwide.",[104,37131,37132],{},[137,37133,37134],{},"Traditional Architecture:",[191,37136,37139],{"className":37137,"code":37138,"language":5853},[5851],"User → Internet → Central Server → Database → Response\nLatency: 150-300ms\n",[118,37140,37138],{"__ignoreMap":196},[104,37142,37143],{},[137,37144,37145],{},"Edge Architecture:",[191,37147,37150],{"className":37148,"code":37149,"language":5853},[5851],"User → Edge Node (50ms) → Response\n ↓\n Central Server (async)\n",[118,37151,37149],{"__ignoreMap":196},[123,37153,37155],{"id":37154},"why-edge-matters-in-2026","Why Edge Matters in 2026",[3806,37157,37158,37163,37169,37175,37180],{},[134,37159,37160,37162],{},[137,37161,21116],{},": 60-80% reduction in latency",[134,37164,37165,37168],{},[137,37166,37167],{},"Reliability",": Distributed systems handle failures better",[134,37170,37171,37174],{},[137,37172,37173],{},"Cost",": Pay only for compute time, no idle servers",[134,37176,37177,37179],{},[137,37178,12193],{},": Automatic scaling with traffic",[134,37181,37182,37185],{},[137,37183,37184],{},"Global Reach",": Deploy worldwide with a single click",[100,37187,37189],{"id":37188},"serverless-platforms-in-2026","Serverless Platforms in 2026",[123,37191,37193],{"id":37192},"major-players","Major Players",[28019,37195,37197],{"id":37196},"_1-vercel-edge-functions","1. Vercel Edge Functions",[191,37199,37201],{"className":10095,"code":37200,"language":10097,"meta":196,"style":196},"// app/api/edge/route.ts\nexport const runtime = \"edge\"\nexport const dynamic = \"force-dynamic\"\n\nexport async function GET(request: Request) {\n const geo = request.headers.get(\"x-vercel-ip-country\")\n\n return new Response(JSON.stringify({ geo }), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n })\n}\n",[118,37202,37203,37208,37226,37244,37248,37272,37303,37307,37339,37350,37375,37381],{"__ignoreMap":196},[200,37204,37205],{"class":202,"line":203},[200,37206,37207],{"class":555},"// app/api/edge/route.ts\n",[200,37209,37210,37212,37214,37217,37219,37221,37224],{"class":202,"line":214},[200,37211,13614],{"class":1006},[200,37213,7445],{"class":313},[200,37215,37216],{"class":317}," runtime ",[200,37218,4280],{"class":210},[200,37220,1030],{"class":210},[200,37222,37223],{"class":286},"edge",[200,37225,1036],{"class":210},[200,37227,37228,37230,37232,37235,37237,37239,37242],{"class":202,"line":16},[200,37229,13614],{"class":1006},[200,37231,7445],{"class":313},[200,37233,37234],{"class":317}," dynamic ",[200,37236,4280],{"class":210},[200,37238,1030],{"class":210},[200,37240,37241],{"class":286},"force-dynamic",[200,37243,1036],{"class":210},[200,37245,37246],{"class":202,"line":229},[200,37247,376],{"emptyLinePlaceholder":375},[200,37249,37250,37252,37254,37256,37259,37261,37263,37265,37268,37270],{"class":202,"line":237},[200,37251,13614],{"class":1006},[200,37253,11089],{"class":313},[200,37255,6225],{"class":313},[200,37257,37258],{"class":923}," GET",[200,37260,6268],{"class":210},[200,37262,12701],{"class":1257},[200,37264,283],{"class":210},[200,37266,37267],{"class":384}," Request",[200,37269,5072],{"class":210},[200,37271,318],{"class":210},[200,37273,37274,37276,37279,37281,37283,37285,37288,37290,37292,37294,37296,37299,37301],{"class":202,"line":245},[200,37275,13628],{"class":313},[200,37277,37278],{"class":317}," geo",[200,37280,1096],{"class":210},[200,37282,32313],{"class":317},[200,37284,3975],{"class":210},[200,37286,37287],{"class":317},"headers",[200,37289,3975],{"class":210},[200,37291,7657],{"class":923},[200,37293,6268],{"class":206},[200,37295,1093],{"class":210},[200,37297,37298],{"class":286},"x-vercel-ip-country",[200,37300,1093],{"class":210},[200,37302,4304],{"class":206},[200,37304,37305],{"class":202,"line":253},[200,37306,376],{"emptyLinePlaceholder":375},[200,37308,37309,37311,37313,37316,37318,37321,37323,37325,37327,37329,37331,37333,37335,37337],{"class":202,"line":261},[200,37310,13913],{"class":1006},[200,37312,8138],{"class":210},[200,37314,37315],{"class":923}," Response",[200,37317,6268],{"class":206},[200,37319,37320],{"class":317},"JSON",[200,37322,3975],{"class":210},[200,37324,21757],{"class":923},[200,37326,6268],{"class":206},[200,37328,17294],{"class":210},[200,37330,37278],{"class":317},[200,37332,13647],{"class":210},[200,37334,5072],{"class":206},[200,37336,1966],{"class":210},[200,37338,318],{"class":210},[200,37340,37341,37344,37346,37348],{"class":202,"line":269},[200,37342,37343],{"class":206}," status",[200,37345,283],{"class":210},[200,37347,22556],{"class":326},[200,37349,2455],{"class":210},[200,37351,37352,37355,37357,37359,37361,37363,37365,37367,37369,37371,37373],{"class":202,"line":277},[200,37353,37354],{"class":206}," headers",[200,37356,283],{"class":210},[200,37358,13631],{"class":210},[200,37360,1030],{"class":210},[200,37362,34608],{"class":206},[200,37364,1093],{"class":210},[200,37366,283],{"class":210},[200,37368,1030],{"class":210},[200,37370,34617],{"class":286},[200,37372,1093],{"class":210},[200,37374,21814],{"class":210},[200,37376,37377,37379],{"class":202,"line":417},[200,37378,13682],{"class":210},[200,37380,4304],{"class":206},[200,37382,37383],{"class":202,"line":422},[200,37384,529],{"class":210},[104,37386,37387,37389],{},[137,37388,11375],{},": Next.js applications, frontend-heavy sites",[28019,37391,37393],{"id":37392},"_2-cloudflare-workers","2. Cloudflare Workers",[191,37395,37397],{"className":10095,"code":37396,"language":10097,"meta":196,"style":196},"// workers/edge.ts\nexport default {\n async fetch(request: Request, env: Env): Promise {\n const url = new URL(request.url)\n\n // Edge caching\n const cache = caches.default\n let response = await cache.match(request)\n\n if (response) {\n return response\n }\n\n // Generate response\n response = new Response(\"Hello from edge!\")\n\n // Cache for 1 hour\n response.headers.set(\"Cache-Control\", \"public, max-age=3600\")\n await cache.put(request, response.clone())\n\n return response\n },\n}\n",[118,37398,37399,37404,37412,37448,37471,37475,37480,37496,37520,37524,37536,37543,37547,37551,37556,37578,37582,37587,37617,37642,37646,37652,37656],{"__ignoreMap":196},[200,37400,37401],{"class":202,"line":203},[200,37402,37403],{"class":555},"// workers/edge.ts\n",[200,37405,37406,37408,37410],{"class":202,"line":214},[200,37407,13614],{"class":1006},[200,37409,22954],{"class":1006},[200,37411,318],{"class":210},[200,37413,37414,37416,37418,37420,37422,37424,37426,37428,37431,37433,37435,37437,37439,37441,37444,37446],{"class":202,"line":16},[200,37415,10515],{"class":313},[200,37417,20079],{"class":206},[200,37419,6268],{"class":210},[200,37421,12701],{"class":1257},[200,37423,283],{"class":210},[200,37425,37267],{"class":384},[200,37427,1966],{"class":210},[200,37429,37430],{"class":1257}," env",[200,37432,283],{"class":210},[200,37434,35360],{"class":384},[200,37436,6278],{"class":210},[200,37438,10532],{"class":384},[200,37440,10416],{"class":210},[200,37442,37443],{"class":384},"Response",[200,37445,4335],{"class":210},[200,37447,318],{"class":210},[200,37449,37450,37452,37454,37456,37458,37461,37463,37465,37467,37469],{"class":202,"line":229},[200,37451,10640],{"class":313},[200,37453,21643],{"class":317},[200,37455,1096],{"class":210},[200,37457,8138],{"class":210},[200,37459,37460],{"class":923}," URL",[200,37462,6268],{"class":206},[200,37464,12701],{"class":317},[200,37466,3975],{"class":210},[200,37468,28168],{"class":317},[200,37470,4304],{"class":206},[200,37472,37473],{"class":202,"line":237},[200,37474,376],{"emptyLinePlaceholder":375},[200,37476,37477],{"class":202,"line":245},[200,37478,37479],{"class":555}," // Edge caching\n",[200,37481,37482,37484,37486,37488,37491,37493],{"class":202,"line":253},[200,37483,10640],{"class":313},[200,37485,32082],{"class":317},[200,37487,1096],{"class":210},[200,37489,37490],{"class":317}," caches",[200,37492,3975],{"class":210},[200,37494,37495],{"class":317},"default\n",[200,37497,37498,37501,37503,37505,37507,37509,37511,37514,37516,37518],{"class":202,"line":261},[200,37499,37500],{"class":313}," let",[200,37502,20072],{"class":317},[200,37504,1096],{"class":210},[200,37506,13781],{"class":1006},[200,37508,32082],{"class":317},[200,37510,3975],{"class":210},[200,37512,37513],{"class":923},"match",[200,37515,6268],{"class":206},[200,37517,12701],{"class":317},[200,37519,4304],{"class":206},[200,37521,37522],{"class":202,"line":269},[200,37523,376],{"emptyLinePlaceholder":375},[200,37525,37526,37528,37530,37532,37534],{"class":202,"line":277},[200,37527,10663],{"class":1006},[200,37529,5253],{"class":206},[200,37531,8056],{"class":317},[200,37533,10673],{"class":206},[200,37535,388],{"class":210},[200,37537,37538,37540],{"class":202,"line":417},[200,37539,10722],{"class":1006},[200,37541,37542],{"class":317}," response\n",[200,37544,37545],{"class":202,"line":422},[200,37546,414],{"class":210},[200,37548,37549],{"class":202,"line":29},[200,37550,376],{"emptyLinePlaceholder":375},[200,37552,37553],{"class":202,"line":445},[200,37554,37555],{"class":555}," // Generate response\n",[200,37557,37558,37561,37563,37565,37567,37569,37571,37574,37576],{"class":202,"line":455},[200,37559,37560],{"class":317}," response",[200,37562,1096],{"class":210},[200,37564,8138],{"class":210},[200,37566,37315],{"class":923},[200,37568,6268],{"class":206},[200,37570,1093],{"class":210},[200,37572,37573],{"class":286},"Hello from edge!",[200,37575,1093],{"class":210},[200,37577,4304],{"class":206},[200,37579,37580],{"class":202,"line":466},[200,37581,376],{"emptyLinePlaceholder":375},[200,37583,37584],{"class":202,"line":482},[200,37585,37586],{"class":555}," // Cache for 1 hour\n",[200,37588,37589,37591,37593,37595,37597,37599,37601,37603,37605,37607,37609,37611,37613,37615],{"class":202,"line":493},[200,37590,37560],{"class":317},[200,37592,3975],{"class":210},[200,37594,37287],{"class":317},[200,37596,3975],{"class":210},[200,37598,924],{"class":923},[200,37600,6268],{"class":206},[200,37602,1093],{"class":210},[200,37604,33054],{"class":286},[200,37606,1093],{"class":210},[200,37608,1966],{"class":210},[200,37610,1030],{"class":210},[200,37612,33063],{"class":286},[200,37614,1093],{"class":210},[200,37616,4304],{"class":206},[200,37618,37619,37621,37623,37625,37627,37629,37631,37633,37635,37637,37640],{"class":202,"line":498},[200,37620,10582],{"class":1006},[200,37622,32082],{"class":317},[200,37624,3975],{"class":210},[200,37626,8296],{"class":923},[200,37628,6268],{"class":206},[200,37630,12701],{"class":317},[200,37632,1966],{"class":210},[200,37634,20072],{"class":317},[200,37636,3975],{"class":210},[200,37638,37639],{"class":923},"clone",[200,37641,22005],{"class":206},[200,37643,37644],{"class":202,"line":503},[200,37645,376],{"emptyLinePlaceholder":375},[200,37647,37648,37650],{"class":202,"line":515},[200,37649,10733],{"class":1006},[200,37651,37542],{"class":317},[200,37653,37654],{"class":202,"line":521},[200,37655,23076],{"class":210},[200,37657,37658],{"class":202,"line":526},[200,37659,529],{"class":210},[104,37661,37662,37664],{},[137,37663,11375],{},": High-performance APIs, global applications",[28019,37666,37668],{"id":37667},"_3-aws-lambdaedge","3. AWS Lambda@Edge",[191,37670,37672],{"className":10095,"code":37671,"language":10097,"meta":196,"style":196},"// lambda/edge-function.ts\nexport const handler = async (event: any) => {\n const request = event.Records[0].cf.request\n\n // A/B testing at edge\n const experiment = getExperiment(request.headers)\n request.headers[\"x-experiment\"] = experiment\n\n return request\n}\n",[118,37673,37674,37679,37707,37738,37742,37747,37769,37794,37798,37805],{"__ignoreMap":196},[200,37675,37676],{"class":202,"line":203},[200,37677,37678],{"class":555},"// lambda/edge-function.ts\n",[200,37680,37681,37683,37685,37688,37690,37692,37694,37696,37698,37701,37703,37705],{"class":202,"line":214},[200,37682,13614],{"class":1006},[200,37684,7445],{"class":313},[200,37686,37687],{"class":317}," handler ",[200,37689,4280],{"class":210},[200,37691,11089],{"class":313},[200,37693,5253],{"class":210},[200,37695,23117],{"class":1257},[200,37697,283],{"class":210},[200,37699,37700],{"class":384}," any",[200,37702,5072],{"class":210},[200,37704,6313],{"class":313},[200,37706,318],{"class":210},[200,37708,37709,37711,37713,37715,37717,37719,37722,37724,37726,37728,37730,37733,37735],{"class":202,"line":16},[200,37710,13628],{"class":313},[200,37712,32313],{"class":317},[200,37714,1096],{"class":210},[200,37716,26132],{"class":317},[200,37718,3975],{"class":210},[200,37720,37721],{"class":317},"Records",[200,37723,6431],{"class":206},[200,37725,20921],{"class":326},[200,37727,7760],{"class":206},[200,37729,3975],{"class":210},[200,37731,37732],{"class":317},"cf",[200,37734,3975],{"class":210},[200,37736,37737],{"class":317},"request\n",[200,37739,37740],{"class":202,"line":229},[200,37741,376],{"emptyLinePlaceholder":375},[200,37743,37744],{"class":202,"line":237},[200,37745,37746],{"class":555}," // A/B testing at edge\n",[200,37748,37749,37751,37754,37756,37759,37761,37763,37765,37767],{"class":202,"line":245},[200,37750,13628],{"class":313},[200,37752,37753],{"class":317}," experiment",[200,37755,1096],{"class":210},[200,37757,37758],{"class":923}," getExperiment",[200,37760,6268],{"class":206},[200,37762,12701],{"class":317},[200,37764,3975],{"class":210},[200,37766,37287],{"class":317},[200,37768,4304],{"class":206},[200,37770,37771,37774,37776,37778,37780,37782,37785,37787,37789,37791],{"class":202,"line":253},[200,37772,37773],{"class":317}," request",[200,37775,3975],{"class":210},[200,37777,37287],{"class":317},[200,37779,6431],{"class":206},[200,37781,1093],{"class":210},[200,37783,37784],{"class":286},"x-experiment",[200,37786,1093],{"class":210},[200,37788,16894],{"class":206},[200,37790,4280],{"class":210},[200,37792,37793],{"class":317}," experiment\n",[200,37795,37796],{"class":202,"line":261},[200,37797,376],{"emptyLinePlaceholder":375},[200,37799,37800,37802],{"class":202,"line":269},[200,37801,13913],{"class":1006},[200,37803,37804],{"class":317}," request\n",[200,37806,37807],{"class":202,"line":277},[200,37808,529],{"class":210},[104,37810,37811,37813],{},[137,37812,11375],{},": AWS ecosystem, CloudFront integration",[28019,37815,37817],{"id":37816},"_4-deno-deploy","4. Deno Deploy",[191,37819,37821],{"className":10095,"code":37820,"language":10097,"meta":196,"style":196},"// deno-edge.ts\nDeno.serve(async (req: Request) => {\n const url = new URL(req.url)\n\n // Native fetch API\n const data = await fetch(\"https://api.example.com/data\")\n\n return new Response(JSON.stringify(data), {\n headers: { \"Content-Type\": \"application/json\" },\n })\n})\n",[118,37822,37823,37828,37856,37878,37882,37887,37910,37914,37940,37964,37970],{"__ignoreMap":196},[200,37824,37825],{"class":202,"line":203},[200,37826,37827],{"class":555},"// deno-edge.ts\n",[200,37829,37830,37833,37835,37838,37840,37842,37844,37846,37848,37850,37852,37854],{"class":202,"line":214},[200,37831,37832],{"class":317},"Deno",[200,37834,3975],{"class":210},[200,37836,37837],{"class":923},"serve",[200,37839,6268],{"class":317},[200,37841,18714],{"class":313},[200,37843,5253],{"class":210},[200,37845,34005],{"class":1257},[200,37847,283],{"class":210},[200,37849,37267],{"class":384},[200,37851,5072],{"class":210},[200,37853,6313],{"class":313},[200,37855,318],{"class":210},[200,37857,37858,37860,37862,37864,37866,37868,37870,37872,37874,37876],{"class":202,"line":16},[200,37859,13628],{"class":313},[200,37861,21643],{"class":317},[200,37863,1096],{"class":210},[200,37865,8138],{"class":210},[200,37867,37460],{"class":923},[200,37869,6268],{"class":206},[200,37871,34005],{"class":317},[200,37873,3975],{"class":210},[200,37875,28168],{"class":317},[200,37877,4304],{"class":206},[200,37879,37880],{"class":202,"line":229},[200,37881,376],{"emptyLinePlaceholder":375},[200,37883,37884],{"class":202,"line":237},[200,37885,37886],{"class":555}," // Native fetch API\n",[200,37888,37889,37891,37893,37895,37897,37899,37901,37903,37906,37908],{"class":202,"line":245},[200,37890,13628],{"class":313},[200,37892,13634],{"class":317},[200,37894,1096],{"class":210},[200,37896,13781],{"class":1006},[200,37898,20079],{"class":923},[200,37900,6268],{"class":206},[200,37902,1093],{"class":210},[200,37904,37905],{"class":286},"https://api.example.com/data",[200,37907,1093],{"class":210},[200,37909,4304],{"class":206},[200,37911,37912],{"class":202,"line":253},[200,37913,376],{"emptyLinePlaceholder":375},[200,37915,37916,37918,37920,37922,37924,37926,37928,37930,37932,37934,37936,37938],{"class":202,"line":261},[200,37917,13913],{"class":1006},[200,37919,8138],{"class":210},[200,37921,37315],{"class":923},[200,37923,6268],{"class":206},[200,37925,37320],{"class":317},[200,37927,3975],{"class":210},[200,37929,21757],{"class":923},[200,37931,6268],{"class":206},[200,37933,14324],{"class":317},[200,37935,5072],{"class":206},[200,37937,1966],{"class":210},[200,37939,318],{"class":210},[200,37941,37942,37944,37946,37948,37950,37952,37954,37956,37958,37960,37962],{"class":202,"line":269},[200,37943,37354],{"class":206},[200,37945,283],{"class":210},[200,37947,13631],{"class":210},[200,37949,1030],{"class":210},[200,37951,34608],{"class":206},[200,37953,1093],{"class":210},[200,37955,283],{"class":210},[200,37957,1030],{"class":210},[200,37959,34617],{"class":286},[200,37961,1093],{"class":210},[200,37963,21814],{"class":210},[200,37965,37966,37968],{"class":202,"line":277},[200,37967,13682],{"class":210},[200,37969,4304],{"class":206},[200,37971,37972,37974],{"class":202,"line":417},[200,37973,21331],{"class":210},[200,37975,4304],{"class":317},[104,37977,37978,37980],{},[137,37979,11375],{},": TypeScript-first projects, modern APIs",[100,37982,31207],{"id":31206},[123,37984,37986],{"id":37985},"_1-personalization-at-scale","1. Personalization at Scale",[191,37988,37990],{"className":10095,"code":37989,"language":10097,"meta":196,"style":196},"// Edge personalization middleware\nexport async function middleware(request: Request) {\n const { country, city } = getGeoLocation(request)\n\n // Personalize content based on location\n const response = await fetch(\"https://api.example.com/content\", {\n headers: {\n \"X-Country\": country,\n \"X-City\": city,\n },\n })\n\n return response\n}\n",[118,37991,37992,37997,38020,38046,38050,38055,38080,38088,38103,38118,38122,38128,38132,38138],{"__ignoreMap":196},[200,37993,37994],{"class":202,"line":203},[200,37995,37996],{"class":555},"// Edge personalization middleware\n",[200,37998,37999,38001,38003,38005,38008,38010,38012,38014,38016,38018],{"class":202,"line":214},[200,38000,13614],{"class":1006},[200,38002,11089],{"class":313},[200,38004,6225],{"class":313},[200,38006,38007],{"class":923}," middleware",[200,38009,6268],{"class":210},[200,38011,12701],{"class":1257},[200,38013,283],{"class":210},[200,38015,37267],{"class":384},[200,38017,5072],{"class":210},[200,38019,318],{"class":210},[200,38021,38022,38024,38026,38028,38030,38033,38035,38037,38040,38042,38044],{"class":202,"line":16},[200,38023,13628],{"class":313},[200,38025,13631],{"class":210},[200,38027,23130],{"class":317},[200,38029,1966],{"class":210},[200,38031,38032],{"class":317}," city",[200,38034,13647],{"class":210},[200,38036,1096],{"class":210},[200,38038,38039],{"class":923}," getGeoLocation",[200,38041,6268],{"class":206},[200,38043,12701],{"class":317},[200,38045,4304],{"class":206},[200,38047,38048],{"class":202,"line":229},[200,38049,376],{"emptyLinePlaceholder":375},[200,38051,38052],{"class":202,"line":237},[200,38053,38054],{"class":555}," // Personalize content based on location\n",[200,38056,38057,38059,38061,38063,38065,38067,38069,38071,38074,38076,38078],{"class":202,"line":245},[200,38058,13628],{"class":313},[200,38060,20072],{"class":317},[200,38062,1096],{"class":210},[200,38064,13781],{"class":1006},[200,38066,20079],{"class":923},[200,38068,6268],{"class":206},[200,38070,1093],{"class":210},[200,38072,38073],{"class":286},"https://api.example.com/content",[200,38075,1093],{"class":210},[200,38077,1966],{"class":210},[200,38079,318],{"class":210},[200,38081,38082,38084,38086],{"class":202,"line":253},[200,38083,37354],{"class":206},[200,38085,283],{"class":210},[200,38087,318],{"class":210},[200,38089,38090,38092,38095,38097,38099,38101],{"class":202,"line":261},[200,38091,28573],{"class":210},[200,38093,38094],{"class":206},"X-Country",[200,38096,1093],{"class":210},[200,38098,283],{"class":210},[200,38100,23130],{"class":317},[200,38102,2455],{"class":210},[200,38104,38105,38107,38110,38112,38114,38116],{"class":202,"line":269},[200,38106,28573],{"class":210},[200,38108,38109],{"class":206},"X-City",[200,38111,1093],{"class":210},[200,38113,283],{"class":210},[200,38115,38032],{"class":317},[200,38117,2455],{"class":210},[200,38119,38120],{"class":202,"line":277},[200,38121,21319],{"class":210},[200,38123,38124,38126],{"class":202,"line":417},[200,38125,13682],{"class":210},[200,38127,4304],{"class":206},[200,38129,38130],{"class":202,"line":422},[200,38131,376],{"emptyLinePlaceholder":375},[200,38133,38134,38136],{"class":202,"line":29},[200,38135,13913],{"class":1006},[200,38137,37542],{"class":317},[200,38139,38140],{"class":202,"line":445},[200,38141,529],{"class":210},[123,38143,38145],{"id":38144},"_2-ab-testing","2. A/B Testing",[191,38147,38149],{"className":10095,"code":38148,"language":10097,"meta":196,"style":196},"// Edge A/B testing\nfunction getExperimentGroup(userId: string): \"A\" | \"B\" {\n const hash = hashCode(userId)\n return hash % 2 === 0 ? \"A\" : \"B\"\n}\n\nexport async function handler(request: Request) {\n const userId = request.headers.get(\"x-user-id\")\n const group = getExperimentGroup(userId!)\n\n const content = group === \"A\" ? await getVariantA() : await getVariantB()\n\n return new Response(content)\n}\n",[118,38150,38151,38156,38191,38209,38242,38246,38250,38273,38302,38321,38325,38362,38366,38380],{"__ignoreMap":196},[200,38152,38153],{"class":202,"line":203},[200,38154,38155],{"class":555},"// Edge A/B testing\n",[200,38157,38158,38160,38163,38165,38167,38169,38171,38173,38175,38178,38180,38182,38184,38187,38189],{"class":202,"line":214},[200,38159,13347],{"class":313},[200,38161,38162],{"class":923}," getExperimentGroup",[200,38164,6268],{"class":210},[200,38166,20093],{"class":1257},[200,38168,283],{"class":210},[200,38170,7591],{"class":384},[200,38172,6278],{"class":210},[200,38174,1030],{"class":210},[200,38176,38177],{"class":286},"A",[200,38179,1093],{"class":210},[200,38181,10173],{"class":210},[200,38183,1030],{"class":210},[200,38185,38186],{"class":286},"B",[200,38188,1093],{"class":210},[200,38190,318],{"class":210},[200,38192,38193,38195,38198,38200,38203,38205,38207],{"class":202,"line":16},[200,38194,13628],{"class":313},[200,38196,38197],{"class":317}," hash",[200,38199,1096],{"class":210},[200,38201,38202],{"class":923}," hashCode",[200,38204,6268],{"class":206},[200,38206,20093],{"class":317},[200,38208,4304],{"class":206},[200,38210,38211,38213,38215,38218,38220,38222,38224,38227,38229,38231,38233,38236,38238,38240],{"class":202,"line":229},[200,38212,13913],{"class":1006},[200,38214,38197],{"class":317},[200,38216,38217],{"class":210}," %",[200,38219,9593],{"class":326},[200,38221,10842],{"class":210},[200,38223,8004],{"class":326},[200,38225,38226],{"class":210}," ?",[200,38228,1030],{"class":210},[200,38230,38177],{"class":286},[200,38232,1093],{"class":210},[200,38234,38235],{"class":210}," :",[200,38237,1030],{"class":210},[200,38239,38186],{"class":286},[200,38241,1036],{"class":210},[200,38243,38244],{"class":202,"line":237},[200,38245,529],{"class":210},[200,38247,38248],{"class":202,"line":245},[200,38249,376],{"emptyLinePlaceholder":375},[200,38251,38252,38254,38256,38258,38261,38263,38265,38267,38269,38271],{"class":202,"line":253},[200,38253,13614],{"class":1006},[200,38255,11089],{"class":313},[200,38257,6225],{"class":313},[200,38259,38260],{"class":923}," handler",[200,38262,6268],{"class":210},[200,38264,12701],{"class":1257},[200,38266,283],{"class":210},[200,38268,37267],{"class":384},[200,38270,5072],{"class":210},[200,38272,318],{"class":210},[200,38274,38275,38277,38279,38281,38283,38285,38287,38289,38291,38293,38295,38298,38300],{"class":202,"line":261},[200,38276,13628],{"class":313},[200,38278,20038],{"class":317},[200,38280,1096],{"class":210},[200,38282,32313],{"class":317},[200,38284,3975],{"class":210},[200,38286,37287],{"class":317},[200,38288,3975],{"class":210},[200,38290,7657],{"class":923},[200,38292,6268],{"class":206},[200,38294,1093],{"class":210},[200,38296,38297],{"class":286},"x-user-id",[200,38299,1093],{"class":210},[200,38301,4304],{"class":206},[200,38303,38304,38306,38309,38311,38313,38315,38317,38319],{"class":202,"line":269},[200,38305,13628],{"class":313},[200,38307,38308],{"class":317}," group",[200,38310,1096],{"class":210},[200,38312,38162],{"class":923},[200,38314,6268],{"class":206},[200,38316,20093],{"class":317},[200,38318,10668],{"class":210},[200,38320,4304],{"class":206},[200,38322,38323],{"class":202,"line":277},[200,38324,376],{"emptyLinePlaceholder":375},[200,38326,38327,38329,38332,38334,38336,38338,38340,38342,38344,38346,38348,38351,38353,38355,38357,38360],{"class":202,"line":417},[200,38328,13628],{"class":313},[200,38330,38331],{"class":317}," content",[200,38333,1096],{"class":210},[200,38335,38308],{"class":317},[200,38337,10842],{"class":210},[200,38339,1030],{"class":210},[200,38341,38177],{"class":286},[200,38343,1093],{"class":210},[200,38345,38226],{"class":210},[200,38347,13781],{"class":1006},[200,38349,38350],{"class":923}," getVariantA",[200,38352,10947],{"class":206},[200,38354,283],{"class":210},[200,38356,13781],{"class":1006},[200,38358,38359],{"class":923}," getVariantB",[200,38361,8169],{"class":206},[200,38363,38364],{"class":202,"line":422},[200,38365,376],{"emptyLinePlaceholder":375},[200,38367,38368,38370,38372,38374,38376,38378],{"class":202,"line":29},[200,38369,13913],{"class":1006},[200,38371,8138],{"class":210},[200,38373,37315],{"class":923},[200,38375,6268],{"class":206},[200,38377,6414],{"class":317},[200,38379,4304],{"class":206},[200,38381,38382],{"class":202,"line":445},[200,38383,529],{"class":210},[123,38385,38387],{"id":38386},"_3-api-aggregation","3. API Aggregation",[191,38389,38391],{"className":10095,"code":38390,"language":10097,"meta":196,"style":196},"// Aggregate multiple APIs at the edge\nexport async function handler(request: Request) {\n const [users, products, stats] = await Promise.all([\n fetch(\"https://api.users.com/data\"),\n fetch(\"https://api.products.com/data\"),\n fetch(\"https://api.stats.com/data\"),\n ])\n\n const aggregated = {\n users: await users.json(),\n products: await products.json(),\n stats: await stats.json(),\n }\n\n return new Response(JSON.stringify(aggregated))\n}\n",[118,38392,38393,38398,38420,38451,38469,38486,38503,38507,38511,38522,38541,38560,38579,38583,38587,38610],{"__ignoreMap":196},[200,38394,38395],{"class":202,"line":203},[200,38396,38397],{"class":555},"// Aggregate multiple APIs at the edge\n",[200,38399,38400,38402,38404,38406,38408,38410,38412,38414,38416,38418],{"class":202,"line":214},[200,38401,13614],{"class":1006},[200,38403,11089],{"class":313},[200,38405,6225],{"class":313},[200,38407,38260],{"class":923},[200,38409,6268],{"class":210},[200,38411,12701],{"class":1257},[200,38413,283],{"class":210},[200,38415,37267],{"class":384},[200,38417,5072],{"class":210},[200,38419,318],{"class":210},[200,38421,38422,38424,38426,38428,38430,38432,38434,38437,38439,38441,38443,38445,38447,38449],{"class":202,"line":16},[200,38423,13628],{"class":313},[200,38425,877],{"class":210},[200,38427,23270],{"class":317},[200,38429,1966],{"class":210},[200,38431,20695],{"class":317},[200,38433,1966],{"class":210},[200,38435,38436],{"class":317}," stats",[200,38438,7760],{"class":210},[200,38440,1096],{"class":210},[200,38442,13781],{"class":1006},[200,38444,10532],{"class":384},[200,38446,3975],{"class":210},[200,38448,23292],{"class":923},[200,38450,6690],{"class":206},[200,38452,38453,38456,38458,38460,38463,38465,38467],{"class":202,"line":229},[200,38454,38455],{"class":923}," fetch",[200,38457,6268],{"class":206},[200,38459,1093],{"class":210},[200,38461,38462],{"class":286},"https://api.users.com/data",[200,38464,1093],{"class":210},[200,38466,5072],{"class":206},[200,38468,2455],{"class":210},[200,38470,38471,38473,38475,38477,38480,38482,38484],{"class":202,"line":237},[200,38472,38455],{"class":923},[200,38474,6268],{"class":206},[200,38476,1093],{"class":210},[200,38478,38479],{"class":286},"https://api.products.com/data",[200,38481,1093],{"class":210},[200,38483,5072],{"class":206},[200,38485,2455],{"class":210},[200,38487,38488,38490,38492,38494,38497,38499,38501],{"class":202,"line":245},[200,38489,38455],{"class":923},[200,38491,6268],{"class":206},[200,38493,1093],{"class":210},[200,38495,38496],{"class":286},"https://api.stats.com/data",[200,38498,1093],{"class":210},[200,38500,5072],{"class":206},[200,38502,2455],{"class":210},[200,38504,38505],{"class":202,"line":253},[200,38506,23351],{"class":206},[200,38508,38509],{"class":202,"line":261},[200,38510,376],{"emptyLinePlaceholder":375},[200,38512,38513,38515,38518,38520],{"class":202,"line":269},[200,38514,13628],{"class":313},[200,38516,38517],{"class":317}," aggregated",[200,38519,1096],{"class":210},[200,38521,318],{"class":210},[200,38523,38524,38527,38529,38531,38533,38535,38537,38539],{"class":202,"line":277},[200,38525,38526],{"class":206}," users",[200,38528,283],{"class":210},[200,38530,13781],{"class":1006},[200,38532,23364],{"class":317},[200,38534,3975],{"class":210},[200,38536,6659],{"class":923},[200,38538,10978],{"class":206},[200,38540,2455],{"class":210},[200,38542,38543,38546,38548,38550,38552,38554,38556,38558],{"class":202,"line":417},[200,38544,38545],{"class":206}," products",[200,38547,283],{"class":210},[200,38549,13781],{"class":1006},[200,38551,20695],{"class":317},[200,38553,3975],{"class":210},[200,38555,6659],{"class":923},[200,38557,10978],{"class":206},[200,38559,2455],{"class":210},[200,38561,38562,38565,38567,38569,38571,38573,38575,38577],{"class":202,"line":422},[200,38563,38564],{"class":206}," stats",[200,38566,283],{"class":210},[200,38568,13781],{"class":1006},[200,38570,38436],{"class":317},[200,38572,3975],{"class":210},[200,38574,6659],{"class":923},[200,38576,10978],{"class":206},[200,38578,2455],{"class":210},[200,38580,38581],{"class":202,"line":29},[200,38582,10383],{"class":210},[200,38584,38585],{"class":202,"line":445},[200,38586,376],{"emptyLinePlaceholder":375},[200,38588,38589,38591,38593,38595,38597,38599,38601,38603,38605,38608],{"class":202,"line":455},[200,38590,13913],{"class":1006},[200,38592,8138],{"class":210},[200,38594,37315],{"class":923},[200,38596,6268],{"class":206},[200,38598,37320],{"class":317},[200,38600,3975],{"class":210},[200,38602,21757],{"class":923},[200,38604,6268],{"class":206},[200,38606,38607],{"class":317},"aggregated",[200,38609,7826],{"class":206},[200,38611,38612],{"class":202,"line":466},[200,38613,529],{"class":210},[123,38615,38617],{"id":38616},"_4-image-optimization","4. Image Optimization",[191,38619,38621],{"className":10095,"code":38620,"language":10097,"meta":196,"style":196},"// Edge image optimization\nexport async function handler(request: Request) {\n const url = new URL(request.url)\n const imageUrl = url.searchParams.get(\"url\")\n const width = url.searchParams.get(\"w\") || \"800\"\n\n const image = await fetch(imageUrl)\n const optimized = await optimizeImage(image, { width })\n\n return new Response(optimized, {\n headers: {\n \"Content-Type\": \"image/webp\",\n \"Cache-Control\": \"public, max-age=31536000\",\n },\n })\n}\n",[118,38622,38623,38628,38650,38672,38702,38741,38745,38765,38793,38797,38814,38822,38841,38860,38864,38870],{"__ignoreMap":196},[200,38624,38625],{"class":202,"line":203},[200,38626,38627],{"class":555},"// Edge image optimization\n",[200,38629,38630,38632,38634,38636,38638,38640,38642,38644,38646,38648],{"class":202,"line":214},[200,38631,13614],{"class":1006},[200,38633,11089],{"class":313},[200,38635,6225],{"class":313},[200,38637,38260],{"class":923},[200,38639,6268],{"class":210},[200,38641,12701],{"class":1257},[200,38643,283],{"class":210},[200,38645,37267],{"class":384},[200,38647,5072],{"class":210},[200,38649,318],{"class":210},[200,38651,38652,38654,38656,38658,38660,38662,38664,38666,38668,38670],{"class":202,"line":16},[200,38653,13628],{"class":313},[200,38655,21643],{"class":317},[200,38657,1096],{"class":210},[200,38659,8138],{"class":210},[200,38661,37460],{"class":923},[200,38663,6268],{"class":206},[200,38665,12701],{"class":317},[200,38667,3975],{"class":210},[200,38669,28168],{"class":317},[200,38671,4304],{"class":206},[200,38673,38674,38676,38679,38681,38683,38685,38688,38690,38692,38694,38696,38698,38700],{"class":202,"line":229},[200,38675,13628],{"class":313},[200,38677,38678],{"class":317}," imageUrl",[200,38680,1096],{"class":210},[200,38682,21643],{"class":317},[200,38684,3975],{"class":210},[200,38686,38687],{"class":317},"searchParams",[200,38689,3975],{"class":210},[200,38691,7657],{"class":923},[200,38693,6268],{"class":206},[200,38695,1093],{"class":210},[200,38697,28168],{"class":286},[200,38699,1093],{"class":210},[200,38701,4304],{"class":206},[200,38703,38704,38706,38709,38711,38713,38715,38717,38719,38721,38723,38725,38728,38730,38732,38734,38736,38739],{"class":202,"line":237},[200,38705,13628],{"class":313},[200,38707,38708],{"class":317}," width",[200,38710,1096],{"class":210},[200,38712,21643],{"class":317},[200,38714,3975],{"class":210},[200,38716,38687],{"class":317},[200,38718,3975],{"class":210},[200,38720,7657],{"class":923},[200,38722,6268],{"class":206},[200,38724,1093],{"class":210},[200,38726,38727],{"class":286},"w",[200,38729,1093],{"class":210},[200,38731,10673],{"class":206},[200,38733,16673],{"class":210},[200,38735,1030],{"class":210},[200,38737,38738],{"class":286},"800",[200,38740,1036],{"class":210},[200,38742,38743],{"class":202,"line":245},[200,38744,376],{"emptyLinePlaceholder":375},[200,38746,38747,38749,38752,38754,38756,38758,38760,38763],{"class":202,"line":253},[200,38748,13628],{"class":313},[200,38750,38751],{"class":317}," image",[200,38753,1096],{"class":210},[200,38755,13781],{"class":1006},[200,38757,20079],{"class":923},[200,38759,6268],{"class":206},[200,38761,38762],{"class":317},"imageUrl",[200,38764,4304],{"class":206},[200,38766,38767,38769,38772,38774,38776,38779,38781,38783,38785,38787,38789,38791],{"class":202,"line":261},[200,38768,13628],{"class":313},[200,38770,38771],{"class":317}," optimized",[200,38773,1096],{"class":210},[200,38775,13781],{"class":1006},[200,38777,38778],{"class":923}," optimizeImage",[200,38780,6268],{"class":206},[200,38782,21259],{"class":317},[200,38784,1966],{"class":210},[200,38786,13631],{"class":210},[200,38788,38708],{"class":317},[200,38790,13647],{"class":210},[200,38792,4304],{"class":206},[200,38794,38795],{"class":202,"line":269},[200,38796,376],{"emptyLinePlaceholder":375},[200,38798,38799,38801,38803,38805,38807,38810,38812],{"class":202,"line":277},[200,38800,13913],{"class":1006},[200,38802,8138],{"class":210},[200,38804,37315],{"class":923},[200,38806,6268],{"class":206},[200,38808,38809],{"class":317},"optimized",[200,38811,1966],{"class":210},[200,38813,318],{"class":210},[200,38815,38816,38818,38820],{"class":202,"line":417},[200,38817,37354],{"class":206},[200,38819,283],{"class":210},[200,38821,318],{"class":210},[200,38823,38824,38826,38828,38830,38832,38834,38837,38839],{"class":202,"line":422},[200,38825,28573],{"class":210},[200,38827,34608],{"class":206},[200,38829,1093],{"class":210},[200,38831,283],{"class":210},[200,38833,1030],{"class":210},[200,38835,38836],{"class":286},"image/webp",[200,38838,1093],{"class":210},[200,38840,2455],{"class":210},[200,38842,38843,38845,38847,38849,38851,38853,38856,38858],{"class":202,"line":29},[200,38844,28573],{"class":210},[200,38846,33054],{"class":206},[200,38848,1093],{"class":210},[200,38850,283],{"class":210},[200,38852,1030],{"class":210},[200,38854,38855],{"class":286},"public, max-age=31536000",[200,38857,1093],{"class":210},[200,38859,2455],{"class":210},[200,38861,38862],{"class":202,"line":445},[200,38863,21319],{"class":210},[200,38865,38866,38868],{"class":202,"line":455},[200,38867,13682],{"class":210},[200,38869,4304],{"class":206},[200,38871,38872],{"class":202,"line":466},[200,38873,529],{"class":210},[100,38875,30650],{"id":38876},"performance-optimization",[123,38878,38880],{"id":38879},"_1-caching-strategies","1. Caching Strategies",[191,38882,38884],{"className":10095,"code":38883,"language":10097,"meta":196,"style":196},"// Multi-layer caching\nconst CACHE_TTL = 3600 // 1 hour\n\nasync function getCachedData(key: string, fetcher: () => Promise) {\n const cache = await caches.open(\"edge-cache\")\n const cached = await cache.get(key)\n\n if (cached) {\n return await cached.json()\n }\n\n const data = await fetcher()\n await cache.put(key, new Response(JSON.stringify(data)))\n\n return data\n}\n",[118,38885,38886,38891,38904,38908,38948,38976,38999,39003,39015,39029,39033,39037,39051,39086,39090,39097],{"__ignoreMap":196},[200,38887,38888],{"class":202,"line":203},[200,38889,38890],{"class":555},"// Multi-layer caching\n",[200,38892,38893,38895,38897,38899,38901],{"class":202,"line":214},[200,38894,10803],{"class":313},[200,38896,7448],{"class":317},[200,38898,4280],{"class":210},[200,38900,7453],{"class":326},[200,38902,38903],{"class":555}," // 1 hour\n",[200,38905,38906],{"class":202,"line":16},[200,38907,376],{"emptyLinePlaceholder":375},[200,38909,38910,38912,38914,38917,38919,38921,38923,38925,38927,38930,38932,38934,38936,38938,38940,38943,38946],{"class":202,"line":229},[200,38911,18714],{"class":313},[200,38913,6225],{"class":313},[200,38915,38916],{"class":923}," getCachedData",[200,38918,6268],{"class":210},[200,38920,8414],{"class":1257},[200,38922,283],{"class":210},[200,38924,7591],{"class":384},[200,38926,1966],{"class":210},[200,38928,38929],{"class":923}," fetcher",[200,38931,283],{"class":210},[200,38933,13350],{"class":210},[200,38935,6313],{"class":313},[200,38937,10532],{"class":384},[200,38939,10416],{"class":210},[200,38941,38942],{"class":384},"any",[200,38944,38945],{"class":210},">)",[200,38947,318],{"class":210},[200,38949,38950,38952,38954,38956,38958,38960,38962,38965,38967,38969,38972,38974],{"class":202,"line":237},[200,38951,13628],{"class":313},[200,38953,32082],{"class":317},[200,38955,1096],{"class":210},[200,38957,13781],{"class":1006},[200,38959,37490],{"class":317},[200,38961,3975],{"class":210},[200,38963,38964],{"class":923},"open",[200,38966,6268],{"class":206},[200,38968,1093],{"class":210},[200,38970,38971],{"class":286},"edge-cache",[200,38973,1093],{"class":210},[200,38975,4304],{"class":206},[200,38977,38978,38980,38983,38985,38987,38989,38991,38993,38995,38997],{"class":202,"line":245},[200,38979,13628],{"class":313},[200,38981,38982],{"class":317}," cached",[200,38984,1096],{"class":210},[200,38986,13781],{"class":1006},[200,38988,32082],{"class":317},[200,38990,3975],{"class":210},[200,38992,7657],{"class":923},[200,38994,6268],{"class":206},[200,38996,8414],{"class":317},[200,38998,4304],{"class":206},[200,39000,39001],{"class":202,"line":253},[200,39002,376],{"emptyLinePlaceholder":375},[200,39004,39005,39007,39009,39011,39013],{"class":202,"line":261},[200,39006,18891],{"class":1006},[200,39008,5253],{"class":206},[200,39010,7714],{"class":317},[200,39012,10673],{"class":206},[200,39014,388],{"class":210},[200,39016,39017,39019,39021,39023,39025,39027],{"class":202,"line":269},[200,39018,10733],{"class":1006},[200,39020,13781],{"class":1006},[200,39022,38982],{"class":317},[200,39024,3975],{"class":210},[200,39026,6659],{"class":923},[200,39028,8169],{"class":206},[200,39030,39031],{"class":202,"line":277},[200,39032,10383],{"class":210},[200,39034,39035],{"class":202,"line":417},[200,39036,376],{"emptyLinePlaceholder":375},[200,39038,39039,39041,39043,39045,39047,39049],{"class":202,"line":422},[200,39040,13628],{"class":313},[200,39042,13634],{"class":317},[200,39044,1096],{"class":210},[200,39046,13781],{"class":1006},[200,39048,38929],{"class":923},[200,39050,8169],{"class":206},[200,39052,39053,39055,39057,39059,39061,39063,39065,39067,39069,39071,39073,39075,39077,39079,39081,39083],{"class":202,"line":29},[200,39054,31537],{"class":1006},[200,39056,32082],{"class":317},[200,39058,3975],{"class":210},[200,39060,8296],{"class":923},[200,39062,6268],{"class":206},[200,39064,8414],{"class":317},[200,39066,1966],{"class":210},[200,39068,8138],{"class":210},[200,39070,37315],{"class":923},[200,39072,6268],{"class":206},[200,39074,37320],{"class":317},[200,39076,3975],{"class":210},[200,39078,21757],{"class":923},[200,39080,6268],{"class":206},[200,39082,14324],{"class":317},[200,39084,39085],{"class":206},")))\n",[200,39087,39088],{"class":202,"line":445},[200,39089,376],{"emptyLinePlaceholder":375},[200,39091,39092,39094],{"class":202,"line":455},[200,39093,13913],{"class":1006},[200,39095,39096],{"class":317}," data\n",[200,39098,39099],{"class":202,"line":466},[200,39100,529],{"class":210},[123,39102,39104],{"id":39103},"_2-database-connections","2. Database Connections",[191,39106,39108],{"className":10095,"code":39107,"language":10097,"meta":196,"style":196},"// Connection pooling at edge\nimport { Pool } from \"pg\"\n\nconst pool = new Pool({\n max: 10,\n idleTimeoutMillis: 30000,\n connectionTimeoutMillis: 2000,\n})\n\nexport async function handler() {\n const client = await pool.connect()\n try {\n const result = await client.query(\"SELECT * FROM users\")\n return result.rows\n } finally {\n client.release()\n }\n}\n",[118,39109,39110,39115,39135,39139,39156,39167,39179,39190,39196,39200,39214,39235,39242,39269,39280,39289,39301,39305],{"__ignoreMap":196},[200,39111,39112],{"class":202,"line":203},[200,39113,39114],{"class":555},"// Connection pooling at edge\n",[200,39116,39117,39119,39121,39124,39126,39128,39130,39133],{"class":202,"line":214},[200,39118,22235],{"class":1006},[200,39120,13631],{"class":210},[200,39122,39123],{"class":317}," Pool",[200,39125,13647],{"class":210},[200,39127,22255],{"class":1006},[200,39129,1030],{"class":210},[200,39131,39132],{"class":286},"pg",[200,39134,1036],{"class":210},[200,39136,39137],{"class":202,"line":16},[200,39138,376],{"emptyLinePlaceholder":375},[200,39140,39141,39143,39146,39148,39150,39152,39154],{"class":202,"line":229},[200,39142,10803],{"class":313},[200,39144,39145],{"class":317}," pool ",[200,39147,4280],{"class":210},[200,39149,8138],{"class":210},[200,39151,39123],{"class":923},[200,39153,6268],{"class":317},[200,39155,388],{"class":210},[200,39157,39158,39161,39163,39165],{"class":202,"line":237},[200,39159,39160],{"class":206}," max",[200,39162,283],{"class":210},[200,39164,9608],{"class":326},[200,39166,2455],{"class":210},[200,39168,39169,39172,39174,39177],{"class":202,"line":245},[200,39170,39171],{"class":206}," idleTimeoutMillis",[200,39173,283],{"class":210},[200,39175,39176],{"class":326}," 30000",[200,39178,2455],{"class":210},[200,39180,39181,39184,39186,39188],{"class":202,"line":253},[200,39182,39183],{"class":206}," connectionTimeoutMillis",[200,39185,283],{"class":210},[200,39187,6485],{"class":326},[200,39189,2455],{"class":210},[200,39191,39192,39194],{"class":202,"line":261},[200,39193,21331],{"class":210},[200,39195,4304],{"class":317},[200,39197,39198],{"class":202,"line":269},[200,39199,376],{"emptyLinePlaceholder":375},[200,39201,39202,39204,39206,39208,39210,39212],{"class":202,"line":277},[200,39203,13614],{"class":1006},[200,39205,11089],{"class":313},[200,39207,6225],{"class":313},[200,39209,38260],{"class":923},[200,39211,10978],{"class":210},[200,39213,318],{"class":210},[200,39215,39216,39218,39221,39223,39225,39228,39230,39233],{"class":202,"line":417},[200,39217,13628],{"class":313},[200,39219,39220],{"class":317}," client",[200,39222,1096],{"class":210},[200,39224,13781],{"class":1006},[200,39226,39227],{"class":317}," pool",[200,39229,3975],{"class":210},[200,39231,39232],{"class":923},"connect",[200,39234,8169],{"class":206},[200,39236,39237,39240],{"class":202,"line":422},[200,39238,39239],{"class":1006}," try",[200,39241,318],{"class":210},[200,39243,39244,39246,39248,39250,39252,39254,39256,39258,39260,39262,39265,39267],{"class":202,"line":29},[200,39245,10640],{"class":313},[200,39247,17310],{"class":317},[200,39249,1096],{"class":210},[200,39251,13781],{"class":1006},[200,39253,39220],{"class":317},[200,39255,3975],{"class":210},[200,39257,32578],{"class":923},[200,39259,6268],{"class":206},[200,39261,1093],{"class":210},[200,39263,39264],{"class":286},"SELECT * FROM users",[200,39266,1093],{"class":210},[200,39268,4304],{"class":206},[200,39270,39271,39273,39275,39277],{"class":202,"line":445},[200,39272,10733],{"class":1006},[200,39274,17310],{"class":317},[200,39276,3975],{"class":210},[200,39278,39279],{"class":317},"rows\n",[200,39281,39282,39284,39287],{"class":202,"line":455},[200,39283,13682],{"class":210},[200,39285,39286],{"class":1006}," finally",[200,39288,318],{"class":210},[200,39290,39291,39294,39296,39299],{"class":202,"line":466},[200,39292,39293],{"class":317}," client",[200,39295,3975],{"class":210},[200,39297,39298],{"class":923},"release",[200,39300,8169],{"class":206},[200,39302,39303],{"class":202,"line":482},[200,39304,10383],{"class":210},[200,39306,39307],{"class":202,"line":493},[200,39308,529],{"class":210},[123,39310,39312],{"id":39311},"_3-cold-start-mitigation","3. Cold Start Mitigation",[191,39314,39316],{"className":10095,"code":39315,"language":10097,"meta":196,"style":196},"// Keep functions warm\nsetInterval(async () => {\n await fetch(\"https://your-app.com/api/warm-up\")\n}, 240000) // Every 4 minutes\n\n// Use provisioned concurrency\n// AWS Lambda: ProvisionedConcurrency: 10\n// Vercel: Premium plan with always-on\n",[118,39317,39318,39323,39338,39355,39368,39372,39377,39382],{"__ignoreMap":196},[200,39319,39320],{"class":202,"line":203},[200,39321,39322],{"class":555},"// Keep functions warm\n",[200,39324,39325,39328,39330,39332,39334,39336],{"class":202,"line":214},[200,39326,39327],{"class":923},"setInterval",[200,39329,6268],{"class":317},[200,39331,18714],{"class":313},[200,39333,13350],{"class":210},[200,39335,6313],{"class":313},[200,39337,318],{"class":210},[200,39339,39340,39342,39344,39346,39348,39351,39353],{"class":202,"line":16},[200,39341,31537],{"class":1006},[200,39343,20079],{"class":923},[200,39345,6268],{"class":206},[200,39347,1093],{"class":210},[200,39349,39350],{"class":286},"https://your-app.com/api/warm-up",[200,39352,1093],{"class":210},[200,39354,4304],{"class":206},[200,39356,39357,39360,39363,39365],{"class":202,"line":229},[200,39358,39359],{"class":210},"},",[200,39361,39362],{"class":326}," 240000",[200,39364,10673],{"class":317},[200,39366,39367],{"class":555},"// Every 4 minutes\n",[200,39369,39370],{"class":202,"line":237},[200,39371,376],{"emptyLinePlaceholder":375},[200,39373,39374],{"class":202,"line":245},[200,39375,39376],{"class":555},"// Use provisioned concurrency\n",[200,39378,39379],{"class":202,"line":253},[200,39380,39381],{"class":555},"// AWS Lambda: ProvisionedConcurrency: 10\n",[200,39383,39384],{"class":202,"line":261},[200,39385,39386],{"class":555},"// Vercel: Premium plan with always-on\n",[100,39388,39390],{"id":39389},"deployment-strategies","Deployment Strategies",[123,39392,39394],{"id":39393},"global-deployment-with-nuxt-4","Global Deployment with Nuxt 4",[191,39396,39398],{"className":10095,"code":39397,"language":10097,"meta":196,"style":196},"// nuxt.config.ts\nexport default defineNuxtConfig({\n nitro: {\n preset: \"cloudflare\",\n experimental: {\n wasm: true,\n },\n routeRules: {\n \"/api/**\": {\n cors: true,\n cache: {\n maxAge: 3600,\n },\n },\n },\n },\n})\n",[118,39399,39400,39404,39416,39425,39441,39450,39461,39465,39474,39486,39497,39506,39517,39522,39526,39530,39534],{"__ignoreMap":196},[200,39401,39402],{"class":202,"line":203},[200,39403,26783],{"class":555},[200,39405,39406,39408,39410,39412,39414],{"class":202,"line":214},[200,39407,13614],{"class":1006},[200,39409,22954],{"class":1006},[200,39411,22957],{"class":923},[200,39413,6268],{"class":317},[200,39415,388],{"class":210},[200,39417,39418,39421,39423],{"class":202,"line":16},[200,39419,39420],{"class":206}," nitro",[200,39422,283],{"class":210},[200,39424,318],{"class":210},[200,39426,39427,39430,39432,39434,39437,39439],{"class":202,"line":229},[200,39428,39429],{"class":206}," preset",[200,39431,283],{"class":210},[200,39433,1030],{"class":210},[200,39435,39436],{"class":286},"cloudflare",[200,39438,1093],{"class":210},[200,39440,2455],{"class":210},[200,39442,39443,39446,39448],{"class":202,"line":237},[200,39444,39445],{"class":206}," experimental",[200,39447,283],{"class":210},[200,39449,318],{"class":210},[200,39451,39452,39455,39457,39459],{"class":202,"line":245},[200,39453,39454],{"class":206}," wasm",[200,39456,283],{"class":210},[200,39458,21477],{"class":5604},[200,39460,2455],{"class":210},[200,39462,39463],{"class":202,"line":253},[200,39464,21319],{"class":210},[200,39466,39467,39470,39472],{"class":202,"line":261},[200,39468,39469],{"class":206}," routeRules",[200,39471,283],{"class":210},[200,39473,318],{"class":210},[200,39475,39476,39478,39480,39482,39484],{"class":202,"line":269},[200,39477,28573],{"class":210},[200,39479,23028],{"class":206},[200,39481,1093],{"class":210},[200,39483,283],{"class":210},[200,39485,318],{"class":210},[200,39487,39488,39491,39493,39495],{"class":202,"line":277},[200,39489,39490],{"class":206}," cors",[200,39492,283],{"class":210},[200,39494,21477],{"class":5604},[200,39496,2455],{"class":210},[200,39498,39499,39502,39504],{"class":202,"line":417},[200,39500,39501],{"class":206}," cache",[200,39503,283],{"class":210},[200,39505,318],{"class":210},[200,39507,39508,39511,39513,39515],{"class":202,"line":422},[200,39509,39510],{"class":206}," maxAge",[200,39512,283],{"class":210},[200,39514,7453],{"class":326},[200,39516,2455],{"class":210},[200,39518,39519],{"class":202,"line":29},[200,39520,39521],{"class":210}," },\n",[200,39523,39524],{"class":202,"line":445},[200,39525,20390],{"class":210},[200,39527,39528],{"class":202,"line":455},[200,39529,21319],{"class":210},[200,39531,39532],{"class":202,"line":466},[200,39533,23076],{"class":210},[200,39535,39536,39538],{"class":202,"line":482},[200,39537,21331],{"class":210},[200,39539,4304],{"class":317},[123,39541,39543],{"id":39542},"multi-region-deployment","Multi-Region Deployment",[191,39545,39547],{"className":193,"code":39546,"language":195,"meta":196,"style":196},"# serverless.yml\nservice: my-edge-app\n\nprovider:\n name: aws\n region: us-east-1\n\nfunctions:\n api:\n handler: handler.main\n events:\n - http:\n path: /api/*\n method: ANY\n provisionedConcurrency: 10\n\n edge:\n handler: edge.handler\n events:\n - cloudFront:\n eventType: viewer-request\n",[118,39548,39549,39554,39564,39568,39575,39584,39594,39598,39605,39612,39622,39629,39638,39648,39658,39668,39672,39679,39688,39694,39703],{"__ignoreMap":196},[200,39550,39551],{"class":202,"line":203},[200,39552,39553],{"class":555},"# serverless.yml\n",[200,39555,39556,39559,39561],{"class":202,"line":214},[200,39557,39558],{"class":206},"service",[200,39560,283],{"class":210},[200,39562,39563],{"class":286}," my-edge-app\n",[200,39565,39566],{"class":202,"line":16},[200,39567,376],{"emptyLinePlaceholder":375},[200,39569,39570,39573],{"class":202,"line":229},[200,39571,39572],{"class":206},"provider",[200,39574,211],{"class":210},[200,39576,39577,39579,39581],{"class":202,"line":237},[200,39578,33678],{"class":206},[200,39580,283],{"class":210},[200,39582,39583],{"class":286}," aws\n",[200,39585,39586,39589,39591],{"class":202,"line":245},[200,39587,39588],{"class":206}," region",[200,39590,283],{"class":210},[200,39592,39593],{"class":286}," us-east-1\n",[200,39595,39596],{"class":202,"line":253},[200,39597,376],{"emptyLinePlaceholder":375},[200,39599,39600,39603],{"class":202,"line":261},[200,39601,39602],{"class":206},"functions",[200,39604,211],{"class":210},[200,39606,39607,39610],{"class":202,"line":269},[200,39608,39609],{"class":206}," api",[200,39611,211],{"class":210},[200,39613,39614,39617,39619],{"class":202,"line":277},[200,39615,39616],{"class":206}," handler",[200,39618,283],{"class":210},[200,39620,39621],{"class":286}," handler.main\n",[200,39623,39624,39627],{"class":202,"line":417},[200,39625,39626],{"class":206}," events",[200,39628,211],{"class":210},[200,39630,39631,39633,39636],{"class":202,"line":422},[200,39632,1651],{"class":210},[200,39634,39635],{"class":206}," http",[200,39637,211],{"class":210},[200,39639,39640,39643,39645],{"class":202,"line":29},[200,39641,39642],{"class":206}," path",[200,39644,283],{"class":210},[200,39646,39647],{"class":286}," /api/*\n",[200,39649,39650,39653,39655],{"class":202,"line":445},[200,39651,39652],{"class":206}," method",[200,39654,283],{"class":210},[200,39656,39657],{"class":286}," ANY\n",[200,39659,39660,39663,39665],{"class":202,"line":455},[200,39661,39662],{"class":206}," provisionedConcurrency",[200,39664,283],{"class":210},[200,39666,39667],{"class":326}," 10\n",[200,39669,39670],{"class":202,"line":466},[200,39671,376],{"emptyLinePlaceholder":375},[200,39673,39674,39677],{"class":202,"line":482},[200,39675,39676],{"class":206}," edge",[200,39678,211],{"class":210},[200,39680,39681,39683,39685],{"class":202,"line":493},[200,39682,39616],{"class":206},[200,39684,283],{"class":210},[200,39686,39687],{"class":286}," edge.handler\n",[200,39689,39690,39692],{"class":202,"line":498},[200,39691,39626],{"class":206},[200,39693,211],{"class":210},[200,39695,39696,39698,39701],{"class":202,"line":503},[200,39697,1651],{"class":210},[200,39699,39700],{"class":206}," cloudFront",[200,39702,211],{"class":210},[200,39704,39705,39708,39710],{"class":202,"line":515},[200,39706,39707],{"class":206}," eventType",[200,39709,283],{"class":210},[200,39711,39712],{"class":286}," viewer-request\n",[100,39714,39716],{"id":39715},"monitoring-and-observability","Monitoring and Observability",[123,39718,39720],{"id":39719},"_1-distributed-tracing","1. Distributed Tracing",[191,39722,39724],{"className":10095,"code":39723,"language":10097,"meta":196,"style":196},"import { trace } from \"@opentelemetry/api\"\n\nconst tracer = trace.getTracer(\"edge-app\")\n\nexport async function handler(request: Request) {\n return tracer.startActiveSpan(\"request\", async (span) => {\n try {\n const result = await processRequest(request)\n span.setAttribute(\"status\", \"success\")\n return result\n } catch (error) {\n span.setAttribute(\"status\", \"error\")\n span.recordException(error)\n throw error\n } finally {\n span.end()\n }\n })\n}\n",[118,39725,39726,39746,39750,39777,39781,39803,39837,39844,39863,39891,39898,39912,39938,39953,39960,39968,39979,39983,39989],{"__ignoreMap":196},[200,39727,39728,39730,39732,39735,39737,39739,39741,39744],{"class":202,"line":203},[200,39729,22235],{"class":1006},[200,39731,13631],{"class":210},[200,39733,39734],{"class":317}," trace",[200,39736,13647],{"class":210},[200,39738,22255],{"class":1006},[200,39740,1030],{"class":210},[200,39742,39743],{"class":286},"@opentelemetry/api",[200,39745,1036],{"class":210},[200,39747,39748],{"class":202,"line":214},[200,39749,376],{"emptyLinePlaceholder":375},[200,39751,39752,39754,39757,39759,39761,39763,39766,39768,39770,39773,39775],{"class":202,"line":16},[200,39753,10803],{"class":313},[200,39755,39756],{"class":317}," tracer ",[200,39758,4280],{"class":210},[200,39760,39734],{"class":317},[200,39762,3975],{"class":210},[200,39764,39765],{"class":923},"getTracer",[200,39767,6268],{"class":317},[200,39769,1093],{"class":210},[200,39771,39772],{"class":286},"edge-app",[200,39774,1093],{"class":210},[200,39776,4304],{"class":317},[200,39778,39779],{"class":202,"line":229},[200,39780,376],{"emptyLinePlaceholder":375},[200,39782,39783,39785,39787,39789,39791,39793,39795,39797,39799,39801],{"class":202,"line":237},[200,39784,13614],{"class":1006},[200,39786,11089],{"class":313},[200,39788,6225],{"class":313},[200,39790,38260],{"class":923},[200,39792,6268],{"class":210},[200,39794,12701],{"class":1257},[200,39796,283],{"class":210},[200,39798,37267],{"class":384},[200,39800,5072],{"class":210},[200,39802,318],{"class":210},[200,39804,39805,39807,39810,39812,39815,39817,39819,39821,39823,39825,39827,39829,39831,39833,39835],{"class":202,"line":245},[200,39806,13913],{"class":1006},[200,39808,39809],{"class":317}," tracer",[200,39811,3975],{"class":210},[200,39813,39814],{"class":923},"startActiveSpan",[200,39816,6268],{"class":206},[200,39818,1093],{"class":210},[200,39820,12701],{"class":286},[200,39822,1093],{"class":210},[200,39824,1966],{"class":210},[200,39826,11089],{"class":313},[200,39828,5253],{"class":210},[200,39830,200],{"class":1257},[200,39832,5072],{"class":210},[200,39834,6313],{"class":313},[200,39836,318],{"class":210},[200,39838,39839,39842],{"class":202,"line":253},[200,39840,39841],{"class":1006}," try",[200,39843,318],{"class":210},[200,39845,39846,39848,39850,39852,39854,39857,39859,39861],{"class":202,"line":261},[200,39847,16695],{"class":313},[200,39849,17310],{"class":317},[200,39851,1096],{"class":210},[200,39853,13781],{"class":1006},[200,39855,39856],{"class":923}," processRequest",[200,39858,6268],{"class":206},[200,39860,12701],{"class":317},[200,39862,4304],{"class":206},[200,39864,39865,39868,39870,39873,39875,39877,39879,39881,39883,39885,39887,39889],{"class":202,"line":269},[200,39866,39867],{"class":317}," span",[200,39869,3975],{"class":210},[200,39871,39872],{"class":923},"setAttribute",[200,39874,6268],{"class":206},[200,39876,1093],{"class":210},[200,39878,6308],{"class":286},[200,39880,1093],{"class":210},[200,39882,1966],{"class":210},[200,39884,1030],{"class":210},[200,39886,13827],{"class":286},[200,39888,1093],{"class":210},[200,39890,4304],{"class":206},[200,39892,39893,39895],{"class":202,"line":277},[200,39894,10722],{"class":1006},[200,39896,39897],{"class":317}," result\n",[200,39899,39900,39902,39904,39906,39908,39910],{"class":202,"line":417},[200,39901,34626],{"class":210},[200,39903,6847],{"class":1006},[200,39905,5253],{"class":206},[200,39907,6872],{"class":317},[200,39909,10673],{"class":206},[200,39911,388],{"class":210},[200,39913,39914,39916,39918,39920,39922,39924,39926,39928,39930,39932,39934,39936],{"class":202,"line":422},[200,39915,39867],{"class":317},[200,39917,3975],{"class":210},[200,39919,39872],{"class":923},[200,39921,6268],{"class":206},[200,39923,1093],{"class":210},[200,39925,6308],{"class":286},[200,39927,1093],{"class":210},[200,39929,1966],{"class":210},[200,39931,1030],{"class":210},[200,39933,6872],{"class":286},[200,39935,1093],{"class":210},[200,39937,4304],{"class":206},[200,39939,39940,39942,39944,39947,39949,39951],{"class":202,"line":29},[200,39941,39867],{"class":317},[200,39943,3975],{"class":210},[200,39945,39946],{"class":923},"recordException",[200,39948,6268],{"class":206},[200,39950,6872],{"class":317},[200,39952,4304],{"class":206},[200,39954,39955,39957],{"class":202,"line":445},[200,39956,13854],{"class":1006},[200,39958,39959],{"class":317}," error\n",[200,39961,39962,39964,39966],{"class":202,"line":455},[200,39963,34626],{"class":210},[200,39965,39286],{"class":1006},[200,39967,318],{"class":210},[200,39969,39970,39972,39974,39977],{"class":202,"line":466},[200,39971,39867],{"class":317},[200,39973,3975],{"class":210},[200,39975,39976],{"class":923},"end",[200,39978,8169],{"class":206},[200,39980,39981],{"class":202,"line":482},[200,39982,414],{"class":210},[200,39984,39985,39987],{"class":202,"line":493},[200,39986,13682],{"class":210},[200,39988,4304],{"class":206},[200,39990,39991],{"class":202,"line":498},[200,39992,529],{"class":210},[123,39994,39996],{"id":39995},"_2-metrics-collection","2. Metrics Collection",[191,39998,40000],{"className":10095,"code":39999,"language":10097,"meta":196,"style":196},"// Track edge function performance\nconst metrics = {\n startTime: Date.now(),\n region: getEdgeRegion(),\n coldStart: isColdStart(),\n}\n\nasync function handler() {\n const result = await processRequest()\n\n // Send metrics\n await fetch(\"/api/metrics\", {\n method: \"POST\",\n body: JSON.stringify({\n ...metrics,\n duration: Date.now() - metrics.startTime,\n }),\n })\n\n return result\n}\n",[118,40001,40002,40007,40018,40035,40048,40062,40066,40070,40082,40096,40100,40105,40124,40139,40156,40166,40193,40201,40207,40211,40217],{"__ignoreMap":196},[200,40003,40004],{"class":202,"line":203},[200,40005,40006],{"class":555},"// Track edge function performance\n",[200,40008,40009,40011,40014,40016],{"class":202,"line":214},[200,40010,10803],{"class":313},[200,40012,40013],{"class":317}," metrics ",[200,40015,4280],{"class":210},[200,40017,318],{"class":210},[200,40019,40020,40023,40025,40027,40029,40031,40033],{"class":202,"line":16},[200,40021,40022],{"class":206}," startTime",[200,40024,283],{"class":210},[200,40026,10924],{"class":317},[200,40028,3975],{"class":210},[200,40030,11031],{"class":923},[200,40032,10978],{"class":317},[200,40034,2455],{"class":210},[200,40036,40037,40039,40041,40044,40046],{"class":202,"line":229},[200,40038,39588],{"class":206},[200,40040,283],{"class":210},[200,40042,40043],{"class":923}," getEdgeRegion",[200,40045,10978],{"class":317},[200,40047,2455],{"class":210},[200,40049,40050,40053,40055,40058,40060],{"class":202,"line":237},[200,40051,40052],{"class":206}," coldStart",[200,40054,283],{"class":210},[200,40056,40057],{"class":923}," isColdStart",[200,40059,10978],{"class":317},[200,40061,2455],{"class":210},[200,40063,40064],{"class":202,"line":245},[200,40065,529],{"class":210},[200,40067,40068],{"class":202,"line":253},[200,40069,376],{"emptyLinePlaceholder":375},[200,40071,40072,40074,40076,40078,40080],{"class":202,"line":261},[200,40073,18714],{"class":313},[200,40075,6225],{"class":313},[200,40077,38260],{"class":923},[200,40079,10978],{"class":210},[200,40081,318],{"class":210},[200,40083,40084,40086,40088,40090,40092,40094],{"class":202,"line":269},[200,40085,13628],{"class":313},[200,40087,17310],{"class":317},[200,40089,1096],{"class":210},[200,40091,13781],{"class":1006},[200,40093,39856],{"class":923},[200,40095,8169],{"class":206},[200,40097,40098],{"class":202,"line":277},[200,40099,376],{"emptyLinePlaceholder":375},[200,40101,40102],{"class":202,"line":417},[200,40103,40104],{"class":555}," // Send metrics\n",[200,40106,40107,40109,40111,40113,40115,40118,40120,40122],{"class":202,"line":422},[200,40108,31537],{"class":1006},[200,40110,20079],{"class":923},[200,40112,6268],{"class":206},[200,40114,1093],{"class":210},[200,40116,40117],{"class":286},"/api/metrics",[200,40119,1093],{"class":210},[200,40121,1966],{"class":210},[200,40123,318],{"class":210},[200,40125,40126,40129,40131,40133,40135,40137],{"class":202,"line":29},[200,40127,40128],{"class":206}," method",[200,40130,283],{"class":210},[200,40132,1030],{"class":210},[200,40134,34573],{"class":286},[200,40136,1093],{"class":210},[200,40138,2455],{"class":210},[200,40140,40141,40144,40146,40148,40150,40152,40154],{"class":202,"line":445},[200,40142,40143],{"class":206}," body",[200,40145,283],{"class":210},[200,40147,21752],{"class":317},[200,40149,3975],{"class":210},[200,40151,21757],{"class":923},[200,40153,6268],{"class":206},[200,40155,388],{"class":210},[200,40157,40158,40161,40164],{"class":202,"line":455},[200,40159,40160],{"class":210}," ...",[200,40162,40163],{"class":317},"metrics",[200,40165,2455],{"class":210},[200,40167,40168,40171,40173,40175,40177,40179,40181,40183,40186,40188,40191],{"class":202,"line":466},[200,40169,40170],{"class":206}," duration",[200,40172,283],{"class":210},[200,40174,10924],{"class":317},[200,40176,3975],{"class":210},[200,40178,11031],{"class":923},[200,40180,10947],{"class":206},[200,40182,11036],{"class":210},[200,40184,40185],{"class":317}," metrics",[200,40187,3975],{"class":210},[200,40189,40190],{"class":317},"startTime",[200,40192,2455],{"class":210},[200,40194,40195,40197,40199],{"class":202,"line":482},[200,40196,34626],{"class":210},[200,40198,5072],{"class":206},[200,40200,2455],{"class":210},[200,40202,40203,40205],{"class":202,"line":493},[200,40204,13682],{"class":210},[200,40206,4304],{"class":206},[200,40208,40209],{"class":202,"line":498},[200,40210,376],{"emptyLinePlaceholder":375},[200,40212,40213,40215],{"class":202,"line":503},[200,40214,13913],{"class":1006},[200,40216,39897],{"class":317},[200,40218,40219],{"class":202,"line":515},[200,40220,529],{"class":210},[100,40222,40224],{"id":40223},"cost-optimization","Cost Optimization",[123,40226,40228],{"id":40227},"_1-function-sizing","1. Function Sizing",[131,40230,40231,40234,40237],{},[134,40232,40233],{},"Keep functions small and focused",[134,40235,40236],{},"Use tree-shaking to reduce bundle size",[134,40238,40239],{},"Lazy load dependencies",[123,40241,40243],{"id":40242},"_2-caching","2. Caching",[131,40245,40246,40249,40252],{},[134,40247,40248],{},"Cache aggressively at the edge",[134,40250,40251],{},"Use CDN for static assets",[134,40253,40254],{},"Implement smart invalidation",[123,40256,40258],{"id":40257},"_3-request-batching","3. Request Batching",[191,40260,40262],{"className":10095,"code":40261,"language":10097,"meta":196,"style":196},"// Batch multiple requests\nconst batch = new Map>()\n\nfunction batchedRequest(key: string, request: () => Promise) {\n if (!batch.has(key)) {\n batch.set(key, request())\n }\n return batch.get(key)!\n}\n",[118,40263,40264,40269,40298,40302,40337,40360,40379,40383,40403],{"__ignoreMap":196},[200,40265,40266],{"class":202,"line":203},[200,40267,40268],{"class":555},"// Batch multiple requests\n",[200,40270,40271,40273,40276,40278,40280,40282,40284,40286,40288,40290,40292,40294,40296],{"class":202,"line":214},[200,40272,10803],{"class":313},[200,40274,40275],{"class":317}," batch ",[200,40277,4280],{"class":210},[200,40279,8138],{"class":210},[200,40281,10413],{"class":923},[200,40283,10416],{"class":210},[200,40285,8386],{"class":384},[200,40287,1966],{"class":210},[200,40289,10532],{"class":384},[200,40291,10416],{"class":210},[200,40293,38942],{"class":384},[200,40295,17007],{"class":210},[200,40297,8169],{"class":317},[200,40299,40300],{"class":202,"line":16},[200,40301,376],{"emptyLinePlaceholder":375},[200,40303,40304,40306,40309,40311,40313,40315,40317,40319,40321,40323,40325,40327,40329,40331,40333,40335],{"class":202,"line":229},[200,40305,13347],{"class":313},[200,40307,40308],{"class":923}," batchedRequest",[200,40310,6268],{"class":210},[200,40312,8414],{"class":1257},[200,40314,283],{"class":210},[200,40316,7591],{"class":384},[200,40318,1966],{"class":210},[200,40320,32313],{"class":923},[200,40322,283],{"class":210},[200,40324,13350],{"class":210},[200,40326,6313],{"class":313},[200,40328,10532],{"class":384},[200,40330,10416],{"class":210},[200,40332,38942],{"class":384},[200,40334,38945],{"class":210},[200,40336,318],{"class":210},[200,40338,40339,40341,40343,40345,40348,40350,40352,40354,40356,40358],{"class":202,"line":237},[200,40340,18891],{"class":1006},[200,40342,5253],{"class":206},[200,40344,10668],{"class":210},[200,40346,40347],{"class":317},"batch",[200,40349,3975],{"class":210},[200,40351,16514],{"class":923},[200,40353,6268],{"class":206},[200,40355,8414],{"class":317},[200,40357,10697],{"class":206},[200,40359,388],{"class":210},[200,40361,40362,40365,40367,40369,40371,40373,40375,40377],{"class":202,"line":245},[200,40363,40364],{"class":317}," batch",[200,40366,3975],{"class":210},[200,40368,924],{"class":923},[200,40370,6268],{"class":206},[200,40372,8414],{"class":317},[200,40374,1966],{"class":210},[200,40376,32313],{"class":923},[200,40378,22005],{"class":206},[200,40380,40381],{"class":202,"line":253},[200,40382,10383],{"class":210},[200,40384,40385,40387,40390,40392,40394,40396,40398,40400],{"class":202,"line":261},[200,40386,13913],{"class":1006},[200,40388,40389],{"class":317}," batch",[200,40391,3975],{"class":210},[200,40393,7657],{"class":923},[200,40395,6268],{"class":206},[200,40397,8414],{"class":317},[200,40399,5072],{"class":206},[200,40401,40402],{"class":210},"!\n",[200,40404,40405],{"class":202,"line":269},[200,40406,529],{"class":210},[100,40408,40410],{"id":40409},"security-considerations","Security Considerations",[123,40412,40414],{"id":40413},"_1-authentication-at-edge","1. Authentication at Edge",[191,40416,40418],{"className":10095,"code":40417,"language":10097,"meta":196,"style":196},"import { verify } from \"jsonwebtoken\"\n\nexport async function middleware(request: Request) {\n const token = request.headers.get(\"Authorization\")?.split(\" \")[1]\n\n if (!token) {\n return new Response(\"Unauthorized\", { status: 401 })\n }\n\n try {\n const decoded = verify(token, process.env.JWT_SECRET!)\n request.headers.set(\"X-User-ID\", decoded.userId)\n } catch {\n return new Response(\"Unauthorized\", { status: 401 })\n }\n}\n",[118,40419,40420,40440,40444,40466,40514,40518,40533,40565,40569,40573,40579,40612,40644,40652,40682,40686],{"__ignoreMap":196},[200,40421,40422,40424,40426,40429,40431,40433,40435,40438],{"class":202,"line":203},[200,40423,22235],{"class":1006},[200,40425,13631],{"class":210},[200,40427,40428],{"class":317}," verify",[200,40430,13647],{"class":210},[200,40432,22255],{"class":1006},[200,40434,1030],{"class":210},[200,40436,40437],{"class":286},"jsonwebtoken",[200,40439,1036],{"class":210},[200,40441,40442],{"class":202,"line":214},[200,40443,376],{"emptyLinePlaceholder":375},[200,40445,40446,40448,40450,40452,40454,40456,40458,40460,40462,40464],{"class":202,"line":16},[200,40447,13614],{"class":1006},[200,40449,11089],{"class":313},[200,40451,6225],{"class":313},[200,40453,38007],{"class":923},[200,40455,6268],{"class":210},[200,40457,12701],{"class":1257},[200,40459,283],{"class":210},[200,40461,37267],{"class":384},[200,40463,5072],{"class":210},[200,40465,318],{"class":210},[200,40467,40468,40470,40473,40475,40477,40479,40481,40483,40485,40487,40489,40492,40494,40496,40498,40501,40503,40505,40507,40510,40512],{"class":202,"line":229},[200,40469,13628],{"class":313},[200,40471,40472],{"class":317}," token",[200,40474,1096],{"class":210},[200,40476,32313],{"class":317},[200,40478,3975],{"class":210},[200,40480,37287],{"class":317},[200,40482,3975],{"class":210},[200,40484,7657],{"class":923},[200,40486,6268],{"class":206},[200,40488,1093],{"class":210},[200,40490,40491],{"class":286},"Authorization",[200,40493,1093],{"class":210},[200,40495,5072],{"class":206},[200,40497,21448],{"class":210},[200,40499,40500],{"class":923},"split",[200,40502,6268],{"class":206},[200,40504,1093],{"class":210},[200,40506,1030],{"class":210},[200,40508,40509],{"class":206},")[",[200,40511,18008],{"class":326},[200,40513,883],{"class":206},[200,40515,40516],{"class":202,"line":237},[200,40517,376],{"emptyLinePlaceholder":375},[200,40519,40520,40522,40524,40526,40529,40531],{"class":202,"line":245},[200,40521,18891],{"class":1006},[200,40523,5253],{"class":206},[200,40525,10668],{"class":210},[200,40527,40528],{"class":317},"token",[200,40530,10673],{"class":206},[200,40532,388],{"class":210},[200,40534,40535,40537,40539,40541,40543,40545,40548,40550,40552,40554,40556,40558,40561,40563],{"class":202,"line":253},[200,40536,10733],{"class":1006},[200,40538,8138],{"class":210},[200,40540,37315],{"class":923},[200,40542,6268],{"class":206},[200,40544,1093],{"class":210},[200,40546,40547],{"class":286},"Unauthorized",[200,40549,1093],{"class":210},[200,40551,1966],{"class":210},[200,40553,13631],{"class":210},[200,40555,18917],{"class":206},[200,40557,283],{"class":210},[200,40559,40560],{"class":326}," 401",[200,40562,13647],{"class":210},[200,40564,4304],{"class":206},[200,40566,40567],{"class":202,"line":261},[200,40568,10383],{"class":210},[200,40570,40571],{"class":202,"line":269},[200,40572,376],{"emptyLinePlaceholder":375},[200,40574,40575,40577],{"class":202,"line":277},[200,40576,39239],{"class":1006},[200,40578,318],{"class":210},[200,40580,40581,40583,40586,40588,40590,40592,40594,40596,40599,40601,40603,40605,40608,40610],{"class":202,"line":417},[200,40582,10640],{"class":313},[200,40584,40585],{"class":317}," decoded",[200,40587,1096],{"class":210},[200,40589,40428],{"class":923},[200,40591,6268],{"class":206},[200,40593,40528],{"class":317},[200,40595,1966],{"class":210},[200,40597,40598],{"class":317}," process",[200,40600,3975],{"class":210},[200,40602,3639],{"class":317},[200,40604,3975],{"class":210},[200,40606,40607],{"class":317},"JWT_SECRET",[200,40609,10668],{"class":210},[200,40611,4304],{"class":206},[200,40613,40614,40617,40619,40621,40623,40625,40627,40629,40632,40634,40636,40638,40640,40642],{"class":202,"line":422},[200,40615,40616],{"class":317}," request",[200,40618,3975],{"class":210},[200,40620,37287],{"class":317},[200,40622,3975],{"class":210},[200,40624,924],{"class":923},[200,40626,6268],{"class":206},[200,40628,1093],{"class":210},[200,40630,40631],{"class":286},"X-User-ID",[200,40633,1093],{"class":210},[200,40635,1966],{"class":210},[200,40637,40585],{"class":317},[200,40639,3975],{"class":210},[200,40641,20093],{"class":317},[200,40643,4304],{"class":206},[200,40645,40646,40648,40650],{"class":202,"line":29},[200,40647,13682],{"class":210},[200,40649,6847],{"class":1006},[200,40651,318],{"class":210},[200,40653,40654,40656,40658,40660,40662,40664,40666,40668,40670,40672,40674,40676,40678,40680],{"class":202,"line":445},[200,40655,10733],{"class":1006},[200,40657,8138],{"class":210},[200,40659,37315],{"class":923},[200,40661,6268],{"class":206},[200,40663,1093],{"class":210},[200,40665,40547],{"class":286},[200,40667,1093],{"class":210},[200,40669,1966],{"class":210},[200,40671,13631],{"class":210},[200,40673,18917],{"class":206},[200,40675,283],{"class":210},[200,40677,40560],{"class":326},[200,40679,13647],{"class":210},[200,40681,4304],{"class":206},[200,40683,40684],{"class":202,"line":455},[200,40685,10383],{"class":210},[200,40687,40688],{"class":202,"line":466},[200,40689,529],{"class":210},[123,40691,40693],{"id":40692},"_2-rate-limiting","2. Rate Limiting",[191,40695,40697],{"className":10095,"code":40696,"language":10097,"meta":196,"style":196},"import { Ratelimit } from \"@upstash/ratelimit\"\n\nconst ratelimit = new Ratelimit({\n redis: redisClient,\n limiter: Ratelimit.slidingWindow(10, \"10 s\"),\n})\n\nexport async function handler(request: Request) {\n const ip = request.headers.get(\"x-forwarded-for\")\n const { success } = await ratelimit.limit(ip!)\n\n if (!success) {\n return new Response(\"Too Many Requests\", { status: 429 })\n }\n\n return processRequest(request)\n}\n",[118,40698,40699,40719,40723,40740,40752,40783,40789,40793,40815,40845,40876,40880,40894,40926,40930,40934,40946],{"__ignoreMap":196},[200,40700,40701,40703,40705,40708,40710,40712,40714,40717],{"class":202,"line":203},[200,40702,22235],{"class":1006},[200,40704,13631],{"class":210},[200,40706,40707],{"class":317}," Ratelimit",[200,40709,13647],{"class":210},[200,40711,22255],{"class":1006},[200,40713,1030],{"class":210},[200,40715,40716],{"class":286},"@upstash/ratelimit",[200,40718,1036],{"class":210},[200,40720,40721],{"class":202,"line":214},[200,40722,376],{"emptyLinePlaceholder":375},[200,40724,40725,40727,40730,40732,40734,40736,40738],{"class":202,"line":16},[200,40726,10803],{"class":313},[200,40728,40729],{"class":317}," ratelimit ",[200,40731,4280],{"class":210},[200,40733,8138],{"class":210},[200,40735,40707],{"class":923},[200,40737,6268],{"class":317},[200,40739,388],{"class":210},[200,40741,40742,40745,40747,40750],{"class":202,"line":229},[200,40743,40744],{"class":206}," redis",[200,40746,283],{"class":210},[200,40748,40749],{"class":317}," redisClient",[200,40751,2455],{"class":210},[200,40753,40754,40757,40759,40761,40763,40766,40768,40770,40772,40774,40777,40779,40781],{"class":202,"line":237},[200,40755,40756],{"class":206}," limiter",[200,40758,283],{"class":210},[200,40760,40707],{"class":317},[200,40762,3975],{"class":210},[200,40764,40765],{"class":923},"slidingWindow",[200,40767,6268],{"class":317},[200,40769,6201],{"class":326},[200,40771,1966],{"class":210},[200,40773,1030],{"class":210},[200,40775,40776],{"class":286},"10 s",[200,40778,1093],{"class":210},[200,40780,5072],{"class":317},[200,40782,2455],{"class":210},[200,40784,40785,40787],{"class":202,"line":245},[200,40786,21331],{"class":210},[200,40788,4304],{"class":317},[200,40790,40791],{"class":202,"line":253},[200,40792,376],{"emptyLinePlaceholder":375},[200,40794,40795,40797,40799,40801,40803,40805,40807,40809,40811,40813],{"class":202,"line":261},[200,40796,13614],{"class":1006},[200,40798,11089],{"class":313},[200,40800,6225],{"class":313},[200,40802,38260],{"class":923},[200,40804,6268],{"class":210},[200,40806,12701],{"class":1257},[200,40808,283],{"class":210},[200,40810,37267],{"class":384},[200,40812,5072],{"class":210},[200,40814,318],{"class":210},[200,40816,40817,40819,40822,40824,40826,40828,40830,40832,40834,40836,40838,40841,40843],{"class":202,"line":269},[200,40818,13628],{"class":313},[200,40820,40821],{"class":317}," ip",[200,40823,1096],{"class":210},[200,40825,32313],{"class":317},[200,40827,3975],{"class":210},[200,40829,37287],{"class":317},[200,40831,3975],{"class":210},[200,40833,7657],{"class":923},[200,40835,6268],{"class":206},[200,40837,1093],{"class":210},[200,40839,40840],{"class":286},"x-forwarded-for",[200,40842,1093],{"class":210},[200,40844,4304],{"class":206},[200,40846,40847,40849,40851,40853,40855,40857,40859,40862,40864,40867,40869,40872,40874],{"class":202,"line":277},[200,40848,13628],{"class":313},[200,40850,13631],{"class":210},[200,40852,14563],{"class":317},[200,40854,13647],{"class":210},[200,40856,1096],{"class":210},[200,40858,13781],{"class":1006},[200,40860,40861],{"class":317}," ratelimit",[200,40863,3975],{"class":210},[200,40865,40866],{"class":923},"limit",[200,40868,6268],{"class":206},[200,40870,40871],{"class":317},"ip",[200,40873,10668],{"class":210},[200,40875,4304],{"class":206},[200,40877,40878],{"class":202,"line":417},[200,40879,376],{"emptyLinePlaceholder":375},[200,40881,40882,40884,40886,40888,40890,40892],{"class":202,"line":422},[200,40883,18891],{"class":1006},[200,40885,5253],{"class":206},[200,40887,10668],{"class":210},[200,40889,13827],{"class":317},[200,40891,10673],{"class":206},[200,40893,388],{"class":210},[200,40895,40896,40898,40900,40902,40904,40906,40909,40911,40913,40915,40917,40919,40922,40924],{"class":202,"line":29},[200,40897,10733],{"class":1006},[200,40899,8138],{"class":210},[200,40901,37315],{"class":923},[200,40903,6268],{"class":206},[200,40905,1093],{"class":210},[200,40907,40908],{"class":286},"Too Many Requests",[200,40910,1093],{"class":210},[200,40912,1966],{"class":210},[200,40914,13631],{"class":210},[200,40916,18917],{"class":206},[200,40918,283],{"class":210},[200,40920,40921],{"class":326}," 429",[200,40923,13647],{"class":210},[200,40925,4304],{"class":206},[200,40927,40928],{"class":202,"line":445},[200,40929,10383],{"class":210},[200,40931,40932],{"class":202,"line":455},[200,40933,376],{"emptyLinePlaceholder":375},[200,40935,40936,40938,40940,40942,40944],{"class":202,"line":466},[200,40937,13913],{"class":1006},[200,40939,39856],{"class":923},[200,40941,6268],{"class":206},[200,40943,12701],{"class":317},[200,40945,4304],{"class":206},[200,40947,40948],{"class":202,"line":482},[200,40949,529],{"class":210},[100,40951,23557],{"id":23556},[123,40953,40955],{"id":40954},"emerging-trends","Emerging Trends",[3806,40957,40958,40964,40969,40974],{},[134,40959,40960,40963],{},[137,40961,40962],{},"Edge AI",": Running ML models at the edge",[134,40965,40966,40968],{},[137,40967,23567],{},": Distributed SQL/NoSQL databases",[134,40970,40971,40973],{},[137,40972,31313],{},": Portable edge functions",[134,40975,40976,40979],{},[137,40977,40978],{},"Edge Orchestration",": Automated deployment and scaling",[123,40981,40983],{"id":40982},"predictions-for-2027","Predictions for 2027",[131,40985,40986,40989,40992,40995],{},[134,40987,40988],{},"80% of enterprise apps will use edge computing",[134,40990,40991],{},"Sub-10ms latency becomes standard",[134,40993,40994],{},"Edge-native databases become mainstream",[134,40996,40997],{},"AI inference moves to the edge",[100,40999,5123],{"id":5122},[104,41001,41002],{},"Edge computing and serverless architectures are no longer optional—they're essential for building modern, performant applications. By understanding the landscape and implementing best practices, you can deliver faster, more reliable experiences to users worldwide.",[104,41004,41005],{},"Start small with edge functions for specific use cases, then gradually expand as you understand the patterns and benefits. The future is distributed, and it's here now.",[5291,41007],{},[104,41009,41010,41013],{},[137,41011,41012],{},"Ready to go edge?"," Start with a simple middleware function or API route, then expand from there. The performance gains are immediate and measurable.",[5134,41015,41016],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":196,"searchDepth":214,"depth":214,"links":41018},[41019,41020,41024,41027,41033,41038,41042,41046,41051,41055,41059],{"id":37112,"depth":214,"text":37107},{"id":37121,"depth":214,"text":37122,"children":41021},[41022,41023],{"id":37125,"depth":16,"text":37126},{"id":37154,"depth":16,"text":37155},{"id":37188,"depth":214,"text":37189,"children":41025},[41026],{"id":37192,"depth":16,"text":37193},{"id":31206,"depth":214,"text":31207,"children":41028},[41029,41030,41031,41032],{"id":37985,"depth":16,"text":37986},{"id":38144,"depth":16,"text":38145},{"id":38386,"depth":16,"text":38387},{"id":38616,"depth":16,"text":38617},{"id":38876,"depth":214,"text":30650,"children":41034},[41035,41036,41037],{"id":38879,"depth":16,"text":38880},{"id":39103,"depth":16,"text":39104},{"id":39311,"depth":16,"text":39312},{"id":39389,"depth":214,"text":39390,"children":41039},[41040,41041],{"id":39393,"depth":16,"text":39394},{"id":39542,"depth":16,"text":39543},{"id":39715,"depth":214,"text":39716,"children":41043},[41044,41045],{"id":39719,"depth":16,"text":39720},{"id":39995,"depth":16,"text":39996},{"id":40223,"depth":214,"text":40224,"children":41047},[41048,41049,41050],{"id":40227,"depth":16,"text":40228},{"id":40242,"depth":16,"text":40243},{"id":40257,"depth":16,"text":40258},{"id":40409,"depth":214,"text":40410,"children":41052},[41053,41054],{"id":40413,"depth":16,"text":40414},{"id":40692,"depth":16,"text":40693},{"id":23556,"depth":214,"text":23557,"children":41056},[41057,41058],{"id":40954,"depth":16,"text":40955},{"id":40982,"depth":16,"text":40983},{"id":5122,"depth":214,"text":5123},"2026-02-21","Master edge computing and serverless architectures in 2026 with practical examples, performance optimizations, and real-world deployment strategies.",{"readingTime":21104},"/blog/28-edge-computing-serverless-guide-2026",{"title":37107,"description":41061},"Cloud Architecture","Modern cloud-native architecture patterns and practices",{"src":41068,"mime":5204,"alt":41069,"width":5206,"height":21112},"/img/blog/28-edge-computing-serverless-guide-2026/banner.svg","Edge Computing Serverless 2026 - Global network with edge nodes and cloud connections on dark blue","blog/28-edge-computing-serverless-guide-2026",[23651,23652,23653,21116,11585],"kmJEi_e5kTs06PpkkmwO_NAyst4XAe8ilPrvy0COoGo",{"id":41074,"title":41075,"abstract":5196,"author":94,"authorUrl":5196,"body":41076,"date":44250,"dateUpdated":44250,"description":44251,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":44252,"navigation":375,"ogImage":5196,"path":44253,"seo":44254,"series":44255,"seriesDescription":44256,"seriesOrder":203,"socialImage":44257,"stem":44260,"tags":44261,"__hash__":44266},"blog/blog/29-design-tokens-tailwind-v4-guide.md","Design Tokens & Tailwind v4: The Complete Guide",{"type":97,"value":41077,"toc":44211},[41078,41081,41084,41087,41091,41094,41128,41132,41157,41161,41165,41216,41220,41294,41298,41302,41726,41730,41930,41934,42226,42230,42234,42343,42347,42511,42515,42611,42615,42619,42824,42828,43005,43009,43013,43306,43310,43430,43432,43434,43445,43447,43450,43452,43456,43524,43528,43593,43597,43673,43677,44192,44194,44197,44200,44202,44208],[100,41079,41075],{"id":41080},"design-tokens-tailwind-v4-the-complete-guide",[104,41082,41083],{},"Design tokens have become the foundation of modern design systems, and Tailwind CSS v4 takes this to the next level. In 2026, combining design tokens with Tailwind's utility-first approach provides unmatched consistency and scalability for large applications.",[104,41085,41086],{},"This guide covers everything from basic token setup to advanced theming strategies.",[100,41088,41090],{"id":41089},"what-are-design-tokens","What Are Design Tokens?",[104,41092,41093],{},"Design tokens are named variables that store design decisions:",[131,41095,41096,41104,41112,41120],{},[134,41097,41098,3878,41101],{},[137,41099,41100],{},"Colors",[118,41102,41103],{},"primary-500: #3B82F6",[134,41105,41106,3878,41109],{},[137,41107,41108],{},"Spacing",[118,41110,41111],{},"spacing-4: 1rem",[134,41113,41114,3878,41117],{},[137,41115,41116],{},"Typography",[118,41118,41119],{},"font-lg: 1.125rem",[134,41121,41122,3878,41125],{},[137,41123,41124],{},"Borders",[118,41126,41127],{},"radius-md: 0.375rem",[123,41129,41131],{"id":41130},"why-design-tokens-matter","Why Design Tokens Matter",[3806,41133,41134,41140,41145,41151],{},[134,41135,41136,41139],{},[137,41137,41138],{},"Consistency",": Same values across all platforms",[134,41141,41142,41144],{},[137,41143,12193],{},": Change once, update everywhere",[134,41146,41147,41150],{},[137,41148,41149],{},"Theming",": Easy dark mode and brand variations",[134,41152,41153,41156],{},[137,41154,41155],{},"Collaboration",": Shared language between designers and developers",[100,41158,41160],{"id":41159},"tailwind-v4-whats-new","Tailwind v4: What's New",[123,41162,41164],{"id":41163},"css-first-configuration","CSS-First Configuration",[191,41166,41168],{"className":21546,"code":41167,"language":21548,"meta":196,"style":196},"/* Tailwind v4 uses CSS variables natively */\n@theme {\n --color-primary: #3b82f6;\n --color-primary-500: #3b82f6;\n --spacing-4: 1rem;\n --font-size-lg: 1.125rem;\n}\n",[118,41169,41170,41175,41182,41193,41202,41207,41212],{"__ignoreMap":196},[200,41171,41172],{"class":202,"line":203},[200,41173,41174],{"class":555},"/* Tailwind v4 uses CSS variables natively */\n",[200,41176,41177,41180],{"class":202,"line":214},[200,41178,41179],{"class":1006},"@theme",[200,41181,318],{"class":210},[200,41183,41184,41187,41190],{"class":202,"line":16},[200,41185,41186],{"class":317}," --color-primary: ",[200,41188,41189],{"class":210},"#",[200,41191,41192],{"class":317},"3b82f6;\n",[200,41194,41195,41198,41200],{"class":202,"line":229},[200,41196,41197],{"class":317}," --color-primary-500: ",[200,41199,41189],{"class":210},[200,41201,41192],{"class":317},[200,41203,41204],{"class":202,"line":237},[200,41205,41206],{"class":317}," --spacing-4: 1rem;\n",[200,41208,41209],{"class":202,"line":245},[200,41210,41211],{"class":317}," --font-size-lg: 1.125rem;\n",[200,41213,41214],{"class":202,"line":253},[200,41215,529],{"class":317},[123,41217,41219],{"id":41218},"native-css-variables","Native CSS Variables",[191,41221,41223],{"className":21546,"code":41222,"language":21548,"meta":196,"style":196},"/* Before v4 */\n.bg-primary {\n background-color: #3b82f6;\n}\n\n/* Tailwind v4 */\n.bg-primary {\n background-color: var(--color-primary);\n}\n",[118,41224,41225,41230,41239,41253,41257,41261,41266,41274,41290],{"__ignoreMap":196},[200,41226,41227],{"class":202,"line":203},[200,41228,41229],{"class":555},"/* Before v4 */\n",[200,41231,41232,41234,41237],{"class":202,"line":214},[200,41233,3975],{"class":210},[200,41235,41236],{"class":384},"bg-primary",[200,41238,318],{"class":210},[200,41240,41241,41244,41246,41248,41251],{"class":202,"line":16},[200,41242,41243],{"class":21569}," background-color",[200,41245,283],{"class":210},[200,41247,21592],{"class":210},[200,41249,41250],{"class":317},"3b82f6",[200,41252,330],{"class":210},[200,41254,41255],{"class":202,"line":229},[200,41256,529],{"class":210},[200,41258,41259],{"class":202,"line":237},[200,41260,376],{"emptyLinePlaceholder":375},[200,41262,41263],{"class":202,"line":245},[200,41264,41265],{"class":555},"/* Tailwind v4 */\n",[200,41267,41268,41270,41272],{"class":202,"line":253},[200,41269,3975],{"class":210},[200,41271,41236],{"class":384},[200,41273,318],{"class":210},[200,41275,41276,41278,41280,41283,41285,41288],{"class":202,"line":261},[200,41277,41243],{"class":21569},[200,41279,283],{"class":210},[200,41281,41282],{"class":923}," var",[200,41284,6268],{"class":210},[200,41286,41287],{"class":317},"--color-primary",[200,41289,6804],{"class":210},[200,41291,41292],{"class":202,"line":269},[200,41293,529],{"class":210},[100,41295,41297],{"id":41296},"setting-up-design-tokens","Setting Up Design Tokens",[123,41299,41301],{"id":41300},"step-1-define-your-token-structure","Step 1: Define Your Token Structure",[191,41303,41305],{"className":10095,"code":41304,"language":10097,"meta":196,"style":196},"// design-tokens/tokens.json\n{\n \"colors\": {\n \"primary\": {\n \"50\": \"#EFF6FF\",\n \"100\": \"#DBEAFE\",\n \"500\": \"#3B82F6\",\n \"900\": \"#1E3A8A\"\n },\n \"neutral\": {\n \"100\": \"#F3F4F6\",\n \"500\": \"#6B7280\",\n \"900\": \"#111827\"\n }\n },\n \"spacing\": {\n \"0\": \"0\",\n \"1\": \"0.25rem\",\n \"2\": \"0.5rem\",\n \"4\": \"1rem\",\n \"8\": \"2rem\"\n },\n \"typography\": {\n \"fontSize\": {\n \"sm\": \"0.875rem\",\n \"base\": \"1rem\",\n \"lg\": \"1.125rem\",\n \"xl\": \"1.25rem\"\n }\n }\n}\n",[118,41306,41307,41312,41316,41329,41342,41362,41382,41402,41420,41424,41437,41456,41475,41492,41496,41500,41513,41531,41550,41569,41589,41607,41611,41624,41637,41657,41676,41696,41714,41718,41722],{"__ignoreMap":196},[200,41308,41309],{"class":202,"line":203},[200,41310,41311],{"class":555},"// design-tokens/tokens.json\n",[200,41313,41314],{"class":202,"line":214},[200,41315,388],{"class":210},[200,41317,41318,41320,41323,41325,41327],{"class":202,"line":16},[200,41319,15331],{"class":210},[200,41321,41322],{"class":286},"colors",[200,41324,1093],{"class":210},[200,41326,3878],{"class":206},[200,41328,388],{"class":210},[200,41330,41331,41333,41336,41338,41340],{"class":202,"line":229},[200,41332,22442],{"class":210},[200,41334,41335],{"class":206},"primary",[200,41337,1093],{"class":210},[200,41339,283],{"class":210},[200,41341,318],{"class":210},[200,41343,41344,41346,41349,41351,41353,41355,41358,41360],{"class":202,"line":237},[200,41345,28573],{"class":210},[200,41347,41348],{"class":206},"50",[200,41350,1093],{"class":210},[200,41352,283],{"class":210},[200,41354,1030],{"class":210},[200,41356,41357],{"class":286},"#EFF6FF",[200,41359,1093],{"class":210},[200,41361,2455],{"class":210},[200,41363,41364,41366,41369,41371,41373,41375,41378,41380],{"class":202,"line":245},[200,41365,28573],{"class":210},[200,41367,41368],{"class":206},"100",[200,41370,1093],{"class":210},[200,41372,283],{"class":210},[200,41374,1030],{"class":210},[200,41376,41377],{"class":286},"#DBEAFE",[200,41379,1093],{"class":210},[200,41381,2455],{"class":210},[200,41383,41384,41386,41389,41391,41393,41395,41398,41400],{"class":202,"line":253},[200,41385,28573],{"class":210},[200,41387,41388],{"class":206},"500",[200,41390,1093],{"class":210},[200,41392,283],{"class":210},[200,41394,1030],{"class":210},[200,41396,41397],{"class":286},"#3B82F6",[200,41399,1093],{"class":210},[200,41401,2455],{"class":210},[200,41403,41404,41406,41409,41411,41413,41415,41418],{"class":202,"line":261},[200,41405,28573],{"class":210},[200,41407,41408],{"class":206},"900",[200,41410,1093],{"class":210},[200,41412,283],{"class":210},[200,41414,1030],{"class":210},[200,41416,41417],{"class":286},"#1E3A8A",[200,41419,1036],{"class":210},[200,41421,41422],{"class":202,"line":269},[200,41423,21319],{"class":210},[200,41425,41426,41428,41431,41433,41435],{"class":202,"line":277},[200,41427,22442],{"class":210},[200,41429,41430],{"class":206},"neutral",[200,41432,1093],{"class":210},[200,41434,283],{"class":210},[200,41436,318],{"class":210},[200,41438,41439,41441,41443,41445,41447,41449,41452,41454],{"class":202,"line":417},[200,41440,28573],{"class":210},[200,41442,41368],{"class":206},[200,41444,1093],{"class":210},[200,41446,283],{"class":210},[200,41448,1030],{"class":210},[200,41450,41451],{"class":286},"#F3F4F6",[200,41453,1093],{"class":210},[200,41455,2455],{"class":210},[200,41457,41458,41460,41462,41464,41466,41468,41471,41473],{"class":202,"line":422},[200,41459,28573],{"class":210},[200,41461,41388],{"class":206},[200,41463,1093],{"class":210},[200,41465,283],{"class":210},[200,41467,1030],{"class":210},[200,41469,41470],{"class":286},"#6B7280",[200,41472,1093],{"class":210},[200,41474,2455],{"class":210},[200,41476,41477,41479,41481,41483,41485,41487,41490],{"class":202,"line":29},[200,41478,28573],{"class":210},[200,41480,41408],{"class":206},[200,41482,1093],{"class":210},[200,41484,283],{"class":210},[200,41486,1030],{"class":210},[200,41488,41489],{"class":286},"#111827",[200,41491,1036],{"class":210},[200,41493,41494],{"class":202,"line":445},[200,41495,414],{"class":210},[200,41497,41498],{"class":202,"line":455},[200,41499,23076],{"class":210},[200,41501,41502,41504,41507,41509,41511],{"class":202,"line":466},[200,41503,15331],{"class":210},[200,41505,41506],{"class":286},"spacing",[200,41508,1093],{"class":210},[200,41510,3878],{"class":206},[200,41512,388],{"class":210},[200,41514,41515,41517,41519,41521,41523,41525,41527,41529],{"class":202,"line":482},[200,41516,22442],{"class":210},[200,41518,20921],{"class":206},[200,41520,1093],{"class":210},[200,41522,283],{"class":210},[200,41524,1030],{"class":210},[200,41526,20921],{"class":286},[200,41528,1093],{"class":210},[200,41530,2455],{"class":210},[200,41532,41533,41535,41537,41539,41541,41543,41546,41548],{"class":202,"line":493},[200,41534,22442],{"class":210},[200,41536,18008],{"class":206},[200,41538,1093],{"class":210},[200,41540,283],{"class":210},[200,41542,1030],{"class":210},[200,41544,41545],{"class":286},"0.25rem",[200,41547,1093],{"class":210},[200,41549,2455],{"class":210},[200,41551,41552,41554,41556,41558,41560,41562,41565,41567],{"class":202,"line":498},[200,41553,22442],{"class":210},[200,41555,18026],{"class":206},[200,41557,1093],{"class":210},[200,41559,283],{"class":210},[200,41561,1030],{"class":210},[200,41563,41564],{"class":286},"0.5rem",[200,41566,1093],{"class":210},[200,41568,2455],{"class":210},[200,41570,41571,41573,41576,41578,41580,41582,41585,41587],{"class":202,"line":503},[200,41572,22442],{"class":210},[200,41574,41575],{"class":206},"4",[200,41577,1093],{"class":210},[200,41579,283],{"class":210},[200,41581,1030],{"class":210},[200,41583,41584],{"class":286},"1rem",[200,41586,1093],{"class":210},[200,41588,2455],{"class":210},[200,41590,41591,41593,41596,41598,41600,41602,41605],{"class":202,"line":515},[200,41592,22442],{"class":210},[200,41594,41595],{"class":206},"8",[200,41597,1093],{"class":210},[200,41599,283],{"class":210},[200,41601,1030],{"class":210},[200,41603,41604],{"class":286},"2rem",[200,41606,1036],{"class":210},[200,41608,41609],{"class":202,"line":521},[200,41610,23076],{"class":210},[200,41612,41613,41615,41618,41620,41622],{"class":202,"line":526},[200,41614,15331],{"class":210},[200,41616,41617],{"class":286},"typography",[200,41619,1093],{"class":210},[200,41621,3878],{"class":206},[200,41623,388],{"class":210},[200,41625,41626,41628,41631,41633,41635],{"class":202,"line":687},[200,41627,22442],{"class":210},[200,41629,41630],{"class":206},"fontSize",[200,41632,1093],{"class":210},[200,41634,283],{"class":210},[200,41636,318],{"class":210},[200,41638,41639,41641,41644,41646,41648,41650,41653,41655],{"class":202,"line":693},[200,41640,28573],{"class":210},[200,41642,41643],{"class":206},"sm",[200,41645,1093],{"class":210},[200,41647,283],{"class":210},[200,41649,1030],{"class":210},[200,41651,41652],{"class":286},"0.875rem",[200,41654,1093],{"class":210},[200,41656,2455],{"class":210},[200,41658,41659,41661,41664,41666,41668,41670,41672,41674],{"class":202,"line":699},[200,41660,28573],{"class":210},[200,41662,41663],{"class":206},"base",[200,41665,1093],{"class":210},[200,41667,283],{"class":210},[200,41669,1030],{"class":210},[200,41671,41584],{"class":286},[200,41673,1093],{"class":210},[200,41675,2455],{"class":210},[200,41677,41678,41680,41683,41685,41687,41689,41692,41694],{"class":202,"line":704},[200,41679,28573],{"class":210},[200,41681,41682],{"class":206},"lg",[200,41684,1093],{"class":210},[200,41686,283],{"class":210},[200,41688,1030],{"class":210},[200,41690,41691],{"class":286},"1.125rem",[200,41693,1093],{"class":210},[200,41695,2455],{"class":210},[200,41697,41698,41700,41703,41705,41707,41709,41712],{"class":202,"line":709},[200,41699,28573],{"class":210},[200,41701,41702],{"class":206},"xl",[200,41704,1093],{"class":210},[200,41706,283],{"class":210},[200,41708,1030],{"class":210},[200,41710,41711],{"class":286},"1.25rem",[200,41713,1036],{"class":210},[200,41715,41716],{"class":202,"line":717},[200,41717,414],{"class":210},[200,41719,41720],{"class":202,"line":725},[200,41721,10383],{"class":210},[200,41723,41724],{"class":202,"line":730},[200,41725,529],{"class":210},[123,41727,41729],{"id":41728},"step-2-configure-tailwind-v4","Step 2: Configure Tailwind v4",[191,41731,41733],{"className":21546,"code":41732,"language":21548,"meta":196,"style":196},"/* app/assets/css/main.css */\n@import \"tailwindcss\";\n\n@theme {\n /* Colors */\n --color-primary-50: #eff6ff;\n --color-primary-100: #dbeafe;\n --color-primary-500: #3b82f6;\n --color-primary-900: #1e3a8a;\n\n --color-neutral-100: #f3f4f6;\n --color-neutral-500: #6b7280;\n --color-neutral-900: #111827;\n\n /* Spacing */\n --spacing-1: 0.25rem;\n --spacing-2: 0.5rem;\n --spacing-4: 1rem;\n --spacing-8: 2rem;\n\n /* Typography */\n --font-size-sm: 0.875rem;\n --font-size-base: 1rem;\n --font-size-lg: 1.125rem;\n --font-size-xl: 1.25rem;\n\n /* Border Radius */\n --radius-sm: 0.125rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-full: 9999px;\n}\n",[118,41734,41735,41740,41754,41758,41764,41769,41779,41789,41797,41807,41811,41821,41831,41841,41845,41850,41855,41860,41864,41869,41873,41878,41883,41888,41892,41897,41901,41906,41911,41916,41921,41926],{"__ignoreMap":196},[200,41736,41737],{"class":202,"line":203},[200,41738,41739],{"class":555},"/* app/assets/css/main.css */\n",[200,41741,41742,41745,41747,41750,41752],{"class":202,"line":214},[200,41743,41744],{"class":1006},"@import",[200,41746,1030],{"class":210},[200,41748,41749],{"class":286},"tailwindcss",[200,41751,1093],{"class":210},[200,41753,330],{"class":210},[200,41755,41756],{"class":202,"line":16},[200,41757,376],{"emptyLinePlaceholder":375},[200,41759,41760,41762],{"class":202,"line":229},[200,41761,41179],{"class":1006},[200,41763,318],{"class":210},[200,41765,41766],{"class":202,"line":237},[200,41767,41768],{"class":555}," /* Colors */\n",[200,41770,41771,41774,41776],{"class":202,"line":245},[200,41772,41773],{"class":317}," --color-primary-50: ",[200,41775,41189],{"class":210},[200,41777,41778],{"class":317},"eff6ff;\n",[200,41780,41781,41784,41786],{"class":202,"line":253},[200,41782,41783],{"class":317}," --color-primary-100: ",[200,41785,41189],{"class":210},[200,41787,41788],{"class":317},"dbeafe;\n",[200,41790,41791,41793,41795],{"class":202,"line":261},[200,41792,41197],{"class":317},[200,41794,41189],{"class":210},[200,41796,41192],{"class":317},[200,41798,41799,41802,41804],{"class":202,"line":269},[200,41800,41801],{"class":317}," --color-primary-900: ",[200,41803,41189],{"class":210},[200,41805,41806],{"class":317},"1e3a8a;\n",[200,41808,41809],{"class":202,"line":277},[200,41810,376],{"emptyLinePlaceholder":375},[200,41812,41813,41816,41818],{"class":202,"line":417},[200,41814,41815],{"class":317}," --color-neutral-100: ",[200,41817,41189],{"class":210},[200,41819,41820],{"class":317},"f3f4f6;\n",[200,41822,41823,41826,41828],{"class":202,"line":422},[200,41824,41825],{"class":317}," --color-neutral-500: ",[200,41827,41189],{"class":210},[200,41829,41830],{"class":317},"6b7280;\n",[200,41832,41833,41836,41838],{"class":202,"line":29},[200,41834,41835],{"class":317}," --color-neutral-900: ",[200,41837,41189],{"class":210},[200,41839,41840],{"class":317},"111827;\n",[200,41842,41843],{"class":202,"line":445},[200,41844,376],{"emptyLinePlaceholder":375},[200,41846,41847],{"class":202,"line":455},[200,41848,41849],{"class":555}," /* Spacing */\n",[200,41851,41852],{"class":202,"line":466},[200,41853,41854],{"class":317}," --spacing-1: 0.25rem;\n",[200,41856,41857],{"class":202,"line":482},[200,41858,41859],{"class":317}," --spacing-2: 0.5rem;\n",[200,41861,41862],{"class":202,"line":493},[200,41863,41206],{"class":317},[200,41865,41866],{"class":202,"line":498},[200,41867,41868],{"class":317}," --spacing-8: 2rem;\n",[200,41870,41871],{"class":202,"line":503},[200,41872,376],{"emptyLinePlaceholder":375},[200,41874,41875],{"class":202,"line":515},[200,41876,41877],{"class":555}," /* Typography */\n",[200,41879,41880],{"class":202,"line":521},[200,41881,41882],{"class":317}," --font-size-sm: 0.875rem;\n",[200,41884,41885],{"class":202,"line":526},[200,41886,41887],{"class":317}," --font-size-base: 1rem;\n",[200,41889,41890],{"class":202,"line":687},[200,41891,41211],{"class":317},[200,41893,41894],{"class":202,"line":693},[200,41895,41896],{"class":317}," --font-size-xl: 1.25rem;\n",[200,41898,41899],{"class":202,"line":699},[200,41900,376],{"emptyLinePlaceholder":375},[200,41902,41903],{"class":202,"line":704},[200,41904,41905],{"class":555}," /* Border Radius */\n",[200,41907,41908],{"class":202,"line":709},[200,41909,41910],{"class":317}," --radius-sm: 0.125rem;\n",[200,41912,41913],{"class":202,"line":717},[200,41914,41915],{"class":317}," --radius-md: 0.375rem;\n",[200,41917,41918],{"class":202,"line":725},[200,41919,41920],{"class":317}," --radius-lg: 0.5rem;\n",[200,41922,41923],{"class":202,"line":730},[200,41924,41925],{"class":317}," --radius-full: 9999px;\n",[200,41927,41928],{"class":202,"line":744},[200,41929,529],{"class":317},[123,41931,41933],{"id":41932},"step-3-use-in-nuxt-components","Step 3: Use in Nuxt Components",[191,41935,41937],{"className":36062,"code":41936,"language":36064,"meta":196,"style":196},"\n\n\n\n",[118,41938,41939,41944,41952,41959,41973,41985,41990,41995,42000,42007,42012,42022,42031,42039,42043,42063,42077,42086,42126,42141,42145,42151,42155,42166,42182,42198,42214,42218],{"__ignoreMap":196},[200,41940,41941],{"class":202,"line":203},[200,41942,41943],{"class":555},"\n",[200,41945,41946,41948,41950],{"class":202,"line":214},[200,41947,10416],{"class":210},[200,41949,22112],{"class":206},[200,41951,10425],{"class":210},[200,41953,41954,41956],{"class":202,"line":16},[200,41955,22119],{"class":210},[200,41957,41958],{"class":206},"button\n",[200,41960,41961,41964,41966,41968,41971],{"class":202,"line":229},[200,41962,41963],{"class":313}," class",[200,41965,4280],{"class":210},[200,41967,1093],{"class":210},[200,41969,41970],{"class":286},"px-4 py-2 rounded-md font-medium transition-colors",[200,41972,1036],{"class":210},[200,41974,41975,41978,41980,41982],{"class":202,"line":237},[200,41976,41977],{"class":313}," :class",[200,41979,4280],{"class":210},[200,41981,1093],{"class":210},[200,41983,41984],{"class":286},"[\n",[200,41986,41987],{"class":202,"line":245},[200,41988,41989],{"class":286}," `bg-primary-500 hover:bg-primary-600`,\n",[200,41991,41992],{"class":202,"line":253},[200,41993,41994],{"class":286}," `text-white`,\n",[200,41996,41997],{"class":202,"line":261},[200,41998,41999],{"class":286}," sizeClasses[size],\n",[200,42001,42002,42005],{"class":202,"line":269},[200,42003,42004],{"class":286}," ]",[200,42006,1036],{"class":210},[200,42008,42009],{"class":202,"line":277},[200,42010,42011],{"class":210}," >\n",[200,42013,42014,42016,42019],{"class":202,"line":417},[200,42015,20788],{"class":210},[200,42017,42018],{"class":206},"slot",[200,42020,42021],{"class":210}," />\n",[200,42023,42024,42026,42029],{"class":202,"line":422},[200,42025,22139],{"class":210},[200,42027,42028],{"class":206},"button",[200,42030,10425],{"class":210},[200,42032,42033,42035,42037],{"class":202,"line":29},[200,42034,22205],{"class":210},[200,42036,22112],{"class":206},[200,42038,10425],{"class":210},[200,42040,42041],{"class":202,"line":445},[200,42042,376],{"emptyLinePlaceholder":375},[200,42044,42045,42047,42049,42051,42053,42055,42057,42059,42061],{"class":202,"line":455},[200,42046,10416],{"class":210},[200,42048,22507],{"class":206},[200,42050,36080],{"class":313},[200,42052,36083],{"class":313},[200,42054,4280],{"class":210},[200,42056,1093],{"class":210},[200,42058,29012],{"class":286},[200,42060,1093],{"class":210},[200,42062,10425],{"class":210},[200,42064,42065,42067,42069,42071,42073,42075],{"class":202,"line":466},[200,42066,10803],{"class":313},[200,42068,36125],{"class":317},[200,42070,4280],{"class":210},[200,42072,36130],{"class":923},[200,42074,6268],{"class":317},[200,42076,388],{"class":210},[200,42078,42079,42082,42084],{"class":202,"line":482},[200,42080,42081],{"class":206}," size",[200,42083,283],{"class":210},[200,42085,318],{"class":210},[200,42087,42088,42091,42093,42096,42098,42100,42102,42104,42106,42108,42110,42112,42114,42116,42118,42120,42122,42124],{"class":202,"line":493},[200,42089,42090],{"class":206}," type",[200,42092,283],{"class":210},[200,42094,42095],{"class":317}," String ",[200,42097,18881],{"class":1006},[200,42099,13350],{"class":210},[200,42101,6313],{"class":313},[200,42103,1030],{"class":210},[200,42105,41643],{"class":286},[200,42107,1093],{"class":210},[200,42109,10173],{"class":210},[200,42111,1030],{"class":210},[200,42113,5197],{"class":286},[200,42115,1093],{"class":210},[200,42117,10173],{"class":210},[200,42119,1030],{"class":210},[200,42121,41682],{"class":286},[200,42123,1093],{"class":210},[200,42125,2455],{"class":210},[200,42127,42128,42131,42133,42135,42137,42139],{"class":202,"line":498},[200,42129,42130],{"class":206}," default",[200,42132,283],{"class":210},[200,42134,1030],{"class":210},[200,42136,5197],{"class":286},[200,42138,1093],{"class":210},[200,42140,2455],{"class":210},[200,42142,42143],{"class":202,"line":503},[200,42144,23076],{"class":210},[200,42146,42147,42149],{"class":202,"line":515},[200,42148,21331],{"class":210},[200,42150,4304],{"class":317},[200,42152,42153],{"class":202,"line":521},[200,42154,376],{"emptyLinePlaceholder":375},[200,42156,42157,42159,42162,42164],{"class":202,"line":526},[200,42158,10803],{"class":313},[200,42160,42161],{"class":317}," sizeClasses ",[200,42163,4280],{"class":210},[200,42165,318],{"class":210},[200,42167,42168,42171,42173,42175,42178,42180],{"class":202,"line":687},[200,42169,42170],{"class":206}," sm",[200,42172,283],{"class":210},[200,42174,1030],{"class":210},[200,42176,42177],{"class":286},"px-2 py-1 text-sm",[200,42179,1093],{"class":210},[200,42181,2455],{"class":210},[200,42183,42184,42187,42189,42191,42194,42196],{"class":202,"line":693},[200,42185,42186],{"class":206}," md",[200,42188,283],{"class":210},[200,42190,1030],{"class":210},[200,42192,42193],{"class":286},"px-4 py-2 text-base",[200,42195,1093],{"class":210},[200,42197,2455],{"class":210},[200,42199,42200,42203,42205,42207,42210,42212],{"class":202,"line":699},[200,42201,42202],{"class":206}," lg",[200,42204,283],{"class":210},[200,42206,1030],{"class":210},[200,42208,42209],{"class":286},"px-6 py-3 text-lg",[200,42211,1093],{"class":210},[200,42213,2455],{"class":210},[200,42215,42216],{"class":202,"line":704},[200,42217,529],{"class":210},[200,42219,42220,42222,42224],{"class":202,"line":709},[200,42221,22205],{"class":210},[200,42223,22507],{"class":206},[200,42225,10425],{"class":210},[100,42227,42229],{"id":42228},"advanced-token-patterns","Advanced Token Patterns",[123,42231,42233],{"id":42232},"_1-semantic-color-tokens","1. Semantic Color Tokens",[191,42235,42237],{"className":21546,"code":42236,"language":21548,"meta":196,"style":196},"@theme {\n /* Semantic colors */\n --color-background: var(--color-white);\n --color-foreground: var(--color-neutral-900);\n --color-primary: var(--color-primary-500);\n --color-secondary: var(--color-neutral-500);\n --color-success: var(--color-green-500);\n --color-warning: var(--color-yellow-500);\n --color-error: var(--color-red-500);\n}\n\n/* Dark mode */\n.dark {\n --color-background: var(--color-neutral-900);\n --color-foreground: var(--color-white);\n}\n",[118,42238,42239,42245,42250,42255,42260,42265,42270,42275,42280,42285,42289,42293,42298,42307,42323,42339],{"__ignoreMap":196},[200,42240,42241,42243],{"class":202,"line":203},[200,42242,41179],{"class":1006},[200,42244,318],{"class":210},[200,42246,42247],{"class":202,"line":214},[200,42248,42249],{"class":555}," /* Semantic colors */\n",[200,42251,42252],{"class":202,"line":16},[200,42253,42254],{"class":317}," --color-background: var(--color-white);\n",[200,42256,42257],{"class":202,"line":229},[200,42258,42259],{"class":317}," --color-foreground: var(--color-neutral-900);\n",[200,42261,42262],{"class":202,"line":237},[200,42263,42264],{"class":317}," --color-primary: var(--color-primary-500);\n",[200,42266,42267],{"class":202,"line":245},[200,42268,42269],{"class":317}," --color-secondary: var(--color-neutral-500);\n",[200,42271,42272],{"class":202,"line":253},[200,42273,42274],{"class":317}," --color-success: var(--color-green-500);\n",[200,42276,42277],{"class":202,"line":261},[200,42278,42279],{"class":317}," --color-warning: var(--color-yellow-500);\n",[200,42281,42282],{"class":202,"line":269},[200,42283,42284],{"class":317}," --color-error: var(--color-red-500);\n",[200,42286,42287],{"class":202,"line":277},[200,42288,529],{"class":210},[200,42290,42291],{"class":202,"line":417},[200,42292,376],{"emptyLinePlaceholder":375},[200,42294,42295],{"class":202,"line":422},[200,42296,42297],{"class":555},"/* Dark mode */\n",[200,42299,42300,42302,42305],{"class":202,"line":29},[200,42301,3975],{"class":210},[200,42303,42304],{"class":384},"dark",[200,42306,318],{"class":210},[200,42308,42309,42312,42314,42316,42318,42321],{"class":202,"line":445},[200,42310,42311],{"class":317}," --color-background",[200,42313,283],{"class":210},[200,42315,41282],{"class":923},[200,42317,6268],{"class":210},[200,42319,42320],{"class":317},"--color-neutral-900",[200,42322,6804],{"class":210},[200,42324,42325,42328,42330,42332,42334,42337],{"class":202,"line":455},[200,42326,42327],{"class":317}," --color-foreground",[200,42329,283],{"class":210},[200,42331,41282],{"class":923},[200,42333,6268],{"class":210},[200,42335,42336],{"class":317},"--color-white",[200,42338,6804],{"class":210},[200,42340,42341],{"class":202,"line":466},[200,42342,529],{"class":210},[123,42344,42346],{"id":42345},"_2-responsive-spacing-scale","2. Responsive Spacing Scale",[191,42348,42350],{"className":21546,"code":42349,"language":21548,"meta":196,"style":196},"@theme {\n /* Mobile-first spacing */\n --spacing-section-mobile: 2rem;\n --spacing-section-tablet: 3rem;\n --spacing-section-desktop: 4rem;\n}\n\n/* Usage */\n.section {\n padding-top: var(--spacing-section-mobile);\n}\n\n@screen md {\n .section {\n padding-top: var(--spacing-section-tablet);\n }\n}\n\n@screen lg {\n .section {\n padding-top: var(--spacing-section-desktop);\n }\n}\n",[118,42351,42352,42358,42363,42368,42373,42378,42382,42386,42391,42400,42416,42420,42424,42434,42443,42459,42463,42467,42471,42480,42488,42503,42507],{"__ignoreMap":196},[200,42353,42354,42356],{"class":202,"line":203},[200,42355,41179],{"class":1006},[200,42357,318],{"class":210},[200,42359,42360],{"class":202,"line":214},[200,42361,42362],{"class":555}," /* Mobile-first spacing */\n",[200,42364,42365],{"class":202,"line":16},[200,42366,42367],{"class":317}," --spacing-section-mobile: 2rem;\n",[200,42369,42370],{"class":202,"line":229},[200,42371,42372],{"class":317}," --spacing-section-tablet: 3rem;\n",[200,42374,42375],{"class":202,"line":237},[200,42376,42377],{"class":317}," --spacing-section-desktop: 4rem;\n",[200,42379,42380],{"class":202,"line":245},[200,42381,529],{"class":317},[200,42383,42384],{"class":202,"line":253},[200,42385,376],{"emptyLinePlaceholder":375},[200,42387,42388],{"class":202,"line":261},[200,42389,42390],{"class":555},"/* Usage */\n",[200,42392,42393,42395,42398],{"class":202,"line":269},[200,42394,3975],{"class":210},[200,42396,42397],{"class":384},"section",[200,42399,318],{"class":210},[200,42401,42402,42405,42407,42409,42411,42414],{"class":202,"line":277},[200,42403,42404],{"class":21569}," padding-top",[200,42406,283],{"class":210},[200,42408,41282],{"class":923},[200,42410,6268],{"class":210},[200,42412,42413],{"class":317},"--spacing-section-mobile",[200,42415,6804],{"class":210},[200,42417,42418],{"class":202,"line":417},[200,42419,529],{"class":210},[200,42421,42422],{"class":202,"line":422},[200,42423,376],{"emptyLinePlaceholder":375},[200,42425,42426,42429,42432],{"class":202,"line":29},[200,42427,42428],{"class":1006},"@screen",[200,42430,42431],{"class":317}," md ",[200,42433,388],{"class":210},[200,42435,42436,42439,42441],{"class":202,"line":445},[200,42437,42438],{"class":210}," .",[200,42440,42397],{"class":384},[200,42442,318],{"class":210},[200,42444,42445,42448,42450,42452,42454,42457],{"class":202,"line":455},[200,42446,42447],{"class":21569}," padding-top",[200,42449,283],{"class":210},[200,42451,41282],{"class":923},[200,42453,6268],{"class":210},[200,42455,42456],{"class":317},"--spacing-section-tablet",[200,42458,6804],{"class":210},[200,42460,42461],{"class":202,"line":466},[200,42462,10383],{"class":210},[200,42464,42465],{"class":202,"line":482},[200,42466,529],{"class":210},[200,42468,42469],{"class":202,"line":493},[200,42470,376],{"emptyLinePlaceholder":375},[200,42472,42473,42475,42478],{"class":202,"line":498},[200,42474,42428],{"class":1006},[200,42476,42477],{"class":317}," lg ",[200,42479,388],{"class":210},[200,42481,42482,42484,42486],{"class":202,"line":503},[200,42483,42438],{"class":210},[200,42485,42397],{"class":384},[200,42487,318],{"class":210},[200,42489,42490,42492,42494,42496,42498,42501],{"class":202,"line":515},[200,42491,42447],{"class":21569},[200,42493,283],{"class":210},[200,42495,41282],{"class":923},[200,42497,6268],{"class":210},[200,42499,42500],{"class":317},"--spacing-section-desktop",[200,42502,6804],{"class":210},[200,42504,42505],{"class":202,"line":521},[200,42506,10383],{"class":210},[200,42508,42509],{"class":202,"line":526},[200,42510,529],{"class":210},[123,42512,42514],{"id":42513},"_3-component-tokens","3. Component Tokens",[191,42516,42518],{"className":21546,"code":42517,"language":21548,"meta":196,"style":196},"@theme {\n /* Button tokens */\n --button-primary-bg: var(--color-primary-500);\n --button-primary-hover: var(--color-primary-600);\n --button-primary-text: var(--color-white);\n\n --button-secondary-bg: transparent;\n --button-secondary-hover: var(--color-neutral-100);\n --button-secondary-text: var(--color-neutral-900);\n\n /* Card tokens */\n --card-bg: var(--color-white);\n --card-border: var(--color-neutral-200);\n --card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n",[118,42519,42520,42526,42531,42536,42541,42546,42550,42555,42560,42565,42569,42574,42579,42584,42607],{"__ignoreMap":196},[200,42521,42522,42524],{"class":202,"line":203},[200,42523,41179],{"class":1006},[200,42525,318],{"class":210},[200,42527,42528],{"class":202,"line":214},[200,42529,42530],{"class":555}," /* Button tokens */\n",[200,42532,42533],{"class":202,"line":16},[200,42534,42535],{"class":317}," --button-primary-bg: var(--color-primary-500);\n",[200,42537,42538],{"class":202,"line":229},[200,42539,42540],{"class":317}," --button-primary-hover: var(--color-primary-600);\n",[200,42542,42543],{"class":202,"line":237},[200,42544,42545],{"class":317}," --button-primary-text: var(--color-white);\n",[200,42547,42548],{"class":202,"line":245},[200,42549,376],{"emptyLinePlaceholder":375},[200,42551,42552],{"class":202,"line":253},[200,42553,42554],{"class":317}," --button-secondary-bg: transparent;\n",[200,42556,42557],{"class":202,"line":261},[200,42558,42559],{"class":317}," --button-secondary-hover: var(--color-neutral-100);\n",[200,42561,42562],{"class":202,"line":269},[200,42563,42564],{"class":317}," --button-secondary-text: var(--color-neutral-900);\n",[200,42566,42567],{"class":202,"line":277},[200,42568,376],{"emptyLinePlaceholder":375},[200,42570,42571],{"class":202,"line":417},[200,42572,42573],{"class":555}," /* Card tokens */\n",[200,42575,42576],{"class":202,"line":422},[200,42577,42578],{"class":317}," --card-bg: var(--color-white);\n",[200,42580,42581],{"class":202,"line":29},[200,42582,42583],{"class":317}," --card-border: var(--color-neutral-200);\n",[200,42585,42586,42589,42591,42593,42595,42597,42599,42601,42603,42605],{"class":202,"line":445},[200,42587,42588],{"class":317}," --card-shadow: 0 1px 3px rgba(0",[200,42590,1966],{"class":210},[200,42592,8004],{"class":317},[200,42594,1966],{"class":210},[200,42596,8004],{"class":317},[200,42598,1966],{"class":210},[200,42600,8004],{"class":317},[200,42602,3975],{"class":210},[200,42604,18008],{"class":384},[200,42606,6804],{"class":317},[200,42608,42609],{"class":202,"line":455},[200,42610,529],{"class":210},[100,42612,42614],{"id":42613},"theming-with-design-tokens","Theming with Design Tokens",[123,42616,42618],{"id":42617},"dark-mode-implementation","Dark Mode Implementation",[191,42620,42622],{"className":36062,"code":42621,"language":36064,"meta":196,"style":196},"\n\n\n\n",[118,42623,42624,42629,42649,42663,42667,42682,42726,42730,42738,42742,42750,42756,42770,42783,42787,42808,42816],{"__ignoreMap":196},[200,42625,42626],{"class":202,"line":203},[200,42627,42628],{"class":555},"\n",[200,42630,42631,42633,42635,42637,42639,42641,42643,42645,42647],{"class":202,"line":214},[200,42632,10416],{"class":210},[200,42634,22507],{"class":206},[200,42636,36080],{"class":313},[200,42638,36083],{"class":313},[200,42640,4280],{"class":210},[200,42642,1093],{"class":210},[200,42644,29012],{"class":286},[200,42646,1093],{"class":210},[200,42648,10425],{"class":210},[200,42650,42651,42653,42656,42658,42661],{"class":202,"line":16},[200,42652,10803],{"class":313},[200,42654,42655],{"class":317}," colorMode ",[200,42657,4280],{"class":210},[200,42659,42660],{"class":923}," useColorMode",[200,42662,8169],{"class":317},[200,42664,42665],{"class":202,"line":229},[200,42666,376],{"emptyLinePlaceholder":375},[200,42668,42669,42671,42674,42676,42678,42680],{"class":202,"line":237},[200,42670,10803],{"class":313},[200,42672,42673],{"class":317}," toggleTheme ",[200,42675,4280],{"class":210},[200,42677,13350],{"class":210},[200,42679,6313],{"class":313},[200,42681,318],{"class":210},[200,42683,42684,42687,42689,42692,42694,42697,42699,42701,42703,42705,42707,42709,42711,42713,42716,42718,42720,42722,42724],{"class":202,"line":245},[200,42685,42686],{"class":317}," colorMode",[200,42688,3975],{"class":210},[200,42690,42691],{"class":317},"preference",[200,42693,1096],{"class":210},[200,42695,42696],{"class":317}," colorMode",[200,42698,3975],{"class":210},[200,42700,14180],{"class":317},[200,42702,10842],{"class":210},[200,42704,1030],{"class":210},[200,42706,42304],{"class":286},[200,42708,1093],{"class":210},[200,42710,38226],{"class":210},[200,42712,1030],{"class":210},[200,42714,42715],{"class":286},"light",[200,42717,1093],{"class":210},[200,42719,38235],{"class":210},[200,42721,1030],{"class":210},[200,42723,42304],{"class":286},[200,42725,1036],{"class":210},[200,42727,42728],{"class":202,"line":253},[200,42729,529],{"class":210},[200,42731,42732,42734,42736],{"class":202,"line":261},[200,42733,22205],{"class":210},[200,42735,22507],{"class":206},[200,42737,10425],{"class":210},[200,42739,42740],{"class":202,"line":269},[200,42741,376],{"emptyLinePlaceholder":375},[200,42743,42744,42746,42748],{"class":202,"line":277},[200,42745,10416],{"class":210},[200,42747,22112],{"class":206},[200,42749,10425],{"class":210},[200,42751,42752,42754],{"class":202,"line":417},[200,42753,22119],{"class":210},[200,42755,41958],{"class":206},[200,42757,42758,42761,42763,42765,42768],{"class":202,"line":422},[200,42759,42760],{"class":313}," @click",[200,42762,4280],{"class":210},[200,42764,1093],{"class":210},[200,42766,42767],{"class":286},"toggleTheme",[200,42769,1036],{"class":210},[200,42771,42772,42774,42776,42778,42781],{"class":202,"line":29},[200,42773,41963],{"class":313},[200,42775,4280],{"class":210},[200,42777,1093],{"class":210},[200,42779,42780],{"class":286},"p-2 rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-800",[200,42782,1036],{"class":210},[200,42784,42785],{"class":202,"line":445},[200,42786,42011],{"class":210},[200,42788,42789,42791,42794,42797,42799,42801,42804,42806],{"class":202,"line":455},[200,42790,20788],{"class":210},[200,42792,42793],{"class":206},"UIcon",[200,42795,42796],{"class":313}," :name",[200,42798,4280],{"class":210},[200,42800,1093],{"class":210},[200,42802,42803],{"class":286},"colorMode.value === 'dark' ? 'i-ph-sun' : 'i-ph-moon'",[200,42805,1093],{"class":210},[200,42807,42021],{"class":210},[200,42809,42810,42812,42814],{"class":202,"line":466},[200,42811,22139],{"class":210},[200,42813,42028],{"class":206},[200,42815,10425],{"class":210},[200,42817,42818,42820,42822],{"class":202,"line":482},[200,42819,22205],{"class":210},[200,42821,22112],{"class":206},[200,42823,10425],{"class":210},[123,42825,42827],{"id":42826},"brand-variations","Brand Variations",[191,42829,42831],{"className":21546,"code":42830,"language":21548,"meta":196,"style":196},"/* themes/blue.css */\n[data-theme=\"blue\"] {\n --color-primary-500: #3b82f6;\n --color-primary-600: #2563eb;\n}\n\n/* themes/green.css */\n[data-theme=\"green\"] {\n --color-primary-500: #10b981;\n --color-primary-600: #059669;\n}\n\n/* themes/purple.css */\n[data-theme=\"purple\"] {\n --color-primary-500: #8b5cf6;\n --color-primary-600: #7c3aed;\n}\n",[118,42832,42833,42838,42858,42871,42885,42889,42893,42898,42917,42930,42943,42947,42951,42956,42975,42988,43001],{"__ignoreMap":196},[200,42834,42835],{"class":202,"line":203},[200,42836,42837],{"class":555},"/* themes/blue.css */\n",[200,42839,42840,42842,42845,42847,42849,42852,42854,42856],{"class":202,"line":214},[200,42841,6431],{"class":210},[200,42843,42844],{"class":313},"data-theme",[200,42846,4280],{"class":210},[200,42848,1093],{"class":210},[200,42850,42851],{"class":286},"blue",[200,42853,1093],{"class":210},[200,42855,7760],{"class":210},[200,42857,318],{"class":210},[200,42859,42860,42863,42865,42867,42869],{"class":202,"line":16},[200,42861,42862],{"class":317}," --color-primary-500",[200,42864,283],{"class":210},[200,42866,21592],{"class":210},[200,42868,41250],{"class":317},[200,42870,330],{"class":210},[200,42872,42873,42876,42878,42880,42883],{"class":202,"line":229},[200,42874,42875],{"class":317}," --color-primary-600",[200,42877,283],{"class":210},[200,42879,21592],{"class":210},[200,42881,42882],{"class":317},"2563eb",[200,42884,330],{"class":210},[200,42886,42887],{"class":202,"line":237},[200,42888,529],{"class":210},[200,42890,42891],{"class":202,"line":245},[200,42892,376],{"emptyLinePlaceholder":375},[200,42894,42895],{"class":202,"line":253},[200,42896,42897],{"class":555},"/* themes/green.css */\n",[200,42899,42900,42902,42904,42906,42908,42911,42913,42915],{"class":202,"line":261},[200,42901,6431],{"class":210},[200,42903,42844],{"class":313},[200,42905,4280],{"class":210},[200,42907,1093],{"class":210},[200,42909,42910],{"class":286},"green",[200,42912,1093],{"class":210},[200,42914,7760],{"class":210},[200,42916,318],{"class":210},[200,42918,42919,42921,42923,42925,42928],{"class":202,"line":269},[200,42920,42862],{"class":317},[200,42922,283],{"class":210},[200,42924,21592],{"class":210},[200,42926,42927],{"class":317},"10b981",[200,42929,330],{"class":210},[200,42931,42932,42934,42936,42938,42941],{"class":202,"line":277},[200,42933,42875],{"class":317},[200,42935,283],{"class":210},[200,42937,21592],{"class":210},[200,42939,42940],{"class":317},"059669",[200,42942,330],{"class":210},[200,42944,42945],{"class":202,"line":417},[200,42946,529],{"class":210},[200,42948,42949],{"class":202,"line":422},[200,42950,376],{"emptyLinePlaceholder":375},[200,42952,42953],{"class":202,"line":29},[200,42954,42955],{"class":555},"/* themes/purple.css */\n",[200,42957,42958,42960,42962,42964,42966,42969,42971,42973],{"class":202,"line":445},[200,42959,6431],{"class":210},[200,42961,42844],{"class":313},[200,42963,4280],{"class":210},[200,42965,1093],{"class":210},[200,42967,42968],{"class":286},"purple",[200,42970,1093],{"class":210},[200,42972,7760],{"class":210},[200,42974,318],{"class":210},[200,42976,42977,42979,42981,42983,42986],{"class":202,"line":455},[200,42978,42862],{"class":317},[200,42980,283],{"class":210},[200,42982,21592],{"class":210},[200,42984,42985],{"class":317},"8b5cf6",[200,42987,330],{"class":210},[200,42989,42990,42992,42994,42996,42999],{"class":202,"line":466},[200,42991,42875],{"class":317},[200,42993,283],{"class":210},[200,42995,21592],{"class":210},[200,42997,42998],{"class":317},"7c3aed",[200,43000,330],{"class":210},[200,43002,43003],{"class":202,"line":482},[200,43004,529],{"class":210},[100,43006,43008],{"id":43007},"token-management-tools","Token Management Tools",[123,43010,43012],{"id":43011},"_1-style-dictionary","1. Style Dictionary",[191,43014,43016],{"className":20346,"code":43015,"language":20348,"meta":196,"style":196},"// build-tokens.js\nconst StyleDictionary = require(\"style-dictionary\")\n\nStyleDictionary.extend({\n source: [\"tokens/**/*.json\"],\n platforms: {\n css: {\n transformGroup: \"css\",\n buildPath: \"dist/css/\",\n files: [\n {\n destination: \"variables.css\",\n format: \"css/variables\",\n },\n ],\n },\n js: {\n transformGroup: \"js\",\n buildPath: \"dist/js/\",\n files: [\n {\n destination: \"tokens.js\",\n format: \"javascript/es6\",\n },\n ],\n },\n },\n}).buildAllPlatforms()\n",[118,43017,43018,43023,43046,43050,43064,43084,43093,43102,43117,43133,43142,43147,43163,43179,43183,43190,43194,43203,43218,43233,43241,43245,43260,43275,43279,43285,43289,43293],{"__ignoreMap":196},[200,43019,43020],{"class":202,"line":203},[200,43021,43022],{"class":555},"// build-tokens.js\n",[200,43024,43025,43027,43030,43032,43035,43037,43039,43042,43044],{"class":202,"line":214},[200,43026,10803],{"class":313},[200,43028,43029],{"class":317}," StyleDictionary ",[200,43031,4280],{"class":210},[200,43033,43034],{"class":923}," require",[200,43036,6268],{"class":317},[200,43038,1093],{"class":210},[200,43040,43041],{"class":286},"style-dictionary",[200,43043,1093],{"class":210},[200,43045,4304],{"class":317},[200,43047,43048],{"class":202,"line":16},[200,43049,376],{"emptyLinePlaceholder":375},[200,43051,43052,43055,43057,43060,43062],{"class":202,"line":229},[200,43053,43054],{"class":317},"StyleDictionary",[200,43056,3975],{"class":210},[200,43058,43059],{"class":923},"extend",[200,43061,6268],{"class":317},[200,43063,388],{"class":210},[200,43065,43066,43069,43071,43073,43075,43078,43080,43082],{"class":202,"line":237},[200,43067,43068],{"class":206}," source",[200,43070,283],{"class":210},[200,43072,877],{"class":317},[200,43074,1093],{"class":210},[200,43076,43077],{"class":286},"tokens/**/*.json",[200,43079,1093],{"class":210},[200,43081,7760],{"class":317},[200,43083,2455],{"class":210},[200,43085,43086,43089,43091],{"class":202,"line":245},[200,43087,43088],{"class":206}," platforms",[200,43090,283],{"class":210},[200,43092,318],{"class":210},[200,43094,43095,43098,43100],{"class":202,"line":253},[200,43096,43097],{"class":206}," css",[200,43099,283],{"class":210},[200,43101,318],{"class":210},[200,43103,43104,43107,43109,43111,43113,43115],{"class":202,"line":261},[200,43105,43106],{"class":206}," transformGroup",[200,43108,283],{"class":210},[200,43110,1030],{"class":210},[200,43112,21548],{"class":286},[200,43114,1093],{"class":210},[200,43116,2455],{"class":210},[200,43118,43119,43122,43124,43126,43129,43131],{"class":202,"line":269},[200,43120,43121],{"class":206}," buildPath",[200,43123,283],{"class":210},[200,43125,1030],{"class":210},[200,43127,43128],{"class":286},"dist/css/",[200,43130,1093],{"class":210},[200,43132,2455],{"class":210},[200,43134,43135,43138,43140],{"class":202,"line":277},[200,43136,43137],{"class":206}," files",[200,43139,283],{"class":210},[200,43141,6386],{"class":317},[200,43143,43144],{"class":202,"line":417},[200,43145,43146],{"class":210}," {\n",[200,43148,43149,43152,43154,43156,43159,43161],{"class":202,"line":422},[200,43150,43151],{"class":206}," destination",[200,43153,283],{"class":210},[200,43155,1030],{"class":210},[200,43157,43158],{"class":286},"variables.css",[200,43160,1093],{"class":210},[200,43162,2455],{"class":210},[200,43164,43165,43168,43170,43172,43175,43177],{"class":202,"line":29},[200,43166,43167],{"class":206}," format",[200,43169,283],{"class":210},[200,43171,1030],{"class":210},[200,43173,43174],{"class":286},"css/variables",[200,43176,1093],{"class":210},[200,43178,2455],{"class":210},[200,43180,43181],{"class":202,"line":445},[200,43182,39521],{"class":210},[200,43184,43185,43188],{"class":202,"line":455},[200,43186,43187],{"class":317}," ]",[200,43189,2455],{"class":210},[200,43191,43192],{"class":202,"line":466},[200,43193,21319],{"class":210},[200,43195,43196,43199,43201],{"class":202,"line":482},[200,43197,43198],{"class":206}," js",[200,43200,283],{"class":210},[200,43202,318],{"class":210},[200,43204,43205,43207,43209,43211,43214,43216],{"class":202,"line":493},[200,43206,43106],{"class":206},[200,43208,283],{"class":210},[200,43210,1030],{"class":210},[200,43212,43213],{"class":286},"js",[200,43215,1093],{"class":210},[200,43217,2455],{"class":210},[200,43219,43220,43222,43224,43226,43229,43231],{"class":202,"line":498},[200,43221,43121],{"class":206},[200,43223,283],{"class":210},[200,43225,1030],{"class":210},[200,43227,43228],{"class":286},"dist/js/",[200,43230,1093],{"class":210},[200,43232,2455],{"class":210},[200,43234,43235,43237,43239],{"class":202,"line":503},[200,43236,43137],{"class":206},[200,43238,283],{"class":210},[200,43240,6386],{"class":317},[200,43242,43243],{"class":202,"line":515},[200,43244,43146],{"class":210},[200,43246,43247,43249,43251,43253,43256,43258],{"class":202,"line":521},[200,43248,43151],{"class":206},[200,43250,283],{"class":210},[200,43252,1030],{"class":210},[200,43254,43255],{"class":286},"tokens.js",[200,43257,1093],{"class":210},[200,43259,2455],{"class":210},[200,43261,43262,43264,43266,43268,43271,43273],{"class":202,"line":526},[200,43263,43167],{"class":206},[200,43265,283],{"class":210},[200,43267,1030],{"class":210},[200,43269,43270],{"class":286},"javascript/es6",[200,43272,1093],{"class":210},[200,43274,2455],{"class":210},[200,43276,43277],{"class":202,"line":687},[200,43278,39521],{"class":210},[200,43280,43281,43283],{"class":202,"line":693},[200,43282,43187],{"class":317},[200,43284,2455],{"class":210},[200,43286,43287],{"class":202,"line":699},[200,43288,21319],{"class":210},[200,43290,43291],{"class":202,"line":704},[200,43292,23076],{"class":210},[200,43294,43295,43297,43299,43301,43304],{"class":202,"line":709},[200,43296,21331],{"class":210},[200,43298,5072],{"class":317},[200,43300,3975],{"class":210},[200,43302,43303],{"class":923},"buildAllPlatforms",[200,43305,8169],{"class":317},[123,43307,43309],{"id":43308},"_2-tokens-studio","2. Tokens Studio",[191,43311,43313],{"className":15319,"code":43312,"language":6659,"meta":196,"style":196},"// tokens.json (Tokens Studio format)\n{\n \"colors\": {\n \"primary\": {\n \"500\": {\n \"value\": \"#3B82F6\",\n \"type\": \"color\",\n \"description\": \"Primary brand color\"\n }\n }\n }\n}\n",[118,43314,43315,43320,43324,43336,43348,43360,43378,43397,43414,43418,43422,43426],{"__ignoreMap":196},[200,43316,43317],{"class":202,"line":203},[200,43318,43319],{"class":555},"// tokens.json (Tokens Studio format)\n",[200,43321,43322],{"class":202,"line":214},[200,43323,388],{"class":210},[200,43325,43326,43328,43330,43332,43334],{"class":202,"line":16},[200,43327,15331],{"class":210},[200,43329,41322],{"class":313},[200,43331,1093],{"class":210},[200,43333,283],{"class":210},[200,43335,318],{"class":210},[200,43337,43338,43340,43342,43344,43346],{"class":202,"line":229},[200,43339,22442],{"class":210},[200,43341,41335],{"class":384},[200,43343,1093],{"class":210},[200,43345,283],{"class":210},[200,43347,318],{"class":210},[200,43349,43350,43352,43354,43356,43358],{"class":202,"line":237},[200,43351,28573],{"class":210},[200,43353,41388],{"class":326},[200,43355,1093],{"class":210},[200,43357,283],{"class":210},[200,43359,318],{"class":210},[200,43361,43362,43364,43366,43368,43370,43372,43374,43376],{"class":202,"line":245},[200,43363,21291],{"class":210},[200,43365,14180],{"class":206},[200,43367,1093],{"class":210},[200,43369,283],{"class":210},[200,43371,1030],{"class":210},[200,43373,41397],{"class":286},[200,43375,1093],{"class":210},[200,43377,2455],{"class":210},[200,43379,43380,43382,43384,43386,43388,43390,43393,43395],{"class":202,"line":253},[200,43381,21291],{"class":210},[200,43383,16100],{"class":206},[200,43385,1093],{"class":210},[200,43387,283],{"class":210},[200,43389,1030],{"class":210},[200,43391,43392],{"class":286},"color",[200,43394,1093],{"class":210},[200,43396,2455],{"class":210},[200,43398,43399,43401,43403,43405,43407,43409,43412],{"class":202,"line":261},[200,43400,21291],{"class":210},[200,43402,18338],{"class":206},[200,43404,1093],{"class":210},[200,43406,283],{"class":210},[200,43408,1030],{"class":210},[200,43410,43411],{"class":286},"Primary brand color",[200,43413,1036],{"class":210},[200,43415,43416],{"class":202,"line":269},[200,43417,10882],{"class":210},[200,43419,43420],{"class":202,"line":277},[200,43421,414],{"class":210},[200,43423,43424],{"class":202,"line":417},[200,43425,10383],{"class":210},[200,43427,43428],{"class":202,"line":422},[200,43429,529],{"class":210},[100,43431,30573],{"id":31581},[123,43433,30901],{"id":30900},[104,43435,43436,43437,43440,43441,43444],{},"✅ Use semantic naming (",[118,43438,43439],{},"color-primary"," not ",[118,43442,43443],{},"color-blue",")\n✅ Keep tokens platform-agnostic\n✅ Document token usage and intent\n✅ Version your tokens\n✅ Test tokens across themes",[123,43446,30922],{"id":30921},[104,43448,43449],{},"❌ Hardcode values in components\n❌ Mix semantic and literal names\n❌ Create too many tokens (keep it minimal)\n❌ Forget about accessibility\n❌ Ignore performance implications",[100,43451,30650],{"id":38876},[123,43453,43455],{"id":43454},"_1-tree-shake-unused-tokens","1. Tree-shake Unused Tokens",[191,43457,43459],{"className":21546,"code":43458,"language":21548,"meta":196,"style":196},"/* Only import needed tokens */\n@import \"tailwindcss\" layer(base);\n@import \"./tokens/colors.css\" layer(components);\n@import \"./tokens/typography.css\" layer(components);\n",[118,43460,43461,43466,43485,43505],{"__ignoreMap":196},[200,43462,43463],{"class":202,"line":203},[200,43464,43465],{"class":555},"/* Only import needed tokens */\n",[200,43467,43468,43470,43472,43474,43476,43479,43481,43483],{"class":202,"line":214},[200,43469,41744],{"class":1006},[200,43471,1030],{"class":210},[200,43473,41749],{"class":286},[200,43475,1093],{"class":210},[200,43477,43478],{"class":317}," layer",[200,43480,6268],{"class":210},[200,43482,41663],{"class":317},[200,43484,6804],{"class":210},[200,43486,43487,43489,43491,43494,43496,43498,43500,43503],{"class":202,"line":16},[200,43488,41744],{"class":1006},[200,43490,1030],{"class":210},[200,43492,43493],{"class":286},"./tokens/colors.css",[200,43495,1093],{"class":210},[200,43497,43478],{"class":317},[200,43499,6268],{"class":210},[200,43501,43502],{"class":317},"components",[200,43504,6804],{"class":210},[200,43506,43507,43509,43511,43514,43516,43518,43520,43522],{"class":202,"line":229},[200,43508,41744],{"class":1006},[200,43510,1030],{"class":210},[200,43512,43513],{"class":286},"./tokens/typography.css",[200,43515,1093],{"class":210},[200,43517,43478],{"class":317},[200,43519,6268],{"class":210},[200,43521,43502],{"class":317},[200,43523,6804],{"class":210},[123,43525,43527],{"id":43526},"_2-css-custom-properties","2. CSS Custom Properties",[191,43529,43531],{"className":21546,"code":43530,"language":21548,"meta":196,"style":196},"/* Use CSS variables for runtime theme switching */\n:root {\n --color-primary: #3b82f6;\n}\n\n.button {\n background-color: var(--color-primary);\n}\n",[118,43532,43533,43538,43546,43559,43563,43567,43575,43589],{"__ignoreMap":196},[200,43534,43535],{"class":202,"line":203},[200,43536,43537],{"class":555},"/* Use CSS variables for runtime theme switching */\n",[200,43539,43540,43542,43544],{"class":202,"line":214},[200,43541,283],{"class":210},[200,43543,2522],{"class":313},[200,43545,318],{"class":210},[200,43547,43548,43551,43553,43555,43557],{"class":202,"line":16},[200,43549,43550],{"class":317}," --color-primary",[200,43552,283],{"class":210},[200,43554,21592],{"class":210},[200,43556,41250],{"class":317},[200,43558,330],{"class":210},[200,43560,43561],{"class":202,"line":229},[200,43562,529],{"class":210},[200,43564,43565],{"class":202,"line":237},[200,43566,376],{"emptyLinePlaceholder":375},[200,43568,43569,43571,43573],{"class":202,"line":245},[200,43570,3975],{"class":210},[200,43572,42028],{"class":384},[200,43574,318],{"class":210},[200,43576,43577,43579,43581,43583,43585,43587],{"class":202,"line":253},[200,43578,41243],{"class":21569},[200,43580,283],{"class":210},[200,43582,41282],{"class":923},[200,43584,6268],{"class":210},[200,43586,41287],{"class":317},[200,43588,6804],{"class":210},[200,43590,43591],{"class":202,"line":261},[200,43592,529],{"class":210},[123,43594,43596],{"id":43595},"_3-critical-css","3. Critical CSS",[191,43598,43600],{"className":36062,"code":43599,"language":36064,"meta":196,"style":196},"\n\n",[118,43601,43602,43607,43615,43623,43635,43648,43661,43665],{"__ignoreMap":196},[200,43603,43604],{"class":202,"line":203},[200,43605,43606],{"class":555},"\n",[200,43608,43609,43611,43613],{"class":202,"line":214},[200,43610,10416],{"class":210},[200,43612,5134],{"class":206},[200,43614,10425],{"class":210},[200,43616,43617,43619,43621],{"class":202,"line":16},[200,43618,283],{"class":210},[200,43620,2522],{"class":313},[200,43622,318],{"class":210},[200,43624,43625,43627,43629,43631,43633],{"class":202,"line":229},[200,43626,43550],{"class":317},[200,43628,283],{"class":210},[200,43630,21592],{"class":210},[200,43632,41250],{"class":317},[200,43634,330],{"class":210},[200,43636,43637,43639,43641,43643,43646],{"class":202,"line":237},[200,43638,42311],{"class":317},[200,43640,283],{"class":210},[200,43642,21592],{"class":210},[200,43644,43645],{"class":317},"ffffff",[200,43647,330],{"class":210},[200,43649,43650,43652,43654,43656,43659],{"class":202,"line":245},[200,43651,42327],{"class":317},[200,43653,283],{"class":210},[200,43655,21592],{"class":210},[200,43657,43658],{"class":317},"111827",[200,43660,330],{"class":210},[200,43662,43663],{"class":202,"line":253},[200,43664,529],{"class":210},[200,43666,43667,43669,43671],{"class":202,"line":261},[200,43668,22205],{"class":210},[200,43670,5134],{"class":206},[200,43672,10425],{"class":210},[100,43674,43676],{"id":43675},"real-world-example-complete-component","Real-World Example: Complete Component",[191,43678,43680],{"className":36062,"code":43679,"language":36064,"meta":196,"style":196},"\n\n\n\n",[118,43681,43682,43687,43695,43714,43733,43752,43771,43780,43788,43807,43815,43823,43842,43861,43869,43877,43885,43889,43900,43908,43923,43946,43962,43978,43990,43994,43998,44006,44022,44041,44045,44049,44057,44073,44085,44101,44105,44109,44117,44131,44135,44139,44147,44161,44180,44184],{"__ignoreMap":196},[200,43683,43684],{"class":202,"line":203},[200,43685,43686],{"class":555},"\n",[200,43688,43689,43691,43693],{"class":202,"line":214},[200,43690,10416],{"class":210},[200,43692,22112],{"class":206},[200,43694,10425],{"class":210},[200,43696,43697,43699,43701,43703,43705,43707,43710,43712],{"class":202,"line":16},[200,43698,22119],{"class":210},[200,43700,20182],{"class":206},[200,43702,36290],{"class":313},[200,43704,4280],{"class":210},[200,43706,1093],{"class":210},[200,43708,43709],{"class":286},"card",[200,43711,1093],{"class":210},[200,43713,10425],{"class":210},[200,43715,43716,43718,43720,43722,43724,43726,43729,43731],{"class":202,"line":229},[200,43717,20788],{"class":210},[200,43719,20182],{"class":206},[200,43721,36290],{"class":313},[200,43723,4280],{"class":210},[200,43725,1093],{"class":210},[200,43727,43728],{"class":286},"card-header",[200,43730,1093],{"class":210},[200,43732,10425],{"class":210},[200,43734,43735,43737,43739,43741,43743,43745,43748,43750],{"class":202,"line":237},[200,43736,22179],{"class":210},[200,43738,123],{"class":206},[200,43740,36290],{"class":313},[200,43742,4280],{"class":210},[200,43744,1093],{"class":210},[200,43746,43747],{"class":286},"card-title",[200,43749,1093],{"class":210},[200,43751,10425],{"class":210},[200,43753,43754,43756,43758,43760,43762,43764,43767,43769],{"class":202,"line":245},[200,43755,20817],{"class":210},[200,43757,42018],{"class":206},[200,43759,24213],{"class":313},[200,43761,4280],{"class":210},[200,43763,1093],{"class":210},[200,43765,43766],{"class":286},"title",[200,43768,1093],{"class":210},[200,43770,42021],{"class":210},[200,43772,43773,43776,43778],{"class":202,"line":253},[200,43774,43775],{"class":210}," `${post.value.title} | My Blog`,\n description: post.value.excerpt,\n ogTitle: post.value.title,\n ogDescription: post.value.excerpt,\n twitterCard: \"summary_large_image\",\n })\n\n return { post }\n },\n})\n",[118,44356,44357,44362,44374,44384,44416,44420,44425,44434,44466,44485,44504,44523,44538,44544,44548,44558,44562],{"__ignoreMap":196},[200,44358,44359],{"class":202,"line":203},[200,44360,44361],{"class":555},"// Nuxt 4 - Automatic SSR\n",[200,44363,44364,44366,44368,44370,44372],{"class":202,"line":214},[200,44365,13614],{"class":1006},[200,44367,22954],{"class":1006},[200,44369,31877],{"class":923},[200,44371,6268],{"class":317},[200,44373,388],{"class":210},[200,44375,44376,44378,44380,44382],{"class":202,"line":16},[200,44377,10515],{"class":313},[200,44379,36080],{"class":206},[200,44381,10978],{"class":210},[200,44383,318],{"class":210},[200,44385,44386,44388,44390,44392,44394,44397,44399,44401,44403,44405,44407,44409,44412,44414],{"class":202,"line":229},[200,44387,10640],{"class":313},[200,44389,13631],{"class":210},[200,44391,13634],{"class":206},[200,44393,283],{"class":210},[200,44395,44396],{"class":317}," post",[200,44398,13647],{"class":210},[200,44400,1096],{"class":210},[200,44402,13781],{"class":1006},[200,44404,13652],{"class":923},[200,44406,6268],{"class":206},[200,44408,1093],{"class":210},[200,44410,44411],{"class":286},"/api/blog/post",[200,44413,1093],{"class":210},[200,44415,4304],{"class":206},[200,44417,44418],{"class":202,"line":237},[200,44419,376],{"emptyLinePlaceholder":375},[200,44421,44422],{"class":202,"line":245},[200,44423,44424],{"class":555}," // SEO metadata\n",[200,44426,44427,44430,44432],{"class":202,"line":253},[200,44428,44429],{"class":923}," useSeoMeta",[200,44431,6268],{"class":206},[200,44433,388],{"class":210},[200,44435,44436,44438,44440,44442,44444,44447,44449,44451,44453,44455,44457,44459,44462,44464],{"class":202,"line":261},[200,44437,25287],{"class":923},[200,44439,283],{"class":210},[200,44441,13350],{"class":210},[200,44443,6313],{"class":313},[200,44445,44446],{"class":210}," `${",[200,44448,7833],{"class":317},[200,44450,3975],{"class":210},[200,44452,14180],{"class":317},[200,44454,3975],{"class":210},[200,44456,43766],{"class":317},[200,44458,21331],{"class":210},[200,44460,44461],{"class":286}," | My Blog",[200,44463,20084],{"class":210},[200,44465,2455],{"class":210},[200,44467,44468,44470,44472,44474,44476,44478,44480,44483],{"class":202,"line":269},[200,44469,10340],{"class":206},[200,44471,283],{"class":210},[200,44473,44396],{"class":317},[200,44475,3975],{"class":210},[200,44477,14180],{"class":317},[200,44479,3975],{"class":210},[200,44481,44482],{"class":317},"excerpt",[200,44484,2455],{"class":210},[200,44486,44487,44490,44492,44494,44496,44498,44500,44502],{"class":202,"line":277},[200,44488,44489],{"class":206}," ogTitle",[200,44491,283],{"class":210},[200,44493,44396],{"class":317},[200,44495,3975],{"class":210},[200,44497,14180],{"class":317},[200,44499,3975],{"class":210},[200,44501,43766],{"class":317},[200,44503,2455],{"class":210},[200,44505,44506,44509,44511,44513,44515,44517,44519,44521],{"class":202,"line":417},[200,44507,44508],{"class":206}," ogDescription",[200,44510,283],{"class":210},[200,44512,44396],{"class":317},[200,44514,3975],{"class":210},[200,44516,14180],{"class":317},[200,44518,3975],{"class":210},[200,44520,44482],{"class":317},[200,44522,2455],{"class":210},[200,44524,44525,44528,44530,44532,44534,44536],{"class":202,"line":422},[200,44526,44527],{"class":206}," twitterCard",[200,44529,283],{"class":210},[200,44531,1030],{"class":210},[200,44533,29096],{"class":286},[200,44535,1093],{"class":210},[200,44537,2455],{"class":210},[200,44539,44540,44542],{"class":202,"line":29},[200,44541,34626],{"class":210},[200,44543,4304],{"class":206},[200,44545,44546],{"class":202,"line":445},[200,44547,376],{"emptyLinePlaceholder":375},[200,44549,44550,44552,44554,44556],{"class":202,"line":455},[200,44551,10733],{"class":1006},[200,44553,13631],{"class":210},[200,44555,44396],{"class":317},[200,44557,13928],{"class":210},[200,44559,44560],{"class":202,"line":466},[200,44561,23076],{"class":210},[200,44563,44564,44566],{"class":202,"line":482},[200,44565,21331],{"class":210},[200,44567,4304],{"class":317},[123,44569,44571],{"id":44570},"_2-structured-data-with-schemaorg","2. Structured Data with Schema.org",[191,44573,44575],{"className":10095,"code":44574,"language":10097,"meta":196,"style":196},"// app/pages/blog/[slug].vue\n\n",[118,44576,44577,44582,44598,44612,44658,44662,44667,44673,44678,44697,44715,44734,44752,44771,44790,44798,44817,44839,44843,44847,44851],{"__ignoreMap":196},[200,44578,44579],{"class":202,"line":203},[200,44580,44581],{"class":555},"// app/pages/blog/[slug].vue\n",[200,44583,44584,44586,44588,44590,44592,44594,44596],{"class":202,"line":214},[200,44585,10416],{"class":210},[200,44587,29005],{"class":317},[200,44589,4280],{"class":210},[200,44591,1093],{"class":210},[200,44593,29012],{"class":286},[200,44595,1093],{"class":210},[200,44597,10425],{"class":210},[200,44599,44600,44602,44605,44607,44610],{"class":202,"line":16},[200,44601,10803],{"class":313},[200,44603,44604],{"class":317}," route ",[200,44606,4280],{"class":210},[200,44608,44609],{"class":923}," useRoute",[200,44611,8169],{"class":317},[200,44613,44614,44616,44618,44620,44622,44625,44627,44629,44631,44633,44635,44637,44640,44642,44644,44646,44649,44651,44654,44656],{"class":202,"line":229},[200,44615,10803],{"class":313},[200,44617,13631],{"class":210},[200,44619,13634],{"class":206},[200,44621,283],{"class":210},[200,44623,44624],{"class":317}," post ",[200,44626,21331],{"class":210},[200,44628,1096],{"class":210},[200,44630,13781],{"class":1006},[200,44632,13652],{"class":923},[200,44634,6268],{"class":317},[200,44636,20084],{"class":210},[200,44638,44639],{"class":286},"/api/blog/",[200,44641,20090],{"class":210},[200,44643,12895],{"class":317},[200,44645,3975],{"class":210},[200,44647,44648],{"class":317},"params",[200,44650,3975],{"class":210},[200,44652,44653],{"class":317},"slug",[200,44655,20096],{"class":210},[200,44657,4304],{"class":317},[200,44659,44660],{"class":202,"line":237},[200,44661,376],{"emptyLinePlaceholder":375},[200,44663,44664],{"class":202,"line":245},[200,44665,44666],{"class":555},"// JSON-LD Schema\n",[200,44668,44669,44671],{"class":202,"line":253},[200,44670,28984],{"class":923},[200,44672,6690],{"class":317},[200,44674,44675],{"class":202,"line":261},[200,44676,44677],{"class":210}," {\n",[200,44679,44680,44682,44684,44686,44688,44690,44693,44695],{"class":202,"line":269},[200,44681,9182],{"class":210},[200,44683,28058],{"class":206},[200,44685,1983],{"class":210},[200,44687,283],{"class":210},[200,44689,1969],{"class":210},[200,44691,44692],{"class":286},"BlogPosting",[200,44694,1983],{"class":210},[200,44696,2455],{"class":210},[200,44698,44699,44701,44703,44705,44707,44709,44711,44713],{"class":202,"line":277},[200,44700,29129],{"class":206},[200,44702,283],{"class":210},[200,44704,44396],{"class":317},[200,44706,3975],{"class":210},[200,44708,14180],{"class":317},[200,44710,3975],{"class":210},[200,44712,43766],{"class":317},[200,44714,2455],{"class":210},[200,44716,44717,44720,44722,44724,44726,44728,44730,44732],{"class":202,"line":417},[200,44718,44719],{"class":206}," description",[200,44721,283],{"class":210},[200,44723,44396],{"class":317},[200,44725,3975],{"class":210},[200,44727,14180],{"class":317},[200,44729,3975],{"class":210},[200,44731,44482],{"class":317},[200,44733,2455],{"class":210},[200,44735,44736,44738,44740,44742,44744,44746,44748,44750],{"class":202,"line":422},[200,44737,1635],{"class":206},[200,44739,283],{"class":210},[200,44741,44396],{"class":317},[200,44743,3975],{"class":210},[200,44745,14180],{"class":317},[200,44747,3975],{"class":210},[200,44749,21259],{"class":317},[200,44751,2455],{"class":210},[200,44753,44754,44756,44758,44760,44762,44764,44766,44769],{"class":202,"line":29},[200,44755,29144],{"class":206},[200,44757,283],{"class":210},[200,44759,44396],{"class":317},[200,44761,3975],{"class":210},[200,44763,14180],{"class":317},[200,44765,3975],{"class":210},[200,44767,44768],{"class":317},"publishedAt",[200,44770,2455],{"class":210},[200,44772,44773,44775,44777,44779,44781,44783,44785,44788],{"class":202,"line":445},[200,44774,29159],{"class":206},[200,44776,283],{"class":210},[200,44778,44396],{"class":317},[200,44780,3975],{"class":210},[200,44782,14180],{"class":317},[200,44784,3975],{"class":210},[200,44786,44787],{"class":317},"updatedAt",[200,44789,2455],{"class":210},[200,44791,44792,44794,44796],{"class":202,"line":455},[200,44793,29185],{"class":206},[200,44795,283],{"class":210},[200,44797,318],{"class":210},[200,44799,44800,44803,44805,44807,44809,44811,44813,44815],{"class":202,"line":466},[200,44801,44802],{"class":210}," '",[200,44804,28058],{"class":206},[200,44806,1983],{"class":210},[200,44808,283],{"class":210},[200,44810,1969],{"class":210},[200,44812,28138],{"class":286},[200,44814,1983],{"class":210},[200,44816,2455],{"class":210},[200,44818,44819,44821,44823,44825,44827,44829,44831,44833,44835,44837],{"class":202,"line":482},[200,44820,29194],{"class":206},[200,44822,283],{"class":210},[200,44824,44396],{"class":317},[200,44826,3975],{"class":210},[200,44828,14180],{"class":317},[200,44830,3975],{"class":210},[200,44832,28117],{"class":317},[200,44834,3975],{"class":210},[200,44836,1607],{"class":317},[200,44838,2455],{"class":210},[200,44840,44841],{"class":202,"line":493},[200,44842,21319],{"class":210},[200,44844,44845],{"class":202,"line":498},[200,44846,23076],{"class":210},[200,44848,44849],{"class":202,"line":503},[200,44850,9054],{"class":317},[200,44852,44853,44855,44857],{"class":202,"line":515},[200,44854,22205],{"class":210},[200,44856,22507],{"class":317},[200,44858,10425],{"class":210},[123,44860,44862],{"id":44861},"_3-dynamic-sitemap-generation","3. Dynamic Sitemap Generation",[191,44864,44866],{"className":10095,"code":44865,"language":10097,"meta":196,"style":196},"// app/pages/sitemap.xml.ts\nexport default defineEventHandler(async () => {\n const posts = await queryCollection(\"blog\").all()\n\n const sitemap = `\n \n ${posts\n .map(\n (post) => `\n \n https://example.com/blog/${post.slug}\n ${post.updatedAt}\n monthly\n \n `,\n )\n .join(\"\")}\n \n `\n\n return sitemap\n})\n",[118,44867,44868,44873,44891,44921,44925,44937,44942,44950,44959,44972,44977,44995,45013,45018,45023,45030,45035,45051,45056,45060,45064,45071],{"__ignoreMap":196},[200,44869,44870],{"class":202,"line":203},[200,44871,44872],{"class":555},"// app/pages/sitemap.xml.ts\n",[200,44874,44875,44877,44879,44881,44883,44885,44887,44889],{"class":202,"line":214},[200,44876,13614],{"class":1006},[200,44878,22954],{"class":1006},[200,44880,23108],{"class":923},[200,44882,6268],{"class":317},[200,44884,18714],{"class":313},[200,44886,13350],{"class":210},[200,44888,6313],{"class":313},[200,44890,318],{"class":210},[200,44892,44893,44895,44898,44900,44902,44904,44906,44908,44911,44913,44915,44917,44919],{"class":202,"line":16},[200,44894,13628],{"class":313},[200,44896,44897],{"class":317}," posts",[200,44899,1096],{"class":210},[200,44901,13781],{"class":1006},[200,44903,26528],{"class":923},[200,44905,6268],{"class":206},[200,44907,1093],{"class":210},[200,44909,44910],{"class":286},"blog",[200,44912,1093],{"class":210},[200,44914,5072],{"class":206},[200,44916,3975],{"class":210},[200,44918,23292],{"class":923},[200,44920,8169],{"class":206},[200,44922,44923],{"class":202,"line":229},[200,44924,376],{"emptyLinePlaceholder":375},[200,44926,44927,44929,44932,44934],{"class":202,"line":237},[200,44928,13628],{"class":313},[200,44930,44931],{"class":317}," sitemap",[200,44933,1096],{"class":210},[200,44935,44936],{"class":210}," `\n",[200,44938,44939],{"class":202,"line":245},[200,44940,44941],{"class":286}," \n",[200,44943,44944,44947],{"class":202,"line":253},[200,44945,44946],{"class":210}," ${",[200,44948,44949],{"class":317},"posts\n",[200,44951,44952,44955,44957],{"class":202,"line":261},[200,44953,44954],{"class":210}," .",[200,44956,17225],{"class":923},[200,44958,6231],{"class":317},[200,44960,44961,44964,44966,44968,44970],{"class":202,"line":269},[200,44962,44963],{"class":210}," (",[200,44965,7833],{"class":1257},[200,44967,5072],{"class":210},[200,44969,6313],{"class":313},[200,44971,44936],{"class":210},[200,44973,44974],{"class":202,"line":277},[200,44975,44976],{"class":286}," \n",[200,44978,44979,44982,44984,44986,44988,44990,44992],{"class":202,"line":417},[200,44980,44981],{"class":286}," https://example.com/blog/",[200,44983,20090],{"class":210},[200,44985,7833],{"class":317},[200,44987,3975],{"class":210},[200,44989,44653],{"class":317},[200,44991,21331],{"class":210},[200,44993,44994],{"class":286},"\n",[200,44996,44997,45000,45002,45004,45006,45008,45010],{"class":202,"line":422},[200,44998,44999],{"class":286}," ",[200,45001,20090],{"class":210},[200,45003,7833],{"class":317},[200,45005,3975],{"class":210},[200,45007,44787],{"class":317},[200,45009,21331],{"class":210},[200,45011,45012],{"class":286},"\n",[200,45014,45015],{"class":202,"line":29},[200,45016,45017],{"class":286}," monthly\n",[200,45019,45020],{"class":202,"line":445},[200,45021,45022],{"class":286}," \n",[200,45024,45025,45028],{"class":202,"line":455},[200,45026,45027],{"class":210}," `",[200,45029,2455],{"class":210},[200,45031,45032],{"class":202,"line":466},[200,45033,45034],{"class":317}," )\n",[200,45036,45037,45039,45042,45044,45047,45049],{"class":202,"line":482},[200,45038,44954],{"class":210},[200,45040,45041],{"class":923},"join",[200,45043,6268],{"class":317},[200,45045,45046],{"class":210},"\"\"",[200,45048,5072],{"class":317},[200,45050,529],{"class":210},[200,45052,45053],{"class":202,"line":493},[200,45054,45055],{"class":286}," \n",[200,45057,45058],{"class":202,"line":498},[200,45059,35470],{"class":210},[200,45061,45062],{"class":202,"line":503},[200,45063,376],{"emptyLinePlaceholder":375},[200,45065,45066,45068],{"class":202,"line":515},[200,45067,13913],{"class":1006},[200,45069,45070],{"class":317}," sitemap\n",[200,45072,45073,45075],{"class":202,"line":521},[200,45074,21331],{"class":210},[200,45076,4304],{"class":317},[100,45078,45080],{"id":45079},"core-web-vitals-optimization","Core Web Vitals Optimization",[123,45082,45084],{"id":45083},"_1-largest-contentful-paint-lcp","1. Largest Contentful Paint (LCP)",[104,45086,45087,45089],{},[137,45088,29647],{},": < 2.5 seconds",[191,45091,45093],{"className":36062,"code":45092,"language":36064,"meta":196,"style":196},"\n\n",[118,45094,45095,45100,45108,45115,45129,45143,45157,45171,45185,45198,45203,45208,45213],{"__ignoreMap":196},[200,45096,45097],{"class":202,"line":203},[200,45098,45099],{"class":555},"\n",[200,45101,45102,45104,45106],{"class":202,"line":214},[200,45103,10416],{"class":210},[200,45105,22112],{"class":206},[200,45107,10425],{"class":210},[200,45109,45110,45112],{"class":202,"line":16},[200,45111,22119],{"class":210},[200,45113,45114],{"class":206},"NuxtImg\n",[200,45116,45117,45120,45122,45124,45127],{"class":202,"line":229},[200,45118,45119],{"class":313}," src",[200,45121,4280],{"class":210},[200,45123,1093],{"class":210},[200,45125,45126],{"class":286},"/hero-image.jpg",[200,45128,1036],{"class":210},[200,45130,45131,45134,45136,45138,45141],{"class":202,"line":237},[200,45132,45133],{"class":313}," alt",[200,45135,4280],{"class":210},[200,45137,1093],{"class":210},[200,45139,45140],{"class":286},"Hero",[200,45142,1036],{"class":210},[200,45144,45145,45148,45150,45152,45155],{"class":202,"line":245},[200,45146,45147],{"class":313}," width",[200,45149,4280],{"class":210},[200,45151,1093],{"class":210},[200,45153,45154],{"class":286},"1200",[200,45156,1036],{"class":210},[200,45158,45159,45162,45164,45166,45169],{"class":202,"line":253},[200,45160,45161],{"class":313}," height",[200,45163,4280],{"class":210},[200,45165,1093],{"class":210},[200,45167,45168],{"class":286},"630",[200,45170,1036],{"class":210},[200,45172,45173,45176,45178,45180,45183],{"class":202,"line":261},[200,45174,45175],{"class":313}," format",[200,45177,4280],{"class":210},[200,45179,1093],{"class":210},[200,45181,45182],{"class":286},"webp",[200,45184,1036],{"class":210},[200,45186,45187,45190,45192,45194,45196],{"class":202,"line":269},[200,45188,45189],{"class":313}," quality",[200,45191,4280],{"class":210},[200,45193,1093],{"class":210},[200,45195,327],{"class":286},[200,45197,1036],{"class":210},[200,45199,45200],{"class":202,"line":277},[200,45201,45202],{"class":313}," preload\n",[200,45204,45205],{"class":202,"line":417},[200,45206,45207],{"class":313}," priority\n",[200,45209,45210],{"class":202,"line":422},[200,45211,45212],{"class":210}," />\n",[200,45214,45215,45217,45219],{"class":202,"line":29},[200,45216,22205],{"class":210},[200,45218,22112],{"class":206},[200,45220,10425],{"class":210},[123,45222,45224],{"id":45223},"_2-first-input-delay-fid","2. First Input Delay (FID)",[104,45226,45227,45229],{},[137,45228,29647],{},": < 100 milliseconds",[191,45231,45233],{"className":10095,"code":45232,"language":10097,"meta":196,"style":196},"// Minimize JavaScript\n// Use web workers for heavy computation\n// Implement code splitting\n",[118,45234,45235,45240,45245],{"__ignoreMap":196},[200,45236,45237],{"class":202,"line":203},[200,45238,45239],{"class":555},"// Minimize JavaScript\n",[200,45241,45242],{"class":202,"line":214},[200,45243,45244],{"class":555},"// Use web workers for heavy computation\n",[200,45246,45247],{"class":202,"line":16},[200,45248,45249],{"class":555},"// Implement code splitting\n",[123,45251,45253],{"id":45252},"_3-cumulative-layout-shift-cls","3. Cumulative Layout Shift (CLS)",[104,45255,45256,45258],{},[137,45257,29647],{},": < 0.1",[191,45260,45262],{"className":36062,"code":45261,"language":36064,"meta":196,"style":196},"\n\n",[118,45263,45264,45269,45277,45296,45329,45337],{"__ignoreMap":196},[200,45265,45266],{"class":202,"line":203},[200,45267,45268],{"class":555},"\n",[200,45270,45271,45273,45275],{"class":202,"line":214},[200,45272,10416],{"class":210},[200,45274,22112],{"class":206},[200,45276,10425],{"class":210},[200,45278,45279,45281,45283,45285,45287,45289,45292,45294],{"class":202,"line":16},[200,45280,22119],{"class":210},[200,45282,20182],{"class":206},[200,45284,36290],{"class":313},[200,45286,4280],{"class":210},[200,45288,1093],{"class":210},[200,45290,45291],{"class":286},"aspect-w-16 aspect-h-9",[200,45293,1093],{"class":210},[200,45295,10425],{"class":210},[200,45297,45298,45300,45303,45306,45308,45310,45313,45315,45318,45320,45322,45325,45327],{"class":202,"line":229},[200,45299,20788],{"class":210},[200,45301,45302],{"class":206},"img",[200,45304,45305],{"class":313}," src",[200,45307,4280],{"class":210},[200,45309,1093],{"class":210},[200,45311,45312],{"class":286},"image.jpg",[200,45314,1093],{"class":210},[200,45316,45317],{"class":313}," alt",[200,45319,4280],{"class":210},[200,45321,1093],{"class":210},[200,45323,45324],{"class":286},"Description",[200,45326,1093],{"class":210},[200,45328,42021],{"class":210},[200,45330,45331,45333,45335],{"class":202,"line":237},[200,45332,22139],{"class":210},[200,45334,20182],{"class":206},[200,45336,10425],{"class":210},[200,45338,45339,45341,45343],{"class":202,"line":245},[200,45340,22205],{"class":210},[200,45342,22112],{"class":206},[200,45344,10425],{"class":210},[100,45346,45348],{"id":45347},"ai-content-optimization","AI Content Optimization",[123,45350,45352],{"id":45351},"_1-semantic-keyword-research","1. Semantic Keyword Research",[191,45354,45356],{"className":10095,"code":45355,"language":10097,"meta":196,"style":196},"// Use AI for keyword clustering\nconst keywords = await aiClusterKeywords([\n \"web development\",\n \"frontend frameworks\",\n \"JavaScript tutorials\",\n])\n\n// Returns related terms and search intent\n",[118,45357,45358,45363,45379,45390,45401,45412,45416,45420],{"__ignoreMap":196},[200,45359,45360],{"class":202,"line":203},[200,45361,45362],{"class":555},"// Use AI for keyword clustering\n",[200,45364,45365,45367,45370,45372,45374,45377],{"class":202,"line":214},[200,45366,10803],{"class":313},[200,45368,45369],{"class":317}," keywords ",[200,45371,4280],{"class":210},[200,45373,13781],{"class":1006},[200,45375,45376],{"class":923}," aiClusterKeywords",[200,45378,6690],{"class":317},[200,45380,45381,45383,45386,45388],{"class":202,"line":16},[200,45382,15331],{"class":210},[200,45384,45385],{"class":286},"web development",[200,45387,1093],{"class":210},[200,45389,2455],{"class":210},[200,45391,45392,45394,45397,45399],{"class":202,"line":229},[200,45393,15331],{"class":210},[200,45395,45396],{"class":286},"frontend frameworks",[200,45398,1093],{"class":210},[200,45400,2455],{"class":210},[200,45402,45403,45405,45408,45410],{"class":202,"line":237},[200,45404,15331],{"class":210},[200,45406,45407],{"class":286},"JavaScript tutorials",[200,45409,1093],{"class":210},[200,45411,2455],{"class":210},[200,45413,45414],{"class":202,"line":245},[200,45415,9054],{"class":317},[200,45417,45418],{"class":202,"line":253},[200,45419,376],{"emptyLinePlaceholder":375},[200,45421,45422],{"class":202,"line":261},[200,45423,45424],{"class":555},"// Returns related terms and search intent\n",[123,45426,45428],{"id":45427},"_2-content-structure","2. Content Structure",[191,45430,45432],{"className":11683,"code":45431,"language":11685,"meta":196,"style":196},"# H1: Main Topic (include primary keyword)\n\n## H2: Key Subtopics\n\n- Cover related concepts\n- Answer common questions\n- Include semantic keywords\n\n### H3: Detailed Points\n\n- Provide examples\n- Add code snippets\n- Include data and statistics\n",[118,45433,45434,45439,45443,45448,45452,45457,45462,45467,45471,45476,45480,45485,45490],{"__ignoreMap":196},[200,45435,45436],{"class":202,"line":203},[200,45437,45438],{},"# H1: Main Topic (include primary keyword)\n",[200,45440,45441],{"class":202,"line":214},[200,45442,376],{"emptyLinePlaceholder":375},[200,45444,45445],{"class":202,"line":16},[200,45446,45447],{},"## H2: Key Subtopics\n",[200,45449,45450],{"class":202,"line":229},[200,45451,376],{"emptyLinePlaceholder":375},[200,45453,45454],{"class":202,"line":237},[200,45455,45456],{},"- Cover related concepts\n",[200,45458,45459],{"class":202,"line":245},[200,45460,45461],{},"- Answer common questions\n",[200,45463,45464],{"class":202,"line":253},[200,45465,45466],{},"- Include semantic keywords\n",[200,45468,45469],{"class":202,"line":261},[200,45470,376],{"emptyLinePlaceholder":375},[200,45472,45473],{"class":202,"line":269},[200,45474,45475],{},"### H3: Detailed Points\n",[200,45477,45478],{"class":202,"line":277},[200,45479,376],{"emptyLinePlaceholder":375},[200,45481,45482],{"class":202,"line":417},[200,45483,45484],{},"- Provide examples\n",[200,45486,45487],{"class":202,"line":422},[200,45488,45489],{},"- Add code snippets\n",[200,45491,45492],{"class":202,"line":29},[200,45493,45494],{},"- Include data and statistics\n",[123,45496,45498],{"id":45497},"_3-ai-generated-meta-descriptions","3. AI-Generated Meta Descriptions",[191,45500,45502],{"className":10095,"code":45501,"language":10097,"meta":196,"style":196},"import { generateMetaDescription } from \"@/lib/ai-seo\"\n\nconst metaDescription = await generateMetaDescription({\n title: \"Complete Guide to Web Development\",\n content: articleContent,\n keywords: [\"web development\", \"frontend\", \"backend\"],\n maxLength: 160,\n})\n",[118,45503,45504,45524,45528,45545,45560,45572,45609,45621],{"__ignoreMap":196},[200,45505,45506,45508,45510,45513,45515,45517,45519,45522],{"class":202,"line":203},[200,45507,22235],{"class":1006},[200,45509,13631],{"class":210},[200,45511,45512],{"class":317}," generateMetaDescription",[200,45514,13647],{"class":210},[200,45516,22255],{"class":1006},[200,45518,1030],{"class":210},[200,45520,45521],{"class":286},"@/lib/ai-seo",[200,45523,1036],{"class":210},[200,45525,45526],{"class":202,"line":214},[200,45527,376],{"emptyLinePlaceholder":375},[200,45529,45530,45532,45535,45537,45539,45541,45543],{"class":202,"line":16},[200,45531,10803],{"class":313},[200,45533,45534],{"class":317}," metaDescription ",[200,45536,4280],{"class":210},[200,45538,13781],{"class":1006},[200,45540,45512],{"class":923},[200,45542,6268],{"class":317},[200,45544,388],{"class":210},[200,45546,45547,45549,45551,45553,45556,45558],{"class":202,"line":229},[200,45548,29029],{"class":206},[200,45550,283],{"class":210},[200,45552,1030],{"class":210},[200,45554,45555],{"class":286},"Complete Guide to Web Development",[200,45557,1093],{"class":210},[200,45559,2455],{"class":210},[200,45561,45562,45565,45567,45570],{"class":202,"line":237},[200,45563,45564],{"class":206}," content",[200,45566,283],{"class":210},[200,45568,45569],{"class":317}," articleContent",[200,45571,2455],{"class":210},[200,45573,45574,45577,45579,45581,45583,45585,45587,45589,45591,45594,45596,45598,45600,45603,45605,45607],{"class":202,"line":245},[200,45575,45576],{"class":206}," keywords",[200,45578,283],{"class":210},[200,45580,877],{"class":317},[200,45582,1093],{"class":210},[200,45584,45385],{"class":286},[200,45586,1093],{"class":210},[200,45588,1966],{"class":210},[200,45590,1030],{"class":210},[200,45592,45593],{"class":286},"frontend",[200,45595,1093],{"class":210},[200,45597,1966],{"class":210},[200,45599,1030],{"class":210},[200,45601,45602],{"class":286},"backend",[200,45604,1093],{"class":210},[200,45606,7760],{"class":317},[200,45608,2455],{"class":210},[200,45610,45611,45614,45616,45619],{"class":202,"line":253},[200,45612,45613],{"class":206}," maxLength",[200,45615,283],{"class":210},[200,45617,45618],{"class":326}," 160",[200,45620,2455],{"class":210},[200,45622,45623,45625],{"class":202,"line":261},[200,45624,21331],{"class":210},[200,45626,4304],{"class":317},[100,45628,45630],{"id":45629},"advanced-seo-techniques","Advanced SEO Techniques",[123,45632,45634],{"id":45633},"_1-edge-caching-for-seo","1. Edge Caching for SEO",[191,45636,45638],{"className":10095,"code":45637,"language":10097,"meta":196,"style":196},"// nuxt.config.ts\nexport default defineNuxtConfig({\n routeRules: {\n \"/blog/**\": {\n isr: 3600, // Revalidate every hour\n cache: {\n maxAge: 3600,\n staleWhileRevalidate: 7200,\n },\n },\n },\n})\n",[118,45639,45640,45644,45656,45664,45676,45690,45699,45710,45722,45726,45730,45734],{"__ignoreMap":196},[200,45641,45642],{"class":202,"line":203},[200,45643,26783],{"class":555},[200,45645,45646,45648,45650,45652,45654],{"class":202,"line":214},[200,45647,13614],{"class":1006},[200,45649,22954],{"class":1006},[200,45651,22957],{"class":923},[200,45653,6268],{"class":317},[200,45655,388],{"class":210},[200,45657,45658,45660,45662],{"class":202,"line":16},[200,45659,22966],{"class":206},[200,45661,283],{"class":210},[200,45663,318],{"class":210},[200,45665,45666,45668,45670,45672,45674],{"class":202,"line":229},[200,45667,22442],{"class":210},[200,45669,23003],{"class":206},[200,45671,1093],{"class":210},[200,45673,283],{"class":210},[200,45675,318],{"class":210},[200,45677,45678,45681,45683,45685,45687],{"class":202,"line":237},[200,45679,45680],{"class":206}," isr",[200,45682,283],{"class":210},[200,45684,7453],{"class":326},[200,45686,1966],{"class":210},[200,45688,45689],{"class":555}," // Revalidate every hour\n",[200,45691,45692,45695,45697],{"class":202,"line":245},[200,45693,45694],{"class":206}," cache",[200,45696,283],{"class":210},[200,45698,318],{"class":210},[200,45700,45701,45704,45706,45708],{"class":202,"line":253},[200,45702,45703],{"class":206}," maxAge",[200,45705,283],{"class":210},[200,45707,7453],{"class":326},[200,45709,2455],{"class":210},[200,45711,45712,45715,45717,45720],{"class":202,"line":261},[200,45713,45714],{"class":206}," staleWhileRevalidate",[200,45716,283],{"class":210},[200,45718,45719],{"class":326}," 7200",[200,45721,2455],{"class":210},[200,45723,45724],{"class":202,"line":269},[200,45725,20390],{"class":210},[200,45727,45728],{"class":202,"line":277},[200,45729,21319],{"class":210},[200,45731,45732],{"class":202,"line":417},[200,45733,23076],{"class":210},[200,45735,45736,45738],{"class":202,"line":422},[200,45737,21331],{"class":210},[200,45739,4304],{"class":317},[123,45741,45743],{"id":45742},"_2-internationalization-i18n","2. Internationalization (i18n)",[191,45745,45747],{"className":36062,"code":45746,"language":36064,"meta":196,"style":196},"\n\n",[118,45748,45749,45754,45764,45772,45787,45796,45812,45816,45824,45871,45913,45919,45925],{"__ignoreMap":196},[200,45750,45751],{"class":202,"line":203},[200,45752,45753],{"class":555},"\n",[200,45755,45756,45758,45760,45762],{"class":202,"line":214},[200,45757,10416],{"class":210},[200,45759,22507],{"class":206},[200,45761,36080],{"class":313},[200,45763,10425],{"class":210},[200,45765,45766,45768,45770],{"class":202,"line":16},[200,45767,28987],{"class":923},[200,45769,6268],{"class":317},[200,45771,388],{"class":210},[200,45773,45774,45776,45778,45780,45783,45785],{"class":202,"line":229},[200,45775,29029],{"class":206},[200,45777,283],{"class":210},[200,45779,1030],{"class":210},[200,45781,45782],{"class":286},"My Blog",[200,45784,1093],{"class":210},[200,45786,2455],{"class":210},[200,45788,45789,45792,45794],{"class":202,"line":237},[200,45790,45791],{"class":206}," htmlAttrs",[200,45793,283],{"class":210},[200,45795,318],{"class":210},[200,45797,45798,45801,45803,45805,45808,45810],{"class":202,"line":245},[200,45799,45800],{"class":206}," lang",[200,45802,283],{"class":210},[200,45804,1030],{"class":210},[200,45806,45807],{"class":286},"en",[200,45809,1093],{"class":210},[200,45811,2455],{"class":210},[200,45813,45814],{"class":202,"line":253},[200,45815,23076],{"class":210},[200,45817,45818,45820,45822],{"class":202,"line":261},[200,45819,21223],{"class":206},[200,45821,283],{"class":210},[200,45823,6386],{"class":317},[200,45825,45826,45829,45832,45834,45836,45839,45841,45843,45846,45848,45850,45853,45855,45857,45860,45862,45864,45867,45869],{"class":202,"line":269},[200,45827,45828],{"class":210}," {",[200,45830,45831],{"class":206}," rel",[200,45833,283],{"class":210},[200,45835,1030],{"class":210},[200,45837,45838],{"class":286},"alternate",[200,45840,1093],{"class":210},[200,45842,1966],{"class":210},[200,45844,45845],{"class":206}," hreflang",[200,45847,283],{"class":210},[200,45849,1030],{"class":210},[200,45851,45852],{"class":286},"es",[200,45854,1093],{"class":210},[200,45856,1966],{"class":210},[200,45858,45859],{"class":206}," href",[200,45861,283],{"class":210},[200,45863,1030],{"class":210},[200,45865,45866],{"class":286},"/es/blog",[200,45868,1093],{"class":210},[200,45870,21814],{"class":210},[200,45872,45873,45875,45877,45879,45881,45883,45885,45887,45889,45891,45893,45896,45898,45900,45902,45904,45906,45909,45911],{"class":202,"line":277},[200,45874,45828],{"class":210},[200,45876,45831],{"class":206},[200,45878,283],{"class":210},[200,45880,1030],{"class":210},[200,45882,45838],{"class":286},[200,45884,1093],{"class":210},[200,45886,1966],{"class":210},[200,45888,45845],{"class":206},[200,45890,283],{"class":210},[200,45892,1030],{"class":210},[200,45894,45895],{"class":286},"fr",[200,45897,1093],{"class":210},[200,45899,1966],{"class":210},[200,45901,45859],{"class":206},[200,45903,283],{"class":210},[200,45905,1030],{"class":210},[200,45907,45908],{"class":286},"/fr/blog",[200,45910,1093],{"class":210},[200,45912,21814],{"class":210},[200,45914,45915,45917],{"class":202,"line":417},[200,45916,21324],{"class":317},[200,45918,2455],{"class":210},[200,45920,45921,45923],{"class":202,"line":422},[200,45922,21331],{"class":210},[200,45924,4304],{"class":317},[200,45926,45927,45929,45931],{"class":202,"line":29},[200,45928,22205],{"class":210},[200,45930,22507],{"class":206},[200,45932,10425],{"class":210},[123,45934,45936],{"id":45935},"_3-breadcrumb-navigation","3. Breadcrumb Navigation",[191,45938,45940],{"className":36062,"code":45939,"language":36064,"meta":196,"style":196},"\n",[118,45941,45942,45952,45958,45962,45980,45989,45993,46011,46022,46038,46054,46058,46062,46080,46090,46104,46119,46123,46129,46133,46137],{"__ignoreMap":196},[200,45943,45944,45946,45948,45950],{"class":202,"line":203},[200,45945,10416],{"class":210},[200,45947,22507],{"class":206},[200,45949,36080],{"class":313},[200,45951,10425],{"class":210},[200,45953,45954,45956],{"class":202,"line":214},[200,45955,28984],{"class":923},[200,45957,6690],{"class":317},[200,45959,45960],{"class":202,"line":16},[200,45961,44677],{"class":210},[200,45963,45964,45966,45968,45970,45972,45974,45976,45978],{"class":202,"line":229},[200,45965,22442],{"class":210},[200,45967,28058],{"class":206},[200,45969,1093],{"class":210},[200,45971,283],{"class":210},[200,45973,1030],{"class":210},[200,45975,28719],{"class":286},[200,45977,1093],{"class":210},[200,45979,2455],{"class":210},[200,45981,45982,45985,45987],{"class":202,"line":237},[200,45983,45984],{"class":206}," itemListElement",[200,45986,283],{"class":210},[200,45988,6386],{"class":317},[200,45990,45991],{"class":202,"line":245},[200,45992,20380],{"class":210},[200,45994,45995,45997,45999,46001,46003,46005,46007,46009],{"class":202,"line":253},[200,45996,21291],{"class":210},[200,45998,28058],{"class":206},[200,46000,1093],{"class":210},[200,46002,283],{"class":210},[200,46004,1030],{"class":210},[200,46006,28755],{"class":286},[200,46008,1093],{"class":210},[200,46010,2455],{"class":210},[200,46012,46013,46016,46018,46020],{"class":202,"line":261},[200,46014,46015],{"class":206}," position",[200,46017,283],{"class":210},[200,46019,8419],{"class":326},[200,46021,2455],{"class":210},[200,46023,46024,46027,46029,46031,46034,46036],{"class":202,"line":269},[200,46025,46026],{"class":206}," name",[200,46028,283],{"class":210},[200,46030,1030],{"class":210},[200,46032,46033],{"class":286},"Home",[200,46035,1093],{"class":210},[200,46037,2455],{"class":210},[200,46039,46040,46043,46045,46047,46050,46052],{"class":202,"line":277},[200,46041,46042],{"class":206}," item",[200,46044,283],{"class":210},[200,46046,1030],{"class":210},[200,46048,46049],{"class":286},"https://example.com/",[200,46051,1093],{"class":210},[200,46053,2455],{"class":210},[200,46055,46056],{"class":202,"line":417},[200,46057,20390],{"class":210},[200,46059,46060],{"class":202,"line":422},[200,46061,20380],{"class":210},[200,46063,46064,46066,46068,46070,46072,46074,46076,46078],{"class":202,"line":29},[200,46065,21291],{"class":210},[200,46067,28058],{"class":206},[200,46069,1093],{"class":210},[200,46071,283],{"class":210},[200,46073,1030],{"class":210},[200,46075,28755],{"class":286},[200,46077,1093],{"class":210},[200,46079,2455],{"class":210},[200,46081,46082,46084,46086,46088],{"class":202,"line":445},[200,46083,46015],{"class":206},[200,46085,283],{"class":210},[200,46087,9593],{"class":326},[200,46089,2455],{"class":210},[200,46091,46092,46094,46096,46098,46100,46102],{"class":202,"line":455},[200,46093,46026],{"class":206},[200,46095,283],{"class":210},[200,46097,1030],{"class":210},[200,46099,28789],{"class":286},[200,46101,1093],{"class":210},[200,46103,2455],{"class":210},[200,46105,46106,46108,46110,46112,46115,46117],{"class":202,"line":466},[200,46107,46042],{"class":206},[200,46109,283],{"class":210},[200,46111,1030],{"class":210},[200,46113,46114],{"class":286},"https://example.com/blog",[200,46116,1093],{"class":210},[200,46118,2455],{"class":210},[200,46120,46121],{"class":202,"line":482},[200,46122,20390],{"class":210},[200,46124,46125,46127],{"class":202,"line":493},[200,46126,42004],{"class":317},[200,46128,2455],{"class":210},[200,46130,46131],{"class":202,"line":498},[200,46132,23076],{"class":210},[200,46134,46135],{"class":202,"line":503},[200,46136,9054],{"class":317},[200,46138,46139,46141,46143],{"class":202,"line":515},[200,46140,22205],{"class":210},[200,46142,22507],{"class":206},[200,46144,10425],{"class":210},[100,46146,46148],{"id":46147},"mobile-first-seo","Mobile-First SEO",[123,46150,46152],{"id":46151},"_1-responsive-design","1. Responsive Design",[191,46154,46156],{"className":21546,"code":46155,"language":21548,"meta":196,"style":196},"/* Mobile-first approach */\n.container {\n @apply px-4 sm:px-6 lg:px-8;\n}\n\n.text {\n @apply text-base sm:text-lg lg:text-xl;\n}\n",[118,46157,46158,46163,46172,46184,46188,46192,46200,46212],{"__ignoreMap":196},[200,46159,46160],{"class":202,"line":203},[200,46161,46162],{"class":555},"/* Mobile-first approach */\n",[200,46164,46165,46167,46170],{"class":202,"line":214},[200,46166,3975],{"class":210},[200,46168,46169],{"class":384},"container",[200,46171,318],{"class":210},[200,46173,46174,46177,46179,46182],{"class":202,"line":16},[200,46175,46176],{"class":317}," @apply px-4 sm",[200,46178,283],{"class":210},[200,46180,46181],{"class":317},"px-6 lg:px-8",[200,46183,330],{"class":210},[200,46185,46186],{"class":202,"line":229},[200,46187,529],{"class":210},[200,46189,46190],{"class":202,"line":237},[200,46191,376],{"emptyLinePlaceholder":375},[200,46193,46194,46196,46198],{"class":202,"line":245},[200,46195,3975],{"class":210},[200,46197,5853],{"class":384},[200,46199,318],{"class":210},[200,46201,46202,46205,46207,46210],{"class":202,"line":253},[200,46203,46204],{"class":317}," @apply text-base sm",[200,46206,283],{"class":210},[200,46208,46209],{"class":317},"text-lg lg:text-xl",[200,46211,330],{"class":210},[200,46213,46214],{"class":202,"line":261},[200,46215,529],{"class":210},[123,46217,46219],{"id":46218},"_2-touch-targets","2. Touch Targets",[191,46221,46223],{"className":36062,"code":46222,"language":36064,"meta":196,"style":196},"\n",[118,46224,46225,46233,46238,46266],{"__ignoreMap":196},[200,46226,46227,46229,46231],{"class":202,"line":203},[200,46228,10416],{"class":210},[200,46230,22112],{"class":206},[200,46232,10425],{"class":210},[200,46234,46235],{"class":202,"line":214},[200,46236,46237],{"class":555}," \n",[200,46239,46240,46242,46244,46246,46248,46250,46253,46255,46257,46260,46262,46264],{"class":202,"line":16},[200,46241,22119],{"class":210},[200,46243,42028],{"class":206},[200,46245,36290],{"class":313},[200,46247,4280],{"class":210},[200,46249,1093],{"class":210},[200,46251,46252],{"class":286},"min-h-[44px] min-w-[44px] p-4",[200,46254,1093],{"class":210},[200,46256,4335],{"class":210},[200,46258,46259],{"class":317},"Click Me",[200,46261,22205],{"class":210},[200,46263,42028],{"class":206},[200,46265,10425],{"class":210},[200,46267,46268,46270,46272],{"class":202,"line":229},[200,46269,22205],{"class":210},[200,46271,22112],{"class":206},[200,46273,10425],{"class":210},[123,46275,46277],{"id":46276},"_3-mobile-performance","3. Mobile Performance",[191,46279,46281],{"className":10095,"code":46280,"language":10097,"meta":196,"style":196},"// Lazy load non-critical resources\nconst loadOnInteraction = () => {\n return import(\"./heavy-component.vue\")\n}\n",[118,46282,46283,46288,46303,46321],{"__ignoreMap":196},[200,46284,46285],{"class":202,"line":203},[200,46286,46287],{"class":555},"// Lazy load non-critical resources\n",[200,46289,46290,46292,46295,46297,46299,46301],{"class":202,"line":214},[200,46291,10803],{"class":313},[200,46293,46294],{"class":317}," loadOnInteraction ",[200,46296,4280],{"class":210},[200,46298,13350],{"class":210},[200,46300,6313],{"class":313},[200,46302,318],{"class":210},[200,46304,46305,46307,46310,46312,46314,46317,46319],{"class":202,"line":16},[200,46306,13913],{"class":1006},[200,46308,46309],{"class":210}," import",[200,46311,6268],{"class":206},[200,46313,1093],{"class":210},[200,46315,46316],{"class":286},"./heavy-component.vue",[200,46318,1093],{"class":210},[200,46320,4304],{"class":206},[200,46322,46323],{"class":202,"line":229},[200,46324,529],{"class":210},[100,46326,46328],{"id":46327},"monitoring-and-analytics","Monitoring and Analytics",[123,46330,46332],{"id":46331},"_1-google-search-console-integration","1. Google Search Console Integration",[191,46334,46336],{"className":10095,"code":46335,"language":10097,"meta":196,"style":196},"// Verify site ownership\nuseHead({\n meta: [\n { name: \"google-site-verification\", content: \"your-verification-code\" },\n ],\n})\n",[118,46337,46338,46343,46351,46359,46389,46395],{"__ignoreMap":196},[200,46339,46340],{"class":202,"line":203},[200,46341,46342],{"class":555},"// Verify site ownership\n",[200,46344,46345,46347,46349],{"class":202,"line":214},[200,46346,21214],{"class":923},[200,46348,6268],{"class":317},[200,46350,388],{"class":210},[200,46352,46353,46355,46357],{"class":202,"line":16},[200,46354,24120],{"class":206},[200,46356,283],{"class":210},[200,46358,6386],{"class":317},[200,46360,46361,46363,46365,46367,46369,46372,46374,46376,46378,46380,46382,46385,46387],{"class":202,"line":229},[200,46362,45828],{"class":210},[200,46364,24213],{"class":206},[200,46366,283],{"class":210},[200,46368,1030],{"class":210},[200,46370,46371],{"class":286},"google-site-verification",[200,46373,1093],{"class":210},[200,46375,1966],{"class":210},[200,46377,38331],{"class":206},[200,46379,283],{"class":210},[200,46381,1030],{"class":210},[200,46383,46384],{"class":286},"your-verification-code",[200,46386,1093],{"class":210},[200,46388,21814],{"class":210},[200,46390,46391,46393],{"class":202,"line":237},[200,46392,21324],{"class":317},[200,46394,2455],{"class":210},[200,46396,46397,46399],{"class":202,"line":245},[200,46398,21331],{"class":210},[200,46400,4304],{"class":317},[123,46402,46404],{"id":46403},"_2-performance-monitoring","2. Performance Monitoring",[191,46406,46408],{"className":10095,"code":46407,"language":10097,"meta":196,"style":196},"// app/plugins/web-vitals.ts\nimport { onCLS, onFID, onLCP } from \"web-vitals\"\n\nexport default defineNuxtPlugin(() => {\n onCLS(console.log)\n onFID(console.log)\n onLCP(console.log)\n})\n",[118,46409,46410,46415,46442,46446,46462,46478,46493,46508],{"__ignoreMap":196},[200,46411,46412],{"class":202,"line":203},[200,46413,46414],{"class":555},"// app/plugins/web-vitals.ts\n",[200,46416,46417,46419,46421,46423,46425,46428,46430,46432,46434,46436,46438,46440],{"class":202,"line":214},[200,46418,22235],{"class":1006},[200,46420,13631],{"class":210},[200,46422,22250],{"class":317},[200,46424,1966],{"class":210},[200,46426,46427],{"class":317}," onFID",[200,46429,1966],{"class":210},[200,46431,22240],{"class":317},[200,46433,13647],{"class":210},[200,46435,22255],{"class":1006},[200,46437,1030],{"class":210},[200,46439,22260],{"class":286},[200,46441,1036],{"class":210},[200,46443,46444],{"class":202,"line":16},[200,46445,376],{"emptyLinePlaceholder":375},[200,46447,46448,46450,46452,46454,46456,46458,46460],{"class":202,"line":229},[200,46449,13614],{"class":1006},[200,46451,22954],{"class":1006},[200,46453,25892],{"class":923},[200,46455,6268],{"class":317},[200,46457,10978],{"class":210},[200,46459,6313],{"class":313},[200,46461,318],{"class":210},[200,46463,46464,46467,46469,46472,46474,46476],{"class":202,"line":237},[200,46465,46466],{"class":923}," onCLS",[200,46468,6268],{"class":206},[200,46470,46471],{"class":317},"console",[200,46473,3975],{"class":210},[200,46475,31568],{"class":317},[200,46477,4304],{"class":206},[200,46479,46480,46483,46485,46487,46489,46491],{"class":202,"line":245},[200,46481,46482],{"class":923}," onFID",[200,46484,6268],{"class":206},[200,46486,46471],{"class":317},[200,46488,3975],{"class":210},[200,46490,31568],{"class":317},[200,46492,4304],{"class":206},[200,46494,46495,46498,46500,46502,46504,46506],{"class":202,"line":253},[200,46496,46497],{"class":923}," onLCP",[200,46499,6268],{"class":206},[200,46501,46471],{"class":317},[200,46503,3975],{"class":210},[200,46505,31568],{"class":317},[200,46507,4304],{"class":206},[200,46509,46510,46512],{"class":202,"line":261},[200,46511,21331],{"class":210},[200,46513,4304],{"class":317},[123,46515,46517],{"id":46516},"_3-seo-testing-tools","3. SEO Testing Tools",[191,46519,46521],{"className":909,"code":46520,"language":911,"meta":196,"style":196},"# Lighthouse CI\nnpm install -g @lhci/cli\nlhci autorun\n\n# Check Core Web Vitals\nnpx lighthouse https://example.com --view\n",[118,46522,46523,46528,46540,46548,46552,46557],{"__ignoreMap":196},[200,46524,46525],{"class":202,"line":203},[200,46526,46527],{"class":555},"# Lighthouse CI\n",[200,46529,46530,46532,46534,46537],{"class":202,"line":214},[200,46531,24875],{"class":384},[200,46533,15256],{"class":286},[200,46535,46536],{"class":286}," -g",[200,46538,46539],{"class":286}," @lhci/cli\n",[200,46541,46542,46545],{"class":202,"line":16},[200,46543,46544],{"class":384},"lhci",[200,46546,46547],{"class":286}," autorun\n",[200,46549,46550],{"class":202,"line":229},[200,46551,376],{"emptyLinePlaceholder":375},[200,46553,46554],{"class":202,"line":237},[200,46555,46556],{"class":555},"# Check Core Web Vitals\n",[200,46558,46559,46561,46563,46566],{"class":202,"line":245},[200,46560,24855],{"class":384},[200,46562,26975],{"class":286},[200,46564,46565],{"class":286}," https://example.com",[200,46567,46568],{"class":286}," --view\n",[100,46570,46572],{"id":46571},"common-seo-mistakes-to-avoid","Common SEO Mistakes to Avoid",[123,46574,46576],{"id":46575},"_1-ignoring-mobile-performance","1. Ignoring Mobile Performance",[191,46578,46580],{"className":36062,"code":46579,"language":36064,"meta":196,"style":196},"\n\n\n\n\n",[118,46581,46582,46587,46606,46610,46615],{"__ignoreMap":196},[200,46583,46584],{"class":202,"line":203},[200,46585,46586],{"class":555},"\n",[200,46588,46589,46591,46593,46595,46597,46599,46602,46604],{"class":202,"line":214},[200,46590,10416],{"class":210},[200,46592,45302],{"class":206},[200,46594,45305],{"class":313},[200,46596,4280],{"class":210},[200,46598,1093],{"class":210},[200,46600,46601],{"class":286},"huge-image.jpg",[200,46603,1093],{"class":210},[200,46605,42021],{"class":210},[200,46607,46608],{"class":202,"line":16},[200,46609,376],{"emptyLinePlaceholder":375},[200,46611,46612],{"class":202,"line":229},[200,46613,46614],{"class":555},"\n",[200,46616,46617,46619,46622,46624,46626,46628,46630,46632,46635,46637,46639,46642,46644,46646,46648,46650,46652,46654],{"class":202,"line":237},[200,46618,10416],{"class":210},[200,46620,46621],{"class":206},"NuxtImg",[200,46623,45305],{"class":313},[200,46625,4280],{"class":210},[200,46627,1093],{"class":210},[200,46629,45312],{"class":286},[200,46631,1093],{"class":210},[200,46633,46634],{"class":313}," sizes",[200,46636,4280],{"class":210},[200,46638,1093],{"class":210},[200,46640,46641],{"class":286},"xs:100vw sm:800px",[200,46643,1093],{"class":210},[200,46645,21657],{"class":313},[200,46647,4280],{"class":210},[200,46649,1093],{"class":210},[200,46651,45182],{"class":286},[200,46653,1093],{"class":210},[200,46655,42021],{"class":210},[123,46657,46659],{"id":46658},"_2-missing-structured-data","2. Missing Structured Data",[191,46661,46663],{"className":36062,"code":46662,"language":36064,"meta":196,"style":196},"\n
\n

Blog Post Title

\n
\n\n\n\n",[118,46664,46665,46670,46679,46684,46692,46696,46701,46711,46717,46721,46739,46754,46758,46762],{"__ignoreMap":196},[200,46666,46667],{"class":202,"line":203},[200,46668,46669],{"class":555},"\n",[200,46671,46672,46674,46677],{"class":202,"line":214},[200,46673,10416],{"class":210},[200,46675,46676],{"class":206},"article",[200,46678,10425],{"class":210},[200,46680,46681],{"class":202,"line":16},[200,46682,46683],{"class":317},"

Blog Post Title

\n",[200,46685,46686,46688,46690],{"class":202,"line":229},[200,46687,22205],{"class":210},[200,46689,46676],{"class":206},[200,46691,10425],{"class":210},[200,46693,46694],{"class":202,"line":237},[200,46695,376],{"emptyLinePlaceholder":375},[200,46697,46698],{"class":202,"line":245},[200,46699,46700],{"class":555},"\n",[200,46702,46703,46705,46707,46709],{"class":202,"line":253},[200,46704,10416],{"class":210},[200,46706,22507],{"class":206},[200,46708,36080],{"class":313},[200,46710,10425],{"class":210},[200,46712,46713,46715],{"class":202,"line":261},[200,46714,28984],{"class":923},[200,46716,6690],{"class":317},[200,46718,46719],{"class":202,"line":269},[200,46720,44677],{"class":210},[200,46722,46723,46725,46727,46729,46731,46733,46735,46737],{"class":202,"line":277},[200,46724,22442],{"class":210},[200,46726,28058],{"class":206},[200,46728,1093],{"class":210},[200,46730,283],{"class":210},[200,46732,1030],{"class":210},[200,46734,44692],{"class":286},[200,46736,1093],{"class":210},[200,46738,2455],{"class":210},[200,46740,46741,46743,46745,46747,46750,46752],{"class":202,"line":417},[200,46742,29129],{"class":206},[200,46744,283],{"class":210},[200,46746,1030],{"class":210},[200,46748,46749],{"class":286},"Blog Post Title",[200,46751,1093],{"class":210},[200,46753,2455],{"class":210},[200,46755,46756],{"class":202,"line":422},[200,46757,23076],{"class":210},[200,46759,46760],{"class":202,"line":29},[200,46761,9054],{"class":317},[200,46763,46764,46766,46768],{"class":202,"line":445},[200,46765,22205],{"class":210},[200,46767,22507],{"class":206},[200,46769,10425],{"class":210},[123,46771,46773],{"id":46772},"_3-poor-url-structure","3. Poor URL Structure",[191,46775,46777],{"className":10095,"code":46776,"language":10097,"meta":196,"style":196},"// ❌ Bad: Unclear URLs\n\"/p?id=123&cat=blog\"\n\n// ✅ Good: Descriptive URLs\n\"/blog/seo-guide-2026\"\n",[118,46778,46779,46784,46793,46797,46802],{"__ignoreMap":196},[200,46780,46781],{"class":202,"line":203},[200,46782,46783],{"class":555},"// ❌ Bad: Unclear URLs\n",[200,46785,46786,46788,46791],{"class":202,"line":214},[200,46787,1093],{"class":210},[200,46789,46790],{"class":286},"/p?id=123&cat=blog",[200,46792,1036],{"class":210},[200,46794,46795],{"class":202,"line":16},[200,46796,376],{"emptyLinePlaceholder":375},[200,46798,46799],{"class":202,"line":229},[200,46800,46801],{"class":555},"// ✅ Good: Descriptive URLs\n",[200,46803,46804,46806,46809],{"class":202,"line":237},[200,46805,1093],{"class":210},[200,46807,46808],{"class":286},"/blog/seo-guide-2026",[200,46810,1036],{"class":210},[100,46812,46814],{"id":46813},"ai-seo-tools-for-2026","AI SEO Tools for 2026",[123,46816,46818],{"id":46817},"_1-content-optimization","1. Content Optimization",[131,46820,46821,46827,46833],{},[134,46822,46823,46826],{},[137,46824,46825],{},"Surfer SEO",": AI-powered content optimization",[134,46828,46829,46832],{},[137,46830,46831],{},"Clearscope",": Content grading and suggestions",[134,46834,46835,46838],{},[137,46836,46837],{},"MarketMuse",": Content planning and optimization",[123,46840,46842],{"id":46841},"_2-technical-seo","2. Technical SEO",[131,46844,46845,46851,46857],{},[134,46846,46847,46850],{},[137,46848,46849],{},"Screaming Frog",": Site crawling and analysis",[134,46852,46853,46856],{},[137,46854,46855],{},"Ahrefs",": Backlink analysis and keywords",[134,46858,46859,46862],{},[137,46860,46861],{},"SE Ranking",": All-in-one SEO platform",[123,46864,46866],{"id":46865},"_3-performance","3. Performance",[131,46868,46869,46874,46879],{},[134,46870,46871,46873],{},[137,46872,22753],{},": Core Web Vitals testing",[134,46875,46876,46878],{},[137,46877,22765],{},": Advanced performance testing",[134,46880,46881,46884],{},[137,46882,46883],{},"Lighthouse",": Automated auditing",[100,46886,46888],{"id":46887},"future-of-seo","Future of SEO",[123,46890,46892],{"id":46891},"trends-to-watch","Trends to Watch",[3806,46894,46895,46901,46907,46913,46919],{},[134,46896,46897,46900],{},[137,46898,46899],{},"Voice Search Optimization",": 50% of searches will be voice-based",[134,46902,46903,46906],{},[137,46904,46905],{},"Visual Search",": AI-powered image recognition",[134,46908,46909,46912],{},[137,46910,46911],{},"Video SEO",": Video content in search results",[134,46914,46915,46918],{},[137,46916,46917],{},"E-A-T",": Expertise, Authoritativeness, Trustworthiness",[134,46920,46921,46924],{},[137,46922,46923],{},"Zero-Click Searches",": Featured snippets and AI answers",[100,46926,5123],{"id":5122},[104,46928,46929],{},"AI-powered SEO in 2026 requires a combination of technical excellence, quality content, and strategic optimization. By focusing on Core Web Vitals, structured data, and user experience, you can improve your search visibility and drive organic traffic.",[104,46931,46932],{},"Start with the fundamentals: fast loading times, mobile optimization, and semantic HTML. Then layer on advanced techniques like schema markup and AI content optimization. Monitor your results and iterate based on data.",[5291,46934],{},[104,46936,46937,46940],{},[137,46938,46939],{},"Ready to optimize?"," Run a Lighthouse audit on your site and address the top 3 issues. Then implement structured data for your most important pages.",[5134,46942,46943],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":196,"searchDepth":214,"depth":214,"links":46945},[46946,46947,46951,46956,46961,46966,46971,46976,46981,46986,46991,46994],{"id":44274,"depth":214,"text":44269},{"id":44280,"depth":214,"text":44281,"children":46948},[46949,46950],{"id":44284,"depth":16,"text":44285},{"id":44316,"depth":16,"text":44317},{"id":44346,"depth":214,"text":44347,"children":46952},[46953,46954,46955],{"id":44350,"depth":16,"text":44351},{"id":44570,"depth":16,"text":44571},{"id":44861,"depth":16,"text":44862},{"id":45079,"depth":214,"text":45080,"children":46957},[46958,46959,46960],{"id":45083,"depth":16,"text":45084},{"id":45223,"depth":16,"text":45224},{"id":45252,"depth":16,"text":45253},{"id":45347,"depth":214,"text":45348,"children":46962},[46963,46964,46965],{"id":45351,"depth":16,"text":45352},{"id":45427,"depth":16,"text":45428},{"id":45497,"depth":16,"text":45498},{"id":45629,"depth":214,"text":45630,"children":46967},[46968,46969,46970],{"id":45633,"depth":16,"text":45634},{"id":45742,"depth":16,"text":45743},{"id":45935,"depth":16,"text":45936},{"id":46147,"depth":214,"text":46148,"children":46972},[46973,46974,46975],{"id":46151,"depth":16,"text":46152},{"id":46218,"depth":16,"text":46219},{"id":46276,"depth":16,"text":46277},{"id":46327,"depth":214,"text":46328,"children":46977},[46978,46979,46980],{"id":46331,"depth":16,"text":46332},{"id":46403,"depth":16,"text":46404},{"id":46516,"depth":16,"text":46517},{"id":46571,"depth":214,"text":46572,"children":46982},[46983,46984,46985],{"id":46575,"depth":16,"text":46576},{"id":46658,"depth":16,"text":46659},{"id":46772,"depth":16,"text":46773},{"id":46813,"depth":214,"text":46814,"children":46987},[46988,46989,46990],{"id":46817,"depth":16,"text":46818},{"id":46841,"depth":16,"text":46842},{"id":46865,"depth":16,"text":46866},{"id":46887,"depth":214,"text":46888,"children":46992},[46993],{"id":46891,"depth":16,"text":46892},{"id":5122,"depth":214,"text":5123},"2026-02-19","Master AI-powered SEO techniques for 2026 including schema markup, Core Web Vitals optimization, and AI search visibility strategies.",{"readingTime":9983},"/blog/30-ai-seo-developer-guide-2026",{"title":44269,"description":46996},"SEO Mastery","Modern SEO techniques for developers",{"src":47003,"mime":5204,"alt":47004,"width":5206,"height":21112},"/img/blog/30-ai-seo-developer-guide-2026/banner.svg","AI SEO 2026 Guide - Search optimization with AI brain and graph charts on gradient","blog/30-ai-seo-developer-guide-2026",[22830,9993,21116,15176,47007],"Search Optimization","t_7wJUaG-7Ed5VZjwdeAIlwjtxNxeWDKqFC28LrWaVo",{"id":47010,"title":47011,"abstract":5196,"author":94,"authorUrl":5196,"body":47012,"date":50900,"dateUpdated":50900,"description":50901,"excerpt":5196,"extension":5197,"featured":375,"headline":5196,"image":5196,"meta":50902,"navigation":375,"ogImage":5196,"path":50903,"seo":50904,"series":50905,"seriesDescription":50906,"seriesOrder":203,"socialImage":50907,"stem":50910,"tags":50911,"__hash__":50917},"blog/blog/31-web-accessibility-wcag-2026-guide.md","Web Accessibility WCAG 2026: Complete Compliance Guide",{"type":97,"value":47013,"toc":50850},[47014,47017,47020,47024,47028,47054,47058,47078,47082,47086,47180,47184,47386,47390,47760,47764,47768,47919,47923,48056,48060,48565,48569,48573,48679,48683,48775,48779,48924,48928,48932,49213,49217,49425,49429,49433,49642,49646,49812,49816,49820,50084,50088,50190,50194,50354,50358,50362,50451,50455,50558,50562,50602,50606,50610,50635,50639,50665,50669,50737,50741,50745,50771,50775,50831,50833,50836,50839,50841,50847],[100,47015,47011],{"id":47016},"web-accessibility-wcag-2026-complete-compliance-guide",[104,47018,47019],{},"Web accessibility isn't optional—it's essential. In 2026, WCAG 2.2 guidelines are the standard, and compliance is both a legal requirement and a moral imperative. This comprehensive guide covers everything developers need to know about implementing accessibility in modern web applications.",[100,47021,47023],{"id":47022},"understanding-wcag-22","Understanding WCAG 2.2",[123,47025,47027],{"id":47026},"the-four-principles-pour","The Four Principles (POUR)",[3806,47029,47030,47036,47042,47048],{},[134,47031,47032,47035],{},[137,47033,47034],{},"Perceivable",": Information must be presentable to users in ways they can perceive",[134,47037,47038,47041],{},[137,47039,47040],{},"Operable",": User interface components must be operable",[134,47043,47044,47047],{},[137,47045,47046],{},"Understandable",": Information and operation must be understandable",[134,47049,47050,47053],{},[137,47051,47052],{},"Robust",": Content must be robust enough to be interpreted by assistive technologies",[123,47055,47057],{"id":47056},"conformance-levels","Conformance Levels",[131,47059,47060,47066,47072],{},[134,47061,47062,47065],{},[137,47063,47064],{},"Level A",": Minimum accessibility (must have)",[134,47067,47068,47071],{},[137,47069,47070],{},"Level AA",": Standard compliance (should have)",[134,47073,47074,47077],{},[137,47075,47076],{},"Level AAA",": Enhanced accessibility (nice to have)",[100,47079,47081],{"id":47080},"essential-accessibility-features","Essential Accessibility Features",[123,47083,47085],{"id":47084},"_1-semantic-html","1. Semantic HTML",[191,47087,47089],{"className":36062,"code":47088,"language":36064,"meta":196,"style":196},"\n
\n
Home
\n
\n\n\n\n",[118,47090,47091,47096,47115,47126,47136,47140,47145,47150,47155,47160,47165,47170,47175],{"__ignoreMap":196},[200,47092,47093],{"class":202,"line":203},[200,47094,47095],{"class":555},"\n",[200,47097,47098,47100,47102,47104,47106,47108,47111,47113],{"class":202,"line":214},[200,47099,10416],{"class":210},[200,47101,20182],{"class":206},[200,47103,36290],{"class":313},[200,47105,4280],{"class":210},[200,47107,1093],{"class":210},[200,47109,47110],{"class":286},"nav",[200,47112,1093],{"class":210},[200,47114,10425],{"class":210},[200,47116,47117,47120,47122,47124],{"class":202,"line":16},[200,47118,47119],{"class":317},"
Home",[200,47121,22205],{"class":210},[200,47123,20182],{"class":206},[200,47125,10425],{"class":210},[200,47127,47128,47130,47132,47134],{"class":202,"line":229},[200,47129,10416],{"class":210},[200,47131,22977],{"class":317},[200,47133,20182],{"class":206},[200,47135,10425],{"class":210},[200,47137,47138],{"class":202,"line":237},[200,47139,376],{"emptyLinePlaceholder":375},[200,47141,47142],{"class":202,"line":245},[200,47143,47144],{"class":317},"\n",[200,47146,47147],{"class":202,"line":253},[200,47148,47149],{"class":317},"\n",[123,47181,47183],{"id":47182},"_2-keyboard-navigation","2. Keyboard Navigation",[191,47185,47187],{"className":36062,"code":47186,"language":36064,"meta":196,"style":196},"\n\n\n",[118,47188,47189,47209,47233,47272,47284,47289,47293,47297,47305,47309,47317,47322,47365,47370,47378],{"__ignoreMap":196},[200,47190,47191,47193,47195,47197,47199,47201,47203,47205,47207],{"class":202,"line":203},[200,47192,10416],{"class":210},[200,47194,22507],{"class":206},[200,47196,36080],{"class":313},[200,47198,36083],{"class":313},[200,47200,4280],{"class":210},[200,47202,1093],{"class":210},[200,47204,29012],{"class":286},[200,47206,1093],{"class":210},[200,47208,10425],{"class":210},[200,47210,47211,47213,47216,47218,47220,47222,47224,47227,47229,47231],{"class":202,"line":214},[200,47212,10803],{"class":313},[200,47214,47215],{"class":317}," handleKeyDown ",[200,47217,4280],{"class":210},[200,47219,5253],{"class":210},[200,47221,23117],{"class":1257},[200,47223,283],{"class":210},[200,47225,47226],{"class":384}," KeyboardEvent",[200,47228,5072],{"class":210},[200,47230,6313],{"class":313},[200,47232,318],{"class":210},[200,47234,47235,47237,47239,47241,47243,47245,47247,47249,47252,47254,47256,47258,47260,47262,47264,47266,47268,47270],{"class":202,"line":16},[200,47236,18891],{"class":1006},[200,47238,5253],{"class":206},[200,47240,23117],{"class":317},[200,47242,3975],{"class":210},[200,47244,8414],{"class":317},[200,47246,10842],{"class":210},[200,47248,1030],{"class":210},[200,47250,47251],{"class":286},"Enter",[200,47253,1093],{"class":210},[200,47255,1140],{"class":210},[200,47257,26132],{"class":317},[200,47259,3975],{"class":210},[200,47261,8414],{"class":317},[200,47263,10842],{"class":210},[200,47265,1030],{"class":210},[200,47267,1030],{"class":210},[200,47269,10673],{"class":206},[200,47271,388],{"class":210},[200,47273,47274,47277,47279,47282],{"class":202,"line":229},[200,47275,47276],{"class":317}," event",[200,47278,3975],{"class":210},[200,47280,47281],{"class":923},"preventDefault",[200,47283,8169],{"class":206},[200,47285,47286],{"class":202,"line":237},[200,47287,47288],{"class":555}," // Handle action\n",[200,47290,47291],{"class":202,"line":245},[200,47292,10383],{"class":210},[200,47294,47295],{"class":202,"line":253},[200,47296,529],{"class":210},[200,47298,47299,47301,47303],{"class":202,"line":261},[200,47300,22205],{"class":210},[200,47302,22507],{"class":206},[200,47304,10425],{"class":210},[200,47306,47307],{"class":202,"line":269},[200,47308,376],{"emptyLinePlaceholder":375},[200,47310,47311,47313,47315],{"class":202,"line":277},[200,47312,10416],{"class":210},[200,47314,22112],{"class":206},[200,47316,10425],{"class":210},[200,47318,47319],{"class":202,"line":417},[200,47320,47321],{"class":555}," \n",[200,47323,47324,47326,47328,47331,47333,47335,47338,47340,47343,47345,47347,47350,47352,47355,47357,47359,47361,47363],{"class":202,"line":422},[200,47325,22119],{"class":210},[200,47327,42028],{"class":206},[200,47329,47330],{"class":313}," @click",[200,47332,4280],{"class":210},[200,47334,1093],{"class":210},[200,47336,47337],{"class":286},"handleClick",[200,47339,1093],{"class":210},[200,47341,47342],{"class":313}," @keydown",[200,47344,4280],{"class":210},[200,47346,1093],{"class":210},[200,47348,47349],{"class":286},"handleKeyDown",[200,47351,1093],{"class":210},[200,47353,47354],{"class":313}," :tabindex",[200,47356,4280],{"class":210},[200,47358,1093],{"class":210},[200,47360,20921],{"class":286},[200,47362,1093],{"class":210},[200,47364,10425],{"class":210},[200,47366,47367],{"class":202,"line":29},[200,47368,47369],{"class":317}," Click Me\n",[200,47371,47372,47374,47376],{"class":202,"line":445},[200,47373,22139],{"class":210},[200,47375,42028],{"class":206},[200,47377,10425],{"class":210},[200,47379,47380,47382,47384],{"class":202,"line":455},[200,47381,22205],{"class":210},[200,47383,22112],{"class":206},[200,47385,10425],{"class":210},[123,47387,47389],{"id":47388},"_3-focus-management","3. Focus Management",[191,47391,47393],{"className":36062,"code":47392,"language":36064,"meta":196,"style":196},"\n",[118,47394,47395,47415,47430,47456,47469,47481,47485,47489,47493,47498,47532,47554,47565,47569,47573,47592,47621,47625,47658,47664,47684,47695,47710,47717,47727,47738,47742,47748,47752],{"__ignoreMap":196},[200,47396,47397,47399,47401,47403,47405,47407,47409,47411,47413],{"class":202,"line":203},[200,47398,10416],{"class":210},[200,47400,22507],{"class":206},[200,47402,36080],{"class":313},[200,47404,36083],{"class":313},[200,47406,4280],{"class":210},[200,47408,1093],{"class":210},[200,47410,29012],{"class":286},[200,47412,1093],{"class":210},[200,47414,10425],{"class":210},[200,47416,47417,47419,47422,47424,47426,47428],{"class":202,"line":214},[200,47418,10803],{"class":313},[200,47420,47421],{"class":317}," focusFirstError ",[200,47423,4280],{"class":210},[200,47425,13350],{"class":210},[200,47427,6313],{"class":313},[200,47429,318],{"class":210},[200,47431,47432,47434,47437,47439,47441,47443,47445,47447,47449,47452,47454],{"class":202,"line":16},[200,47433,13628],{"class":313},[200,47435,47436],{"class":317}," firstError",[200,47438,1096],{"class":210},[200,47440,21424],{"class":317},[200,47442,3975],{"class":210},[200,47444,21429],{"class":923},[200,47446,6268],{"class":206},[200,47448,1093],{"class":210},[200,47450,47451],{"class":286},"[data-error]",[200,47453,1093],{"class":210},[200,47455,4304],{"class":206},[200,47457,47458,47460,47462,47465,47467],{"class":202,"line":229},[200,47459,18891],{"class":1006},[200,47461,5253],{"class":206},[200,47463,47464],{"class":317},"firstError",[200,47466,10673],{"class":206},[200,47468,388],{"class":210},[200,47470,47471,47474,47476,47479],{"class":202,"line":237},[200,47472,47473],{"class":317}," firstError",[200,47475,3975],{"class":210},[200,47477,47478],{"class":923},"focus",[200,47480,8169],{"class":206},[200,47482,47483],{"class":202,"line":245},[200,47484,10383],{"class":210},[200,47486,47487],{"class":202,"line":253},[200,47488,529],{"class":210},[200,47490,47491],{"class":202,"line":261},[200,47492,376],{"emptyLinePlaceholder":375},[200,47494,47495],{"class":202,"line":269},[200,47496,47497],{"class":555},"// Trap focus in modals\n",[200,47499,47500,47502,47505,47507,47509,47512,47514,47517,47519,47522,47524,47526,47528,47530],{"class":202,"line":277},[200,47501,10803],{"class":313},[200,47503,47504],{"class":317}," useFocusTrap ",[200,47506,4280],{"class":210},[200,47508,5253],{"class":210},[200,47510,47511],{"class":1257},"element",[200,47513,283],{"class":210},[200,47515,47516],{"class":384}," Ref",[200,47518,10416],{"class":210},[200,47520,47521],{"class":384},"HTMLElement",[200,47523,10173],{"class":210},[200,47525,10631],{"class":384},[200,47527,38945],{"class":210},[200,47529,6313],{"class":313},[200,47531,318],{"class":210},[200,47533,47534,47536,47539,47541,47543,47545,47547,47549,47552],{"class":202,"line":417},[200,47535,13628],{"class":313},[200,47537,47538],{"class":317}," focusableElements",[200,47540,1096],{"class":210},[200,47542,21419],{"class":317},[200,47544,3975],{"class":210},[200,47546,14180],{"class":317},[200,47548,21448],{"class":210},[200,47550,47551],{"class":923},"querySelectorAll",[200,47553,6231],{"class":206},[200,47555,47556,47558,47561,47563],{"class":202,"line":422},[200,47557,9182],{"class":210},[200,47559,47560],{"class":286},"button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])",[200,47562,1983],{"class":210},[200,47564,2455],{"class":210},[200,47566,47567],{"class":202,"line":29},[200,47568,18821],{"class":206},[200,47570,47571],{"class":202,"line":445},[200,47572,376],{"emptyLinePlaceholder":375},[200,47574,47575,47577,47580,47582,47584,47586,47588,47590],{"class":202,"line":455},[200,47576,13628],{"class":313},[200,47578,47579],{"class":317}," firstElement",[200,47581,1096],{"class":210},[200,47583,47538],{"class":317},[200,47585,21448],{"class":210},[200,47587,6431],{"class":206},[200,47589,20921],{"class":326},[200,47591,883],{"class":206},[200,47593,47594,47596,47599,47601,47603,47605,47607,47610,47612,47614,47617,47619],{"class":202,"line":466},[200,47595,13628],{"class":313},[200,47597,47598],{"class":317}," lastElement",[200,47600,1096],{"class":210},[200,47602,47538],{"class":317},[200,47604,21448],{"class":210},[200,47606,6431],{"class":206},[200,47608,47609],{"class":317},"focusableElements",[200,47611,3975],{"class":210},[200,47613,17124],{"class":317},[200,47615,47616],{"class":210}," -",[200,47618,8419],{"class":326},[200,47620,883],{"class":206},[200,47622,47623],{"class":202,"line":482},[200,47624,376],{"emptyLinePlaceholder":375},[200,47626,47627,47629,47631,47633,47635,47637,47639,47641,47644,47646,47648,47650,47652,47654,47656],{"class":202,"line":493},[200,47628,21445],{"class":317},[200,47630,3975],{"class":210},[200,47632,14180],{"class":317},[200,47634,21448],{"class":210},[200,47636,21451],{"class":923},[200,47638,6268],{"class":206},[200,47640,1093],{"class":210},[200,47642,47643],{"class":286},"keydown",[200,47645,1093],{"class":210},[200,47647,1966],{"class":210},[200,47649,5253],{"class":210},[200,47651,6858],{"class":1257},[200,47653,5072],{"class":210},[200,47655,6313],{"class":313},[200,47657,318],{"class":210},[200,47659,47660,47662],{"class":202,"line":498},[200,47661,10663],{"class":1006},[200,47663,13356],{"class":206},[200,47665,47666,47669,47671,47673,47675,47677,47680,47682],{"class":202,"line":503},[200,47667,47668],{"class":317}," e",[200,47670,3975],{"class":210},[200,47672,8414],{"class":317},[200,47674,10842],{"class":210},[200,47676,1030],{"class":210},[200,47678,47679],{"class":286},"Tab",[200,47681,1093],{"class":210},[200,47683,17131],{"class":210},[200,47685,47686,47688,47690,47693],{"class":202,"line":515},[200,47687,47668],{"class":317},[200,47689,3975],{"class":210},[200,47691,47692],{"class":317},"shiftKey",[200,47694,17131],{"class":210},[200,47696,47697,47700,47702,47705,47707],{"class":202,"line":521},[200,47698,47699],{"class":317}," document",[200,47701,3975],{"class":210},[200,47703,47704],{"class":317},"activeElement",[200,47706,10842],{"class":210},[200,47708,47709],{"class":317}," firstElement\n",[200,47711,47712,47715],{"class":202,"line":526},[200,47713,47714],{"class":206}," ) ",[200,47716,388],{"class":210},[200,47718,47719,47721,47723,47725],{"class":202,"line":687},[200,47720,47668],{"class":317},[200,47722,3975],{"class":210},[200,47724,47281],{"class":923},[200,47726,8169],{"class":206},[200,47728,47729,47732,47734,47736],{"class":202,"line":693},[200,47730,47731],{"class":317}," lastElement",[200,47733,21448],{"class":210},[200,47735,47478],{"class":923},[200,47737,8169],{"class":206},[200,47739,47740],{"class":202,"line":699},[200,47741,414],{"class":210},[200,47743,47744,47746],{"class":202,"line":704},[200,47745,13682],{"class":210},[200,47747,4304],{"class":206},[200,47749,47750],{"class":202,"line":709},[200,47751,529],{"class":210},[200,47753,47754,47756,47758],{"class":202,"line":717},[200,47755,22205],{"class":210},[200,47757,22507],{"class":206},[200,47759,10425],{"class":210},[100,47761,47763],{"id":47762},"implementing-aria-attributes","Implementing ARIA Attributes",[123,47765,47767],{"id":47766},"_1-aria-labels","1. ARIA Labels",[191,47769,47771],{"className":36062,"code":47770,"language":36064,"meta":196,"style":196},"\n",[118,47772,47773,47781,47786,47806,47826,47834,47838,47843,47884,47911],{"__ignoreMap":196},[200,47774,47775,47777,47779],{"class":202,"line":203},[200,47776,10416],{"class":210},[200,47778,22112],{"class":206},[200,47780,10425],{"class":210},[200,47782,47783],{"class":202,"line":214},[200,47784,47785],{"class":555}," \n",[200,47787,47788,47790,47792,47795,47797,47799,47802,47804],{"class":202,"line":16},[200,47789,22119],{"class":210},[200,47791,42028],{"class":206},[200,47793,47794],{"class":313}," aria-label",[200,47796,4280],{"class":210},[200,47798,1093],{"class":210},[200,47800,47801],{"class":286},"Close modal",[200,47803,1093],{"class":210},[200,47805,10425],{"class":210},[200,47807,47808,47810,47813,47815,47817,47819,47822,47824],{"class":202,"line":229},[200,47809,20788],{"class":210},[200,47811,47812],{"class":206},"Icon",[200,47814,24213],{"class":313},[200,47816,4280],{"class":210},[200,47818,1093],{"class":210},[200,47820,47821],{"class":286},"close",[200,47823,1093],{"class":210},[200,47825,42021],{"class":210},[200,47827,47828,47830,47832],{"class":202,"line":237},[200,47829,22139],{"class":210},[200,47831,42028],{"class":206},[200,47833,10425],{"class":210},[200,47835,47836],{"class":202,"line":245},[200,47837,376],{"emptyLinePlaceholder":375},[200,47839,47840],{"class":202,"line":253},[200,47841,47842],{"class":555}," \n",[200,47844,47845,47847,47849,47851,47853,47855,47857,47859,47861,47863,47865,47868,47870,47873,47875,47877,47880,47882],{"class":202,"line":261},[200,47846,22119],{"class":210},[200,47848,6428],{"class":206},[200,47850,33797],{"class":313},[200,47852,4280],{"class":210},[200,47854,1093],{"class":210},[200,47856,5853],{"class":286},[200,47858,1093],{"class":210},[200,47860,47794],{"class":313},[200,47862,4280],{"class":210},[200,47864,1093],{"class":210},[200,47866,47867],{"class":286},"Search",[200,47869,1093],{"class":210},[200,47871,47872],{"class":313}," aria-describedby",[200,47874,4280],{"class":210},[200,47876,1093],{"class":210},[200,47878,47879],{"class":286},"search-help",[200,47881,1093],{"class":210},[200,47883,42021],{"class":210},[200,47885,47886,47888,47890,47892,47894,47896,47898,47900,47902,47905,47907,47909],{"class":202,"line":269},[200,47887,22119],{"class":210},[200,47889,104],{"class":206},[200,47891,17297],{"class":313},[200,47893,4280],{"class":210},[200,47895,1093],{"class":210},[200,47897,47879],{"class":286},[200,47899,1093],{"class":210},[200,47901,4335],{"class":210},[200,47903,47904],{"class":317},"Enter keywords to search",[200,47906,22205],{"class":210},[200,47908,104],{"class":206},[200,47910,10425],{"class":210},[200,47912,47913,47915,47917],{"class":202,"line":277},[200,47914,22205],{"class":210},[200,47916,22112],{"class":206},[200,47918,10425],{"class":210},[123,47920,47922],{"id":47921},"_2-live-regions","2. Live Regions",[191,47924,47926],{"className":36062,"code":47925,"language":36064,"meta":196,"style":196},"\n",[118,47927,47928,47936,47941,47983,47988,47996,48000,48005,48035,48040,48048],{"__ignoreMap":196},[200,47929,47930,47932,47934],{"class":202,"line":203},[200,47931,10416],{"class":210},[200,47933,22112],{"class":206},[200,47935,10425],{"class":210},[200,47937,47938],{"class":202,"line":214},[200,47939,47940],{"class":555}," \n",[200,47942,47943,47945,47947,47950,47952,47954,47956,47958,47961,47963,47965,47968,47970,47973,47975,47977,47979,47981],{"class":202,"line":16},[200,47944,22119],{"class":210},[200,47946,20182],{"class":206},[200,47948,47949],{"class":313}," role",[200,47951,4280],{"class":210},[200,47953,1093],{"class":210},[200,47955,6308],{"class":286},[200,47957,1093],{"class":210},[200,47959,47960],{"class":313}," aria-live",[200,47962,4280],{"class":210},[200,47964,1093],{"class":210},[200,47966,47967],{"class":286},"polite",[200,47969,1093],{"class":210},[200,47971,47972],{"class":313}," aria-atomic",[200,47974,4280],{"class":210},[200,47976,1093],{"class":210},[200,47978,1101],{"class":286},[200,47980,1093],{"class":210},[200,47982,10425],{"class":210},[200,47984,47985],{"class":202,"line":229},[200,47986,47987],{"class":317}," {{ notification }}\n",[200,47989,47990,47992,47994],{"class":202,"line":237},[200,47991,22139],{"class":210},[200,47993,20182],{"class":206},[200,47995,10425],{"class":210},[200,47997,47998],{"class":202,"line":245},[200,47999,376],{"emptyLinePlaceholder":375},[200,48001,48002],{"class":202,"line":253},[200,48003,48004],{"class":555}," \n",[200,48006,48007,48009,48011,48013,48015,48017,48020,48022,48024,48026,48028,48031,48033],{"class":202,"line":261},[200,48008,22119],{"class":210},[200,48010,20182],{"class":206},[200,48012,47949],{"class":313},[200,48014,4280],{"class":210},[200,48016,1093],{"class":210},[200,48018,48019],{"class":286},"alert",[200,48021,1093],{"class":210},[200,48023,47960],{"class":313},[200,48025,4280],{"class":210},[200,48027,1093],{"class":210},[200,48029,48030],{"class":286},"assertive",[200,48032,1093],{"class":210},[200,48034,10425],{"class":210},[200,48036,48037],{"class":202,"line":269},[200,48038,48039],{"class":317}," {{ errorMessage }}\n",[200,48041,48042,48044,48046],{"class":202,"line":277},[200,48043,22139],{"class":210},[200,48045,20182],{"class":206},[200,48047,10425],{"class":210},[200,48049,48050,48052,48054],{"class":202,"line":417},[200,48051,22205],{"class":210},[200,48053,22112],{"class":206},[200,48055,10425],{"class":210},[123,48057,48059],{"id":48058},"_3-complex-widgets","3. Complex Widgets",[191,48061,48063],{"className":36062,"code":48062,"language":36064,"meta":196,"style":196},"\n\n\n",[118,48064,48065,48085,48098,48139,48177,48181,48185,48209,48241,48259,48265,48269,48277,48281,48289,48308,48314,48328,48342,48355,48369,48383,48397,48411,48416,48421,48429,48437,48441,48448,48461,48474,48488,48501,48514,48527,48531,48549,48557],{"__ignoreMap":196},[200,48066,48067,48069,48071,48073,48075,48077,48079,48081,48083],{"class":202,"line":203},[200,48068,10416],{"class":210},[200,48070,22507],{"class":206},[200,48072,36080],{"class":313},[200,48074,36083],{"class":313},[200,48076,4280],{"class":210},[200,48078,1093],{"class":210},[200,48080,29012],{"class":286},[200,48082,1093],{"class":210},[200,48084,10425],{"class":210},[200,48086,48087,48089,48092,48094,48096],{"class":202,"line":214},[200,48088,10803],{"class":313},[200,48090,48091],{"class":317}," tabs ",[200,48093,4280],{"class":210},[200,48095,13967],{"class":923},[200,48097,6690],{"class":317},[200,48099,48100,48103,48105,48107,48109,48112,48114,48116,48119,48121,48123,48126,48128,48130,48133,48135,48137],{"class":202,"line":16},[200,48101,48102],{"class":210}," {",[200,48104,17297],{"class":206},[200,48106,283],{"class":210},[200,48108,1030],{"class":210},[200,48110,48111],{"class":286},"tab1",[200,48113,1093],{"class":210},[200,48115,1966],{"class":210},[200,48117,48118],{"class":206}," label",[200,48120,283],{"class":210},[200,48122,1030],{"class":210},[200,48124,48125],{"class":286},"Tab 1",[200,48127,1093],{"class":210},[200,48129,1966],{"class":210},[200,48131,48132],{"class":206}," active",[200,48134,283],{"class":210},[200,48136,21477],{"class":5604},[200,48138,21814],{"class":210},[200,48140,48141,48143,48145,48147,48149,48152,48154,48156,48158,48160,48162,48165,48167,48169,48171,48173,48175],{"class":202,"line":229},[200,48142,48102],{"class":210},[200,48144,17297],{"class":206},[200,48146,283],{"class":210},[200,48148,1030],{"class":210},[200,48150,48151],{"class":286},"tab2",[200,48153,1093],{"class":210},[200,48155,1966],{"class":210},[200,48157,48118],{"class":206},[200,48159,283],{"class":210},[200,48161,1030],{"class":210},[200,48163,48164],{"class":286},"Tab 2",[200,48166,1093],{"class":210},[200,48168,1966],{"class":210},[200,48170,48132],{"class":206},[200,48172,283],{"class":210},[200,48174,13675],{"class":5604},[200,48176,21814],{"class":210},[200,48178,48179],{"class":202,"line":237},[200,48180,9054],{"class":317},[200,48182,48183],{"class":202,"line":245},[200,48184,376],{"emptyLinePlaceholder":375},[200,48186,48187,48189,48192,48194,48196,48199,48201,48203,48205,48207],{"class":202,"line":253},[200,48188,10803],{"class":313},[200,48190,48191],{"class":317}," selectTab ",[200,48193,4280],{"class":210},[200,48195,5253],{"class":210},[200,48197,48198],{"class":1257},"index",[200,48200,283],{"class":210},[200,48202,10455],{"class":384},[200,48204,5072],{"class":210},[200,48206,6313],{"class":313},[200,48208,318],{"class":210},[200,48210,48211,48214,48216,48218,48220,48223,48225,48227,48230,48232,48235,48237,48239],{"class":202,"line":261},[200,48212,48213],{"class":317}," tabs",[200,48215,3975],{"class":210},[200,48217,14180],{"class":317},[200,48219,3975],{"class":210},[200,48221,48222],{"class":923},"forEach",[200,48224,6268],{"class":206},[200,48226,6268],{"class":210},[200,48228,48229],{"class":1257},"tab",[200,48231,1966],{"class":210},[200,48233,48234],{"class":1257}," i",[200,48236,5072],{"class":210},[200,48238,6313],{"class":313},[200,48240,318],{"class":210},[200,48242,48243,48246,48248,48250,48252,48254,48256],{"class":202,"line":269},[200,48244,48245],{"class":317}," tab",[200,48247,3975],{"class":210},[200,48249,12965],{"class":317},[200,48251,1096],{"class":210},[200,48253,48234],{"class":317},[200,48255,10842],{"class":210},[200,48257,48258],{"class":317}," index\n",[200,48260,48261,48263],{"class":202,"line":277},[200,48262,13682],{"class":210},[200,48264,4304],{"class":206},[200,48266,48267],{"class":202,"line":417},[200,48268,529],{"class":210},[200,48270,48271,48273,48275],{"class":202,"line":422},[200,48272,22205],{"class":210},[200,48274,22507],{"class":206},[200,48276,10425],{"class":210},[200,48278,48279],{"class":202,"line":29},[200,48280,376],{"emptyLinePlaceholder":375},[200,48282,48283,48285,48287],{"class":202,"line":445},[200,48284,10416],{"class":210},[200,48286,22112],{"class":206},[200,48288,10425],{"class":210},[200,48290,48291,48293,48295,48297,48299,48301,48304,48306],{"class":202,"line":455},[200,48292,22119],{"class":210},[200,48294,20182],{"class":206},[200,48296,47949],{"class":313},[200,48298,4280],{"class":210},[200,48300,1093],{"class":210},[200,48302,48303],{"class":286},"tablist",[200,48305,1093],{"class":210},[200,48307,10425],{"class":210},[200,48309,48310,48312],{"class":202,"line":466},[200,48311,20788],{"class":210},[200,48313,41958],{"class":206},[200,48315,48316,48319,48321,48323,48326],{"class":202,"line":482},[200,48317,48318],{"class":313}," v-for",[200,48320,4280],{"class":210},[200,48322,1093],{"class":210},[200,48324,48325],{"class":286},"(tab, index) in tabs",[200,48327,1036],{"class":210},[200,48329,48330,48333,48335,48337,48340],{"class":202,"line":493},[200,48331,48332],{"class":313}," :key",[200,48334,4280],{"class":210},[200,48336,1093],{"class":210},[200,48338,48339],{"class":286},"tab.id",[200,48341,1036],{"class":210},[200,48343,48344,48347,48349,48351,48353],{"class":202,"line":498},[200,48345,48346],{"class":313}," role",[200,48348,4280],{"class":210},[200,48350,1093],{"class":210},[200,48352,48229],{"class":286},[200,48354,1036],{"class":210},[200,48356,48357,48360,48362,48364,48367],{"class":202,"line":503},[200,48358,48359],{"class":313}," :aria-selected",[200,48361,4280],{"class":210},[200,48363,1093],{"class":210},[200,48365,48366],{"class":286},"tab.active",[200,48368,1036],{"class":210},[200,48370,48371,48374,48376,48378,48381],{"class":202,"line":515},[200,48372,48373],{"class":313}," :aria-controls",[200,48375,4280],{"class":210},[200,48377,1093],{"class":210},[200,48379,48380],{"class":286},"`panel-${index}`",[200,48382,1036],{"class":210},[200,48384,48385,48388,48390,48392,48395],{"class":202,"line":521},[200,48386,48387],{"class":313}," :id",[200,48389,4280],{"class":210},[200,48391,1093],{"class":210},[200,48393,48394],{"class":286},"`tab-${index}`",[200,48396,1036],{"class":210},[200,48398,48399,48402,48404,48406,48409],{"class":202,"line":526},[200,48400,48401],{"class":313}," @click",[200,48403,4280],{"class":210},[200,48405,1093],{"class":210},[200,48407,48408],{"class":286},"selectTab(index)",[200,48410,1036],{"class":210},[200,48412,48413],{"class":202,"line":687},[200,48414,48415],{"class":210}," >\n",[200,48417,48418],{"class":202,"line":693},[200,48419,48420],{"class":317}," {{ tab.label }}\n",[200,48422,48423,48425,48427],{"class":202,"line":699},[200,48424,20875],{"class":210},[200,48426,42028],{"class":206},[200,48428,10425],{"class":210},[200,48430,48431,48433,48435],{"class":202,"line":704},[200,48432,22139],{"class":210},[200,48434,20182],{"class":206},[200,48436,10425],{"class":210},[200,48438,48439],{"class":202,"line":709},[200,48440,376],{"emptyLinePlaceholder":375},[200,48442,48443,48445],{"class":202,"line":717},[200,48444,22119],{"class":210},[200,48446,48447],{"class":206},"div\n",[200,48449,48450,48453,48455,48457,48459],{"class":202,"line":725},[200,48451,48452],{"class":313}," v-for",[200,48454,4280],{"class":210},[200,48456,1093],{"class":210},[200,48458,48325],{"class":286},[200,48460,1036],{"class":210},[200,48462,48463,48466,48468,48470,48472],{"class":202,"line":730},[200,48464,48465],{"class":313}," :key",[200,48467,4280],{"class":210},[200,48469,1093],{"class":210},[200,48471,48339],{"class":286},[200,48473,1036],{"class":210},[200,48475,48476,48479,48481,48483,48486],{"class":202,"line":744},[200,48477,48478],{"class":313}," role",[200,48480,4280],{"class":210},[200,48482,1093],{"class":210},[200,48484,48485],{"class":286},"tabpanel",[200,48487,1036],{"class":210},[200,48489,48490,48493,48495,48497,48499],{"class":202,"line":749},[200,48491,48492],{"class":313}," :id",[200,48494,4280],{"class":210},[200,48496,1093],{"class":210},[200,48498,48380],{"class":286},[200,48500,1036],{"class":210},[200,48502,48503,48506,48508,48510,48512],{"class":202,"line":757},[200,48504,48505],{"class":313}," :aria-labelledby",[200,48507,4280],{"class":210},[200,48509,1093],{"class":210},[200,48511,48394],{"class":286},[200,48513,1036],{"class":210},[200,48515,48516,48519,48521,48523,48525],{"class":202,"line":765},[200,48517,48518],{"class":313}," v-show",[200,48520,4280],{"class":210},[200,48522,1093],{"class":210},[200,48524,48366],{"class":286},[200,48526,1036],{"class":210},[200,48528,48529],{"class":202,"line":770},[200,48530,42011],{"class":210},[200,48532,48533,48535,48537,48539,48541,48543,48545,48547],{"class":202,"line":777},[200,48534,20788],{"class":210},[200,48536,42018],{"class":206},[200,48538,42796],{"class":313},[200,48540,4280],{"class":210},[200,48542,1093],{"class":210},[200,48544,48380],{"class":286},[200,48546,1093],{"class":210},[200,48548,42021],{"class":210},[200,48550,48551,48553,48555],{"class":202,"line":782},[200,48552,22139],{"class":210},[200,48554,20182],{"class":206},[200,48556,10425],{"class":210},[200,48558,48559,48561,48563],{"class":202,"line":790},[200,48560,22205],{"class":210},[200,48562,22112],{"class":206},[200,48564,10425],{"class":210},[100,48566,48568],{"id":48567},"color-and-contrast","Color and Contrast",[123,48570,48572],{"id":48571},"_1-minimum-contrast-ratios","1. Minimum Contrast Ratios",[191,48574,48576],{"className":21546,"code":48575,"language":21548,"meta":196,"style":196},"/* WCAG 2.2 Requirements */\n.text-normal {\n color: #1a1a1a; /* 4.5:1 minimum on white */\n}\n\n.text-large {\n color: #595959; /* 3:1 minimum for large text (18pt+) */\n}\n\n.ui-components {\n border-color: #767676; /* 3:1 minimum */\n}\n",[118,48577,48578,48583,48592,48608,48612,48616,48625,48641,48645,48649,48658,48675],{"__ignoreMap":196},[200,48579,48580],{"class":202,"line":203},[200,48581,48582],{"class":555},"/* WCAG 2.2 Requirements */\n",[200,48584,48585,48587,48590],{"class":202,"line":214},[200,48586,3975],{"class":210},[200,48588,48589],{"class":384},"text-normal",[200,48591,318],{"class":210},[200,48593,48594,48596,48598,48600,48603,48605],{"class":202,"line":16},[200,48595,44089],{"class":21569},[200,48597,283],{"class":210},[200,48599,21592],{"class":210},[200,48601,48602],{"class":317},"1a1a1a",[200,48604,1019],{"class":210},[200,48606,48607],{"class":555}," /* 4.5:1 minimum on white */\n",[200,48609,48610],{"class":202,"line":229},[200,48611,529],{"class":210},[200,48613,48614],{"class":202,"line":237},[200,48615,376],{"emptyLinePlaceholder":375},[200,48617,48618,48620,48623],{"class":202,"line":245},[200,48619,3975],{"class":210},[200,48621,48622],{"class":384},"text-large",[200,48624,318],{"class":210},[200,48626,48627,48629,48631,48633,48636,48638],{"class":202,"line":253},[200,48628,44089],{"class":21569},[200,48630,283],{"class":210},[200,48632,21592],{"class":210},[200,48634,48635],{"class":317},"595959",[200,48637,1019],{"class":210},[200,48639,48640],{"class":555}," /* 3:1 minimum for large text (18pt+) */\n",[200,48642,48643],{"class":202,"line":261},[200,48644,529],{"class":210},[200,48646,48647],{"class":202,"line":269},[200,48648,376],{"emptyLinePlaceholder":375},[200,48650,48651,48653,48656],{"class":202,"line":277},[200,48652,3975],{"class":210},[200,48654,48655],{"class":384},"ui-components",[200,48657,318],{"class":210},[200,48659,48660,48663,48665,48667,48670,48672],{"class":202,"line":417},[200,48661,48662],{"class":21569}," border-color",[200,48664,283],{"class":210},[200,48666,21592],{"class":210},[200,48668,48669],{"class":317},"767676",[200,48671,1019],{"class":210},[200,48673,48674],{"class":555}," /* 3:1 minimum */\n",[200,48676,48677],{"class":202,"line":422},[200,48678,529],{"class":210},[123,48680,48682],{"id":48681},"_2-dont-rely-on-color-alone","2. Don't Rely on Color Alone",[191,48684,48686],{"className":36062,"code":48685,"language":36064,"meta":196,"style":196},"\nError\n\n\n\n \n Error: Invalid input\n\n",[118,48687,48688,48693,48721,48725,48730,48749,48754,48765],{"__ignoreMap":196},[200,48689,48690],{"class":202,"line":203},[200,48691,48692],{"class":555},"\n",[200,48694,48695,48697,48699,48701,48703,48705,48708,48710,48712,48715,48717,48719],{"class":202,"line":214},[200,48696,10416],{"class":210},[200,48698,200],{"class":206},[200,48700,36290],{"class":313},[200,48702,4280],{"class":210},[200,48704,1093],{"class":210},[200,48706,48707],{"class":286},"text-red",[200,48709,1093],{"class":210},[200,48711,4335],{"class":210},[200,48713,48714],{"class":317},"Error",[200,48716,22205],{"class":210},[200,48718,200],{"class":206},[200,48720,10425],{"class":210},[200,48722,48723],{"class":202,"line":16},[200,48724,376],{"emptyLinePlaceholder":375},[200,48726,48727],{"class":202,"line":229},[200,48728,48729],{"class":555},"\n",[200,48731,48732,48734,48736,48738,48740,48742,48745,48747],{"class":202,"line":237},[200,48733,10416],{"class":210},[200,48735,200],{"class":206},[200,48737,36290],{"class":313},[200,48739,4280],{"class":210},[200,48741,1093],{"class":210},[200,48743,48744],{"class":286},"flex items-center gap-2",[200,48746,1093],{"class":210},[200,48748,10425],{"class":210},[200,48750,48751],{"class":202,"line":245},[200,48752,48753],{"class":317}," \n",[200,48755,48756,48759,48761,48763],{"class":202,"line":253},[200,48757,48758],{"class":317}," Error: Invalid input",[200,48760,22205],{"class":210},[200,48762,200],{"class":206},[200,48764,10425],{"class":210},[200,48766,48767,48769,48771,48773],{"class":202,"line":261},[200,48768,10416],{"class":210},[200,48770,22977],{"class":317},[200,48772,200],{"class":206},[200,48774,10425],{"class":210},[123,48776,48778],{"id":48777},"_3-dark-mode-accessibility","3. Dark Mode Accessibility",[191,48780,48782],{"className":21546,"code":48781,"language":21548,"meta":196,"style":196},"/* Ensure contrast in both modes */\n:root {\n --text-primary: #1a1a1a;\n --background: #ffffff;\n}\n\n.dark {\n --text-primary: #f5f5f5;\n --background: #1a1a1a;\n}\n\n/* Test contrast ratios */\n.text {\n color: var(--text-primary);\n background: var(--background);\n /* Ensure 4.5:1 ratio */\n}\n",[118,48783,48784,48789,48797,48810,48823,48827,48831,48839,48852,48864,48868,48872,48877,48885,48900,48915,48920],{"__ignoreMap":196},[200,48785,48786],{"class":202,"line":203},[200,48787,48788],{"class":555},"/* Ensure contrast in both modes */\n",[200,48790,48791,48793,48795],{"class":202,"line":214},[200,48792,283],{"class":210},[200,48794,2522],{"class":313},[200,48796,318],{"class":210},[200,48798,48799,48802,48804,48806,48808],{"class":202,"line":16},[200,48800,48801],{"class":317}," --text-primary",[200,48803,283],{"class":210},[200,48805,21592],{"class":210},[200,48807,48602],{"class":317},[200,48809,330],{"class":210},[200,48811,48812,48815,48817,48819,48821],{"class":202,"line":229},[200,48813,48814],{"class":317}," --background",[200,48816,283],{"class":210},[200,48818,21592],{"class":210},[200,48820,43645],{"class":317},[200,48822,330],{"class":210},[200,48824,48825],{"class":202,"line":237},[200,48826,529],{"class":210},[200,48828,48829],{"class":202,"line":245},[200,48830,376],{"emptyLinePlaceholder":375},[200,48832,48833,48835,48837],{"class":202,"line":253},[200,48834,3975],{"class":210},[200,48836,42304],{"class":384},[200,48838,318],{"class":210},[200,48840,48841,48843,48845,48847,48850],{"class":202,"line":261},[200,48842,48801],{"class":317},[200,48844,283],{"class":210},[200,48846,21592],{"class":210},[200,48848,48849],{"class":317},"f5f5f5",[200,48851,330],{"class":210},[200,48853,48854,48856,48858,48860,48862],{"class":202,"line":269},[200,48855,48814],{"class":317},[200,48857,283],{"class":210},[200,48859,21592],{"class":210},[200,48861,48602],{"class":317},[200,48863,330],{"class":210},[200,48865,48866],{"class":202,"line":277},[200,48867,529],{"class":210},[200,48869,48870],{"class":202,"line":417},[200,48871,376],{"emptyLinePlaceholder":375},[200,48873,48874],{"class":202,"line":422},[200,48875,48876],{"class":555},"/* Test contrast ratios */\n",[200,48878,48879,48881,48883],{"class":202,"line":29},[200,48880,3975],{"class":210},[200,48882,5853],{"class":384},[200,48884,318],{"class":210},[200,48886,48887,48889,48891,48893,48895,48898],{"class":202,"line":445},[200,48888,44089],{"class":21569},[200,48890,283],{"class":210},[200,48892,41282],{"class":923},[200,48894,6268],{"class":210},[200,48896,48897],{"class":317},"--text-primary",[200,48899,6804],{"class":210},[200,48901,48902,48904,48906,48908,48910,48913],{"class":202,"line":455},[200,48903,21587],{"class":21569},[200,48905,283],{"class":210},[200,48907,41282],{"class":923},[200,48909,6268],{"class":210},[200,48911,48912],{"class":317},"--background",[200,48914,6804],{"class":210},[200,48916,48917],{"class":202,"line":466},[200,48918,48919],{"class":555}," /* Ensure 4.5:1 ratio */\n",[200,48921,48922],{"class":202,"line":482},[200,48923,529],{"class":210},[100,48925,48927],{"id":48926},"form-accessibility","Form Accessibility",[123,48929,48931],{"id":48930},"_1-labels-and-error-messages","1. Labels and Error Messages",[191,48933,48935],{"className":36062,"code":48934,"language":36064,"meta":196,"style":196},"\n",[118,48936,48937,48945,48954,48973,48993,48998,49037,49045,49049,49056,49069,49082,49087,49100,49114,49128,49133,49137,49176,49181,49189,49197,49205],{"__ignoreMap":196},[200,48938,48939,48941,48943],{"class":202,"line":203},[200,48940,10416],{"class":210},[200,48942,22112],{"class":206},[200,48944,10425],{"class":210},[200,48946,48947,48949,48952],{"class":202,"line":214},[200,48948,22119],{"class":210},[200,48950,48951],{"class":206},"form",[200,48953,10425],{"class":210},[200,48955,48956,48958,48960,48962,48964,48966,48969,48971],{"class":202,"line":16},[200,48957,20788],{"class":210},[200,48959,20182],{"class":206},[200,48961,36290],{"class":313},[200,48963,4280],{"class":210},[200,48965,1093],{"class":210},[200,48967,48968],{"class":286},"form-group",[200,48970,1093],{"class":210},[200,48972,10425],{"class":210},[200,48974,48975,48977,48980,48983,48985,48987,48989,48991],{"class":202,"line":229},[200,48976,22179],{"class":210},[200,48978,48979],{"class":206},"label",[200,48981,48982],{"class":313}," for",[200,48984,4280],{"class":210},[200,48986,1093],{"class":210},[200,48988,33653],{"class":286},[200,48990,1093],{"class":210},[200,48992,10425],{"class":210},[200,48994,48995],{"class":202,"line":237},[200,48996,48997],{"class":317}," Email Address\n",[200,48999,49000,49002,49004,49006,49008,49010,49013,49015,49018,49020,49022,49024,49026,49028,49031,49033,49035],{"class":202,"line":245},[200,49001,20817],{"class":210},[200,49003,200],{"class":206},[200,49005,36290],{"class":313},[200,49007,4280],{"class":210},[200,49009,1093],{"class":210},[200,49011,49012],{"class":286},"required",[200,49014,1093],{"class":210},[200,49016,49017],{"class":313}," aria-hidden",[200,49019,4280],{"class":210},[200,49021,1093],{"class":210},[200,49023,1101],{"class":286},[200,49025,1093],{"class":210},[200,49027,4335],{"class":210},[200,49029,49030],{"class":317},"*",[200,49032,22205],{"class":210},[200,49034,200],{"class":206},[200,49036,10425],{"class":210},[200,49038,49039,49041,49043],{"class":202,"line":253},[200,49040,43775],{"class":210},[200,49042,48979],{"class":206},[200,49044,10425],{"class":210},[200,49046,49047],{"class":202,"line":261},[200,49048,376],{"emptyLinePlaceholder":375},[200,49050,49051,49053],{"class":202,"line":269},[200,49052,22179],{"class":210},[200,49054,49055],{"class":206},"input\n",[200,49057,49058,49061,49063,49065,49067],{"class":202,"line":277},[200,49059,49060],{"class":313}," id",[200,49062,4280],{"class":210},[200,49064,1093],{"class":210},[200,49066,33653],{"class":286},[200,49068,1036],{"class":210},[200,49070,49071,49074,49076,49078,49080],{"class":202,"line":417},[200,49072,49073],{"class":313}," type",[200,49075,4280],{"class":210},[200,49077,1093],{"class":210},[200,49079,33653],{"class":286},[200,49081,1036],{"class":210},[200,49083,49084],{"class":202,"line":422},[200,49085,49086],{"class":313}," required\n",[200,49088,49089,49092,49094,49096,49098],{"class":202,"line":29},[200,49090,49091],{"class":313}," aria-required",[200,49093,4280],{"class":210},[200,49095,1093],{"class":210},[200,49097,1101],{"class":286},[200,49099,1036],{"class":210},[200,49101,49102,49105,49107,49109,49112],{"class":202,"line":445},[200,49103,49104],{"class":313}," aria-invalid",[200,49106,4280],{"class":210},[200,49108,1093],{"class":210},[200,49110,49111],{"class":286},"false",[200,49113,1036],{"class":210},[200,49115,49116,49119,49121,49123,49126],{"class":202,"line":455},[200,49117,49118],{"class":313}," aria-describedby",[200,49120,4280],{"class":210},[200,49122,1093],{"class":210},[200,49124,49125],{"class":286},"email-error",[200,49127,1036],{"class":210},[200,49129,49130],{"class":202,"line":466},[200,49131,49132],{"class":210}," />\n",[200,49134,49135],{"class":202,"line":482},[200,49136,376],{"emptyLinePlaceholder":375},[200,49138,49139,49141,49143,49145,49147,49149,49151,49153,49155,49157,49159,49161,49163,49165,49167,49169,49172,49174],{"class":202,"line":493},[200,49140,22179],{"class":210},[200,49142,104],{"class":206},[200,49144,17297],{"class":313},[200,49146,4280],{"class":210},[200,49148,1093],{"class":210},[200,49150,49125],{"class":286},[200,49152,1093],{"class":210},[200,49154,47949],{"class":313},[200,49156,4280],{"class":210},[200,49158,1093],{"class":210},[200,49160,48019],{"class":286},[200,49162,1093],{"class":210},[200,49164,36290],{"class":313},[200,49166,4280],{"class":210},[200,49168,1093],{"class":210},[200,49170,49171],{"class":286},"error-message",[200,49173,1093],{"class":210},[200,49175,10425],{"class":210},[200,49177,49178],{"class":202,"line":498},[200,49179,49180],{"class":317}," Please enter a valid email\n",[200,49182,49183,49185,49187],{"class":202,"line":503},[200,49184,43775],{"class":210},[200,49186,104],{"class":206},[200,49188,10425],{"class":210},[200,49190,49191,49193,49195],{"class":202,"line":515},[200,49192,20875],{"class":210},[200,49194,20182],{"class":206},[200,49196,10425],{"class":210},[200,49198,49199,49201,49203],{"class":202,"line":521},[200,49200,22139],{"class":210},[200,49202,48951],{"class":206},[200,49204,10425],{"class":210},[200,49206,49207,49209,49211],{"class":202,"line":526},[200,49208,22205],{"class":210},[200,49210,22112],{"class":206},[200,49212,10425],{"class":210},[123,49214,49216],{"id":49215},"_2-fieldsets-and-legends","2. Fieldsets and Legends",[191,49218,49220],{"className":36062,"code":49219,"language":36064,"meta":196,"style":196},"\n",[118,49221,49222,49230,49239,49257,49261,49269,49297,49325,49333,49337,49345,49373,49401,49409,49417],{"__ignoreMap":196},[200,49223,49224,49226,49228],{"class":202,"line":203},[200,49225,10416],{"class":210},[200,49227,22112],{"class":206},[200,49229,10425],{"class":210},[200,49231,49232,49234,49237],{"class":202,"line":214},[200,49233,22119],{"class":210},[200,49235,49236],{"class":206},"fieldset",[200,49238,10425],{"class":210},[200,49240,49241,49243,49246,49248,49251,49253,49255],{"class":202,"line":16},[200,49242,20788],{"class":210},[200,49244,49245],{"class":206},"legend",[200,49247,4335],{"class":210},[200,49249,49250],{"class":317},"Shipping Address",[200,49252,22205],{"class":210},[200,49254,49245],{"class":206},[200,49256,10425],{"class":210},[200,49258,49259],{"class":202,"line":229},[200,49260,376],{"emptyLinePlaceholder":375},[200,49262,49263,49265,49267],{"class":202,"line":237},[200,49264,20788],{"class":210},[200,49266,20182],{"class":206},[200,49268,10425],{"class":210},[200,49270,49271,49273,49275,49277,49279,49281,49284,49286,49288,49291,49293,49295],{"class":202,"line":245},[200,49272,22179],{"class":210},[200,49274,48979],{"class":206},[200,49276,48982],{"class":313},[200,49278,4280],{"class":210},[200,49280,1093],{"class":210},[200,49282,49283],{"class":286},"street",[200,49285,1093],{"class":210},[200,49287,4335],{"class":210},[200,49289,49290],{"class":317},"Street",[200,49292,22205],{"class":210},[200,49294,48979],{"class":206},[200,49296,10425],{"class":210},[200,49298,49299,49301,49303,49305,49307,49309,49311,49313,49315,49317,49319,49321,49323],{"class":202,"line":253},[200,49300,22179],{"class":210},[200,49302,6428],{"class":206},[200,49304,17297],{"class":313},[200,49306,4280],{"class":210},[200,49308,1093],{"class":210},[200,49310,49283],{"class":286},[200,49312,1093],{"class":210},[200,49314,33797],{"class":313},[200,49316,4280],{"class":210},[200,49318,1093],{"class":210},[200,49320,5853],{"class":286},[200,49322,1093],{"class":210},[200,49324,42021],{"class":210},[200,49326,49327,49329,49331],{"class":202,"line":261},[200,49328,20875],{"class":210},[200,49330,20182],{"class":206},[200,49332,10425],{"class":210},[200,49334,49335],{"class":202,"line":269},[200,49336,376],{"emptyLinePlaceholder":375},[200,49338,49339,49341,49343],{"class":202,"line":277},[200,49340,20788],{"class":210},[200,49342,20182],{"class":206},[200,49344,10425],{"class":210},[200,49346,49347,49349,49351,49353,49355,49357,49360,49362,49364,49367,49369,49371],{"class":202,"line":417},[200,49348,22179],{"class":210},[200,49350,48979],{"class":206},[200,49352,48982],{"class":313},[200,49354,4280],{"class":210},[200,49356,1093],{"class":210},[200,49358,49359],{"class":286},"city",[200,49361,1093],{"class":210},[200,49363,4335],{"class":210},[200,49365,49366],{"class":317},"City",[200,49368,22205],{"class":210},[200,49370,48979],{"class":206},[200,49372,10425],{"class":210},[200,49374,49375,49377,49379,49381,49383,49385,49387,49389,49391,49393,49395,49397,49399],{"class":202,"line":422},[200,49376,22179],{"class":210},[200,49378,6428],{"class":206},[200,49380,17297],{"class":313},[200,49382,4280],{"class":210},[200,49384,1093],{"class":210},[200,49386,49359],{"class":286},[200,49388,1093],{"class":210},[200,49390,33797],{"class":313},[200,49392,4280],{"class":210},[200,49394,1093],{"class":210},[200,49396,5853],{"class":286},[200,49398,1093],{"class":210},[200,49400,42021],{"class":210},[200,49402,49403,49405,49407],{"class":202,"line":29},[200,49404,20875],{"class":210},[200,49406,20182],{"class":206},[200,49408,10425],{"class":210},[200,49410,49411,49413,49415],{"class":202,"line":445},[200,49412,22139],{"class":210},[200,49414,49236],{"class":206},[200,49416,10425],{"class":210},[200,49418,49419,49421,49423],{"class":202,"line":455},[200,49420,22205],{"class":210},[200,49422,22112],{"class":206},[200,49424,10425],{"class":210},[100,49426,49428],{"id":49427},"media-accessibility","Media Accessibility",[123,49430,49432],{"id":49431},"_1-images","1. Images",[191,49434,49436],{"className":36062,"code":49435,"language":36064,"meta":196,"style":196},"\n",[118,49437,49438,49446,49451,49487,49491,49496,49503,49516,49529,49533,49537,49542,49551,49581,49590,49618,49626,49634],{"__ignoreMap":196},[200,49439,49440,49442,49444],{"class":202,"line":203},[200,49441,10416],{"class":210},[200,49443,22112],{"class":206},[200,49445,10425],{"class":210},[200,49447,49448],{"class":202,"line":214},[200,49449,49450],{"class":555}," \n",[200,49452,49453,49455,49457,49459,49461,49463,49466,49468,49470,49472,49474,49476,49478,49480,49483,49485],{"class":202,"line":16},[200,49454,22119],{"class":210},[200,49456,45302],{"class":206},[200,49458,45305],{"class":313},[200,49460,4280],{"class":210},[200,49462,1093],{"class":210},[200,49464,49465],{"class":286},"decoration.png",[200,49467,1093],{"class":210},[200,49469,45317],{"class":313},[200,49471,4280],{"class":210},[200,49473,45046],{"class":210},[200,49475,47949],{"class":313},[200,49477,4280],{"class":210},[200,49479,1093],{"class":210},[200,49481,49482],{"class":286},"presentation",[200,49484,1093],{"class":210},[200,49486,42021],{"class":210},[200,49488,49489],{"class":202,"line":229},[200,49490,376],{"emptyLinePlaceholder":375},[200,49492,49493],{"class":202,"line":237},[200,49494,49495],{"class":555}," \n",[200,49497,49498,49500],{"class":202,"line":245},[200,49499,22119],{"class":210},[200,49501,49502],{"class":206},"img\n",[200,49504,49505,49507,49509,49511,49514],{"class":202,"line":253},[200,49506,45119],{"class":313},[200,49508,4280],{"class":210},[200,49510,1093],{"class":210},[200,49512,49513],{"class":286},"chart.png",[200,49515,1036],{"class":210},[200,49517,49518,49520,49522,49524,49527],{"class":202,"line":261},[200,49519,45133],{"class":313},[200,49521,4280],{"class":210},[200,49523,1093],{"class":210},[200,49525,49526],{"class":286},"Bar chart showing sales increase of 25% in Q4 2025",[200,49528,1036],{"class":210},[200,49530,49531],{"class":202,"line":269},[200,49532,45212],{"class":210},[200,49534,49535],{"class":202,"line":277},[200,49536,376],{"emptyLinePlaceholder":375},[200,49538,49539],{"class":202,"line":417},[200,49540,49541],{"class":555}," \n",[200,49543,49544,49546,49549],{"class":202,"line":422},[200,49545,22119],{"class":210},[200,49547,49548],{"class":206},"figure",[200,49550,10425],{"class":210},[200,49552,49553,49555,49557,49559,49561,49563,49566,49568,49570,49572,49574,49577,49579],{"class":202,"line":29},[200,49554,20788],{"class":210},[200,49556,45302],{"class":206},[200,49558,45305],{"class":313},[200,49560,4280],{"class":210},[200,49562,1093],{"class":210},[200,49564,49565],{"class":286},"infographic.png",[200,49567,1093],{"class":210},[200,49569,45317],{"class":313},[200,49571,4280],{"class":210},[200,49573,1093],{"class":210},[200,49575,49576],{"class":286},"See infographic description below",[200,49578,1093],{"class":210},[200,49580,42021],{"class":210},[200,49582,49583,49585,49588],{"class":202,"line":445},[200,49584,20788],{"class":210},[200,49586,49587],{"class":206},"figcaption",[200,49589,10425],{"class":210},[200,49591,49592,49594,49596,49598,49600,49602,49605,49607,49609,49612,49614,49616],{"class":202,"line":455},[200,49593,22179],{"class":210},[200,49595,104],{"class":206},[200,49597,36290],{"class":313},[200,49599,4280],{"class":210},[200,49601,1093],{"class":210},[200,49603,49604],{"class":286},"sr-only",[200,49606,1093],{"class":210},[200,49608,4335],{"class":210},[200,49610,49611],{"class":317},"Detailed description of the infographic content...",[200,49613,22205],{"class":210},[200,49615,104],{"class":206},[200,49617,10425],{"class":210},[200,49619,49620,49622,49624],{"class":202,"line":466},[200,49621,20875],{"class":210},[200,49623,49587],{"class":206},[200,49625,10425],{"class":210},[200,49627,49628,49630,49632],{"class":202,"line":482},[200,49629,22139],{"class":210},[200,49631,49548],{"class":206},[200,49633,10425],{"class":210},[200,49635,49636,49638,49640],{"class":202,"line":493},[200,49637,22205],{"class":210},[200,49639,22112],{"class":206},[200,49641,10425],{"class":210},[123,49643,49645],{"id":49644},"_2-video-and-audio","2. Video and Audio",[191,49647,49649],{"className":36062,"code":49648,"language":36064,"meta":196,"style":196},"\n",[118,49650,49651,49659,49671,49702,49756,49796,49804],{"__ignoreMap":196},[200,49652,49653,49655,49657],{"class":202,"line":203},[200,49654,10416],{"class":210},[200,49656,22112],{"class":206},[200,49658,10425],{"class":210},[200,49660,49661,49663,49666,49669],{"class":202,"line":214},[200,49662,22119],{"class":210},[200,49664,49665],{"class":206},"video",[200,49667,49668],{"class":313}," controls",[200,49670,10425],{"class":210},[200,49672,49673,49675,49678,49680,49682,49684,49687,49689,49691,49693,49695,49698,49700],{"class":202,"line":16},[200,49674,20788],{"class":210},[200,49676,49677],{"class":206},"source",[200,49679,45305],{"class":313},[200,49681,4280],{"class":210},[200,49683,1093],{"class":210},[200,49685,49686],{"class":286},"video.mp4",[200,49688,1093],{"class":210},[200,49690,33797],{"class":313},[200,49692,4280],{"class":210},[200,49694,1093],{"class":210},[200,49696,49697],{"class":286},"video/mp4",[200,49699,1093],{"class":210},[200,49701,42021],{"class":210},[200,49703,49704,49706,49709,49712,49714,49716,49719,49721,49723,49725,49727,49730,49732,49735,49737,49739,49741,49743,49745,49747,49749,49752,49754],{"class":202,"line":229},[200,49705,20788],{"class":210},[200,49707,49708],{"class":206},"track",[200,49710,49711],{"class":313}," kind",[200,49713,4280],{"class":210},[200,49715,1093],{"class":210},[200,49717,49718],{"class":286},"captions",[200,49720,1093],{"class":210},[200,49722,45305],{"class":313},[200,49724,4280],{"class":210},[200,49726,1093],{"class":210},[200,49728,49729],{"class":286},"captions.vtt",[200,49731,1093],{"class":210},[200,49733,49734],{"class":313}," srclang",[200,49736,4280],{"class":210},[200,49738,1093],{"class":210},[200,49740,45807],{"class":286},[200,49742,1093],{"class":210},[200,49744,48118],{"class":313},[200,49746,4280],{"class":210},[200,49748,1093],{"class":210},[200,49750,49751],{"class":286},"English",[200,49753,1093],{"class":210},[200,49755,42021],{"class":210},[200,49757,49758,49760,49762,49764,49766,49768,49771,49773,49775,49777,49779,49782,49784,49786,49788,49790,49792,49794],{"class":202,"line":237},[200,49759,20788],{"class":210},[200,49761,49708],{"class":206},[200,49763,49711],{"class":313},[200,49765,4280],{"class":210},[200,49767,1093],{"class":210},[200,49769,49770],{"class":286},"descriptions",[200,49772,1093],{"class":210},[200,49774,45305],{"class":313},[200,49776,4280],{"class":210},[200,49778,1093],{"class":210},[200,49780,49781],{"class":286},"descriptions.vtt",[200,49783,1093],{"class":210},[200,49785,49734],{"class":313},[200,49787,4280],{"class":210},[200,49789,1093],{"class":210},[200,49791,45807],{"class":286},[200,49793,1093],{"class":210},[200,49795,42021],{"class":210},[200,49797,49798,49800,49802],{"class":202,"line":245},[200,49799,22139],{"class":210},[200,49801,49665],{"class":206},[200,49803,10425],{"class":210},[200,49805,49806,49808,49810],{"class":202,"line":253},[200,49807,22205],{"class":210},[200,49809,22112],{"class":206},[200,49811,10425],{"class":210},[100,49813,49815],{"id":49814},"testing-accessibility","Testing Accessibility",[123,49817,49819],{"id":49818},"_1-automated-testing","1. Automated Testing",[191,49821,49823],{"className":10095,"code":49822,"language":10097,"meta":196,"style":196},"// vitest.config.ts\nimport { defineVitestConfig } from \"@nuxt/test-utils/config\"\n\nexport default defineVitestConfig({\n test: {\n setupFiles: [\"./test/setup.ts\"],\n },\n})\n\n// test/accessibility.test.ts\nimport { axe, toHaveNoViolations } from \"jest-axe\"\nimport { mount } from \"@vue/test-utils\"\nimport MyComponent from \"@/components/MyComponent.vue\"\n\nexpect.extend(toHaveNoViolations)\n\ntest(\"should not have accessibility violations\", async () => {\n const wrapper = mount(MyComponent)\n const results = await axe(wrapper.element)\n expect(results).toHaveNoViolations()\n})\n",[118,49824,49825,49830,49850,49854,49866,49874,49894,49898,49904,49908,49913,49938,49958,49975,49979,49991,49995,50018,50036,50059,50078],{"__ignoreMap":196},[200,49826,49827],{"class":202,"line":203},[200,49828,49829],{"class":555},"// vitest.config.ts\n",[200,49831,49832,49834,49836,49839,49841,49843,49845,49848],{"class":202,"line":214},[200,49833,22235],{"class":1006},[200,49835,13631],{"class":210},[200,49837,49838],{"class":317}," defineVitestConfig",[200,49840,13647],{"class":210},[200,49842,22255],{"class":1006},[200,49844,1030],{"class":210},[200,49846,49847],{"class":286},"@nuxt/test-utils/config",[200,49849,1036],{"class":210},[200,49851,49852],{"class":202,"line":16},[200,49853,376],{"emptyLinePlaceholder":375},[200,49855,49856,49858,49860,49862,49864],{"class":202,"line":229},[200,49857,13614],{"class":1006},[200,49859,22954],{"class":1006},[200,49861,49838],{"class":923},[200,49863,6268],{"class":317},[200,49865,388],{"class":210},[200,49867,49868,49870,49872],{"class":202,"line":237},[200,49869,4188],{"class":206},[200,49871,283],{"class":210},[200,49873,318],{"class":210},[200,49875,49876,49879,49881,49883,49885,49888,49890,49892],{"class":202,"line":245},[200,49877,49878],{"class":206}," setupFiles",[200,49880,283],{"class":210},[200,49882,877],{"class":317},[200,49884,1093],{"class":210},[200,49886,49887],{"class":286},"./test/setup.ts",[200,49889,1093],{"class":210},[200,49891,7760],{"class":317},[200,49893,2455],{"class":210},[200,49895,49896],{"class":202,"line":253},[200,49897,23076],{"class":210},[200,49899,49900,49902],{"class":202,"line":261},[200,49901,21331],{"class":210},[200,49903,4304],{"class":317},[200,49905,49906],{"class":202,"line":269},[200,49907,376],{"emptyLinePlaceholder":375},[200,49909,49910],{"class":202,"line":277},[200,49911,49912],{"class":555},"// test/accessibility.test.ts\n",[200,49914,49915,49917,49919,49922,49924,49927,49929,49931,49933,49936],{"class":202,"line":417},[200,49916,22235],{"class":1006},[200,49918,13631],{"class":210},[200,49920,49921],{"class":317}," axe",[200,49923,1966],{"class":210},[200,49925,49926],{"class":317}," toHaveNoViolations",[200,49928,13647],{"class":210},[200,49930,22255],{"class":1006},[200,49932,1030],{"class":210},[200,49934,49935],{"class":286},"jest-axe",[200,49937,1036],{"class":210},[200,49939,49940,49942,49944,49947,49949,49951,49953,49956],{"class":202,"line":422},[200,49941,22235],{"class":1006},[200,49943,13631],{"class":210},[200,49945,49946],{"class":317}," mount",[200,49948,13647],{"class":210},[200,49950,22255],{"class":1006},[200,49952,1030],{"class":210},[200,49954,49955],{"class":286},"@vue/test-utils",[200,49957,1036],{"class":210},[200,49959,49960,49962,49965,49968,49970,49973],{"class":202,"line":29},[200,49961,22235],{"class":1006},[200,49963,49964],{"class":317}," MyComponent ",[200,49966,49967],{"class":1006},"from",[200,49969,1030],{"class":210},[200,49971,49972],{"class":286},"@/components/MyComponent.vue",[200,49974,1036],{"class":210},[200,49976,49977],{"class":202,"line":445},[200,49978,376],{"emptyLinePlaceholder":375},[200,49980,49981,49984,49986,49988],{"class":202,"line":455},[200,49982,49983],{"class":317},"expect",[200,49985,3975],{"class":210},[200,49987,43059],{"class":923},[200,49989,49990],{"class":317},"(toHaveNoViolations)\n",[200,49992,49993],{"class":202,"line":466},[200,49994,376],{"emptyLinePlaceholder":375},[200,49996,49997,49999,50001,50003,50006,50008,50010,50012,50014,50016],{"class":202,"line":482},[200,49998,35307],{"class":923},[200,50000,6268],{"class":317},[200,50002,1093],{"class":210},[200,50004,50005],{"class":286},"should not have accessibility violations",[200,50007,1093],{"class":210},[200,50009,1966],{"class":210},[200,50011,11089],{"class":313},[200,50013,13350],{"class":210},[200,50015,6313],{"class":313},[200,50017,318],{"class":210},[200,50019,50020,50022,50025,50027,50029,50031,50034],{"class":202,"line":493},[200,50021,13628],{"class":313},[200,50023,50024],{"class":317}," wrapper",[200,50026,1096],{"class":210},[200,50028,49946],{"class":923},[200,50030,6268],{"class":206},[200,50032,50033],{"class":317},"MyComponent",[200,50035,4304],{"class":206},[200,50037,50038,50040,50042,50044,50046,50048,50050,50053,50055,50057],{"class":202,"line":498},[200,50039,13628],{"class":313},[200,50041,10782],{"class":317},[200,50043,1096],{"class":210},[200,50045,13781],{"class":1006},[200,50047,49921],{"class":923},[200,50049,6268],{"class":206},[200,50051,50052],{"class":317},"wrapper",[200,50054,3975],{"class":210},[200,50056,47511],{"class":317},[200,50058,4304],{"class":206},[200,50060,50061,50064,50066,50069,50071,50073,50076],{"class":202,"line":503},[200,50062,50063],{"class":923}," expect",[200,50065,6268],{"class":206},[200,50067,50068],{"class":317},"results",[200,50070,5072],{"class":206},[200,50072,3975],{"class":210},[200,50074,50075],{"class":923},"toHaveNoViolations",[200,50077,8169],{"class":206},[200,50079,50080,50082],{"class":202,"line":515},[200,50081,21331],{"class":210},[200,50083,4304],{"class":317},[123,50085,50087],{"id":50086},"_2-manual-testing-checklist","2. Manual Testing Checklist",[191,50089,50091],{"className":10095,"code":50090,"language":10097,"meta":196,"style":196},"// Test scenarios\nconst accessibilityTests = [\n \"Navigate using keyboard only\",\n \"Test with screen reader (NVDA, JAWS, VoiceOver)\",\n \"Check color contrast\",\n \"Verify focus indicators\",\n \"Test zoom to 200%\",\n \"Validate with WAVE tool\",\n \"Test with browser accessibility tools\",\n]\n",[118,50092,50093,50098,50109,50120,50131,50142,50153,50164,50175,50186],{"__ignoreMap":196},[200,50094,50095],{"class":202,"line":203},[200,50096,50097],{"class":555},"// Test scenarios\n",[200,50099,50100,50102,50105,50107],{"class":202,"line":214},[200,50101,10803],{"class":313},[200,50103,50104],{"class":317}," accessibilityTests ",[200,50106,4280],{"class":210},[200,50108,6386],{"class":317},[200,50110,50111,50113,50116,50118],{"class":202,"line":16},[200,50112,15331],{"class":210},[200,50114,50115],{"class":286},"Navigate using keyboard only",[200,50117,1093],{"class":210},[200,50119,2455],{"class":210},[200,50121,50122,50124,50127,50129],{"class":202,"line":229},[200,50123,15331],{"class":210},[200,50125,50126],{"class":286},"Test with screen reader (NVDA, JAWS, VoiceOver)",[200,50128,1093],{"class":210},[200,50130,2455],{"class":210},[200,50132,50133,50135,50138,50140],{"class":202,"line":237},[200,50134,15331],{"class":210},[200,50136,50137],{"class":286},"Check color contrast",[200,50139,1093],{"class":210},[200,50141,2455],{"class":210},[200,50143,50144,50146,50149,50151],{"class":202,"line":245},[200,50145,15331],{"class":210},[200,50147,50148],{"class":286},"Verify focus indicators",[200,50150,1093],{"class":210},[200,50152,2455],{"class":210},[200,50154,50155,50157,50160,50162],{"class":202,"line":253},[200,50156,15331],{"class":210},[200,50158,50159],{"class":286},"Test zoom to 200%",[200,50161,1093],{"class":210},[200,50163,2455],{"class":210},[200,50165,50166,50168,50171,50173],{"class":202,"line":261},[200,50167,15331],{"class":210},[200,50169,50170],{"class":286},"Validate with WAVE tool",[200,50172,1093],{"class":210},[200,50174,2455],{"class":210},[200,50176,50177,50179,50182,50184],{"class":202,"line":269},[200,50178,15331],{"class":210},[200,50180,50181],{"class":286},"Test with browser accessibility tools",[200,50183,1093],{"class":210},[200,50185,2455],{"class":210},[200,50187,50188],{"class":202,"line":277},[200,50189,883],{"class":317},[123,50191,50193],{"id":50192},"_3-cicd-integration","3. CI/CD Integration",[191,50195,50197],{"className":193,"code":50196,"language":195,"meta":196,"style":196},"# .github/workflows/accessibility.yml\nname: Accessibility Testing\n\non: [push]\n\njobs:\n a11y:\n runs-on: ubuntu-latest\n\n steps:\n - uses: actions/checkout@v3\n\n - name: Install dependencies\n run: npm ci\n\n - name: Run accessibility tests\n run: npm run test:a11y\n\n - name: Lighthouse CI\n run: npx @lhci/cli@latest autorun\n",[118,50198,50199,50204,50213,50217,50230,50234,50241,50248,50258,50262,50269,50281,50285,50296,50306,50310,50321,50330,50334,50345],{"__ignoreMap":196},[200,50200,50201],{"class":202,"line":203},[200,50202,50203],{"class":555},"# .github/workflows/accessibility.yml\n",[200,50205,50206,50208,50210],{"class":202,"line":214},[200,50207,1607],{"class":206},[200,50209,283],{"class":210},[200,50211,50212],{"class":286}," Accessibility Testing\n",[200,50214,50215],{"class":202,"line":16},[200,50216,376],{"emptyLinePlaceholder":375},[200,50218,50219,50222,50224,50226,50228],{"class":202,"line":229},[200,50220,50221],{"class":5604},"on",[200,50223,283],{"class":210},[200,50225,877],{"class":210},[200,50227,10871],{"class":286},[200,50229,883],{"class":210},[200,50231,50232],{"class":202,"line":237},[200,50233,376],{"emptyLinePlaceholder":375},[200,50235,50236,50239],{"class":202,"line":245},[200,50237,50238],{"class":206},"jobs",[200,50240,211],{"class":210},[200,50242,50243,50246],{"class":202,"line":253},[200,50244,50245],{"class":206}," a11y",[200,50247,211],{"class":210},[200,50249,50250,50253,50255],{"class":202,"line":261},[200,50251,50252],{"class":206}," runs-on",[200,50254,283],{"class":210},[200,50256,50257],{"class":286}," ubuntu-latest\n",[200,50259,50260],{"class":202,"line":269},[200,50261,376],{"emptyLinePlaceholder":375},[200,50263,50264,50267],{"class":202,"line":277},[200,50265,50266],{"class":206}," steps",[200,50268,211],{"class":210},[200,50270,50271,50273,50276,50278],{"class":202,"line":417},[200,50272,1651],{"class":210},[200,50274,50275],{"class":206}," uses",[200,50277,283],{"class":210},[200,50279,50280],{"class":286}," actions/checkout@v3\n",[200,50282,50283],{"class":202,"line":422},[200,50284,376],{"emptyLinePlaceholder":375},[200,50286,50287,50289,50291,50293],{"class":202,"line":29},[200,50288,1651],{"class":210},[200,50290,24213],{"class":206},[200,50292,283],{"class":210},[200,50294,50295],{"class":286}," Install dependencies\n",[200,50297,50298,50301,50303],{"class":202,"line":445},[200,50299,50300],{"class":206}," run",[200,50302,283],{"class":210},[200,50304,50305],{"class":286}," npm ci\n",[200,50307,50308],{"class":202,"line":455},[200,50309,376],{"emptyLinePlaceholder":375},[200,50311,50312,50314,50316,50318],{"class":202,"line":466},[200,50313,1651],{"class":210},[200,50315,24213],{"class":206},[200,50317,283],{"class":210},[200,50319,50320],{"class":286}," Run accessibility tests\n",[200,50322,50323,50325,50327],{"class":202,"line":482},[200,50324,50300],{"class":206},[200,50326,283],{"class":210},[200,50328,50329],{"class":286}," npm run test:a11y\n",[200,50331,50332],{"class":202,"line":493},[200,50333,376],{"emptyLinePlaceholder":375},[200,50335,50336,50338,50340,50342],{"class":202,"line":498},[200,50337,1651],{"class":210},[200,50339,24213],{"class":206},[200,50341,283],{"class":210},[200,50343,50344],{"class":286}," Lighthouse CI\n",[200,50346,50347,50349,50351],{"class":202,"line":503},[200,50348,50300],{"class":206},[200,50350,283],{"class":210},[200,50352,50353],{"class":286}," npx @lhci/cli@latest autorun\n",[100,50355,50357],{"id":50356},"common-accessibility-mistakes","Common Accessibility Mistakes",[123,50359,50361],{"id":50360},"_1-missing-skip-links","1. Missing Skip Links",[191,50363,50365],{"className":36062,"code":50364,"language":36064,"meta":196,"style":196},"\n\n Skip to main content\n\n\n
\n \n
\n",[118,50366,50367,50372,50402,50407,50415,50419,50438,50443],{"__ignoreMap":196},[200,50368,50369],{"class":202,"line":203},[200,50370,50371],{"class":555},"\n",[200,50373,50374,50376,50378,50380,50382,50384,50387,50389,50391,50393,50395,50398,50400],{"class":202,"line":214},[200,50375,10416],{"class":210},[200,50377,5667],{"class":206},[200,50379,45859],{"class":313},[200,50381,4280],{"class":210},[200,50383,1093],{"class":210},[200,50385,50386],{"class":286},"#main",[200,50388,1093],{"class":210},[200,50390,36290],{"class":313},[200,50392,4280],{"class":210},[200,50394,1093],{"class":210},[200,50396,50397],{"class":286},"skip-link",[200,50399,1093],{"class":210},[200,50401,10425],{"class":210},[200,50403,50404],{"class":202,"line":16},[200,50405,50406],{"class":317}," Skip to main content\n",[200,50408,50409,50411,50413],{"class":202,"line":229},[200,50410,22205],{"class":210},[200,50412,5667],{"class":206},[200,50414,10425],{"class":210},[200,50416,50417],{"class":202,"line":237},[200,50418,376],{"emptyLinePlaceholder":375},[200,50420,50421,50423,50426,50428,50430,50432,50434,50436],{"class":202,"line":245},[200,50422,10416],{"class":210},[200,50424,50425],{"class":206},"main",[200,50427,17297],{"class":313},[200,50429,4280],{"class":210},[200,50431,1093],{"class":210},[200,50433,50425],{"class":286},[200,50435,1093],{"class":210},[200,50437,10425],{"class":210},[200,50439,50440],{"class":202,"line":253},[200,50441,50442],{"class":317}," \n",[200,50444,50445,50447,50449],{"class":202,"line":261},[200,50446,22205],{"class":210},[200,50448,50425],{"class":206},[200,50450,10425],{"class":210},[123,50452,50454],{"id":50453},"_2-improper-heading-structure","2. Improper Heading Structure",[191,50456,50458],{"className":36062,"code":50457,"language":36064,"meta":196,"style":196},"\n

Main Title

\n

Subsection

\n\n\n

Main Title

\n

Section

\n

Subsection

\n",[118,50459,50460,50465,50483,50500,50504,50509,50525,50542],{"__ignoreMap":196},[200,50461,50462],{"class":202,"line":203},[200,50463,50464],{"class":555},"\n",[200,50466,50467,50469,50472,50474,50477,50479,50481],{"class":202,"line":214},[200,50468,10416],{"class":210},[200,50470,50471],{"class":206},"h1",[200,50473,4335],{"class":210},[200,50475,50476],{"class":317},"Main Title",[200,50478,22205],{"class":210},[200,50480,50471],{"class":206},[200,50482,10425],{"class":210},[200,50484,50485,50487,50489,50491,50494,50496,50498],{"class":202,"line":16},[200,50486,10416],{"class":210},[200,50488,123],{"class":206},[200,50490,4335],{"class":210},[200,50492,50493],{"class":317},"Subsection",[200,50495,22205],{"class":210},[200,50497,123],{"class":206},[200,50499,10425],{"class":210},[200,50501,50502],{"class":202,"line":229},[200,50503,376],{"emptyLinePlaceholder":375},[200,50505,50506],{"class":202,"line":237},[200,50507,50508],{"class":555},"\n",[200,50510,50511,50513,50515,50517,50519,50521,50523],{"class":202,"line":245},[200,50512,10416],{"class":210},[200,50514,50471],{"class":206},[200,50516,4335],{"class":210},[200,50518,50476],{"class":317},[200,50520,22205],{"class":210},[200,50522,50471],{"class":206},[200,50524,10425],{"class":210},[200,50526,50527,50529,50531,50533,50536,50538,50540],{"class":202,"line":253},[200,50528,10416],{"class":210},[200,50530,100],{"class":206},[200,50532,4335],{"class":210},[200,50534,50535],{"class":317},"Section",[200,50537,22205],{"class":210},[200,50539,100],{"class":206},[200,50541,10425],{"class":210},[200,50543,50544,50546,50548,50550,50552,50554,50556],{"class":202,"line":261},[200,50545,10416],{"class":210},[200,50547,123],{"class":206},[200,50549,4335],{"class":210},[200,50551,50493],{"class":317},[200,50553,22205],{"class":210},[200,50555,123],{"class":206},[200,50557,10425],{"class":210},[123,50559,50561],{"id":50560},"_3-auto-playing-media","3. Auto-playing Media",[191,50563,50565],{"className":36062,"code":50564,"language":36064,"meta":196,"style":196},"\n