{
  "name": "Future Course Template System",
  "version": "2.1.1",
  "schemaVersion": 1,
  "assetBase": "https://uma-centralizedtemplate.pages.dev/course-template/v2",
  "assetBasePlaceholder": "__CLOUDFLARE_ASSET_BASE__",
  "assets": {
    "css": "css/styles.css",
    "js": "js/main.js"
  },
  "templates": [
    {
      "id": "lesson",
      "title": "Lesson Page",
      "category": "Page Templates",
      "description": "Full D2L lesson page starter with overview, objectives, content, media, practice, and resources.",
      "path": "snippets/templates/lesson.html",
      "config": {
        "fields": [
          {
            "id": "courseLabel",
            "label": "Course label",
            "type": "text",
            "default": "Module 1 - Lesson 1",
            "target": ".course-label",
            "mode": "text"
          },
          {
            "id": "pageTitle",
            "label": "Page title",
            "type": "text",
            "default": "Lesson Title",
            "target": ".course-header h1",
            "mode": "text"
          },
          {
            "id": "time",
            "label": "Time",
            "type": "text",
            "default": "45 min",
            "metaLabel": "Time"
          },
          {
            "id": "objectives",
            "label": "Objectives",
            "type": "text",
            "default": "3",
            "metaLabel": "Objectives"
          },
          {
            "id": "activity",
            "label": "Activity",
            "type": "text",
            "default": "1 practice check",
            "metaLabel": "Activity"
          }
        ],
        "toggles": [
          {
            "id": "includeAssets",
            "label": "Include CSS/JS links",
            "default": true,
            "action": "assets"
          },
          {
            "id": "includeMedia",
            "label": "Media section",
            "default": true,
            "sectionId": "media"
          },
          {
            "id": "includePractice",
            "label": "Practice section",
            "default": true,
            "sectionId": "practice"
          },
          {
            "id": "includeResources",
            "label": "Resources section",
            "default": true,
            "sectionId": "resources"
          }
        ]
      }
    },
    {
      "id": "syllabus",
      "title": "Syllabus Page",
      "category": "Page Templates",
      "description": "Full D2L syllabus page starter with course overview, objectives, instructor information, schedule, grading, and policies.",
      "path": "snippets/templates/syllabus.html",
      "config": {
        "fields": [
          {
            "id": "courseLabel",
            "label": "Course label",
            "type": "text",
            "default": "Term - Course Code",
            "target": ".course-label",
            "mode": "text"
          },
          {
            "id": "pageTitle",
            "label": "Course title",
            "type": "text",
            "default": "Course Title",
            "target": ".course-header h1",
            "mode": "text"
          },
          {
            "id": "length",
            "label": "Length",
            "type": "text",
            "default": "16 weeks",
            "metaLabel": "Length"
          },
          {
            "id": "format",
            "label": "Format",
            "type": "text",
            "default": "Online",
            "metaLabel": "Format"
          },
          {
            "id": "credits",
            "label": "Credits",
            "type": "text",
            "default": "3",
            "metaLabel": "Credits"
          }
        ],
        "toggles": [
          {
            "id": "includeAssets",
            "label": "Include CSS/JS links",
            "default": true,
            "action": "assets"
          },
          {
            "id": "includeInstructor",
            "label": "Instructor section",
            "default": true,
            "sectionId": "instructor"
          },
          {
            "id": "includeSchedule",
            "label": "Schedule section",
            "default": true,
            "sectionId": "schedule"
          },
          {
            "id": "includePolicies",
            "label": "Policies section",
            "default": true,
            "sectionId": "policies"
          }
        ]
      }
    },
    {
      "id": "assignment",
      "title": "Assignment Page",
      "category": "Page Templates",
      "description": "Full D2L assignment page starter with overview, instructions, rubric, submission guidance, and support.",
      "path": "snippets/templates/assignment.html",
      "config": {
        "fields": [
          {
            "id": "courseLabel",
            "label": "Course label",
            "type": "text",
            "default": "Module 1 - Assignment 1",
            "target": ".course-label",
            "mode": "text"
          },
          {
            "id": "pageTitle",
            "label": "Assignment title",
            "type": "text",
            "default": "Assignment Title",
            "target": ".course-header h1",
            "mode": "text"
          },
          {
            "id": "due",
            "label": "Due",
            "type": "text",
            "default": "Friday, Week 4",
            "metaLabel": "Due"
          },
          {
            "id": "time",
            "label": "Time",
            "type": "text",
            "default": "2 hours",
            "metaLabel": "Time"
          },
          {
            "id": "points",
            "label": "Points",
            "type": "text",
            "default": "100",
            "metaLabel": "Points"
          }
        ],
        "toggles": [
          {
            "id": "includeAssets",
            "label": "Include CSS/JS links",
            "default": true,
            "action": "assets"
          },
          {
            "id": "includeRubric",
            "label": "Rubric section",
            "default": true,
            "sectionId": "rubric"
          },
          {
            "id": "includeSubmission",
            "label": "Submission section",
            "default": true,
            "sectionId": "submission"
          },
          {
            "id": "includeSupport",
            "label": "Support section",
            "default": true,
            "sectionId": "support"
          }
        ]
      }
    }
  ],
  "components": [
    {
      "id": "accordion",
      "title": "Accordion",
      "category": "Interactive",
      "description": "Expandable content block. IDs are generated automatically when inserted through the tool.",
      "path": "snippets/components/accordion.html",
      "config": {
        "fields": [
          {
            "id": "accordionTitle",
            "label": "First item title",
            "type": "text",
            "default": "Accordion question or heading",
            "target": ".accordion-trigger",
            "mode": "firstTextNode"
          },
          {
            "id": "accordionBody",
            "label": "First item body",
            "type": "textarea",
            "default": "Replace this text with the accordion content.",
            "target": ".accordion-panel p",
            "mode": "text"
          }
        ]
      }
    },
    {
      "id": "callout",
      "title": "Callout",
      "category": "Content Blocks",
      "description": "Note, tip, important, or caution block.",
      "path": "snippets/components/callout.html",
      "config": {
        "fields": [
          {
            "id": "calloutType",
            "label": "Type",
            "type": "select",
            "default": "info",
            "options": [
              {
                "value": "info",
                "label": "Note"
              },
              {
                "value": "tip",
                "label": "Tip"
              },
              {
                "value": "warning",
                "label": "Important"
              },
              {
                "value": "danger",
                "label": "Caution"
              }
            ]
          },
          {
            "id": "calloutTitle",
            "label": "Title",
            "type": "text",
            "default": "Note",
            "target": ".callout-title",
            "mode": "text"
          },
          {
            "id": "calloutBody",
            "label": "Body",
            "type": "textarea",
            "default": "Replace this text with a short note, reminder, or context statement.",
            "target": ".callout-body p:not(.callout-title)",
            "mode": "text"
          }
        ]
      }
    },
    {
      "id": "card-grid",
      "title": "Card Grid",
      "category": "Content Blocks",
      "description": "Three-card grid for objectives, steps, or key ideas.",
      "path": "snippets/components/card-grid.html"
    },
    {
      "id": "knowledge-check",
      "title": "Knowledge Check",
      "category": "Interactive",
      "description": "Self-check question with immediate feedback.",
      "path": "snippets/components/knowledge-check.html",
      "config": {
        "fields": [
          {
            "id": "question",
            "label": "Question",
            "type": "textarea",
            "default": "Replace this text with the question.",
            "target": ".knowledge-question",
            "mode": "text"
          },
          {
            "id": "correctFeedback",
            "label": "Correct feedback",
            "type": "text",
            "default": "Correct.",
            "attribute": "data-feedback-correct",
            "target": ".knowledge-check"
          },
          {
            "id": "incorrectFeedback",
            "label": "Incorrect feedback",
            "type": "text",
            "default": "Not quite. Review the material and try again.",
            "attribute": "data-feedback-incorrect",
            "target": ".knowledge-check"
          }
        ]
      }
    },
    {
      "id": "media-block",
      "title": "Media Block",
      "category": "Media",
      "description": "Accessible media placeholder with duration, caption, and transcript link.",
      "path": "snippets/components/media-block.html",
      "config": {
        "fields": [
          {
            "id": "mediaType",
            "label": "Media type",
            "type": "text",
            "default": "Video",
            "target": ".media-type-badge",
            "mode": "text"
          },
          {
            "id": "duration",
            "label": "Duration",
            "type": "text",
            "default": "[00:00]",
            "target": ".media-duration",
            "mode": "text"
          },
          {
            "id": "caption",
            "label": "Caption",
            "type": "textarea",
            "default": "Replace this text with a description of the media and what learners should watch for.",
            "target": ".media-caption",
            "mode": "text"
          }
        ]
      }
    },
    {
      "id": "rubric-table",
      "title": "Rubric Table",
      "category": "Assessment",
      "description": "Responsive rubric table that stacks on narrow screens.",
      "path": "snippets/components/rubric-table.html",
      "config": {
        "fields": [
          {
            "id": "rubricCaption",
            "label": "Caption",
            "type": "text",
            "default": "Assignment rubric",
            "target": "caption",
            "mode": "text"
          }
        ]
      }
    },
    {
      "id": "tabs",
      "title": "Tabs",
      "category": "Interactive",
      "description": "Keyboard-accessible tabbed content. IDs are generated automatically when inserted through the tool.",
      "path": "snippets/components/tabs.html",
      "config": {
        "fields": [
          {
            "id": "tabOne",
            "label": "First tab",
            "type": "text",
            "default": "Tab One",
            "target": "#tab-button-1",
            "mode": "text"
          },
          {
            "id": "tabTwo",
            "label": "Second tab",
            "type": "text",
            "default": "Tab Two",
            "target": "#tab-button-2",
            "mode": "text"
          },
          {
            "id": "tabThree",
            "label": "Third tab",
            "type": "text",
            "default": "Tab Three",
            "target": "#tab-button-3",
            "mode": "text"
          }
        ]
      }
    }
  ]
}
