import { Controller } from '@graphcommerce/ecommerce-ui' import type { ProductAttributeFilterInput } from '@graphcommerce/graphql-mesh' import { ActionCardAccordion, Button } from '@graphcommerce/next-ui' import { Trans } from '@lingui/react/macro' import { isFilterTypeRange } from '../ProductListItems/filterTypes' import { getMinMaxFromOptions, PriceSlider } from './PriceSlider' import { useProductFiltersPro } from './ProductFiltersPro' import type { FilterProps } from './ProductFiltersProAggregations' export function ProductFilterRangeSection(props: FilterProps) { const { aggregation } = props const { attribute_code, label, options } = aggregation const { form, params } = useProductFiltersPro() const { control } = form const attrCode = attribute_code as keyof ProductAttributeFilterInput const name = `filters.${attrCode}` as const const param = params.filters?.[attrCode] if (param && !isFilterTypeRange(param)) throw new Error('Invalid filter type') const [min, max] = getMinMaxFromOptions(options) if (!options) return null return ( { if (value && !isFilterTypeRange(value)) throw new Error('Invalid filter type') const from = value?.from ? Number(value?.from) : min const to = value?.to ? Number(value?.to) : max return ( } right={ from !== min || to !== max ? ( ) : undefined } /> ) }} /> ) }