# Sveltia CMS configuration for Paul Lorenz Music.
# GENERATED by data/build_cms_config.py - edit that script, not this file.
# Six folder collections (products / blog / pages x EN / DE) over the live
# content, separated by a lang filter. Every field is mapped; structural &
# machine fields are hidden (preserved, not editable). See the script for notes.

backend:
  name: github
  repo: Artyfile/lorenz-music
  branch: main
  base_url: https://lorenz-music-cms.pages.dev
  auth_endpoint: auth
media_folder: web/public/cms-media
public_folder: /cms-media
site_url: https://www.lorenz-music.com
locale: en
collections:
- name: products_en
  label: Products · English
  label_singular: Product
  folder: web/src/content/products
  extension: mdx
  format: yaml-frontmatter
  filter:
    field: lang
    value: en
  identifier_field: songTitle
  summary: '{{songTitle}}'
  sortable_fields:
  - songTitle
  - composer
  create: false
  fields:
  - name: coverImage
    label: Cover image
    widget: image
    required: false
    choose_url: true
  - name: songTitle
    label: Song title
    widget: string
  - name: composer
    label: Composer
    widget: string
    required: false
  - name: arranger
    label: Arranger
    widget: string
    required: false
    default: Paul Lorenz
  - name: headline
    label: Headline (H1)
    widget: string
  - name: subheadline
    label: Subheadline
    widget: text
    required: false
  - name: metaTitle
    label: Meta title (SEO)
    widget: string
  - name: metaDescription
    label: Meta description (SEO)
    widget: text
  - name: intro
    label: Intro paragraphs
    widget: list
    collapsed: true
    field:
      name: paragraph
      label: Paragraph
      widget: text
  - name: features
    label: Features
    widget: list
    collapsed: true
    summary: '{{fields.title}}'
    fields:
    - name: title
      label: Title
      widget: string
      required: false
    - name: text
      label: Text
      widget: text
  - name: testimonial
    label: Testimonial
    widget: object
    collapsed: true
    required: false
    fields:
    - name: quote
      label: Quote
      widget: text
    - name: cite
      label: Cite (name, ensemble)
      widget: string
  - name: faq
    label: FAQ
    widget: list
    collapsed: true
    summary: '{{fields.question}}'
    fields:
    - name: question
      label: Question
      widget: string
    - name: answer
      label: Answer
      widget: text
  - name: variants
    label: Editions / Variants
    widget: list
    collapsed: true
    min: 1
    summary: '{{fields.name}} — {{fields.priceDisplay}}'
    fields:
    - name: name
      label: Edition name
      widget: string
    - name: price
      label: Price (number)
      widget: number
      value_type: float
      step: 0.01
    - name: priceDisplay
      label: Price (display, e.g. 59,90 €)
      widget: string
    - name: payhipId
      label: PayHip product ID
      widget: string
    - name: image
      label: Image
      widget: image
      required: false
      choose_url: true
    - name: imageAlt
      label: Image alt
      widget: string
      required: false
    - name: description
      label: Description
      widget: text
      required: false
  - name: audioUrl
    label: Audio preview URL (MP3)
    widget: string
    required: false
  - name: productId
    label: Product ID (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: en
  - name: pageSlug
    widget: hidden
  - name: canonical
    widget: hidden
  - name: altUrl
    widget: hidden
    required: false
- name: products_de
  label: Products · Deutsch
  label_singular: Produkt
  folder: web/src/content/products
  extension: mdx
  format: yaml-frontmatter
  filter:
    field: lang
    value: de
  identifier_field: songTitle
  summary: '{{songTitle}}'
  sortable_fields:
  - songTitle
  - composer
  create: false
  fields:
  - name: coverImage
    label: Cover image
    widget: image
    required: false
    choose_url: true
  - name: songTitle
    label: Song title
    widget: string
  - name: composer
    label: Composer
    widget: string
    required: false
  - name: arranger
    label: Arranger
    widget: string
    required: false
    default: Paul Lorenz
  - name: headline
    label: Headline (H1)
    widget: string
  - name: subheadline
    label: Subheadline
    widget: text
    required: false
  - name: metaTitle
    label: Meta title (SEO)
    widget: string
  - name: metaDescription
    label: Meta description (SEO)
    widget: text
  - name: intro
    label: Intro paragraphs
    widget: list
    collapsed: true
    field:
      name: paragraph
      label: Paragraph
      widget: text
  - name: features
    label: Features
    widget: list
    collapsed: true
    summary: '{{fields.title}}'
    fields:
    - name: title
      label: Title
      widget: string
      required: false
    - name: text
      label: Text
      widget: text
  - name: testimonial
    label: Testimonial
    widget: object
    collapsed: true
    required: false
    fields:
    - name: quote
      label: Quote
      widget: text
    - name: cite
      label: Cite (name, ensemble)
      widget: string
  - name: faq
    label: FAQ
    widget: list
    collapsed: true
    summary: '{{fields.question}}'
    fields:
    - name: question
      label: Question
      widget: string
    - name: answer
      label: Answer
      widget: text
  - name: variants
    label: Editions / Variants
    widget: list
    collapsed: true
    min: 1
    summary: '{{fields.name}} — {{fields.priceDisplay}}'
    fields:
    - name: name
      label: Edition name
      widget: string
    - name: price
      label: Price (number)
      widget: number
      value_type: float
      step: 0.01
    - name: priceDisplay
      label: Price (display, e.g. 59,90 €)
      widget: string
    - name: payhipId
      label: PayHip product ID
      widget: string
    - name: image
      label: Image
      widget: image
      required: false
      choose_url: true
    - name: imageAlt
      label: Image alt
      widget: string
      required: false
    - name: description
      label: Description
      widget: text
      required: false
  - name: audioUrl
    label: Audio preview URL (MP3)
    widget: string
    required: false
  - name: productId
    label: Product ID (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: de
  - name: pageSlug
    widget: hidden
  - name: canonical
    widget: hidden
  - name: altUrl
    widget: hidden
    required: false
- name: blog_en
  label: Blog · English
  label_singular: Post
  folder: web/src/content/blog
  extension: md
  format: yaml-frontmatter
  filter:
    field: lang
    value: en
  identifier_field: title
  summary: '{{title}}'
  sortable_fields:
  - title
  - datePublished
  create: false
  fields:
  - name: hero
    label: Hero image
    widget: image
    required: false
    choose_url: true
  - name: title
    label: Title
    widget: string
  - name: category
    label: Category
    widget: select
    options:
    - guides
    - sheet-music
    - news
    default: news
  - name: excerpt
    label: Excerpt
    widget: text
    required: false
  - name: author
    label: Author
    widget: string
    required: false
  - name: datePublished
    label: Published (YYYY-MM-DD)
    widget: string
    required: false
  - name: dateModified
    label: Modified (YYYY-MM-DD)
    widget: string
    required: false
  - name: metaTitle
    label: Meta title
    widget: string
    required: false
  - name: metaDescription
    label: Meta description
    widget: text
  - name: bodyHtml
    label: Article HTML
    widget: text
  - name: jsonLd
    label: Structured data (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: en
  - name: pageSlug
    widget: hidden
  - name: canonical
    widget: hidden
  - name: altUrl
    widget: hidden
    required: false
- name: blog_de
  label: Blog · Deutsch
  label_singular: Beitrag
  folder: web/src/content/blog
  extension: md
  format: yaml-frontmatter
  filter:
    field: lang
    value: de
  identifier_field: title
  summary: '{{title}}'
  sortable_fields:
  - title
  - datePublished
  create: false
  fields:
  - name: hero
    label: Hero image
    widget: image
    required: false
    choose_url: true
  - name: title
    label: Title
    widget: string
  - name: category
    label: Category
    widget: select
    options:
    - guides
    - sheet-music
    - news
    default: news
  - name: excerpt
    label: Excerpt
    widget: text
    required: false
  - name: author
    label: Author
    widget: string
    required: false
  - name: datePublished
    label: Published (YYYY-MM-DD)
    widget: string
    required: false
  - name: dateModified
    label: Modified (YYYY-MM-DD)
    widget: string
    required: false
  - name: metaTitle
    label: Meta title
    widget: string
    required: false
  - name: metaDescription
    label: Meta description
    widget: text
  - name: bodyHtml
    label: Article HTML
    widget: text
  - name: jsonLd
    label: Structured data (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: de
  - name: pageSlug
    widget: hidden
  - name: canonical
    widget: hidden
  - name: altUrl
    widget: hidden
    required: false
- name: pages_en
  label: Pages · English
  label_singular: Page
  folder: web/src/content/pages
  extension: md
  format: yaml-frontmatter
  filter:
    field: lang
    value: en
  identifier_field: title
  summary: '{{title}}'
  sortable_fields:
  - title
  create: false
  fields:
  - name: title
    label: Title
    widget: string
  - name: section
    label: Section
    widget: select
    options:
    - music
    - info
    default: info
  - name: metaTitle
    label: Meta title
    widget: string
    required: false
  - name: metaDescription
    label: Meta description
    widget: text
    required: false
  - name: bodyHtml
    label: Page HTML
    widget: text
  - name: jsonLd
    label: Structured data (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: en
  - name: path
    widget: hidden
  - name: canonical
    widget: hidden
- name: pages_de
  label: Pages · Deutsch
  label_singular: Seite
  folder: web/src/content/pages
  extension: md
  format: yaml-frontmatter
  filter:
    field: lang
    value: de
  identifier_field: title
  summary: '{{title}}'
  sortable_fields:
  - title
  create: false
  fields:
  - name: title
    label: Title
    widget: string
  - name: section
    label: Section
    widget: select
    options:
    - music
    - info
    default: info
  - name: metaTitle
    label: Meta title
    widget: string
    required: false
  - name: metaDescription
    label: Meta description
    widget: text
    required: false
  - name: bodyHtml
    label: Page HTML
    widget: text
  - name: jsonLd
    label: Structured data (preserved on save; not editable here (changing it would break URLs/SEO))
    widget: hidden
  - name: lang
    widget: hidden
    default: de
  - name: path
    widget: hidden
  - name: canonical
    widget: hidden
