mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-29 19:33:34 +00:00
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>
62 lines
1.6 KiB
TypeScript
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
|
|
}
|