{
  "version": "1.0.0",
  "name": "Exported from Current CMS Data",
  "description": "Jumpstart definition generated from existing Total CMS data - 2026-06-19 17:19:27",
  "schemas": [],
  "collections": {
    "reserved": [
        "gallery",
        "auth",
        "svg",
        "image",
        "text",
        "mailer",
        "automation-trigger",
        "sitemap-meta",
        "blog",
        "code",
        "dataviews",
        "url",
        "mcp-property",
        "mcp-tool",
        "styledtext",
        "email",
        "feed",
        "mcp-collection",
        "date",
        "toggle",
        "automations",
        "number",
        "mcp-prompt-arg",
        "depot",
        "mcp-prompt",
        "color",
        "builder-page",
        "file",
        "preset-item",
        "playground"
    ],
    "custom": []
},
  "objects": [
    {"collection":"auth","id":"admin","data":{"active":true,"image":"image","name":"Admin","email":"stephan.brockert@brockert.de","password":"$2y$12$wEM7DQDFv6CkHvkuHcPOj.wMmTq5xsSyVZupIgEHZe5kCcs/tuBDi","locale":"","groups":["admin"],"expiration":"","maxLoginCount":0,"loginCount":1,"created":"2026-06-07T17:05:25+02:00","lastlogin":"2026-06-07T17:05:26+02:00","passkeys":[]}},
    {"collection":"blog","id":"writing-with-twig","data":{"draft":false,"featured":false,"title":"Writing Templates with Twig","date":"2026-01-22T00:00:00+01:00","author":"Stephan Brockert","summary":"<p>How to use Twig in your page templates \u2014 variables, filters, includes, and the cms global.</p>","media":"http://www.huel.com/perferendis-quam-cumque-eos-iure-facere-fuga","content":"<p>Total CMS uses <a href=\"https://twig.symfony.com\">Twig</a> for templating. Inside any builder template, you have access to the <code>cms</code> global \u2014 your gateway to collections, configuration, and dynamic content.</p><h3>Common patterns</h3><ul><li><code>cms.collection.objects('blog')</code> \u2014 fetch all blog posts</li><li><code>cms.data.raw('blog', params.id)</code> \u2014 fetch a single post</li><li><code>cms.config('domain')</code> \u2014 read a config value</li></ul><p>The <a href=\"/admin/utils/twig-playground\">Twig Playground</a> lets you experiment with templates without committing changes.</p>","extra":"<ol><li>Accusamus dolore occaecati veritatis error at ut dolorem iste consequatur necessitatibus qui quaerat est.</li><li>A autem aut voluptatum sed.</li><li>Nostrum rerum dolores eaque impedit porro.</li><li>Quia aperiam iusto et nobis rerum voluptatum.</li><li>Sed itaque saepe maiores et natus consequatur sunt iure voluptatum maiores.</li><li>Consequuntur reiciendis a recusandae rerum sunt.</li></ol><p>Deserunt voluptas possimus labore et fugiat officiis est nihil eius vel. Quis maiores ut voluptatibus eaque aspernatur libero consequuntur et eum. Eum illo ipsam suscipit unde temporibus a optio placeat.</p><p>Blanditiis voluptatibus ab ad cum vero quidem odit ut numquam et consequatur placeat. Quo pariatur ut officiis excepturi cumque non et. Vitae sequi omnis accusamus voluptates quis quis voluptatibus consectetur architecto consectetur debitis <em>sunt exercitationem</em> quibusdam voluptatem occaecati enim consequuntur totam. Asperiores dolor nobis dolore inventore a <strong>nostrum</strong> mollitia aut eum.</p>","categories":["tutorials"],"tags":["twig","templates","tutorial"],"image":"image","gallery":"gallery","updated":"2026-06-08T12:50:45+02:00","created":"2026-06-07T16:47:00+02:00"}},
    {"collection":"blog","id":"welcome-to-total-cms","data":{"draft":false,"featured":true,"title":"Welcome to Total CMS","date":"2026-01-15T09:00:00+00:00","author":"Joe Workman","summary":"A quick tour of what makes Total CMS different \u2014 flat-file storage, dynamic routing, and the Site Builder.","media":"http://www.beer.com/est-sed-ut-fugiat-alias.html","content":"<p>Welcome! This is your first sample post \u2014 feel free to edit, delete, or duplicate it as you build out your blog. Posts are stored as JSON objects in the <code>blog</code> collection, and the Site Builder's page router handles all the URL routing for you.</p><p>To add your own post, head to <a href=\"/admin/collections/blog\">Collections \u2192 Blog</a> and click <em>+ New Object</em>. Your post will be available at <code>/blog/{id}</code> immediately \u2014 no rebuild step.</p>","extra":"<ol>\n\t<li><em>Fuga</em> aut et.</li>\n\t<li><strong>Eligendi</strong> quis alias nemo impedit.</li>\n\t<li>Placeat eos libero accusantium.</li>\n</ol>","categories":["tutorials"],"tags":["getting-started","welcome"],"image":"image","gallery":"gallery","updated":"2026-06-07T16:47:36+02:00","created":"2026-06-07T16:47:36+02:00"}},
    {"collection":"blog","id":"publishing-workflow","data":{"draft":false,"featured":false,"title":"A Sane Publishing Workflow","date":"2026-02-04T14:00:00+00:00","author":"Joe Workman","summary":"Drafts, publish toggles, scheduled posts \u2014 the patterns I use to keep a blog organized.","media":"http://www.wilkinson.com/quia-nam-illum-dolores-iste.html","content":"<p>Every blog post in Total CMS has a <code>draft</code> toggle. Draft posts won't appear in your listing or be reachable at their URL. Flip it off when you're ready to publish.</p><p>For scheduled publishing, set a future <code>date</code> field and filter by date in your listing template:</p><pre><code>{% verbatim %}{% set posts = cms.collection.objects('blog')\n    | filter(p =&gt; not p.draft and p.date &lt;= 'now' | date('c'))\n    | sortCollectionByString('date:desc') %}{% endverbatim %}</code></pre><p>That's it \u2014 no plugins needed.</p>","extra":"<p>Sed dolorem aut et vel unde dolore itaque repudiandae earum omnis sequi omnis vel nihil architecto qui eos et. Ut est <strong>magnam est</strong> quam id et ipsa. <strong>Sequi omnis</strong> unde sint ut porro dignissimos odio quis ab occaecati.</p>\n\n<p>Quos quis quidem adipisci impedit voluptatem. Ut aspernatur iure esse adipisci minima natus inventore a repudiandae. Veritatis atque id et dolorem reprehenderit perspiciatis temporibus ea ipsum fugit possimus qui et.</p>\n\n<p>Numquam sint qui <a href=\"#optio\">dolor facilis</a> aut. Aliquam architecto dicta dolorum et <a href=\"#eum\">et illum similique</a> illo quis et delectus nihil. Reprehenderit velit animi doloribus officia tenetur voluptatem excepturi quo quis. Ex ducimus maiores labore in quibusdam ab voluptatem nesciunt atque nobis. Quis accusantium maiores aperiam harum dolorem optio qui. Adipisci voluptate sapiente voluptas maiores id magnam et perspiciatis. Optio doloribus quia non optio est ea omnis cum in quidem rerum non nulla maiores.</p>","categories":["workflow"],"tags":["publishing","drafts"],"image":"image","gallery":"gallery","updated":"2026-06-07T16:47:38+02:00","created":"2026-06-07T16:47:38+02:00"}},
    {"collection":"blog","id":"styling-without-a-build","data":{"draft":false,"featured":false,"title":"Styling Your Site Without a Build Step","date":"2026-03-02T08:45:00+00:00","author":"Joe Workman","summary":"You don't need npm, Vite, or webpack to ship a beautiful site. Here's how the inline-styles approach holds up.","media":"http://wilkinson.biz/ut-iste-sed-aut-inventore-omnis-ut-doloremque","content":"<p>The starter ships with inline <code>&lt;style&gt;</code> tags in the layout \u2014 and that's deliberate. Plain CSS still works fine, modern browsers ship excellent layout primitives, and one HTTP round-trip beats a build pipeline for many sites.</p><p>When you do want a frontend pipeline, run <code>tcms builder:frontend</code> and you'll get a Vite scaffold ready to go. Until then: edit the <code>&lt;style&gt;</code> block in <code>layouts/default.twig</code>.</p>","extra":"<p>Accusantium quibusdam ea <a href=\"#eius\">alias expedita qui.</a> Et reprehenderit tempora suscipit placeat qui <a href=\"#rerum\">asperiores veniam</a> totam voluptate nostrum voluptate cum reiciendis. Nihil voluptatibus minima dolorem eveniet rem quidem. <strong>A</strong> placeat quia veritatis exercitationem sed id. Tenetur qui ipsam in explicabo sit qui ad rerum aut fugit cumque et sapiente perferendis inventore accusantium aut. Molestias modi consequatur impedit consequatur sunt voluptatibus iste ut quaerat <em>tenetur</em> vero iusto officia. Ipsam quae facilis rerum quia dignissimos non placeat quis sunt. Blanditiis facilis molestiae soluta hic praesentium reprehenderit asperiores culpa tempora totam.</p>\n\n<p><strong>Quia</strong> consequatur nam repellendus. Voluptas autem consequuntur architecto sunt. Non voluptatem dolores dolorem autem ullam odio quod nam est adipisci dolor dignissimos. Cupiditate blanditiis possimus pariatur eligendi quam a iure sit doloremque rerum incidunt aut. Est rerum placeat laborum voluptatibus quia enim. Molestiae sint non quia autem reprehenderit reiciendis a voluptas et dolorem rerum sunt iusto aperiam aspernatur. Facere exercitationem voluptate aliquid optio ut quia voluptate recusandae doloribus. <a href=\"#sed\">Et fuga quo</a> expedita expedita.</p>\n\n<ul>\n\t<li>Necessitatibus rerum consectetur nemo sapiente tenetur dicta in.</li>\n\t<li>Ut corrupti commodi quasi esse autem.</li>\n\t<li>Est vero cum dolores voluptate recusandae incidunt <em>quaerat</em> similique.</li>\n\t<li>Vel deleniti vel incidunt quam necessitatibus eaque tenetur tenetur neque perferendis culpa.</li>\n\t<li>Rerum <strong>voluptatem</strong> ut sed ipsa ut.</li>\n</ul>","categories":["design"],"tags":["css","design","no-build"],"image":"image","gallery":"gallery","updated":"2026-06-07T16:47:39+02:00","created":"2026-06-07T16:47:39+02:00"}},
    {"collection":"blog","id":"seo-essentials","data":{"draft":false,"featured":false,"title":"SEO Essentials for Builder Pages","date":"2026-02-18T11:15:00+00:00","author":"Joe Workman","summary":"Meta descriptions, og:image, sitemaps, and the small details that make a difference.","media":"https://www.mayer.info/corporis-officiis-quia-et-itaque-ut-vitae","content":"<p>The <code>builder-page</code> schema includes everything you need for solid SEO out of the box: <code>title</code>, <code>description</code>, <code>image</code> (used as <code>og:image</code>), and a <code>sitemap</code> toggle.</p><p>Total CMS auto-generates <code>/sitemap.xml</code> from your pages and any indexed collections. Visit <a href=\"/sitemap.xml\">/sitemap.xml</a> to see it. To exclude a page, toggle off <em>Include in Sitemap</em> in the page form.</p>","extra":"","categories":["seo"],"tags":["seo","meta","sitemap"],"image":"image","gallery":"gallery","updated":"2026-06-07T16:47:38+02:00","created":"2026-06-07T16:47:38+02:00"}},
    {"collection":"builder-pages","id":"not-found","data":{"title":"Page Not Found","route":"/404","template":"404","description":"Right-sized attitude-oriented benchmark","image":"image","draft":false,"nav":false,"data":[],"middleware":[],"accessGroups":[],"status":404,"redirectTo":"","sitemap":true,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"builder-pages","id":"blog","data":{"title":"Blog","route":"/blog","template":"blog/index","description":"Stand-alone discrete installation","image":"image","draft":false,"nav":true,"data":[],"middleware":[],"accessGroups":[],"status":200,"redirectTo":"","sitemap":false,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"builder-pages","id":"readme","data":{"title":"Getting Started","route":"/readme","template":"readme","description":"Switchable maximized moratorium","image":"image","draft":false,"nav":false,"data":[],"middleware":[],"accessGroups":[],"status":200,"redirectTo":"","sitemap":false,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"builder-pages","id":"about","data":{"title":"About","route":"/about","template":"about","description":"Persistent object-oriented encoding","image":"image","draft":false,"nav":true,"data":[],"middleware":[],"accessGroups":[],"status":200,"redirectTo":"","sitemap":false,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"builder-pages","id":"home","data":{"title":"Home","route":"/","template":"index","description":"Operative context-sensitive support","image":"image","draft":false,"nav":true,"data":[],"middleware":[],"accessGroups":[],"status":200,"redirectTo":"","sitemap":false,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"builder-pages","id":"blog-post","data":{"title":"Blog Post","route":"/blog/{id}","template":"blog/post","description":"Function-based full-range ability","image":"image","draft":false,"nav":false,"data":[],"middleware":[],"accessGroups":[],"status":200,"redirectTo":"","sitemap":false,"changeFrequency":"","priority":0,"updated":"2026-06-07T16:47:35+02:00","created":"2026-06-07T16:47:35+02:00"}},
    {"collection":"playground","id":"claude-4vjo6p9","data":{"name":"claude","category":"blog","snippet":"<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n    \n    \n    <title>Blog</title>\n    \n</head>\n<body>\n    <header>\n        <h1>Blog</h1>\n        <p>Entdecke unsere neuesten Artikel und Beitr\u00e4ge</p>\n    </header>\n\n    <div class=\"container\">\n        {% set blog_posts = cms.collection.objects('blog') %}\n\n        {% if blog_posts %}\n            <div class=\"blog-grid\">\n                {% cmsgrid blog_posts with 'blog-card' %}\n                    <div class=\"blog-card\">\n                        {% if object.image %}\n                            {{ cms.render.image('image', {w: 400, h: 250, fit: 'crop'}) }}\n                        {% else %}\n                            <div class=\"blog-card-image\" style=\"background-color: #e0e0e0;\"></div>\n                        {% endif %}\n\n                        <div class=\"blog-card-content\">\n                            {% if object.date %}\n                                <div class=\"blog-card-date\">\n                                    {{ object.date|date('d. M Y') }}\n                                </div>\n                            {% endif %}\n\n                            <h2 class=\"blog-card-title\">{{ object.title }}</h2>\n\n                            {% if object.excerpt %}\n                                <p class=\"blog-card-excerpt\">{{ object.excerpt }}</p>\n                            {% elseif object.content %}\n                                <p class=\"blog-card-excerpt\">{{ object.content|striptags|slice(0, 150) }}...</p>\n                            {% endif %}\n\n                            <a href=\"{{ object.url }}\" class=\"blog-card-link\">Artikel lesen \u2192</a>\n                        </div>\n                    </div>\n                {% endcmsgrid %}\n            </div>\n        {% else %}\n            <div class=\"empty-state\">\n                <p>Noch keine Artikel vorhanden. Komm bald wieder vorbei!</p>\n            </div>\n        {% endif %}\n    </div>\n</body>\n</html>"}}
  ],
  "factory": [],
  "templates": [
    {
        "id": "layouts/default",
        "template": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<title>{% block title %}{{ cms.config('domain') }}{% endblock %}</title>\n\t<meta name=\"description\" content=\"{% block description %}{% endblock %}\">\n\t{# Site stylesheet at <docroot>/assets/style.css. Edit it directly \u2014 cms.builder.css adds an mtime cache-buster automatically. #}\n\t{{ cms.builder.css('style.css') }}\n\t{% block head %}{% endblock %}\n</head>\n<body>\n\t{% include 'partials/nav.twig' %}\n\n\t<main class=\"container\">\n\t\t{% block content %}{% endblock %}\n\t</main>\n\n\t{% include 'partials/footer.twig' %}\n</body>\n</html>\n"
    },
    {
        "id": "pages/404",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% block title %}Page Not Found \u2014 {{ cms.config('domain') }}{% endblock %}\n\n{% block content %}\n<section class=\"section\" style=\"text-align: center;\">\n\t<p style=\"font-size: 4rem; font-weight: 700; margin: 0; color: #3b82f6;\">404</p>\n\t<h1>Page not found</h1>\n\t<p>Sorry, that page doesn't exist. It may have been moved or removed.</p>\n\t<p style=\"margin-top: 1.5rem;\"><a href=\"/\">&larr; Back to home</a></p>\n</section>\n{% endblock %}\n"
    },
    {
        "id": "pages/about",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% block title %}About \u2014 {{ cms.config('domain') }}{% endblock %}\n{% block description %}About the author.{% endblock %}\n\n{% block content %}\n<section class=\"section\">\n\t<h1>About</h1>\n\t<p>Welcome to my blog. This is where I share thoughts, ideas, and stories. Edit this page to tell your readers about yourself.</p>\n</section>\n{% endblock %}\n"
    },
    {
        "id": "pages/blog/index",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% block title %}Blog \u2014 {{ cms.config('domain') }}{% endblock %}\n{% block description %}All blog posts.{% endblock %}\n\n{% block content %}\n<section class=\"section\">\n\t<h1>Blog</h1>\n\n\t{% set posts = cms.collection.objects('blog', {sort: 'date:desc'}) %}\n\t{% for post in posts %}\n\t\t{% include 'partials/post-card.twig' with {post: post} %}\n\t{% else %}\n\t\t<p>No posts yet.</p>\n\t{% endfor %}\n</section>\n{% endblock %}\n"
    },
    {
        "id": "pages/blog/post",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% set post = cms.collection.object('blog', params.id) %}\n\n{% block title %}{{ post.title ?? 'Post Not Found' }} \u2014 {{ cms.config('domain') }}{% endblock %}\n{% block description %}{{ post.summary | default('') | striptags | slice(0, 160) }}{% endblock %}\n\n{% block content %}\n<section class=\"section\">\n\t{% if post %}\n\t\t<article>\n\t\t\t<header style=\"margin-bottom: 2rem;\">\n\t\t\t\t<h1>{{ post.title }}</h1>\n\t\t\t\t<p class=\"post-meta\">\n\t\t\t\t\t{{ post.date | date('F j, Y') }}\n\t\t\t\t\t{% if post.author %} &middot; {{ post.author }}{% endif %}\n\t\t\t\t</p>\n\t\t\t</header>\n\n\t\t\t{% if post.content %}\n\t\t\t\t<div>{{ post.content | raw }}</div>\n\t\t\t{% endif %}\n\n\t\t\t<footer style=\"margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #e5e7eb;\">\n\t\t\t\t<a href=\"/blog\">&larr; Back to all posts</a>\n\t\t\t</footer>\n\t\t</article>\n\t{% else %}\n\t\t<h1>Post Not Found</h1>\n\t\t<p>The blog post <code>{{ params.id }}</code> could not be found.</p>\n\t\t<p><a href=\"/blog\">&larr; Back to all posts</a></p>\n\t{% endif %}\n</section>\n{% endblock %}\n"
    },
    {
        "id": "pages/index",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% block title %}Home \u2014 {{ cms.config('domain') }}{% endblock %}\n\n{% block content %}\n{% set readmeUrl = cms.builder.url('readme') %}\n{% if readmeUrl %}\n<aside style=\"background: #eef6ff; border-left: 4px solid #3b82f6; padding: 0.85rem 1.25rem; margin: 1rem 0; font-size: 0.95em;\">\n\tNew here? Check out the <a href=\"{{ readmeUrl }}\" style=\"font-weight: 600;\">Getting Started guide</a> to learn how this starter works.\n</aside>\n{% endif %}\n\n<section class=\"section\">\n\t<h1>Latest Posts</h1>\n\n\t{% set posts = cms.collection.objects('blog', {sort: 'date:desc', limit: 5}) %}\n\t{% for post in posts %}\n\t\t{% include 'partials/post-card.twig' with {post: post} %}\n\t{% else %}\n\t\t<p>No posts yet. Create a blog collection with the blog schema to get started.</p>\n\t{% endfor %}\n</section>\n{% endblock %}\n"
    },
    {
        "id": "pages/readme",
        "template": "{% extends 'layouts/default.twig' %}\n\n{% block title %}Getting Started \u2014 {{ cms.config('domain') }}{% endblock %}\n\n{% block content %}\n<section class=\"section\">\n\t<div class=\"container\" style=\"max-width: 720px;\">\n\t\t<h1>You're up and running</h1>\n\t\t<p style=\"font-size: 1.15rem; color: #666;\">\n\t\t\tThis is the <strong>blog</strong> starter \u2014 a content-focused site with a homepage, blog\n\t\t\tindex, post detail page, and an About page.\n\t\t</p>\n\n\t\t<h2 style=\"margin-top: 2.5rem;\">How the blog routes work</h2>\n\t\t<p>\n\t\t\tThe site uses two patterns side-by-side:\n\t\t</p>\n\t\t<ul style=\"line-height: 1.8;\">\n\t\t\t<li><code>/blog</code> \u2014 listing page (builder page, template <code>pages/blog/index.twig</code>)</li>\n\t\t\t<li><code>/blog/{id}</code> \u2014 single-post page (builder page, template <code>pages/blog/post.twig</code>)</li>\n\t\t</ul>\n\t\t<p>\n\t\t\tEach post lives as an object in the <code>blog</code> collection. Visiting\n\t\t\t<code>/blog/my-post</code> matches the <code>/blog/{id}</code> route and your post template\n\t\t\tloads the matching object via <code>{% verbatim %}{% set post = cms.data.raw('blog', params.id) %}{% endverbatim %}</code>.\n\t\t</p>\n\n\t\t<h2 style=\"margin-top: 2.5rem;\">Add your first post</h2>\n\t\t<ol style=\"line-height: 1.8;\">\n\t\t\t<li>Go to <a target=\"_blank\" rel=\"noopener\" href=\"/admin/collections/blog\">Collections \u2192 Blog</a></li>\n\t\t\t<li>Click <em>+ New Object</em></li>\n\t\t\t<li>Fill in title, summary, and content</li>\n\t\t\t<li>Save \u2014 your post appears at <code>/blog/{id}</code> immediately, no rebuild needed</li>\n\t\t</ol>\n\n\t\t<h2 style=\"margin-top: 2.5rem;\">Sample posts</h2>\n\t\t<p>\n\t\t\tThe starter ships a handful of pre-loaded posts so the listing and detail pages have\n\t\t\tsomething to render. Browse them at <a target=\"_blank\" rel=\"noopener\" href=\"/blog\">/blog</a> or edit them at\n\t\t\t<a target=\"_blank\" rel=\"noopener\" href=\"/admin/collections/blog\">Collections \u2192 Blog</a>. Delete them whenever you're\n\t\t\tready to publish your own.\n\t\t</p>\n\n\t\t<h2 style=\"margin-top: 2.5rem;\">Customizing</h2>\n\t\t<ul style=\"line-height: 1.8;\">\n\t\t\t<li><strong>Layout</strong> \u2014 <code>tcms-data/builder/layouts/default.twig</code></li>\n\t\t\t<li><strong>Listing page</strong> \u2014 <code>tcms-data/builder/pages/blog/index.twig</code></li>\n\t\t\t<li><strong>Post page</strong> \u2014 <code>tcms-data/builder/pages/blog/post.twig</code></li>\n\t\t\t<li><strong>Post card</strong> \u2014 <code>tcms-data/builder/partials/post-card.twig</code></li>\n\t\t</ul>\n\n\t\t<h2 style=\"margin-top: 2.5rem;\">Learn more</h2>\n\t\t<ul style=\"line-height: 1.8;\">\n\t\t\t<li><a target=\"_blank\" rel=\"noopener\" href=\"/admin/docs/builder/overview\">Site Builder overview</a></li>\n\t\t\t<li><a target=\"_blank\" rel=\"noopener\" href=\"/admin/docs/twig/object-linking\">Object linking + URL templates</a></li>\n\t\t\t<li><a target=\"_blank\" rel=\"noopener\" href=\"/admin/docs/builder/admin\">Admin UI guide</a></li>\n\t\t</ul>\n\t</div>\n</section>\n{% endblock %}\n"
    },
    {
        "id": "partials/footer",
        "template": "<footer style=\"padding: 2rem 0; margin-top: 4rem; text-align: center; color: #888; font-family: system-ui, sans-serif; font-size: 0.9rem;\">\n\t<div class=\"container\">\n\t\t<p>&copy; {{ 'now' | date('Y') }} {{ cms.config('domain') }}</p>\n\t</div>\n</footer>\n"
    },
    {
        "id": "partials/nav",
        "template": "<nav style=\"border-bottom: 1px solid #e5e7eb; padding: 1rem 0;\">\n\t<div class=\"container\" style=\"display: flex; justify-content: space-between; align-items: center;\">\n\t\t<a href=\"/\" style=\"font-weight: 700; font-size: 1.25rem; text-decoration: none; color: #111; font-family: system-ui, sans-serif;\">{{ cms.config('domain') }}</a>\n\t\t<ul style=\"list-style: none; display: flex; gap: 1.5rem; font-family: system-ui, sans-serif;\">\n\t\t\t{% for p in cms.builder.nav() %}\n\t\t\t\t<li><a href=\"{{ p.route }}\" style=\"text-decoration: none; color: #555;\">{{ p.title }}</a></li>\n\t\t\t{% endfor %}\n       <li>\n         <a href=\"{{ '/admin' }}\" style=\"text-decoration: none; color: #555; font-weight: 500;\">{{ 'Admin-Dashboard' }}</a>\n       </li>  \n\t\t</ul>\n\t</div>\n</nav>"
    },
    {
        "id": "partials/post-card",
        "template": "<article class=\"post-card\">\n\t<h2><a href=\"{{ cms.collection.objectUrl('blog', post) }}\" style=\"text-decoration: none; color: #111;\">{{ post.title }}</a></h2>\n\t<p class=\"post-meta\">{{ post.date | date('F j, Y') }}{% if post.author is defined and post.author %} &middot; {{ post.author }}{% endif %}</p>\n\t{% if post.summary is defined and post.summary %}\n\t\t<div>{{ post.summary | raw }}</div>\n\t{% endif %}\n</article>\n"
    }
]
}
