ruvector/studio/components/ui/DisableInteraction.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

38 lines
1,007 B
TypeScript

import React, { forwardRef } from 'react'
import { cn } from 'ui'
interface DisableInteractionProps extends React.HTMLAttributes<HTMLDivElement> {
disabled?: boolean
}
/**
* DisableInteraction component
*
* A utility component that wraps content and prevents all user interactions when disabled
* including clicking, hovering, and text selection.
*
* @example
* <DisableInteraction disabled={isDisabled}>
* <YourContent />
* </DisableInteraction>
*/
export const DisableInteraction = forwardRef<HTMLDivElement, DisableInteractionProps>(
({ disabled, style, className, ...props }, ref) => (
<div
ref={ref}
{...props}
className={cn(disabled && 'opacity-50 pointer-events-none', className)}
style={{
...(disabled && {
userSelect: 'none',
WebkitUserSelect: 'none',
MozUserSelect: 'none',
msUserSelect: 'none',
}),
...style,
}}
/>
)
)
DisableInteraction.displayName = 'DisableInteraction'