29 lines
672 B
TypeScript
29 lines
672 B
TypeScript
|
|
import { useStoreState } from '@/store'
|
||
|
|
import { THEME_ENUM } from '@/constants/theme.constant'
|
||
|
|
import type { DetailedHTMLProps, ImgHTMLAttributes } from 'react'
|
||
|
|
|
||
|
|
interface DoubleSidedImageProps
|
||
|
|
extends DetailedHTMLProps<
|
||
|
|
ImgHTMLAttributes<HTMLImageElement>,
|
||
|
|
HTMLImageElement
|
||
|
|
> {
|
||
|
|
darkModeSrc: string
|
||
|
|
}
|
||
|
|
|
||
|
|
const { MODE_DARK } = THEME_ENUM
|
||
|
|
|
||
|
|
const DoubleSidedImage = ({
|
||
|
|
src,
|
||
|
|
darkModeSrc,
|
||
|
|
alt = '',
|
||
|
|
...rest
|
||
|
|
}: DoubleSidedImageProps) => {
|
||
|
|
const mode = useStoreState((state) => state.theme.mode)
|
||
|
|
|
||
|
|
return (
|
||
|
|
<img src={mode === MODE_DARK ? darkModeSrc : src} alt={alt} {...rest} />
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
export default DoubleSidedImage
|