import * as react_jsx_runtime from 'react/jsx-runtime'; import { ReactNode } from 'react'; import { UseSchedulingAdminResult } from '../../../hooks/useSchedulingAdmin.mjs'; import { SchedulingSettings, SchedulingVerticalPreset } from '../../../types/scheduling.mjs'; import { SchedulingTimezoneGroup } from '../../../lib/schedulingTimezones.mjs'; interface SchedulingSettingsPanelProps { admin: UseSchedulingAdminResult; className?: string; children: ReactNode; /** * Override the default form-submit handler. Receives the merged draft * (including parsed labels). When omitted, the panel calls * `admin.settings.update(draft)` directly. Useful when consumers want to * intercept (e.g. confirm modal) before the server write. */ onSubmit?: (draft: Partial) => Promise | void; } declare function SchedulingSettingsPanelRoot({ admin, className, children, onSubmit, }: SchedulingSettingsPanelProps): react_jsx_runtime.JSX.Element; interface SchedulingSettingsTimezoneProps { className?: string; labelClassName?: string; helpClassName?: string; inputClassName?: string; customInputClassName?: string; actionClassName?: string; /** * Curated IANA groups for the dropdown. Defaults to DEFAULT_TIMEZONE_GROUPS. * Pass `null` to render a free-text input instead. */ groups?: SchedulingTimezoneGroup[] | null; /** * When true (default) and the browser timezone differs from the current * value AND `groups` is set, render a "Use my browser timezone (…)" * shortcut. Pass false to suppress. */ showBrowserShortcut?: boolean; /** * Override the detected browser timezone. Default: detectBrowserTimezone(). * Pass `null` to force-suppress the shortcut even if the browser exposes * one. Useful for SSR (where Intl may resolve differently than the user) * and for tests. */ browserTimezone?: string | null; label?: ReactNode; help?: ReactNode; } declare function Timezone({ className, labelClassName, helpClassName, inputClassName, customInputClassName, actionClassName, groups, showBrowserShortcut, browserTimezone, label, help, }: SchedulingSettingsTimezoneProps): react_jsx_runtime.JSX.Element; type SchedulingSettingsGranularityOption = number | { value: number; label: ReactNode; }; interface SchedulingSettingsGranularityProps { className?: string; labelClassName?: string; helpClassName?: string; inputClassName?: string; options?: SchedulingSettingsGranularityOption[]; label?: ReactNode; help?: ReactNode; } declare function Granularity({ className, labelClassName, helpClassName, inputClassName, options, label, help, }: SchedulingSettingsGranularityProps): react_jsx_runtime.JSX.Element; interface NumberFieldProps { className?: string; labelClassName?: string; helpClassName?: string; inputClassName?: string; suffixClassName?: string; label?: ReactNode; help?: ReactNode; suffix?: ReactNode; min?: number; step?: number; } type SchedulingSettingsMinLeadTimeProps = NumberFieldProps; type SchedulingSettingsMaxAdvanceProps = NumberFieldProps; type SchedulingSettingsCancellationWindowProps = NumberFieldProps; type SchedulingSettingsPresetOption = SchedulingVerticalPreset | { value: SchedulingVerticalPreset; label: ReactNode; }; interface SchedulingSettingsVerticalPresetProps { className?: string; labelClassName?: string; helpClassName?: string; inputClassName?: string; presets?: SchedulingSettingsPresetOption[]; label?: ReactNode; help?: ReactNode; } declare function VerticalPreset({ className, labelClassName, helpClassName, inputClassName, presets, label, help, }: SchedulingSettingsVerticalPresetProps): react_jsx_runtime.JSX.Element; interface SchedulingSettingsLabelsProps { className?: string; labelClassName?: string; helpClassName?: string; inputClassName?: string; errorClassName?: string; label?: ReactNode; help?: ReactNode; rows?: number; } declare function Labels({ className, labelClassName, helpClassName, inputClassName, errorClassName, label, help, rows, }: SchedulingSettingsLabelsProps): react_jsx_runtime.JSX.Element; interface SchedulingSettingsSubmitProps { className?: string; /** Default: 'Save settings'. */ children?: ReactNode; /** Default: 'Saving…'. */ loadingLabel?: ReactNode; } declare function Submit({ className, children, loadingLabel, }: SchedulingSettingsSubmitProps): react_jsx_runtime.JSX.Element; interface SchedulingSettingsSavedProps { className?: string; children?: ReactNode; /** How long to show the indicator after a successful save. Default 4000ms. */ durationMs?: number; } declare function Saved({ className, children, durationMs, }: SchedulingSettingsSavedProps): react_jsx_runtime.JSX.Element | null; interface SchedulingSettingsErrorProps { className?: string; children?: (message: string) => ReactNode; } declare function ErrorMessage({ className, children }: SchedulingSettingsErrorProps): react_jsx_runtime.JSX.Element | null; declare const SchedulingSettingsPanel: typeof SchedulingSettingsPanelRoot & { Timezone: typeof Timezone; Granularity: typeof Granularity; MinLeadTime: ({ className, labelClassName, helpClassName, inputClassName, suffixClassName, label, help, suffix, min, step, }: NumberFieldProps) => react_jsx_runtime.JSX.Element; MaxAdvance: ({ className, labelClassName, helpClassName, inputClassName, suffixClassName, label, help, suffix, min, step, }: NumberFieldProps) => react_jsx_runtime.JSX.Element; CancellationWindow: ({ className, labelClassName, helpClassName, inputClassName, suffixClassName, label, help, suffix, min, step, }: NumberFieldProps) => react_jsx_runtime.JSX.Element; VerticalPreset: typeof VerticalPreset; Labels: typeof Labels; Submit: typeof Submit; Saved: typeof Saved; Error: typeof ErrorMessage; }; export { type SchedulingSettingsCancellationWindowProps, type SchedulingSettingsErrorProps, type SchedulingSettingsGranularityOption, type SchedulingSettingsGranularityProps, type SchedulingSettingsLabelsProps, type SchedulingSettingsMaxAdvanceProps, type SchedulingSettingsMinLeadTimeProps, SchedulingSettingsPanel, type SchedulingSettingsPanelProps, type SchedulingSettingsPresetOption, type SchedulingSettingsSavedProps, type SchedulingSettingsSubmitProps, type SchedulingSettingsTimezoneProps, type SchedulingSettingsVerticalPresetProps };