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

export interface BlocksBreadcrumb extends Struct.ComponentSchema {
  collectionName: 'components_blocks_breadcrumbs';
  info: {
    displayName: 'Breadcrumb';
    icon: 'bulletList';
  };
  attributes: {
    items: Schema.Attribute.Component<'partial.breadcrumb-item', true>;
  };
}

export interface BlocksClientLogos extends Struct.ComponentSchema {
  collectionName: 'components_blocks_client_logos';
  info: {
    displayName: 'Clients Logos';
  };
  attributes: {
    items: Schema.Attribute.Component<'partial.client-logo-item', true>;
    layoutMode: Schema.Attribute.Enumeration<['default', 'grid']> &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<'default'>;
  };
}

export interface BlocksContactForm extends Struct.ComponentSchema {
  collectionName: 'components_blocks_contact_forms';
  info: {
    displayName: 'Contacts Form';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    image: Schema.Attribute.Media<'images'>;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksContactsList extends Struct.ComponentSchema {
  collectionName: 'components_blocks_contacts_lists';
  info: {
    description: '';
    displayName: 'Contacts List';
    icon: 'bulletList';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    items: Schema.Attribute.Component<'partial.contact-list-item', true> &
      Schema.Attribute.Required;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksCounter extends Struct.ComponentSchema {
  collectionName: 'components_blocks_counters';
  info: {
    description: '';
    displayName: 'Counter';
    icon: 'bulletList';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    items: Schema.Attribute.Component<'partial.counter-item', true> &
      Schema.Attribute.Required;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksDashboardsList extends Struct.ComponentSchema {
  collectionName: 'components_blocks_dashboards_lists';
  info: {
    description: '';
    displayName: 'Dashboards List';
    icon: 'bulletList';
  };
  attributes: {
    items: Schema.Attribute.Component<
      'dashboards.tableau-dashboard-item',
      true
    >;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksFaqList extends Struct.ComponentSchema {
  collectionName: 'components_blocks_faq_lists';
  info: {
    description: '';
    displayName: 'FAQ List';
    icon: 'bulletList';
  };
  attributes: {
    items: Schema.Attribute.Component<'partial.faq-list-item', true> &
      Schema.Attribute.Required &
      Schema.Attribute.SetMinMax<
        {
          min: 1;
        },
        number
      >;
  };
}

export interface BlocksGallery extends Struct.ComponentSchema {
  collectionName: 'components_blocks_galleries';
  info: {
    description: '';
    displayName: 'Gallery';
  };
  attributes: {
    items: Schema.Attribute.Component<'partial.gallery-item', true>;
    renderAsHeroBanner: Schema.Attribute.Boolean &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<false>;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksGoogleMap extends Struct.ComponentSchema {
  collectionName: 'components_blocks_google_maps';
  info: {
    description: '';
    displayName: 'Google Map';
  };
  attributes: {
    latitude: Schema.Attribute.Float & Schema.Attribute.Required;
    longitude: Schema.Attribute.Float & Schema.Attribute.Required;
    markers: Schema.Attribute.Component<'partial.google-map-marker', true>;
    zoomLevel: Schema.Attribute.Decimal &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<11>;
  };
}

export interface BlocksPageContentItem extends Struct.ComponentSchema {
  collectionName: 'components_blocks_page_content_items';
  info: {
    description: '';
    displayName: 'Content Item';
    icon: 'layout';
  };
  attributes: {
    callToAction: Schema.Attribute.Component<'shared.call-to-action', false>;
    content: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    disposition: Schema.Attribute.Enumeration<
      ['IMAGE_LEFT', 'IMAGE_RIGHT', 'IMAGE_TOP', 'IMAGE_BOTTOM']
    > &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<'IMAGE_LEFT'>;
    image: Schema.Attribute.Media<'images'>;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BlocksPageTopHeader extends Struct.ComponentSchema {
  collectionName: 'components_blocks_page_top_headers';
  info: {
    description: '';
    displayName: 'Page Top Header';
    icon: 'connector';
  };
  attributes: {
    banner: Schema.Attribute.Media<'images'>;
    breadcrump: Schema.Attribute.Component<'blocks.breadcrumb', false>;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface BlocksVideoItem extends Struct.ComponentSchema {
  collectionName: 'components_blocks_video_items';
  info: {
    description: '';
    displayName: 'Video Item';
    icon: 'television';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    subtitle: Schema.Attribute.String;
    tags: Schema.Attribute.Component<'shared.tag-item', true>;
    title: Schema.Attribute.String;
    video: Schema.Attribute.JSON &
      Schema.Attribute.CustomField<'plugin::video-field.video'>;
  };
}

export interface DashboardsTableauDashboardItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_tableau_dashboard_item';
  info: {
    description: '';
    displayName: 'Tablau Dashboard Item';
    icon: 'chartCircle';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'defaultHtml';
        }
      >;
    previewImage: Schema.Attribute.Media<'images'>;
    source: Schema.Attribute.String & Schema.Attribute.Required;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface PartialBreadcrumbItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_breadcrumb_items';
  info: {
    displayName: 'Breadcrumb Item';
    icon: 'link';
  };
  attributes: {
    isCurrent: Schema.Attribute.Boolean &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<false>;
    label: Schema.Attribute.String & Schema.Attribute.Required;
    url: Schema.Attribute.String;
  };
}

export interface PartialClientLogoItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_client_logo_items';
  info: {
    displayName: 'Client Logo Item';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'> & Schema.Attribute.Required;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
    webLink: Schema.Attribute.Component<'partial.web-link-item', false> &
      Schema.Attribute.Required;
  };
}

export interface PartialContactListItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_contact_list_items';
  info: {
    description: '';
    displayName: 'Contacts List Item';
    icon: 'dashboard';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.Required &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    icon: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface PartialCounterItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_items';
  info: {
    description: '';
    displayName: 'Counter Item';
    icon: 'apps';
  };
  attributes: {
    description: Schema.Attribute.Text;
    value: Schema.Attribute.Integer & Schema.Attribute.Required;
  };
}

export interface PartialFaqListItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_faq_list_items';
  info: {
    displayName: 'FAQ List Item';
    icon: 'question';
  };
  attributes: {
    answerContent: Schema.Attribute.RichText &
      Schema.Attribute.Required &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'default';
        }
      >;
    questionText: Schema.Attribute.Text & Schema.Attribute.Required;
  };
}

export interface PartialGalleryItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_gallery_items';
  info: {
    description: '';
    displayName: 'Gallery Item';
  };
  attributes: {
    description: Schema.Attribute.RichText &
      Schema.Attribute.CustomField<
        'plugin::ckeditor5.CKEditor',
        {
          preset: 'defaultHtml';
        }
      >;
    image: Schema.Attribute.Media<'images'> & Schema.Attribute.Required;
    subtitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
    webLink: Schema.Attribute.Component<'partial.web-link-item', false>;
  };
}

export interface PartialGoogleMapMarker extends Struct.ComponentSchema {
  collectionName: 'components_partial_google_map_markers';
  info: {
    displayName: 'GoogleMap Marker';
  };
  attributes: {
    label: Schema.Attribute.String;
    latitude: Schema.Attribute.Float & Schema.Attribute.Required;
    longitude: Schema.Attribute.Float & Schema.Attribute.Required;
  };
}

export interface PartialWebLinkItem extends Struct.ComponentSchema {
  collectionName: 'components_partial_web_link_items';
  info: {
    displayName: 'Web Link Item';
    icon: 'link';
  };
  attributes: {
    label: Schema.Attribute.String & Schema.Attribute.Required;
    linkMode: Schema.Attribute.Enumeration<['INTERNAL', 'EXTERNAL']> &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<'INTERNAL'>;
    url: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface SettingsPaginatedListSettings extends Struct.ComponentSchema {
  collectionName: 'components_settings_paginated_list_settings';
  info: {
    description: '';
    displayName: 'Paginated List Settings';
  };
  attributes: {
    itemsToShow: Schema.Attribute.Integer &
      Schema.Attribute.Required &
      Schema.Attribute.SetMinMax<
        {
          min: 1;
        },
        number
      > &
      Schema.Attribute.DefaultTo<5>;
  };
}

export interface SharedCallToAction extends Struct.ComponentSchema {
  collectionName: 'components_shared_call_to_actions';
  info: {
    description: '';
    displayName: 'Call To Action';
    icon: 'link';
  };
  attributes: {
    icon: Schema.Attribute.Media<'images'>;
    label: Schema.Attribute.String & Schema.Attribute.Required;
    renderAsButton: Schema.Attribute.Boolean &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<true>;
    webLink: Schema.Attribute.Component<'partial.web-link-item', false> &
      Schema.Attribute.Required;
  };
}

export interface SharedSeo extends Struct.ComponentSchema {
  collectionName: 'components_shared_seos';
  info: {
    description: '';
    displayName: 'Seo';
    icon: 'allergies';
    name: 'Seo';
  };
  attributes: {
    metaDescription: Schema.Attribute.Text & Schema.Attribute.Required;
    metaTitle: Schema.Attribute.String & Schema.Attribute.Required;
    shareImage: Schema.Attribute.Media<'images'>;
  };
}

export interface SharedTagItem extends Struct.ComponentSchema {
  collectionName: 'components_shared_tag_items';
  info: {
    displayName: 'Tag Item';
    icon: 'priceTag';
  };
  attributes: {
    label: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

declare module '@strapi/strapi' {
  export module Public {
    export interface ComponentSchemas {
      'blocks.breadcrumb': BlocksBreadcrumb;
      'blocks.client-logos': BlocksClientLogos;
      'blocks.contact-form': BlocksContactForm;
      'blocks.contacts-list': BlocksContactsList;
      'blocks.counter': BlocksCounter;
      'blocks.dashboards-list': BlocksDashboardsList;
      'blocks.faq-list': BlocksFaqList;
      'blocks.gallery': BlocksGallery;
      'blocks.google-map': BlocksGoogleMap;
      'blocks.page-content-item': BlocksPageContentItem;
      'blocks.page-top-header': BlocksPageTopHeader;
      'blocks.video-item': BlocksVideoItem;
      'dashboards.tableau-dashboard-item': DashboardsTableauDashboardItem;
      'partial.breadcrumb-item': PartialBreadcrumbItem;
      'partial.client-logo-item': PartialClientLogoItem;
      'partial.contact-list-item': PartialContactListItem;
      'partial.counter-item': PartialCounterItem;
      'partial.faq-list-item': PartialFaqListItem;
      'partial.gallery-item': PartialGalleryItem;
      'partial.google-map-marker': PartialGoogleMapMarker;
      'partial.web-link-item': PartialWebLinkItem;
      'settings.paginated-list-settings': SettingsPaginatedListSettings;
      'shared.call-to-action': SharedCallToAction;
      'shared.seo': SharedSeo;
      'shared.tag-item': SharedTagItem;
    }
  }
}
