Files
web/packages/design-system/lib/components/SidePeek/SidePeekContext/SidePeekProvider.tsx
Anton Gunnarsson 7fb082f712 Merged in feat/sw-3218-move-sidepeek-to-design-system (pull request #2598)
feat(SW-3218): Move SidePeek to design-system

* Remove SidePeekProvider dependency on Next

* Remove dependency on i18n in sidepeek

* Inline types

* Move SidePeek to design-system

* Fix align-items value


Approved-by: Bianca Widstam
2025-08-06 08:35:34 +00:00

44 lines
1.0 KiB
TypeScript

'use client'
import { useEffect, useState } from 'react'
import { SidePeekContext } from './index'
interface SidepeekProviderProps extends React.PropsWithChildren {
onOpen?: (sidePeek: string) => void
onClose?: () => void
searchParams: URLSearchParams
}
export default function SidePeekProvider({
children,
searchParams,
onOpen,
onClose,
}: SidepeekProviderProps) {
const [activeSidePeek, setActiveSidePeek] = useState<string | null>(null)
useEffect(() => {
const sidePeekParam = searchParams.get('s')
if (sidePeekParam !== activeSidePeek) {
setActiveSidePeek(sidePeekParam)
}
}, [searchParams, activeSidePeek])
useEffect(() => {
if (activeSidePeek && onOpen) {
onOpen(activeSidePeek)
}
}, [activeSidePeek, onOpen])
function handleClose(isOpen: boolean) {
if (!isOpen) {
onClose?.()
setActiveSidePeek(null)
}
}
return (
<SidePeekContext.Provider value={{ handleClose, activeSidePeek }}>
{children}
</SidePeekContext.Provider>
)
}