import React from 'react'; import styled from 'styled-components'; import type { JSX } from 'react'; import type { FilterProps } from '@redocly/theme/core/types'; import { FilterOptions } from '@redocly/theme/components/Filter/FilterOptions'; import { FilterOption } from '@redocly/theme/components/Filter/FilterOption'; import { FilterTitle } from '@redocly/theme/components/Filter/FilterTitle'; import { FilterOptionLabel } from '@redocly/theme/components/Filter/FilterOptionLabel'; import { useThemeHooks } from '@redocly/theme/core/hooks'; import { CheckboxIcon } from '@redocly/theme/icons/CheckboxIcon/CheckboxIcon'; import { CounterTag } from '@redocly/theme/components/Tags/CounterTag'; import { changeTextCasing } from '@redocly/theme/core/utils'; export function FilterCheckboxes({ filter, filterValuesCasing, showCounter = true, }: FilterProps): JSX.Element { const { useTranslate, useTelemetry } = useThemeHooks(); const { translate } = useTranslate(); const telemetry = useTelemetry(); return ( {translate(filter.titleTranslationKey, filter.title)} {(filter.filteredOptions || filter.options).map(({ value, count }) => { const id = 'filter--' + filter.property + '--' + value; return ( { filter.toggleOption(value); telemetry.sendFilterCheckboxToggledMessage([{ object: 'checkbox', id }]); }} > {changeTextCasing(translate(value), filterValuesCasing)} {showCounter && {count}} ); })} ); } const FilterCheckboxOption = styled(FilterOption)` padding-left: var(--filter-option-checkbox-padding-left); `; const FilterCheckboxesWrapper = styled.div` display: flex; flex-direction: column; gap: var(--spacing-sm); `;