import clsx from 'clsx';
import { t } from 'i18next';
import { forwardRef, memo } from 'react';
import styles from './play-button.module.css';
import { usePlayButtonClick } from '/@/renderer/features/shared/hooks/use-play-button-click';
import { ActionIcon, ActionIconProps } from '/@/shared/components/action-icon/action-icon';
import { Button, ButtonProps } from '/@/shared/components/button/button';
import { Group } from '/@/shared/components/group/group';
import { AppIcon, Icon } from '/@/shared/components/icon/icon';
import { Spinner } from '/@/shared/components/spinner/spinner';
export interface DefaultPlayButtonProps extends ActionIconProps {
size?: number | string;
}
export const DefaultPlayButton = ({
className,
variant = 'filled',
...props
}: DefaultPlayButtonProps) => {
return (
);
};
interface TextPlayButtonProps extends ButtonProps {}
export const PlayTextButton = ({
className,
variant = 'default',
...props
}: TextPlayButtonProps) => {
return (
);
};
export const WideShuffleButton = ({ ...props }: TextPlayButtonProps) => {
return (
{t('action.shuffle', { postProcess: 'sentenceCase' })}
);
};
interface PlayButtonProps {
classNames?: string;
fill?: boolean;
icon?: keyof typeof AppIcon;
isSecondary?: boolean;
loading?: boolean;
onClick?: (e: React.MouseEvent) => void;
onLongPress?: (e: React.MouseEvent) => void;
}
const PlayButtonBase = forwardRef(
(
{
classNames,
fill,
icon = 'mediaPlay',
isSecondary,
loading,
onClick,
onLongPress,
}: PlayButtonProps,
ref,
) => {
const clickHandlers = usePlayButtonClick({
loading,
onClick,
onLongPress,
});
return (
);
},
);
export const PlayButton = memo(PlayButtonBase);
PlayButton.displayName = 'PlayButton';