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);