import { type PropType } from "vue"; import type { TimeRange, TimeRangePreset } from "./timeRange.js"; export type { TimeRange, TimeRangeMode, TimeRangePreset } from "./timeRange.js"; export type TimeRangePickerSize = "sm" | "md" | "lg"; export type TimeRangePickerPlacement = "bottom-start" | "bottom-end" | "top-start" | "top-end"; export type TimeRangePickerAlign = "start" | "end" | "center"; export type TimeRangePickerTimeFormat = "24" | "12"; export type TimeRangePickerProps = { /** `v-model` value. */ modelValue?: TimeRange; /** Svelte/React-canonical alias for `modelValue`. */ value?: TimeRange; defaultValue?: TimeRange; onChange?: (value: TimeRange) => void; presets?: TimeRangePreset[]; min?: number; max?: number; locale?: string; timeFormat?: TimeRangePickerTimeFormat; timeStep?: number; calendarMonths?: 1 | 2; disabled?: boolean; label?: string; placement?: TimeRangePickerPlacement; align?: TimeRangePickerAlign; size?: TimeRangePickerSize; class?: string; formatRange?: (value: TimeRange, locale: string) => string; formatPresetLabel?: (token: string, locale: string) => string; }; /** * New-Relic-style time range selector. Trigger button showing the current * range → popover with two tabs (Relative | Custom). Relative = preset list, * resolves+emits+closes immediately. Custom = absolute range editor (calendar * range + a time picker per bound + typed inputs), STAGED behind Apply. * * Ported from TimeRangePicker.svelte. Composes EXISTING Vue DS primitives: * ContentSwitcher, SelectableList/SelectableRow, Calendar, TimePicker, Input, * Button. DEVIATION from the Svelte reference: MenuPopover.ts in this package * is a self-contained trigger+dialog widget (no `trigger` prop, no * JS-computed viewport positioning, no outside-click/Escape auto-dismiss, and * it renders its role="dialog" wrapper unconditionally) — it does not support * the "external trigger + positioned panel" shape this component needs. So, * like DatePicker.ts and Dropdown.ts in this same package, TimeRangePicker * owns its own open state, outside-pointerdown + Escape dismissal, and a * CSS-positioned (position:absolute) panel — this mirrors MenuPopover's ROLE * (dialog panel, placement classes) without depending on its component API. * Focus trap + focus-return to the trigger are implemented here too (Vue's * MenuPopover/Modal don't trap focus either, matching the Svelte doc note). */ export declare const TimeRangePicker: import("vue").DefineComponent; default: undefined; }; value: { type: PropType; default: undefined; }; defaultValue: { type: PropType; default: undefined; }; onChange: { type: PropType<(value: TimeRange) => void>; default: undefined; }; presets: { type: PropType; default: () => string[]; }; min: { type: NumberConstructor; default: undefined; }; max: { type: NumberConstructor; default: undefined; }; locale: { type: StringConstructor; default: string; }; timeFormat: { type: PropType; default: string; }; timeStep: { type: NumberConstructor; default: number; }; calendarMonths: { type: PropType<1 | 2>; default: number; }; disabled: { type: BooleanConstructor; default: boolean; }; label: { type: StringConstructor; default: undefined; }; placement: { type: PropType; default: string; }; align: { type: PropType; default: undefined; }; size: { type: PropType; default: string; }; class: { type: StringConstructor; default: undefined; }; formatRange: { type: PropType<(value: TimeRange, locale: string) => string>; default: undefined; }; formatPresetLabel: { type: PropType<(token: string, locale: string) => string>; default: undefined; }; }>, () => import("vue").VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "update:modelValue")[], "change" | "update:modelValue", import("vue").PublicProps, Readonly; default: undefined; }; value: { type: PropType; default: undefined; }; defaultValue: { type: PropType; default: undefined; }; onChange: { type: PropType<(value: TimeRange) => void>; default: undefined; }; presets: { type: PropType; default: () => string[]; }; min: { type: NumberConstructor; default: undefined; }; max: { type: NumberConstructor; default: undefined; }; locale: { type: StringConstructor; default: string; }; timeFormat: { type: PropType; default: string; }; timeStep: { type: NumberConstructor; default: number; }; calendarMonths: { type: PropType<1 | 2>; default: number; }; disabled: { type: BooleanConstructor; default: boolean; }; label: { type: StringConstructor; default: undefined; }; placement: { type: PropType; default: string; }; align: { type: PropType; default: undefined; }; size: { type: PropType; default: string; }; class: { type: StringConstructor; default: undefined; }; formatRange: { type: PropType<(value: TimeRange, locale: string) => string>; default: undefined; }; formatPresetLabel: { type: PropType<(token: string, locale: string) => string>; default: undefined; }; }>> & Readonly<{ onChange?: ((...args: any[]) => any) | undefined; "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined; }>, { align: TimeRangePickerAlign; size: TimeRangePickerSize; class: string; onChange: (value: TimeRange) => void; label: string; disabled: boolean; max: number; min: number; locale: string; value: TimeRange; modelValue: TimeRange; placement: TimeRangePickerPlacement; defaultValue: TimeRange; presets: TimeRangePreset[]; timeFormat: TimeRangePickerTimeFormat; timeStep: number; calendarMonths: 1 | 2; formatRange: (value: TimeRange, locale: string) => string; formatPresetLabel: (token: string, locale: string) => string; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; //# sourceMappingURL=TimeRangePicker.d.ts.map