import type { Schema, Struct } from "@strapi/strapi";

export interface DynamicZoneColumnImageText extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_column_image_texts";
  info: {
    description: "";
    displayName: "Text-Bild-Spalte";
    icon: "bulletList";
  };
  attributes: {
    image: Schema.Attribute.Media<"images"> & Schema.Attribute.Required;
    image_left: Schema.Attribute.Boolean & Schema.Attribute.Required & Schema.Attribute.DefaultTo<true>;
    text: Schema.Attribute.Blocks & Schema.Attribute.Required;
  };
}

export interface DynamicZoneDualColumnText extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_dual_column_texts";
  info: {
    displayName: "Text-Text-Spalte";
    icon: "stack";
  };
  attributes: {
    left_side: Schema.Attribute.Blocks & Schema.Attribute.Required;
    right_side: Schema.Attribute.Blocks & Schema.Attribute.Required;
  };
}

export interface DynamicZoneEmbedding extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_embedding";
  info: {
    displayName: "Einbettung";
  };
  attributes: {
    link: Schema.Attribute.String;
  };
}

export interface DynamicZoneFileDownload extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_file_download";
  info: {
    description: "";
    displayName: "Datei-Download";
  };
  attributes: {
    file: Schema.Attribute.Media<"images" | "videos" | "audios" | "files"> & Schema.Attribute.Required;
  };
}

export interface DynamicZoneFileViewer extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_file_viewer";
  info: {
    description: "";
    displayName: "Datei-Anzeige";
  };
  attributes: {
    file: Schema.Attribute.Media<"images" | "videos" | "audios" | "files"> & Schema.Attribute.Required;
  };
}

export interface DynamicZoneFullImage extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_full_images";
  info: {
    description: "";
    displayName: "Voll-Bild";
    icon: "dashboard";
  };
  attributes: {
    image: Schema.Attribute.Media<"images"> & Schema.Attribute.Required;
  };
}

export interface DynamicZoneFullText extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_full_texts";
  info: {
    description: "";
    displayName: "Voll-Text";
    icon: "dashboard";
  };
  attributes: {
    text: Schema.Attribute.Blocks & Schema.Attribute.Required;
  };
}

export interface DynamicZoneGallery extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_galleries";
  info: {
    description: "";
    displayName: "Galerie";
    icon: "apps";
  };
  attributes: {
    images: Schema.Attribute.Media<"images", true> & Schema.Attribute.Required;
  };
}

export interface DynamicZoneSection extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_section";
  info: {
    description: "";
    displayName: "Abschnitt";
    icon: "expand";
  };
  attributes: {
    description: Schema.Attribute.Text;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface DynamicZoneSpacer extends Struct.ComponentSchema {
  collectionName: "components_dynamic_zone_spacer";
  info: {
    description: "";
    displayName: "Abstand";
    icon: "crop";
  };
  attributes: {};
}

export interface GlobalFooter extends Struct.ComponentSchema {
  collectionName: "components_global_footers";
  info: {
    description: "";
    displayName: "Fu\u00DFzeile";
    icon: "apps";
  };
  attributes: {
    copyright: Schema.Attribute.String;
    links: Schema.Attribute.Component<"items.link", true>;
    maintained_by: Schema.Attribute.String;
  };
}

export interface GlobalNavbar extends Struct.ComponentSchema {
  collectionName: "components_global_navbars";
  info: {
    description: "";
    displayName: "Navigationsleiste";
    icon: "bold";
  };
  attributes: {
    navbar_items: Schema.Attribute.Component<"items.navbar-items", true>;
  };
}

export interface GlobalSeo extends Struct.ComponentSchema {
  collectionName: "components_global_seos";
  info: {
    description: "";
    displayName: "seo";
    icon: "search";
  };
  attributes: {
    keywords: Schema.Attribute.Text;
    metaDescription: Schema.Attribute.String & Schema.Attribute.DefaultTo<"">;
    metaTitle: Schema.Attribute.String &
      Schema.Attribute.Required &
      Schema.Attribute.SetMinMaxLength<{
        maxLength: 60;
      }>;
  };
}

export interface ItemsHero extends Struct.ComponentSchema {
  collectionName: "components_items_heroes";
  info: {
    description: "";
    displayName: "hero";
    icon: "rocket";
  };
  attributes: {
    banner: Schema.Attribute.Media<"images">;
    title: Schema.Attribute.String;
  };
}

export interface ItemsLink extends Struct.ComponentSchema {
  collectionName: "components_items_links";
  info: {
    description: "";
    displayName: "Link";
    icon: "link";
  };
  attributes: {
    target: Schema.Attribute.Enumeration<["_blank", "_self", "_parent", "_top"]> &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<"_self">;
    text: Schema.Attribute.String & Schema.Attribute.Required;
    URL: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface ItemsNavbarItems extends Struct.ComponentSchema {
  collectionName: "components_items_left_navbar_items";
  info: {
    description: "";
    displayName: "Navigations-\u00DCberpunkt";
    icon: "bulletList";
  };
  attributes: {
    default_active_child: Schema.Attribute.String;
    name: Schema.Attribute.String & Schema.Attribute.Required;
    navbar_sub_items: Schema.Attribute.Component<"items.navbar-sub-items", true>;
    page: Schema.Attribute.Relation<"oneToOne", "api::page.page">;
    URL: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface ItemsNavbarSubItems extends Struct.ComponentSchema {
  collectionName: "components_items_navbar_sub_items";
  info: {
    description: "";
    displayName: "Navigations-Unterpunkt";
    icon: "bulletList";
  };
  attributes: {
    name: Schema.Attribute.String & Schema.Attribute.Required;
    page: Schema.Attribute.Relation<"oneToOne", "api::page.page">;
    URL: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface SharedEmphasiseArticle extends Struct.ComponentSchema {
  collectionName: "components_shared_emphasise_articles";
  info: {
    description: "";
    displayName: "Artikel hervorheben";
    icon: "dashboard";
  };
  attributes: {
    articles: Schema.Attribute.Relation<"oneToMany", "api::article.article">;
    link_to_articles: Schema.Attribute.String & Schema.Attribute.DefaultTo<"">;
  };
}

export interface SharedList extends Struct.ComponentSchema {
  collectionName: "components_shared_lists";
  info: {
    description: "";
    displayName: "Inhaltsauswahl";
    icon: "apps";
  };
  attributes: {
    lookup: Schema.Attribute.Relation<"oneToOne", "api::collection-lookup.collection-lookup"> &
      Schema.Attribute.Required;
  };
}

declare module "@strapi/strapi" {
  export module Public {
    export interface ComponentSchemas {
      "dynamic-zone.column-image-text": DynamicZoneColumnImageText;
      "dynamic-zone.dual-column-text": DynamicZoneDualColumnText;
      "dynamic-zone.embedding": DynamicZoneEmbedding;
      "dynamic-zone.file-download": DynamicZoneFileDownload;
      "dynamic-zone.file-viewer": DynamicZoneFileViewer;
      "dynamic-zone.full-image": DynamicZoneFullImage;
      "dynamic-zone.full-text": DynamicZoneFullText;
      "dynamic-zone.gallery": DynamicZoneGallery;
      "dynamic-zone.section": DynamicZoneSection;
      "dynamic-zone.spacer": DynamicZoneSpacer;
      "global.footer": GlobalFooter;
      "global.navbar": GlobalNavbar;
      "global.seo": GlobalSeo;
      "items.hero": ItemsHero;
      "items.link": ItemsLink;
      "items.navbar-items": ItemsNavbarItems;
      "items.navbar-sub-items": ItemsNavbarSubItems;
      "shared.emphasise-article": SharedEmphasiseArticle;
      "shared.list": SharedList;
    }
  }
}