mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-13 04:06:56 +00:00
a3851842e9
Split the sub-components currently declared inside ParticipantTile into dedicated files. This makes the ParticipantTile file easier to read and lets each sub-component be imported and reasoned about on its own.
33 lines
955 B
TypeScript
33 lines
955 B
TypeScript
import {
|
|
isEqualTrackRef,
|
|
TrackReferenceOrPlaceholder,
|
|
} from '@livekit/components-core'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { useSnapshot } from 'valtio'
|
|
import { clearPinnedTrack, layoutStore, setPinnedTrack } from '@/stores/layout'
|
|
import { Button } from '@/primitives'
|
|
import { RiPushpin2Line, RiUnpinLine } from '@remixicon/react'
|
|
|
|
export const FocusButton = ({
|
|
trackRef,
|
|
}: {
|
|
trackRef: TrackReferenceOrPlaceholder
|
|
}) => {
|
|
const { t } = useTranslation('rooms', { keyPrefix: 'participantTileFocus' })
|
|
|
|
const { pinnedTrackRef } = useSnapshot(layoutStore)
|
|
const inFocus = isEqualTrackRef(trackRef, pinnedTrackRef)
|
|
|
|
return (
|
|
<Button
|
|
size="sm"
|
|
variant="primaryTextDark"
|
|
square
|
|
tooltip={inFocus ? t('pin.disable') : t('pin.enable')}
|
|
onPress={() => (inFocus ? clearPinnedTrack() : setPinnedTrack(trackRef))}
|
|
>
|
|
{inFocus ? <RiUnpinLine /> : <RiPushpin2Line />}
|
|
</Button>
|
|
)
|
|
}
|