import { observer } from 'mobx-react-lite'; import React, { useMemo } from 'react'; import { DropdownBase, IconButton, listItemSelectBuilder, SegmentedToggle, Tooltip, } from '@wix/design-system'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { ViewType, ViewTypeState } from '../../state/ViewTypeState'; import { layoutConfig } from './layoutConfig'; import { useBmHarmonyTheme } from '../../hooks/useBmHarmonyTheme'; export interface LayoutSwitchButtonProps { state: ViewTypeState; options: ViewType[]; } function _LayoutSwitchButton({ state, options }: LayoutSwitchButtonProps) { const { translate: t, internalExperiments } = useWixPatternsContainer(); const { viewType } = state; const isLayoutToggleRedesignEnabled = internalExperiments?.enabled( 'specs.cairo.layout-toggle.redesign', ); const isBmHarmonyTheme = useBmHarmonyTheme(); const dropdownOptions = useMemo( () => options.map((option) => listItemSelectBuilder({ id: option, title: t(layoutConfig[option].translationKey), prefix: layoutConfig[option].icon, dataHook: `layout-option-${option}`, }), ), [t, options], ); if (!isLayoutToggleRedesignEnabled) { return ( { if (state.viewType === value) { return; } state.changeViewType(value as ViewType); }} > {options.map((option) => ( {layoutConfig[option].icon} ))} ); } return ( { const selectedOption = option.id as ViewType; const index = options.indexOf(selectedOption); state.reportLayoutOptionClicked(selectedOption, index); if (viewType !== selectedOption) { state.changeViewType(selectedOption); } }} > {({ toggle }) => ( { state.reportLayoutSwitch(); toggle(); }} > {layoutConfig[viewType].icon} )} ); } export const LayoutSwitchButton = observer(_LayoutSwitchButton);