{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://schema.mydesignsystem.com/cms/event-list.schema.json",
  "title": "Event List",
  "description": "Event list component for displaying a list of events with filtering options.",
  "type": "object",
  "properties": {
    "filter": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "$id": "http://schema.mydesignsystem.com/event-filter.schema.json",
      "title": "Event Filter",
      "description": "Event filter component for filtering events based on date and categories.",
      "type": "object",
      "properties": {
        "datePicker": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "Title for the date picker",
              "default": "Find Appointment"
            },
            "dateFromInput": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Label for the date-from input",
                  "default": "From"
                },
                "placeholder": {
                  "type": "string",
                  "description": "Placeholder text for the date-from input",
                  "default": "Select a date"
                }
              },
              "additionalProperties": false
            },
            "dateToInput": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Label for the date-to input",
                  "default": "To"
                },
                "placeholder": {
                  "type": "string",
                  "description": "Placeholder text for the date-to input",
                  "default": "Select a date"
                }
              },
              "additionalProperties": false
            },
            "toggle": {
              "type": "boolean",
              "description": "Toggle to enable or disable the date picker",
              "default": true
            }
          },
          "additionalProperties": false
        },
        "categories": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "Title for the categories filter",
              "default": "Categories"
            },
            "categoryCheckboxes": {
              "type": "array",
              "title": "Label",
              "description": "List of categories to filter appointments",
              "items": {
                "type": "string",
                "description": "Category name",
                "examples": [
                  "Category Filter"
                ]
              }
            },
            "toggle": {
              "type": "boolean",
              "description": "Toggle to enable or disable the category filter",
              "default": true
            }
          },
          "additionalProperties": false
        },
        "applyButton": {
          "type": "object",
          "properties": {
            "label": {
              "type": "string",
              "description": "Label for the button",
              "default": "Filter Appointments"
            },
            "onClick": {
              "type": "string",
              "description": "Function to call on button click"
            }
          },
          "additionalProperties": false
        },
        "resetButton": {
          "type": "object",
          "properties": {
            "label": {
              "type": "string",
              "description": "Label for the button",
              "default": "Reset Filters"
            },
            "onClick": {
              "type": "string",
              "description": "Function to call on button click"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "events": {
      "type": "array",
      "items": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$id": "http://schema.mydesignsystem.com/event-list-teaser.schema.json",
        "title": "Event List Teaser",
        "description": "Display an event teaser with date, title and location",
        "type": "object",
        "properties": {
          "category": {
            "title": "Category",
            "description": "Category of the event teaser",
            "type": "string",
            "examples": [
              "Category"
            ]
          },
          "title": {
            "title": "Headline",
            "description": "Title of the event",
            "type": "string",
            "format": "markdown",
            "examples": [
              "This is a event teaser title"
            ]
          },
          "text": {
            "title": "Text",
            "description": "Short teaser text for the event",
            "type": "string",
            "format": "markdown",
            "examples": [
              "The Future of AI is here and now - Join us to explore the latest advancements in artificial intelligence. The Future of AI is here and now - Join us to explore the latest advancements in artificial intelligence."
            ]
          },
          "date": {
            "title": "Date",
            "description": "The date of the event",
            "type": "string",
            "format": "date",
            "examples": [
              "FRI, JAN 16"
            ]
          },
          "time": {
            "title": "Time",
            "description": "The time of the event",
            "type": "string",
            "examples": [
              "10:00"
            ]
          },
          "location": {
            "title": "Location",
            "description": "Location of the event",
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "title": "Location Name",
                "description": "Name of the location",
                "examples": [
                  "Stadthalle"
                ]
              },
              "address": {
                "type": "string",
                "title": "Address",
                "description": "Address of the location",
                "examples": [
                  "Köln"
                ]
              }
            },
            "additionalProperties": false
          },
          "tags": {
            "title": "Tags",
            "description": "Tags associated with the event",
            "type": "array",
            "items": {
              "type": "string",
              "examples": [
                "AI",
                "Technology",
                "Innovation"
              ]
            },
            "default": [
              "Topic 1",
              "Topic 2"
            ]
          },
          "image": {
            "title": "Image",
            "description": "Image to display in the teaser",
            "type": "object",
            "properties": {
              "src": {
                "type": "string",
                "format": "image",
                "title": "Image Source",
                "description": "URL of the image to display",
                "examples": [
                  "https://picsum.photos/seed/flower/800/600"
                ]
              },
              "alt": {
                "type": "string",
                "title": "Alt Text",
                "description": "Alt text of the image",
                "examples": [
                  "This is an image of a flower"
                ]
              }
            },
            "additionalProperties": false
          },
          "url": {
            "title": "URL",
            "description": "The event entry URL to link",
            "type": "string",
            "format": "uri",
            "examples": [
              "https://example.com"
            ]
          },
          "ctaText": {
            "title": "Call to Action",
            "description": "Text for the call to action",
            "type": "string",
            "examples": [
              "Show event"
            ]
          },
          "ariaLabel": {
            "title": "ARIA Label",
            "description": "ARIA label for accessibility",
            "type": "string"
          },
          "className": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "date",
          "location"
        ]
      }
    }
  },
  "additionalProperties": false
}