{
  "$schema": "../../packages/ui/screens/screen.schema.json",
  "id": "members.registrations",
  "version": 1,
  "app": "admin",
  "route": "/mitglieder/anmeldungen/:id",
  "title": "Anmeldungen",
  "nav": { "label": "Mitglieder", "icon": "users", "order": 2, "tab": true },
  "requires": ["members.registrations"],
  "data": {
    "registrations": { "source": "members.registrations.list", "params": { "status": { "$bind": "params.status" } } },
    "selected": { "source": "members.registrations.get", "params": { "id": { "$bind": "params.id" } } }
  },
  "actions": {
    "approve": {
      "handler": "members.approveRegistration",
      "risk": "irreversible",
      "confirm": {
        "title": { "$text": "{selected.name} freigeben?" },
        "body": "Danach geschieht Folgendes:",
        "consequences": { "$bind": "selected.approvalEffects" },
        "confirmLabel": "Freigeben",
        "tone": "primary"
      },
      "success": { "$text": "{selected.name} freigegeben" }
    },
    "reject": { "handler": "members.rejectRegistration", "risk": "reversible", "success": "Anmeldung abgelehnt" },
    "edit": { "handler": "members.editRegistration", "risk": "safe" }
  },
  "body": [
    {
      "component": "page-header",
      "data": {
        "title": "Anmeldungen",
        "meta": { "$text": "{registrations.openCount} warten auf Freigabe · Formular online" },
        "actions": [{ "label": "Formular ansehen", "icon": "external-link", "href": "../examples/public-registration.html" }]
      }
    },
    {
      "component": "chip-group",
      "data": {
        "label": "Status",
        "mode": "single",
        "chips": [
          { "value": "pending", "label": "Offen", "count": { "$bind": "registrations.openCount" }, "pressed": true },
          { "value": "approved", "label": "Freigegeben", "count": { "$bind": "registrations.approvedCount" } },
          { "value": "rejected", "label": "Abgelehnt", "count": { "$bind": "registrations.rejectedCount" } }
        ]
      }
    },
    {
      "layout": "split",
      "children": [
        {
          "component": "list",
          "if": { "$bind": "registrations.items.length" },
          "data": {
            "label": "Offene Anmeldungen",
            "items": {
              "$each": "registrations.items",
              "as": "r",
              "map": {
                "id": { "$bind": "r.id" },
                "title": { "$bind": "r.name" },
                "meta": { "$text": "{r.age} Jahre · eingegangen {r.receivedLabel}" },
                "href": { "$text": "?screen=members.registrations&id={r.id}" },
                "avatar": { "$bind": "r.initials" },
                "current": { "$bind": "r.selected" },
                "badge": { "$if": { "$bind": "r.flag" }, "then": { "label": { "$bind": "r.flag.label" }, "tone": { "$bind": "r.flag.tone" } } }
              }
            }
          }
        },
        {
          "component": "empty-state",
          "if": { "$not": { "$bind": "registrations.items.length" } },
          "data": { "icon": "check-circle", "title": "Keine offenen Anmeldungen", "text": "Neue Anmeldungen aus dem Online-Formular erscheinen hier." }
        },
        {
          "layout": "card",
          "if": { "$bind": "selected" },
          "children": [
            { "component": "page-header", "data": { "title": { "$bind": "selected.name" }, "meta": { "$bind": "selected.statusLabel" } } },
            {
              "component": "kv",
              "data": {
                "items": [
                  { "term": "Geburtsdatum", "value": { "$text": "{selected.birthDateLabel} ({selected.age} Jahre)" } },
                  { "term": "Erziehungsberechtigt", "value": { "$bind": "selected.guardian" } },
                  { "term": "Gewünschte Gruppe", "value": { "$bind": "selected.group" } },
                  { "term": "Mitgliedschaft", "value": { "$bind": "selected.membership" } },
                  { "term": "Fotos", "value": { "$bind": "selected.photoConsent" } }
                ]
              }
            },
            {
              "component": "alert",
              "if": { "$bind": "selected.suggestion" },
              "data": { "tone": "info", "title": { "$bind": "selected.suggestion.title" }, "body": { "$bind": "selected.suggestion.body" } }
            },
            {
              "layout": "cluster",
              "justify": "end",
              "children": [
                { "component": "button", "data": { "label": "Ablehnen", "variant": "ghost", "action": "reject", "actionId": { "$bind": "selected.id" } } },
                { "component": "button", "data": { "label": "Bearbeiten", "action": "edit", "actionId": { "$bind": "selected.id" } } },
                { "component": "button", "data": { "label": "Freigeben", "variant": "primary", "action": "approve", "actionId": { "$bind": "selected.id" } } }
              ]
            }
          ]
        }
      ]
    }
  ]
}
