# Sveltia CMS configuration for the JMK website.
# Staff edit content here; Sveltia commits Markdown to GitHub and the site rebuilds.

backend:
  name: github
  repo: alansha/jmktechnology.com
  branch: main
  # Authentication: token sign-in only. Use "Sign In with Token" on the /cms/
  # login screen with a fine-grained GitHub personal access token (repo
  # Contents: read & write). No OAuth relay is deployed, so the "Sign In with
  # GitHub" (OAuth) button is hidden. If non-technical editors need one-click
  # sign-in later, deploy an OAuth client, set `base_url` here and add "oauth"
  # back to auth_methods — see
  # https://sveltiacms.app/en/docs/backends/github#authentication
  auth_methods: [token]

# Local editing: Sveltia has a built-in "Work with Local Repository" option on
# the sign-in screen (Chrome/Edge) — no proxy server needed.

# Branding + working "View site" links in the admin UI.
# app_title replaces "Sveltia CMS" on the login screen and in the page title.
app_title: JMK Content Manager
site_url: https://www.jmktechnology.com
display_url: https://www.jmktechnology.com
logo_url: /images/logo.png

# Bilingual editing. `multiple_folders` stores each locale in its own subfolder,
# e.g. src/content/products/en/vehicle-cameras.md and .../zh/vehicle-cameras.md —
# matching how the Astro site reads content. Editors get an EN / 中文 tab per entry.
i18n:
  structure: multiple_folders
  locales: [en, zh]
  default_locale: en

# Uploaded media is stored alongside the site's images.
media_folder: "public/images"
public_folder: "/images"

collections:
  - name: "products"
    label: "Products"
    label_singular: "Product"
    description: "Product categories shown under Solutions."
    folder: "src/content/products"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    fields:
      - { label: "Name", name: "name", widget: "string", i18n: true }
      - { label: "Display order", name: "order", widget: "number", default: 99, value_type: "int", i18n: duplicate }
      - { label: "Summary", name: "summary", widget: "text", hint: "Shown on cards and listings.", i18n: true }
      - { label: "Main image", name: "image", widget: "image", i18n: duplicate }
      - label: "Highlights"
        name: "highlights"
        widget: "list"
        i18n: true
        field: { label: "Highlight", name: "highlight", widget: "string" }
      - label: "Specifications"
        name: "specs"
        required: false
        widget: "list"
        i18n: true
        fields:
          - { label: "Label", name: "label", widget: "string" }
          - { label: "Value", name: "value", widget: "string" }
      - { label: "Video (YouTube/Vimeo URL)", name: "video", widget: "string", required: false, i18n: duplicate }
      - label: "Datasheets & documents"
        name: "documents"
        required: false
        widget: "list"
        i18n: true
        fields:
          - { label: "Label", name: "label", widget: "string" }
          - { label: "File (PDF)", name: "file", widget: "file", i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Full description", name: "body", widget: "markdown", hint: "Rich text — no HTML needed.", i18n: true }

  - name: "models"
    label: "Product Models"
    label_singular: "Model"
    description: "Individual product models, shown under their Solutions category."
    folder: "src/content/models"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    # Group the imported models by category in the admin list.
    view_groups:
      - { label: "Category", field: "category" }
    sortable_fields: ["name", "featured", "order", "category"]
    fields:
      - { label: "Model name", name: "name", widget: "string", i18n: true }
      - { label: "Product descriptor", name: "productName", widget: "string", required: false, hint: "Human-readable product name shown beside the model number.", i18n: duplicate }
      # Options come from the Products collection, so a new product category
      # created in the CMS is immediately assignable to models. The stored
      # value is the product slug (e.g. "vehicle-cameras"), matching how the
      # site links models to their category page.
      - label: "Category"
        name: "category"
        widget: "relation"
        collection: "products"
        value_field: "{{slug}}"
        search_fields: ["name"]
        display_fields: ["name"]
        i18n: duplicate
      - { label: "Display order", name: "order", widget: "number", default: 99, value_type: "int", i18n: duplicate }
      - { label: "Featured category leader", name: "featured", widget: "boolean", default: false, required: false, hint: "Featured models appear first in their category and receive a leader badge.", i18n: duplicate }
      - { label: "Summary", name: "summary", widget: "text", i18n: true }
      - { label: "Product image", name: "image", widget: "image", required: false, i18n: duplicate }
      - label: "Gallery images"
        name: "gallery"
        widget: "list"
        required: false
        i18n: duplicate
        field: { label: "Image", name: "image", widget: "image" }
      - label: "Subcategories"
        name: "subcategories"
        widget: "list"
        required: false
        i18n: duplicate
        field: { label: "Subcategory", name: "subcategory", widget: "string" }
      - label: "Target vehicles"
        name: "targetVehicles"
        widget: "list"
        required: false
        i18n: true
        field: { label: "Vehicle", name: "vehicle", widget: "string" }
      - label: "Mounting positions"
        name: "mountingPositions"
        widget: "list"
        required: false
        i18n: true
        field: { label: "Position", name: "position", widget: "string" }
      - label: "Certifications"
        name: "certifications"
        widget: "list"
        required: false
        i18n: duplicate
        field: { label: "Certification", name: "certification", widget: "string" }
      - label: "Kit components"
        name: "kitComponents"
        widget: "list"
        required: false
        i18n: true
        field: { label: "Component", name: "component", widget: "string" }
      - label: "Datasheets & documents"
        name: "documents"
        widget: "list"
        required: false
        i18n: true
        fields:
          - { label: "Label", name: "label", widget: "string" }
          - { label: "File (PDF)", name: "file", widget: "file", i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Features & specifications", name: "body", widget: "markdown", hint: "Feature list and spec tables.", i18n: true }

  - name: "news"
    label: "News & Articles"
    label_singular: "Article"
    description: "Company news, exhibitions and announcements."
    folder: "src/content/news"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    fields:
      - { label: "Title", name: "title", widget: "string", i18n: true }
      - { label: "Description", name: "description", widget: "text", i18n: true }
      - { label: "Publish date", name: "pubDate", widget: "datetime", i18n: duplicate }
      - { label: "Category", name: "category", widget: "string", default: "News", i18n: true }
      - { label: "Author", name: "author", widget: "string", default: "JMK Team", i18n: duplicate }
      - { label: "Hero image", name: "heroImage", widget: "image", required: false, i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Body", name: "body", widget: "markdown", hint: "Rich text — no HTML needed.", i18n: true }

  - name: "case_studies"
    label: "Case Studies"
    label_singular: "Case Study"
    description: "Customer deployments and results."
    folder: "src/content/case-studies"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    fields:
      - { label: "Title", name: "title", widget: "string", i18n: true }
      - { label: "Description", name: "description", widget: "text", i18n: true }
      - { label: "Publish date", name: "pubDate", widget: "datetime", i18n: duplicate }
      - { label: "Client", name: "client", widget: "string", required: false, i18n: duplicate }
      - { label: "Industry", name: "industry", widget: "string", required: false, i18n: true }
      - { label: "Headline result", name: "result", widget: "string", required: false, i18n: true }
      - { label: "Hero image", name: "heroImage", widget: "image", required: false, i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Body", name: "body", widget: "markdown", hint: "Rich text — no HTML needed.", i18n: true }

  - name: "events"
    label: "Events & Exhibitions"
    label_singular: "Event"
    description: "Trade shows and exhibitions."
    folder: "src/content/events"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    fields:
      - { label: "Title", name: "title", widget: "string", i18n: true }
      - { label: "Description", name: "description", widget: "text", i18n: true }
      - { label: "Short name (for banners)", name: "shortName", widget: "string", required: false, hint: "e.g. 'IAA Transportation 2026' — used in homepage/contact promo banners while the event is upcoming.", i18n: true }
      - { label: "Start date", name: "startDate", widget: "datetime", i18n: duplicate }
      - { label: "End date", name: "endDate", widget: "datetime", required: false, i18n: duplicate }
      - { label: "Location", name: "location", widget: "string", required: false, i18n: true }
      - { label: "Event website URL", name: "url", widget: "string", required: false, i18n: duplicate }
      - { label: "Hero image", name: "heroImage", widget: "image", required: false, i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Body", name: "body", widget: "markdown", hint: "Rich text — no HTML needed.", i18n: true }

  - name: "articles"
    label: "Technical Articles"
    label_singular: "Article"
    description: "Knowledge and explainer content."
    folder: "src/content/articles"
    create: true
    slug: "{{slug}}"
    extension: "md"
    format: "frontmatter"
    i18n: true
    fields:
      - { label: "Title", name: "title", widget: "string", i18n: true }
      - { label: "Description", name: "description", widget: "text", i18n: true }
      - { label: "Publish date", name: "pubDate", widget: "datetime", i18n: duplicate }
      - { label: "Category", name: "category", widget: "string", default: "Technical", i18n: true }
      - { label: "Author", name: "author", widget: "string", default: "JMK Team", i18n: duplicate }
      - { label: "Hero image", name: "heroImage", widget: "image", required: false, i18n: duplicate }
      - { label: "Draft (hide from site)", name: "draft", widget: "boolean", default: false, required: false, i18n: duplicate }
      - { label: "Body", name: "body", widget: "markdown", hint: "Rich text — no HTML needed.", i18n: true }
