[{"data":1,"prerenderedAt":1206},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped":358,"\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped-surround":1201},[4,14,36,69,140,341],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,182,207,211,295,320,324],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175,178],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F3.building-your-ui\u002F4.cwa-cli",{"title":183,"path":184,"stem":185,"children":186,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[187,191,195,199,203],{"title":188,"path":189,"stem":190},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":192,"path":193,"stem":194},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":196,"path":197,"stem":198},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":200,"path":201,"stem":202},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":204,"path":205,"stem":206},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":208,"path":209,"stem":210},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":212,"path":213,"stem":214,"children":215,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[216,224,261,278],{"title":217,"path":218,"stem":219,"children":220,"page":35},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F6.composables\u002F0.layout",[221],{"title":217,"path":222,"stem":223},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F6.composables\u002F0.layout\u002F1.use-cwa-layout",{"title":225,"path":226,"stem":227,"children":228,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[229,233,237,241,245,249,253,257],{"title":230,"path":231,"stem":232},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F6.composables\u002F1.component\u002F0.use-cwa-component",{"title":234,"path":235,"stem":236},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":238,"path":239,"stem":240},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":242,"path":243,"stem":244},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":246,"path":247,"stem":248},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":250,"path":251,"stem":252},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":254,"path":255,"stem":256},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":258,"path":259,"stem":260},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":262,"path":263,"stem":264,"children":265,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[266,270,274],{"title":267,"path":268,"stem":269},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":271,"path":272,"stem":273},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":275,"path":276,"stem":277},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":279,"path":280,"stem":281,"children":282,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[283,287,291],{"title":284,"path":285,"stem":286},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":288,"path":289,"stem":290},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":292,"path":293,"stem":294},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":296,"path":297,"stem":298,"children":299,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[300,304,308,312,316],{"title":301,"path":302,"stem":303},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":305,"path":306,"stem":307},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":309,"path":310,"stem":311},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":313,"path":314,"stem":315},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":317,"path":318,"stem":319},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":321,"path":322,"stem":323},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":325,"path":326,"stem":327,"children":328,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[329,333,337],{"title":330,"path":331,"stem":332},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":334,"path":335,"stem":336},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":338,"path":339,"stem":340},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":342,"path":343,"stem":344,"children":345,"page":35},"Deployment","\u002Fdeployment","6.deployment",[346,350,354],{"title":347,"path":348,"stem":349},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":351,"path":352,"stem":353},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":355,"path":356,"stem":357},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":359,"title":100,"badge":360,"body":363,"description":1195,"extension":1196,"links":1197,"meta":1198,"navigation":491,"path":101,"seo":1199,"stem":102,"__hash__":1200},"docs\u002F4.api\u002F2.components\u002F2.annotations\u002F3.timestamped.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":1187},"minimark",[366,382,387,588,592,643,646,650,661,713,718,901,905,908,1026,1034,1038,1044,1150,1161,1165,1183],[367,368,369,373,374,377,378,381],"p",{},[370,371,372],"code",{},"#[Silverback\\Timestamped]"," automatically populates ",[370,375,376],{},"createdAt"," and ",[370,379,380],{},"modifiedAt"," on persist and flush. It's a lightweight annotation with no configuration required — add it and forget it.",[383,384,386],"h2",{"id":385},"setup","Setup",[388,389,394],"pre",{"className":390,"code":391,"language":392,"meta":393,"style":393},"language-php shiki shiki-themes github-light github-dark material-theme-palenight","use Silverback\\ApiComponentsBundle\\Annotation as Silverback;\nuse Silverback\\ApiComponentsBundle\\Entity\\Core\\AbstractComponent;\nuse Silverback\\ApiComponentsBundle\\Entity\\Utility\\TimestampedTrait;\n\n#[Silverback\\Timestamped]\n#[ORM\\Entity]\n#[ApiResource(mercure: true)]\nclass Article extends AbstractComponent\n{\n    use TimestampedTrait;\n}\n","php","",[370,395,396,431,459,486,493,510,524,549,565,571,582],{"__ignoreMap":393},[397,398,401,405,409,413,416,418,421,424,427],"span",{"class":399,"line":400},"line",1,[397,402,404],{"class":403},"stmX-","use",[397,406,408],{"class":407},"sc2zw"," Silverback",[397,410,412],{"class":411},"sBtbT","\\",[397,414,415],{"class":407},"ApiComponentsBundle",[397,417,412],{"class":411},[397,419,420],{"class":407},"Annotation",[397,422,423],{"class":403}," as",[397,425,408],{"class":426},"sRCss",[397,428,430],{"class":429},"sOvfz",";\n",[397,432,434,436,438,440,442,444,447,449,452,454,457],{"class":399,"line":433},2,[397,435,404],{"class":403},[397,437,408],{"class":407},[397,439,412],{"class":411},[397,441,415],{"class":407},[397,443,412],{"class":411},[397,445,446],{"class":407},"Entity",[397,448,412],{"class":411},[397,450,451],{"class":407},"Core",[397,453,412],{"class":411},[397,455,456],{"class":407},"AbstractComponent",[397,458,430],{"class":429},[397,460,462,464,466,468,470,472,474,476,479,481,484],{"class":399,"line":461},3,[397,463,404],{"class":403},[397,465,408],{"class":407},[397,467,412],{"class":411},[397,469,415],{"class":407},[397,471,412],{"class":411},[397,473,446],{"class":407},[397,475,412],{"class":411},[397,477,478],{"class":407},"Utility",[397,480,412],{"class":411},[397,482,483],{"class":407},"TimestampedTrait",[397,485,430],{"class":429},[397,487,489],{"class":399,"line":488},4,[397,490,492],{"emptyLinePlaceholder":491},true,"\n",[397,494,496,500,503,505,507],{"class":399,"line":495},5,[397,497,499],{"class":498},"sPB8G","#[",[397,501,502],{"class":407},"Silverback",[397,504,412],{"class":411},[397,506,100],{"class":407},[397,508,509],{"class":498},"]\n",[397,511,513,515,518,520,522],{"class":399,"line":512},6,[397,514,499],{"class":498},[397,516,517],{"class":407},"ORM",[397,519,412],{"class":411},[397,521,446],{"class":407},[397,523,509],{"class":498},[397,525,527,529,532,535,538,541,544,547],{"class":399,"line":526},7,[397,528,499],{"class":498},[397,530,531],{"class":407},"ApiResource",[397,533,534],{"class":429},"(",[397,536,537],{"class":426},"mercure",[397,539,540],{"class":429},":",[397,542,543],{"class":411}," true",[397,545,546],{"class":429},")",[397,548,509],{"class":498},[397,550,552,556,559,562],{"class":399,"line":551},8,[397,553,555],{"class":554},"swB56","class",[397,557,558],{"class":426}," Article",[397,560,561],{"class":554}," extends",[397,563,564],{"class":426}," AbstractComponent\n",[397,566,568],{"class":399,"line":567},9,[397,569,570],{"class":429},"{\n",[397,572,574,577,580],{"class":399,"line":573},10,[397,575,576],{"class":403},"    use",[397,578,579],{"class":407}," TimestampedTrait",[397,581,430],{"class":429},[397,583,585],{"class":399,"line":584},11,[397,586,587],{"class":429},"}\n",[383,589,591],{"id":590},"what-timestampedtrait-adds","What TimestampedTrait Adds",[593,594,595,611],"table",{},[596,597,598],"thead",{},[599,600,601,605,608],"tr",{},[602,603,604],"th",{},"Property",[602,606,607],{},"Type",[602,609,610],{},"Behaviour",[612,613,614,629],"tbody",{},[599,615,616,621,626],{},[617,618,619],"td",{},[370,620,376],{},[617,622,623],{},[370,624,625],{},"?\\DateTimeImmutable",[617,627,628],{},"Set once on first persist; never updated after that",[599,630,631,635,640],{},[617,632,633],{},[370,634,380],{},[617,636,637],{},[370,638,639],{},"?\\DateTime",[617,641,642],{},"Updated on every Doctrine flush",[367,644,645],{},"Both are serialized and included in API responses automatically. They are read-only from the API — the bundle manages them, not the client.",[383,647,649],{"id":648},"customising-field-names","Customising Field Names",[367,651,652,653,377,655,657,658,660],{},"The default names are ",[370,654,376],{},[370,656,380],{},", matching ",[370,659,483],{},". If those names conflict with your own fields, override them:",[388,662,664],{"className":390,"code":663,"language":392,"meta":393,"style":393},"#[Silverback\\Timestamped(createdAtField: 'publishedOn', modifiedAtField: 'lastEdited')]\n",[370,665,666],{"__ignoreMap":393},[397,667,668,670,672,674,676,678,681,683,687,691,694,697,700,702,704,707,709,711],{"class":399,"line":400},[397,669,499],{"class":498},[397,671,502],{"class":407},[397,673,412],{"class":411},[397,675,100],{"class":407},[397,677,534],{"class":429},[397,679,680],{"class":426},"createdAtField",[397,682,540],{"class":429},[397,684,686],{"class":685},"seSrl"," '",[397,688,690],{"class":689},"sLL54","publishedOn",[397,692,693],{"class":685},"'",[397,695,696],{"class":429},",",[397,698,699],{"class":426}," modifiedAtField",[397,701,540],{"class":429},[397,703,686],{"class":685},[397,705,706],{"class":689},"lastEdited",[397,708,693],{"class":685},[397,710,546],{"class":429},[397,712,509],{"class":498},[367,714,715,716,540],{},"When using custom names you must define the properties and getters\u002Fsetters yourself rather than using ",[370,717,483],{},[388,719,721],{"className":390,"code":720,"language":392,"meta":393,"style":393},"#[Silverback\\Timestamped(createdAtField: 'publishedOn', modifiedAtField: 'lastEdited')]\n#[ORM\\Entity]\n#[ApiResource]\nclass Article extends AbstractComponent\n{\n    #[ORM\\Column(nullable: true)]\n    public ?\\DateTimeImmutable $publishedOn = null;\n\n    #[ORM\\Column(nullable: true)]\n    public ?\\DateTime $lastEdited = null;\n}\n",[370,722,723,761,773,781,791,795,820,849,853,875,897],{"__ignoreMap":393},[397,724,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759],{"class":399,"line":400},[397,726,499],{"class":498},[397,728,502],{"class":407},[397,730,412],{"class":411},[397,732,100],{"class":407},[397,734,534],{"class":429},[397,736,680],{"class":426},[397,738,540],{"class":429},[397,740,686],{"class":685},[397,742,690],{"class":689},[397,744,693],{"class":685},[397,746,696],{"class":429},[397,748,699],{"class":426},[397,750,540],{"class":429},[397,752,686],{"class":685},[397,754,706],{"class":689},[397,756,693],{"class":685},[397,758,546],{"class":429},[397,760,509],{"class":498},[397,762,763,765,767,769,771],{"class":399,"line":433},[397,764,499],{"class":498},[397,766,517],{"class":407},[397,768,412],{"class":411},[397,770,446],{"class":407},[397,772,509],{"class":498},[397,774,775,777,779],{"class":399,"line":461},[397,776,499],{"class":498},[397,778,531],{"class":407},[397,780,509],{"class":498},[397,782,783,785,787,789],{"class":399,"line":488},[397,784,555],{"class":554},[397,786,558],{"class":426},[397,788,561],{"class":554},[397,790,564],{"class":426},[397,792,793],{"class":399,"line":495},[397,794,570],{"class":429},[397,796,797,800,802,804,807,809,812,814,816,818],{"class":399,"line":512},[397,798,799],{"class":498},"    #[",[397,801,517],{"class":407},[397,803,412],{"class":411},[397,805,806],{"class":407},"Column",[397,808,534],{"class":429},[397,810,811],{"class":426},"nullable",[397,813,540],{"class":429},[397,815,543],{"class":411},[397,817,546],{"class":429},[397,819,509],{"class":498},[397,821,822,825,829,831,835,838,841,844,847],{"class":399,"line":526},[397,823,824],{"class":554},"    public",[397,826,828],{"class":827},"sVlFx"," ?",[397,830,412],{"class":411},[397,832,834],{"class":833},"sbW4m","DateTimeImmutable",[397,836,837],{"class":429}," $",[397,839,840],{"class":498},"publishedOn ",[397,842,843],{"class":827},"=",[397,845,846],{"class":411}," null",[397,848,430],{"class":429},[397,850,851],{"class":399,"line":551},[397,852,492],{"emptyLinePlaceholder":491},[397,854,855,857,859,861,863,865,867,869,871,873],{"class":399,"line":567},[397,856,799],{"class":498},[397,858,517],{"class":407},[397,860,412],{"class":411},[397,862,806],{"class":407},[397,864,534],{"class":429},[397,866,811],{"class":426},[397,868,540],{"class":429},[397,870,543],{"class":411},[397,872,546],{"class":429},[397,874,509],{"class":498},[397,876,877,879,881,883,886,888,891,893,895],{"class":399,"line":573},[397,878,824],{"class":554},[397,880,828],{"class":827},[397,882,412],{"class":411},[397,884,885],{"class":833},"DateTime",[397,887,837],{"class":429},[397,889,890],{"class":498},"lastEdited ",[397,892,843],{"class":827},[397,894,846],{"class":411},[397,896,430],{"class":429},[397,898,899],{"class":399,"line":584},[397,900,587],{"class":429},[383,902,904],{"id":903},"combining-with-publishable","Combining with Publishable",[367,906,907],{},"Timestamps and publish workflow are commonly used together for blog-style content:",[388,909,911],{"className":390,"code":910,"language":392,"meta":393,"style":393},"#[Silverback\\Publishable]\n#[Silverback\\Timestamped]\n#[ORM\\Entity]\n#[ApiResource(mercure: true)]\nclass Article extends AbstractComponent\n{\n    use PublishableTrait;\n    use TimestampedTrait;\n\n    public ?string $headline = null;\n}\n",[370,912,913,925,937,949,967,977,981,990,998,1002,1022],{"__ignoreMap":393},[397,914,915,917,919,921,923],{"class":399,"line":400},[397,916,499],{"class":498},[397,918,502],{"class":407},[397,920,412],{"class":411},[397,922,92],{"class":407},[397,924,509],{"class":498},[397,926,927,929,931,933,935],{"class":399,"line":433},[397,928,499],{"class":498},[397,930,502],{"class":407},[397,932,412],{"class":411},[397,934,100],{"class":407},[397,936,509],{"class":498},[397,938,939,941,943,945,947],{"class":399,"line":461},[397,940,499],{"class":498},[397,942,517],{"class":407},[397,944,412],{"class":411},[397,946,446],{"class":407},[397,948,509],{"class":498},[397,950,951,953,955,957,959,961,963,965],{"class":399,"line":488},[397,952,499],{"class":498},[397,954,531],{"class":407},[397,956,534],{"class":429},[397,958,537],{"class":426},[397,960,540],{"class":429},[397,962,543],{"class":411},[397,964,546],{"class":429},[397,966,509],{"class":498},[397,968,969,971,973,975],{"class":399,"line":495},[397,970,555],{"class":554},[397,972,558],{"class":426},[397,974,561],{"class":554},[397,976,564],{"class":426},[397,978,979],{"class":399,"line":512},[397,980,570],{"class":429},[397,982,983,985,988],{"class":399,"line":526},[397,984,576],{"class":403},[397,986,987],{"class":407}," PublishableTrait",[397,989,430],{"class":429},[397,991,992,994,996],{"class":399,"line":551},[397,993,576],{"class":403},[397,995,579],{"class":407},[397,997,430],{"class":429},[397,999,1000],{"class":399,"line":567},[397,1001,492],{"emptyLinePlaceholder":491},[397,1003,1004,1006,1008,1011,1013,1016,1018,1020],{"class":399,"line":573},[397,1005,824],{"class":554},[397,1007,828],{"class":827},[397,1009,1010],{"class":403},"string",[397,1012,837],{"class":429},[397,1014,1015],{"class":498},"headline ",[397,1017,843],{"class":827},[397,1019,846],{"class":411},[397,1021,430],{"class":429},[397,1023,1024],{"class":399,"line":584},[397,1025,587],{"class":429},[367,1027,1028,1029,377,1031,1033],{},"The ",[370,1030,376],{},[370,1032,380],{}," fields reflect the draft entity's lifecycle. The published twin gets its own timestamps set when it's first created.",[383,1035,1037],{"id":1036},"using-timestamps-on-the-front-end","Using Timestamps on the Front-End",[367,1039,1040,1041,540],{},"Access them via ",[370,1042,1043],{},"resource.value?.data",[388,1045,1049],{"className":1046,"code":1047,"language":1048,"meta":393,"style":393},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","\u002F\u002F resource from useCwaComponent(props)\nconst createdAt = computed(() =>\n  resource.value?.data?.createdAt\n    ? new Date(resource.value.data.createdAt).toLocaleDateString()\n    : ''\n)\n","ts",[370,1050,1051,1057,1080,1102,1137,1145],{"__ignoreMap":393},[397,1052,1053],{"class":399,"line":400},[397,1054,1056],{"class":1055},"sTBSN","\u002F\u002F resource from useCwaComponent(props)\n",[397,1058,1059,1062,1065,1068,1072,1074,1077],{"class":399,"line":433},[397,1060,1061],{"class":554},"const",[397,1063,1064],{"class":407}," createdAt",[397,1066,1067],{"class":827}," =",[397,1069,1071],{"class":1070},"sKpYG"," computed",[397,1073,534],{"class":498},[397,1075,1076],{"class":429},"()",[397,1078,1079],{"class":554}," =>\n",[397,1081,1082,1085,1088,1091,1094,1097,1099],{"class":399,"line":461},[397,1083,1084],{"class":498},"  resource",[397,1086,1087],{"class":429},".",[397,1089,1090],{"class":498},"value",[397,1092,1093],{"class":429},"?.",[397,1095,1096],{"class":498},"data",[397,1098,1093],{"class":429},[397,1100,1101],{"class":498},"createdAt\n",[397,1103,1104,1107,1110,1113,1116,1118,1120,1122,1124,1126,1129,1131,1134],{"class":399,"line":488},[397,1105,1106],{"class":827},"    ?",[397,1108,1109],{"class":827}," new",[397,1111,1112],{"class":1070}," Date",[397,1114,1115],{"class":498},"(resource",[397,1117,1087],{"class":429},[397,1119,1090],{"class":498},[397,1121,1087],{"class":429},[397,1123,1096],{"class":498},[397,1125,1087],{"class":429},[397,1127,1128],{"class":498},"createdAt)",[397,1130,1087],{"class":429},[397,1132,1133],{"class":1070},"toLocaleDateString",[397,1135,1136],{"class":498},"()\n",[397,1138,1139,1142],{"class":399,"line":495},[397,1140,1141],{"class":827},"    :",[397,1143,1144],{"class":685}," ''\n",[397,1146,1147],{"class":399,"line":512},[397,1148,1149],{"class":498},")\n",[367,1151,1152,1153,1156,1157,1160],{},"Both properties are ISO 8601 strings in the API response. Use ",[370,1154,1155],{},"Intl.DateTimeFormat"," or a library like ",[370,1158,1159],{},"date-fns"," to format them for display.",[383,1162,1164],{"id":1163},"migration-notes","Migration Notes",[367,1166,1167,1169,1170,1172,1173,1176,1177,1172,1179,1182],{},[370,1168,483],{}," adds two nullable columns to your entity's table. The migration is straightforward — no foreign keys or join tables involved. ",[370,1171,376],{}," is a ",[370,1174,1175],{},"datetime_immutable"," column; ",[370,1178,380],{},[370,1180,1181],{},"datetime"," column.",[1184,1185,1186],"style",{},"html pre.shiki code .stmX-, html code.shiki .stmX-{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F78C6C}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}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 .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}",{"title":393,"searchDepth":433,"depth":433,"links":1188},[1189,1190,1191,1192,1193,1194],{"id":385,"depth":433,"text":386},{"id":590,"depth":433,"text":591},{"id":648,"depth":433,"text":649},{"id":903,"depth":433,"text":904},{"id":1036,"depth":433,"text":1037},{"id":1163,"depth":433,"text":1164},"Automatically record created and modified timestamps on any component or page data entity.","md",null,{},{"title":100,"description":1195},"wTL8nHRErxNyxnQ4oZFfmJ8LYobSYkzR9yk3HVwx9mc",[1202,1204],{"title":96,"path":97,"stem":98,"description":1203,"children":-1},"Add file upload support to any component with Flysystem adapters and optional Imagine image processing.",{"title":109,"path":110,"stem":111,"description":1205,"children":-1},"The built-in Collection resource for rendering paginated lists of other API resources as a CWA component.",1782512903110]