import React from 'react'; import { DispatchType, FulfillmentsServiceConfig } from '../types/fulfillments-types.js'; import { AsChildChildren } from '@wix/headless-utils/react'; /** * Props for the Settings Root component */ export interface RootProps { /** Child components that will have access to the settings context */ children: (props: { isLoading: boolean; }) => React.ReactNode; /** Optional pre-loaded fulfillments service configuration */ fulfillmentsServiceConfig?: FulfillmentsServiceConfig; } /** * Root headless component for OLO Settings * Provides service context for settings components * * @example * ```tsx * * * {({ timeSlot, hasDetails }) => ( *
{timeSlot?.dispatchType}
* )} *
*
* ``` */ export declare const Root: React.FC; interface CurrentTimeSlotProps { /** Children render prop that receives the current details */ children?: AsChildChildren<{ timeSlot: string; }>; /** CSS classes to apply to the default element */ className?: string; /** Whether to render as a child component */ asChild?: boolean; /** prefixElement to display before the time slot text */ prefixElement?: React.ReactNode; deliveryTypeText: string; pickupTypeText: string; asapTimeText: string; asapTimeRangeText: string; preorderTodayText: string; preorderTomorrowText: string; } export declare const CurrentTimeSlot: React.ForwardRefExoticComponent>; interface DispatchTypeSelectorProps extends Omit, 'children'> { /** Child components that will have access to dispatch type context */ children: React.ReactNode; } /** * Container component for dispatch type selection (pickup or delivery) * Provides context for child components to access dispatch type data * Does not render if no dispatch types are available * * @example * ```tsx * * No options}> * * {({ type, isSelected, selectDispatchType }) => ( * * )} * * * * ``` */ export declare const DispatchTypeSelector: React.ForwardRefExoticComponent>; interface DispatchTypeOptionsProps extends Omit, 'children'> { /** Child components to render when dispatch types are available */ children: React.ReactNode; /** Optional content to display when no dispatch types are available */ emptyState?: React.ReactNode; } /** * Container for dispatch type options list with empty state support * * @example * ```tsx * No options available}> * * {({ type }) =>
{type}
} *
*
* ``` */ export declare const DispatchTypeOptions: React.ForwardRefExoticComponent>; interface DispatchTypeOptionRepeaterProps { /** Render prop that receives each dispatch type option data */ children: (props: { type: DispatchType; isSelected: boolean; selectDispatchType: (type: DispatchType) => void; }) => React.ReactNode; } /** * Repeater component that renders children for each available dispatch type * * @example * ```tsx * * {({ type, isSelected, selectDispatchType }) => ( * * )} * * ``` */ export declare const DispatchTypeOptionRepeater: React.FC; /** * Headless component for current fulfillment options * Provides access to pickup, delivery, and dine-in options * * @example * ```tsx * * {({ fulfillment, availableOptions }) => ( *
*

Available Options:

* {availableOptions.map(option => ( *
* {option}: {fulfillment[option]?.enabled ? 'Available' : 'Unavailable'} * {fulfillment[option]?.estimatedTime && ( * - {fulfillment[option].estimatedTime} mins * )} *
* ))} *
* )} *
* ``` */ interface CurrentLocationProps { /** Whether to render as a child component */ asChild?: boolean; /** CSS classes to apply to the default element */ className?: string; /** Children render prop that receives the location data */ children?: AsChildChildren<{ currentLocation: { name: string; }; hasLocation: boolean; }>; } /** * Headless component for current location data * Provides access to store location and coordinates * * @example * ```tsx * * {({ location, hasLocation }) => ( *
*

{currentLocation.name}

* {hasLocation && ( *

Coordinates: {location.latitude}, {location.longitude}

* )} *
* )} *
* ``` */ export declare const CurrentLocation: React.FC; interface MinOrderAmountProps extends Omit, 'children'> { asChild?: boolean; /** Label text to display before the minimum order amount (e.g., "Min Order:") */ label?: string; /** Children render prop that receives the minimum order amount data */ children?: AsChildChildren<{ minOrderAmount: number | undefined; hasMinOrderAmount: boolean; }> | React.ReactNode; } /** * Headless component for minimum order amount information * * @example * ```tsx * * {({ minOrderAmount, hasMinOrderAmount }) => ( * hasMinOrderAmount ? ( *
Minimum order: ${minOrderAmount}
* ) : null * )} *
* ``` */ export declare const MinOrderAmount: React.FC; interface AcceptingOrdersProps extends Omit, 'children'> { asChild?: boolean; /** Children render prop that receives the accepting orders status */ children?: AsChildChildren<{ acceptingOrders: boolean; }> | React.ReactNode; } /** * Headless component for accepting orders status * * @example * ```tsx * * {({ acceptingOrders }) => ( *
* Status: {acceptingOrders ? 'Accepting Orders' : 'Not Accepting Orders'} *
* )} *
* ``` */ export declare const AcceptingOrders: React.FC; interface SelectedAddressProps extends Omit, 'children'> { asChild?: boolean; /** Children render prop that receives the selected address data */ children?: AsChildChildren<{ formattedAddress: string | null; selectedType: DispatchType | null; hasAddress: boolean; }> | React.ReactNode; } /** * Headless component for selected address information * * @example * ```tsx * * {({ formattedAddress, selectedType, hasAddress }) => ( *
*

{formattedAddress}

*

{selectedType}

*
* )} *
* ``` */ export declare const SelectedAddress: React.FC; interface DeliveryFeeProps extends Omit, 'children'> { asChild?: boolean; /** Label text to display before the delivery fee (e.g., "Delivery Fee:") */ label?: string; /** Children render prop that receives the delivery fee data */ children?: AsChildChildren<{ deliveryFee: string | undefined; hasDeliveryFee: boolean; }> | React.ReactNode; } /** * Headless component for delivery fee information * * @example * ```tsx * * {({ deliveryFee, hasDeliveryFee }) => ( * hasDeliveryFee ? ( *
Delivery Fee: ${deliveryFee}
* ) : ( *
Free Delivery
* ) * )} *
* ``` */ export declare const DeliveryFee: React.FC; interface FreeDeliveryThresholdProps extends Omit, 'children'> { asChild?: boolean; /** Label text to display before the free delivery threshold (e.g., "Free delivery above:") */ label?: string; /** Children render prop that receives the free delivery threshold data */ children?: AsChildChildren<{ freeDeliveryThreshold: string | undefined; hasFreeDeliveryThreshold: boolean; }> | React.ReactNode; } /** * Headless component for free delivery threshold information * * @example * ```tsx * * {({ freeDeliveryThreshold, hasFreeDeliveryThreshold }) => ( * hasFreeDeliveryThreshold ? ( *
Free delivery on orders over ${freeDeliveryThreshold}
* ) : null * )} *
* ``` */ export declare const FreeDeliveryThreshold: React.FC; export {};