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