import { LitElement } from 'lit';
import { BreadcrumbItem } from '../breadcrumb/breadcrumb.js';
import '../icon-button/icon-button.js';
import '../clock/clock.js';
import '../divider/divider.js';
import '../breadcrumb/breadcrumb.js';
import '../../icons/icon-menu-iec.js';
import '../../icons/icon-home.js';
import '../../icons/icon-close-google.js';
import '../../icons/icon-arrow-left-google.js';
import '../../icons/icon-arrow-right-google.js';
import '../../icons/icon-palette-day-night-iec.js';
import '../../icons/icon-applications.js';
import '../../icons/icon-more-vertical-google.js';
import '../../icons/icon-user.js';
export declare enum ObcTopBarMenuButtonIcon {
    Menu = "menu",
    Home = "home"
}
/**
 * `<obc-top-bar>` – A responsive top navigation bar component for application layouts.
 *
 * Provides a flexible, highly configurable top bar for application interfaces, supporting navigation, context display, quick actions, and status indicators. The top bar adapts to screen size and can show or hide elements such as menu, app icon, breadcrumbs, user/profile, clock, and alert notifications.
 *
 * Appears at the top of the UI, organizing primary navigation and contextual actions in a single, persistent region. Designed for use as the main app bar or header in multi-pane or dashboard-style layouts.
 *
 * ## Features
 * - **Configurable Sections:** Supports left and right-aligned groups for navigation, context, and actions.
 * - **Menu Button:** Optional menu button for opening navigation drawers or sidebars; can be styled as wide or regular.
 * - **App Icon Slot:** Customizable slot for displaying an application or brand icon.
 * - **App Title & Page Name:** Displays the current application and page context.
 * - **Breadcrumbs:** Optional breadcrumb navigation for hierarchical context (in settings mode).
 * - **Command Button Slot:** Slot for inserting a primary command/action button.
 * - **Alert/Notification Area:** Slot for alert indicators, notification badges, or custom alert components.
 * - **Dimming Button:** Optional button for toggling display modes (e.g., day/night).
 * - **User/Profile Button:** Optional user icon for profile/account actions.
 * - **Apps Button:** Optional button for accessing additional applications or modules.
 * - **Clock & Date:** Optional digital clock and date display, responsive to screen size.
 * - **Responsive Layout:** Multiple breakpoint properties to control visibility and layout of elements based on viewport width.
 * - **Settings Mode:** Special mode with close, back, and forward navigation, breadcrumbs, and app title.
 * - **Tall Variant:** Optional increased height for touch or accessibility needs.
 * - **Inactive State:** Disables interactive elements and visually de-emphasizes the bar.
 *
 * ## Variants
 * - **Regular:** Standard top bar with menu, app icon, title, page name, and action slots.
 * - **Settings:** Shows close, back, forward buttons, breadcrumbs, and app title for configuration or settings screens.
 * - **Inactive:** Visually muted and disables interaction (e.g., when the app is locked or in a modal state).
 * - **Tall:** Increases the height of the bar for improved touch targets.
 *
 * ## Usage Guidelines
 * Use `<obc-top-bar>` as the persistent header for your application, providing navigation, context, and quick access to key actions or status. Configure which elements appear via boolean properties and slots. Adjust breakpoint properties to control responsive behavior for each section.
 *
 * - Place navigation, branding, and context (title, breadcrumbs) on the left; actions, alerts, and status (clock, user, apps) on the right.
 * - Use the `settings` property for configuration or setup screens to enable close/back/forward navigation and breadcrumbs.
 * - Use the `inactive` property to visually disable the bar and its actions when the app is not interactive.
 * - Insert custom icons or buttons using the `app-icon` and `command-button` slots.
 * - Use the `alerts` slot to display alert indicators, notification badges, or custom alert components.
 *
 * **TODO(designer):** Clarify recommended combinations of visible elements for different app contexts (e.g., when to show both user and apps buttons, or best practices for alert placement).
 *
 * ## Slots
 *
 * | Slot Name        | Renders When...                 | Purpose                                                        |
 * |------------------|---------------------------------|----------------------------------------------------------------|
 * | `app-icon`       | `showAppIcon` is true           | Custom icon representing the application or brand.             |
 * | `command-button` | Always (if provided)            | Primary command or action button for the current context.      |
 * | `alerts`         | Always (if provided)            | Area for alert indicators, notification badges, or alert items.|
 * | `clock`          | Always (if provided)            | Clock component for displaying the current time.              |
 *
 * ## Properties and Attributes
 * - `appTitle` (string): Sets the main application title (default: "App").
 * - `pageName` (string): Sets the current page or section name (default: "Page").
 * - `menuButtonActivated` (boolean): Highlights the menu button as active.
 * - `dimmingButtonActivated` (boolean): Highlights the dimming button as active.
 * - `appsButtonActivated` (boolean): Highlights the apps button as active.
 * - `leftMoreButtonActivated` (boolean): Highlights the left more button as active.
 * - `userButtonActivated` (boolean): Highlights the user button as active.
 * - `tall` (boolean): Increases the bar height for larger touch targets.
 * - `wideMenuButton` (boolean): Expands the menu button for wide-rail layouts.
 * - `showAppsButton` (boolean): Shows/hides the apps button.
 * - `showDimmingButton` (boolean): Shows/hides the dimming (day/night) button.
 * - `showUserButton` (boolean): Shows/hides the user/profile button.
 * - `showClock` (boolean): Shows/hides the clock.
 * - `showDate` (boolean): Shows/hides the date in the clock.
 * - `showAppIcon` (boolean): Shows/hides the app icon slot.
 * - `inactive` (boolean): Disables interaction and visually de-emphasizes the bar.
 * - `settings` (boolean): Enables settings mode (shows close, back, forward, breadcrumbs).
 * - `breadcrumbItems` (BreadcrumbItem[]): Array of breadcrumb items for navigation.
 * - Breakpoint properties (`appButtonBreakpointPx`, `dimmingButtonBreakpointPx`, `appTitleBreakpointPx`, `userButtonBreakpointPx`, `appIconBreakpointPx`): Control responsive visibility of each section.
 *
 * ## Events
 * - `menu-button-clicked` – Fired when the menu button is clicked.
 * - `dimming-button-clicked` – Fired when the dimming (day/night) button is clicked.
 * - `apps-button-clicked` – Fired when the apps button is clicked.
 * - `left-more-button-clicked` – Fired when the left more button is clicked.
 * - `user-button-clicked` – Fired when the user/profile button is clicked.
 * - `close` – Fired in settings mode when the close button is clicked.
 * - `back` – Fired in settings mode when the back button is clicked.
 * - `forward` – Fired in settings mode when the forward button is clicked.
 * - `emergency-brightness-start` – Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.
 * - `emergency-brightness-stop` – Fired when the menu button is released.
 *
 * ## Best Practices and Constraints
 * - Only show interactive elements relevant to the current context to avoid clutter.
 * - Use the `alerts` slot for transient or critical notifications; persistent alerts may require a different component.
 * - For accessibility, ensure that all interactive elements have appropriate labels and focus handling.
 * - Adjust breakpoint properties to optimize the layout for different device sizes.
 * - In settings mode, use breadcrumbs to provide clear navigation context.
 *
 * ## Example
 *
 * ```html
 * <obc-top-bar
 *   appTitle="My App"
 *   pageName="Dashboard"
 *   showAppsButton
 *   showDimmingButton
 *   showClock
 *   showUserButton
 *   showAppIcon
 * >
 *   <obi-placeholder slot="app-icon"></obi-placeholder>
 *   <obc-command-button slot="command-button"></obc-command-button>
 *   <obc-topbar-message-item slot="alerts"></obc-topbar-message-item>
 *   <obc-clock slot="clock"></obc-clock>
 * </obc-top-bar>
 * ```
 *
 * @slot app-icon - Custom icon representing the application or brand (shown when `showAppIcon` is true)
 * @slot command-button - Primary command/action button for the current context
 * @slot alerts - Area for alert indicators, notification badges, or alert items
 * @slot clock - Clock component for displaying the current time (shown when `showClock` is true)
 * @fires menu-button-clicked - Fired when the menu button is clicked
 * @fires dimming-button-clicked - Fired when the dimming (day/night) button is clicked
 * @fires apps-button-clicked - Fired when the apps button is clicked
 * @fires left-more-button-clicked - Fired when the left more button is clicked
 * @fires user-button-clicked - Fired when the user/profile button is clicked
 * @fires close - Fired in settings mode when the close button is clicked
 * @fires back - Fired in settings mode when the back button is clicked
 * @fires emergency-brightness-start - Fired when the menu button is held for 500ms. This should increase the brightness of the screen slowly. Used when the screen is too dark.
 * @fires emergency-brightness-stop - Fired when the menu button is released.
 * @fires breadcrumb-click {BreadcrumbClickEvent} - Fired when a breadcrumb item is clicked.
 */
export declare class ObcTopBar extends LitElement {
    /**
     * Sets the main application title displayed in the top bar.
     * @type {string}
     * @default "App"
     */
    appTitle: string;
    /**
     * Sets the current page or section name displayed in the top bar.
     * @type {string}
     * @default "Page"
     */
    pageName: string;
    menuButtonIcon: ObcTopBarMenuButtonIcon;
    /**
     * Highlights the menu button as active.
     * @type {boolean}
     * @default false
     */
    menuButtonActivated: boolean;
    /**
     * Highlights the dimming (day/night) button as active.
     * @type {boolean}
     * @default false
     */
    dimmingButtonActivated: boolean;
    /**
     * Highlights the apps button as active.
     * @type {boolean}
     * @default false
     */
    appsButtonActivated: boolean;
    /**
     * Highlights the left more button as active.
     * @type {boolean}
     * @default false
     */
    leftMoreButtonActivated: boolean;
    /**
     * Highlights the user/profile button as active.
     * @type {boolean}
     * @default false
     */
    userButtonActivated: boolean;
    /**
     * Disables the user/profile button.
     * @type {boolean}
     * @default false
     */
    userButtonDisabled: boolean;
    /**
     * Increases the height of the top bar for larger touch targets.
     * @type {boolean}
     * @default false
     */
    tall: boolean;
    /**
     * Expands the menu button for wide-rail layouts.
     * @type {boolean}
     * @default false
     */
    wideMenuButton: boolean;
    /**
     * Shows or hides the apps button.
     * @type {boolean}
     * @default false
     */
    showAppsButton: boolean;
    /**
     * Shows or hides the dimming (day/night) button.
     * @type {boolean}
     * @default false
     */
    showDimmingButton: boolean;
    /**
     * Shows or hides the user/profile button.
     * @type {boolean}
     * @default false
     */
    showUserButton: boolean;
    /**
     * Shows or hides the clock.
     * @type {boolean}
     * @default false
     */
    showClock: boolean;
    /**
     * Shows or hides the date in the clock display.
     * @type {boolean}
     * @default false
     */
    showDate: boolean;
    /**
     * Shows or hides the app icon slot.
     * @type {boolean}
     * @default false
     */
    showAppIcon: boolean;
    /**
     * Disables interaction and visually de-emphasizes the bar.
     * @type {boolean}
     * @default false
     */
    inactive: boolean;
    /**
     * Controls the breakpoint (in px) for showing/hiding the apps button.
     * @type {number}
     * @default 500
     */
    appButtonBreakpointPx: number;
    /**
     * Controls the breakpoint (in px) for showing/hiding the dimming button.
     * @type {number}
     * @default 500
     */
    dimmingButtonBreakpointPx: number;
    /**
     * Controls the breakpoint (in px) for showing/hiding the app title.
     * @type {number}
     * @default 500
     */
    appTitleBreakpointPx: number;
    /**
     * Controls the breakpoint (in px) for showing/hiding the user button.
     * @type {number}
     * @default 500
     */
    userButtonBreakpointPx: number;
    /**
     * Controls the breakpoint (in px) for showing/hiding the app icon.
     * @type {number}
     * @default 500
     */
    appIconBreakpointPx: number;
    /**
     * Enables settings mode, displaying close, back buttons, breadcrumbs, and app title.
     * @type {boolean}
     * @default false
     */
    settings: boolean;
    /**
     * Array of breadcrumb items for navigation (used in settings mode).
     * @type {BreadcrumbItem[]}
     * @default []
     */
    breadcrumbItems: BreadcrumbItem[];
    private dimmingButtonClicked;
    private appsButtonClicked;
    private leftMoreButtonClicked;
    private userButtonClicked;
    private leftButtonEvent;
    private leftButtonTimeout;
    private isLeftButtonDown;
    private isEmergencyBrightness;
    private leftButtonDown;
    private leftButtonUp;
    private leftButtonLeave;
    render(): import('lit-html').TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-top-bar': ObcTopBar;
    }
}
//# sourceMappingURL=top-bar.d.ts.map