ruvector/studio/components/interfaces/Support/HighlightContext.tsx
rUv 814f595995 feat(studio): Add complete RuVector Studio application
Major additions:
- Complete Next.js studio application with 1600+ components
- Docker support (Dockerfile.combined, docker-compose.yml)
- GCP deployment documentation and benchmarks
- SQL benchmark scripts for performance testing
- Sentry integration for monitoring
- Comprehensive test suite and mocks

Studio features:
- Dashboard and admin interfaces
- Data visualization components
- Authentication and user management
- API integration with RuVector backend
- Static data and public assets

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-06 23:04:48 +00:00

62 lines
1.6 KiB
TypeScript

import { parseAsBoolean, useQueryState } from 'nuqs'
import {
createContext,
useCallback,
useContext,
useMemo,
useRef,
type PropsWithChildren,
} from 'react'
interface HighlightProjectRefContextValue<T extends HTMLElement = HTMLDivElement> {
ref: React.RefObject<T>
shouldHighlightRef: boolean
setShouldHighlightRef: (value: boolean) => void
scrollToRef: () => void
}
const HighlightProjectRefContext = createContext<HighlightProjectRefContextValue | undefined>(
undefined
)
export function HighlightProjectRefProvider({ children }: PropsWithChildren) {
const projectRefContainerRef = useRef<HTMLDivElement>(null)
const [shouldHighlightRef, setShouldHighlightRef] = useQueryState(
'highlightRef',
parseAsBoolean.withDefault(false).withOptions({ clearOnDefault: true })
)
const scrollToRef = useCallback(() => {
projectRefContainerRef.current?.scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center',
})
}, [])
const ctx = useMemo(
() => ({
ref: projectRefContainerRef,
shouldHighlightRef,
setShouldHighlightRef,
scrollToRef,
}),
[shouldHighlightRef, setShouldHighlightRef, scrollToRef]
)
return (
<HighlightProjectRefContext.Provider value={ctx}>
{children}
</HighlightProjectRefContext.Provider>
)
}
export function useHighlightProjectRefContext() {
const context = useContext(HighlightProjectRefContext)
if (!context) {
throw new Error(
'useHighlightProjectRefContext must be used within a HighlightProjectRefProvider'
)
}
return context
}