/** * Minimum height with Desktop / Tablet / Mobile tabs. Tablet and mobile are * optional and inherit the next larger device's value until set; the * breakpoints match the carousel's responsive settings. */ import { __ } from "@wordpress/i18n"; import { RangeControl } from "@wordpress/components"; import { TabsPanelControl } from "@sliderberg/shared"; export type Device = "desktop" | "tablet" | "mobile"; interface ResponsiveMinHeightControlProps { desktop: number; tablet?: number; mobile?: number; /** Value the Desktop control resets to. */ desktopDefault: number; desktopHelp: string; onChange: (device: Device, value: number | undefined) => void; } export default function ResponsiveMinHeightControl({ desktop, tablet, mobile, desktopDefault, desktopHelp, onChange, }: ResponsiveMinHeightControlProps) { const rangeProps = { __next40pxDefaultSize: true, __nextHasNoMarginBottom: true, label: __("Minimum Height", "sliderberg"), min: 100, max: 1000, step: 10, }; const tabs = [ { name: "desktop", title: __("Desktop", "sliderberg"), component: (
onChange("desktop", value ?? desktopDefault)} />
), }, { name: "tablet", title: __("Tablet", "sliderberg"), component: (
onChange("tablet", value)} />
), }, { name: "mobile", title: __("Mobile", "sliderberg"), component: (
onChange("mobile", value)} />
), }, ]; return (
); }