{"version":3,"file":"eui-components-eui-banner.mjs","sources":["../../eui-banner/eui-banner-cta.component.ts","../../eui-banner/eui-banner-description.component.ts","../../eui-banner/eui-banner-title.component.ts","../../eui-banner/eui-banner-video.component.ts","../../eui-banner/eui-banner.component.ts","../../eui-banner/eui-banner.component.html","../../eui-banner/index.ts","../../eui-banner/eui-components-eui-banner.ts"],"sourcesContent":["import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Content projection component for displaying call-to-action elements within eui-banner.\n * Provides consistent styling and positioning for action buttons or links in banner contexts.\n * Must be used as a child of eui-banner component.\n * Typically contains buttons, links, or other interactive elements that prompt user action.\n * \n * @usageNotes\n * ```html\n * <eui-banner imageUrl=\"image.jpg\">\n *   <eui-banner-title>Join Us</eui-banner-title>\n *   <eui-banner-description>Be part of something great</eui-banner-description>\n *   <eui-banner-cta>\n *     <button euiButton euiCTAButton>Get Started</button>\n *   </eui-banner-cta>\n * </eui-banner>\n * ```\n *\n * ### Accessibility\n * - CTA buttons should have descriptive, action-oriented labels\n * - Interactive elements are keyboard accessible\n * - Ensure sufficient contrast for buttons on banner backgrounds\n *\n * ### Notes\n * - Must be direct child of eui-banner component\n * - Typically placed after title and description\n * - Can contain buttons, links, or button groups\n * - Automatically positioned according to banner layout\n * - Works with euiInverse for proper button styling on dark backgrounds\n */\n@Component({\n    selector: 'eui-banner-cta',\n    template: '<ng-content/>',\n    styleUrl: './eui-banner-cta.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiBannerCtaComponent {\n    /**\n     * Binds the class to the component.\n     *\n     * @default 'eui-banner-cta'\n     */\n    @HostBinding('class') string = 'eui-banner-cta';\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Content projection component for displaying descriptive text within eui-banner.\n * Provides consistent typography and styling for banner description content.\n * Must be used as a child of eui-banner component.\n * Accepts text, paragraphs, or inline elements through content projection.\n * \n * @usageNotes\n * ```html\n * <eui-banner imageUrl=\"image.jpg\">\n *   <eui-banner-title>Innovation Hub</eui-banner-title>\n *   <eui-banner-description>\n *     Explore cutting-edge solutions and collaborate with experts.\n *   </eui-banner-description>\n * </eui-banner>\n * ```\n *\n * ### Accessibility\n * - Description text is readable by screen readers after title\n * - Provides additional context about banner content\n * - Ensure sufficient contrast with background images\n *\n * ### Notes\n * - Must be direct child of eui-banner component\n * - Typically placed after eui-banner-title\n * - Styled as secondary/body text\n * - Automatically adapts to banner size variants\n * - Works with euiInverse for light text on dark backgrounds\n */\n@Component({\n    selector: 'eui-banner-description',\n    template: '<ng-content/>',\n    styleUrl: './eui-banner-description.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiBannerDescriptionComponent {\n    /**\n     * Binds the class to the component.\n     *\n     * @default 'eui-banner-description'\n     */\n    @HostBinding('class') string = 'eui-banner-description';\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Content projection component for displaying the title within eui-banner.\n * Provides consistent typography and styling for banner title text.\n * Must be used as a child of eui-banner component.\n * Accepts text or inline elements through content projection.\n * \n * @usageNotes\n * ```html\n * <eui-banner imageUrl=\"image.jpg\">\n *   <eui-banner-title>Welcome to Our Platform</eui-banner-title>\n *   <eui-banner-description>Start your journey today</eui-banner-description>\n * </eui-banner>\n * ```\n *\n * ### Accessibility\n * - Title text is readable by screen readers in natural order\n * - Use concise, descriptive titles that convey banner purpose\n * - Ensure sufficient contrast with background when using images\n *\n * ### Notes\n * - Must be direct child of eui-banner component\n * - Styled as prominent heading text\n * - Automatically adapts to banner size variants\n * - Works with euiInverse for light text on dark backgrounds\n */\n@Component({\n    selector: 'eui-banner-title',\n    template: '<ng-content/>',\n    styleUrl: './eui-banner-title.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiBannerTitleComponent {\n    /**\n     * Binds the class to the component.\n     *\n     * @default 'eui-banner-title'\n     */\n    @HostBinding('class') string = 'eui-banner-title';\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * @description\n * Content projection component for embedding video content within eui-banner.\n * Provides consistent styling and layout for video elements in banner contexts.\n * Must be used as a child of eui-banner component with isVideoBanner enabled.\n * Accepts any video-related content through content projection.\n * \n * @usageNotes\n * ```html\n * <eui-banner [isVideoBanner]=\"true\" euiSizeL>\n *   <eui-banner-video>\n *     <video poster=\"thumbnail.jpg\" autoplay loop muted>\n *       <source src=\"video.mp4\" type=\"video/mp4\">\n *     </video>\n *   </eui-banner-video>\n *   <eui-banner-title>Innovation in Action</eui-banner-title>\n *   <eui-banner-description>Watch our story unfold</eui-banner-description>\n * </eui-banner>\n * ```\n *\n * ### Accessibility\n * - Video should include captions for users with hearing impairments\n * - Provide poster image for video thumbnail\n * - Use muted attribute for autoplay videos to comply with accessibility guidelines\n * - Consider providing alternative text description of video content\n *\n * ### Notes\n * - Must be direct child of eui-banner component\n * - Parent banner should have isVideoBanner set to true\n * - Video element should include poster attribute for initial display\n * - Use autoplay, loop, and muted attributes for background videos\n * - Video is displayed as full-width background\n * - Content (title, description) overlays the video\n * - Consider video file size and format for performance\n */\n@Component({\n    selector: 'eui-banner-video',\n    template: '<ng-content/>',\n    styleUrl: './eui-banner-video.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EuiBannerVideoComponent {\n    /**\n     * Binds the class to the component.\n     *\n     * @default 'eui-banner-video'\n     */\n    @HostBinding('class') string = 'eui-banner-video';\n}\n","import {\n    Component,\n    HostBinding,\n    ChangeDetectionStrategy,\n    Input,\n    inject,\n    booleanAttribute,\n} from '@angular/core';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\n/**\n * @description\n * Banner component for displaying prominent content sections with images or videos across the full width of a page.\n * Provides flexible positioning options (top, center, bottom) and supports inverse color schemes.\n * Can display static images or video backgrounds with content overlay.\n * Supports size variants (S, M, L) and outline styling through `BaseStatesDirective`.\n * \n * @usageNotes\n * #### Basic banner with image\n * ```html\n * <eui-banner imageUrl=\"https://example.com/image.jpg\">\n *   <eui-banner-title>Welcome</eui-banner-title>\n *   <eui-banner-description>Discover our services</eui-banner-description>\n * </eui-banner>\n * ```\n *\n * #### Banner with CTA and positioning\n * ```html\n * <eui-banner imageUrl=\"image.jpg\" [euiPositionCenter]=\"true\" [euiInverse]=\"true\">\n *   <eui-banner-title>Get Started</eui-banner-title>\n *   <eui-banner-description>Join us today</eui-banner-description>\n *   <eui-banner-cta>\n *     <button euiButton euiCTAButton>Sign Up</button>\n *   </eui-banner-cta>\n * </eui-banner>\n * ```\n *\n * #### Video banner\n * ```html\n * <eui-banner [isVideoBanner]=\"true\" euiSizeL>\n *   <eui-banner-video>\n *     <video autoplay loop muted>\n *       <source src=\"video.mp4\" type=\"video/mp4\">\n *     </video>\n *   </eui-banner-video>\n *   <eui-banner-title>Innovation</eui-banner-title>\n * </eui-banner>\n * ```\n *\n * ### Accessibility\n * - No ARIA landmark role assigned; banner is a visual component\n * - Ensure banner images have meaningful content or are decorative\n * - Use euiInverse for better text contrast on dark images\n * - Video content should include captions when containing important information\n * - CTA buttons should have descriptive labels\n *\n * ### Notes\n * - Size variants: euiSizeS, euiSizeM (default), euiSizeL control banner height\n * - Position options: euiPositionTop, euiPositionCenter (default is bottom)\n * - euiInverse applies light text on dark background for better image contrast\n * - imageUrl displays static background image\n * - isVideoBanner enables video background mode, use with eui-banner-video\n * - euiOutline adds border outline styling\n * - Content is overlaid on background image/video\n * - Typically contains eui-banner-title, eui-banner-description, and optionally eui-banner-cta\n */\n@Component({\n    selector: 'eui-banner',\n    templateUrl: './eui-banner.component.html',\n    styleUrl: './eui-banner.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiSizeS',\n                'euiSizeM',\n                'euiSizeL',\n                'euiSizeVariant',\n                'euiOutline',\n            ],\n        },\n    ],\n})\nexport class EuiBannerComponent {\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-banner'),\n            this.euiPositionTop ? 'eui-banner--top': '',\n            this.euiPositionCenter ? 'eui-banner--center': '',\n            this.euiInverse ? 'eui-banner--inverse': '',\n        ].join(' ').trim();\n    }\n\n    /**\n     * Data attribute value for end-to-end testing identification.\n     * Applied as data-e2e attribute on the host element.\n     * @default 'eui-banner'\n     */\n    @HostBinding('attr.data-e2e') @Input() e2eAttr = 'eui-banner';\n\n    /**\n     * Positions the banner content at the top of the banner area.\n     * When true, aligns content to the top with appropriate spacing.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiPositionTop = false;    \n\n    /**\n     * Positions the banner content at the center of the banner area.\n     * When true, vertically centers content within the banner.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiPositionCenter = false;    \n\n    /**\n     * Applies inverse color scheme to the banner.\n     * When true, uses light text on dark background for better contrast with images.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) euiInverse = false;    \n\n    /**\n     * Enables video banner mode for displaying video backgrounds.\n     * When true, configures banner to support video content instead of static images.\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isVideoBanner = false;    \n\n    /**\n     * URL path to the banner background image.\n     * When provided, displays the image as the banner background.\n     * Optional.\n     */\n    @Input() imageUrl: string;\n\n    protected baseStatesDirective = inject(BaseStatesDirective);\n}\n","@if (imageUrl) {\n    <figure class=\"eui-banner__picture-container\" aria-hidden=\"true\">\n        <picture class=\"eui-banner__picture\">\n            <img class=\"eui-banner__image\" src=\"{{imageUrl}}\" alt=\"\">\n        </picture>\n    </figure>\n} @else {\n    <ng-content select=\"eui-banner-video\"/>\n}\n\n<div class=\"eui-banner__info\">\n    <div class=\"eui-banner__container\">\n        <ng-content select=\"eui-banner-title\"/>\n        <ng-content select=\"eui-banner-description\"/>\n        <ng-content select=\"eui-banner-cta\"/>\n    </div>\n</div>","import { EuiBannerCtaComponent } from './eui-banner-cta.component';\nimport { EuiBannerDescriptionComponent } from './eui-banner-description.component';\nimport { EuiBannerTitleComponent } from './eui-banner-title.component';\nimport { EuiBannerVideoComponent } from './eui-banner-video.component';\nimport { EuiBannerComponent } from './eui-banner.component';\n\nexport * from './eui-banner.component';\nexport * from './eui-banner-cta.component';\nexport * from './eui-banner-description.component';\nexport * from './eui-banner-title.component';\nexport * from './eui-banner-video.component';\n\nexport const EUI_BANNER = [\n    EuiBannerComponent,\n    EuiBannerTitleComponent,\n    EuiBannerDescriptionComponent,\n    EuiBannerCtaComponent,\n    EuiBannerVideoComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}