{
  "$comment": "Closed sets, generated from the Narro source. Every value a deck may name is listed here. A name that is not in this file does not exist — do not invent one.",
  "site": "https://getnarro.com",
  "entryPoints": [
    {
      "when": "One markdown file. Prose, lists, code, tables.",
      "command": "npx @getnarro/cli new deck.md",
      "produces": "deck.md, and nothing else"
    },
    {
      "when": "The same, version-pinned in a repository.",
      "command": "npm create narro@latest <name> -- --template markdown-minimal",
      "produces": "deck.md and a package.json pinning @getnarro/cli"
    },
    {
      "when": "The deck needs its own dependencies or React layouts.",
      "command": "npm create narro@latest <name> -- --template markdown-app",
      "produces": "the same deck inside a Vite project"
    },
    {
      "when": "Live components, data, or interaction.",
      "command": "npm create narro@latest <name>",
      "produces": "a React deck"
    }
  ],
  "layouts": [
    "default",
    "cover",
    "section",
    "quote",
    "end",
    "two-column",
    "three-column",
    "image-right",
    "image-full"
  ],
  "themes": [
    "default",
    "corporate-dark",
    "minimalist-light",
    "creative-gradient",
    "ocean-blue",
    "forest-green",
    "sunset-warm",
    "midnight-purple",
    "tech-dark",
    "startup-bold",
    "academic-classic"
  ],
  "colorSchemes": [
    "ocean-blue",
    "sunset-warm",
    "forest-mist",
    "royal-purple",
    "rose-gold",
    "arctic-blue",
    "charcoal-slate",
    "emerald-night"
  ],
  "fontPresets": [
    "system",
    "inter",
    "roboto",
    "openSans",
    "lato",
    "montserrat",
    "poppins",
    "raleway",
    "sourceSerif",
    "playfairDisplay",
    "merriweather",
    "jetBrainsMono"
  ],
  "templates": {
    "react": [
      "minimal",
      "corporate",
      "developer",
      "creative",
      "bold-statement",
      "visual-story",
      "data-narrative",
      "startup-pitch",
      "tech-conference",
      "template0"
    ],
    "markdown": [
      "markdown-minimal",
      "markdown-app",
      "markdown-docs"
    ],
    "info": {
      "markdown-minimal": {
        "mode": "markdown",
        "summary": "One `deck.md` and a pinned CLI. Nothing to build.",
        "example": false,
        "recommended": true
      },
      "markdown-app": {
        "mode": "markdown",
        "summary": "The same deck inside a Vite project, for React components and custom CSS.",
        "example": false
      },
      "markdown-docs": {
        "mode": "markdown",
        "summary": "Documentation-shaped deck: long code samples, wide tables.",
        "example": true
      },
      "minimal": {
        "mode": "react",
        "summary": "Three slides and nothing else. Start here to write your own.",
        "example": false,
        "recommended": true
      },
      "corporate": {
        "mode": "react",
        "summary": "Restrained business deck, dark theme.",
        "example": true
      },
      "developer": {
        "mode": "react",
        "summary": "Code-heavy technical talk with terminal chrome.",
        "example": true
      },
      "creative": {
        "mode": "react",
        "summary": "Bold colour and large type.",
        "example": true
      },
      "bold-statement": {
        "mode": "react",
        "summary": "One idea per slide, very large type.",
        "example": true
      },
      "visual-story": {
        "mode": "react",
        "summary": "Full-bleed imagery with overlay text.",
        "example": true
      },
      "data-narrative": {
        "mode": "react",
        "summary": "Charts and figures, light theme.",
        "example": true
      },
      "startup-pitch": {
        "mode": "react",
        "summary": "Ten-slide investor pitch, filled in.",
        "example": true
      },
      "tech-conference": {
        "mode": "react",
        "summary": "Conference talk with a title card and code slides.",
        "example": true
      },
      "template0": {
        "mode": "react",
        "summary": "Reference deck exercising every component. Read it, do not start from it.",
        "example": true
      }
    }
  },
  "deckFrontmatterKeys": [
    "title",
    "author",
    "date",
    "theme",
    "template",
    "aspectRatio",
    "transition",
    "class",
    "keyboard",
    "mouse",
    "touch",
    "routing",
    "favicon",
    "maxDuration"
  ],
  "slideFrontmatterKeys": [
    "layout",
    "class",
    "id",
    "transition",
    "background",
    "notes"
  ],
  "deckTemplate": {
    "keys": [
      "id",
      "name",
      "description",
      "version",
      "author",
      "tokens",
      "css",
      "master",
      "layouts"
    ],
    "masterKeys": [
      "class",
      "background",
      "header",
      "footer",
      "logo",
      "slideNumber"
    ],
    "layoutKeys": [
      "name",
      "description",
      "base",
      "component",
      "slots",
      "class",
      "regions",
      "defaults",
      "master"
    ],
    "fileExtensions": [
      ".ts",
      ".mts",
      ".js",
      ".mjs",
      ".json",
      ".yaml",
      ".yml"
    ]
  },
  "unions": {
    "PositionUnit": [
      "px",
      "%"
    ],
    "ShapeType": [
      "circle",
      "rectangle",
      "triangle",
      "star",
      "hexagon",
      "pentagon",
      "arrow",
      "diamond",
      "ellipse",
      "cloud"
    ],
    "LayoutType": [
      "default",
      "center",
      "two-column",
      "image",
      "title"
    ],
    "FragmentEffect": [
      "fade-in",
      "fade-out",
      "slide-up",
      "slide-down",
      "slide-left",
      "slide-right",
      "scale-in",
      "scale-out",
      "blur-in"
    ],
    "SubSlideTransition": [
      "slide-up",
      "slide-down",
      "slide-left",
      "slide-right",
      "none",
      "fade"
    ],
    "TransitionEffect": [
      "none",
      "fade",
      "slide",
      "zoom"
    ],
    "MotionEffect": [
      "fadeIn",
      "fadeOut",
      "slideUp",
      "slideDown",
      "slideLeft",
      "slideRight",
      "scaleUp",
      "scaleDown",
      "rotateIn",
      "flip",
      "bounce",
      "elastic",
      "blur",
      "glow",
      "typewriter",
      "spotlight",
      "parallax",
      "morphPath",
      "stagger",
      "wave"
    ],
    "MotionEasing": [
      "linear",
      "easeIn",
      "easeOut",
      "easeInOut",
      "circIn",
      "circOut",
      "circInOut",
      "backIn",
      "backOut",
      "backInOut",
      "spring"
    ],
    "ImageFilter": [
      "none",
      "blur",
      "grayscale",
      "sepia",
      "brightness",
      "contrast",
      "saturate",
      "hue-rotate",
      "invert",
      "opacity",
      "drop-shadow"
    ],
    "AnimationType": [
      "slide-up",
      "slide-down",
      "slide-left",
      "slide-right",
      "fade",
      "bounce",
      "scale",
      "rotate"
    ],
    "ImageBackgroundOverlay": [
      "none",
      "blur",
      "dark",
      "light",
      "gradient"
    ],
    "ElementPosition": [
      "below",
      "right",
      "left",
      "above"
    ],
    "ElementAnimation": [
      "fade-in",
      "slide-up",
      "scale-in",
      "none",
      "blur-in"
    ],
    "BigTextEffect": [
      "none",
      "glow",
      "gradient",
      "shadow",
      "outline"
    ],
    "BigTextAnimation": [
      "fade-in",
      "scale-in",
      "none",
      "blur-reveal"
    ],
    "SurfaceTone": [
      "default",
      "primary",
      "accent",
      "success",
      "warning",
      "danger"
    ],
    "SurfaceRadius": [
      "none",
      "sm",
      "md",
      "lg",
      "full"
    ],
    "ListAnimationType": [
      "fade-in",
      "slide-up",
      "slide-down",
      "slide-left",
      "slide-right",
      "scale-in",
      "blur-in",
      "grow-in"
    ],
    "EntrancePreset": [
      "fade",
      "zoom",
      "slideUp",
      "slideDown",
      "slideLeft",
      "slideRight",
      "bounce",
      "blur",
      "grow"
    ],
    "EmphasisPreset": [
      "glow",
      "pulse",
      "shake",
      "wiggle",
      "heartbeat"
    ],
    "ExitPreset": [
      "fadeOut",
      "slideAwayLeft",
      "slideAwayRight",
      "slideAwayUp",
      "slideAwayDown",
      "shrink"
    ],
    "TransitionPreset": [
      "zoom",
      "slideLeft",
      "slideRight",
      "flip",
      "crossFade",
      "cube",
      "morph"
    ],
    "TransitionType": [
      "slide-up",
      "slide-down",
      "slide-left",
      "slide-right",
      "none",
      "fade",
      "slide",
      "zoom",
      "flip",
      "cube",
      "morph",
      "zoom-in",
      "zoom-out"
    ],
    "WordRevealAnimation": [
      "slide-up",
      "fade",
      "blur",
      "scale"
    ],
    "WorkflowAnimation": [
      "none",
      "fade",
      "progressive",
      "flow"
    ],
    "WorkflowDirection": [
      "horizontal",
      "vertical"
    ],
    "BuiltinLayoutName": [
      "default",
      "cover",
      "section",
      "quote",
      "end",
      "two-column",
      "three-column",
      "image-right",
      "image-full"
    ],
    "DiagnosticSeverity": [
      "error",
      "warning"
    ],
    "ChromePosition": [
      "top-left",
      "top-center",
      "top-right",
      "bottom-left",
      "bottom-center",
      "bottom-right"
    ],
    "ChromeKind": [
      "header",
      "footer",
      "logo",
      "slideNumber"
    ]
  },
  "components": [
    {
      "name": "AnimatePresence",
      "package": "@getnarro/core",
      "props": []
    },
    {
      "name": "Canvas",
      "package": "@getnarro/core",
      "props": [
        "children",
        "background",
        "className",
        "height",
        "width"
      ]
    },
    {
      "name": "CanvasElement",
      "package": "@getnarro/core",
      "props": [
        "children",
        "x",
        "y",
        "className",
        "height",
        "opacity",
        "rotate",
        "width",
        "zIndex"
      ]
    },
    {
      "name": "CanvasShape",
      "package": "@getnarro/core",
      "props": [
        "shape",
        "size",
        "x",
        "y",
        "className",
        "color",
        "opacity",
        "rotate",
        "stroke",
        "strokeWidth",
        "zIndex"
      ]
    },
    {
      "name": "ErrorBoundary",
      "package": "@getnarro/core",
      "props": [
        "children",
        "fallback",
        "onError",
        "showOverlay"
      ]
    },
    {
      "name": "ErrorOverlay",
      "package": "@getnarro/core",
      "props": [
        "error",
        "onDismiss",
        "showDismiss"
      ]
    },
    {
      "name": "MarqueeRow",
      "package": "@getnarro/core",
      "props": [
        "items",
        "className",
        "direction",
        "gap",
        "isActive",
        "itemMinWidth",
        "renderItem",
        "speed"
      ]
    },
    {
      "name": "MasonryBackground",
      "package": "@getnarro/core",
      "props": [
        "images",
        "backgroundColor",
        "className",
        "gridColumns",
        "gridRows",
        "imageBorderColor",
        "imageBorderWidth",
        "imageGap",
        "initialFillTimeMs",
        "isActive",
        "swapMaxIntervalMs",
        "swapMinIntervalMs",
        "tileLayout",
        "transitionDurationMs"
      ]
    },
    {
      "name": "Motion",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "delay",
        "duration",
        "easing",
        "effect",
        "inView",
        "isActive",
        "onAnimationComplete",
        "respectReducedMotion",
        "style"
      ]
    },
    {
      "name": "MotionContainer",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "isActive",
        "staggerDelay",
        "style"
      ]
    },
    {
      "name": "MotionList",
      "package": "@getnarro/core",
      "props": [
        "items",
        "className",
        "effect",
        "isActive",
        "itemClassName",
        "listStyle",
        "staggerDelay"
      ]
    },
    {
      "name": "MotionNumber",
      "package": "@getnarro/core",
      "props": [
        "value",
        "className",
        "decimals",
        "delay",
        "duration",
        "isActive",
        "prefix",
        "separator",
        "style",
        "suffix"
      ]
    },
    {
      "name": "MotionPresence",
      "package": "@getnarro/core",
      "props": [
        "children",
        "mode",
        "presenceKey"
      ]
    },
    {
      "name": "MotionSpotlight",
      "package": "@getnarro/core",
      "props": [
        "alt",
        "src",
        "borderRadius",
        "className",
        "duration",
        "height",
        "isActive",
        "layoutId",
        "onAnimationComplete",
        "scale",
        "shadow",
        "width",
        "x",
        "y"
      ]
    },
    {
      "name": "MotionStep",
      "package": "@getnarro/core",
      "props": [
        "children",
        "step",
        "className",
        "duration",
        "easing",
        "effect",
        "style"
      ]
    },
    {
      "name": "MotionSteps",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "loop",
        "onComplete",
        "startStep",
        "totalSteps"
      ]
    },
    {
      "name": "MotionText",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "delay",
        "duration",
        "isActive",
        "style",
        "type"
      ]
    },
    {
      "name": "MotionTransform",
      "package": "@getnarro/core",
      "props": [
        "children",
        "transforms",
        "className",
        "duration",
        "easing",
        "style"
      ]
    },
    {
      "name": "NebulaBackground",
      "package": "@getnarro/core",
      "props": [
        "backgroundGradient",
        "children",
        "className",
        "isActive",
        "nebulaColors",
        "shootingStarDuration",
        "shootingStarFrequency",
        "starColors",
        "starLayers",
        "twinkleSpeed"
      ]
    },
    {
      "name": "Notes",
      "package": "@getnarro/core",
      "props": [
        "children"
      ]
    },
    {
      "name": "OverviewGrid",
      "package": "@getnarro/core",
      "props": [
        "actions",
        "slidesData",
        "state"
      ]
    },
    {
      "name": "Presentation",
      "package": "@getnarro/core",
      "props": [
        "children",
        "aspectRatio",
        "autoPlay",
        "autoPlayLoop",
        "baseHeight",
        "baseWidth",
        "className",
        "embedded",
        "enableViewportScaling",
        "favicon",
        "initialSlide",
        "keepAwake",
        "keyboard",
        "maxDuration",
        "mouse",
        "onAutoPlayComplete",
        "onSlideChange",
        "onSlidesData",
        "preserveAspectRatio",
        "routing",
        "showAutoPlayIndicator",
        "sync",
        "theme",
        "touch",
        "transform"
      ]
    },
    {
      "name": "PresenterNotes",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "currentSlide",
        "keepAwake",
        "pacing",
        "script",
        "sync"
      ]
    },
    {
      "name": "Slide",
      "package": "@getnarro/core",
      "props": [
        "__slideIndex",
        "background",
        "children",
        "className",
        "id",
        "layout",
        "subSlides",
        "transition"
      ]
    },
    {
      "name": "SlideContent",
      "package": "@getnarro/core",
      "props": [
        "children",
        "className",
        "layout"
      ]
    },
    {
      "name": "TransformSlide",
      "package": "@getnarro/core",
      "props": [
        "subSlides",
        "background",
        "className",
        "duration",
        "easing",
        "initialSubSlide",
        "perspective",
        "perspectiveValue"
      ]
    },
    {
      "name": "TrustedByMarquee",
      "package": "@getnarro/core",
      "props": [
        "rows",
        "baseSpeed",
        "className",
        "gap",
        "isActive",
        "itemMinWidth",
        "renderItem",
        "rowGap",
        "speedIncrement"
      ]
    },
    {
      "name": "AgendaItem",
      "package": "@getnarro/shared-ui",
      "props": [
        "number",
        "title",
        "children",
        "className",
        "underlineColor"
      ]
    },
    {
      "name": "AnimatedList",
      "package": "@getnarro/shared-ui",
      "props": [
        "items",
        "animation",
        "className",
        "duration",
        "initialDelay",
        "isActive",
        "ordered",
        "staggerDelay",
        "variant"
      ]
    },
    {
      "name": "Animation",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "delay",
        "duration",
        "easing",
        "isActive",
        "trigger",
        "type"
      ]
    },
    {
      "name": "Badge",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "radius",
        "tone"
      ]
    },
    {
      "name": "BigText",
      "package": "@getnarro/shared-ui",
      "props": [
        "align",
        "animate",
        "animationDuration",
        "children",
        "className",
        "color",
        "effect",
        "gradientColors"
      ]
    },
    {
      "name": "Callout",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "icon",
        "title",
        "tone"
      ]
    },
    {
      "name": "Card",
      "package": "@getnarro/shared-ui",
      "props": [
        "bordered",
        "children",
        "className",
        "padding",
        "radius",
        "tone"
      ]
    },
    {
      "name": "Chart",
      "package": "@getnarro/shared-ui",
      "props": [
        "data",
        "type",
        "className",
        "colors",
        "height",
        "orientation",
        "showLegend",
        "showValues",
        "title",
        "unit",
        "valueFormat"
      ]
    },
    {
      "name": "Code",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "copyButton",
        "highlightLines",
        "language",
        "lineNumbers",
        "theme"
      ]
    },
    {
      "name": "CommentForm",
      "package": "@getnarro/shared-ui",
      "props": [
        "onSubmit",
        "slideId",
        "className",
        "defaultAuthor",
        "initialContent",
        "isEditing",
        "onCancel",
        "parentId",
        "placeholder",
        "position"
      ]
    },
    {
      "name": "CommentItem",
      "package": "@getnarro/shared-ui",
      "props": [
        "comment",
        "className",
        "currentUser",
        "onDelete",
        "onEdit",
        "onReaction",
        "onReply",
        "onResolve",
        "replies",
        "showReplyForm"
      ]
    },
    {
      "name": "CommentMarker",
      "package": "@getnarro/shared-ui",
      "props": [
        "position",
        "className",
        "commentId",
        "count",
        "isActive",
        "onClick"
      ]
    },
    {
      "name": "CommentPanel",
      "package": "@getnarro/shared-ui",
      "props": [
        "comments",
        "onAddComment",
        "className",
        "currentUser",
        "filter",
        "isCollapsed",
        "onCollapseChange",
        "onDeleteComment",
        "onFilterChange",
        "onResolveComment",
        "onUpdateComment",
        "slideId"
      ]
    },
    {
      "name": "ContentSlide",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "title"
      ]
    },
    {
      "name": "CountingNumber",
      "package": "@getnarro/shared-ui",
      "props": [
        "value",
        "className",
        "delay",
        "duration",
        "easing",
        "format",
        "from",
        "isActive",
        "onComplete"
      ]
    },
    {
      "name": "Diagram",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "theme",
        "type"
      ]
    },
    {
      "name": "DottedArc",
      "package": "@getnarro/shared-ui",
      "props": [
        "colors",
        "className",
        "position",
        "size",
        "spacing",
        "width"
      ]
    },
    {
      "name": "DualColumnTextAndImage",
      "package": "@getnarro/shared-ui",
      "props": [
        "image",
        "text",
        "className",
        "gap",
        "imageAlt",
        "reverse"
      ]
    },
    {
      "name": "Embed",
      "package": "@getnarro/shared-ui",
      "props": [
        "url",
        "allow",
        "allowFullscreen",
        "aspectRatio",
        "className",
        "loading",
        "referrerPolicy",
        "sandbox",
        "title"
      ]
    },
    {
      "name": "FlowDiagram",
      "package": "@getnarro/shared-ui",
      "props": [
        "steps",
        "className",
        "color",
        "direction",
        "gap"
      ]
    },
    {
      "name": "FourColumn",
      "package": "@getnarro/shared-ui",
      "props": [
        "first",
        "fourth",
        "second",
        "third",
        "align",
        "className",
        "gap",
        "responsive"
      ]
    },
    {
      "name": "Fragment",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "duration",
        "effect",
        "isActive",
        "order",
        "staggerDelay",
        "trigger"
      ]
    },
    {
      "name": "Grid",
      "package": "@getnarro/shared-ui",
      "props": [
        "align",
        "children",
        "className",
        "columns",
        "gap",
        "justify"
      ]
    },
    {
      "name": "Heading",
      "package": "@getnarro/shared-ui",
      "props": [
        "align",
        "children",
        "className",
        "color",
        "level"
      ]
    },
    {
      "name": "HexPatternBackground",
      "package": "@getnarro/shared-ui",
      "props": [
        "backgroundColor",
        "children",
        "className",
        "hexColor",
        "patternSize"
      ]
    },
    {
      "name": "Icon",
      "package": "@getnarro/shared-ui",
      "props": [
        "name",
        "className",
        "color",
        "label",
        "size"
      ]
    },
    {
      "name": "Image",
      "package": "@getnarro/shared-ui",
      "props": [
        "alt",
        "src",
        "children",
        "className",
        "customFilter",
        "filter",
        "fit",
        "height",
        "overlay",
        "overlayOpacity",
        "rounded",
        "shadow",
        "width"
      ]
    },
    {
      "name": "ImageBackground",
      "package": "@getnarro/shared-ui",
      "props": [
        "src",
        "alt",
        "children",
        "className",
        "kenBurns",
        "kenBurnsDuration",
        "overlay",
        "overlayColor",
        "position"
      ]
    },
    {
      "name": "ImageSlide",
      "package": "@getnarro/shared-ui",
      "props": [
        "src",
        "alt",
        "className",
        "fit",
        "overlay",
        "overlayPosition"
      ]
    },
    {
      "name": "ImageSpotlight",
      "package": "@getnarro/shared-ui",
      "props": [
        "alt",
        "spotlightId",
        "src",
        "className",
        "duration",
        "easing",
        "height",
        "imageClassName",
        "onAnimationComplete",
        "overlay",
        "rounded",
        "scale",
        "shadow",
        "width",
        "x",
        "y"
      ]
    },
    {
      "name": "InfoCardWithIcon",
      "package": "@getnarro/shared-ui",
      "props": [
        "description",
        "iconSrc",
        "title",
        "children",
        "className"
      ]
    },
    {
      "name": "List",
      "package": "@getnarro/shared-ui",
      "props": [
        "items",
        "animated",
        "animationDelay",
        "className",
        "ordered",
        "variant"
      ]
    },
    {
      "name": "LogoGrid",
      "package": "@getnarro/shared-ui",
      "props": [
        "logos",
        "className",
        "columns",
        "gap"
      ]
    },
    {
      "name": "MorphElement",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "transitionName",
        "as",
        "className",
        "style"
      ]
    },
    {
      "name": "ProcessFlowChart",
      "package": "@getnarro/shared-ui",
      "props": [
        "connections",
        "nodes",
        "arrowStyle",
        "className",
        "direction",
        "nodeGap"
      ]
    },
    {
      "name": "ProfileCard",
      "package": "@getnarro/shared-ui",
      "props": [
        "imageSrc",
        "name",
        "title",
        "children",
        "className",
        "companyIcons"
      ]
    },
    {
      "name": "ProgressRing",
      "package": "@getnarro/shared-ui",
      "props": [
        "value",
        "backgroundColor",
        "children",
        "className",
        "color",
        "delay",
        "duration",
        "isActive",
        "onComplete",
        "showValue",
        "size",
        "strokeWidth"
      ]
    },
    {
      "name": "Quote",
      "package": "@getnarro/shared-ui",
      "props": [
        "author",
        "authorStyle",
        "children",
        "className",
        "source",
        "variant"
      ]
    },
    {
      "name": "ScrollableImage",
      "package": "@getnarro/shared-ui",
      "props": [
        "alt",
        "src",
        "autoScrollSpeed",
        "className",
        "maxHeight",
        "showIndicators",
        "smoothScroll"
      ]
    },
    {
      "name": "Text",
      "package": "@getnarro/shared-ui",
      "props": [
        "align",
        "children",
        "className",
        "color",
        "size",
        "weight"
      ]
    },
    {
      "name": "ThreeColumn",
      "package": "@getnarro/shared-ui",
      "props": [
        "first",
        "second",
        "third",
        "align",
        "className",
        "gap",
        "ratio",
        "responsive"
      ]
    },
    {
      "name": "TimelineWithIndicators",
      "package": "@getnarro/shared-ui",
      "props": [
        "events",
        "className",
        "lineColor"
      ]
    },
    {
      "name": "TitleSlide",
      "package": "@getnarro/shared-ui",
      "props": [
        "title",
        "author",
        "className",
        "date",
        "subtitle"
      ]
    },
    {
      "name": "TitleSlideWithElement",
      "package": "@getnarro/shared-ui",
      "props": [
        "element",
        "title",
        "animationDelay",
        "className",
        "elementAnimation",
        "elementPosition",
        "subtitle"
      ]
    },
    {
      "name": "TwoColumn",
      "package": "@getnarro/shared-ui",
      "props": [
        "left",
        "right",
        "align",
        "className",
        "gap",
        "ratio"
      ]
    },
    {
      "name": "TwoColumnHighlight",
      "package": "@getnarro/shared-ui",
      "props": [
        "leftContent",
        "rightContent",
        "className",
        "highlight",
        "highlightColor",
        "leftBg",
        "leftTextColor",
        "ratio",
        "rightBg",
        "rightTextColor"
      ]
    },
    {
      "name": "TypewriterText",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "cursor",
        "delay",
        "isActive",
        "onComplete",
        "speed"
      ]
    },
    {
      "name": "Video",
      "package": "@getnarro/shared-ui",
      "props": [
        "src",
        "autoPlay",
        "className",
        "controls",
        "fit",
        "loop",
        "muted",
        "poster",
        "title"
      ]
    },
    {
      "name": "WaveLine",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "color",
        "dashWidth"
      ]
    },
    {
      "name": "WordReveal",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "animation",
        "className",
        "delay",
        "duration",
        "isActive",
        "onComplete",
        "staggerDelay"
      ]
    },
    {
      "name": "Workflow",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "animation",
        "className",
        "connectorColor",
        "direction",
        "highlightActive",
        "isActive",
        "showConnectors",
        "staggerDelay"
      ]
    },
    {
      "name": "WorkflowStep",
      "package": "@getnarro/shared-ui",
      "props": [
        "children",
        "className",
        "description",
        "icon",
        "title"
      ]
    },
    {
      "name": "ZoomImage",
      "package": "@getnarro/shared-ui",
      "props": [
        "alt",
        "src",
        "className",
        "fit",
        "height",
        "rounded",
        "shadow",
        "width",
        "zoomable",
        "zoomScale"
      ]
    }
  ],
  "cliCommands": [
    "analyze-slides-for-components",
    "build",
    "bundle",
    "capture-website",
    "check",
    "comments",
    "create",
    "create-template-from-screenshots",
    "dev",
    "export",
    "fmt",
    "import",
    "new",
    "preview",
    "themes"
  ],
  "docs": [
    {
      "slug": "animation",
      "url": "https://getnarro.com/docs/animation.md",
      "question": "How do I reveal a list one line at a time, or move between slides with something other than a cut?"
    },
    {
      "slug": "navigation",
      "url": "https://getnarro.com/docs/navigation.md",
      "question": "How does the audience move through the deck, and how do I present it?"
    },
    {
      "slug": "canvas-positioning",
      "url": "https://getnarro.com/docs/canvas-positioning.md",
      "question": "How do I put something at an exact position instead of in the flow?"
    },
    {
      "slug": "media",
      "url": "https://getnarro.com/docs/media.md",
      "question": "How do I use an image as a background, tint it, or embed a video?"
    },
    {
      "slug": "architecture",
      "url": "https://getnarro.com/docs/architecture.md",
      "question": "Which package owns what, and why is the seam where it is?"
    },
    {
      "slug": "transform-mode",
      "url": "https://getnarro.com/docs/transform-mode.md",
      "question": "How do I zoom and pan across one big canvas instead of cutting between slides?"
    },
    {
      "slug": "import-export",
      "url": "https://getnarro.com/docs/import-export.md",
      "question": "How do I get this deck out as PPTX, PDF, or one file I can email?"
    },
    {
      "slug": "ai-integration",
      "url": "https://getnarro.com/docs/ai-integration.md",
      "question": "How do I wire an AI assistant up to Narro so it can write and build decks?"
    },
    {
      "slug": "theming",
      "url": "https://getnarro.com/docs/theming.md",
      "question": "How do I change the colours, fonts, and overall look of a deck?"
    },
    {
      "slug": "deck-templates",
      "url": "https://getnarro.com/docs/deck-templates.md",
      "question": "How do I define one house style with named layouts my slides can reference, like a PowerPoint master?"
    },
    {
      "slug": "troubleshooting",
      "url": "https://getnarro.com/docs/troubleshooting.md",
      "question": "Something is wrong with my deck. What is it, and how do I fix it?"
    },
    {
      "slug": "limitations",
      "url": "https://getnarro.com/docs/limitations.md",
      "question": "What can't Narro do, and what do I do instead?"
    },
    {
      "slug": "react-api",
      "url": "https://getnarro.com/docs/react-api.md",
      "question": "Which component or hook do I import, and what does it take?"
    },
    {
      "slug": "cli",
      "url": "https://getnarro.com/docs/cli.md",
      "question": "Which command do I run, and what are its flags?"
    },
    {
      "slug": "markdown-api",
      "url": "https://getnarro.com/docs/markdown-api.md",
      "question": "How do I read, edit, or validate a deck file from my own code instead of by hand?"
    },
    {
      "slug": "components",
      "url": "https://getnarro.com/docs/components.md",
      "question": "What props does this component take, and which package do I import it from?"
    },
    {
      "slug": "introduction",
      "url": "https://getnarro.com/docs/introduction.md",
      "question": "What is Narro, and should I be writing markdown or React?"
    },
    {
      "slug": "installation",
      "url": "https://getnarro.com/docs/installation.md",
      "question": "What do I install, and what does the project look like afterwards?"
    },
    {
      "slug": "first-deck",
      "url": "https://getnarro.com/docs/first-deck.md",
      "question": "What does a working React deck look like, end to end?"
    },
    {
      "slug": "markdown-mode",
      "url": "https://getnarro.com/docs/markdown-mode.md",
      "question": "How do I split a slide, style one word, or reveal a line — without leaving the markdown file?"
    },
    {
      "slug": "ai-prompts",
      "url": "https://getnarro.com/docs/ai-prompts.md",
      "question": "What do I tell an AI so the deck it writes actually builds?"
    },
    {
      "slug": "agent-rules",
      "url": "https://getnarro.com/docs/agent-rules.md",
      "question": "What do I paste into my repo so an agent stops writing decks that build wrong?"
    }
  ]
}
