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