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

export interface AdditionalServiceImageAdditionalServiceImage
  extends Struct.ComponentSchema {
  collectionName: 'components_fmd_additional_service_images';
  info: {
    description: 'Image for additional services hexagonal cards';
    displayName: 'Additional Service Image';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
  };
}

export interface AmenityGridItemAmenityGridItem extends Struct.ComponentSchema {
  collectionName: 'components_amenity_grid_items';
  info: {
    description: 'Amenity item for grid display in property details';
    displayName: 'Amenity Grid Item';
  };
  attributes: {
    icon: Schema.Attribute.Media<'images'>;
    value: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface AmenitySliderItemAmenitySliderItem
  extends Struct.ComponentSchema {
  collectionName: 'components_amenity_slider_items';
  info: {
    description: 'Amenity item for slider in property details';
    displayName: 'Amenity Slider Item';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface AwardItemAwardItem extends Struct.ComponentSchema {
  collectionName: 'components_award_items';
  info: {
    description: 'Reusable component for awards';
    displayName: 'Award Item';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
    logo: Schema.Attribute.Media<'images'>;
    name: Schema.Attribute.String & Schema.Attribute.Required;
    sector: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface BespokeProjectItemBespokeProjectItem
  extends Struct.ComponentSchema {
  collectionName: 'components_bespoke_project_items';
  info: {
    description: 'A project item for the bespoke page with layout type and property reference';
    displayName: 'Bespoke Project Item';
  };
  attributes: {
    address: Schema.Attribute.String;
    images: Schema.Attribute.Media<'images', true>;
    property: Schema.Attribute.Relation<'oneToOne', 'api::property.property'>;
    tagline: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface BusinessUnitItemBusinessUnitItem
  extends Struct.ComponentSchema {
  collectionName: 'components_business_unit_item_business_unit_items';
  info: {
    description: 'A business unit logo and information';
    displayName: 'Business Unit Item';
  };
  attributes: {
    altText: Schema.Attribute.String;
    companyName: Schema.Attribute.String & Schema.Attribute.Required;
    link: Schema.Attribute.String;
    logo: Schema.Attribute.Media<'images'>;
  };
}

export interface ClientReviewClientReview extends Struct.ComponentSchema {
  collectionName: 'components_designo_client_reviews';
  info: {
    description: 'Client review/testimonial for designo page';
    displayName: 'Client Review';
  };
  attributes: {
    address: Schema.Attribute.String & Schema.Attribute.Required;
    name: Schema.Attribute.String & Schema.Attribute.Required;
    profession: Schema.Attribute.String & Schema.Attribute.Required;
    quote: Schema.Attribute.Text & Schema.Attribute.Required;
  };
}

export interface ExcellenceSlideItemExcellenceSlideItem
  extends Struct.ComponentSchema {
  collectionName: 'components_excellence_slide_item_excellence_slide_items';
  info: {
    description: 'A slide item for the excellence section';
    displayName: 'Excellence Slide Item';
  };
  attributes: {
    description: Schema.Attribute.Text & Schema.Attribute.Required;
    image: Schema.Attribute.Media<'images'>;
    number: Schema.Attribute.String & Schema.Attribute.Required;
    title: Schema.Attribute.String & Schema.Attribute.Required;
    url: Schema.Attribute.String;
  };
}

export interface FeaturedPropertyItemFeaturedPropertyItem
  extends Struct.ComponentSchema {
  collectionName: 'components_featured_property_item_featured_property_items';
  info: {
    description: 'A featured property to display in the sidebar';
    displayName: 'Featured Property Item';
  };
  attributes: {
    property: Schema.Attribute.Relation<'oneToOne', 'api::property.property'>;
  };
}

export interface FmdServiceItemFmdServiceItem extends Struct.ComponentSchema {
  collectionName: 'components_fmd_service_items';
  info: {
    description: 'Service card for FMD page';
    displayName: 'FMD Service Item';
  };
  attributes: {
    description: Schema.Attribute.Text & Schema.Attribute.Required;
    image: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface FooterMenuColumnFooterMenuColumn
  extends Struct.ComponentSchema {
  collectionName: 'components_footer_footer_menu_columns';
  info: {
    description: 'A column of menu items in the footer';
    displayName: 'Footer Menu Column';
  };
  attributes: {
    items: Schema.Attribute.Component<
      'footer-menu-item.footer-menu-item',
      true
    >;
    title: Schema.Attribute.String;
  };
}

export interface FooterMenuItemFooterMenuItem extends Struct.ComponentSchema {
  collectionName: 'components_footer_footer_menu_items';
  info: {
    description: 'A menu item in the footer with optional icon';
    displayName: 'Footer Menu Item';
  };
  attributes: {
    highlight: Schema.Attribute.String;
    icon: Schema.Attribute.Media<'images'>;
    link: Schema.Attribute.String;
    text: Schema.Attribute.String;
  };
}

export interface GuidingPrincipleItemGuidingPrincipleItem
  extends Struct.ComponentSchema {
  collectionName: 'components_guiding_principle_items';
  info: {
    description: 'Reusable component for guiding principles';
    displayName: 'Guiding Principle Item';
  };
  attributes: {
    icon: Schema.Attribute.Media<'images' | 'files'>;
    label: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface HomepageBrandCommitment extends Struct.ComponentSchema {
  collectionName: 'components_homepage_brand_commitments';
  info: {
    displayName: 'Brand Commitment';
  };
  attributes: {
    buttonLink: Schema.Attribute.String;
    buttonText: Schema.Attribute.String;
    description: Schema.Attribute.Text;
    mobileTitle: Schema.Attribute.String;
    title: Schema.Attribute.String;
  };
}

export interface HomepageHero extends Struct.ComponentSchema {
  collectionName: 'components_homepage_heroes';
  info: {
    displayName: 'Hero';
  };
  attributes: {
    mobileBackground: Schema.Attribute.Media<'images' | 'videos'>;
    title: Schema.Attribute.String;
  };
}

export interface LatestProjectItemLatestProjectItem
  extends Struct.ComponentSchema {
  collectionName: 'components_latest_project_item_latest_project_items';
  info: {
    description: 'A latest project item that can link to a property';
    displayName: 'Latest Project Item';
  };
  attributes: {
    displayOrder: Schema.Attribute.Integer & Schema.Attribute.DefaultTo<0>;
    image: Schema.Attribute.Media<'images'>;
    property: Schema.Attribute.Relation<'oneToOne', 'api::property.property'>;
  };
}

export interface LeaderItemLeaderItem extends Struct.ComponentSchema {
  collectionName: 'components_leader_items';
  info: {
    description: 'Reusable component for leadership section';
    displayName: 'Leader Item';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
    name: Schema.Attribute.String & Schema.Attribute.Required;
    position: Schema.Attribute.String & Schema.Attribute.Required;
    quote: Schema.Attribute.Text & Schema.Attribute.Required;
  };
}

export interface MenuItemMenuItem extends Struct.ComponentSchema {
  collectionName: 'components_menu_item_menu_items';
  info: {
    description: 'A single menu item with title and link';
    displayName: 'Menu Item';
  };
  attributes: {
    displayOrder: Schema.Attribute.Integer & Schema.Attribute.DefaultTo<0>;
    hasSubmenu: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo<false>;
    href: Schema.Attribute.String & Schema.Attribute.Required;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface NarrativeBlockNarrativeBlock extends Struct.ComponentSchema {
  collectionName: 'components_narrative_blocks';
  info: {
    description: 'Repeatable narrative item with image and text';
    displayName: 'Narrative Block';
  };
  attributes: {
    headline: Schema.Attribute.String;
    image: Schema.Attribute.Media<'images'>;
    text: Schema.Attribute.Text;
  };
}

export interface NarrativeImageNarrativeImage extends Struct.ComponentSchema {
  collectionName: 'components_narrative_images';
  info: {
    description: 'Reusable component for narrative section images';
    displayName: 'Narrative Image';
  };
  attributes: {
    alt: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<'Narrative image'>;
    image: Schema.Attribute.Media<'images'>;
  };
}

export interface NarrativeNarrative extends Struct.ComponentSchema {
  collectionName: 'components_narratives';
  info: {
    description: 'Narrative section with title and repeatable blocks';
    displayName: 'Narrative';
  };
  attributes: {
    blocks: Schema.Attribute.Component<'narrative-block.narrative-block', true>;
    title: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<'The Navana Real Estate Narrative'>;
  };
}

export interface NavanaWaySectionNavanaWaySection
  extends Struct.ComponentSchema {
  collectionName: 'components_navana_way_sections';
  info: {
    description: 'Single block for Vision/Mission masonry section';
    displayName: 'Navana Way Section';
  };
  attributes: {
    bottomImage: Schema.Attribute.Media<'images'>;
    description: Schema.Attribute.Text &
      Schema.Attribute.DefaultTo<"The Navana Way describes Navana Group's vision, mission, values, and guiding principles. It establishes a common understanding of what we believe in, what we aspire for and how we work as an organization.">;
    missionDescription: Schema.Attribute.Text & Schema.Attribute.DefaultTo<''>;
    missionSubtitle: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<"To Maximize Investors' Return.">;
    missionTitle: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<'Mission'>;
    title: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<'The Navana Way'>;
    topImage: Schema.Attribute.Media<'images'>;
    visionDescription: Schema.Attribute.Text &
      Schema.Attribute.DefaultTo<'We believe that excellence is a journey which can be achieved by delivering superior results. Delivering superior results requires high performance, i.e., a strong sense of urgency, a drive for results and a passion for continuous improvements.'>;
    visionSubtitle: Schema.Attribute.String &
      Schema.Attribute.DefaultTo<'To Achieve Excellence With High Performance'>;
    visionTitle: Schema.Attribute.String & Schema.Attribute.DefaultTo<'Vision'>;
  };
}

export interface NewsItemNewsItem extends Struct.ComponentSchema {
  collectionName: 'components_news_items';
  info: {
    description: 'Reusable component for individual news/blog items';
    displayName: 'News Item';
  };
  attributes: {
    date: Schema.Attribute.Date & Schema.Attribute.Required;
    image: Schema.Attribute.Media<'images'>;
    link: Schema.Attribute.String & Schema.Attribute.DefaultTo<'#'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
    type: Schema.Attribute.Enumeration<['Article', 'Blog']> &
      Schema.Attribute.Required &
      Schema.Attribute.DefaultTo<'Blog'>;
  };
}

export interface OfficeAddressOfficeAddress extends Struct.ComponentSchema {
  collectionName: 'components_office_address_office_addresses';
  info: {
    description: 'Reusable component for office location information';
    displayName: 'Office Address';
  };
  attributes: {
    address: Schema.Attribute.Text & Schema.Attribute.Required;
    email: Schema.Attribute.Email & Schema.Attribute.Required;
    locationUrl: Schema.Attribute.String & Schema.Attribute.DefaultTo<'#'>;
    phone: Schema.Attribute.String & Schema.Attribute.Required;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface PortfolioImagePortfolioImage extends Struct.ComponentSchema {
  collectionName: 'components_designo_portfolio_images';
  info: {
    description: 'Portfolio gallery image for designo page';
    displayName: 'Portfolio Image';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
  };
}

export interface ProjectItemProjectItem extends Struct.ComponentSchema {
  collectionName: 'components_designo_project_items';
  info: {
    description: 'Project card for designo page';
    displayName: 'Project Item';
  };
  attributes: {
    description: Schema.Attribute.String & Schema.Attribute.Required;
    image: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface PropertyCategoryItemPropertyCategoryItem
  extends Struct.ComponentSchema {
  collectionName: 'components_property_category_item_property_category_items';
  info: {
    description: 'A property category with image sequence';
    displayName: 'Property Category Item';
  };
  attributes: {
    displayOrder: Schema.Attribute.Integer & Schema.Attribute.DefaultTo<0>;
    imageSequence: Schema.Attribute.Media<'images', true>;
    link: Schema.Attribute.String;
    mainImage: Schema.Attribute.Media<'images'>;
    property: Schema.Attribute.Relation<'oneToOne', 'api::property.property'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface PropertyFeatureItemPropertyFeatureItem
  extends Struct.ComponentSchema {
  collectionName: 'components_property_feature_items';
  info: {
    description: 'Feature item for property details page';
    displayName: 'Property Feature Item';
  };
  attributes: {
    icon: Schema.Attribute.Media<'images'>;
    label: Schema.Attribute.String & Schema.Attribute.Required;
    value: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface PropertyPortfolioImageItemPropertyPortfolioImageItem
  extends Struct.ComponentSchema {
  collectionName: 'components_property_portfolio_image_items';
  info: {
    description: 'Portfolio image for property gallery';
    displayName: 'Property Portfolio Image Item';
  };
  attributes: {
    image: Schema.Attribute.Media<'images'>;
  };
}

export interface ServiceItemServiceItem extends Struct.ComponentSchema {
  collectionName: 'components_designo_service_items';
  info: {
    description: 'Service card for designo page';
    displayName: 'Service Item';
  };
  attributes: {
    boxColor: Schema.Attribute.String;
    description: Schema.Attribute.Text & Schema.Attribute.Required;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface SharedHero extends Struct.ComponentSchema {
  collectionName: 'components_shared_heroes';
  info: {
    displayName: 'Hero';
    icon: 'globe';
  };
  attributes: {
    bigImageDesktop: Schema.Attribute.Media<'images'>;
    description: Schema.Attribute.Text;
    imageMobile: Schema.Attribute.Media<'images'>;
    smallImageDesktop: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String;
  };
}

export interface SharedHeroDesigno extends Struct.ComponentSchema {
  collectionName: 'components_shared_hero_designos';
  info: {
    displayName: 'HeroDesigno';
    icon: 'crown';
  };
  attributes: {
    bigImageDesktop: Schema.Attribute.Media<'images'>;
    description: Schema.Attribute.Text;
    imageMobile: Schema.Attribute.Media<'images'>;
    logo: Schema.Attribute.Media<'images'>;
    smallImageDesktop: Schema.Attribute.Media<'images'>;
  };
}

export interface SharedSeo extends Struct.ComponentSchema {
  collectionName: 'components_shared_seos';
  info: {
    displayName: 'SEO';
    icon: 'code';
  };
  attributes: {
    description: Schema.Attribute.Text;
    image: Schema.Attribute.Media<'images'>;
    keywords: Schema.Attribute.Text;
    title: Schema.Attribute.String;
  };
}

export interface SocialMediaLinkSocialMediaLink extends Struct.ComponentSchema {
  collectionName: 'components_footer_social_media_links';
  info: {
    description: 'Social media icon with link';
    displayName: 'Social Media Link';
  };
  attributes: {
    link: Schema.Attribute.String;
    social: Schema.Attribute.Enumeration<
      ['Facebook', 'Linkedin', 'Instagram', 'Youtube']
    >;
  };
}

export interface StatisticItemStatisticItem extends Struct.ComponentSchema {
  collectionName: 'components_designo_statistic_items';
  info: {
    description: 'Statistics card for designo page';
    displayName: 'Statistic Item';
  };
  attributes: {
    extraClass: Schema.Attribute.String;
    title: Schema.Attribute.String & Schema.Attribute.Required;
    value: Schema.Attribute.Integer & Schema.Attribute.Required;
  };
}

export interface ValueItemValueItem extends Struct.ComponentSchema {
  collectionName: 'components_value_items';
  info: {
    description: 'Reusable component for value cards';
    displayName: 'Value Item';
  };
  attributes: {
    description: Schema.Attribute.Text & Schema.Attribute.Required;
    image: Schema.Attribute.Media<'images'>;
    title: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

export interface VerticalStackCardItemVerticalStackCardItem
  extends Struct.ComponentSchema {
  collectionName: 'components_fmd_vertical_stack_card_items';
  info: {
    description: 'Item for vertical stack cards in FMD additional services';
    displayName: 'Vertical Stack Card Item';
  };
  attributes: {
    icon: Schema.Attribute.Media<'images'>;
    text: Schema.Attribute.String & Schema.Attribute.Required;
  };
}

declare module '@strapi/strapi' {
  export module Public {
    export interface ComponentSchemas {
      'additional-service-image.additional-service-image': AdditionalServiceImageAdditionalServiceImage;
      'amenity-grid-item.amenity-grid-item': AmenityGridItemAmenityGridItem;
      'amenity-slider-item.amenity-slider-item': AmenitySliderItemAmenitySliderItem;
      'award-item.award-item': AwardItemAwardItem;
      'bespoke-project-item.bespoke-project-item': BespokeProjectItemBespokeProjectItem;
      'business-unit-item.business-unit-item': BusinessUnitItemBusinessUnitItem;
      'client-review.client-review': ClientReviewClientReview;
      'excellence-slide-item.excellence-slide-item': ExcellenceSlideItemExcellenceSlideItem;
      'featured-property-item.featured-property-item': FeaturedPropertyItemFeaturedPropertyItem;
      'fmd-service-item.fmd-service-item': FmdServiceItemFmdServiceItem;
      'footer-menu-column.footer-menu-column': FooterMenuColumnFooterMenuColumn;
      'footer-menu-item.footer-menu-item': FooterMenuItemFooterMenuItem;
      'guiding-principle-item.guiding-principle-item': GuidingPrincipleItemGuidingPrincipleItem;
      'homepage.brand-commitment': HomepageBrandCommitment;
      'homepage.hero': HomepageHero;
      'latest-project-item.latest-project-item': LatestProjectItemLatestProjectItem;
      'leader-item.leader-item': LeaderItemLeaderItem;
      'menu-item.menu-item': MenuItemMenuItem;
      'narrative-block.narrative-block': NarrativeBlockNarrativeBlock;
      'narrative-image.narrative-image': NarrativeImageNarrativeImage;
      'narrative.narrative': NarrativeNarrative;
      'navana-way-section.navana-way-section': NavanaWaySectionNavanaWaySection;
      'news-item.news-item': NewsItemNewsItem;
      'office-address.office-address': OfficeAddressOfficeAddress;
      'portfolio-image.portfolio-image': PortfolioImagePortfolioImage;
      'project-item.project-item': ProjectItemProjectItem;
      'property-category-item.property-category-item': PropertyCategoryItemPropertyCategoryItem;
      'property-feature-item.property-feature-item': PropertyFeatureItemPropertyFeatureItem;
      'property-portfolio-image-item.property-portfolio-image-item': PropertyPortfolioImageItemPropertyPortfolioImageItem;
      'service-item.service-item': ServiceItemServiceItem;
      'shared.hero': SharedHero;
      'shared.hero-designo': SharedHeroDesigno;
      'shared.seo': SharedSeo;
      'social-media-link.social-media-link': SocialMediaLinkSocialMediaLink;
      'statistic-item.statistic-item': StatisticItemStatisticItem;
      'value-item.value-item': ValueItemValueItem;
      'vertical-stack-card-item.vertical-stack-card-item': VerticalStackCardItemVerticalStackCardItem;
    }
  }
}
