import {Trans} from '@common/i18n/trans';
import {ButtonBase} from '@common/ui/buttons/button-base';
import {ReactNode} from 'react';
import clsx from 'clsx';
import {useFormContext} from 'react-hook-form';
import {AppearanceValues} from '@common/admin/appearance/appearance-store';
import {message} from '@common/i18n/message';
import {useParams} from 'react-router-dom';
const radiusMap = {
'rounded-none': {
label: message('Square'),
value: '0px',
},
rounded: {
label: message('Small'),
value: '0.25rem',
},
'rounded-md': {
label: message('Medium'),
value: '0.375rem',
},
'rounded-lg': {
label: message('Large'),
value: '0.5rem',
},
'rounded-xl': {
label: message('Larger'),
value: '0.75rem',
},
'rounded-full': {
label: message('Pill'),
value: '9999px',
},
};
export function ThemeRadiusPanel() {
return (
}
name="button-radius"
/>
}
name="input-radius"
/>
}
name="panel-radius"
hidePill
/>
);
}
interface RadiusSelectorProps {
label: ReactNode;
name: string;
hidePill?: boolean;
}
function RadiusSelector({label, name, hidePill}: RadiusSelectorProps) {
const {themeIndex} = useParams();
const {watch, setValue} = useFormContext();
const formKey =
`appearance.themes.all.${themeIndex}.values.--be-${name}` as 'appearance.themes.all.1.values.--be-button-radius';
const currentValue = watch(formKey);
return (
{label}
{Object.entries(radiusMap)
.filter(([key]) => !hidePill || !key.includes('full'))
.map(([key, {label, value}]) => (
{
setValue(formKey, value, {shouldDirty: true});
}}
>
))}
);
}
interface PreviewButtonProps {
radius: string;
children: ReactNode;
isActive: boolean;
onClick: () => void;
}
function PreviewButton({
radius,
children,
isActive,
onClick,
}: PreviewButtonProps) {
return (
{children}
);
}