{
  "schemaVersion": "1.0",
  "manifestVersion": "2026-09-06",
  "id": "govisit-authoring",
  "language": "en",
  "canonicalUrl": "https://govisit.ai/en/docs/authoring/manifest.json",
  "documentationUrl": "https://govisit.ai/en/docs/authoring",
  "publicationTarget": "govisit",
  "rendering": {
    "format": "mdx",
    "runtime": "govisit-web",
    "sourceVisibility": "private"
  },
  "planning": {
    "entryPoint": "catalog",
    "planningUnits": [
      "document",
      "collection"
    ],
    "workflow": [
      "read-catalog",
      "plan-scope-and-structure",
      "select-capabilities",
      "encode-content",
      "validate-and-publish"
    ]
  },
  "catalogs": {
    "visualElements": {
      "status": "active",
      "entryKind": "visual-element",
      "title": "Visual elements",
      "summary": "Optional authoring capabilities selected after document or collection planning.",
      "entries": [
        {
          "id": "ContentStepSequence",
          "aliases": [
            "BlogSteps"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "ordered-process",
            "workflow",
            "checklist"
          ],
          "summary": "Presents an ordered process or checklist.",
          "useWhen": [
            "Presents an ordered process or checklist."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "ordered process",
          "authoring": {
            "syntax": "MDX block with ContentStep children.",
            "props": [
              {
                "name": "label",
                "type": "string",
                "required": true,
                "description": "Accessible label for the process."
              },
              {
                "name": "direction",
                "type": "enum",
                "values": [
                  "horizontal",
                  "vertical"
                ],
                "default": "horizontal",
                "required": false,
                "description": "Process orientation."
              }
            ],
            "children": {
              "minChildren": 2,
              "allowedChildIds": [
                "ContentStep"
              ],
              "childContract": "Use two or more ContentStep children."
            },
            "examples": [
              {
                "purpose": "Show a two-stage operational process.",
                "mdx": "<ContentStepSequence\n  direction=\"vertical\"\n  label=\"Pilot process\"\n>\n  <ContentStep title=\"Choose\">\n    <p>Select one pilot property.</p>\n  </ContentStep>\n  <ContentStep title=\"Measure\">\n    <p>Review the result.</p>\n  </ContentStep>\n</ContentStepSequence>"
              }
            ]
          },
          "requirements": [
            "Provide an accessible label and at least two ContentStep children.",
            "Use horizontal or vertical direction."
          ],
          "accessibility": [
            "Keep the ordered relationship available through the child titles and content."
          ],
          "composition": {
            "minChildren": 2,
            "allowedChildIds": [
              "ContentStep"
            ]
          },
          "fallback": "Use an ordinary ordered Markdown list."
        },
        {
          "id": "ContentTable",
          "aliases": [
            "BlogTable"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "comparison",
            "structured-data"
          ],
          "summary": "Presents structured comparisons or values.",
          "useWhen": [
            "Presents structured comparisons or values."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "semantic table",
          "authoring": {
            "syntax": "MDX table block with optional caption and semantic headers.",
            "props": [
              {
                "name": "caption",
                "type": "string",
                "required": false,
                "description": "Optional visible table caption."
              }
            ],
            "children": {
              "childContract": "Use semantic table headers and data cells."
            },
            "examples": [
              {
                "purpose": "Compare two publishing options.",
                "mdx": "<ContentTable caption=\"Publishing options\">\n  <thead>\n    <tr>\n      <th scope=\"col\">Option</th>\n      <th scope=\"col\">Review time</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\">Draft</th>\n      <td>One day</td>\n    </tr>\n  </tbody>\n</ContentTable>"
              }
            ]
          },
          "requirements": [
            "Use semantic table headers and provide a caption when the table needs standalone context."
          ],
          "accessibility": [
            "Use scoped headers so readers can understand each cell."
          ],
          "composition": {
            "childContract": "Use semantic table sections and headers."
          },
          "fallback": "Use a Markdown list for a small unstructured set."
        },
        {
          "id": "ContentSearchableSortableTable",
          "aliases": [
            "BlogTableFilterSort"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "searchable-data",
            "sortable-data",
            "comparison"
          ],
          "summary": "Presents a searchable, sortable structured dataset.",
          "useWhen": [
            "Presents a searchable, sortable structured dataset."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "interactive semantic table",
          "authoring": {
            "syntax": "MDX table block with caption and semantic headers.",
            "props": [
              {
                "name": "caption",
                "type": "string",
                "required": true,
                "description": "Visible table caption."
              },
              {
                "name": "searchLabel",
                "type": "string",
                "default": "Search table",
                "required": false,
                "description": "Accessible search field label."
              },
              {
                "name": "searchPlaceholder",
                "type": "string",
                "default": "Search table...",
                "required": false,
                "description": "Search field hint."
              }
            ],
            "children": {
              "childContract": "Use searchable rows and semantic table headers."
            },
            "examples": [
              {
                "purpose": "Compare a dataset of local options.",
                "mdx": "<ContentSearchableSortableTable\n  caption=\"Local options\"\n  searchLabel=\"Search local options\"\n  searchPlaceholder=\"Search by name or category...\"\n>\n  <thead>\n    <tr>\n      <th scope=\"col\">Name</th>\n      <th scope=\"col\">Category</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th scope=\"row\">Market</th>\n      <td>Food</td>\n    </tr>\n  </tbody>\n</ContentSearchableSortableTable>"
              }
            ]
          },
          "requirements": [
            "Provide a visible caption, semantic headers, searchable rows, and an appropriate dataset size."
          ],
          "accessibility": [
            "Ensure headers communicate the row and column relationships."
          ],
          "composition": {
            "childContract": "Use semantic headers and rows."
          },
          "fallback": "Use ContentTable when filtering and sorting do not help the reader."
        },
        {
          "id": "ContentFigure",
          "aliases": [
            "BlogFigure"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "informative-media",
            "diagram",
            "chart"
          ],
          "summary": "Presents an informative chart, map, screenshot, or diagram.",
          "useWhen": [
            "Presents an informative chart, map, screenshot, or diagram."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "informative figure",
          "authoring": {
            "syntax": "MDX figure block with source and alt text.",
            "props": [
              {
                "name": "src",
                "type": "url",
                "required": true,
                "description": "Published figure source."
              },
              {
                "name": "alt",
                "type": "string",
                "required": true,
                "description": "Meaningful alternative text."
              },
              {
                "name": "caption",
                "type": "string",
                "required": false,
                "description": "Optional visible caption."
              },
              {
                "name": "credit",
                "type": "string",
                "required": false,
                "description": "Visible figure attribution."
              },
              {
                "name": "creditHref",
                "type": "url",
                "required": false,
                "description": "Attribution URL linked from the credit."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Show a chart with an explanation.",
                "mdx": "<ContentFigure\n  src=\"/content-assets/shared/brand-context-diagram.svg\"\n  alt=\"A diagram showing how GoVisit connects brand context to discoverable business information\"\n  caption=\"Connect evidence to discoverable context before publishing.\"\n  credit=\"GoVisit editorial team\"\n  creditHref=\"https://govisit.ai\"\n/>"
              }
            ]
          },
          "requirements": [
            "Provide a published source and meaningful alt text."
          ],
          "accessibility": [
            "Describe the information the figure conveys, not its decoration."
          ],
          "composition": {},
          "fallback": "Explain the information in nearby prose."
        },
        {
          "id": "ContentMetricCard",
          "aliases": [
            "StatCard"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "verified-metric",
            "evidence"
          ],
          "summary": "Highlights a verified metric with nearby interpretation.",
          "useWhen": [
            "Highlights a verified metric with nearby interpretation."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "verified metric",
          "authoring": {
            "syntax": "MDX block with a label and value.",
            "props": [
              {
                "name": "label",
                "type": "string",
                "required": true,
                "description": "Metric label."
              },
              {
                "name": "value",
                "type": "string",
                "required": true,
                "description": "Metric value."
              },
              {
                "name": "unit",
                "type": "string",
                "required": false,
                "description": "Unit or measurement context."
              },
              {
                "name": "source",
                "type": "url",
                "required": false,
                "description": "Published evidence URL."
              },
              {
                "name": "sourceLabel",
                "type": "string",
                "default": "Source",
                "required": false,
                "description": "Visible evidence link label."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Highlight a verified conversion result.",
                "mdx": "<ContentMetricCard\n  label=\"Pilot conversion\"\n  value=\"18\"\n  unit=\"percent\"\n  source=\"https://govisit.ai/blog/2026/09/hotel-verifiable-claims-ai-trust\"\n  sourceLabel=\"Pilot review record\"\n/>"
              }
            ]
          },
          "requirements": [
            "Provide a label and value grounded in nearby prose.",
            "Include a source when useful."
          ],
          "accessibility": [
            "Keep interpretation and evidence in surrounding prose."
          ],
          "composition": {},
          "fallback": "State the metric in ordinary prose."
        },
        {
          "id": "ContentLinkCard",
          "aliases": [
            "LinkCard"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "related-reading",
            "next-action"
          ],
          "summary": "Offers a related next reading or action.",
          "useWhen": [
            "Offers a related next reading or action."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "contextual link",
          "authoring": {
            "syntax": "MDX block with an href, title, and description.",
            "props": [
              {
                "name": "href",
                "type": "url",
                "required": true,
                "description": "Destination URL."
              },
              {
                "name": "title",
                "type": "string",
                "required": true,
                "description": "Link title."
              },
              {
                "name": "description",
                "type": "string",
                "required": true,
                "description": "Concise link description."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Link to the next planning guide.",
                "mdx": "<ContentLinkCard\n  href=\"https://govisit.ai/en/docs/places/overview\"\n  title=\"Plan a place guide\"\n  description=\"Start with the destination context.\"\n/>"
              }
            ]
          },
          "requirements": [
            "Use a contextual, relevant destination."
          ],
          "accessibility": [
            "Make the title and description describe the destination."
          ],
          "composition": {},
          "fallback": "Use a standard Markdown link."
        },
        {
          "id": "ContentMultiColumnGroup",
          "aliases": [
            "BlogBoxGroup"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "parallel-content",
            "scanable-group"
          ],
          "summary": "Groups parallel visual elements for scanning as one set.",
          "useWhen": [
            "Groups parallel visual elements for scanning as one set."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "parallel group",
          "authoring": {
            "syntax": "MDX container with complete child elements.",
            "props": [
              {
                "name": "columns",
                "type": "number",
                "minimum": 2,
                "maximum": 3,
                "integer": true,
                "default": 2,
                "required": false,
                "description": "Number of columns: 2 or 3."
              }
            ],
            "children": {
              "minChildren": 2,
              "maxChildren": 3,
              "childContract": "Use two or three complete child elements; Callout may be used as an existing composition primitive."
            },
            "examples": [
              {
                "purpose": "Group two contextual calls to action.",
                "mdx": "<ContentMultiColumnGroup columns={2}>\n  <Callout>\n    <CalloutTitle>Prepare</CalloutTitle>\n    <CalloutDescription>Gather the evidence first.</CalloutDescription>\n  </Callout>\n  <Callout>\n    <CalloutTitle>Publish</CalloutTitle>\n    <CalloutDescription>Review with the reader task in mind.</CalloutDescription>\n  </Callout>\n</ContentMultiColumnGroup>"
              }
            ]
          },
          "requirements": [
            "Use two or three complete child elements."
          ],
          "accessibility": [
            "Ensure each child remains understandable on its own."
          ],
          "composition": {
            "minChildren": 2,
            "maxChildren": 3
          },
          "fallback": "Use separate sections when the items do not form a parallel set."
        },
        {
          "id": "ContentSlideGallery",
          "aliases": [
            "BlogCarousel"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "gallery",
            "visual-sequence"
          ],
          "summary": "Presents a clipped gallery or sequence of visual slides.",
          "useWhen": [
            "Presents a clipped gallery or sequence of visual slides."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "visual sequence",
          "authoring": {
            "syntax": "MDX carousel with labelled slides.",
            "props": [
              {
                "name": "label",
                "type": "string",
                "required": true,
                "description": "Accessible carousel label."
              },
              {
                "name": "variant",
                "type": "enum",
                "values": [
                  "gallery",
                  "coverflow"
                ],
                "default": "gallery",
                "required": false,
                "description": "Gallery presentation."
              }
            ],
            "children": {
              "minChildren": 2,
              "childContract": "Use at least two slides."
            },
            "examples": [
              {
                "purpose": "Show a two-slide gallery.",
                "mdx": "<ContentSlideGallery\n  label=\"Pilot gallery\"\n  variant=\"gallery\"\n>\n  <ContentImage\n    src=\"/content-assets/blog/2026/08/cost-of-stale-destination-data.assets/hero.webp\"\n    alt=\"Illustration of a connected destination with hotels, venues, neighborhoods, and information points\"\n  />\n  <ContentImage\n    src=\"/content-assets/blog/2026/08/cost-of-stale-destination-data.assets/hero-square.webp\"\n    alt=\"Square illustration of a connected destination information layer\"\n  />\n</ContentSlideGallery>"
              }
            ]
          },
          "requirements": [
            "Provide an accessible label and at least two slides.",
            "Do not autoplay or hide essential information only in later slides."
          ],
          "accessibility": [
            "Make each slide and its essential information available without relying on movement."
          ],
          "composition": {
            "minChildren": 2
          },
          "fallback": "Use consecutive figures when the sequence is not needed."
        },
        {
          "id": "ContentImage",
          "aliases": [
            "BlogImage"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "informative-media",
            "image"
          ],
          "summary": "Embeds an informative image in content.",
          "useWhen": [
            "Embeds an informative image in content."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "informative image",
          "authoring": {
            "syntax": "MDX image block with source and alt text.",
            "props": [
              {
                "name": "src",
                "type": "url",
                "required": true,
                "description": "Published image source."
              },
              {
                "name": "alt",
                "type": "string",
                "required": true,
                "description": "Meaningful alternative text."
              },
              {
                "name": "credit",
                "type": "string",
                "required": false,
                "description": "Optional visible credit."
              },
              {
                "name": "creditHref",
                "type": "url",
                "required": false,
                "description": "Attribution URL linked from the credit."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Show an informative destination image.",
                "mdx": "<ContentImage\n  src=\"/content-assets/blog/2026/08/cost-of-stale-destination-data.assets/hero.webp\"\n  alt=\"Illustration of a connected destination with hotels, venues, neighborhoods, and information points\"\n  credit=\"GoVisit editorial team\"\n  creditHref=\"https://govisit.ai\"\n/>"
              }
            ]
          },
          "requirements": [
            "Provide a published source and meaningful alt text."
          ],
          "accessibility": [
            "Describe the image information for readers who cannot see it."
          ],
          "composition": {},
          "fallback": "Use nearby prose if no image adds understanding."
        },
        {
          "id": "ContentAttributedQuote",
          "aliases": [
            "BlogQuote"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "testimonial",
            "perspective"
          ],
          "summary": "Presents an attributed personal perspective.",
          "useWhen": [
            "Presents an attributed personal perspective."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "attributed quotation",
          "authoring": {
            "syntax": "MDX quote block with attribution and avatar.",
            "props": [
              {
                "name": "author",
                "type": "string",
                "required": true,
                "description": "Quoted person's name."
              },
              {
                "name": "role",
                "type": "string",
                "required": true,
                "description": "Quoted person's role."
              },
              {
                "name": "avatar",
                "type": "url",
                "required": true,
                "description": "Published avatar source."
              },
              {
                "name": "avatarAlt",
                "type": "string",
                "required": true,
                "description": "Avatar alternative text."
              }
            ],
            "children": {
              "childContract": "Provide quote content as the child."
            },
            "examples": [
              {
                "purpose": "Attribute an operator perspective.",
                "mdx": "<ContentAttributedQuote\n  author=\"GoVisit content team\"\n  role=\"Editorial team\"\n  avatar=\"/images/brand/ai-business-profile-govisit-default.svg\"\n  avatarAlt=\"GoVisit AI Business Profile mark\"\n>\n  <p>We learned most from the first week.</p>\n</ContentAttributedQuote>"
              }
            ]
          },
          "requirements": [
            "Provide quote content, author, role, avatar, and avatar alt text."
          ],
          "accessibility": [
            "Use an avatar alt text that identifies the person or treats a decorative avatar appropriately."
          ],
          "composition": {},
          "fallback": "Use a Markdown blockquote with attribution."
        },
        {
          "id": "ContentSplitPanel",
          "aliases": [
            "BlogSplitPanel"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "comparison",
            "before-after"
          ],
          "summary": "Compares two related views directly.",
          "useWhen": [
            "Compares two related views directly."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "direct comparison",
          "authoring": {
            "syntax": "MDX split panel with two labelled panes.",
            "props": [
              {
                "name": "label",
                "type": "string",
                "required": true,
                "description": "Accessible panel label."
              },
              {
                "name": "position",
                "type": "number",
                "minimum": 20,
                "maximum": 80,
                "default": 50,
                "required": false,
                "description": "Divider position from 20 to 80."
              },
              {
                "name": "firstLabel",
                "type": "string",
                "default": "First panel",
                "required": false,
                "description": "Accessible label for the first pane."
              },
              {
                "name": "secondLabel",
                "type": "string",
                "default": "Second panel",
                "required": false,
                "description": "Accessible label for the second pane."
              }
            ],
            "children": {
              "minChildren": 2,
              "maxChildren": 2,
              "childContract": "Use exactly two panes."
            },
            "examples": [
              {
                "purpose": "Compare before and after views.",
                "mdx": "<ContentSplitPanel\n  label=\"Before and after\"\n  position={50}\n  firstLabel=\"Before\"\n  secondLabel=\"After\"\n>\n  <div>Before pilot</div>\n  <div>After pilot</div>\n</ContentSplitPanel>"
              }
            ]
          },
          "requirements": [
            "Provide an accessible label, exactly two panes, and a position from 20 to 80 when changing the default divider position.",
            "Use firstLabel and secondLabel when the default pane labels do not describe the comparison."
          ],
          "accessibility": [
            "Ensure both panes have clear labels and equivalent information in nearby prose when needed."
          ],
          "composition": {
            "minChildren": 2,
            "maxChildren": 2
          },
          "fallback": "Use two figures or a table for a non-interactive comparison."
        },
        {
          "id": "ContentAudioEmbed",
          "aliases": [
            "BlogAudio"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "audio",
            "briefing"
          ],
          "summary": "Embeds a short briefing or podcast excerpt.",
          "useWhen": [
            "Embeds a short briefing or podcast excerpt."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "audio briefing",
          "authoring": {
            "syntax": "MDX audio block with source and title.",
            "props": [
              {
                "name": "src",
                "type": "url",
                "required": true,
                "description": "Published audio source."
              },
              {
                "name": "title",
                "type": "string",
                "required": true,
                "description": "Descriptive audio title."
              },
              {
                "name": "author",
                "type": "string",
                "required": false,
                "description": "Speaker or audio creator."
              },
              {
                "name": "duration",
                "type": "string",
                "required": false,
                "description": "Human-readable listening time."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Embed a short CC0 audio sample while keeping the essential message in surrounding text.",
                "mdx": "<ContentAudioEmbed\n  src=\"https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3\"\n  title=\"Short CC0 audio sample\"\n  author=\"MDN Web Docs\"\n  duration=\"2 seconds\"\n/>"
              }
            ]
          },
          "requirements": [
            "Provide a published source and descriptive title.",
            "Keep essential information in surrounding prose."
          ],
          "accessibility": [
            "Describe the audio and provide essential information in text."
          ],
          "composition": {},
          "fallback": "Use a transcript or ordinary prose."
        },
        {
          "id": "ContentVideoEmbed",
          "aliases": [
            "BlogVideo"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "video",
            "demonstration"
          ],
          "summary": "Embeds a short video briefing or demonstration.",
          "useWhen": [
            "Embeds a short video briefing or demonstration."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "video briefing",
          "authoring": {
            "syntax": "MDX video block with source and title.",
            "props": [
              {
                "name": "src",
                "type": "url",
                "required": true,
                "description": "Published video source."
              },
              {
                "name": "title",
                "type": "string",
                "required": true,
                "description": "Descriptive video title."
              },
              {
                "name": "poster",
                "type": "url",
                "required": false,
                "description": "Optional poster image."
              },
              {
                "name": "caption",
                "type": "string",
                "required": false,
                "description": "Visible figure caption; not a timed subtitle track."
              }
            ],
            "children": {},
            "examples": [
              {
                "purpose": "Embed a short CC0 video sample while keeping the essential message in surrounding text.",
                "mdx": "<ContentVideoEmbed\n  src=\"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4\"\n  title=\"Short CC0 video sample\"\n  poster=\"https://developer.mozilla.org/shared-assets/images/examples/flowers.jpg\"\n  caption=\"A short CC0 video sample demonstrating native playback controls.\"\n/>"
              }
            ]
          },
          "requirements": [
            "Provide a published source and descriptive title.",
            "Keep essential information in surrounding prose."
          ],
          "accessibility": [
            "Describe the video and do not make essential information video-only."
          ],
          "composition": {},
          "fallback": "Use images and ordinary prose."
        },
        {
          "id": "ContentDisclosure",
          "aliases": [
            "BlogDetails"
          ],
          "status": "stable",
          "contexts": [
            "blog",
            "docs"
          ],
          "intentTags": [
            "methodology",
            "optional-background"
          ],
          "summary": "Holds optional methodology, definitions, or background.",
          "useWhen": [
            "Holds optional methodology, definitions, or background."
          ],
          "avoidWhen": [
            "Ordinary Markdown communicates the relationship more clearly."
          ],
          "semanticRole": "progressive disclosure",
          "authoring": {
            "syntax": "MDX details block with a summary and child content.",
            "props": [
              {
                "name": "summary",
                "type": "string",
                "required": true,
                "description": "Visible details summary."
              },
              {
                "name": "open",
                "type": "boolean",
                "default": false,
                "required": false,
                "description": "Whether the disclosure starts expanded."
              }
            ],
            "children": {
              "childContract": "Provide the optional background as child content."
            },
            "examples": [
              {
                "purpose": "Provide optional methodology.",
                "mdx": "<ContentDisclosure\n  summary=\"How the pilot was measured\"\n  open={false}\n>\n  <p>Compare the same weekly period before and after the pilot.</p>\n</ContentDisclosure>"
              }
            ]
          },
          "requirements": [
            "Provide a summary and content that remains useful without JavaScript."
          ],
          "accessibility": [
            "Keep the summary meaningful and do not hide essential information."
          ],
          "composition": {},
          "fallback": "Use a normal heading and paragraph."
        }
      ]
    }
  },
  "supportingHelpers": {
    "ContentStep": {
      "title": "Step title",
      "parent": "ContentStepSequence",
      "childContract": "Use a title and child content inside ContentStepSequence; ContentStep is not a top-level visual-element choice.",
      "aliases": [
        "BlogStep"
      ]
    }
  }
}
