import { PropertyValueMap, TemplateResult } from 'lit';
import { DateTime } from 'luxon';
import OmniElement from '../core/OmniElement.js';
import '../icons/ChevronLeft.icon.js';
import '../icons/ChevronRight.icon.js';
/**
* Calendar component to set specific date.
*
* @import
* ```js
* import '@capitec/omni-components/calendar';
* ```
*
* @example
* ```html
*
*
* ```
* @element omni-calendar
*
* Registry of all properties defined by the component.
*
* @fires {CustomEvent<{}>} change - Dispatched when a date is selected.
*
* @slot left-control - Replaces the icon for the left control button.
* @slot right-control - Replaces the icon for the right control button.
*
* @cssprop --omni-calendar-box-shadow - Calendar container box shadow.
* @cssprop --omni-calendar-border-radius - Calendar container border radius.
* @cssprop --omni-calendar-z-index - Calendar container z-index.
*
* @cssprop --omni-calendar-controls-padding - Calendar control bar padding.
* @cssprop --omni-calendar-controls-border-bottom - Calendar control bar border bottom.
* @cssprop --omni-calendar-controls-background-color - Calendar control bar background color.
* @cssprop --omni-calendar-controls-min-height - Calendar control bar minimum height.
*
* @cssprop --omni-calendar-control-color - Calendar control bar control color.
* @cssprop --omni-calendar-control-width - Calendar control bar control width.
*
* @cssprop --omni-calendar-control-label-width - Calender month/year display width.
* @cssprop --omni-calendar-control-label-color - Calendar month/year display color.
* @cssprop --omni-calendar-control-label-font-size - Calendar month/year display font size.
* @cssprop --omni-calendar-control-label-font-weight - Calendar month/year display font weight.
*
* @cssprop --omni-calendar-control-label-hover-background-color - Calendar month/year display background color.
*
* @cssprop --omni-calendar-day-grid-template-columns - Calendar day grid template columns.
* @cssprop --omni-calendar-day-grid-auto-rows - Calendar day grid auto rows.
* @cssprop --omni-calendar-day-grid-padding - Calendar day grid padding.
* @cssprop --omni-calendar-day-grid-line-height - Calendar day grid line height.
* @cssprop --omni-calendar-day-grid-background-color - Calendar day grid background color.
*
* @cssprop --omni-calendar-month-grid-template-columns - Calendar month grid template columns.
* @cssprop --omni-calendar-month-grid-auto-rows - Calendar month grid auto rows.
* @cssprop --omni-calendar-months-grid-padding - Calendar month grid padding.
* @cssprop --omni-calendar-months-grid-background-color - Calendar month grid background color.
*
* @cssprop --omni-calendar-year-grid-template-columns - Calendar year grid template columns.
* @cssprop --omni-calendar-year-grid-auto-rows - Calendar year grid auto rows.
* @cssprop --omni-calendar-year-grid-padding - Calendar year grid padding.
* @cssprop --omni-calendar-year-grid-background-color - Calendar year grid background color.
*
* @cssprop --omni-calendar-month-button-padding - Calendar month button padding.
* @cssprop --omni-calendar-month-button-background-color - Calendar month button background color.
* @cssprop --omni-calendar-month-button-border-color - Calendar month button border color.
* @cssprop --omni-calendar-month-button-border-width - Calendar month button border width.
* @cssprop --omni-calendar-month-button-border-radius - Calendar month button border radius.
* @cssprop --omni-calendar-month-button-margin-left - Calendar month button margin left.
* @cssprop --omni-calendar-month-button-margin-right - Calendar month button margin right.
* @cssprop --omni-calendar-month-button-color - Calendar month button color
* @cssprop --omni-calendar-month-button-font-family - Calendar month button font family.
* @cssprop --omni-calendar-month-button-font-size - Calendar month button font size.
* @cssprop --omni-calendar-month-button-font-weight - Calendar month button font weight.
* @cssprop --omni-calendar-month-button-line-height - Calendar month button line height.
*
* @cssprop --omni-calendar-month-button-selected-border-radius - Calendar month selected border radius.
* @cssprop --omni-calendar-month-button-selected-background-color - Calendar month button selected background color.
* @cssprop --omni-calendar-month-button-selected-border-color - Calendar month button selected border color.
* @cssprop --omni-calendar-month-button-selected-border-width - Calendar month selected border width.
* @cssprop --omni-calendar-month-button-selected-color - Calendar month selected color.
*
* @cssprop --omni-calendar-month-button-hover-background-color - Calendar month button hover background color.
*
* @cssprop --omni-calendar-year-button-padding - Calendar year button padding.
* @cssprop --omni-calendar-year-button-background-color - Calendar year button background color.
* @cssprop --omni-calendar-year-button-border-color - Calendar year button border color.
* @cssprop --omni-calendar-year-button-border-width - Calendar year button border width.
* @cssprop --omni-calendar-year-button-border-radius - Calendar year button border radius.
* @cssprop --omni-calendar-year-button-margin-left - Calendar year button margin left.
* @cssprop --omni-calendar-year-button-margin-right - Calendar year button margin right.
* @cssprop --omni-calendar-year-button-color - Calendar year button color.
* @cssprop --omni-calendar-year-button-font-family - Calendar year button font family.
* @cssprop --omni-calendar-year-button-font-size - Calendar year button font size.
* @cssprop --omni-calendar-year-button-font-weight - Calendar year button font weight.
* @cssprop --omni-calendar-year-button-line-height - Calendar year button line height.
*
* @cssprop --omni-calendar-year-button-selected-border-radius - Calendar selected year button border radius.
* @cssprop --omni-calendar-year-button-selected-background-color - Calendar selected year button background color.
* @cssprop --omni-calendar-year-button-selected-border-color - Calendar selected year button border color.
* @cssprop --omni-calendar-year-button-selected-border-width - Calendar selected year button border width.
* @cssprop --omni-calendar-year-button-selected-color - Calendar year button selected color.
*
* @cssprop --omni-calendar-year-button-hover-background-color - Calendar year button hover background color.
*
* @cssprop --omni-calendar-day-name-font-color - Calendar day name font color.
* @cssprop --omni-calendar-day-name-font-weight - Calendar day name font weight.
* @cssprop --omni-calendar-day-name-font-size - Calendar day name font size.
* @cssprop --omni-calendar-day-name-width - Calendar day name width.
* @cssprop --omni-calendar-day-name-height - Calendar day name height.
*
* @cssprop --omni-calendar-day-button-width - Calendar day button width.
* @cssprop --omni-calendar-day-button-height - Calendar day button height.
*
* @cssprop --omni-calendar-day-button-font-size - Calendar day button font size.
* @cssprop --omni-calendar-day-button-font-weight - Calendar day button font weight.
* @cssprop --omni-calendar-day-button-line-height - Calendar day button line height.
* @cssprop --omni-calendar-day-button-color - Calendar day button color.
*
* @cssprop --omni-calendar-day-button-hover-background-color - Calendar day button hover background color.
*
* @cssprop --omni-calendar-day-button-excluded-font-color - Calendar day button excluded color.
*
* @cssprop --omni-calendar-day-current-button-border - Calendar day button current border.
* @cssprop --omni-calendar-day-current-button-border-radius - Calendar day button current border radius.
* @cssprop --omni-calendar-day-current-button-width - Calendar day button current width.
* @cssprop --omni-calendar-day-current-button-height - Calendar day button current height.
*
* @cssprop --omni-calendar-day-selected-button-color - Calendar day button selected color.
* @cssprop --omni-calendar-day-selected-button-border-radius - Calendar day button selected border radius.
* @cssprop --omni-calendar-day-selected-button-background-color - Calendar day button selected background color.
* @cssprop --omni-calendar-day-selected-button-width - Calendar day button selected width.
* @cssprop --omni-calendar-day-selected-button-height - Calendar day button selected height.
*
*/
export declare class Calendar extends OmniElement {
private defaultLocale;
/**
* The locale used for formatting the output of the Calendar.
* @attr
*/
locale: string;
/**
* The minimum date inclusively allowed to be selected.
* @attr [min-date]
*/
minDate?: string;
/**
* The maximum date inclusively allowed to be selected.
* @attr [max-date]
*/
maxDate?: string;
/**
* The value of the Calendar component
* @attr
*/
value?: string;
private date;
private _selectedMonth;
private _selectedYear;
private _selectedDecade;
private _showState;
private _months;
private _days;
private _updateDateVariablesUpdate;
protected shouldUpdate(_changedProperties: PropertyValueMap | Map): boolean;
_updateDateVariables(): void;
_dateSelect(e: Event, date: DateTime): void;
_changeStateSelection(): void;
_goToNext(): void;
_goToPrevious(): void;
_selectYear(year: number): void;
_selectMonth(month: number): void;
_getRange(start: number, end: number, step?: number): number[];
_getDecadeInterval(year: number): number[];
private _isOutOfRange;
static get styles(): import("lit").CSSResultGroup[];
render(): TemplateResult;
_renderSelector(): TemplateResult<1>;
_renderControlBar(): TemplateResult<1>;
_renderDaysGrid(): TemplateResult<1>;
_renderDayNameBar(): TemplateResult<1>;
_renderCalendar(): TemplateResult<1>;
_renderDays(startDate: DateTime, numberOfDays: number): TemplateResult<1>[];
_renderDay(date: DateTime): TemplateResult<1>;
_renderMonthsGrid(): TemplateResult<1>;
_renderMonthButtons(): TemplateResult<1>[];
_renderMonthButton(month: string, index: number): TemplateResult<1>;
_renderYearsGrid(): TemplateResult<1>;
_renderYearButtons(): TemplateResult<1>[];
_renderYearButton(year: number): TemplateResult<1>;
}
declare global {
interface HTMLElementTagNameMap {
'omni-calendar': Calendar;
}
}
//# sourceMappingURL=Calendar.d.ts.map