[{"data":1,"prerenderedAt":3218},["ShallowReactive",2],{"navigation_docs":3,"docs-navigation-with-icons":419,"-docs-sdk-astro":561,"-docs-sdk-astro-surround":3213},[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":133,"body":563,"description":3208,"extension":3209,"icon":457,"links":489,"meta":3210,"navigation":715,"path":134,"seo":3211,"stem":135,"__hash__":3212},"docs\u002Fdocs\u002Fsdk\u002Fastro.md",{"type":564,"value":565,"toc":3173},"minimark",[566,570,576,581,607,611,618,669,673,678,907,911,916,1004,1008,1130,1133,1244,1248,1364,1368,1575,1579,1597,1704,1708,1845,1849,1852,1860,1863,1867,2007,2011,2066,2070,2073,2145,2148,2204,2208,2302,2306,2309,2394,2398,2529,2533,2536,2597,2600,2640,2644,2647,2836,2839,2940,2943,2947,2969,2973,2995,2999,3053,3057,3094,3098,3101,3105,3108,3136,3139,3143,3169],[567,568,569],"p",{},"Complete guide for integrating TentoCMS with Astro.",[571,572,573],"blockquote",{},[567,574,575],{},"Verified against Astro 5.",[577,578,580],"h2",{"id":579},"installation","Installation",[582,583,588],"pre",{"className":584,"code":585,"language":586,"meta":587,"style":587},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @tentocms\u002Fclient\n","bash","",[589,590,591],"code",{"__ignoreMap":587},[592,593,596,600,604],"span",{"class":594,"line":595},"line",1,[592,597,599],{"class":598},"sBMFI","pnpm",[592,601,603],{"class":602},"sfazB"," add",[592,605,606],{"class":602}," @tentocms\u002Fclient\n",[577,608,610],{"id":609},"environment-variables","Environment Variables",[567,612,613,614,617],{},"Create ",[589,615,616],{},".env",":",[582,619,621],{"className":584,"code":620,"language":586,"meta":587,"style":587},"TENTO_API_KEY=tento_pk_1234567890\nTENTO_PREVIEW_KEY=preview_abc123def456789...\nTENTO_BASE_URL=https:\u002F\u002Ftento-api.intelligentlending.co.uk\nPREVIEW_SECRET=your-random-secret-string\n",[589,622,623,636,647,658],{"__ignoreMap":587},[592,624,625,629,633],{"class":594,"line":595},[592,626,628],{"class":627},"sTEyZ","TENTO_API_KEY",[592,630,632],{"class":631},"sMK4o","=",[592,634,635],{"class":602},"tento_pk_1234567890\n",[592,637,639,642,644],{"class":594,"line":638},2,[592,640,641],{"class":627},"TENTO_PREVIEW_KEY",[592,643,632],{"class":631},[592,645,646],{"class":602},"preview_abc123def456789...\n",[592,648,650,653,655],{"class":594,"line":649},3,[592,651,652],{"class":627},"TENTO_BASE_URL",[592,654,632],{"class":631},[592,656,657],{"class":602},"https:\u002F\u002Ftento-api.intelligentlending.co.uk\n",[592,659,661,664,666],{"class":594,"line":660},4,[592,662,663],{"class":627},"PREVIEW_SECRET",[592,665,632],{"class":631},[592,667,668],{"class":602},"your-random-secret-string\n",[577,670,672],{"id":671},"setup","Setup",[567,674,613,675,617],{},[589,676,677],{},"src\u002Flib\u002Ftento.ts",[582,679,683],{"className":680,"code":681,"language":682,"meta":587,"style":587},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { TentoClient } from '@tentocms\u002Fclient'\n\nexport const tento = new TentoClient({\n  apiKey: import.meta.env.TENTO_API_KEY,\n  baseUrl: import.meta.env.TENTO_BASE_URL,\n})\n\nexport const tentoPreview = new TentoClient({\n  apiKey: import.meta.env.TENTO_API_KEY,\n  previewKey: import.meta.env.TENTO_PREVIEW_KEY,\n  baseUrl: import.meta.env.TENTO_BASE_URL,\n})\n","typescript",[589,684,685,711,717,743,772,796,805,810,830,853,877,900],{"__ignoreMap":587},[592,686,687,691,694,697,700,703,706,708],{"class":594,"line":595},[592,688,690],{"class":689},"s7zQu","import",[592,692,693],{"class":631}," {",[592,695,696],{"class":627}," TentoClient",[592,698,699],{"class":631}," }",[592,701,702],{"class":689}," from",[592,704,705],{"class":631}," '",[592,707,150],{"class":602},[592,709,710],{"class":631},"'\n",[592,712,713],{"class":594,"line":638},[592,714,716],{"emptyLinePlaceholder":715},true,"\n",[592,718,719,722,726,729,731,734,737,740],{"class":594,"line":649},[592,720,721],{"class":689},"export",[592,723,725],{"class":724},"spNyl"," const",[592,727,728],{"class":627}," tento ",[592,730,632],{"class":631},[592,732,733],{"class":631}," new",[592,735,696],{"class":736},"s2Zo4",[592,738,739],{"class":627},"(",[592,741,742],{"class":631},"{\n",[592,744,745,749,751,754,757,760,762,765,767,769],{"class":594,"line":660},[592,746,748],{"class":747},"swJcz","  apiKey",[592,750,617],{"class":631},[592,752,753],{"class":689}," import",[592,755,756],{"class":631},".",[592,758,759],{"class":627},"meta",[592,761,756],{"class":631},[592,763,764],{"class":627},"env",[592,766,756],{"class":631},[592,768,628],{"class":627},[592,770,771],{"class":631},",\n",[592,773,775,778,780,782,784,786,788,790,792,794],{"class":594,"line":774},5,[592,776,777],{"class":747},"  baseUrl",[592,779,617],{"class":631},[592,781,753],{"class":689},[592,783,756],{"class":631},[592,785,759],{"class":627},[592,787,756],{"class":631},[592,789,764],{"class":627},[592,791,756],{"class":631},[592,793,652],{"class":627},[592,795,771],{"class":631},[592,797,799,802],{"class":594,"line":798},6,[592,800,801],{"class":631},"}",[592,803,804],{"class":627},")\n",[592,806,808],{"class":594,"line":807},7,[592,809,716],{"emptyLinePlaceholder":715},[592,811,813,815,817,820,822,824,826,828],{"class":594,"line":812},8,[592,814,721],{"class":689},[592,816,725],{"class":724},[592,818,819],{"class":627}," tentoPreview ",[592,821,632],{"class":631},[592,823,733],{"class":631},[592,825,696],{"class":736},[592,827,739],{"class":627},[592,829,742],{"class":631},[592,831,833,835,837,839,841,843,845,847,849,851],{"class":594,"line":832},9,[592,834,748],{"class":747},[592,836,617],{"class":631},[592,838,753],{"class":689},[592,840,756],{"class":631},[592,842,759],{"class":627},[592,844,756],{"class":631},[592,846,764],{"class":627},[592,848,756],{"class":631},[592,850,628],{"class":627},[592,852,771],{"class":631},[592,854,856,859,861,863,865,867,869,871,873,875],{"class":594,"line":855},10,[592,857,858],{"class":747},"  previewKey",[592,860,617],{"class":631},[592,862,753],{"class":689},[592,864,756],{"class":631},[592,866,759],{"class":627},[592,868,756],{"class":631},[592,870,764],{"class":627},[592,872,756],{"class":631},[592,874,641],{"class":627},[592,876,771],{"class":631},[592,878,880,882,884,886,888,890,892,894,896,898],{"class":594,"line":879},11,[592,881,777],{"class":747},[592,883,617],{"class":631},[592,885,753],{"class":689},[592,887,756],{"class":631},[592,889,759],{"class":627},[592,891,756],{"class":631},[592,893,764],{"class":627},[592,895,756],{"class":631},[592,897,652],{"class":627},[592,899,771],{"class":631},[592,901,903,905],{"class":594,"line":902},12,[592,904,801],{"class":631},[592,906,804],{"class":627},[577,908,910],{"id":909},"basic-usage","Basic Usage",[912,913,915],"h3",{"id":914},"static-pages","Static Pages",[582,917,921],{"className":918,"code":919,"language":920,"meta":587,"style":587},"language-astro shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\n\u002F\u002F src\u002Fpages\u002Findex.astro\nimport { tento } from '..\u002Flib\u002Ftento'\n\nconst page = await tento.pages.getBySlug('homepage')\n---\n\n\u003Chtml>\n  \u003Chead>\n    \u003Ctitle>{page.fields.title}\u003C\u002Ftitle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n    \u003Cdiv set:html={page.fields.content} \u002F>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","astro",[589,922,923,928,933,938,942,947,951,955,960,965,970,975,980,986,992,998],{"__ignoreMap":587},[592,924,925],{"class":594,"line":595},[592,926,927],{},"---\n",[592,929,930],{"class":594,"line":638},[592,931,932],{},"\u002F\u002F src\u002Fpages\u002Findex.astro\n",[592,934,935],{"class":594,"line":649},[592,936,937],{},"import { tento } from '..\u002Flib\u002Ftento'\n",[592,939,940],{"class":594,"line":660},[592,941,716],{"emptyLinePlaceholder":715},[592,943,944],{"class":594,"line":774},[592,945,946],{},"const page = await tento.pages.getBySlug('homepage')\n",[592,948,949],{"class":594,"line":798},[592,950,927],{},[592,952,953],{"class":594,"line":807},[592,954,716],{"emptyLinePlaceholder":715},[592,956,957],{"class":594,"line":812},[592,958,959],{},"\u003Chtml>\n",[592,961,962],{"class":594,"line":832},[592,963,964],{},"  \u003Chead>\n",[592,966,967],{"class":594,"line":855},[592,968,969],{},"    \u003Ctitle>{page.fields.title}\u003C\u002Ftitle>\n",[592,971,972],{"class":594,"line":879},[592,973,974],{},"  \u003C\u002Fhead>\n",[592,976,977],{"class":594,"line":902},[592,978,979],{},"  \u003Cbody>\n",[592,981,983],{"class":594,"line":982},13,[592,984,985],{},"    \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n",[592,987,989],{"class":594,"line":988},14,[592,990,991],{},"    \u003Cdiv set:html={page.fields.content} \u002F>\n",[592,993,995],{"class":594,"line":994},15,[592,996,997],{},"  \u003C\u002Fbody>\n",[592,999,1001],{"class":594,"line":1000},16,[592,1002,1003],{},"\u003C\u002Fhtml>\n",[912,1005,1007],{"id":1006},"dynamic-routes","Dynamic Routes",[582,1009,1011],{"className":918,"code":1010,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002F[slug].astro\nimport { tento } from '..\u002Flib\u002Ftento'\n\nexport async function getStaticPaths() {\n  const pages = await tento.pages.list({ limit: 100 })\n\n  return pages.data.map((page) => ({\n    params: { slug: page.slug },\n    props: { page },\n  }))\n}\n\nconst { page } = Astro.props\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Carticle>\n      \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n      \u003Cdiv set:html={page.fields.content} \u002F>\n    \u003C\u002Farticle>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1012,1013,1017,1022,1026,1030,1035,1040,1044,1049,1054,1059,1064,1069,1073,1078,1082,1086,1091,1096,1102,1108,1114,1120,1125],{"__ignoreMap":587},[592,1014,1015],{"class":594,"line":595},[592,1016,927],{},[592,1018,1019],{"class":594,"line":638},[592,1020,1021],{},"\u002F\u002F src\u002Fpages\u002F[slug].astro\n",[592,1023,1024],{"class":594,"line":649},[592,1025,937],{},[592,1027,1028],{"class":594,"line":660},[592,1029,716],{"emptyLinePlaceholder":715},[592,1031,1032],{"class":594,"line":774},[592,1033,1034],{},"export async function getStaticPaths() {\n",[592,1036,1037],{"class":594,"line":798},[592,1038,1039],{},"  const pages = await tento.pages.list({ limit: 100 })\n",[592,1041,1042],{"class":594,"line":807},[592,1043,716],{"emptyLinePlaceholder":715},[592,1045,1046],{"class":594,"line":812},[592,1047,1048],{},"  return pages.data.map((page) => ({\n",[592,1050,1051],{"class":594,"line":832},[592,1052,1053],{},"    params: { slug: page.slug },\n",[592,1055,1056],{"class":594,"line":855},[592,1057,1058],{},"    props: { page },\n",[592,1060,1061],{"class":594,"line":879},[592,1062,1063],{},"  }))\n",[592,1065,1066],{"class":594,"line":902},[592,1067,1068],{},"}\n",[592,1070,1071],{"class":594,"line":982},[592,1072,716],{"emptyLinePlaceholder":715},[592,1074,1075],{"class":594,"line":988},[592,1076,1077],{},"const { page } = Astro.props\n",[592,1079,1080],{"class":594,"line":994},[592,1081,927],{},[592,1083,1084],{"class":594,"line":1000},[592,1085,716],{"emptyLinePlaceholder":715},[592,1087,1089],{"class":594,"line":1088},17,[592,1090,959],{},[592,1092,1094],{"class":594,"line":1093},18,[592,1095,979],{},[592,1097,1099],{"class":594,"line":1098},19,[592,1100,1101],{},"    \u003Carticle>\n",[592,1103,1105],{"class":594,"line":1104},20,[592,1106,1107],{},"      \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n",[592,1109,1111],{"class":594,"line":1110},21,[592,1112,1113],{},"      \u003Cdiv set:html={page.fields.content} \u002F>\n",[592,1115,1117],{"class":594,"line":1116},22,[592,1118,1119],{},"    \u003C\u002Farticle>\n",[592,1121,1123],{"class":594,"line":1122},23,[592,1124,997],{},[592,1126,1128],{"class":594,"line":1127},24,[592,1129,1003],{},[912,1131,22],{"id":1132},"collections",[582,1134,1136],{"className":918,"code":1135,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002Fproducts.astro\nimport { tento } from '..\u002Flib\u002Ftento'\n\nconst products = await tento.collections.list('products', {\n  limit: 20,\n  sort: '-createdAt'\n})\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>Products\u003C\u002Fh1>\n    \u003Cdiv class=\"grid\">\n      {products.data.map((product) => (\n        \u003Cdiv>\n          \u003Ch3>{product.name}\u003C\u002Fh3>\n          \u003Cp>${product.price}\u003C\u002Fp>\n        \u003C\u002Fdiv>\n      ))}\n    \u003C\u002Fdiv>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1137,1138,1142,1147,1151,1155,1160,1165,1170,1175,1179,1183,1187,1191,1196,1201,1206,1211,1216,1221,1226,1231,1236,1240],{"__ignoreMap":587},[592,1139,1140],{"class":594,"line":595},[592,1141,927],{},[592,1143,1144],{"class":594,"line":638},[592,1145,1146],{},"\u002F\u002F src\u002Fpages\u002Fproducts.astro\n",[592,1148,1149],{"class":594,"line":649},[592,1150,937],{},[592,1152,1153],{"class":594,"line":660},[592,1154,716],{"emptyLinePlaceholder":715},[592,1156,1157],{"class":594,"line":774},[592,1158,1159],{},"const products = await tento.collections.list('products', {\n",[592,1161,1162],{"class":594,"line":798},[592,1163,1164],{},"  limit: 20,\n",[592,1166,1167],{"class":594,"line":807},[592,1168,1169],{},"  sort: '-createdAt'\n",[592,1171,1172],{"class":594,"line":812},[592,1173,1174],{},"})\n",[592,1176,1177],{"class":594,"line":832},[592,1178,927],{},[592,1180,1181],{"class":594,"line":855},[592,1182,716],{"emptyLinePlaceholder":715},[592,1184,1185],{"class":594,"line":879},[592,1186,959],{},[592,1188,1189],{"class":594,"line":902},[592,1190,979],{},[592,1192,1193],{"class":594,"line":982},[592,1194,1195],{},"    \u003Ch1>Products\u003C\u002Fh1>\n",[592,1197,1198],{"class":594,"line":988},[592,1199,1200],{},"    \u003Cdiv class=\"grid\">\n",[592,1202,1203],{"class":594,"line":994},[592,1204,1205],{},"      {products.data.map((product) => (\n",[592,1207,1208],{"class":594,"line":1000},[592,1209,1210],{},"        \u003Cdiv>\n",[592,1212,1213],{"class":594,"line":1088},[592,1214,1215],{},"          \u003Ch3>{product.name}\u003C\u002Fh3>\n",[592,1217,1218],{"class":594,"line":1093},[592,1219,1220],{},"          \u003Cp>${product.price}\u003C\u002Fp>\n",[592,1222,1223],{"class":594,"line":1098},[592,1224,1225],{},"        \u003C\u002Fdiv>\n",[592,1227,1228],{"class":594,"line":1104},[592,1229,1230],{},"      ))}\n",[592,1232,1233],{"class":594,"line":1110},[592,1234,1235],{},"    \u003C\u002Fdiv>\n",[592,1237,1238],{"class":594,"line":1116},[592,1239,997],{},[592,1241,1242],{"class":594,"line":1122},[592,1243,1003],{},[912,1245,1247],{"id":1246},"blog-posts","Blog Posts",[582,1249,1251],{"className":918,"code":1250,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002Fblog\u002Findex.astro\nimport { tento } from '..\u002F..\u002Flib\u002Ftento'\n\nconst posts = await tento.blog.posts.list({\n  limit: 10,\n  sort: '-publishedAt'\n})\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>Blog\u003C\u002Fh1>\n    {posts.data.map((post) => (\n      \u003Carticle>\n        \u003Ca href={`\u002Fblog\u002F${post.slug}`}>\n          \u003Ch2>{post.title}\u003C\u002Fh2>\n        \u003C\u002Fa>\n        \u003Cp>{post.excerpt}\u003C\u002Fp>\n        \u003Ctime>{new Date(post.publishedAt).toLocaleDateString()}\u003C\u002Ftime>\n      \u003C\u002Farticle>\n    ))}\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1252,1253,1257,1262,1267,1271,1276,1281,1286,1290,1294,1298,1302,1306,1311,1316,1321,1326,1331,1336,1341,1346,1351,1356,1360],{"__ignoreMap":587},[592,1254,1255],{"class":594,"line":595},[592,1256,927],{},[592,1258,1259],{"class":594,"line":638},[592,1260,1261],{},"\u002F\u002F src\u002Fpages\u002Fblog\u002Findex.astro\n",[592,1263,1264],{"class":594,"line":649},[592,1265,1266],{},"import { tento } from '..\u002F..\u002Flib\u002Ftento'\n",[592,1268,1269],{"class":594,"line":660},[592,1270,716],{"emptyLinePlaceholder":715},[592,1272,1273],{"class":594,"line":774},[592,1274,1275],{},"const posts = await tento.blog.posts.list({\n",[592,1277,1278],{"class":594,"line":798},[592,1279,1280],{},"  limit: 10,\n",[592,1282,1283],{"class":594,"line":807},[592,1284,1285],{},"  sort: '-publishedAt'\n",[592,1287,1288],{"class":594,"line":812},[592,1289,1174],{},[592,1291,1292],{"class":594,"line":832},[592,1293,927],{},[592,1295,1296],{"class":594,"line":855},[592,1297,716],{"emptyLinePlaceholder":715},[592,1299,1300],{"class":594,"line":879},[592,1301,959],{},[592,1303,1304],{"class":594,"line":902},[592,1305,979],{},[592,1307,1308],{"class":594,"line":982},[592,1309,1310],{},"    \u003Ch1>Blog\u003C\u002Fh1>\n",[592,1312,1313],{"class":594,"line":988},[592,1314,1315],{},"    {posts.data.map((post) => (\n",[592,1317,1318],{"class":594,"line":994},[592,1319,1320],{},"      \u003Carticle>\n",[592,1322,1323],{"class":594,"line":1000},[592,1324,1325],{},"        \u003Ca href={`\u002Fblog\u002F${post.slug}`}>\n",[592,1327,1328],{"class":594,"line":1088},[592,1329,1330],{},"          \u003Ch2>{post.title}\u003C\u002Fh2>\n",[592,1332,1333],{"class":594,"line":1093},[592,1334,1335],{},"        \u003C\u002Fa>\n",[592,1337,1338],{"class":594,"line":1098},[592,1339,1340],{},"        \u003Cp>{post.excerpt}\u003C\u002Fp>\n",[592,1342,1343],{"class":594,"line":1104},[592,1344,1345],{},"        \u003Ctime>{new Date(post.publishedAt).toLocaleDateString()}\u003C\u002Ftime>\n",[592,1347,1348],{"class":594,"line":1110},[592,1349,1350],{},"      \u003C\u002Farticle>\n",[592,1352,1353],{"class":594,"line":1116},[592,1354,1355],{},"    ))}\n",[592,1357,1358],{"class":594,"line":1122},[592,1359,997],{},[592,1361,1362],{"class":594,"line":1127},[592,1363,1003],{},[912,1365,1367],{"id":1366},"dynamic-blog-routes","Dynamic Blog Routes",[582,1369,1371],{"className":918,"code":1370,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002Fblog\u002F[slug].astro\nimport { tento } from '..\u002F..\u002Flib\u002Ftento'\n\nexport async function getStaticPaths() {\n  \u002F\u002F `list()` omits `content` by default, so build the paths from the list\n  \u002F\u002F and fetch each full post (with body content) in the page frontmatter.\n  const posts = await tento.blog.posts.list({ limit: 100 })\n\n  return posts.data.map((post) => ({\n    params: { slug: post.slug },\n  }))\n}\n\n\u002F\u002F getBySlug returns the full post, including `content`\nconst post = await tento.blog.posts.getBySlug(Astro.params.slug!)\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Carticle>\n      \u003Ch1>{post.title}\u003C\u002Fh1>\n      {post.featuredImage && (\n        \u003Cimg src={post.featuredImage._url} alt={post.featuredImage._altText} \u002F>\n      )}\n      \u003Cdiv set:html={post.content} \u002F>\n      \u003Cdiv class=\"meta\">\n        {post.author && \u003Cp>By {post.author.name}\u003C\u002Fp>}\n        \u003Ctime>{new Date(post.publishedAt).toLocaleDateString()}\u003C\u002Ftime>\n      \u003C\u002Fdiv>\n      {post.category && (\n        \u003Ca href={`\u002Fblog\u002Fcategory\u002F${post.category.slug}`}>\n          {post.category.name}\n        \u003C\u002Fa>\n      )}\n      {post.tags.map((tag) => (\n        \u003Ca href={`\u002Fblog\u002Ftag\u002F${tag.slug}`}>{tag.name}\u003C\u002Fa>\n      ))}\n    \u003C\u002Farticle>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1372,1373,1377,1382,1386,1390,1394,1399,1404,1409,1413,1418,1423,1427,1431,1435,1440,1445,1449,1453,1457,1461,1465,1470,1475,1480,1486,1492,1498,1504,1509,1515,1521,1527,1533,1538,1543,1549,1555,1560,1565,1570],{"__ignoreMap":587},[592,1374,1375],{"class":594,"line":595},[592,1376,927],{},[592,1378,1379],{"class":594,"line":638},[592,1380,1381],{},"\u002F\u002F src\u002Fpages\u002Fblog\u002F[slug].astro\n",[592,1383,1384],{"class":594,"line":649},[592,1385,1266],{},[592,1387,1388],{"class":594,"line":660},[592,1389,716],{"emptyLinePlaceholder":715},[592,1391,1392],{"class":594,"line":774},[592,1393,1034],{},[592,1395,1396],{"class":594,"line":798},[592,1397,1398],{},"  \u002F\u002F `list()` omits `content` by default, so build the paths from the list\n",[592,1400,1401],{"class":594,"line":807},[592,1402,1403],{},"  \u002F\u002F and fetch each full post (with body content) in the page frontmatter.\n",[592,1405,1406],{"class":594,"line":812},[592,1407,1408],{},"  const posts = await tento.blog.posts.list({ limit: 100 })\n",[592,1410,1411],{"class":594,"line":832},[592,1412,716],{"emptyLinePlaceholder":715},[592,1414,1415],{"class":594,"line":855},[592,1416,1417],{},"  return posts.data.map((post) => ({\n",[592,1419,1420],{"class":594,"line":879},[592,1421,1422],{},"    params: { slug: post.slug },\n",[592,1424,1425],{"class":594,"line":902},[592,1426,1063],{},[592,1428,1429],{"class":594,"line":982},[592,1430,1068],{},[592,1432,1433],{"class":594,"line":988},[592,1434,716],{"emptyLinePlaceholder":715},[592,1436,1437],{"class":594,"line":994},[592,1438,1439],{},"\u002F\u002F getBySlug returns the full post, including `content`\n",[592,1441,1442],{"class":594,"line":1000},[592,1443,1444],{},"const post = await tento.blog.posts.getBySlug(Astro.params.slug!)\n",[592,1446,1447],{"class":594,"line":1088},[592,1448,927],{},[592,1450,1451],{"class":594,"line":1093},[592,1452,716],{"emptyLinePlaceholder":715},[592,1454,1455],{"class":594,"line":1098},[592,1456,959],{},[592,1458,1459],{"class":594,"line":1104},[592,1460,979],{},[592,1462,1463],{"class":594,"line":1110},[592,1464,1101],{},[592,1466,1467],{"class":594,"line":1116},[592,1468,1469],{},"      \u003Ch1>{post.title}\u003C\u002Fh1>\n",[592,1471,1472],{"class":594,"line":1122},[592,1473,1474],{},"      {post.featuredImage && (\n",[592,1476,1477],{"class":594,"line":1127},[592,1478,1479],{},"        \u003Cimg src={post.featuredImage._url} alt={post.featuredImage._altText} \u002F>\n",[592,1481,1483],{"class":594,"line":1482},25,[592,1484,1485],{},"      )}\n",[592,1487,1489],{"class":594,"line":1488},26,[592,1490,1491],{},"      \u003Cdiv set:html={post.content} \u002F>\n",[592,1493,1495],{"class":594,"line":1494},27,[592,1496,1497],{},"      \u003Cdiv class=\"meta\">\n",[592,1499,1501],{"class":594,"line":1500},28,[592,1502,1503],{},"        {post.author && \u003Cp>By {post.author.name}\u003C\u002Fp>}\n",[592,1505,1507],{"class":594,"line":1506},29,[592,1508,1345],{},[592,1510,1512],{"class":594,"line":1511},30,[592,1513,1514],{},"      \u003C\u002Fdiv>\n",[592,1516,1518],{"class":594,"line":1517},31,[592,1519,1520],{},"      {post.category && (\n",[592,1522,1524],{"class":594,"line":1523},32,[592,1525,1526],{},"        \u003Ca href={`\u002Fblog\u002Fcategory\u002F${post.category.slug}`}>\n",[592,1528,1530],{"class":594,"line":1529},33,[592,1531,1532],{},"          {post.category.name}\n",[592,1534,1536],{"class":594,"line":1535},34,[592,1537,1335],{},[592,1539,1541],{"class":594,"line":1540},35,[592,1542,1485],{},[592,1544,1546],{"class":594,"line":1545},36,[592,1547,1548],{},"      {post.tags.map((tag) => (\n",[592,1550,1552],{"class":594,"line":1551},37,[592,1553,1554],{},"        \u003Ca href={`\u002Fblog\u002Ftag\u002F${tag.slug}`}>{tag.name}\u003C\u002Fa>\n",[592,1556,1558],{"class":594,"line":1557},38,[592,1559,1230],{},[592,1561,1563],{"class":594,"line":1562},39,[592,1564,1119],{},[592,1566,1568],{"class":594,"line":1567},40,[592,1569,997],{},[592,1571,1573],{"class":594,"line":1572},41,[592,1574,1003],{},[577,1576,1578],{"id":1577},"preview-mode-ssr","Preview Mode (SSR)",[567,1580,1581,1582,1585,1586,1589,1590,1593,1594,617],{},"Astro requires on-demand (server) rendering for preview mode. Astro 5 removed the ",[589,1583,1584],{},"output: 'hybrid'"," mode: keep the default ",[589,1587,1588],{},"output: 'static'"," and opt individual routes into server rendering with ",[589,1591,1592],{},"export const prerender = false",", plus a server adapter in ",[589,1595,1596],{},"astro.config.mjs",[582,1598,1602],{"className":1599,"code":1600,"language":1601,"meta":587,"style":587},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import node from '@astrojs\u002Fnode'\n\nexport default defineConfig({\n  output: 'static', \u002F\u002F default; per-route `export const prerender = false` renders on demand\n  adapter: node({ mode: 'standalone' }), \u002F\u002F or vercel(), netlify(), etc.\n})\n","javascript",[589,1603,1604,1621,1625,1639,1661,1698],{"__ignoreMap":587},[592,1605,1606,1608,1611,1614,1616,1619],{"class":594,"line":595},[592,1607,690],{"class":689},[592,1609,1610],{"class":627}," node ",[592,1612,1613],{"class":689},"from",[592,1615,705],{"class":631},[592,1617,1618],{"class":602},"@astrojs\u002Fnode",[592,1620,710],{"class":631},[592,1622,1623],{"class":594,"line":638},[592,1624,716],{"emptyLinePlaceholder":715},[592,1626,1627,1629,1632,1635,1637],{"class":594,"line":649},[592,1628,721],{"class":689},[592,1630,1631],{"class":689}," default",[592,1633,1634],{"class":736}," defineConfig",[592,1636,739],{"class":627},[592,1638,742],{"class":631},[592,1640,1641,1644,1646,1648,1651,1654,1657],{"class":594,"line":660},[592,1642,1643],{"class":747},"  output",[592,1645,617],{"class":631},[592,1647,705],{"class":631},[592,1649,1650],{"class":602},"static",[592,1652,1653],{"class":631},"'",[592,1655,1656],{"class":631},",",[592,1658,1660],{"class":1659},"sHwdD"," \u002F\u002F default; per-route `export const prerender = false` renders on demand\n",[592,1662,1663,1666,1668,1671,1673,1676,1679,1681,1683,1686,1688,1690,1693,1695],{"class":594,"line":774},[592,1664,1665],{"class":747},"  adapter",[592,1667,617],{"class":631},[592,1669,1670],{"class":736}," node",[592,1672,739],{"class":627},[592,1674,1675],{"class":631},"{",[592,1677,1678],{"class":747}," mode",[592,1680,617],{"class":631},[592,1682,705],{"class":631},[592,1684,1685],{"class":602},"standalone",[592,1687,1653],{"class":631},[592,1689,699],{"class":631},[592,1691,1692],{"class":627},")",[592,1694,1656],{"class":631},[592,1696,1697],{"class":1659}," \u002F\u002F or vercel(), netlify(), etc.\n",[592,1699,1700,1702],{"class":594,"line":798},[592,1701,801],{"class":631},[592,1703,804],{"class":627},[912,1705,1707],{"id":1706},"create-preview-route","Create Preview Route",[582,1709,1711],{"className":918,"code":1710,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002Fpreview\u002F[...slug].astro\nexport const prerender = false \u002F\u002F Disable prerendering for this route\n\nimport { tentoPreview } from '..\u002F..\u002Flib\u002Ftento'\n\nconst { slug } = Astro.params\nconst secret = Astro.url.searchParams.get('secret')\n\n\u002F\u002F Validate secret\nif (secret !== import.meta.env.PREVIEW_SECRET) {\n  return Astro.redirect('\u002F404')\n}\n\n\u002F\u002F Fetch draft content\nconst page = await tentoPreview.pages.getBySlug(slug!)\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Cdiv class=\"preview-banner\">\n      ⚠️ Preview Mode - Viewing Draft Content\n    \u003C\u002Fdiv>\n\n    \u003Carticle>\n      \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n      \u003Cdiv set:html={page.fields.content} \u002F>\n    \u003C\u002Farticle>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1712,1713,1717,1722,1727,1731,1736,1740,1745,1750,1754,1759,1764,1769,1773,1777,1782,1787,1791,1795,1799,1803,1808,1813,1817,1821,1825,1829,1833,1837,1841],{"__ignoreMap":587},[592,1714,1715],{"class":594,"line":595},[592,1716,927],{},[592,1718,1719],{"class":594,"line":638},[592,1720,1721],{},"\u002F\u002F src\u002Fpages\u002Fpreview\u002F[...slug].astro\n",[592,1723,1724],{"class":594,"line":649},[592,1725,1726],{},"export const prerender = false \u002F\u002F Disable prerendering for this route\n",[592,1728,1729],{"class":594,"line":660},[592,1730,716],{"emptyLinePlaceholder":715},[592,1732,1733],{"class":594,"line":774},[592,1734,1735],{},"import { tentoPreview } from '..\u002F..\u002Flib\u002Ftento'\n",[592,1737,1738],{"class":594,"line":798},[592,1739,716],{"emptyLinePlaceholder":715},[592,1741,1742],{"class":594,"line":807},[592,1743,1744],{},"const { slug } = Astro.params\n",[592,1746,1747],{"class":594,"line":812},[592,1748,1749],{},"const secret = Astro.url.searchParams.get('secret')\n",[592,1751,1752],{"class":594,"line":832},[592,1753,716],{"emptyLinePlaceholder":715},[592,1755,1756],{"class":594,"line":855},[592,1757,1758],{},"\u002F\u002F Validate secret\n",[592,1760,1761],{"class":594,"line":879},[592,1762,1763],{},"if (secret !== import.meta.env.PREVIEW_SECRET) {\n",[592,1765,1766],{"class":594,"line":902},[592,1767,1768],{},"  return Astro.redirect('\u002F404')\n",[592,1770,1771],{"class":594,"line":982},[592,1772,1068],{},[592,1774,1775],{"class":594,"line":988},[592,1776,716],{"emptyLinePlaceholder":715},[592,1778,1779],{"class":594,"line":994},[592,1780,1781],{},"\u002F\u002F Fetch draft content\n",[592,1783,1784],{"class":594,"line":1000},[592,1785,1786],{},"const page = await tentoPreview.pages.getBySlug(slug!)\n",[592,1788,1789],{"class":594,"line":1088},[592,1790,927],{},[592,1792,1793],{"class":594,"line":1093},[592,1794,716],{"emptyLinePlaceholder":715},[592,1796,1797],{"class":594,"line":1098},[592,1798,959],{},[592,1800,1801],{"class":594,"line":1104},[592,1802,979],{},[592,1804,1805],{"class":594,"line":1110},[592,1806,1807],{},"    \u003Cdiv class=\"preview-banner\">\n",[592,1809,1810],{"class":594,"line":1116},[592,1811,1812],{},"      ⚠️ Preview Mode - Viewing Draft Content\n",[592,1814,1815],{"class":594,"line":1122},[592,1816,1235],{},[592,1818,1819],{"class":594,"line":1127},[592,1820,716],{"emptyLinePlaceholder":715},[592,1822,1823],{"class":594,"line":1482},[592,1824,1101],{},[592,1826,1827],{"class":594,"line":1488},[592,1828,1107],{},[592,1830,1831],{"class":594,"line":1494},[592,1832,1113],{},[592,1834,1835],{"class":594,"line":1500},[592,1836,1119],{},[592,1838,1839],{"class":594,"line":1506},[592,1840,997],{},[592,1842,1843],{"class":594,"line":1511},[592,1844,1003],{},[912,1846,1848],{"id":1847},"usage","Usage",[567,1850,1851],{},"Access preview mode:",[582,1853,1858],{"className":1854,"code":1856,"language":1857},[1855],"language-text","https:\u002F\u002Fyoursite.com\u002Fpreview\u002Fhomepage?secret=your-secret\n","text",[589,1859,1856],{"__ignoreMap":587},[577,1861,1862],{"id":682},"TypeScript",[912,1864,1866],{"id":1865},"type-safe-content","Type-Safe Content",[582,1868,1870],{"className":918,"code":1869,"language":920,"meta":587,"style":587},"---\nimport { tento } from '..\u002Flib\u002Ftento'\nimport type { Page } from '@tentocms\u002Fclient'\n\ninterface HomepageContent {\n  heroTitle: string\n  heroSubtitle: string\n  features: Array\u003C{\n    title: string\n    description: string\n  }>\n}\n\nconst page = await tento.pages.getBySlug\u003CHomepageContent>('homepage')\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>{page.fields.heroTitle}\u003C\u002Fh1>\n    \u003Cp>{page.fields.heroSubtitle}\u003C\u002Fp>\n    \u003Cdiv>\n      {page.fields.features.map((feature) => (\n        \u003Cdiv>\n          \u003Ch3>{feature.title}\u003C\u002Fh3>\n          \u003Cp>{feature.description}\u003C\u002Fp>\n        \u003C\u002Fdiv>\n      ))}\n    \u003C\u002Fdiv>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,1871,1872,1876,1880,1885,1889,1894,1899,1904,1909,1914,1919,1924,1928,1932,1937,1941,1945,1949,1953,1958,1963,1968,1973,1977,1982,1987,1991,1995,1999,2003],{"__ignoreMap":587},[592,1873,1874],{"class":594,"line":595},[592,1875,927],{},[592,1877,1878],{"class":594,"line":638},[592,1879,937],{},[592,1881,1882],{"class":594,"line":649},[592,1883,1884],{},"import type { Page } from '@tentocms\u002Fclient'\n",[592,1886,1887],{"class":594,"line":660},[592,1888,716],{"emptyLinePlaceholder":715},[592,1890,1891],{"class":594,"line":774},[592,1892,1893],{},"interface HomepageContent {\n",[592,1895,1896],{"class":594,"line":798},[592,1897,1898],{},"  heroTitle: string\n",[592,1900,1901],{"class":594,"line":807},[592,1902,1903],{},"  heroSubtitle: string\n",[592,1905,1906],{"class":594,"line":812},[592,1907,1908],{},"  features: Array\u003C{\n",[592,1910,1911],{"class":594,"line":832},[592,1912,1913],{},"    title: string\n",[592,1915,1916],{"class":594,"line":855},[592,1917,1918],{},"    description: string\n",[592,1920,1921],{"class":594,"line":879},[592,1922,1923],{},"  }>\n",[592,1925,1926],{"class":594,"line":902},[592,1927,1068],{},[592,1929,1930],{"class":594,"line":982},[592,1931,716],{"emptyLinePlaceholder":715},[592,1933,1934],{"class":594,"line":988},[592,1935,1936],{},"const page = await tento.pages.getBySlug\u003CHomepageContent>('homepage')\n",[592,1938,1939],{"class":594,"line":994},[592,1940,927],{},[592,1942,1943],{"class":594,"line":1000},[592,1944,716],{"emptyLinePlaceholder":715},[592,1946,1947],{"class":594,"line":1088},[592,1948,959],{},[592,1950,1951],{"class":594,"line":1093},[592,1952,979],{},[592,1954,1955],{"class":594,"line":1098},[592,1956,1957],{},"    \u003Ch1>{page.fields.heroTitle}\u003C\u002Fh1>\n",[592,1959,1960],{"class":594,"line":1104},[592,1961,1962],{},"    \u003Cp>{page.fields.heroSubtitle}\u003C\u002Fp>\n",[592,1964,1965],{"class":594,"line":1110},[592,1966,1967],{},"    \u003Cdiv>\n",[592,1969,1970],{"class":594,"line":1116},[592,1971,1972],{},"      {page.fields.features.map((feature) => (\n",[592,1974,1975],{"class":594,"line":1122},[592,1976,1210],{},[592,1978,1979],{"class":594,"line":1127},[592,1980,1981],{},"          \u003Ch3>{feature.title}\u003C\u002Fh3>\n",[592,1983,1984],{"class":594,"line":1482},[592,1985,1986],{},"          \u003Cp>{feature.description}\u003C\u002Fp>\n",[592,1988,1989],{"class":594,"line":1488},[592,1990,1225],{},[592,1992,1993],{"class":594,"line":1494},[592,1994,1230],{},[592,1996,1997],{"class":594,"line":1500},[592,1998,1235],{},[592,2000,2001],{"class":594,"line":1506},[592,2002,997],{},[592,2004,2005],{"class":594,"line":1511},[592,2006,1003],{},[912,2008,2010],{"id":2009},"import-types","Import Types",[582,2012,2014],{"className":680,"code":2013,"language":682,"meta":587,"style":587},"import type {\n  Page,\n  CollectionItem,\n  BlogPost,\n  MediaItem,\n} from '@tentocms\u002Fclient'\n",[589,2015,2016,2026,2033,2040,2047,2054],{"__ignoreMap":587},[592,2017,2018,2020,2023],{"class":594,"line":595},[592,2019,690],{"class":689},[592,2021,2022],{"class":689}," type",[592,2024,2025],{"class":631}," {\n",[592,2027,2028,2031],{"class":594,"line":638},[592,2029,2030],{"class":627},"  Page",[592,2032,771],{"class":631},[592,2034,2035,2038],{"class":594,"line":649},[592,2036,2037],{"class":627},"  CollectionItem",[592,2039,771],{"class":631},[592,2041,2042,2045],{"class":594,"line":660},[592,2043,2044],{"class":627},"  BlogPost",[592,2046,771],{"class":631},[592,2048,2049,2052],{"class":594,"line":774},[592,2050,2051],{"class":627},"  MediaItem",[592,2053,771],{"class":631},[592,2055,2056,2058,2060,2062,2064],{"class":594,"line":798},[592,2057,801],{"class":631},[592,2059,702],{"class":689},[592,2061,705],{"class":631},[592,2063,150],{"class":602},[592,2065,710],{"class":631},[577,2067,2069],{"id":2068},"components","Components",[567,2071,2072],{},"Create reusable Astro components:",[582,2074,2076],{"className":918,"code":2075,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fcomponents\u002FPageContent.astro\nimport type { Page } from '@tentocms\u002Fclient'\n\ninterface Props {\n  page: Page\n}\n\nconst { page } = Astro.props\n---\n\n\u003Carticle>\n  \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n  \u003Cdiv set:html={page.fields.content} \u002F>\n\u003C\u002Farticle>\n",[589,2077,2078,2082,2087,2091,2095,2100,2105,2109,2113,2117,2121,2125,2130,2135,2140],{"__ignoreMap":587},[592,2079,2080],{"class":594,"line":595},[592,2081,927],{},[592,2083,2084],{"class":594,"line":638},[592,2085,2086],{},"\u002F\u002F src\u002Fcomponents\u002FPageContent.astro\n",[592,2088,2089],{"class":594,"line":649},[592,2090,1884],{},[592,2092,2093],{"class":594,"line":660},[592,2094,716],{"emptyLinePlaceholder":715},[592,2096,2097],{"class":594,"line":774},[592,2098,2099],{},"interface Props {\n",[592,2101,2102],{"class":594,"line":798},[592,2103,2104],{},"  page: Page\n",[592,2106,2107],{"class":594,"line":807},[592,2108,1068],{},[592,2110,2111],{"class":594,"line":812},[592,2112,716],{"emptyLinePlaceholder":715},[592,2114,2115],{"class":594,"line":832},[592,2116,1077],{},[592,2118,2119],{"class":594,"line":855},[592,2120,927],{},[592,2122,2123],{"class":594,"line":879},[592,2124,716],{"emptyLinePlaceholder":715},[592,2126,2127],{"class":594,"line":902},[592,2128,2129],{},"\u003Carticle>\n",[592,2131,2132],{"class":594,"line":982},[592,2133,2134],{},"  \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n",[592,2136,2137],{"class":594,"line":988},[592,2138,2139],{},"  \u003Cdiv set:html={page.fields.content} \u002F>\n",[592,2141,2142],{"class":594,"line":994},[592,2143,2144],{},"\u003C\u002Farticle>\n",[567,2146,2147],{},"Use in pages:",[582,2149,2151],{"className":918,"code":2150,"language":920,"meta":587,"style":587},"---\nimport { tento } from '..\u002Flib\u002Ftento'\nimport PageContent from '..\u002Fcomponents\u002FPageContent.astro'\n\nconst page = await tento.pages.getBySlug('about')\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003CPageContent page={page} \u002F>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,2152,2153,2157,2161,2166,2170,2175,2179,2183,2187,2191,2196,2200],{"__ignoreMap":587},[592,2154,2155],{"class":594,"line":595},[592,2156,927],{},[592,2158,2159],{"class":594,"line":638},[592,2160,937],{},[592,2162,2163],{"class":594,"line":649},[592,2164,2165],{},"import PageContent from '..\u002Fcomponents\u002FPageContent.astro'\n",[592,2167,2168],{"class":594,"line":660},[592,2169,716],{"emptyLinePlaceholder":715},[592,2171,2172],{"class":594,"line":774},[592,2173,2174],{},"const page = await tento.pages.getBySlug('about')\n",[592,2176,2177],{"class":594,"line":798},[592,2178,927],{},[592,2180,2181],{"class":594,"line":807},[592,2182,716],{"emptyLinePlaceholder":715},[592,2184,2185],{"class":594,"line":812},[592,2186,959],{},[592,2188,2189],{"class":594,"line":832},[592,2190,979],{},[592,2192,2193],{"class":594,"line":855},[592,2194,2195],{},"    \u003CPageContent page={page} \u002F>\n",[592,2197,2198],{"class":594,"line":879},[592,2199,997],{},[592,2201,2202],{"class":594,"line":902},[592,2203,1003],{},[577,2205,2207],{"id":2206},"error-handling","Error Handling",[582,2209,2211],{"className":918,"code":2210,"language":920,"meta":587,"style":587},"---\nimport { TentoNotFoundError } from '@tentocms\u002Fclient'\nimport { tento } from '..\u002Flib\u002Ftento'\n\nlet page\ntry {\n  page = await tento.pages.getBySlug(Astro.params.slug!)\n} catch (error) {\n  if (error instanceof TentoNotFoundError) {\n    return Astro.redirect('\u002F404')\n  }\n  throw error\n}\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>{page.fields.title}\u003C\u002Fh1>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,2212,2213,2217,2222,2226,2230,2235,2240,2245,2250,2255,2260,2265,2270,2274,2278,2282,2286,2290,2294,2298],{"__ignoreMap":587},[592,2214,2215],{"class":594,"line":595},[592,2216,927],{},[592,2218,2219],{"class":594,"line":638},[592,2220,2221],{},"import { TentoNotFoundError } from '@tentocms\u002Fclient'\n",[592,2223,2224],{"class":594,"line":649},[592,2225,937],{},[592,2227,2228],{"class":594,"line":660},[592,2229,716],{"emptyLinePlaceholder":715},[592,2231,2232],{"class":594,"line":774},[592,2233,2234],{},"let page\n",[592,2236,2237],{"class":594,"line":798},[592,2238,2239],{},"try {\n",[592,2241,2242],{"class":594,"line":807},[592,2243,2244],{},"  page = await tento.pages.getBySlug(Astro.params.slug!)\n",[592,2246,2247],{"class":594,"line":812},[592,2248,2249],{},"} catch (error) {\n",[592,2251,2252],{"class":594,"line":832},[592,2253,2254],{},"  if (error instanceof TentoNotFoundError) {\n",[592,2256,2257],{"class":594,"line":855},[592,2258,2259],{},"    return Astro.redirect('\u002F404')\n",[592,2261,2262],{"class":594,"line":879},[592,2263,2264],{},"  }\n",[592,2266,2267],{"class":594,"line":902},[592,2268,2269],{},"  throw error\n",[592,2271,2272],{"class":594,"line":982},[592,2273,1068],{},[592,2275,2276],{"class":594,"line":988},[592,2277,927],{},[592,2279,2280],{"class":594,"line":994},[592,2281,716],{"emptyLinePlaceholder":715},[592,2283,2284],{"class":594,"line":1000},[592,2285,959],{},[592,2287,2288],{"class":594,"line":1088},[592,2289,979],{},[592,2291,2292],{"class":594,"line":1093},[592,2293,985],{},[592,2295,2296],{"class":594,"line":1098},[592,2297,997],{},[592,2299,2300],{"class":594,"line":1104},[592,2301,1003],{},[577,2303,2305],{"id":2304},"image-optimization","Image Optimization",[567,2307,2308],{},"Use Astro's Image component with TentoCMS media:",[582,2310,2312],{"className":918,"code":2311,"language":920,"meta":587,"style":587},"---\nimport { Image } from 'astro:assets'\nimport { tento } from '..\u002Flib\u002Ftento'\n\nconst media = await tento.media.getById('media-id')\n---\n\n\u003CImage\n  src={tento.media.getImageUrl(media.id, {\n    width: 800,\n    format: 'webp',\n    quality: 90\n  })}\n  width={800}\n  height={600}\n  alt={media.altText || ''}\n\u002F>\n",[589,2313,2314,2318,2323,2327,2331,2336,2340,2344,2349,2354,2359,2364,2369,2374,2379,2384,2389],{"__ignoreMap":587},[592,2315,2316],{"class":594,"line":595},[592,2317,927],{},[592,2319,2320],{"class":594,"line":638},[592,2321,2322],{},"import { Image } from 'astro:assets'\n",[592,2324,2325],{"class":594,"line":649},[592,2326,937],{},[592,2328,2329],{"class":594,"line":660},[592,2330,716],{"emptyLinePlaceholder":715},[592,2332,2333],{"class":594,"line":774},[592,2334,2335],{},"const media = await tento.media.getById('media-id')\n",[592,2337,2338],{"class":594,"line":798},[592,2339,927],{},[592,2341,2342],{"class":594,"line":807},[592,2343,716],{"emptyLinePlaceholder":715},[592,2345,2346],{"class":594,"line":812},[592,2347,2348],{},"\u003CImage\n",[592,2350,2351],{"class":594,"line":832},[592,2352,2353],{},"  src={tento.media.getImageUrl(media.id, {\n",[592,2355,2356],{"class":594,"line":855},[592,2357,2358],{},"    width: 800,\n",[592,2360,2361],{"class":594,"line":879},[592,2362,2363],{},"    format: 'webp',\n",[592,2365,2366],{"class":594,"line":902},[592,2367,2368],{},"    quality: 90\n",[592,2370,2371],{"class":594,"line":982},[592,2372,2373],{},"  })}\n",[592,2375,2376],{"class":594,"line":988},[592,2377,2378],{},"  width={800}\n",[592,2380,2381],{"class":594,"line":994},[592,2382,2383],{},"  height={600}\n",[592,2385,2386],{"class":594,"line":1000},[592,2387,2388],{},"  alt={media.altText || ''}\n",[592,2390,2391],{"class":594,"line":1088},[592,2392,2393],{},"\u002F>\n",[577,2395,2397],{"id":2396},"pagination","Pagination",[582,2399,2401],{"className":918,"code":2400,"language":920,"meta":587,"style":587},"---\n\u002F\u002F src\u002Fpages\u002Fblog\u002F[...page].astro\nimport { tento } from '..\u002F..\u002Flib\u002Ftento'\n\nexport async function getStaticPaths({ paginate }) {\n  const posts = await tento.blog.posts.list({ limit: 100 })\n\n  return paginate(posts.data, { pageSize: 10 })\n}\n\nconst { page } = Astro.props\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>Blog - Page {page.currentPage}\u003C\u002Fh1>\n    {page.data.map((post) => (\n      \u003Carticle>\n        \u003Ch2>{post.title}\u003C\u002Fh2>\n        \u003Ca href={`\u002Fblog\u002F${post.slug}`}>Read More\u003C\u002Fa>\n      \u003C\u002Farticle>\n    ))}\n\n    \u003Cdiv class=\"pagination\">\n      {page.url.prev && \u003Ca href={page.url.prev}>Previous\u003C\u002Fa>}\n      {page.url.next && \u003Ca href={page.url.next}>Next\u003C\u002Fa>}\n    \u003C\u002Fdiv>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,2402,2403,2407,2412,2416,2420,2425,2429,2433,2438,2442,2446,2450,2454,2458,2462,2466,2471,2476,2480,2485,2490,2494,2498,2502,2507,2512,2517,2521,2525],{"__ignoreMap":587},[592,2404,2405],{"class":594,"line":595},[592,2406,927],{},[592,2408,2409],{"class":594,"line":638},[592,2410,2411],{},"\u002F\u002F src\u002Fpages\u002Fblog\u002F[...page].astro\n",[592,2413,2414],{"class":594,"line":649},[592,2415,1266],{},[592,2417,2418],{"class":594,"line":660},[592,2419,716],{"emptyLinePlaceholder":715},[592,2421,2422],{"class":594,"line":774},[592,2423,2424],{},"export async function getStaticPaths({ paginate }) {\n",[592,2426,2427],{"class":594,"line":798},[592,2428,1408],{},[592,2430,2431],{"class":594,"line":807},[592,2432,716],{"emptyLinePlaceholder":715},[592,2434,2435],{"class":594,"line":812},[592,2436,2437],{},"  return paginate(posts.data, { pageSize: 10 })\n",[592,2439,2440],{"class":594,"line":832},[592,2441,1068],{},[592,2443,2444],{"class":594,"line":855},[592,2445,716],{"emptyLinePlaceholder":715},[592,2447,2448],{"class":594,"line":879},[592,2449,1077],{},[592,2451,2452],{"class":594,"line":902},[592,2453,927],{},[592,2455,2456],{"class":594,"line":982},[592,2457,716],{"emptyLinePlaceholder":715},[592,2459,2460],{"class":594,"line":988},[592,2461,959],{},[592,2463,2464],{"class":594,"line":994},[592,2465,979],{},[592,2467,2468],{"class":594,"line":1000},[592,2469,2470],{},"    \u003Ch1>Blog - Page {page.currentPage}\u003C\u002Fh1>\n",[592,2472,2473],{"class":594,"line":1088},[592,2474,2475],{},"    {page.data.map((post) => (\n",[592,2477,2478],{"class":594,"line":1093},[592,2479,1320],{},[592,2481,2482],{"class":594,"line":1098},[592,2483,2484],{},"        \u003Ch2>{post.title}\u003C\u002Fh2>\n",[592,2486,2487],{"class":594,"line":1104},[592,2488,2489],{},"        \u003Ca href={`\u002Fblog\u002F${post.slug}`}>Read More\u003C\u002Fa>\n",[592,2491,2492],{"class":594,"line":1110},[592,2493,1350],{},[592,2495,2496],{"class":594,"line":1116},[592,2497,1355],{},[592,2499,2500],{"class":594,"line":1122},[592,2501,716],{"emptyLinePlaceholder":715},[592,2503,2504],{"class":594,"line":1127},[592,2505,2506],{},"    \u003Cdiv class=\"pagination\">\n",[592,2508,2509],{"class":594,"line":1482},[592,2510,2511],{},"      {page.url.prev && \u003Ca href={page.url.prev}>Previous\u003C\u002Fa>}\n",[592,2513,2514],{"class":594,"line":1488},[592,2515,2516],{},"      {page.url.next && \u003Ca href={page.url.next}>Next\u003C\u002Fa>}\n",[592,2518,2519],{"class":594,"line":1494},[592,2520,1235],{},[592,2522,2523],{"class":594,"line":1500},[592,2524,997],{},[592,2526,2527],{"class":594,"line":1506},[592,2528,1003],{},[577,2530,2532],{"id":2531},"server-side-rendering","Server-Side Rendering",[567,2534,2535],{},"For dynamic content, use SSR mode:",[582,2537,2539],{"className":1599,"code":2538,"language":1601,"meta":587,"style":587},"\u002F\u002F astro.config.mjs\nexport default defineConfig({\n  output: 'server', \u002F\u002F Full SSR\n  adapter: node(), \u002F\u002F or vercel(), netlify(), etc.\n})\n",[589,2540,2541,2546,2558,2576,2591],{"__ignoreMap":587},[592,2542,2543],{"class":594,"line":595},[592,2544,2545],{"class":1659},"\u002F\u002F astro.config.mjs\n",[592,2547,2548,2550,2552,2554,2556],{"class":594,"line":638},[592,2549,721],{"class":689},[592,2551,1631],{"class":689},[592,2553,1634],{"class":736},[592,2555,739],{"class":627},[592,2557,742],{"class":631},[592,2559,2560,2562,2564,2566,2569,2571,2573],{"class":594,"line":649},[592,2561,1643],{"class":747},[592,2563,617],{"class":631},[592,2565,705],{"class":631},[592,2567,2568],{"class":602},"server",[592,2570,1653],{"class":631},[592,2572,1656],{"class":631},[592,2574,2575],{"class":1659}," \u002F\u002F Full SSR\n",[592,2577,2578,2580,2582,2584,2587,2589],{"class":594,"line":660},[592,2579,1665],{"class":747},[592,2581,617],{"class":631},[592,2583,1670],{"class":736},[592,2585,2586],{"class":627},"()",[592,2588,1656],{"class":631},[592,2590,1697],{"class":1659},[592,2592,2593,2595],{"class":594,"line":774},[592,2594,801],{"class":631},[592,2596,804],{"class":627},[567,2598,2599],{},"Then disable prerendering per page:",[582,2601,2603],{"className":918,"code":2602,"language":920,"meta":587,"style":587},"---\nexport const prerender = false\n\nimport { tento } from '..\u002Flib\u002Ftento'\n\n\u002F\u002F This fetches on every request\nconst page = await tento.pages.getBySlug('dynamic-page')\n---\n",[589,2604,2605,2609,2614,2618,2622,2626,2631,2636],{"__ignoreMap":587},[592,2606,2607],{"class":594,"line":595},[592,2608,927],{},[592,2610,2611],{"class":594,"line":638},[592,2612,2613],{},"export const prerender = false\n",[592,2615,2616],{"class":594,"line":649},[592,2617,716],{"emptyLinePlaceholder":715},[592,2619,2620],{"class":594,"line":660},[592,2621,937],{},[592,2623,2624],{"class":594,"line":774},[592,2625,716],{"emptyLinePlaceholder":715},[592,2627,2628],{"class":594,"line":798},[592,2629,2630],{},"\u002F\u002F This fetches on every request\n",[592,2632,2633],{"class":594,"line":807},[592,2634,2635],{},"const page = await tento.pages.getBySlug('dynamic-page')\n",[592,2637,2638],{"class":594,"line":812},[592,2639,927],{},[577,2641,2643],{"id":2642},"content-collections","Content Collections",[567,2645,2646],{},"Integrate TentoCMS with Astro Content Collections:",[582,2648,2650],{"className":680,"code":2649,"language":682,"meta":587,"style":587},"\u002F\u002F src\u002Fcontent\u002Fconfig.ts\nimport { defineCollection, z } from 'astro:content'\n\nconst blogCollection = defineCollection({\n  type: 'data',\n  schema: z.object({\n    title: z.string(),\n    excerpt: z.string(),\n    publishedAt: z.string(),\n  }),\n})\n\nexport const collections = {\n  blog: blogCollection,\n}\n",[589,2651,2652,2657,2682,2686,2702,2718,2736,2754,2771,2788,2797,2803,2807,2820,2832],{"__ignoreMap":587},[592,2653,2654],{"class":594,"line":595},[592,2655,2656],{"class":1659},"\u002F\u002F src\u002Fcontent\u002Fconfig.ts\n",[592,2658,2659,2661,2663,2666,2668,2671,2673,2675,2677,2680],{"class":594,"line":638},[592,2660,690],{"class":689},[592,2662,693],{"class":631},[592,2664,2665],{"class":627}," defineCollection",[592,2667,1656],{"class":631},[592,2669,2670],{"class":627}," z",[592,2672,699],{"class":631},[592,2674,702],{"class":689},[592,2676,705],{"class":631},[592,2678,2679],{"class":602},"astro:content",[592,2681,710],{"class":631},[592,2683,2684],{"class":594,"line":649},[592,2685,716],{"emptyLinePlaceholder":715},[592,2687,2688,2691,2694,2696,2698,2700],{"class":594,"line":660},[592,2689,2690],{"class":724},"const",[592,2692,2693],{"class":627}," blogCollection ",[592,2695,632],{"class":631},[592,2697,2665],{"class":736},[592,2699,739],{"class":627},[592,2701,742],{"class":631},[592,2703,2704,2707,2709,2711,2714,2716],{"class":594,"line":774},[592,2705,2706],{"class":747},"  type",[592,2708,617],{"class":631},[592,2710,705],{"class":631},[592,2712,2713],{"class":602},"data",[592,2715,1653],{"class":631},[592,2717,771],{"class":631},[592,2719,2720,2723,2725,2727,2729,2732,2734],{"class":594,"line":798},[592,2721,2722],{"class":747},"  schema",[592,2724,617],{"class":631},[592,2726,2670],{"class":627},[592,2728,756],{"class":631},[592,2730,2731],{"class":736},"object",[592,2733,739],{"class":627},[592,2735,742],{"class":631},[592,2737,2738,2741,2743,2745,2747,2750,2752],{"class":594,"line":807},[592,2739,2740],{"class":747},"    title",[592,2742,617],{"class":631},[592,2744,2670],{"class":627},[592,2746,756],{"class":631},[592,2748,2749],{"class":736},"string",[592,2751,2586],{"class":627},[592,2753,771],{"class":631},[592,2755,2756,2759,2761,2763,2765,2767,2769],{"class":594,"line":812},[592,2757,2758],{"class":747},"    excerpt",[592,2760,617],{"class":631},[592,2762,2670],{"class":627},[592,2764,756],{"class":631},[592,2766,2749],{"class":736},[592,2768,2586],{"class":627},[592,2770,771],{"class":631},[592,2772,2773,2776,2778,2780,2782,2784,2786],{"class":594,"line":832},[592,2774,2775],{"class":747},"    publishedAt",[592,2777,617],{"class":631},[592,2779,2670],{"class":627},[592,2781,756],{"class":631},[592,2783,2749],{"class":736},[592,2785,2586],{"class":627},[592,2787,771],{"class":631},[592,2789,2790,2793,2795],{"class":594,"line":855},[592,2791,2792],{"class":631},"  }",[592,2794,1692],{"class":627},[592,2796,771],{"class":631},[592,2798,2799,2801],{"class":594,"line":879},[592,2800,801],{"class":631},[592,2802,804],{"class":627},[592,2804,2805],{"class":594,"line":902},[592,2806,716],{"emptyLinePlaceholder":715},[592,2808,2809,2811,2813,2816,2818],{"class":594,"line":982},[592,2810,721],{"class":689},[592,2812,725],{"class":724},[592,2814,2815],{"class":627}," collections ",[592,2817,632],{"class":631},[592,2819,2025],{"class":631},[592,2821,2822,2825,2827,2830],{"class":594,"line":988},[592,2823,2824],{"class":747},"  blog",[592,2826,617],{"class":631},[592,2828,2829],{"class":627}," blogCollection",[592,2831,771],{"class":631},[592,2833,2834],{"class":594,"line":994},[592,2835,1068],{"class":631},[567,2837,2838],{},"Fetch and use:",[582,2840,2842],{"className":918,"code":2841,"language":920,"meta":587,"style":587},"---\nimport { getCollection } from 'astro:content'\nimport { tento } from '..\u002Flib\u002Ftento'\n\n\u002F\u002F Fetch from TentoCMS\nconst tentoPosts = await tento.blog.posts.list({ limit: 10 })\n\n\u002F\u002F Or use Astro content collections\nconst localPosts = await getCollection('blog')\n---\n\n\u003Chtml>\n  \u003Cbody>\n    \u003Ch1>All Posts\u003C\u002Fh1>\n    {\u002F* Render TentoCMS posts *\u002F}\n    {tentoPosts.data.map(post => (\n      \u003Carticle>\n        \u003Ch2>{post.title}\u003C\u002Fh2>\n      \u003C\u002Farticle>\n    ))}\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n",[589,2843,2844,2848,2853,2857,2861,2866,2871,2875,2880,2885,2889,2893,2897,2901,2906,2911,2916,2920,2924,2928,2932,2936],{"__ignoreMap":587},[592,2845,2846],{"class":594,"line":595},[592,2847,927],{},[592,2849,2850],{"class":594,"line":638},[592,2851,2852],{},"import { getCollection } from 'astro:content'\n",[592,2854,2855],{"class":594,"line":649},[592,2856,937],{},[592,2858,2859],{"class":594,"line":660},[592,2860,716],{"emptyLinePlaceholder":715},[592,2862,2863],{"class":594,"line":774},[592,2864,2865],{},"\u002F\u002F Fetch from TentoCMS\n",[592,2867,2868],{"class":594,"line":798},[592,2869,2870],{},"const tentoPosts = await tento.blog.posts.list({ limit: 10 })\n",[592,2872,2873],{"class":594,"line":807},[592,2874,716],{"emptyLinePlaceholder":715},[592,2876,2877],{"class":594,"line":812},[592,2878,2879],{},"\u002F\u002F Or use Astro content collections\n",[592,2881,2882],{"class":594,"line":832},[592,2883,2884],{},"const localPosts = await getCollection('blog')\n",[592,2886,2887],{"class":594,"line":855},[592,2888,927],{},[592,2890,2891],{"class":594,"line":879},[592,2892,716],{"emptyLinePlaceholder":715},[592,2894,2895],{"class":594,"line":902},[592,2896,959],{},[592,2898,2899],{"class":594,"line":982},[592,2900,979],{},[592,2902,2903],{"class":594,"line":988},[592,2904,2905],{},"    \u003Ch1>All Posts\u003C\u002Fh1>\n",[592,2907,2908],{"class":594,"line":994},[592,2909,2910],{},"    {\u002F* Render TentoCMS posts *\u002F}\n",[592,2912,2913],{"class":594,"line":1000},[592,2914,2915],{},"    {tentoPosts.data.map(post => (\n",[592,2917,2918],{"class":594,"line":1088},[592,2919,1320],{},[592,2921,2922],{"class":594,"line":1093},[592,2923,2484],{},[592,2925,2926],{"class":594,"line":1098},[592,2927,1350],{},[592,2929,2930],{"class":594,"line":1104},[592,2931,1355],{},[592,2933,2934],{"class":594,"line":1110},[592,2935,997],{},[592,2937,2938],{"class":594,"line":1116},[592,2939,1003],{},[577,2941,10],{"id":2942},"best-practices",[912,2944,2946],{"id":2945},"_1-use-static-generation-by-default","1. Use Static Generation by Default",[582,2948,2950],{"className":918,"code":2949,"language":920,"meta":587,"style":587},"---\n\u002F\u002F ✅ Good: Static generation (fast, cacheable)\nconst page = await tento.pages.getBySlug('homepage')\n---\n",[589,2951,2952,2956,2961,2965],{"__ignoreMap":587},[592,2953,2954],{"class":594,"line":595},[592,2955,927],{},[592,2957,2958],{"class":594,"line":638},[592,2959,2960],{},"\u002F\u002F ✅ Good: Static generation (fast, cacheable)\n",[592,2962,2963],{"class":594,"line":649},[592,2964,946],{},[592,2966,2967],{"class":594,"line":660},[592,2968,927],{},[912,2970,2972],{"id":2971},"_2-enable-ssr-only-when-needed","2. Enable SSR Only When Needed",[582,2974,2976],{"className":918,"code":2975,"language":920,"meta":587,"style":587},"---\n\u002F\u002F Only disable prerendering for truly dynamic content\nexport const prerender = false\n---\n",[589,2977,2978,2982,2987,2991],{"__ignoreMap":587},[592,2979,2980],{"class":594,"line":595},[592,2981,927],{},[592,2983,2984],{"class":594,"line":638},[592,2985,2986],{},"\u002F\u002F Only disable prerendering for truly dynamic content\n",[592,2988,2989],{"class":594,"line":649},[592,2990,2613],{},[592,2992,2993],{"class":594,"line":660},[592,2994,927],{},[912,2996,2998],{"id":2997},"_3-optimize-images","3. Optimize Images",[582,3000,3002],{"className":918,"code":3001,"language":920,"meta":587,"style":587},"---\nimport { tento } from '..\u002Flib\u002Ftento'\n\nconst imageUrl = tento.media.getImageUrl('image-id', {\n  width: 800,\n  format: 'webp',\n  quality: 90\n})\n---\n\n\u003Cimg src={imageUrl} alt=\"Optimized image\" \u002F>\n",[589,3003,3004,3008,3012,3016,3021,3026,3031,3036,3040,3044,3048],{"__ignoreMap":587},[592,3005,3006],{"class":594,"line":595},[592,3007,927],{},[592,3009,3010],{"class":594,"line":638},[592,3011,937],{},[592,3013,3014],{"class":594,"line":649},[592,3015,716],{"emptyLinePlaceholder":715},[592,3017,3018],{"class":594,"line":660},[592,3019,3020],{},"const imageUrl = tento.media.getImageUrl('image-id', {\n",[592,3022,3023],{"class":594,"line":774},[592,3024,3025],{},"  width: 800,\n",[592,3027,3028],{"class":594,"line":798},[592,3029,3030],{},"  format: 'webp',\n",[592,3032,3033],{"class":594,"line":807},[592,3034,3035],{},"  quality: 90\n",[592,3037,3038],{"class":594,"line":812},[592,3039,1174],{},[592,3041,3042],{"class":594,"line":832},[592,3043,927],{},[592,3045,3046],{"class":594,"line":855},[592,3047,716],{"emptyLinePlaceholder":715},[592,3049,3050],{"class":594,"line":879},[592,3051,3052],{},"\u003Cimg src={imageUrl} alt=\"Optimized image\" \u002F>\n",[912,3054,3056],{"id":3055},"_4-use-environment-variables","4. Use Environment Variables",[582,3058,3060],{"className":918,"code":3059,"language":920,"meta":587,"style":587},"---\n\u002F\u002F ✅ Good\nconst apiKey = import.meta.env.TENTO_API_KEY\n\n\u002F\u002F ❌ Bad\nconst apiKey = 'tento_pk_1234567890'\n---\n",[589,3061,3062,3066,3071,3076,3080,3085,3090],{"__ignoreMap":587},[592,3063,3064],{"class":594,"line":595},[592,3065,927],{},[592,3067,3068],{"class":594,"line":638},[592,3069,3070],{},"\u002F\u002F ✅ Good\n",[592,3072,3073],{"class":594,"line":649},[592,3074,3075],{},"const apiKey = import.meta.env.TENTO_API_KEY\n",[592,3077,3078],{"class":594,"line":660},[592,3079,716],{"emptyLinePlaceholder":715},[592,3081,3082],{"class":594,"line":774},[592,3083,3084],{},"\u002F\u002F ❌ Bad\n",[592,3086,3087],{"class":594,"line":798},[592,3088,3089],{},"const apiKey = 'tento_pk_1234567890'\n",[592,3091,3092],{"class":594,"line":807},[592,3093,927],{},[912,3095,3097],{"id":3096},"_5-implement-error-boundaries","5. Implement Error Boundaries",[567,3099,3100],{},"Always handle errors gracefully to prevent build failures.",[577,3102,3104],{"id":3103},"build-hooks","Build Hooks",[567,3106,3107],{},"Configure build hooks for automatic rebuilds:",[582,3109,3111],{"className":584,"code":3110,"language":586,"meta":587,"style":587},"# In your hosting provider (Netlify, Vercel, etc.)\ncurl -X POST 'https:\u002F\u002Fapi.netlify.com\u002Fbuild_hooks\u002FYOUR_HOOK_ID'\n",[589,3112,3113,3118],{"__ignoreMap":587},[592,3114,3115],{"class":594,"line":595},[592,3116,3117],{"class":1659},"# In your hosting provider (Netlify, Vercel, etc.)\n",[592,3119,3120,3123,3126,3129,3131,3134],{"class":594,"line":638},[592,3121,3122],{"class":598},"curl",[592,3124,3125],{"class":602}," -X",[592,3127,3128],{"class":602}," POST",[592,3130,705],{"class":631},[592,3132,3133],{"class":602},"https:\u002F\u002Fapi.netlify.com\u002Fbuild_hooks\u002FYOUR_HOOK_ID",[592,3135,710],{"class":631},[567,3137,3138],{},"Configure webhook in TentoCMS admin to trigger builds on content changes.",[577,3140,3142],{"id":3141},"resources","Resources",[3144,3145,3146,3156,3163],"ul",{},[3147,3148,3149],"li",{},[3150,3151,3155],"a",{"href":3152,"rel":3153},"https:\u002F\u002Fdocs.astro.build",[3154],"nofollow","Astro Documentation",[3147,3157,3158],{},[3150,3159,3162],{"href":3160,"rel":3161},"https:\u002F\u002Fdocs.astro.build\u002Fen\u002Fguides\u002Fon-demand-rendering\u002F",[3154],"On-demand rendering in Astro",[3147,3164,3165],{},[3150,3166,3168],{"href":3167},".\u002Freference\u002Freadme","TentoCMS SDK Reference",[3170,3171,3172],"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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .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}",{"title":587,"searchDepth":638,"depth":638,"links":3174},[3175,3176,3177,3178,3185,3189,3193,3194,3195,3196,3197,3198,3199,3206,3207],{"id":579,"depth":638,"text":580},{"id":609,"depth":638,"text":610},{"id":671,"depth":638,"text":672},{"id":909,"depth":638,"text":910,"children":3179},[3180,3181,3182,3183,3184],{"id":914,"depth":649,"text":915},{"id":1006,"depth":649,"text":1007},{"id":1132,"depth":649,"text":22},{"id":1246,"depth":649,"text":1247},{"id":1366,"depth":649,"text":1367},{"id":1577,"depth":638,"text":1578,"children":3186},[3187,3188],{"id":1706,"depth":649,"text":1707},{"id":1847,"depth":649,"text":1848},{"id":682,"depth":638,"text":1862,"children":3190},[3191,3192],{"id":1865,"depth":649,"text":1866},{"id":2009,"depth":649,"text":2010},{"id":2068,"depth":638,"text":2069},{"id":2206,"depth":638,"text":2207},{"id":2304,"depth":638,"text":2305},{"id":2396,"depth":638,"text":2397},{"id":2531,"depth":638,"text":2532},{"id":2642,"depth":638,"text":2643},{"id":2942,"depth":638,"text":10,"children":3200},[3201,3202,3203,3204,3205],{"id":2945,"depth":649,"text":2946},{"id":2971,"depth":649,"text":2972},{"id":2997,"depth":649,"text":2998},{"id":3055,"depth":649,"text":3056},{"id":3096,"depth":649,"text":3097},{"id":3103,"depth":638,"text":3104},{"id":3141,"depth":638,"text":3142},"Using @tentocms\u002Fclient with Astro.","md",{},{"title":133,"description":3208},"YZgpK2g89_mr85S6Xh4W064Mjk-R0XdgkPwlEExd1fo",[3214,3216],{"title":38,"path":130,"stem":131,"description":3215,"children":-1},"Documentation hub for the @tentocms\u002Fclient TypeScript SDK.",{"title":137,"path":138,"stem":139,"description":3217,"children":-1},"Using @tentocms\u002Fclient with Next.js.",1787919220562]