[{"data":1,"prerenderedAt":6352},["ShallowReactive",2],{"navigation_docs":3,"docs-navigation-with-icons":419,"-docs-typegen-nextjs":561,"-docs-typegen-nextjs-surround":6347},[4,66,87,124,405],{"title":5,"path":6,"stem":7,"children":8,"page":65},"Api","\u002Fdocs\u002Fapi","docs\u002Fapi",[9,13,17,21,25,29,33,37,41,45,49,53,57,61],{"title":10,"path":11,"stem":12},"Best Practices","\u002Fdocs\u002Fapi\u002Fbest-practices","docs\u002Fapi\u002Fbest-practices",{"title":14,"path":15,"stem":16},"Blog","\u002Fdocs\u002Fapi\u002Fblog","docs\u002Fapi\u002Fblog",{"title":18,"path":19,"stem":20},"Code Examples","\u002Fdocs\u002Fapi\u002Fcode-examples","docs\u002Fapi\u002Fcode-examples",{"title":22,"path":23,"stem":24},"Collections","\u002Fdocs\u002Fapi\u002Fcollections","docs\u002Fapi\u002Fcollections",{"title":26,"path":27,"stem":28},"Field Types","\u002Fdocs\u002Fapi\u002Ffield-types","docs\u002Fapi\u002Ffield-types",{"title":30,"path":31,"stem":32},"Rate Limits & Errors","\u002Fdocs\u002Fapi\u002Flimits-and-errors","docs\u002Fapi\u002Flimits-and-errors",{"title":34,"path":35,"stem":36},"Media","\u002Fdocs\u002Fapi\u002Fmedia","docs\u002Fapi\u002Fmedia",{"title":38,"path":39,"stem":40},"Overview","\u002Fdocs\u002Fapi\u002Foverview","docs\u002Fapi\u002Foverview",{"title":42,"path":43,"stem":44},"Pages","\u002Fdocs\u002Fapi\u002Fpages","docs\u002Fapi\u002Fpages",{"title":46,"path":47,"stem":48},"Query Parameters","\u002Fdocs\u002Fapi\u002Fquery-parameters","docs\u002Fapi\u002Fquery-parameters",{"title":50,"path":51,"stem":52},"Responses & Caching","\u002Fdocs\u002Fapi\u002Fresponses","docs\u002Fapi\u002Fresponses",{"title":54,"path":55,"stem":56},"Troubleshooting","\u002Fdocs\u002Fapi\u002Ftroubleshooting","docs\u002Fapi\u002Ftroubleshooting",{"title":58,"path":59,"stem":60},"Validation","\u002Fdocs\u002Fapi\u002Fvalidation","docs\u002Fapi\u002Fvalidation",{"title":62,"path":63,"stem":64},"Webhooks","\u002Fdocs\u002Fapi\u002Fwebhooks","docs\u002Fapi\u002Fwebhooks",false,{"title":67,"path":68,"stem":69,"children":70,"page":65},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started",[71,75,79,83],{"title":72,"path":73,"stem":74},"Authentication","\u002Fdocs\u002Fgetting-started\u002Fauthentication","docs\u002Fgetting-started\u002Fauthentication",{"title":76,"path":77,"stem":78},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002Fgetting-started\u002Fintroduction",{"title":80,"path":81,"stem":82},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002Fgetting-started\u002Fquickstart",{"title":84,"path":85,"stem":86},"Write Operations","\u002Fdocs\u002Fgetting-started\u002Fwrite-operations","docs\u002Fgetting-started\u002Fwrite-operations",{"title":88,"path":89,"stem":90,"children":91,"page":65},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides",[92,96,100,104,108,112,116,120],{"title":93,"path":94,"stem":95},"Admin Interface","\u002Fdocs\u002Fguides\u002Fadmin-interface","docs\u002Fguides\u002Fadmin-interface",{"title":97,"path":98,"stem":99},"ButterCMS Migration","\u002Fdocs\u002Fguides\u002Fbuttercms-migration","docs\u002Fguides\u002Fbuttercms-migration",{"title":101,"path":102,"stem":103},"Migrations","\u002Fdocs\u002Fguides\u002Fmigrations","docs\u002Fguides\u002Fmigrations",{"title":105,"path":106,"stem":107},"Page Management","\u002Fdocs\u002Fguides\u002Fpage-management","docs\u002Fguides\u002Fpage-management",{"title":109,"path":110,"stem":111},"Public API Usage","\u002Fdocs\u002Fguides\u002Fpublic-api-usage","docs\u002Fguides\u002Fpublic-api-usage",{"title":113,"path":114,"stem":115},"Schema Builder","\u002Fdocs\u002Fguides\u002Fschema-builder","docs\u002Fguides\u002Fschema-builder",{"title":117,"path":118,"stem":119},"User Management","\u002Fdocs\u002Fguides\u002Fuser-management","docs\u002Fguides\u002Fuser-management",{"title":121,"path":122,"stem":123},"Rich Text Editor","\u002Fdocs\u002Fguides\u002Fwysiwyg-editor","docs\u002Fguides\u002Fwysiwyg-editor",{"title":125,"path":126,"stem":127,"children":128,"page":65},"Sdk","\u002Fdocs\u002Fsdk","docs\u002Fsdk",[129,132,136,140,144],{"title":38,"path":130,"stem":131},"\u002Fdocs\u002Fsdk\u002Freadme","docs\u002Fsdk\u002FREADME",{"title":133,"path":134,"stem":135},"Astro","\u002Fdocs\u002Fsdk\u002Fastro","docs\u002Fsdk\u002Fastro",{"title":137,"path":138,"stem":139},"Next.js","\u002Fdocs\u002Fsdk\u002Fnextjs","docs\u002Fsdk\u002Fnextjs",{"title":141,"path":142,"stem":143},"Nuxt","\u002Fdocs\u002Fsdk\u002Fnuxt","docs\u002Fsdk\u002Fnuxt",{"title":145,"path":146,"stem":147,"children":148,"page":65},"Reference","\u002Fdocs\u002Fsdk\u002Freference","docs\u002Fsdk\u002Freference",[149,153,222,235,380],{"title":150,"path":151,"stem":152},"@tentocms\u002Fclient","\u002Fdocs\u002Fsdk\u002Freference\u002Freadme","docs\u002Fsdk\u002Freference\u002FREADME",{"title":154,"path":155,"stem":156,"children":157,"page":65},"Classes","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses","docs\u002Fsdk\u002Freference\u002Fclasses",[158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218],{"title":159,"path":160,"stem":161},"Class: BlogCategoriesResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogcategoriesresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogCategoriesResource",{"title":163,"path":164,"stem":165},"Class: BlogPostsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogpostsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogPostsResource",{"title":167,"path":168,"stem":169},"Class: BlogResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogResource",{"title":171,"path":172,"stem":173},"Class: BlogTagsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fblogtagsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FBlogTagsResource",{"title":175,"path":176,"stem":177},"Class: CollectionsResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fcollectionsresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FCollectionsResource",{"title":179,"path":180,"stem":181},"Class: CollectionsWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fcollectionswriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FCollectionsWriteResource",{"title":183,"path":184,"stem":185},"Class: MediaResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fmediaresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FMediaResource",{"title":187,"path":188,"stem":189},"Class: MediaWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fmediawriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FMediaWriteResource",{"title":191,"path":192,"stem":193},"Class: PagesResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fpagesresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FPagesResource",{"title":195,"path":196,"stem":197},"Class: PagesWriteResource","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Fpageswriteresource","docs\u002Fsdk\u002Freference\u002Fclasses\u002FPagesWriteResource",{"title":199,"path":200,"stem":201},"Class: TentoAuthenticationError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoauthenticationerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoAuthenticationError",{"title":203,"path":204,"stem":205},"Class: TentoClient","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoclient","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoClient",{"title":207,"path":208,"stem":209},"Class: TentoError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoError",{"title":211,"path":212,"stem":213},"Class: TentoNetworkError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentonetworkerror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoNetworkError",{"title":215,"path":216,"stem":217},"Class: TentoNotFoundError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentonotfounderror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoNotFoundError",{"title":219,"path":220,"stem":221},"Class: TentoRateLimitError","\u002Fdocs\u002Fsdk\u002Freference\u002Fclasses\u002Ftentoratelimiterror","docs\u002Fsdk\u002Freference\u002Fclasses\u002FTentoRateLimitError",{"title":223,"path":224,"stem":225,"children":226,"page":65},"Functions","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions","docs\u002Fsdk\u002Freference\u002Ffunctions",[227,231],{"title":228,"path":229,"stem":230},"Function: getUrl()","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions\u002Fgeturl","docs\u002Fsdk\u002Freference\u002Ffunctions\u002FgetUrl",{"title":232,"path":233,"stem":234},"Function: mockMedia()","\u002Fdocs\u002Fsdk\u002Freference\u002Ffunctions\u002Fmockmedia","docs\u002Fsdk\u002Freference\u002Ffunctions\u002FmockMedia",{"title":236,"path":237,"stem":238,"children":239,"page":65},"Interfaces","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces","docs\u002Fsdk\u002Freference\u002Finterfaces",[240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376],{"title":241,"path":242,"stem":243},"Interface: BlogAuthor","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogauthor","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogAuthor",{"title":245,"path":246,"stem":247},"Interface: BlogCategory","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogcategory","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogCategory",{"title":249,"path":250,"stem":251},"Interface: BlogPost","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogpost","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogPost",{"title":253,"path":254,"stem":255},"Interface: BlogPostListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogpostlistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogPostListOptions",{"title":257,"path":258,"stem":259},"Interface: BlogTag","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fblogtag","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FBlogTag",{"title":261,"path":262,"stem":263},"Interface: CollectionItemResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionitemresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionItemResponse",{"title":265,"path":266,"stem":267},"Interface: CollectionListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionlistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionListOptions",{"title":269,"path":270,"stem":271},"Interface: CollectionListResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectionlistresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionListResponse",{"title":273,"path":274,"stem":275},"Interface: CollectionTypeMeta","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcollectiontypemeta","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCollectionTypeMeta",{"title":277,"path":278,"stem":279},"Interface: CreateCollectionItemInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcreatecollectioniteminput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCreateCollectionItemInput",{"title":281,"path":282,"stem":283},"Interface: CreatePageInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fcreatepageinput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FCreatePageInput",{"title":285,"path":286,"stem":287},"Interface: DryRunResult","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fdryrunresult","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FDryRunResult",{"title":289,"path":290,"stem":291},"Interface: FilterCondition","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ffiltercondition","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FFilterCondition",{"title":293,"path":294,"stem":295},"Interface: ItemResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fitemresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FItemResponse",{"title":297,"path":298,"stem":299},"Interface: ListResponse\u003CT>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Flistresponse","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FListResponse",{"title":301,"path":302,"stem":303},"Interface: Media","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmedia","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMedia",{"title":305,"path":306,"stem":307},"Interface: MediaItem","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediaitem","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaItem",{"title":309,"path":310,"stem":311},"Interface: MediaOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediaoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaOption",{"title":313,"path":314,"stem":315},"Interface: MediaTransformOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fmediatransformoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FMediaTransformOptions",{"title":317,"path":318,"stem":319},"Interface: Page\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpage","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPage",{"title":321,"path":322,"stem":323},"Interface: PageGetOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagegetoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageGetOptions",{"title":325,"path":326,"stem":327},"Interface: PageListOptions","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagelistoptions","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageListOptions",{"title":329,"path":330,"stem":331},"Interface: PageWithRedirect\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpagewithredirect","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPageWithRedirect",{"title":333,"path":334,"stem":335},"Interface: PaginationMeta","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpaginationmeta","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPaginationMeta",{"title":337,"path":338,"stem":339},"Interface: PreviewOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fpreviewoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FPreviewOption",{"title":341,"path":342,"stem":343},"Interface: RedirectInfo","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fredirectinfo","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FRedirectInfo",{"title":345,"path":346,"stem":347},"Interface: RefTypesOption","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Freftypesoption","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FRefTypesOption",{"title":349,"path":350,"stem":351},"Interface: SeoMetadata","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fseometadata","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FSeoMetadata",{"title":353,"path":354,"stem":355},"Interface: TentoClientConfig","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ftentoclientconfig","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FTentoClientConfig",{"title":357,"path":358,"stem":359},"Interface: TentoMedia","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Ftentomedia","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FTentoMedia",{"title":361,"path":362,"stem":363},"Interface: UpdateCollectionItemInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fupdatecollectioniteminput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUpdateCollectionItemInput",{"title":365,"path":366,"stem":367},"Interface: UpdatePageInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fupdatepageinput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUpdatePageInput",{"title":369,"path":370,"stem":371},"Interface: UploadMediaInput","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fuploadmediainput","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FUploadMediaInput",{"title":373,"path":374,"stem":375},"Interface: WriteCollectionItem","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fwritecollectionitem","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FWriteCollectionItem",{"title":377,"path":378,"stem":379},"Interface: WritePage","\u002Fdocs\u002Fsdk\u002Freference\u002Finterfaces\u002Fwritepage","docs\u002Fsdk\u002Freference\u002Finterfaces\u002FWritePage",{"title":381,"path":382,"stem":383,"children":384,"page":65},"Type Aliases","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases","docs\u002Fsdk\u002Freference\u002Ftype-aliases",[385,389,393,397,401],{"title":386,"path":387,"stem":388},"Type Alias: BlogPostListItem","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fblogpostlistitem","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FBlogPostListItem",{"title":390,"path":391,"stem":392},"Type Alias: BlogPostListResponse","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fblogpostlistresponse","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FBlogPostListResponse",{"title":394,"path":395,"stem":396},"Type Alias: CollectionItem\u003CTContent>","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fcollectionitem","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FCollectionItem",{"title":398,"path":399,"stem":400},"Type Alias: FilterOperator","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Ffilteroperator","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FFilterOperator",{"title":402,"path":403,"stem":404},"Type Alias: MediaMode","\u002Fdocs\u002Fsdk\u002Freference\u002Ftype-aliases\u002Fmediamode","docs\u002Fsdk\u002Freference\u002Ftype-aliases\u002FMediaMode",{"title":406,"path":407,"stem":408,"children":409,"page":65},"Typegen","\u002Fdocs\u002Ftypegen","docs\u002Ftypegen",[410,413,416],{"title":133,"path":411,"stem":412},"\u002Fdocs\u002Ftypegen\u002Fastro","docs\u002Ftypegen\u002Fastro",{"title":137,"path":414,"stem":415},"\u002Fdocs\u002Ftypegen\u002Fnextjs","docs\u002Ftypegen\u002Fnextjs",{"title":141,"path":417,"stem":418},"\u002Fdocs\u002Ftypegen\u002Fnuxt","docs\u002Ftypegen\u002Fnuxt",[420,450,460,478,556],{"title":5,"path":6,"stem":7,"children":421,"page":65},[422,424,426,428,430,432,434,436,438,440,442,444,446,448],{"title":10,"path":11,"stem":12,"icon":423},"i-lucide-sparkles",{"title":14,"path":15,"stem":16,"icon":425},"i-lucide-newspaper",{"title":18,"path":19,"stem":20,"icon":427},"i-lucide-terminal",{"title":22,"path":23,"stem":24,"icon":429},"i-lucide-layers",{"title":26,"path":27,"stem":28,"icon":431},"i-lucide-type",{"title":30,"path":31,"stem":32,"icon":433},"i-lucide-triangle-alert",{"title":34,"path":35,"stem":36,"icon":435},"i-lucide-image",{"title":38,"path":39,"stem":40,"icon":437},"i-lucide-map",{"title":42,"path":43,"stem":44,"icon":439},"i-lucide-file-text",{"title":46,"path":47,"stem":48,"icon":441},"i-lucide-sliders-horizontal",{"title":50,"path":51,"stem":52,"icon":443},"i-lucide-braces",{"title":54,"path":55,"stem":56,"icon":445},"i-lucide-wrench",{"title":58,"path":59,"stem":60,"icon":447},"i-lucide-shield-check",{"title":62,"path":63,"stem":64,"icon":449},"i-lucide-webhook",{"title":67,"path":68,"stem":69,"children":451,"page":65},[452,454,456,458],{"title":72,"path":73,"stem":74,"icon":453},"i-lucide-key-round",{"title":76,"path":77,"stem":78,"icon":455},"i-lucide-compass",{"title":80,"path":81,"stem":82,"icon":457},"i-lucide-rocket",{"title":84,"path":85,"stem":86,"icon":459},"i-lucide-pencil",{"title":88,"path":89,"stem":90,"children":461,"page":65},[462,464,466,468,470,472,474,476],{"title":93,"path":94,"stem":95,"icon":463},"i-lucide-layout-dashboard",{"title":97,"path":98,"stem":99,"icon":465},"i-lucide-package",{"title":101,"path":102,"stem":103,"icon":467},"i-lucide-git-branch",{"title":105,"path":106,"stem":107,"icon":469},"i-lucide-files",{"title":109,"path":110,"stem":111,"icon":471},"i-lucide-plug-zap",{"title":113,"path":114,"stem":115,"icon":473},"i-lucide-wand",{"title":117,"path":118,"stem":119,"icon":475},"i-lucide-users",{"title":121,"path":122,"stem":123,"icon":477},"i-lucide-pilcrow",{"title":125,"path":126,"stem":127,"children":479,"page":65},[480,481,482,484,486],{"title":38,"path":130,"stem":131,"icon":465},{"title":133,"path":134,"stem":135,"icon":457},{"title":137,"path":138,"stem":139,"icon":483},"i-lucide-triangle",{"title":141,"path":142,"stem":143,"icon":485},"i-lucide-hexagon",{"title":145,"path":146,"stem":147,"children":487,"page":65},[488,490,508,512,549],{"title":150,"path":151,"stem":152,"icon":489},null,{"title":154,"path":155,"stem":156,"children":491,"page":65},[492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507],{"title":159,"path":160,"stem":161,"icon":489},{"title":163,"path":164,"stem":165,"icon":489},{"title":167,"path":168,"stem":169,"icon":489},{"title":171,"path":172,"stem":173,"icon":489},{"title":175,"path":176,"stem":177,"icon":489},{"title":179,"path":180,"stem":181,"icon":489},{"title":183,"path":184,"stem":185,"icon":489},{"title":187,"path":188,"stem":189,"icon":489},{"title":191,"path":192,"stem":193,"icon":489},{"title":195,"path":196,"stem":197,"icon":489},{"title":199,"path":200,"stem":201,"icon":489},{"title":203,"path":204,"stem":205,"icon":489},{"title":207,"path":208,"stem":209,"icon":489},{"title":211,"path":212,"stem":213,"icon":489},{"title":215,"path":216,"stem":217,"icon":489},{"title":219,"path":220,"stem":221,"icon":489},{"title":223,"path":224,"stem":225,"children":509,"page":65},[510,511],{"title":228,"path":229,"stem":230,"icon":489},{"title":232,"path":233,"stem":234,"icon":489},{"title":236,"path":237,"stem":238,"children":513,"page":65},[514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548],{"title":241,"path":242,"stem":243,"icon":489},{"title":245,"path":246,"stem":247,"icon":489},{"title":249,"path":250,"stem":251,"icon":489},{"title":253,"path":254,"stem":255,"icon":489},{"title":257,"path":258,"stem":259,"icon":489},{"title":261,"path":262,"stem":263,"icon":489},{"title":265,"path":266,"stem":267,"icon":489},{"title":269,"path":270,"stem":271,"icon":489},{"title":273,"path":274,"stem":275,"icon":489},{"title":277,"path":278,"stem":279,"icon":489},{"title":281,"path":282,"stem":283,"icon":489},{"title":285,"path":286,"stem":287,"icon":489},{"title":289,"path":290,"stem":291,"icon":489},{"title":293,"path":294,"stem":295,"icon":489},{"title":297,"path":298,"stem":299,"icon":489},{"title":301,"path":302,"stem":303,"icon":489},{"title":305,"path":306,"stem":307,"icon":489},{"title":309,"path":310,"stem":311,"icon":489},{"title":313,"path":314,"stem":315,"icon":489},{"title":317,"path":318,"stem":319,"icon":489},{"title":321,"path":322,"stem":323,"icon":489},{"title":325,"path":326,"stem":327,"icon":489},{"title":329,"path":330,"stem":331,"icon":489},{"title":333,"path":334,"stem":335,"icon":489},{"title":337,"path":338,"stem":339,"icon":489},{"title":341,"path":342,"stem":343,"icon":489},{"title":345,"path":346,"stem":347,"icon":489},{"title":349,"path":350,"stem":351,"icon":489},{"title":353,"path":354,"stem":355,"icon":489},{"title":357,"path":358,"stem":359,"icon":489},{"title":361,"path":362,"stem":363,"icon":489},{"title":365,"path":366,"stem":367,"icon":489},{"title":369,"path":370,"stem":371,"icon":489},{"title":373,"path":374,"stem":375,"icon":489},{"title":377,"path":378,"stem":379,"icon":489},{"title":381,"path":382,"stem":383,"children":550,"page":65},[551,552,553,554,555],{"title":386,"path":387,"stem":388,"icon":489},{"title":390,"path":391,"stem":392,"icon":489},{"title":394,"path":395,"stem":396,"icon":489},{"title":398,"path":399,"stem":400,"icon":489},{"title":402,"path":403,"stem":404,"icon":489},{"title":406,"path":407,"stem":408,"children":557,"page":65},[558,559,560],{"title":133,"path":411,"stem":412,"icon":457},{"title":137,"path":414,"stem":415,"icon":483},{"title":141,"path":417,"stem":418,"icon":485},{"id":562,"title":137,"body":563,"description":6342,"extension":6343,"icon":483,"links":489,"meta":6344,"navigation":940,"path":414,"seo":6345,"stem":415,"__hash__":6346},"docs\u002Fdocs\u002Ftypegen\u002Fnextjs.md",{"type":564,"value":565,"toc":6310},"minimark",[566,570,575,604,648,652,657,664,680,703,832,836,842,871,878,884,899,918,960,984,1002,1035,1039,1045,1183,1187,1202,1208,1212,1216,1223,2177,2181,2643,2647,2650,3274,3277,3567,3571,3952,3956,3959,4263,4270,4591,4605,4893,4896,5241,5254,5257,5288,5308,5360,5390,5396,5400,5444,5448,5452,5455,5492,5495,5499,5525,5529,5532,5972,5975,5979,5984,6110,6113,6117,6140,6144,6161,6165,6171,6204,6208,6211,6275,6279,6306],[567,568,569],"p",{},"This guide shows you how to integrate TentoCMS type generation into your Next.js 14+ project with App Router for fully typed content fetching.",[571,572,574],"h2",{"id":573},"installation","Installation",[576,577,582],"pre",{"className":578,"code":579,"language":580,"meta":581,"style":581},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install -D @tentocms\u002Ftypegen\n","bash","",[583,584,585],"code",{"__ignoreMap":581},[586,587,590,594,598,601],"span",{"class":588,"line":589},"line",1,[586,591,593],{"class":592},"sBMFI","npm",[586,595,597],{"class":596},"sfazB"," install",[586,599,600],{"class":596}," -D",[586,602,603],{"class":596}," @tentocms\u002Ftypegen\n",[605,606,607],"blockquote",{},[567,608,609,617,618,621,622,625,626,628,629,632,633,636,637,640,641,644,645,647],{},[610,611,612,613,616],"strong",{},"Optional: the ",[583,614,615],{},"Page\u003CT>"," wrapper type."," The examples below that fetch a single page (e.g. ",[583,619,620],{},"Page\u003CBlogPostFields>",") import the ",[583,623,624],{},"Page"," type from ",[583,627,150],{}," — it describes the ",[583,630,631],{},"{ id, name, slug, type, fields, seo, publishedAt, updatedAt }"," envelope the REST API actually returns. ",[583,634,635],{},"typegen"," itself only generates the schema-shaped interfaces (",[583,638,639],{},"*Content","\u002F",[583,642,643],{},"*Fields","\u002Fcollection types); it does not emit a page-envelope wrapper. If you'd rather avoid the extra type-only dependency, replace ",[583,646,620],{}," with an inline type or your own envelope interface.",[571,649,651],{"id":650},"configuration","Configuration",[653,654,656],"h3",{"id":655},"_1-create-configuration-file","1. Create Configuration File",[567,658,659,660,663],{},"Run the init command to create a ",[583,661,662],{},"tentocms.config.js"," file:",[576,665,667],{"className":578,"code":666,"language":580,"meta":581,"style":581},"npx tentocms-typegen init\n",[583,668,669],{"__ignoreMap":581},[586,670,671,674,677],{"class":588,"line":589},[586,672,673],{"class":592},"npx",[586,675,676],{"class":596}," tentocms-typegen",[586,678,679],{"class":596}," init\n",[567,681,682,683,686,687,690,691,694,695,698,699,702],{},"This creates the file below. ",[583,684,685],{},"init"," detects your project layout: a ",[583,688,689],{},".\u002Fsrc\u002F"," directory (common in Next.js) yields ",[583,692,693],{},".\u002Fsrc\u002Ftypes\u002Fcms.ts","; otherwise (a Nuxt project or no ",[583,696,697],{},"src\u002F",") it uses ",[583,700,701],{},".\u002Ftypes\u002Fcms.ts",".",[576,704,708],{"className":705,"code":706,"language":707,"meta":581,"style":581},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F tentocms.config.js\nexport default {\n  apiKey: process.env.TENTO_API_KEY,\n  apiUrl: process.env.TENTO_BASE_URL,\n  output: '.\u002Fsrc\u002Ftypes\u002Fcms.ts',\n  watch: {\n    interval: 30,\n  },\n}\n","javascript",[583,709,710,716,730,757,778,796,806,820,826],{"__ignoreMap":581},[586,711,712],{"class":588,"line":589},[586,713,715],{"class":714},"sHwdD","\u002F\u002F tentocms.config.js\n",[586,717,719,723,726],{"class":588,"line":718},2,[586,720,722],{"class":721},"s7zQu","export",[586,724,725],{"class":721}," default",[586,727,729],{"class":728},"sMK4o"," {\n",[586,731,733,737,740,744,746,749,751,754],{"class":588,"line":732},3,[586,734,736],{"class":735},"swJcz","  apiKey",[586,738,739],{"class":728},":",[586,741,743],{"class":742},"sTEyZ"," process",[586,745,702],{"class":728},[586,747,748],{"class":742},"env",[586,750,702],{"class":728},[586,752,753],{"class":742},"TENTO_API_KEY",[586,755,756],{"class":728},",\n",[586,758,760,763,765,767,769,771,773,776],{"class":588,"line":759},4,[586,761,762],{"class":735},"  apiUrl",[586,764,739],{"class":728},[586,766,743],{"class":742},[586,768,702],{"class":728},[586,770,748],{"class":742},[586,772,702],{"class":728},[586,774,775],{"class":742},"TENTO_BASE_URL",[586,777,756],{"class":728},[586,779,781,784,786,789,791,794],{"class":588,"line":780},5,[586,782,783],{"class":735},"  output",[586,785,739],{"class":728},[586,787,788],{"class":728}," '",[586,790,693],{"class":596},[586,792,793],{"class":728},"'",[586,795,756],{"class":728},[586,797,799,802,804],{"class":588,"line":798},6,[586,800,801],{"class":735},"  watch",[586,803,739],{"class":728},[586,805,729],{"class":728},[586,807,809,812,814,818],{"class":588,"line":808},7,[586,810,811],{"class":735},"    interval",[586,813,739],{"class":728},[586,815,817],{"class":816},"sbssI"," 30",[586,819,756],{"class":728},[586,821,823],{"class":588,"line":822},8,[586,824,825],{"class":728},"  },\n",[586,827,829],{"class":588,"line":828},9,[586,830,831],{"class":728},"}\n",[653,833,835],{"id":834},"_2-add-environment-variables","2. Add Environment Variables",[567,837,838,839,663],{},"Create or update your ",[583,840,841],{},".env.local",[576,843,845],{"className":578,"code":844,"language":580,"meta":581,"style":581},"# .env.local\nTENTO_API_KEY=your_api_key_here\nTENTO_BASE_URL=https:\u002F\u002Ftento-api.intelligentlending.co.uk\n",[583,846,847,852,862],{"__ignoreMap":581},[586,848,849],{"class":588,"line":589},[586,850,851],{"class":714},"# .env.local\n",[586,853,854,856,859],{"class":588,"line":718},[586,855,753],{"class":742},[586,857,858],{"class":728},"=",[586,860,861],{"class":596},"your_api_key_here\n",[586,863,864,866,868],{"class":588,"line":732},[586,865,775],{"class":742},[586,867,858],{"class":728},[586,869,870],{"class":596},"https:\u002F\u002Ftento-api.intelligentlending.co.uk\n",[567,872,873,874,877],{},"Never prefix the API key with ",[583,875,876],{},"NEXT_PUBLIC_"," — that would expose it in the browser bundle. The base URL is safe to expose if needed.",[567,879,880,881,739],{},"Add to ",[583,882,883],{},".gitignore",[576,885,887],{"className":578,"code":886,"language":580,"meta":581,"style":581},"# .gitignore\n.env*.local\n",[583,888,889,894],{"__ignoreMap":581},[586,890,891],{"class":588,"line":589},[586,892,893],{"class":714},"# .gitignore\n",[586,895,896],{"class":588,"line":718},[586,897,898],{"class":592},".env*.local\n",[567,900,901,904,905,908,909,912,913,915,916,739],{},[583,902,903],{},"generate"," loads a ",[583,906,907],{},".env"," file into ",[583,910,911],{},"process.env"," before reading ",[583,914,753],{}," \u002F ",[583,917,775],{},[576,919,921],{"className":578,"code":920,"language":580,"meta":581,"style":581},"# Auto-loads .\u002F.env if present\ntentocms-typegen generate\n\n# Or point at an explicit file (e.g. Next.js uses .env.local)\ntentocms-typegen generate -e .\u002F.env.local\n",[583,922,923,928,936,942,947],{"__ignoreMap":581},[586,924,925],{"class":588,"line":589},[586,926,927],{"class":714},"# Auto-loads .\u002F.env if present\n",[586,929,930,933],{"class":588,"line":718},[586,931,932],{"class":592},"tentocms-typegen",[586,934,935],{"class":596}," generate\n",[586,937,938],{"class":588,"line":732},[586,939,941],{"emptyLinePlaceholder":940},true,"\n",[586,943,944],{"class":588,"line":759},[586,945,946],{"class":714},"# Or point at an explicit file (e.g. Next.js uses .env.local)\n",[586,948,949,951,954,957],{"class":588,"line":780},[586,950,932],{"class":592},[586,952,953],{"class":596}," generate",[586,955,956],{"class":596}," -e",[586,958,959],{"class":596}," .\u002F.env.local\n",[961,962,963,974],"ul",{},[964,965,966,969,970,973],"li",{},[583,967,968],{},"-e, --env \u003Cpath>"," loads the given file (errors if it's missing). With no flag, ",[583,971,972],{},".\u002F.env"," is auto-loaded if present.",[964,975,976,977,979,980,983],{},"Real environment variables are never overridden — existing ",[583,978,911],{}," values always win, so ",[583,981,982],{},"node --env-file=.env ..."," keeps working.",[605,985,986],{},[567,987,988,991,992,995,996,640,999,702],{},[610,989,990],{},"Node ≥ 22\u002F24:"," a bare ",[583,993,994],{},"--env-file"," is reserved by Node and won't reach this CLI — use ",[583,997,998],{},"-e",[583,1000,1001],{},"--env",[567,1003,1004,1006,1007,1010,1011,1010,1014,1017,1018,1021,1022,1024,1025,1030,1031,1034],{},[583,1005,903],{}," also accepts ",[583,1008,1009],{},"-o\u002F--output",", ",[583,1012,1013],{},"-k\u002F--api-key",[583,1015,1016],{},"-u\u002F--api-url",", and ",[583,1019,1020],{},"-i\u002F--interval"," (watch mode only) — each overrides the matching ",[583,1023,662],{}," value. See the ",[1026,1027,1029],"a",{"href":1028},"..\u002F..\u002F..\u002Fpackages\u002Ftypegen\u002Freadme#generate--flag-reference","full CLI flag reference"," for the complete list, including a caveat about ",[583,1032,1033],{},"-c\u002F--config"," currently being a no-op.",[653,1036,1038],{"id":1037},"_3-add-npm-scripts","3. Add npm Scripts",[567,1040,1041,1042,739],{},"Update your ",[583,1043,1044],{},"package.json",[576,1046,1050],{"className":1047,"code":1048,"language":1049,"meta":581,"style":581},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"types:generate\": \"tentocms-typegen generate\",\n    \"types:watch\": \"tentocms-typegen generate --watch\",\n    \"postinstall\": \"npm run types:generate\"\n  }\n}\n","json",[583,1051,1052,1057,1073,1095,1115,1135,1155,1174,1179],{"__ignoreMap":581},[586,1053,1054],{"class":588,"line":589},[586,1055,1056],{"class":728},"{\n",[586,1058,1059,1062,1066,1069,1071],{"class":588,"line":718},[586,1060,1061],{"class":728},"  \"",[586,1063,1065],{"class":1064},"spNyl","scripts",[586,1067,1068],{"class":728},"\"",[586,1070,739],{"class":728},[586,1072,729],{"class":728},[586,1074,1075,1078,1081,1083,1085,1088,1091,1093],{"class":588,"line":732},[586,1076,1077],{"class":728},"    \"",[586,1079,1080],{"class":592},"dev",[586,1082,1068],{"class":728},[586,1084,739],{"class":728},[586,1086,1087],{"class":728}," \"",[586,1089,1090],{"class":596},"next dev",[586,1092,1068],{"class":728},[586,1094,756],{"class":728},[586,1096,1097,1099,1102,1104,1106,1108,1111,1113],{"class":588,"line":759},[586,1098,1077],{"class":728},[586,1100,1101],{"class":592},"build",[586,1103,1068],{"class":728},[586,1105,739],{"class":728},[586,1107,1087],{"class":728},[586,1109,1110],{"class":596},"next build",[586,1112,1068],{"class":728},[586,1114,756],{"class":728},[586,1116,1117,1119,1122,1124,1126,1128,1131,1133],{"class":588,"line":780},[586,1118,1077],{"class":728},[586,1120,1121],{"class":592},"types:generate",[586,1123,1068],{"class":728},[586,1125,739],{"class":728},[586,1127,1087],{"class":728},[586,1129,1130],{"class":596},"tentocms-typegen generate",[586,1132,1068],{"class":728},[586,1134,756],{"class":728},[586,1136,1137,1139,1142,1144,1146,1148,1151,1153],{"class":588,"line":798},[586,1138,1077],{"class":728},[586,1140,1141],{"class":592},"types:watch",[586,1143,1068],{"class":728},[586,1145,739],{"class":728},[586,1147,1087],{"class":728},[586,1149,1150],{"class":596},"tentocms-typegen generate --watch",[586,1152,1068],{"class":728},[586,1154,756],{"class":728},[586,1156,1157,1159,1162,1164,1166,1168,1171],{"class":588,"line":808},[586,1158,1077],{"class":728},[586,1160,1161],{"class":592},"postinstall",[586,1163,1068],{"class":728},[586,1165,739],{"class":728},[586,1167,1087],{"class":728},[586,1169,1170],{"class":596},"npm run types:generate",[586,1172,1173],{"class":728},"\"\n",[586,1175,1176],{"class":588,"line":822},[586,1177,1178],{"class":728},"  }\n",[586,1180,1181],{"class":588,"line":828},[586,1182,831],{"class":728},[653,1184,1186],{"id":1185},"_4-generate-types","4. Generate Types",[576,1188,1190],{"className":578,"code":1189,"language":580,"meta":581,"style":581},"npm run types:generate\n",[583,1191,1192],{"__ignoreMap":581},[586,1193,1194,1196,1199],{"class":588,"line":589},[586,1195,593],{"class":592},[586,1197,1198],{"class":596}," run",[586,1200,1201],{"class":596}," types:generate\n",[567,1203,1204,1205,1207],{},"This creates ",[583,1206,693],{}," with your page types, collections, and component types.",[571,1209,1211],{"id":1210},"usage-with-app-router","Usage with App Router",[653,1213,1215],{"id":1214},"server-component-recommended","Server Component (Recommended)",[567,1217,1218,1219,1222],{},"Fetch data directly in Server Components — ",[583,1220,1221],{},"process.env.TENTO_API_KEY"," is server-only and never sent to the browser:",[576,1224,1228],{"className":1225,"code":1226,"language":1227,"meta":581,"style":581},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F app\u002Fblog\u002F[slug]\u002Fpage.tsx\nimport type { Page } from '@tentocms\u002Fclient'\nimport type { BlogPostFields } from '@\u002Ftypes\u002Fcms'\n\n\u002F\u002F The REST API returns `Page\u003CBlogPostFields>` directly for this endpoint —\n\u002F\u002F `name`\u002F`fields`\u002F`seo` at the top level, custom content under `fields`.\nasync function getPage(slug: string): Promise\u003CPage\u003CBlogPostFields>> {\n  const res = await fetch(\n    `${process.env.TENTO_BASE_URL}\u002Fapi\u002Fv1\u002Fpages\u002F${slug}`,\n    {\n      headers: {\n        'X-API-Key': process.env.TENTO_API_KEY!,\n      },\n      next: { revalidate: 60 }, \u002F\u002F ISR: Revalidate every 60 seconds\n    }\n  )\n\n  if (!res.ok) {\n    throw new Error('Failed to fetch page')\n  }\n\n  return res.json()\n}\n\nexport default async function BlogPostPage({\n  params,\n}: {\n  params: { slug: string }\n}) {\n  const page = await getPage(params.slug)\n\n  return (\n    \u003Carticle>\n      \u003Ch1>{page.name}\u003C\u002Fh1>\n\n      {\u002F* Custom fields live under page.fields *\u002F}\n      \u003Cdiv className=\"meta\">\n        \u003Ctime>{page.fields.publishedDate}\u003C\u002Ftime>\n        \u003Cspan>{page.fields.author.name}\u003C\u002Fspan>\n      \u003C\u002Fdiv>\n\n      \u003Cdiv dangerouslySetInnerHTML={{ __html: page.fields.body }} \u002F>\n\n      {\u002F* Render components — match on comp._type (kebab-case discriminant) *\u002F}\n      {page.fields.components.map((comp, index) => (\n        \u003CComponentRenderer key={index} component={comp} \u002F>\n      ))}\n    \u003C\u002Farticle>\n  )\n}\n\n\u002F\u002F Generate static params for SSG\nexport async function generateStaticParams() {\n  const res = await fetch(\n    `${process.env.TENTO_BASE_URL}\u002Fapi\u002Fv1\u002Fpages`,\n    {\n      headers: {\n        'X-API-Key': process.env.TENTO_API_KEY!,\n      },\n    }\n  )\n\n  const pages: Page\u003CBlogPostFields>[] = await res.json()\n\n  return pages.map((page) => ({\n    slug: page.slug,\n  }))\n}\n","typescript",[583,1229,1230,1235,1262,1284,1288,1293,1298,1343,1363,1395,1401,1411,1437,1443,1467,1473,1479,1484,1509,1533,1538,1543,1558,1563,1568,1586,1594,1602,1621,1629,1654,1659,1667,1679,1707,1712,1723,1745,1770,1792,1802,1807,1843,1848,1858,1899,1929,1937,1947,1952,1957,1962,1968,1985,2000,2025,2030,2039,2062,2067,2072,2077,2082,2115,2120,2147,2163,2172],{"__ignoreMap":581},[586,1231,1232],{"class":588,"line":589},[586,1233,1234],{"class":714},"\u002F\u002F app\u002Fblog\u002F[slug]\u002Fpage.tsx\n",[586,1236,1237,1240,1243,1246,1249,1252,1255,1257,1259],{"class":588,"line":718},[586,1238,1239],{"class":721},"import",[586,1241,1242],{"class":721}," type",[586,1244,1245],{"class":728}," {",[586,1247,1248],{"class":742}," Page",[586,1250,1251],{"class":728}," }",[586,1253,1254],{"class":721}," from",[586,1256,788],{"class":728},[586,1258,150],{"class":596},[586,1260,1261],{"class":728},"'\n",[586,1263,1264,1266,1268,1270,1273,1275,1277,1279,1282],{"class":588,"line":732},[586,1265,1239],{"class":721},[586,1267,1242],{"class":721},[586,1269,1245],{"class":728},[586,1271,1272],{"class":742}," BlogPostFields",[586,1274,1251],{"class":728},[586,1276,1254],{"class":721},[586,1278,788],{"class":728},[586,1280,1281],{"class":596},"@\u002Ftypes\u002Fcms",[586,1283,1261],{"class":728},[586,1285,1286],{"class":588,"line":759},[586,1287,941],{"emptyLinePlaceholder":940},[586,1289,1290],{"class":588,"line":780},[586,1291,1292],{"class":714},"\u002F\u002F The REST API returns `Page\u003CBlogPostFields>` directly for this endpoint —\n",[586,1294,1295],{"class":588,"line":798},[586,1296,1297],{"class":714},"\u002F\u002F `name`\u002F`fields`\u002F`seo` at the top level, custom content under `fields`.\n",[586,1299,1300,1303,1306,1310,1313,1317,1319,1322,1325,1328,1331,1333,1335,1338,1341],{"class":588,"line":808},[586,1301,1302],{"class":1064},"async",[586,1304,1305],{"class":1064}," function",[586,1307,1309],{"class":1308},"s2Zo4"," getPage",[586,1311,1312],{"class":728},"(",[586,1314,1316],{"class":1315},"sHdIc","slug",[586,1318,739],{"class":728},[586,1320,1321],{"class":592}," string",[586,1323,1324],{"class":728},"):",[586,1326,1327],{"class":592}," Promise",[586,1329,1330],{"class":728},"\u003C",[586,1332,624],{"class":592},[586,1334,1330],{"class":728},[586,1336,1337],{"class":592},"BlogPostFields",[586,1339,1340],{"class":728},">>",[586,1342,729],{"class":728},[586,1344,1345,1348,1351,1354,1357,1360],{"class":588,"line":822},[586,1346,1347],{"class":1064},"  const",[586,1349,1350],{"class":742}," res",[586,1352,1353],{"class":728}," =",[586,1355,1356],{"class":721}," await",[586,1358,1359],{"class":1308}," fetch",[586,1361,1362],{"class":735},"(\n",[586,1364,1365,1368,1371,1373,1375,1377,1379,1382,1385,1388,1390,1393],{"class":588,"line":828},[586,1366,1367],{"class":728},"    `${",[586,1369,1370],{"class":742},"process",[586,1372,702],{"class":728},[586,1374,748],{"class":742},[586,1376,702],{"class":728},[586,1378,775],{"class":742},[586,1380,1381],{"class":728},"}",[586,1383,1384],{"class":596},"\u002Fapi\u002Fv1\u002Fpages\u002F",[586,1386,1387],{"class":728},"${",[586,1389,1316],{"class":742},[586,1391,1392],{"class":728},"}`",[586,1394,756],{"class":728},[586,1396,1398],{"class":588,"line":1397},10,[586,1399,1400],{"class":728},"    {\n",[586,1402,1404,1407,1409],{"class":588,"line":1403},11,[586,1405,1406],{"class":735},"      headers",[586,1408,739],{"class":728},[586,1410,729],{"class":728},[586,1412,1414,1417,1420,1422,1424,1426,1428,1430,1432,1434],{"class":588,"line":1413},12,[586,1415,1416],{"class":728},"        '",[586,1418,1419],{"class":735},"X-API-Key",[586,1421,793],{"class":728},[586,1423,739],{"class":728},[586,1425,743],{"class":742},[586,1427,702],{"class":728},[586,1429,748],{"class":742},[586,1431,702],{"class":728},[586,1433,753],{"class":742},[586,1435,1436],{"class":728},"!,\n",[586,1438,1440],{"class":588,"line":1439},13,[586,1441,1442],{"class":728},"      },\n",[586,1444,1446,1449,1451,1453,1456,1458,1461,1464],{"class":588,"line":1445},14,[586,1447,1448],{"class":735},"      next",[586,1450,739],{"class":728},[586,1452,1245],{"class":728},[586,1454,1455],{"class":735}," revalidate",[586,1457,739],{"class":728},[586,1459,1460],{"class":816}," 60",[586,1462,1463],{"class":728}," },",[586,1465,1466],{"class":714}," \u002F\u002F ISR: Revalidate every 60 seconds\n",[586,1468,1470],{"class":588,"line":1469},15,[586,1471,1472],{"class":728},"    }\n",[586,1474,1476],{"class":588,"line":1475},16,[586,1477,1478],{"class":735},"  )\n",[586,1480,1482],{"class":588,"line":1481},17,[586,1483,941],{"emptyLinePlaceholder":940},[586,1485,1487,1490,1493,1496,1499,1501,1504,1507],{"class":588,"line":1486},18,[586,1488,1489],{"class":721},"  if",[586,1491,1492],{"class":735}," (",[586,1494,1495],{"class":728},"!",[586,1497,1498],{"class":742},"res",[586,1500,702],{"class":728},[586,1502,1503],{"class":742},"ok",[586,1505,1506],{"class":735},") ",[586,1508,1056],{"class":728},[586,1510,1512,1515,1518,1521,1523,1525,1528,1530],{"class":588,"line":1511},19,[586,1513,1514],{"class":721},"    throw",[586,1516,1517],{"class":728}," new",[586,1519,1520],{"class":1308}," Error",[586,1522,1312],{"class":735},[586,1524,793],{"class":728},[586,1526,1527],{"class":596},"Failed to fetch page",[586,1529,793],{"class":728},[586,1531,1532],{"class":735},")\n",[586,1534,1536],{"class":588,"line":1535},20,[586,1537,1178],{"class":728},[586,1539,1541],{"class":588,"line":1540},21,[586,1542,941],{"emptyLinePlaceholder":940},[586,1544,1546,1549,1551,1553,1555],{"class":588,"line":1545},22,[586,1547,1548],{"class":721},"  return",[586,1550,1350],{"class":742},[586,1552,702],{"class":728},[586,1554,1049],{"class":1308},[586,1556,1557],{"class":735},"()\n",[586,1559,1561],{"class":588,"line":1560},23,[586,1562,831],{"class":728},[586,1564,1566],{"class":588,"line":1565},24,[586,1567,941],{"emptyLinePlaceholder":940},[586,1569,1571,1573,1575,1578,1580,1583],{"class":588,"line":1570},25,[586,1572,722],{"class":721},[586,1574,725],{"class":721},[586,1576,1577],{"class":1064}," async",[586,1579,1305],{"class":1064},[586,1581,1582],{"class":1308}," BlogPostPage",[586,1584,1585],{"class":728},"({\n",[586,1587,1589,1592],{"class":588,"line":1588},26,[586,1590,1591],{"class":1315},"  params",[586,1593,756],{"class":728},[586,1595,1597,1600],{"class":588,"line":1596},27,[586,1598,1599],{"class":728},"}:",[586,1601,729],{"class":728},[586,1603,1605,1607,1609,1611,1614,1616,1618],{"class":588,"line":1604},28,[586,1606,1591],{"class":735},[586,1608,739],{"class":728},[586,1610,1245],{"class":728},[586,1612,1613],{"class":735}," slug",[586,1615,739],{"class":728},[586,1617,1321],{"class":592},[586,1619,1620],{"class":728}," }\n",[586,1622,1624,1627],{"class":588,"line":1623},29,[586,1625,1626],{"class":728},"})",[586,1628,729],{"class":728},[586,1630,1632,1634,1637,1639,1641,1643,1645,1648,1650,1652],{"class":588,"line":1631},30,[586,1633,1347],{"class":1064},[586,1635,1636],{"class":742}," page",[586,1638,1353],{"class":728},[586,1640,1356],{"class":721},[586,1642,1309],{"class":1308},[586,1644,1312],{"class":735},[586,1646,1647],{"class":742},"params",[586,1649,702],{"class":728},[586,1651,1316],{"class":742},[586,1653,1532],{"class":735},[586,1655,1657],{"class":588,"line":1656},31,[586,1658,941],{"emptyLinePlaceholder":940},[586,1660,1662,1664],{"class":588,"line":1661},32,[586,1663,1548],{"class":721},[586,1665,1666],{"class":735}," (\n",[586,1668,1670,1673,1676],{"class":588,"line":1669},33,[586,1671,1672],{"class":735},"    \u003C",[586,1674,1675],{"class":592},"article",[586,1677,1678],{"class":735},">\n",[586,1680,1682,1685,1688,1691,1694,1697,1700,1703,1705],{"class":588,"line":1681},34,[586,1683,1684],{"class":735},"      \u003C",[586,1686,1687],{"class":592},"h1",[586,1689,1690],{"class":735},">",[586,1692,1693],{"class":728},"{",[586,1695,1696],{"class":735},"page.",[586,1698,1699],{"class":742},"name",[586,1701,1702],{"class":728},"}\u003C\u002F",[586,1704,1687],{"class":742},[586,1706,1678],{"class":728},[586,1708,1710],{"class":588,"line":1709},35,[586,1711,941],{"emptyLinePlaceholder":940},[586,1713,1715,1718,1721],{"class":588,"line":1714},36,[586,1716,1717],{"class":728},"      {",[586,1719,1720],{"class":714},"\u002F* Custom fields live under page.fields *\u002F",[586,1722,831],{"class":728},[586,1724,1726,1728,1731,1734,1736,1738,1741,1743],{"class":588,"line":1725},37,[586,1727,1684],{"class":728},[586,1729,1730],{"class":742},"div",[586,1732,1733],{"class":742}," className",[586,1735,858],{"class":728},[586,1737,1068],{"class":728},[586,1739,1740],{"class":596},"meta",[586,1742,1068],{"class":728},[586,1744,1678],{"class":728},[586,1746,1748,1751,1754,1756,1758,1761,1764,1766,1768],{"class":588,"line":1747},38,[586,1749,1750],{"class":735},"        \u003C",[586,1752,1753],{"class":592},"time",[586,1755,1690],{"class":735},[586,1757,1693],{"class":728},[586,1759,1760],{"class":735},"page.fields.",[586,1762,1763],{"class":742},"publishedDate",[586,1765,1702],{"class":728},[586,1767,1753],{"class":742},[586,1769,1678],{"class":728},[586,1771,1773,1775,1777,1779,1781,1784,1786,1788,1790],{"class":588,"line":1772},39,[586,1774,1750],{"class":735},[586,1776,586],{"class":592},[586,1778,1690],{"class":735},[586,1780,1693],{"class":728},[586,1782,1783],{"class":735},"page.fields.author.",[586,1785,1699],{"class":742},[586,1787,1702],{"class":728},[586,1789,586],{"class":742},[586,1791,1678],{"class":728},[586,1793,1795,1798,1800],{"class":588,"line":1794},40,[586,1796,1797],{"class":728},"      \u003C\u002F",[586,1799,1730],{"class":742},[586,1801,1678],{"class":728},[586,1803,1805],{"class":588,"line":1804},41,[586,1806,941],{"emptyLinePlaceholder":940},[586,1808,1810,1812,1814,1817,1820,1823,1825,1827,1829,1832,1834,1837,1840],{"class":588,"line":1809},42,[586,1811,1684],{"class":728},[586,1813,1730],{"class":742},[586,1815,1816],{"class":742}," dangerouslySetInnerHTML",[586,1818,1819],{"class":728},"={{",[586,1821,1822],{"class":592}," __html",[586,1824,739],{"class":728},[586,1826,1636],{"class":742},[586,1828,702],{"class":728},[586,1830,1831],{"class":742},"fields",[586,1833,702],{"class":728},[586,1835,1836],{"class":742},"body",[586,1838,1839],{"class":728}," }}",[586,1841,1842],{"class":728}," \u002F>\n",[586,1844,1846],{"class":588,"line":1845},43,[586,1847,941],{"emptyLinePlaceholder":940},[586,1849,1851,1853,1856],{"class":588,"line":1850},44,[586,1852,1717],{"class":728},[586,1854,1855],{"class":714},"\u002F* Render components — match on comp._type (kebab-case discriminant) *\u002F",[586,1857,831],{"class":728},[586,1859,1861,1863,1866,1868,1870,1872,1875,1877,1880,1883,1886,1889,1892,1894,1897],{"class":588,"line":1860},45,[586,1862,1717],{"class":728},[586,1864,1865],{"class":1315},"page",[586,1867,702],{"class":735},[586,1869,1831],{"class":1315},[586,1871,702],{"class":735},[586,1873,1874],{"class":1315},"components",[586,1876,702],{"class":735},[586,1878,1879],{"class":1315},"map",[586,1881,1882],{"class":735},"((",[586,1884,1885],{"class":1315},"comp",[586,1887,1888],{"class":728},",",[586,1890,1891],{"class":1315}," index",[586,1893,1506],{"class":735},[586,1895,1896],{"class":728},"=>",[586,1898,1666],{"class":735},[586,1900,1902,1904,1907,1910,1913,1916,1918,1921,1923,1925,1927],{"class":588,"line":1901},46,[586,1903,1750],{"class":728},[586,1905,1906],{"class":742},"ComponentRenderer",[586,1908,1909],{"class":742}," key",[586,1911,1912],{"class":728},"={",[586,1914,1915],{"class":742},"index",[586,1917,1381],{"class":728},[586,1919,1920],{"class":742}," component",[586,1922,1912],{"class":728},[586,1924,1885],{"class":742},[586,1926,1381],{"class":728},[586,1928,1842],{"class":728},[586,1930,1932,1935],{"class":588,"line":1931},47,[586,1933,1934],{"class":735},"      ))",[586,1936,831],{"class":728},[586,1938,1940,1943,1945],{"class":588,"line":1939},48,[586,1941,1942],{"class":728},"    \u003C\u002F",[586,1944,1675],{"class":742},[586,1946,1678],{"class":728},[586,1948,1950],{"class":588,"line":1949},49,[586,1951,1478],{"class":735},[586,1953,1955],{"class":588,"line":1954},50,[586,1956,831],{"class":728},[586,1958,1960],{"class":588,"line":1959},51,[586,1961,941],{"emptyLinePlaceholder":940},[586,1963,1965],{"class":588,"line":1964},52,[586,1966,1967],{"class":714},"\u002F\u002F Generate static params for SSG\n",[586,1969,1971,1973,1975,1977,1980,1983],{"class":588,"line":1970},53,[586,1972,722],{"class":721},[586,1974,1577],{"class":1064},[586,1976,1305],{"class":1064},[586,1978,1979],{"class":1308}," generateStaticParams",[586,1981,1982],{"class":728},"()",[586,1984,729],{"class":728},[586,1986,1988,1990,1992,1994,1996,1998],{"class":588,"line":1987},54,[586,1989,1347],{"class":1064},[586,1991,1350],{"class":742},[586,1993,1353],{"class":728},[586,1995,1356],{"class":721},[586,1997,1359],{"class":1308},[586,1999,1362],{"class":735},[586,2001,2003,2005,2007,2009,2011,2013,2015,2017,2020,2023],{"class":588,"line":2002},55,[586,2004,1367],{"class":728},[586,2006,1370],{"class":742},[586,2008,702],{"class":728},[586,2010,748],{"class":742},[586,2012,702],{"class":728},[586,2014,775],{"class":742},[586,2016,1381],{"class":728},[586,2018,2019],{"class":596},"\u002Fapi\u002Fv1\u002Fpages",[586,2021,2022],{"class":728},"`",[586,2024,756],{"class":728},[586,2026,2028],{"class":588,"line":2027},56,[586,2029,1400],{"class":728},[586,2031,2033,2035,2037],{"class":588,"line":2032},57,[586,2034,1406],{"class":735},[586,2036,739],{"class":728},[586,2038,729],{"class":728},[586,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060],{"class":588,"line":2041},58,[586,2043,1416],{"class":728},[586,2045,1419],{"class":735},[586,2047,793],{"class":728},[586,2049,739],{"class":728},[586,2051,743],{"class":742},[586,2053,702],{"class":728},[586,2055,748],{"class":742},[586,2057,702],{"class":728},[586,2059,753],{"class":742},[586,2061,1436],{"class":728},[586,2063,2065],{"class":588,"line":2064},59,[586,2066,1442],{"class":728},[586,2068,2070],{"class":588,"line":2069},60,[586,2071,1472],{"class":728},[586,2073,2075],{"class":588,"line":2074},61,[586,2076,1478],{"class":735},[586,2078,2080],{"class":588,"line":2079},62,[586,2081,941],{"emptyLinePlaceholder":940},[586,2083,2085,2087,2090,2092,2094,2096,2098,2100,2103,2105,2107,2109,2111,2113],{"class":588,"line":2084},63,[586,2086,1347],{"class":1064},[586,2088,2089],{"class":742}," pages",[586,2091,739],{"class":728},[586,2093,1248],{"class":592},[586,2095,1330],{"class":728},[586,2097,1337],{"class":592},[586,2099,1690],{"class":728},[586,2101,2102],{"class":735},"[] ",[586,2104,858],{"class":728},[586,2106,1356],{"class":721},[586,2108,1350],{"class":742},[586,2110,702],{"class":728},[586,2112,1049],{"class":1308},[586,2114,1557],{"class":735},[586,2116,2118],{"class":588,"line":2117},64,[586,2119,941],{"emptyLinePlaceholder":940},[586,2121,2123,2125,2127,2129,2131,2133,2135,2137,2140,2143,2145],{"class":588,"line":2122},65,[586,2124,1548],{"class":721},[586,2126,2089],{"class":742},[586,2128,702],{"class":728},[586,2130,1879],{"class":1308},[586,2132,1312],{"class":735},[586,2134,1312],{"class":728},[586,2136,1865],{"class":1315},[586,2138,2139],{"class":728},")",[586,2141,2142],{"class":1064}," =>",[586,2144,1492],{"class":735},[586,2146,1056],{"class":728},[586,2148,2150,2153,2155,2157,2159,2161],{"class":588,"line":2149},66,[586,2151,2152],{"class":735},"    slug",[586,2154,739],{"class":728},[586,2156,1636],{"class":742},[586,2158,702],{"class":728},[586,2160,1316],{"class":742},[586,2162,756],{"class":728},[586,2164,2166,2169],{"class":588,"line":2165},67,[586,2167,2168],{"class":728},"  }",[586,2170,2171],{"class":735},"))\n",[586,2173,2175],{"class":588,"line":2174},68,[586,2176,831],{"class":728},[653,2178,2180],{"id":2179},"fetching-collections","Fetching Collections",[576,2182,2184],{"className":1225,"code":2183,"language":1227,"meta":581,"style":581},"\u002F\u002F app\u002Fteam\u002Fpage.tsx\nimport type { TeamMemberItem } from '@\u002Ftypes\u002Fcms'\n\nasync function getTeamMembers(): Promise\u003CTeamMemberItem[]> {\n  const res = await fetch(\n    `${process.env.TENTO_BASE_URL}\u002Fapi\u002Fv1\u002Fcollections\u002Fteam-members`,\n    {\n      headers: {\n        'X-API-Key': process.env.TENTO_API_KEY!,\n      },\n      next: { revalidate: 3600 }, \u002F\u002F Revalidate every hour\n    }\n  )\n\n  if (!res.ok) {\n    throw new Error('Failed to fetch team members')\n  }\n\n  return res.json()\n}\n\nexport default async function TeamPage() {\n  const team = await getTeamMembers()\n\n  return (\n    \u003Cdiv className=\"team-grid\">\n      {team.map((member) => (\n        \u003Cdiv key={member.id} className=\"team-card\">\n          \u003Cimg src={member.photo} alt={member.name} \u002F>\n          \u003Ch3>{member.name}\u003C\u002Fh3>\n          \u003Cp>{member.role}\u003C\u002Fp>\n          {\u002F* TypeScript autocompletes all your collection fields *\u002F}\n        \u003C\u002Fdiv>\n      ))}\n    \u003C\u002Fdiv>\n  )\n}\n",[583,2185,2186,2191,2212,2216,2242,2256,2279,2283,2291,2313,2317,2337,2341,2345,2349,2367,2386,2390,2394,2406,2410,2414,2431,2446,2450,2456,2475,2497,2528,2561,2581,2602,2612,2621,2627,2635,2639],{"__ignoreMap":581},[586,2187,2188],{"class":588,"line":589},[586,2189,2190],{"class":714},"\u002F\u002F app\u002Fteam\u002Fpage.tsx\n",[586,2192,2193,2195,2197,2199,2202,2204,2206,2208,2210],{"class":588,"line":718},[586,2194,1239],{"class":721},[586,2196,1242],{"class":721},[586,2198,1245],{"class":728},[586,2200,2201],{"class":742}," TeamMemberItem",[586,2203,1251],{"class":728},[586,2205,1254],{"class":721},[586,2207,788],{"class":728},[586,2209,1281],{"class":596},[586,2211,1261],{"class":728},[586,2213,2214],{"class":588,"line":732},[586,2215,941],{"emptyLinePlaceholder":940},[586,2217,2218,2220,2222,2225,2228,2230,2232,2235,2238,2240],{"class":588,"line":759},[586,2219,1302],{"class":1064},[586,2221,1305],{"class":1064},[586,2223,2224],{"class":1308}," getTeamMembers",[586,2226,2227],{"class":728},"():",[586,2229,1327],{"class":592},[586,2231,1330],{"class":728},[586,2233,2234],{"class":592},"TeamMemberItem",[586,2236,2237],{"class":742},"[]",[586,2239,1690],{"class":728},[586,2241,729],{"class":728},[586,2243,2244,2246,2248,2250,2252,2254],{"class":588,"line":780},[586,2245,1347],{"class":1064},[586,2247,1350],{"class":742},[586,2249,1353],{"class":728},[586,2251,1356],{"class":721},[586,2253,1359],{"class":1308},[586,2255,1362],{"class":735},[586,2257,2258,2260,2262,2264,2266,2268,2270,2272,2275,2277],{"class":588,"line":798},[586,2259,1367],{"class":728},[586,2261,1370],{"class":742},[586,2263,702],{"class":728},[586,2265,748],{"class":742},[586,2267,702],{"class":728},[586,2269,775],{"class":742},[586,2271,1381],{"class":728},[586,2273,2274],{"class":596},"\u002Fapi\u002Fv1\u002Fcollections\u002Fteam-members",[586,2276,2022],{"class":728},[586,2278,756],{"class":728},[586,2280,2281],{"class":588,"line":808},[586,2282,1400],{"class":728},[586,2284,2285,2287,2289],{"class":588,"line":822},[586,2286,1406],{"class":735},[586,2288,739],{"class":728},[586,2290,729],{"class":728},[586,2292,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311],{"class":588,"line":828},[586,2294,1416],{"class":728},[586,2296,1419],{"class":735},[586,2298,793],{"class":728},[586,2300,739],{"class":728},[586,2302,743],{"class":742},[586,2304,702],{"class":728},[586,2306,748],{"class":742},[586,2308,702],{"class":728},[586,2310,753],{"class":742},[586,2312,1436],{"class":728},[586,2314,2315],{"class":588,"line":1397},[586,2316,1442],{"class":728},[586,2318,2319,2321,2323,2325,2327,2329,2332,2334],{"class":588,"line":1403},[586,2320,1448],{"class":735},[586,2322,739],{"class":728},[586,2324,1245],{"class":728},[586,2326,1455],{"class":735},[586,2328,739],{"class":728},[586,2330,2331],{"class":816}," 3600",[586,2333,1463],{"class":728},[586,2335,2336],{"class":714}," \u002F\u002F Revalidate every hour\n",[586,2338,2339],{"class":588,"line":1413},[586,2340,1472],{"class":728},[586,2342,2343],{"class":588,"line":1439},[586,2344,1478],{"class":735},[586,2346,2347],{"class":588,"line":1445},[586,2348,941],{"emptyLinePlaceholder":940},[586,2350,2351,2353,2355,2357,2359,2361,2363,2365],{"class":588,"line":1469},[586,2352,1489],{"class":721},[586,2354,1492],{"class":735},[586,2356,1495],{"class":728},[586,2358,1498],{"class":742},[586,2360,702],{"class":728},[586,2362,1503],{"class":742},[586,2364,1506],{"class":735},[586,2366,1056],{"class":728},[586,2368,2369,2371,2373,2375,2377,2379,2382,2384],{"class":588,"line":1475},[586,2370,1514],{"class":721},[586,2372,1517],{"class":728},[586,2374,1520],{"class":1308},[586,2376,1312],{"class":735},[586,2378,793],{"class":728},[586,2380,2381],{"class":596},"Failed to fetch team members",[586,2383,793],{"class":728},[586,2385,1532],{"class":735},[586,2387,2388],{"class":588,"line":1481},[586,2389,1178],{"class":728},[586,2391,2392],{"class":588,"line":1486},[586,2393,941],{"emptyLinePlaceholder":940},[586,2395,2396,2398,2400,2402,2404],{"class":588,"line":1511},[586,2397,1548],{"class":721},[586,2399,1350],{"class":742},[586,2401,702],{"class":728},[586,2403,1049],{"class":1308},[586,2405,1557],{"class":735},[586,2407,2408],{"class":588,"line":1535},[586,2409,831],{"class":728},[586,2411,2412],{"class":588,"line":1540},[586,2413,941],{"emptyLinePlaceholder":940},[586,2415,2416,2418,2420,2422,2424,2427,2429],{"class":588,"line":1545},[586,2417,722],{"class":721},[586,2419,725],{"class":721},[586,2421,1577],{"class":1064},[586,2423,1305],{"class":1064},[586,2425,2426],{"class":1308}," TeamPage",[586,2428,1982],{"class":728},[586,2430,729],{"class":728},[586,2432,2433,2435,2438,2440,2442,2444],{"class":588,"line":1560},[586,2434,1347],{"class":1064},[586,2436,2437],{"class":742}," team",[586,2439,1353],{"class":728},[586,2441,1356],{"class":721},[586,2443,2224],{"class":1308},[586,2445,1557],{"class":735},[586,2447,2448],{"class":588,"line":1565},[586,2449,941],{"emptyLinePlaceholder":940},[586,2451,2452,2454],{"class":588,"line":1570},[586,2453,1548],{"class":721},[586,2455,1666],{"class":735},[586,2457,2458,2460,2462,2464,2466,2468,2471,2473],{"class":588,"line":1588},[586,2459,1672],{"class":728},[586,2461,1730],{"class":742},[586,2463,1733],{"class":742},[586,2465,858],{"class":728},[586,2467,1068],{"class":728},[586,2469,2470],{"class":596},"team-grid",[586,2472,1068],{"class":728},[586,2474,1678],{"class":728},[586,2476,2477,2479,2482,2484,2486,2488,2491,2493,2495],{"class":588,"line":1596},[586,2478,1717],{"class":728},[586,2480,2481],{"class":1315},"team",[586,2483,702],{"class":735},[586,2485,1879],{"class":1315},[586,2487,1882],{"class":735},[586,2489,2490],{"class":1315},"member",[586,2492,1506],{"class":735},[586,2494,1896],{"class":728},[586,2496,1666],{"class":735},[586,2498,2499,2501,2503,2505,2507,2510,2513,2515,2517,2519,2521,2524,2526],{"class":588,"line":1604},[586,2500,1750],{"class":728},[586,2502,1730],{"class":742},[586,2504,1909],{"class":742},[586,2506,1912],{"class":728},[586,2508,2509],{"class":735},"member.",[586,2511,2512],{"class":742},"id",[586,2514,1381],{"class":728},[586,2516,1733],{"class":742},[586,2518,858],{"class":728},[586,2520,1068],{"class":728},[586,2522,2523],{"class":596},"team-card",[586,2525,1068],{"class":728},[586,2527,1678],{"class":728},[586,2529,2530,2533,2536,2539,2541,2543,2546,2548,2551,2553,2555,2557,2559],{"class":588,"line":1623},[586,2531,2532],{"class":728},"          \u003C",[586,2534,2535],{"class":742},"img",[586,2537,2538],{"class":742}," src",[586,2540,1912],{"class":728},[586,2542,2509],{"class":735},[586,2544,2545],{"class":742},"photo",[586,2547,1381],{"class":728},[586,2549,2550],{"class":742}," alt",[586,2552,1912],{"class":728},[586,2554,2509],{"class":735},[586,2556,1699],{"class":742},[586,2558,1381],{"class":728},[586,2560,1842],{"class":728},[586,2562,2563,2565,2567,2569,2571,2573,2575,2577,2579],{"class":588,"line":1631},[586,2564,2532],{"class":735},[586,2566,653],{"class":592},[586,2568,1690],{"class":735},[586,2570,1693],{"class":728},[586,2572,2509],{"class":735},[586,2574,1699],{"class":742},[586,2576,1702],{"class":728},[586,2578,653],{"class":742},[586,2580,1678],{"class":728},[586,2582,2583,2585,2587,2589,2591,2593,2596,2598,2600],{"class":588,"line":1656},[586,2584,2532],{"class":735},[586,2586,567],{"class":592},[586,2588,1690],{"class":735},[586,2590,1693],{"class":728},[586,2592,2509],{"class":735},[586,2594,2595],{"class":742},"role",[586,2597,1702],{"class":728},[586,2599,567],{"class":742},[586,2601,1678],{"class":728},[586,2603,2604,2607,2610],{"class":588,"line":1661},[586,2605,2606],{"class":728},"          {",[586,2608,2609],{"class":714},"\u002F* TypeScript autocompletes all your collection fields *\u002F",[586,2611,831],{"class":728},[586,2613,2614,2617,2619],{"class":588,"line":1669},[586,2615,2616],{"class":728},"        \u003C\u002F",[586,2618,1730],{"class":742},[586,2620,1678],{"class":728},[586,2622,2623,2625],{"class":588,"line":1681},[586,2624,1934],{"class":735},[586,2626,831],{"class":728},[586,2628,2629,2631,2633],{"class":588,"line":1709},[586,2630,1942],{"class":728},[586,2632,1730],{"class":742},[586,2634,1678],{"class":728},[586,2636,2637],{"class":588,"line":1714},[586,2638,1478],{"class":735},[586,2640,2641],{"class":588,"line":1725},[586,2642,831],{"class":728},[653,2644,2646],{"id":2645},"creating-a-data-access-layer","Creating a Data Access Layer",[567,2648,2649],{},"Create a centralised API client for cleaner code. Keep it in a server-only module so the key is never bundled for the client:",[576,2651,2653],{"className":1225,"code":2652,"language":1227,"meta":581,"style":581},"\u002F\u002F lib\u002Ftentocms.ts\n\u002F\u002F Pass a concrete type per call (e.g. getPage\u003CPage\u003CBlogPostFields>>(...)).\n\u002F\u002F The generator does not emit a page-envelope wrapper itself — `Page` comes\n\u002F\u002F from `@tentocms\u002Fclient` — so these helpers default to `unknown` and let\n\u002F\u002F each call site supply the exact type.\n\n\u002F\u002F These are server-only env vars — no NEXT_PUBLIC_ prefix\nconst API_URL = process.env.TENTO_BASE_URL!\nconst API_KEY = process.env.TENTO_API_KEY!\n\ninterface FetchOptions {\n  revalidate?: number | false\n  tags?: string[]\n}\n\nasync function tentoFetch\u003CT>(\n  endpoint: string,\n  options?: FetchOptions\n): Promise\u003CT> {\n  const res = await fetch(`${API_URL}${endpoint}`, {\n    headers: {\n      'X-API-Key': API_KEY,\n    },\n    next: {\n      revalidate: options?.revalidate,\n      tags: options?.tags,\n    },\n  })\n\n  if (!res.ok) {\n    throw new Error(`TentoCMS API error: ${res.statusText}`)\n  }\n\n  return res.json()\n}\n\nexport const tentocms = {\n  \u002F\u002F Fetch a page by slug with type safety\n  getPage: \u003CT = unknown>(slug: string, options?: FetchOptions) =>\n    tentoFetch\u003CT>(`\u002Fapi\u002Fv1\u002Fpages\u002F${slug}`, options),\n\n  \u002F\u002F Fetch all pages of a specific type\n  getPages: \u003CT = unknown[]>(pageTypeSlug: string, options?: FetchOptions) =>\n    tentoFetch\u003CT>(`\u002Fapi\u002Fv1\u002Fpages?pageType=${pageTypeSlug}`, options),\n\n  \u002F\u002F Fetch collection entries\n  getCollection: \u003CT = any[]>(collectionSlug: string, options?: FetchOptions) =>\n    tentoFetch\u003CT>(`\u002Fapi\u002Fv1\u002Fcollections\u002F${collectionSlug}`, options),\n}\n",[583,2654,2655,2660,2665,2670,2675,2680,2684,2689,2712,2733,2737,2747,2764,2776,2780,2784,2801,2812,2822,2836,2868,2877,2893,2898,2907,2925,2941,2945,2951,2955,2973,3001,3005,3009,3021,3025,3029,3043,3048,3087,3117,3121,3126,3164,3193,3197,3202,3241,3270],{"__ignoreMap":581},[586,2656,2657],{"class":588,"line":589},[586,2658,2659],{"class":714},"\u002F\u002F lib\u002Ftentocms.ts\n",[586,2661,2662],{"class":588,"line":718},[586,2663,2664],{"class":714},"\u002F\u002F Pass a concrete type per call (e.g. getPage\u003CPage\u003CBlogPostFields>>(...)).\n",[586,2666,2667],{"class":588,"line":732},[586,2668,2669],{"class":714},"\u002F\u002F The generator does not emit a page-envelope wrapper itself — `Page` comes\n",[586,2671,2672],{"class":588,"line":759},[586,2673,2674],{"class":714},"\u002F\u002F from `@tentocms\u002Fclient` — so these helpers default to `unknown` and let\n",[586,2676,2677],{"class":588,"line":780},[586,2678,2679],{"class":714},"\u002F\u002F each call site supply the exact type.\n",[586,2681,2682],{"class":588,"line":798},[586,2683,941],{"emptyLinePlaceholder":940},[586,2685,2686],{"class":588,"line":808},[586,2687,2688],{"class":714},"\u002F\u002F These are server-only env vars — no NEXT_PUBLIC_ prefix\n",[586,2690,2691,2694,2697,2699,2701,2703,2705,2707,2709],{"class":588,"line":822},[586,2692,2693],{"class":1064},"const",[586,2695,2696],{"class":742}," API_URL ",[586,2698,858],{"class":728},[586,2700,743],{"class":742},[586,2702,702],{"class":728},[586,2704,748],{"class":742},[586,2706,702],{"class":728},[586,2708,775],{"class":742},[586,2710,2711],{"class":728},"!\n",[586,2713,2714,2716,2719,2721,2723,2725,2727,2729,2731],{"class":588,"line":828},[586,2715,2693],{"class":1064},[586,2717,2718],{"class":742}," API_KEY ",[586,2720,858],{"class":728},[586,2722,743],{"class":742},[586,2724,702],{"class":728},[586,2726,748],{"class":742},[586,2728,702],{"class":728},[586,2730,753],{"class":742},[586,2732,2711],{"class":728},[586,2734,2735],{"class":588,"line":1397},[586,2736,941],{"emptyLinePlaceholder":940},[586,2738,2739,2742,2745],{"class":588,"line":1403},[586,2740,2741],{"class":1064},"interface",[586,2743,2744],{"class":592}," FetchOptions",[586,2746,729],{"class":728},[586,2748,2749,2752,2755,2758,2761],{"class":588,"line":1413},[586,2750,2751],{"class":735},"  revalidate",[586,2753,2754],{"class":728},"?:",[586,2756,2757],{"class":592}," number",[586,2759,2760],{"class":728}," |",[586,2762,2763],{"class":592}," false\n",[586,2765,2766,2769,2771,2773],{"class":588,"line":1439},[586,2767,2768],{"class":735},"  tags",[586,2770,2754],{"class":728},[586,2772,1321],{"class":592},[586,2774,2775],{"class":742},"[]\n",[586,2777,2778],{"class":588,"line":1445},[586,2779,831],{"class":728},[586,2781,2782],{"class":588,"line":1469},[586,2783,941],{"emptyLinePlaceholder":940},[586,2785,2786,2788,2790,2793,2795,2798],{"class":588,"line":1475},[586,2787,1302],{"class":1064},[586,2789,1305],{"class":1064},[586,2791,2792],{"class":1308}," tentoFetch",[586,2794,1330],{"class":728},[586,2796,2797],{"class":592},"T",[586,2799,2800],{"class":728},">(\n",[586,2802,2803,2806,2808,2810],{"class":588,"line":1481},[586,2804,2805],{"class":1315},"  endpoint",[586,2807,739],{"class":728},[586,2809,1321],{"class":592},[586,2811,756],{"class":728},[586,2813,2814,2817,2819],{"class":588,"line":1486},[586,2815,2816],{"class":1315},"  options",[586,2818,2754],{"class":728},[586,2820,2821],{"class":592}," FetchOptions\n",[586,2823,2824,2826,2828,2830,2832,2834],{"class":588,"line":1511},[586,2825,1324],{"class":728},[586,2827,1327],{"class":592},[586,2829,1330],{"class":728},[586,2831,2797],{"class":592},[586,2833,1690],{"class":728},[586,2835,729],{"class":728},[586,2837,2838,2840,2842,2844,2846,2848,2850,2853,2856,2859,2862,2864,2866],{"class":588,"line":1535},[586,2839,1347],{"class":1064},[586,2841,1350],{"class":742},[586,2843,1353],{"class":728},[586,2845,1356],{"class":721},[586,2847,1359],{"class":1308},[586,2849,1312],{"class":735},[586,2851,2852],{"class":728},"`${",[586,2854,2855],{"class":742},"API_URL",[586,2857,2858],{"class":728},"}${",[586,2860,2861],{"class":742},"endpoint",[586,2863,1392],{"class":728},[586,2865,1888],{"class":728},[586,2867,729],{"class":728},[586,2869,2870,2873,2875],{"class":588,"line":1540},[586,2871,2872],{"class":735},"    headers",[586,2874,739],{"class":728},[586,2876,729],{"class":728},[586,2878,2879,2882,2884,2886,2888,2891],{"class":588,"line":1545},[586,2880,2881],{"class":728},"      '",[586,2883,1419],{"class":735},[586,2885,793],{"class":728},[586,2887,739],{"class":728},[586,2889,2890],{"class":742}," API_KEY",[586,2892,756],{"class":728},[586,2894,2895],{"class":588,"line":1560},[586,2896,2897],{"class":728},"    },\n",[586,2899,2900,2903,2905],{"class":588,"line":1565},[586,2901,2902],{"class":735},"    next",[586,2904,739],{"class":728},[586,2906,729],{"class":728},[586,2908,2909,2912,2914,2917,2920,2923],{"class":588,"line":1570},[586,2910,2911],{"class":735},"      revalidate",[586,2913,739],{"class":728},[586,2915,2916],{"class":742}," options",[586,2918,2919],{"class":728},"?.",[586,2921,2922],{"class":742},"revalidate",[586,2924,756],{"class":728},[586,2926,2927,2930,2932,2934,2936,2939],{"class":588,"line":1588},[586,2928,2929],{"class":735},"      tags",[586,2931,739],{"class":728},[586,2933,2916],{"class":742},[586,2935,2919],{"class":728},[586,2937,2938],{"class":742},"tags",[586,2940,756],{"class":728},[586,2942,2943],{"class":588,"line":1596},[586,2944,2897],{"class":728},[586,2946,2947,2949],{"class":588,"line":1604},[586,2948,2168],{"class":728},[586,2950,1532],{"class":735},[586,2952,2953],{"class":588,"line":1623},[586,2954,941],{"emptyLinePlaceholder":940},[586,2956,2957,2959,2961,2963,2965,2967,2969,2971],{"class":588,"line":1631},[586,2958,1489],{"class":721},[586,2960,1492],{"class":735},[586,2962,1495],{"class":728},[586,2964,1498],{"class":742},[586,2966,702],{"class":728},[586,2968,1503],{"class":742},[586,2970,1506],{"class":735},[586,2972,1056],{"class":728},[586,2974,2975,2977,2979,2981,2983,2985,2988,2990,2992,2994,2997,2999],{"class":588,"line":1656},[586,2976,1514],{"class":721},[586,2978,1517],{"class":728},[586,2980,1520],{"class":1308},[586,2982,1312],{"class":735},[586,2984,2022],{"class":728},[586,2986,2987],{"class":596},"TentoCMS API error: ",[586,2989,1387],{"class":728},[586,2991,1498],{"class":742},[586,2993,702],{"class":728},[586,2995,2996],{"class":742},"statusText",[586,2998,1392],{"class":728},[586,3000,1532],{"class":735},[586,3002,3003],{"class":588,"line":1661},[586,3004,1178],{"class":728},[586,3006,3007],{"class":588,"line":1669},[586,3008,941],{"emptyLinePlaceholder":940},[586,3010,3011,3013,3015,3017,3019],{"class":588,"line":1681},[586,3012,1548],{"class":721},[586,3014,1350],{"class":742},[586,3016,702],{"class":728},[586,3018,1049],{"class":1308},[586,3020,1557],{"class":735},[586,3022,3023],{"class":588,"line":1709},[586,3024,831],{"class":728},[586,3026,3027],{"class":588,"line":1714},[586,3028,941],{"emptyLinePlaceholder":940},[586,3030,3031,3033,3036,3039,3041],{"class":588,"line":1725},[586,3032,722],{"class":721},[586,3034,3035],{"class":1064}," const",[586,3037,3038],{"class":742}," tentocms ",[586,3040,858],{"class":728},[586,3042,729],{"class":728},[586,3044,3045],{"class":588,"line":1747},[586,3046,3047],{"class":714},"  \u002F\u002F Fetch a page by slug with type safety\n",[586,3049,3050,3053,3055,3058,3060,3062,3065,3068,3070,3072,3074,3076,3078,3080,3082,3084],{"class":588,"line":1772},[586,3051,3052],{"class":1308},"  getPage",[586,3054,739],{"class":728},[586,3056,3057],{"class":728}," \u003C",[586,3059,2797],{"class":592},[586,3061,1353],{"class":728},[586,3063,3064],{"class":592}," unknown",[586,3066,3067],{"class":728},">(",[586,3069,1316],{"class":1315},[586,3071,739],{"class":728},[586,3073,1321],{"class":592},[586,3075,1888],{"class":728},[586,3077,2916],{"class":1315},[586,3079,2754],{"class":728},[586,3081,2744],{"class":592},[586,3083,2139],{"class":728},[586,3085,3086],{"class":1064}," =>\n",[586,3088,3089,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112,3115],{"class":588,"line":1794},[586,3090,3091],{"class":1308},"    tentoFetch",[586,3093,1330],{"class":728},[586,3095,2797],{"class":592},[586,3097,1690],{"class":728},[586,3099,1312],{"class":742},[586,3101,2022],{"class":728},[586,3103,1384],{"class":596},[586,3105,1387],{"class":728},[586,3107,1316],{"class":742},[586,3109,1392],{"class":728},[586,3111,1888],{"class":728},[586,3113,3114],{"class":742}," options)",[586,3116,756],{"class":728},[586,3118,3119],{"class":588,"line":1804},[586,3120,941],{"emptyLinePlaceholder":940},[586,3122,3123],{"class":588,"line":1809},[586,3124,3125],{"class":714},"  \u002F\u002F Fetch all pages of a specific type\n",[586,3127,3128,3131,3133,3135,3137,3139,3141,3143,3145,3148,3150,3152,3154,3156,3158,3160,3162],{"class":588,"line":1845},[586,3129,3130],{"class":1308},"  getPages",[586,3132,739],{"class":728},[586,3134,3057],{"class":728},[586,3136,2797],{"class":592},[586,3138,1353],{"class":728},[586,3140,3064],{"class":592},[586,3142,2237],{"class":742},[586,3144,3067],{"class":728},[586,3146,3147],{"class":1315},"pageTypeSlug",[586,3149,739],{"class":728},[586,3151,1321],{"class":592},[586,3153,1888],{"class":728},[586,3155,2916],{"class":1315},[586,3157,2754],{"class":728},[586,3159,2744],{"class":592},[586,3161,2139],{"class":728},[586,3163,3086],{"class":1064},[586,3165,3166,3168,3170,3172,3174,3176,3178,3181,3183,3185,3187,3189,3191],{"class":588,"line":1850},[586,3167,3091],{"class":1308},[586,3169,1330],{"class":728},[586,3171,2797],{"class":592},[586,3173,1690],{"class":728},[586,3175,1312],{"class":742},[586,3177,2022],{"class":728},[586,3179,3180],{"class":596},"\u002Fapi\u002Fv1\u002Fpages?pageType=",[586,3182,1387],{"class":728},[586,3184,3147],{"class":742},[586,3186,1392],{"class":728},[586,3188,1888],{"class":728},[586,3190,3114],{"class":742},[586,3192,756],{"class":728},[586,3194,3195],{"class":588,"line":1860},[586,3196,941],{"emptyLinePlaceholder":940},[586,3198,3199],{"class":588,"line":1901},[586,3200,3201],{"class":714},"  \u002F\u002F Fetch collection entries\n",[586,3203,3204,3207,3209,3211,3213,3215,3218,3220,3222,3225,3227,3229,3231,3233,3235,3237,3239],{"class":588,"line":1931},[586,3205,3206],{"class":1308},"  getCollection",[586,3208,739],{"class":728},[586,3210,3057],{"class":728},[586,3212,2797],{"class":592},[586,3214,1353],{"class":728},[586,3216,3217],{"class":592}," any",[586,3219,2237],{"class":742},[586,3221,3067],{"class":728},[586,3223,3224],{"class":1315},"collectionSlug",[586,3226,739],{"class":728},[586,3228,1321],{"class":592},[586,3230,1888],{"class":728},[586,3232,2916],{"class":1315},[586,3234,2754],{"class":728},[586,3236,2744],{"class":592},[586,3238,2139],{"class":728},[586,3240,3086],{"class":1064},[586,3242,3243,3245,3247,3249,3251,3253,3255,3258,3260,3262,3264,3266,3268],{"class":588,"line":1939},[586,3244,3091],{"class":1308},[586,3246,1330],{"class":728},[586,3248,2797],{"class":592},[586,3250,1690],{"class":728},[586,3252,1312],{"class":742},[586,3254,2022],{"class":728},[586,3256,3257],{"class":596},"\u002Fapi\u002Fv1\u002Fcollections\u002F",[586,3259,1387],{"class":728},[586,3261,3224],{"class":742},[586,3263,1392],{"class":728},[586,3265,1888],{"class":728},[586,3267,3114],{"class":742},[586,3269,756],{"class":728},[586,3271,3272],{"class":588,"line":1949},[586,3273,831],{"class":728},[567,3275,3276],{},"Usage:",[576,3278,3280],{"className":1225,"code":3279,"language":1227,"meta":581,"style":581},"\u002F\u002F app\u002Fblog\u002F[slug]\u002Fpage.tsx\nimport { tentocms } from '@\u002Flib\u002Ftentocms'\nimport type { Page } from '@tentocms\u002Fclient'\nimport type { BlogPostFields } from '@\u002Ftypes\u002Fcms'\n\nexport default async function BlogPostPage({\n  params,\n}: {\n  params: { slug: string }\n}) {\n  const page = await tentocms.getPage\u003CPage\u003CBlogPostFields>>(params.slug, {\n    revalidate: 60,\n    tags: ['blog-post', params.slug],\n  })\n\n  return (\n    \u003Carticle>\n      \u003Ch1>{page.name}\u003C\u002Fh1>\n      \u003Cdiv dangerouslySetInnerHTML={{ __html: page.fields.body }} \u002F>\n    \u003C\u002Farticle>\n  )\n}\n",[583,3281,3282,3286,3306,3326,3346,3350,3364,3370,3376,3392,3398,3437,3448,3479,3485,3489,3495,3503,3523,3551,3559,3563],{"__ignoreMap":581},[586,3283,3284],{"class":588,"line":589},[586,3285,1234],{"class":714},[586,3287,3288,3290,3292,3295,3297,3299,3301,3304],{"class":588,"line":718},[586,3289,1239],{"class":721},[586,3291,1245],{"class":728},[586,3293,3294],{"class":742}," tentocms",[586,3296,1251],{"class":728},[586,3298,1254],{"class":721},[586,3300,788],{"class":728},[586,3302,3303],{"class":596},"@\u002Flib\u002Ftentocms",[586,3305,1261],{"class":728},[586,3307,3308,3310,3312,3314,3316,3318,3320,3322,3324],{"class":588,"line":732},[586,3309,1239],{"class":721},[586,3311,1242],{"class":721},[586,3313,1245],{"class":728},[586,3315,1248],{"class":742},[586,3317,1251],{"class":728},[586,3319,1254],{"class":721},[586,3321,788],{"class":728},[586,3323,150],{"class":596},[586,3325,1261],{"class":728},[586,3327,3328,3330,3332,3334,3336,3338,3340,3342,3344],{"class":588,"line":759},[586,3329,1239],{"class":721},[586,3331,1242],{"class":721},[586,3333,1245],{"class":728},[586,3335,1272],{"class":742},[586,3337,1251],{"class":728},[586,3339,1254],{"class":721},[586,3341,788],{"class":728},[586,3343,1281],{"class":596},[586,3345,1261],{"class":728},[586,3347,3348],{"class":588,"line":780},[586,3349,941],{"emptyLinePlaceholder":940},[586,3351,3352,3354,3356,3358,3360,3362],{"class":588,"line":798},[586,3353,722],{"class":721},[586,3355,725],{"class":721},[586,3357,1577],{"class":1064},[586,3359,1305],{"class":1064},[586,3361,1582],{"class":1308},[586,3363,1585],{"class":728},[586,3365,3366,3368],{"class":588,"line":808},[586,3367,1591],{"class":1315},[586,3369,756],{"class":728},[586,3371,3372,3374],{"class":588,"line":822},[586,3373,1599],{"class":728},[586,3375,729],{"class":728},[586,3377,3378,3380,3382,3384,3386,3388,3390],{"class":588,"line":828},[586,3379,1591],{"class":735},[586,3381,739],{"class":728},[586,3383,1245],{"class":728},[586,3385,1613],{"class":735},[586,3387,739],{"class":728},[586,3389,1321],{"class":592},[586,3391,1620],{"class":728},[586,3393,3394,3396],{"class":588,"line":1397},[586,3395,1626],{"class":728},[586,3397,729],{"class":728},[586,3399,3400,3402,3404,3406,3408,3410,3412,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435],{"class":588,"line":1403},[586,3401,1347],{"class":1064},[586,3403,1636],{"class":742},[586,3405,1353],{"class":728},[586,3407,1356],{"class":721},[586,3409,3294],{"class":742},[586,3411,702],{"class":728},[586,3413,3414],{"class":1308},"getPage",[586,3416,1330],{"class":728},[586,3418,624],{"class":592},[586,3420,1330],{"class":728},[586,3422,1337],{"class":592},[586,3424,1340],{"class":728},[586,3426,1312],{"class":735},[586,3428,1647],{"class":742},[586,3430,702],{"class":728},[586,3432,1316],{"class":742},[586,3434,1888],{"class":728},[586,3436,729],{"class":728},[586,3438,3439,3442,3444,3446],{"class":588,"line":1413},[586,3440,3441],{"class":735},"    revalidate",[586,3443,739],{"class":728},[586,3445,1460],{"class":816},[586,3447,756],{"class":728},[586,3449,3450,3453,3455,3458,3460,3463,3465,3467,3470,3472,3474,3477],{"class":588,"line":1439},[586,3451,3452],{"class":735},"    tags",[586,3454,739],{"class":728},[586,3456,3457],{"class":735}," [",[586,3459,793],{"class":728},[586,3461,3462],{"class":596},"blog-post",[586,3464,793],{"class":728},[586,3466,1888],{"class":728},[586,3468,3469],{"class":742}," params",[586,3471,702],{"class":728},[586,3473,1316],{"class":742},[586,3475,3476],{"class":735},"]",[586,3478,756],{"class":728},[586,3480,3481,3483],{"class":588,"line":1445},[586,3482,2168],{"class":728},[586,3484,1532],{"class":735},[586,3486,3487],{"class":588,"line":1469},[586,3488,941],{"emptyLinePlaceholder":940},[586,3490,3491,3493],{"class":588,"line":1475},[586,3492,1548],{"class":721},[586,3494,1666],{"class":735},[586,3496,3497,3499,3501],{"class":588,"line":1481},[586,3498,1672],{"class":735},[586,3500,1675],{"class":592},[586,3502,1678],{"class":735},[586,3504,3505,3507,3509,3511,3513,3515,3517,3519,3521],{"class":588,"line":1486},[586,3506,1684],{"class":735},[586,3508,1687],{"class":592},[586,3510,1690],{"class":735},[586,3512,1693],{"class":728},[586,3514,1696],{"class":735},[586,3516,1699],{"class":742},[586,3518,1702],{"class":728},[586,3520,1687],{"class":742},[586,3522,1678],{"class":728},[586,3524,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549],{"class":588,"line":1511},[586,3526,1684],{"class":728},[586,3528,1730],{"class":742},[586,3530,1816],{"class":742},[586,3532,1819],{"class":728},[586,3534,1822],{"class":592},[586,3536,739],{"class":728},[586,3538,1636],{"class":742},[586,3540,702],{"class":728},[586,3542,1831],{"class":742},[586,3544,702],{"class":728},[586,3546,1836],{"class":742},[586,3548,1839],{"class":728},[586,3550,1842],{"class":728},[586,3552,3553,3555,3557],{"class":588,"line":1535},[586,3554,1942],{"class":728},[586,3556,1675],{"class":742},[586,3558,1678],{"class":728},[586,3560,3561],{"class":588,"line":1540},[586,3562,1478],{"class":735},[586,3564,3565],{"class":588,"line":1545},[586,3566,831],{"class":728},[653,3568,3570],{"id":3569},"dynamic-component-rendering","Dynamic Component Rendering",[576,3572,3574],{"className":1225,"code":3573,"language":1227,"meta":581,"style":581},"\u002F\u002F components\u002FComponentRenderer.tsx\nimport type { AnyComponent } from '@\u002Ftypes\u002Fcms'\nimport Hero from '.\u002FHero'\nimport TextBlock from '.\u002FTextBlock'\nimport ImageGallery from '.\u002FImageGallery'\nimport CallToAction from '.\u002FCallToAction'\n\n\u002F\u002F Keys match the kebab-case _type discriminant from the API\nconst componentMap = {\n  'hero': Hero,\n  'text-block': TextBlock,\n  'image-gallery': ImageGallery,\n  'cta-banner': CallToAction,\n} as const\n\ninterface ComponentRendererProps {\n  component: AnyComponent\n}\n\nexport default function ComponentRenderer({ component }: ComponentRendererProps) {\n  \u002F\u002F Match on component._type, not component.type\n  const ComponentToRender = componentMap[component._type as keyof typeof componentMap]\n\n  if (!ComponentToRender) {\n    console.warn(`Unknown component type: ${component._type}`)\n    return null\n  }\n\n  \u002F\u002F Component content fields are at the component root — spread directly\n  return \u003CComponentToRender {...component} \u002F>\n}\n",[583,3575,3576,3581,3602,3619,3635,3651,3667,3671,3676,3687,3704,3720,3736,3752,3762,3766,3775,3785,3789,3793,3818,3823,3859,3863,3878,3907,3915,3919,3923,3928,3948],{"__ignoreMap":581},[586,3577,3578],{"class":588,"line":589},[586,3579,3580],{"class":714},"\u002F\u002F components\u002FComponentRenderer.tsx\n",[586,3582,3583,3585,3587,3589,3592,3594,3596,3598,3600],{"class":588,"line":718},[586,3584,1239],{"class":721},[586,3586,1242],{"class":721},[586,3588,1245],{"class":728},[586,3590,3591],{"class":742}," AnyComponent",[586,3593,1251],{"class":728},[586,3595,1254],{"class":721},[586,3597,788],{"class":728},[586,3599,1281],{"class":596},[586,3601,1261],{"class":728},[586,3603,3604,3606,3609,3612,3614,3617],{"class":588,"line":732},[586,3605,1239],{"class":721},[586,3607,3608],{"class":742}," Hero ",[586,3610,3611],{"class":721},"from",[586,3613,788],{"class":728},[586,3615,3616],{"class":596},".\u002FHero",[586,3618,1261],{"class":728},[586,3620,3621,3623,3626,3628,3630,3633],{"class":588,"line":759},[586,3622,1239],{"class":721},[586,3624,3625],{"class":742}," TextBlock ",[586,3627,3611],{"class":721},[586,3629,788],{"class":728},[586,3631,3632],{"class":596},".\u002FTextBlock",[586,3634,1261],{"class":728},[586,3636,3637,3639,3642,3644,3646,3649],{"class":588,"line":780},[586,3638,1239],{"class":721},[586,3640,3641],{"class":742}," ImageGallery ",[586,3643,3611],{"class":721},[586,3645,788],{"class":728},[586,3647,3648],{"class":596},".\u002FImageGallery",[586,3650,1261],{"class":728},[586,3652,3653,3655,3658,3660,3662,3665],{"class":588,"line":798},[586,3654,1239],{"class":721},[586,3656,3657],{"class":742}," CallToAction ",[586,3659,3611],{"class":721},[586,3661,788],{"class":728},[586,3663,3664],{"class":596},".\u002FCallToAction",[586,3666,1261],{"class":728},[586,3668,3669],{"class":588,"line":808},[586,3670,941],{"emptyLinePlaceholder":940},[586,3672,3673],{"class":588,"line":822},[586,3674,3675],{"class":714},"\u002F\u002F Keys match the kebab-case _type discriminant from the API\n",[586,3677,3678,3680,3683,3685],{"class":588,"line":828},[586,3679,2693],{"class":1064},[586,3681,3682],{"class":742}," componentMap ",[586,3684,858],{"class":728},[586,3686,729],{"class":728},[586,3688,3689,3692,3695,3697,3699,3702],{"class":588,"line":1397},[586,3690,3691],{"class":728},"  '",[586,3693,3694],{"class":735},"hero",[586,3696,793],{"class":728},[586,3698,739],{"class":728},[586,3700,3701],{"class":742}," Hero",[586,3703,756],{"class":728},[586,3705,3706,3708,3711,3713,3715,3718],{"class":588,"line":1403},[586,3707,3691],{"class":728},[586,3709,3710],{"class":735},"text-block",[586,3712,793],{"class":728},[586,3714,739],{"class":728},[586,3716,3717],{"class":742}," TextBlock",[586,3719,756],{"class":728},[586,3721,3722,3724,3727,3729,3731,3734],{"class":588,"line":1413},[586,3723,3691],{"class":728},[586,3725,3726],{"class":735},"image-gallery",[586,3728,793],{"class":728},[586,3730,739],{"class":728},[586,3732,3733],{"class":742}," ImageGallery",[586,3735,756],{"class":728},[586,3737,3738,3740,3743,3745,3747,3750],{"class":588,"line":1439},[586,3739,3691],{"class":728},[586,3741,3742],{"class":735},"cta-banner",[586,3744,793],{"class":728},[586,3746,739],{"class":728},[586,3748,3749],{"class":742}," CallToAction",[586,3751,756],{"class":728},[586,3753,3754,3756,3759],{"class":588,"line":1445},[586,3755,1381],{"class":728},[586,3757,3758],{"class":721}," as",[586,3760,3761],{"class":1064}," const\n",[586,3763,3764],{"class":588,"line":1469},[586,3765,941],{"emptyLinePlaceholder":940},[586,3767,3768,3770,3773],{"class":588,"line":1475},[586,3769,2741],{"class":1064},[586,3771,3772],{"class":592}," ComponentRendererProps",[586,3774,729],{"class":728},[586,3776,3777,3780,3782],{"class":588,"line":1481},[586,3778,3779],{"class":735},"  component",[586,3781,739],{"class":728},[586,3783,3784],{"class":592}," AnyComponent\n",[586,3786,3787],{"class":588,"line":1486},[586,3788,831],{"class":728},[586,3790,3791],{"class":588,"line":1511},[586,3792,941],{"emptyLinePlaceholder":940},[586,3794,3795,3797,3799,3801,3804,3807,3809,3812,3814,3816],{"class":588,"line":1535},[586,3796,722],{"class":721},[586,3798,725],{"class":721},[586,3800,1305],{"class":1064},[586,3802,3803],{"class":1308}," ComponentRenderer",[586,3805,3806],{"class":728},"({",[586,3808,1920],{"class":1315},[586,3810,3811],{"class":728}," }:",[586,3813,3772],{"class":592},[586,3815,2139],{"class":728},[586,3817,729],{"class":728},[586,3819,3820],{"class":588,"line":1540},[586,3821,3822],{"class":714},"  \u002F\u002F Match on component._type, not component.type\n",[586,3824,3825,3827,3830,3832,3835,3838,3841,3843,3846,3848,3851,3854,3856],{"class":588,"line":1545},[586,3826,1347],{"class":1064},[586,3828,3829],{"class":742}," ComponentToRender",[586,3831,1353],{"class":728},[586,3833,3834],{"class":742}," componentMap",[586,3836,3837],{"class":735},"[",[586,3839,3840],{"class":742},"component",[586,3842,702],{"class":728},[586,3844,3845],{"class":742},"_type",[586,3847,3758],{"class":721},[586,3849,3850],{"class":728}," keyof",[586,3852,3853],{"class":728}," typeof",[586,3855,3834],{"class":742},[586,3857,3858],{"class":735},"]\n",[586,3860,3861],{"class":588,"line":1560},[586,3862,941],{"emptyLinePlaceholder":940},[586,3864,3865,3867,3869,3871,3874,3876],{"class":588,"line":1565},[586,3866,1489],{"class":721},[586,3868,1492],{"class":735},[586,3870,1495],{"class":728},[586,3872,3873],{"class":742},"ComponentToRender",[586,3875,1506],{"class":735},[586,3877,1056],{"class":728},[586,3879,3880,3883,3885,3888,3890,3892,3895,3897,3899,3901,3903,3905],{"class":588,"line":1570},[586,3881,3882],{"class":742},"    console",[586,3884,702],{"class":728},[586,3886,3887],{"class":1308},"warn",[586,3889,1312],{"class":735},[586,3891,2022],{"class":728},[586,3893,3894],{"class":596},"Unknown component type: ",[586,3896,1387],{"class":728},[586,3898,3840],{"class":742},[586,3900,702],{"class":728},[586,3902,3845],{"class":742},[586,3904,1392],{"class":728},[586,3906,1532],{"class":735},[586,3908,3909,3912],{"class":588,"line":1588},[586,3910,3911],{"class":721},"    return",[586,3913,3914],{"class":728}," null\n",[586,3916,3917],{"class":588,"line":1596},[586,3918,1178],{"class":728},[586,3920,3921],{"class":588,"line":1604},[586,3922,941],{"emptyLinePlaceholder":940},[586,3924,3925],{"class":588,"line":1623},[586,3926,3927],{"class":714},"  \u002F\u002F Component content fields are at the component root — spread directly\n",[586,3929,3930,3932,3934,3936,3939,3941,3943,3946],{"class":588,"line":1631},[586,3931,1548],{"class":721},[586,3933,3057],{"class":728},[586,3935,3873],{"class":592},[586,3937,3938],{"class":728}," {...",[586,3940,3840],{"class":592},[586,3942,1381],{"class":728},[586,3944,3945],{"class":735}," \u002F",[586,3947,1678],{"class":728},[586,3949,3950],{"class":588,"line":1656},[586,3951,831],{"class":735},[653,3953,3955],{"id":3954},"client-component-with-swr","Client Component with SWR",[567,3957,3958],{},"For client-side data fetching, proxy requests through a Route Handler to keep the API key server-side:",[576,3960,3962],{"className":1225,"code":3961,"language":1227,"meta":581,"style":581},"\u002F\u002F app\u002Fapi\u002Fcms\u002Fpages\u002F[slug]\u002Froute.ts\nimport { NextRequest } from 'next\u002Fserver'\n\nexport async function GET(\n  _req: NextRequest,\n  { params }: { params: { slug: string } }\n) {\n  const res = await fetch(\n    `${process.env.TENTO_BASE_URL}\u002Fapi\u002Fv1\u002Fpages\u002F${params.slug}`,\n    {\n      headers: { 'X-API-Key': process.env.TENTO_API_KEY! },\n    }\n  )\n\n  if (!res.ok) {\n    return Response.json({ error: 'Not found' }, { status: res.status })\n  }\n\n  \u002F\u002F The REST API wraps the page in an envelope ({ data, redirect }); return just the page.\n  const { data } = await res.json()\n  return Response.json(data)\n}\n",[583,3963,3964,3969,3989,3993,4006,4017,4044,4050,4064,4094,4098,4129,4133,4137,4141,4159,4206,4210,4214,4219,4242,4259],{"__ignoreMap":581},[586,3965,3966],{"class":588,"line":589},[586,3967,3968],{"class":714},"\u002F\u002F app\u002Fapi\u002Fcms\u002Fpages\u002F[slug]\u002Froute.ts\n",[586,3970,3971,3973,3975,3978,3980,3982,3984,3987],{"class":588,"line":718},[586,3972,1239],{"class":721},[586,3974,1245],{"class":728},[586,3976,3977],{"class":742}," NextRequest",[586,3979,1251],{"class":728},[586,3981,1254],{"class":721},[586,3983,788],{"class":728},[586,3985,3986],{"class":596},"next\u002Fserver",[586,3988,1261],{"class":728},[586,3990,3991],{"class":588,"line":732},[586,3992,941],{"emptyLinePlaceholder":940},[586,3994,3995,3997,3999,4001,4004],{"class":588,"line":759},[586,3996,722],{"class":721},[586,3998,1577],{"class":1064},[586,4000,1305],{"class":1064},[586,4002,4003],{"class":1308}," GET",[586,4005,1362],{"class":728},[586,4007,4008,4011,4013,4015],{"class":588,"line":780},[586,4009,4010],{"class":1315},"  _req",[586,4012,739],{"class":728},[586,4014,3977],{"class":592},[586,4016,756],{"class":728},[586,4018,4019,4022,4024,4026,4028,4030,4032,4034,4036,4038,4040,4042],{"class":588,"line":798},[586,4020,4021],{"class":728},"  {",[586,4023,3469],{"class":1315},[586,4025,3811],{"class":728},[586,4027,1245],{"class":728},[586,4029,3469],{"class":735},[586,4031,739],{"class":728},[586,4033,1245],{"class":728},[586,4035,1613],{"class":735},[586,4037,739],{"class":728},[586,4039,1321],{"class":592},[586,4041,1251],{"class":728},[586,4043,1620],{"class":728},[586,4045,4046,4048],{"class":588,"line":808},[586,4047,2139],{"class":728},[586,4049,729],{"class":728},[586,4051,4052,4054,4056,4058,4060,4062],{"class":588,"line":822},[586,4053,1347],{"class":1064},[586,4055,1350],{"class":742},[586,4057,1353],{"class":728},[586,4059,1356],{"class":721},[586,4061,1359],{"class":1308},[586,4063,1362],{"class":735},[586,4065,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092],{"class":588,"line":828},[586,4067,1367],{"class":728},[586,4069,1370],{"class":742},[586,4071,702],{"class":728},[586,4073,748],{"class":742},[586,4075,702],{"class":728},[586,4077,775],{"class":742},[586,4079,1381],{"class":728},[586,4081,1384],{"class":596},[586,4083,1387],{"class":728},[586,4085,1647],{"class":742},[586,4087,702],{"class":728},[586,4089,1316],{"class":742},[586,4091,1392],{"class":728},[586,4093,756],{"class":728},[586,4095,4096],{"class":588,"line":1397},[586,4097,1400],{"class":728},[586,4099,4100,4102,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124,4126],{"class":588,"line":1403},[586,4101,1406],{"class":735},[586,4103,739],{"class":728},[586,4105,1245],{"class":728},[586,4107,788],{"class":728},[586,4109,1419],{"class":735},[586,4111,793],{"class":728},[586,4113,739],{"class":728},[586,4115,743],{"class":742},[586,4117,702],{"class":728},[586,4119,748],{"class":742},[586,4121,702],{"class":728},[586,4123,753],{"class":742},[586,4125,1495],{"class":728},[586,4127,4128],{"class":728}," },\n",[586,4130,4131],{"class":588,"line":1413},[586,4132,1472],{"class":728},[586,4134,4135],{"class":588,"line":1439},[586,4136,1478],{"class":735},[586,4138,4139],{"class":588,"line":1445},[586,4140,941],{"emptyLinePlaceholder":940},[586,4142,4143,4145,4147,4149,4151,4153,4155,4157],{"class":588,"line":1469},[586,4144,1489],{"class":721},[586,4146,1492],{"class":735},[586,4148,1495],{"class":728},[586,4150,1498],{"class":742},[586,4152,702],{"class":728},[586,4154,1503],{"class":742},[586,4156,1506],{"class":735},[586,4158,1056],{"class":728},[586,4160,4161,4163,4166,4168,4170,4172,4174,4177,4179,4181,4184,4186,4188,4190,4193,4195,4197,4199,4202,4204],{"class":588,"line":1475},[586,4162,3911],{"class":721},[586,4164,4165],{"class":742}," Response",[586,4167,702],{"class":728},[586,4169,1049],{"class":1308},[586,4171,1312],{"class":735},[586,4173,1693],{"class":728},[586,4175,4176],{"class":735}," error",[586,4178,739],{"class":728},[586,4180,788],{"class":728},[586,4182,4183],{"class":596},"Not found",[586,4185,793],{"class":728},[586,4187,1463],{"class":728},[586,4189,1245],{"class":728},[586,4191,4192],{"class":735}," status",[586,4194,739],{"class":728},[586,4196,1350],{"class":742},[586,4198,702],{"class":728},[586,4200,4201],{"class":742},"status",[586,4203,1251],{"class":728},[586,4205,1532],{"class":735},[586,4207,4208],{"class":588,"line":1481},[586,4209,1178],{"class":728},[586,4211,4212],{"class":588,"line":1486},[586,4213,941],{"emptyLinePlaceholder":940},[586,4215,4216],{"class":588,"line":1511},[586,4217,4218],{"class":714},"  \u002F\u002F The REST API wraps the page in an envelope ({ data, redirect }); return just the page.\n",[586,4220,4221,4223,4225,4228,4230,4232,4234,4236,4238,4240],{"class":588,"line":1535},[586,4222,1347],{"class":1064},[586,4224,1245],{"class":728},[586,4226,4227],{"class":742}," data",[586,4229,1251],{"class":728},[586,4231,1353],{"class":728},[586,4233,1356],{"class":721},[586,4235,1350],{"class":742},[586,4237,702],{"class":728},[586,4239,1049],{"class":1308},[586,4241,1557],{"class":735},[586,4243,4244,4246,4248,4250,4252,4254,4257],{"class":588,"line":1540},[586,4245,1548],{"class":721},[586,4247,4165],{"class":742},[586,4249,702],{"class":728},[586,4251,1049],{"class":1308},[586,4253,1312],{"class":735},[586,4255,4256],{"class":742},"data",[586,4258,1532],{"class":735},[586,4260,4261],{"class":588,"line":1545},[586,4262,831],{"class":728},[567,4264,4265,4266,4269],{},"Add a matching Route Handler for collections so ",[583,4267,4268],{},"useCollection"," resolves (the hooks below call it):",[576,4271,4273],{"className":1225,"code":4272,"language":1227,"meta":581,"style":581},"\u002F\u002F app\u002Fapi\u002Fcms\u002Fcollections\u002F[slug]\u002Froute.ts\nimport { NextRequest } from 'next\u002Fserver'\n\nexport async function GET(\n  _req: NextRequest,\n  { params }: { params: { slug: string } }\n) {\n  const res = await fetch(\n    `${process.env.TENTO_BASE_URL}\u002Fapi\u002Fv1\u002Fcollections\u002F${params.slug}`,\n    {\n      headers: { 'X-API-Key': process.env.TENTO_API_KEY! },\n    }\n  )\n\n  if (!res.ok) {\n    return Response.json({ error: 'Not found' }, { status: res.status })\n  }\n\n  \u002F\u002F Collections wrap items in an envelope; `data` is an array (or a single item for\n  \u002F\u002F singletons) — normalise to an array.\n  const { data } = await res.json()\n  return Response.json(Array.isArray(data) ? data : [data])\n}\n",[583,4274,4275,4280,4298,4302,4314,4324,4350,4356,4370,4400,4404,4434,4438,4442,4446,4464,4506,4510,4514,4519,4524,4546,4587],{"__ignoreMap":581},[586,4276,4277],{"class":588,"line":589},[586,4278,4279],{"class":714},"\u002F\u002F app\u002Fapi\u002Fcms\u002Fcollections\u002F[slug]\u002Froute.ts\n",[586,4281,4282,4284,4286,4288,4290,4292,4294,4296],{"class":588,"line":718},[586,4283,1239],{"class":721},[586,4285,1245],{"class":728},[586,4287,3977],{"class":742},[586,4289,1251],{"class":728},[586,4291,1254],{"class":721},[586,4293,788],{"class":728},[586,4295,3986],{"class":596},[586,4297,1261],{"class":728},[586,4299,4300],{"class":588,"line":732},[586,4301,941],{"emptyLinePlaceholder":940},[586,4303,4304,4306,4308,4310,4312],{"class":588,"line":759},[586,4305,722],{"class":721},[586,4307,1577],{"class":1064},[586,4309,1305],{"class":1064},[586,4311,4003],{"class":1308},[586,4313,1362],{"class":728},[586,4315,4316,4318,4320,4322],{"class":588,"line":780},[586,4317,4010],{"class":1315},[586,4319,739],{"class":728},[586,4321,3977],{"class":592},[586,4323,756],{"class":728},[586,4325,4326,4328,4330,4332,4334,4336,4338,4340,4342,4344,4346,4348],{"class":588,"line":798},[586,4327,4021],{"class":728},[586,4329,3469],{"class":1315},[586,4331,3811],{"class":728},[586,4333,1245],{"class":728},[586,4335,3469],{"class":735},[586,4337,739],{"class":728},[586,4339,1245],{"class":728},[586,4341,1613],{"class":735},[586,4343,739],{"class":728},[586,4345,1321],{"class":592},[586,4347,1251],{"class":728},[586,4349,1620],{"class":728},[586,4351,4352,4354],{"class":588,"line":808},[586,4353,2139],{"class":728},[586,4355,729],{"class":728},[586,4357,4358,4360,4362,4364,4366,4368],{"class":588,"line":822},[586,4359,1347],{"class":1064},[586,4361,1350],{"class":742},[586,4363,1353],{"class":728},[586,4365,1356],{"class":721},[586,4367,1359],{"class":1308},[586,4369,1362],{"class":735},[586,4371,4372,4374,4376,4378,4380,4382,4384,4386,4388,4390,4392,4394,4396,4398],{"class":588,"line":828},[586,4373,1367],{"class":728},[586,4375,1370],{"class":742},[586,4377,702],{"class":728},[586,4379,748],{"class":742},[586,4381,702],{"class":728},[586,4383,775],{"class":742},[586,4385,1381],{"class":728},[586,4387,3257],{"class":596},[586,4389,1387],{"class":728},[586,4391,1647],{"class":742},[586,4393,702],{"class":728},[586,4395,1316],{"class":742},[586,4397,1392],{"class":728},[586,4399,756],{"class":728},[586,4401,4402],{"class":588,"line":1397},[586,4403,1400],{"class":728},[586,4405,4406,4408,4410,4412,4414,4416,4418,4420,4422,4424,4426,4428,4430,4432],{"class":588,"line":1403},[586,4407,1406],{"class":735},[586,4409,739],{"class":728},[586,4411,1245],{"class":728},[586,4413,788],{"class":728},[586,4415,1419],{"class":735},[586,4417,793],{"class":728},[586,4419,739],{"class":728},[586,4421,743],{"class":742},[586,4423,702],{"class":728},[586,4425,748],{"class":742},[586,4427,702],{"class":728},[586,4429,753],{"class":742},[586,4431,1495],{"class":728},[586,4433,4128],{"class":728},[586,4435,4436],{"class":588,"line":1413},[586,4437,1472],{"class":728},[586,4439,4440],{"class":588,"line":1439},[586,4441,1478],{"class":735},[586,4443,4444],{"class":588,"line":1445},[586,4445,941],{"emptyLinePlaceholder":940},[586,4447,4448,4450,4452,4454,4456,4458,4460,4462],{"class":588,"line":1469},[586,4449,1489],{"class":721},[586,4451,1492],{"class":735},[586,4453,1495],{"class":728},[586,4455,1498],{"class":742},[586,4457,702],{"class":728},[586,4459,1503],{"class":742},[586,4461,1506],{"class":735},[586,4463,1056],{"class":728},[586,4465,4466,4468,4470,4472,4474,4476,4478,4480,4482,4484,4486,4488,4490,4492,4494,4496,4498,4500,4502,4504],{"class":588,"line":1475},[586,4467,3911],{"class":721},[586,4469,4165],{"class":742},[586,4471,702],{"class":728},[586,4473,1049],{"class":1308},[586,4475,1312],{"class":735},[586,4477,1693],{"class":728},[586,4479,4176],{"class":735},[586,4481,739],{"class":728},[586,4483,788],{"class":728},[586,4485,4183],{"class":596},[586,4487,793],{"class":728},[586,4489,1463],{"class":728},[586,4491,1245],{"class":728},[586,4493,4192],{"class":735},[586,4495,739],{"class":728},[586,4497,1350],{"class":742},[586,4499,702],{"class":728},[586,4501,4201],{"class":742},[586,4503,1251],{"class":728},[586,4505,1532],{"class":735},[586,4507,4508],{"class":588,"line":1481},[586,4509,1178],{"class":728},[586,4511,4512],{"class":588,"line":1486},[586,4513,941],{"emptyLinePlaceholder":940},[586,4515,4516],{"class":588,"line":1511},[586,4517,4518],{"class":714},"  \u002F\u002F Collections wrap items in an envelope; `data` is an array (or a single item for\n",[586,4520,4521],{"class":588,"line":1535},[586,4522,4523],{"class":714},"  \u002F\u002F singletons) — normalise to an array.\n",[586,4525,4526,4528,4530,4532,4534,4536,4538,4540,4542,4544],{"class":588,"line":1540},[586,4527,1347],{"class":1064},[586,4529,1245],{"class":728},[586,4531,4227],{"class":742},[586,4533,1251],{"class":728},[586,4535,1353],{"class":728},[586,4537,1356],{"class":721},[586,4539,1350],{"class":742},[586,4541,702],{"class":728},[586,4543,1049],{"class":1308},[586,4545,1557],{"class":735},[586,4547,4548,4550,4552,4554,4556,4558,4561,4563,4566,4568,4570,4572,4575,4577,4580,4582,4584],{"class":588,"line":1545},[586,4549,1548],{"class":721},[586,4551,4165],{"class":742},[586,4553,702],{"class":728},[586,4555,1049],{"class":1308},[586,4557,1312],{"class":735},[586,4559,4560],{"class":742},"Array",[586,4562,702],{"class":728},[586,4564,4565],{"class":1308},"isArray",[586,4567,1312],{"class":735},[586,4569,4256],{"class":742},[586,4571,1506],{"class":735},[586,4573,4574],{"class":728},"?",[586,4576,4227],{"class":742},[586,4578,4579],{"class":728}," :",[586,4581,3457],{"class":735},[586,4583,4256],{"class":742},[586,4585,4586],{"class":735},"])\n",[586,4588,4589],{"class":588,"line":1560},[586,4590,831],{"class":728},[576,4592,4594],{"className":578,"code":4593,"language":580,"meta":581,"style":581},"npm install swr\n",[583,4595,4596],{"__ignoreMap":581},[586,4597,4598,4600,4602],{"class":588,"line":589},[586,4599,593],{"class":592},[586,4601,597],{"class":596},[586,4603,4604],{"class":596}," swr\n",[576,4606,4608],{"className":1225,"code":4607,"language":1227,"meta":581,"style":581},"\u002F\u002F hooks\u002FuseTentoCMS.ts\n'use client'\n\nimport useSWR from 'swr'\nimport type { Page } from '@tentocms\u002Fclient'\nimport type { BlogPostFields, TeamMemberItem } from '@\u002Ftypes\u002Fcms'\n\n\u002F\u002F Fetches from your Next.js Route Handler — no API key in the browser\nconst fetcher = (url: string) => fetch(url).then((res) => res.json())\n\nexport function usePage\u003CT = Page\u003CBlogPostFields>>(slug: string) {\n  return useSWR\u003CT>(`\u002Fapi\u002Fcms\u002Fpages\u002F${slug}`, fetcher)\n}\n\nexport function useCollection\u003CT = TeamMemberItem[]>(collectionSlug: string) {\n  return useSWR\u003CT>(`\u002Fapi\u002Fcms\u002Fcollections\u002F${collectionSlug}`, fetcher)\n}\n",[583,4609,4610,4615,4624,4628,4644,4664,4688,4692,4697,4748,4752,4786,4819,4823,4827,4858,4889],{"__ignoreMap":581},[586,4611,4612],{"class":588,"line":589},[586,4613,4614],{"class":714},"\u002F\u002F hooks\u002FuseTentoCMS.ts\n",[586,4616,4617,4619,4622],{"class":588,"line":718},[586,4618,793],{"class":728},[586,4620,4621],{"class":596},"use client",[586,4623,1261],{"class":728},[586,4625,4626],{"class":588,"line":732},[586,4627,941],{"emptyLinePlaceholder":940},[586,4629,4630,4632,4635,4637,4639,4642],{"class":588,"line":759},[586,4631,1239],{"class":721},[586,4633,4634],{"class":742}," useSWR ",[586,4636,3611],{"class":721},[586,4638,788],{"class":728},[586,4640,4641],{"class":596},"swr",[586,4643,1261],{"class":728},[586,4645,4646,4648,4650,4652,4654,4656,4658,4660,4662],{"class":588,"line":780},[586,4647,1239],{"class":721},[586,4649,1242],{"class":721},[586,4651,1245],{"class":728},[586,4653,1248],{"class":742},[586,4655,1251],{"class":728},[586,4657,1254],{"class":721},[586,4659,788],{"class":728},[586,4661,150],{"class":596},[586,4663,1261],{"class":728},[586,4665,4666,4668,4670,4672,4674,4676,4678,4680,4682,4684,4686],{"class":588,"line":798},[586,4667,1239],{"class":721},[586,4669,1242],{"class":721},[586,4671,1245],{"class":728},[586,4673,1272],{"class":742},[586,4675,1888],{"class":728},[586,4677,2201],{"class":742},[586,4679,1251],{"class":728},[586,4681,1254],{"class":721},[586,4683,788],{"class":728},[586,4685,1281],{"class":596},[586,4687,1261],{"class":728},[586,4689,4690],{"class":588,"line":808},[586,4691,941],{"emptyLinePlaceholder":940},[586,4693,4694],{"class":588,"line":822},[586,4695,4696],{"class":714},"\u002F\u002F Fetches from your Next.js Route Handler — no API key in the browser\n",[586,4698,4699,4701,4704,4706,4708,4711,4713,4715,4717,4719,4721,4724,4726,4729,4731,4733,4735,4737,4739,4741,4743,4745],{"class":588,"line":828},[586,4700,2693],{"class":1064},[586,4702,4703],{"class":742}," fetcher ",[586,4705,858],{"class":728},[586,4707,1492],{"class":728},[586,4709,4710],{"class":1315},"url",[586,4712,739],{"class":728},[586,4714,1321],{"class":592},[586,4716,2139],{"class":728},[586,4718,2142],{"class":1064},[586,4720,1359],{"class":1308},[586,4722,4723],{"class":742},"(url)",[586,4725,702],{"class":728},[586,4727,4728],{"class":1308},"then",[586,4730,1312],{"class":742},[586,4732,1312],{"class":728},[586,4734,1498],{"class":1315},[586,4736,2139],{"class":728},[586,4738,2142],{"class":1064},[586,4740,1350],{"class":742},[586,4742,702],{"class":728},[586,4744,1049],{"class":1308},[586,4746,4747],{"class":742},"())\n",[586,4749,4750],{"class":588,"line":1397},[586,4751,941],{"emptyLinePlaceholder":940},[586,4753,4754,4756,4758,4761,4763,4765,4767,4769,4771,4773,4776,4778,4780,4782,4784],{"class":588,"line":1403},[586,4755,722],{"class":721},[586,4757,1305],{"class":1064},[586,4759,4760],{"class":1308}," usePage",[586,4762,1330],{"class":728},[586,4764,2797],{"class":592},[586,4766,1353],{"class":728},[586,4768,1248],{"class":592},[586,4770,1330],{"class":728},[586,4772,1337],{"class":592},[586,4774,4775],{"class":728},">>(",[586,4777,1316],{"class":1315},[586,4779,739],{"class":728},[586,4781,1321],{"class":592},[586,4783,2139],{"class":728},[586,4785,729],{"class":728},[586,4787,4788,4790,4793,4795,4797,4799,4801,4803,4806,4808,4810,4812,4814,4817],{"class":588,"line":1413},[586,4789,1548],{"class":721},[586,4791,4792],{"class":1308}," useSWR",[586,4794,1330],{"class":728},[586,4796,2797],{"class":592},[586,4798,1690],{"class":728},[586,4800,1312],{"class":735},[586,4802,2022],{"class":728},[586,4804,4805],{"class":596},"\u002Fapi\u002Fcms\u002Fpages\u002F",[586,4807,1387],{"class":728},[586,4809,1316],{"class":742},[586,4811,1392],{"class":728},[586,4813,1888],{"class":728},[586,4815,4816],{"class":742}," fetcher",[586,4818,1532],{"class":735},[586,4820,4821],{"class":588,"line":1439},[586,4822,831],{"class":728},[586,4824,4825],{"class":588,"line":1445},[586,4826,941],{"emptyLinePlaceholder":940},[586,4828,4829,4831,4833,4836,4838,4840,4842,4844,4846,4848,4850,4852,4854,4856],{"class":588,"line":1469},[586,4830,722],{"class":721},[586,4832,1305],{"class":1064},[586,4834,4835],{"class":1308}," useCollection",[586,4837,1330],{"class":728},[586,4839,2797],{"class":592},[586,4841,1353],{"class":728},[586,4843,2201],{"class":592},[586,4845,2237],{"class":742},[586,4847,3067],{"class":728},[586,4849,3224],{"class":1315},[586,4851,739],{"class":728},[586,4853,1321],{"class":592},[586,4855,2139],{"class":728},[586,4857,729],{"class":728},[586,4859,4860,4862,4864,4866,4868,4870,4872,4874,4877,4879,4881,4883,4885,4887],{"class":588,"line":1475},[586,4861,1548],{"class":721},[586,4863,4792],{"class":1308},[586,4865,1330],{"class":728},[586,4867,2797],{"class":592},[586,4869,1690],{"class":728},[586,4871,1312],{"class":735},[586,4873,2022],{"class":728},[586,4875,4876],{"class":596},"\u002Fapi\u002Fcms\u002Fcollections\u002F",[586,4878,1387],{"class":728},[586,4880,3224],{"class":742},[586,4882,1392],{"class":728},[586,4884,1888],{"class":728},[586,4886,4816],{"class":742},[586,4888,1532],{"class":735},[586,4890,4891],{"class":588,"line":1481},[586,4892,831],{"class":728},[567,4894,4895],{},"Usage in a Client Component:",[576,4897,4899],{"className":1225,"code":4898,"language":1227,"meta":581,"style":581},"\u002F\u002F components\u002FRecentPosts.tsx\n'use client'\n\nimport { useCollection } from '@\u002Fhooks\u002FuseTentoCMS'\nimport type { BlogPostContent } from '@\u002Ftypes\u002Fcms'\n\nexport default function RecentPosts() {\n  \u002F\u002F `useCollection` returns flat collection items — unlike `usePage`, there's\n  \u002F\u002F no `Page\u003CT>` envelope here, so `BlogPostContent`'s own flat shape\n  \u002F\u002F (`id`, `slug`, `title`, `seo?`, plus custom fields at the top level) applies directly.\n  const { data: posts, error, isLoading } = useCollection\u003CBlogPostContent[]>('blog-posts')\n\n  if (isLoading) return \u003Cdiv>Loading...\u003C\u002Fdiv>\n  if (error) return \u003Cdiv>Failed to load posts\u003C\u002Fdiv>\n\n  return (\n    \u003Cdiv>\n      {posts?.map((post) => (\n        \u003Carticle key={post.id}>\n          \u003Ch2>{post.title}\u003C\u002Fh2>\n          \u003Cp>{post.excerpt}\u003C\u002Fp>\n        \u003C\u002Farticle>\n      ))}\n    \u003C\u002Fdiv>\n  )\n}\n",[583,4900,4901,4906,4914,4918,4937,4958,4962,4977,4982,4987,4992,5040,5044,5074,5111,5115,5121,5129,5151,5169,5190,5211,5219,5225,5233,5237],{"__ignoreMap":581},[586,4902,4903],{"class":588,"line":589},[586,4904,4905],{"class":714},"\u002F\u002F components\u002FRecentPosts.tsx\n",[586,4907,4908,4910,4912],{"class":588,"line":718},[586,4909,793],{"class":728},[586,4911,4621],{"class":596},[586,4913,1261],{"class":728},[586,4915,4916],{"class":588,"line":732},[586,4917,941],{"emptyLinePlaceholder":940},[586,4919,4920,4922,4924,4926,4928,4930,4932,4935],{"class":588,"line":759},[586,4921,1239],{"class":721},[586,4923,1245],{"class":728},[586,4925,4835],{"class":742},[586,4927,1251],{"class":728},[586,4929,1254],{"class":721},[586,4931,788],{"class":728},[586,4933,4934],{"class":596},"@\u002Fhooks\u002FuseTentoCMS",[586,4936,1261],{"class":728},[586,4938,4939,4941,4943,4945,4948,4950,4952,4954,4956],{"class":588,"line":780},[586,4940,1239],{"class":721},[586,4942,1242],{"class":721},[586,4944,1245],{"class":728},[586,4946,4947],{"class":742}," BlogPostContent",[586,4949,1251],{"class":728},[586,4951,1254],{"class":721},[586,4953,788],{"class":728},[586,4955,1281],{"class":596},[586,4957,1261],{"class":728},[586,4959,4960],{"class":588,"line":798},[586,4961,941],{"emptyLinePlaceholder":940},[586,4963,4964,4966,4968,4970,4973,4975],{"class":588,"line":808},[586,4965,722],{"class":721},[586,4967,725],{"class":721},[586,4969,1305],{"class":1064},[586,4971,4972],{"class":1308}," RecentPosts",[586,4974,1982],{"class":728},[586,4976,729],{"class":728},[586,4978,4979],{"class":588,"line":822},[586,4980,4981],{"class":714},"  \u002F\u002F `useCollection` returns flat collection items — unlike `usePage`, there's\n",[586,4983,4984],{"class":588,"line":828},[586,4985,4986],{"class":714},"  \u002F\u002F no `Page\u003CT>` envelope here, so `BlogPostContent`'s own flat shape\n",[586,4988,4989],{"class":588,"line":1397},[586,4990,4991],{"class":714},"  \u002F\u002F (`id`, `slug`, `title`, `seo?`, plus custom fields at the top level) applies directly.\n",[586,4993,4994,4996,4998,5000,5002,5005,5007,5009,5011,5014,5016,5018,5020,5022,5025,5027,5029,5031,5033,5036,5038],{"class":588,"line":1403},[586,4995,1347],{"class":1064},[586,4997,1245],{"class":728},[586,4999,4227],{"class":735},[586,5001,739],{"class":728},[586,5003,5004],{"class":742}," posts",[586,5006,1888],{"class":728},[586,5008,4176],{"class":742},[586,5010,1888],{"class":728},[586,5012,5013],{"class":742}," isLoading",[586,5015,1251],{"class":728},[586,5017,1353],{"class":728},[586,5019,4835],{"class":1308},[586,5021,1330],{"class":728},[586,5023,5024],{"class":592},"BlogPostContent",[586,5026,2237],{"class":735},[586,5028,1690],{"class":728},[586,5030,1312],{"class":735},[586,5032,793],{"class":728},[586,5034,5035],{"class":596},"blog-posts",[586,5037,793],{"class":728},[586,5039,1532],{"class":735},[586,5041,5042],{"class":588,"line":1413},[586,5043,941],{"emptyLinePlaceholder":940},[586,5045,5046,5048,5050,5053,5055,5058,5060,5062,5064,5067,5070,5072],{"class":588,"line":1439},[586,5047,1489],{"class":721},[586,5049,1492],{"class":735},[586,5051,5052],{"class":742},"isLoading",[586,5054,1506],{"class":735},[586,5056,5057],{"class":721},"return",[586,5059,3057],{"class":735},[586,5061,1730],{"class":592},[586,5063,1690],{"class":735},[586,5065,5066],{"class":742},"Loading",[586,5068,5069],{"class":728},"...\u003C\u002F",[586,5071,1730],{"class":742},[586,5073,1678],{"class":728},[586,5075,5076,5078,5080,5083,5085,5087,5089,5091,5093,5096,5099,5102,5104,5107,5109],{"class":588,"line":1445},[586,5077,1489],{"class":721},[586,5079,1492],{"class":735},[586,5081,5082],{"class":742},"error",[586,5084,1506],{"class":735},[586,5086,5057],{"class":721},[586,5088,3057],{"class":735},[586,5090,1730],{"class":592},[586,5092,1690],{"class":735},[586,5094,5095],{"class":742},"Failed",[586,5097,5098],{"class":742}," to",[586,5100,5101],{"class":742}," load",[586,5103,5004],{"class":742},[586,5105,5106],{"class":728},"\u003C\u002F",[586,5108,1730],{"class":742},[586,5110,1678],{"class":728},[586,5112,5113],{"class":588,"line":1469},[586,5114,941],{"emptyLinePlaceholder":940},[586,5116,5117,5119],{"class":588,"line":1475},[586,5118,1548],{"class":721},[586,5120,1666],{"class":735},[586,5122,5123,5125,5127],{"class":588,"line":1481},[586,5124,1672],{"class":735},[586,5126,1730],{"class":592},[586,5128,1678],{"class":735},[586,5130,5131,5133,5136,5138,5140,5142,5145,5147,5149],{"class":588,"line":1486},[586,5132,1717],{"class":728},[586,5134,5135],{"class":1315},"posts",[586,5137,2919],{"class":735},[586,5139,1879],{"class":1315},[586,5141,1882],{"class":735},[586,5143,5144],{"class":1315},"post",[586,5146,1506],{"class":735},[586,5148,1896],{"class":728},[586,5150,1666],{"class":735},[586,5152,5153,5155,5157,5159,5161,5164,5166],{"class":588,"line":1511},[586,5154,1750],{"class":728},[586,5156,1675],{"class":742},[586,5158,1909],{"class":742},[586,5160,1912],{"class":728},[586,5162,5163],{"class":735},"post.",[586,5165,2512],{"class":742},[586,5167,5168],{"class":728},"}>\n",[586,5170,5171,5173,5175,5177,5179,5181,5184,5186,5188],{"class":588,"line":1535},[586,5172,2532],{"class":735},[586,5174,571],{"class":592},[586,5176,1690],{"class":735},[586,5178,1693],{"class":728},[586,5180,5163],{"class":735},[586,5182,5183],{"class":742},"title",[586,5185,1702],{"class":728},[586,5187,571],{"class":742},[586,5189,1678],{"class":728},[586,5191,5192,5194,5196,5198,5200,5202,5205,5207,5209],{"class":588,"line":1540},[586,5193,2532],{"class":735},[586,5195,567],{"class":592},[586,5197,1690],{"class":735},[586,5199,1693],{"class":728},[586,5201,5163],{"class":735},[586,5203,5204],{"class":742},"excerpt",[586,5206,1702],{"class":728},[586,5208,567],{"class":742},[586,5210,1678],{"class":728},[586,5212,5213,5215,5217],{"class":588,"line":1545},[586,5214,2616],{"class":728},[586,5216,1675],{"class":742},[586,5218,1678],{"class":728},[586,5220,5221,5223],{"class":588,"line":1560},[586,5222,1934],{"class":735},[586,5224,831],{"class":728},[586,5226,5227,5229,5231],{"class":588,"line":1565},[586,5228,1942],{"class":728},[586,5230,1730],{"class":742},[586,5232,1678],{"class":728},[586,5234,5235],{"class":588,"line":1570},[586,5236,1478],{"class":735},[586,5238,5239],{"class":588,"line":1588},[586,5240,831],{"class":728},[571,5242,5244,5245,5248,5249,5251,5252],{"id":5243},"typing-pagefields-fields-vs-content","Typing ",[583,5246,5247],{},"page.fields"," — ",[583,5250,643],{}," vs ",[583,5253,639],{},[567,5255,5256],{},"For each page type the generator emits two interfaces:",[961,5258,5259,5279],{},[964,5260,5261,5265,5266,5268,5269,1010,5271,1010,5273,1010,5275,5278],{},[610,5262,5263],{},[583,5264,639],{}," (e.g. ",[583,5267,5024],{},") — base fields (",[583,5270,2512],{},[583,5272,1316],{},[583,5274,5183],{},[583,5276,5277],{},"seo?",") plus the custom fields.",[964,5280,5281,5265,5285,5287],{},[610,5282,5283],{},[583,5284,643],{},[583,5286,1337],{},") — only the custom fields.",[567,5289,5290,5291,5293,5294,5297,5298,5301,5302,5304,5305,5307],{},"The runtime ",[583,5292,5247],{}," object contains only the custom fields (the system id\u002Fslug\u002Ftitle are top-level, ",[583,5295,5296],{},"seo"," lives under ",[583,5299,5300],{},"page.seo","). Use ",[583,5303,643],{}," to type ",[583,5306,5247],{}," directly:",[576,5309,5311],{"className":1225,"code":5310,"language":1227,"meta":581,"style":581},"import type { BlogPostFields } from '@\u002Ftypes\u002Fcms'\n\nconst fields: BlogPostFields = page.fields \u002F\u002F exact custom-field shape\n",[583,5312,5313,5333,5337],{"__ignoreMap":581},[586,5314,5315,5317,5319,5321,5323,5325,5327,5329,5331],{"class":588,"line":589},[586,5316,1239],{"class":721},[586,5318,1242],{"class":721},[586,5320,1245],{"class":728},[586,5322,1272],{"class":742},[586,5324,1251],{"class":728},[586,5326,1254],{"class":721},[586,5328,788],{"class":728},[586,5330,1281],{"class":596},[586,5332,1261],{"class":728},[586,5334,5335],{"class":588,"line":718},[586,5336,941],{"emptyLinePlaceholder":940},[586,5338,5339,5341,5344,5346,5348,5350,5352,5354,5357],{"class":588,"line":732},[586,5340,2693],{"class":1064},[586,5342,5343],{"class":742}," fields",[586,5345,739],{"class":728},[586,5347,1272],{"class":592},[586,5349,1353],{"class":728},[586,5351,1636],{"class":742},[586,5353,702],{"class":728},[586,5355,5356],{"class":742},"fields ",[586,5358,5359],{"class":714},"\u002F\u002F exact custom-field shape\n",[567,5361,5362,5365,5366,1010,5368,1010,5370,5372,5373,5375,5376,5378,5379,5381,5382,5384,5385,5389],{},[610,5363,5364],{},"Exception:"," if a page type declares its own content field named ",[583,5367,5183],{},[583,5369,1316],{},[583,5371,2512],{},", or ",[583,5374,5296],{},", that field appears in ",[583,5377,5247],{}," at runtime — and ",[583,5380,643],{}," includes it. ",[583,5383,643],{}," excludes the ",[5386,5387,5388],"em",{},"system"," base fields, not any same-named content field the page type itself declares.",[567,5391,5392,5393,5395],{},"Both interfaces are exported; ",[583,5394,639],{}," is unchanged for back-compat.",[571,5397,5399],{"id":5398},"known-limitations","Known Limitations",[961,5401,5402,5423],{},[964,5403,5404,5412,5413,5416,5417,5419,5420,702],{},[610,5405,5406,5408,5409],{},[583,5407,1049],{}," fields are typed ",[583,5410,5411],{},"unknown",", not ",[583,5414,5415],{},"Record\u003Cstring, unknown>",", because a ",[583,5418,1049],{}," field may hold an array or an object. Narrow or cast at the use site before accessing properties — for example: ",[583,5421,5422],{},"const facts = fields.stats as Array\u003C{ metric: string }>",[964,5424,5425,5428,5429,5432,5433,5436,5437,5439,5440,5443],{},[610,5426,5427],{},"Resolved-reference and repeater field types can differ across components when the source schema models the same field differently."," A ",[583,5430,5431],{},"background"," field defined as a reference in one component resolves to ",[583,5434,5435],{},"ResolvedReference",", while the same field modelled as a plain object elsewhere becomes ",[583,5438,5415],{},". An untyped repeater (no sub-fields defined) falls back to ",[583,5441,5442],{},"Record\u003Cstring, unknown>[]",". The generator reflects the source schema faithfully — align the field definitions in your TentoCMS schema for consistent, fully-typed output.",[571,5445,5447],{"id":5446},"development-workflow","Development Workflow",[653,5449,5451],{"id":5450},"watch-mode-for-development","Watch Mode for Development",[567,5453,5454],{},"Run the type generator in watch mode during development:",[576,5456,5458],{"className":578,"code":5457,"language":580,"meta":581,"style":581},"# Terminal 1\nnpm run types:watch\n\n# Terminal 2\nnpm run dev\n",[583,5459,5460,5465,5474,5478,5483],{"__ignoreMap":581},[586,5461,5462],{"class":588,"line":589},[586,5463,5464],{"class":714},"# Terminal 1\n",[586,5466,5467,5469,5471],{"class":588,"line":718},[586,5468,593],{"class":592},[586,5470,1198],{"class":596},[586,5472,5473],{"class":596}," types:watch\n",[586,5475,5476],{"class":588,"line":732},[586,5477,941],{"emptyLinePlaceholder":940},[586,5479,5480],{"class":588,"line":759},[586,5481,5482],{"class":714},"# Terminal 2\n",[586,5484,5485,5487,5489],{"class":588,"line":780},[586,5486,593],{"class":592},[586,5488,1198],{"class":596},[586,5490,5491],{"class":596}," dev\n",[567,5493,5494],{},"The type generator will automatically regenerate types when your CMS schemas change (polls every 30 seconds by default).",[653,5496,5498],{"id":5497},"recommended-workflow","Recommended Workflow",[5500,5501,5502,5505,5508,5511,5514],"ol",{},[964,5503,5504],{},"Update your page types or collections in TentoCMS admin",[964,5506,5507],{},"Types regenerate automatically (in watch mode)",[964,5509,5510],{},"TypeScript shows errors in your IDE immediately",[964,5512,5513],{},"Update your components to match the new schema",[964,5515,5516,5517,5520,5521,5524],{},"Use ",[583,5518,5519],{},"revalidatePath()"," or ",[583,5522,5523],{},"revalidateTag()"," to update cached content",[571,5526,5528],{"id":5527},"on-demand-revalidation","On-Demand Revalidation",[567,5530,5531],{},"Use Next.js 14's revalidation features to update content:",[576,5533,5535],{"className":1225,"code":5534,"language":1227,"meta":581,"style":581},"\u002F\u002F app\u002Fapi\u002Frevalidate\u002Froute.ts\nimport { revalidatePath, revalidateTag } from 'next\u002Fcache'\nimport { NextRequest } from 'next\u002Fserver'\n\nexport async function POST(request: NextRequest) {\n  const secret = request.nextUrl.searchParams.get('secret')\n\n  \u002F\u002F Verify webhook secret\n  if (secret !== process.env.REVALIDATION_SECRET) {\n    return Response.json({ message: 'Invalid secret' }, { status: 401 })\n  }\n\n  const body = await request.json()\n  const { path, tag } = body\n\n  try {\n    if (path) {\n      revalidatePath(path)\n    }\n    if (tag) {\n      revalidateTag(tag)\n    }\n\n    return Response.json({ revalidated: true, now: Date.now() })\n  } catch (err) {\n    return Response.json(\n      { message: 'Error revalidating', error: err },\n      { status: 500 }\n    )\n  }\n}\n",[583,5536,5537,5542,5567,5585,5589,5613,5651,5655,5660,5686,5727,5731,5735,5754,5775,5779,5786,5800,5811,5815,5828,5839,5843,5847,5892,5908,5920,5946,5959,5964,5968],{"__ignoreMap":581},[586,5538,5539],{"class":588,"line":589},[586,5540,5541],{"class":714},"\u002F\u002F app\u002Fapi\u002Frevalidate\u002Froute.ts\n",[586,5543,5544,5546,5548,5551,5553,5556,5558,5560,5562,5565],{"class":588,"line":718},[586,5545,1239],{"class":721},[586,5547,1245],{"class":728},[586,5549,5550],{"class":742}," revalidatePath",[586,5552,1888],{"class":728},[586,5554,5555],{"class":742}," revalidateTag",[586,5557,1251],{"class":728},[586,5559,1254],{"class":721},[586,5561,788],{"class":728},[586,5563,5564],{"class":596},"next\u002Fcache",[586,5566,1261],{"class":728},[586,5568,5569,5571,5573,5575,5577,5579,5581,5583],{"class":588,"line":732},[586,5570,1239],{"class":721},[586,5572,1245],{"class":728},[586,5574,3977],{"class":742},[586,5576,1251],{"class":728},[586,5578,1254],{"class":721},[586,5580,788],{"class":728},[586,5582,3986],{"class":596},[586,5584,1261],{"class":728},[586,5586,5587],{"class":588,"line":759},[586,5588,941],{"emptyLinePlaceholder":940},[586,5590,5591,5593,5595,5597,5600,5602,5605,5607,5609,5611],{"class":588,"line":780},[586,5592,722],{"class":721},[586,5594,1577],{"class":1064},[586,5596,1305],{"class":1064},[586,5598,5599],{"class":1308}," POST",[586,5601,1312],{"class":728},[586,5603,5604],{"class":1315},"request",[586,5606,739],{"class":728},[586,5608,3977],{"class":592},[586,5610,2139],{"class":728},[586,5612,729],{"class":728},[586,5614,5615,5617,5620,5622,5625,5627,5630,5632,5635,5637,5640,5642,5644,5647,5649],{"class":588,"line":798},[586,5616,1347],{"class":1064},[586,5618,5619],{"class":742}," secret",[586,5621,1353],{"class":728},[586,5623,5624],{"class":742}," request",[586,5626,702],{"class":728},[586,5628,5629],{"class":742},"nextUrl",[586,5631,702],{"class":728},[586,5633,5634],{"class":742},"searchParams",[586,5636,702],{"class":728},[586,5638,5639],{"class":1308},"get",[586,5641,1312],{"class":735},[586,5643,793],{"class":728},[586,5645,5646],{"class":596},"secret",[586,5648,793],{"class":728},[586,5650,1532],{"class":735},[586,5652,5653],{"class":588,"line":808},[586,5654,941],{"emptyLinePlaceholder":940},[586,5656,5657],{"class":588,"line":822},[586,5658,5659],{"class":714},"  \u002F\u002F Verify webhook secret\n",[586,5661,5662,5664,5666,5668,5671,5673,5675,5677,5679,5682,5684],{"class":588,"line":828},[586,5663,1489],{"class":721},[586,5665,1492],{"class":735},[586,5667,5646],{"class":742},[586,5669,5670],{"class":728}," !==",[586,5672,743],{"class":742},[586,5674,702],{"class":728},[586,5676,748],{"class":742},[586,5678,702],{"class":728},[586,5680,5681],{"class":742},"REVALIDATION_SECRET",[586,5683,1506],{"class":735},[586,5685,1056],{"class":728},[586,5687,5688,5690,5692,5694,5696,5698,5700,5703,5705,5707,5710,5712,5714,5716,5718,5720,5723,5725],{"class":588,"line":1397},[586,5689,3911],{"class":721},[586,5691,4165],{"class":742},[586,5693,702],{"class":728},[586,5695,1049],{"class":1308},[586,5697,1312],{"class":735},[586,5699,1693],{"class":728},[586,5701,5702],{"class":735}," message",[586,5704,739],{"class":728},[586,5706,788],{"class":728},[586,5708,5709],{"class":596},"Invalid secret",[586,5711,793],{"class":728},[586,5713,1463],{"class":728},[586,5715,1245],{"class":728},[586,5717,4192],{"class":735},[586,5719,739],{"class":728},[586,5721,5722],{"class":816}," 401",[586,5724,1251],{"class":728},[586,5726,1532],{"class":735},[586,5728,5729],{"class":588,"line":1403},[586,5730,1178],{"class":728},[586,5732,5733],{"class":588,"line":1413},[586,5734,941],{"emptyLinePlaceholder":940},[586,5736,5737,5739,5742,5744,5746,5748,5750,5752],{"class":588,"line":1439},[586,5738,1347],{"class":1064},[586,5740,5741],{"class":742}," body",[586,5743,1353],{"class":728},[586,5745,1356],{"class":721},[586,5747,5624],{"class":742},[586,5749,702],{"class":728},[586,5751,1049],{"class":1308},[586,5753,1557],{"class":735},[586,5755,5756,5758,5760,5763,5765,5768,5770,5772],{"class":588,"line":1445},[586,5757,1347],{"class":1064},[586,5759,1245],{"class":728},[586,5761,5762],{"class":742}," path",[586,5764,1888],{"class":728},[586,5766,5767],{"class":742}," tag",[586,5769,1251],{"class":728},[586,5771,1353],{"class":728},[586,5773,5774],{"class":742}," body\n",[586,5776,5777],{"class":588,"line":1469},[586,5778,941],{"emptyLinePlaceholder":940},[586,5780,5781,5784],{"class":588,"line":1475},[586,5782,5783],{"class":721},"  try",[586,5785,729],{"class":728},[586,5787,5788,5791,5793,5796,5798],{"class":588,"line":1481},[586,5789,5790],{"class":721},"    if",[586,5792,1492],{"class":735},[586,5794,5795],{"class":742},"path",[586,5797,1506],{"class":735},[586,5799,1056],{"class":728},[586,5801,5802,5805,5807,5809],{"class":588,"line":1486},[586,5803,5804],{"class":1308},"      revalidatePath",[586,5806,1312],{"class":735},[586,5808,5795],{"class":742},[586,5810,1532],{"class":735},[586,5812,5813],{"class":588,"line":1511},[586,5814,1472],{"class":728},[586,5816,5817,5819,5821,5824,5826],{"class":588,"line":1535},[586,5818,5790],{"class":721},[586,5820,1492],{"class":735},[586,5822,5823],{"class":742},"tag",[586,5825,1506],{"class":735},[586,5827,1056],{"class":728},[586,5829,5830,5833,5835,5837],{"class":588,"line":1540},[586,5831,5832],{"class":1308},"      revalidateTag",[586,5834,1312],{"class":735},[586,5836,5823],{"class":742},[586,5838,1532],{"class":735},[586,5840,5841],{"class":588,"line":1545},[586,5842,1472],{"class":728},[586,5844,5845],{"class":588,"line":1560},[586,5846,941],{"emptyLinePlaceholder":940},[586,5848,5849,5851,5853,5855,5857,5859,5861,5864,5866,5870,5872,5875,5877,5880,5882,5885,5888,5890],{"class":588,"line":1565},[586,5850,3911],{"class":721},[586,5852,4165],{"class":742},[586,5854,702],{"class":728},[586,5856,1049],{"class":1308},[586,5858,1312],{"class":735},[586,5860,1693],{"class":728},[586,5862,5863],{"class":735}," revalidated",[586,5865,739],{"class":728},[586,5867,5869],{"class":5868},"sfNiH"," true",[586,5871,1888],{"class":728},[586,5873,5874],{"class":735}," now",[586,5876,739],{"class":728},[586,5878,5879],{"class":742}," Date",[586,5881,702],{"class":728},[586,5883,5884],{"class":1308},"now",[586,5886,5887],{"class":735},"() ",[586,5889,1381],{"class":728},[586,5891,1532],{"class":735},[586,5893,5894,5896,5899,5901,5904,5906],{"class":588,"line":1570},[586,5895,2168],{"class":728},[586,5897,5898],{"class":721}," catch",[586,5900,1492],{"class":735},[586,5902,5903],{"class":742},"err",[586,5905,1506],{"class":735},[586,5907,1056],{"class":728},[586,5909,5910,5912,5914,5916,5918],{"class":588,"line":1588},[586,5911,3911],{"class":721},[586,5913,4165],{"class":742},[586,5915,702],{"class":728},[586,5917,1049],{"class":1308},[586,5919,1362],{"class":735},[586,5921,5922,5924,5926,5928,5930,5933,5935,5937,5939,5941,5944],{"class":588,"line":1596},[586,5923,1717],{"class":728},[586,5925,5702],{"class":735},[586,5927,739],{"class":728},[586,5929,788],{"class":728},[586,5931,5932],{"class":596},"Error revalidating",[586,5934,793],{"class":728},[586,5936,1888],{"class":728},[586,5938,4176],{"class":735},[586,5940,739],{"class":728},[586,5942,5943],{"class":742}," err",[586,5945,4128],{"class":728},[586,5947,5948,5950,5952,5954,5957],{"class":588,"line":1604},[586,5949,1717],{"class":728},[586,5951,4192],{"class":735},[586,5953,739],{"class":728},[586,5955,5956],{"class":816}," 500",[586,5958,1620],{"class":728},[586,5960,5961],{"class":588,"line":1623},[586,5962,5963],{"class":735},"    )\n",[586,5965,5966],{"class":588,"line":1631},[586,5967,1178],{"class":728},[586,5969,5970],{"class":588,"line":1656},[586,5971,831],{"class":728},[567,5973,5974],{},"Configure webhook in TentoCMS to call this endpoint when content is published.",[571,5976,5978],{"id":5977},"configuration-options","Configuration Options",[567,5980,5981,5982,739],{},"Full configuration reference for ",[583,5983,662],{},[576,5985,5987],{"className":705,"code":5986,"language":707,"meta":581,"style":581},"export default {\n  \u002F\u002F Your TentoCMS API key (use environment variable)\n  apiKey: process.env.TENTO_API_KEY,\n\n  \u002F\u002F TentoCMS API URL\n  apiUrl: process.env.TENTO_BASE_URL,\n\n  \u002F\u002F Output path for generated types\n  output: '.\u002Fsrc\u002Ftypes\u002Fcms.ts',\n\n  \u002F\u002F Watch mode configuration\n  watch: {\n    \u002F\u002F Polling interval in seconds\n    interval: 30,\n  },\n}\n",[583,5988,5989,5997,6002,6020,6024,6029,6047,6051,6056,6070,6074,6079,6087,6092,6102,6106],{"__ignoreMap":581},[586,5990,5991,5993,5995],{"class":588,"line":589},[586,5992,722],{"class":721},[586,5994,725],{"class":721},[586,5996,729],{"class":728},[586,5998,5999],{"class":588,"line":718},[586,6000,6001],{"class":714},"  \u002F\u002F Your TentoCMS API key (use environment variable)\n",[586,6003,6004,6006,6008,6010,6012,6014,6016,6018],{"class":588,"line":732},[586,6005,736],{"class":735},[586,6007,739],{"class":728},[586,6009,743],{"class":742},[586,6011,702],{"class":728},[586,6013,748],{"class":742},[586,6015,702],{"class":728},[586,6017,753],{"class":742},[586,6019,756],{"class":728},[586,6021,6022],{"class":588,"line":759},[586,6023,941],{"emptyLinePlaceholder":940},[586,6025,6026],{"class":588,"line":780},[586,6027,6028],{"class":714},"  \u002F\u002F TentoCMS API URL\n",[586,6030,6031,6033,6035,6037,6039,6041,6043,6045],{"class":588,"line":798},[586,6032,762],{"class":735},[586,6034,739],{"class":728},[586,6036,743],{"class":742},[586,6038,702],{"class":728},[586,6040,748],{"class":742},[586,6042,702],{"class":728},[586,6044,775],{"class":742},[586,6046,756],{"class":728},[586,6048,6049],{"class":588,"line":808},[586,6050,941],{"emptyLinePlaceholder":940},[586,6052,6053],{"class":588,"line":822},[586,6054,6055],{"class":714},"  \u002F\u002F Output path for generated types\n",[586,6057,6058,6060,6062,6064,6066,6068],{"class":588,"line":828},[586,6059,783],{"class":735},[586,6061,739],{"class":728},[586,6063,788],{"class":728},[586,6065,693],{"class":596},[586,6067,793],{"class":728},[586,6069,756],{"class":728},[586,6071,6072],{"class":588,"line":1397},[586,6073,941],{"emptyLinePlaceholder":940},[586,6075,6076],{"class":588,"line":1403},[586,6077,6078],{"class":714},"  \u002F\u002F Watch mode configuration\n",[586,6080,6081,6083,6085],{"class":588,"line":1413},[586,6082,801],{"class":735},[586,6084,739],{"class":728},[586,6086,729],{"class":728},[586,6088,6089],{"class":588,"line":1439},[586,6090,6091],{"class":714},"    \u002F\u002F Polling interval in seconds\n",[586,6093,6094,6096,6098,6100],{"class":588,"line":1445},[586,6095,811],{"class":735},[586,6097,739],{"class":728},[586,6099,817],{"class":816},[586,6101,756],{"class":728},[586,6103,6104],{"class":588,"line":1469},[586,6105,825],{"class":728},[586,6107,6108],{"class":588,"line":1475},[586,6109,831],{"class":728},[571,6111,54],{"id":6112},"troubleshooting",[653,6114,6116],{"id":6115},"types-not-updating","Types Not Updating",[5500,6118,6119,6128,6131,6137],{},[964,6120,6121,6122,6124,6125,6127],{},"Check that ",[583,6123,753],{}," is set in your ",[583,6126,841],{}," file",[964,6129,6130],{},"Verify the API key has read permissions",[964,6132,6133,6134,6136],{},"Run ",[583,6135,1170],{}," manually to see error messages",[964,6138,6139],{},"Check the generated file timestamp",[653,6141,6143],{"id":6142},"typescript-errors-after-schema-changes","TypeScript Errors After Schema Changes",[5500,6145,6146,6151,6158],{},[964,6147,6148,6149],{},"Regenerate types: ",[583,6150,1170],{},[964,6152,6153,6154,6157],{},"Restart your TypeScript server in VSCode: ",[583,6155,6156],{},"Cmd+Shift+P"," → \"TypeScript: Restart TS Server\"",[964,6159,6160],{},"If errors persist, check that your components match the new schema",[653,6162,6164],{"id":6163},"environment-variables-not-found","Environment Variables Not Found",[567,6166,6167,6168,6170],{},"In Next.js, server-only variables must NOT have the ",[583,6169,876],{}," prefix:",[576,6172,6174],{"className":578,"code":6173,"language":580,"meta":581,"style":581},"# .env.local\nTENTO_API_KEY=secret_key_here       # Server-only (never use NEXT_PUBLIC_ for this)\nTENTO_BASE_URL=https:\u002F\u002Ftento-api.intelligentlending.co.uk  # Server-only\n",[583,6175,6176,6180,6192],{"__ignoreMap":581},[586,6177,6178],{"class":588,"line":589},[586,6179,851],{"class":714},[586,6181,6182,6184,6186,6189],{"class":588,"line":718},[586,6183,753],{"class":742},[586,6185,858],{"class":728},[586,6187,6188],{"class":596},"secret_key_here",[586,6190,6191],{"class":714},"       # Server-only (never use NEXT_PUBLIC_ for this)\n",[586,6193,6194,6196,6198,6201],{"class":588,"line":732},[586,6195,775],{"class":742},[586,6197,858],{"class":728},[586,6199,6200],{"class":596},"https:\u002F\u002Ftento-api.intelligentlending.co.uk",[586,6202,6203],{"class":714},"  # Server-only\n",[653,6205,6207],{"id":6206},"build-fails-with-type-errors","Build Fails with Type Errors",[567,6209,6210],{},"Ensure types are generated before building:",[576,6212,6214],{"className":1047,"code":6213,"language":1049,"meta":581,"style":581},"{\n  \"scripts\": {\n    \"prebuild\": \"npm run types:generate\",\n    \"build\": \"next build\"\n  }\n}\n",[583,6215,6216,6220,6232,6251,6267,6271],{"__ignoreMap":581},[586,6217,6218],{"class":588,"line":589},[586,6219,1056],{"class":728},[586,6221,6222,6224,6226,6228,6230],{"class":588,"line":718},[586,6223,1061],{"class":728},[586,6225,1065],{"class":1064},[586,6227,1068],{"class":728},[586,6229,739],{"class":728},[586,6231,729],{"class":728},[586,6233,6234,6236,6239,6241,6243,6245,6247,6249],{"class":588,"line":732},[586,6235,1077],{"class":728},[586,6237,6238],{"class":592},"prebuild",[586,6240,1068],{"class":728},[586,6242,739],{"class":728},[586,6244,1087],{"class":728},[586,6246,1170],{"class":596},[586,6248,1068],{"class":728},[586,6250,756],{"class":728},[586,6252,6253,6255,6257,6259,6261,6263,6265],{"class":588,"line":759},[586,6254,1077],{"class":728},[586,6256,1101],{"class":592},[586,6258,1068],{"class":728},[586,6260,739],{"class":728},[586,6262,1087],{"class":728},[586,6264,1110],{"class":596},[586,6266,1173],{"class":728},[586,6268,6269],{"class":588,"line":780},[586,6270,1178],{"class":728},[586,6272,6273],{"class":588,"line":798},[586,6274,831],{"class":728},[571,6276,6278],{"id":6277},"next-steps","Next Steps",[961,6280,6281,6289,6297],{},[964,6282,6283,6284,6288],{},"Read the ",[1026,6285,6287],{"href":6286},".\u002Fnextjs","Next.js Integration Guide"," for preview mode and revalidation patterns",[964,6290,6291,6292,6296],{},"Browse the ",[1026,6293,6295],{"href":6294},"..\u002Fsdk\u002Freference\u002Freadme","SDK Reference"," for the full client API surface",[964,6298,6299,6300],{},"Learn about ",[1026,6301,6305],{"href":6302,"rel":6303},"https:\u002F\u002Fnextjs.org\u002Fdocs\u002Fapp\u002Fbuilding-your-application\u002Fdata-fetching\u002Ffetching-caching-and-revalidating",[6304],"nofollow","ISR and Caching",[6307,6308,6309],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":581,"searchDepth":718,"depth":718,"links":6311},[6312,6313,6319,6326,6328,6329,6333,6334,6335,6341],{"id":573,"depth":718,"text":574},{"id":650,"depth":718,"text":651,"children":6314},[6315,6316,6317,6318],{"id":655,"depth":732,"text":656},{"id":834,"depth":732,"text":835},{"id":1037,"depth":732,"text":1038},{"id":1185,"depth":732,"text":1186},{"id":1210,"depth":718,"text":1211,"children":6320},[6321,6322,6323,6324,6325],{"id":1214,"depth":732,"text":1215},{"id":2179,"depth":732,"text":2180},{"id":2645,"depth":732,"text":2646},{"id":3569,"depth":732,"text":3570},{"id":3954,"depth":732,"text":3955},{"id":5243,"depth":718,"text":6327},"Typing page.fields — *Fields vs *Content",{"id":5398,"depth":718,"text":5399},{"id":5446,"depth":718,"text":5447,"children":6330},[6331,6332],{"id":5450,"depth":732,"text":5451},{"id":5497,"depth":732,"text":5498},{"id":5527,"depth":718,"text":5528},{"id":5977,"depth":718,"text":5978},{"id":6112,"depth":718,"text":54,"children":6336},[6337,6338,6339,6340],{"id":6115,"depth":732,"text":6116},{"id":6142,"depth":732,"text":6143},{"id":6163,"depth":732,"text":6164},{"id":6206,"depth":732,"text":6207},{"id":6277,"depth":718,"text":6278},"Generating typed content from your schemas in a Next.js project.","md",{},{"title":137,"description":6342},"SrokU5OKGXhvK9MdhJ380k8AxKPPTkwXjaAtSmR5cac",[6348,6350],{"title":133,"path":411,"stem":412,"description":6349,"children":-1},"Generating typed content from your schemas in an Astro project.",{"title":141,"path":417,"stem":418,"description":6351,"children":-1},"Generating typed content from your schemas in a Nuxt 4 project.",1787919221351]