import * as React from 'react'; import { Knob } from '../components/Knob'; import { Arc } from '../primitives/Arc'; import { GlowFilter } from '../primitives/GlowFilter'; import { Pointer } from '../primitives/Pointer'; import { KnobLabel, KnobValue } from '../primitives/Text'; import { MONO_FONT, UI_FONT, type SkinProps } from './shared'; export interface RubberKnobProps extends SkinProps { /** Glow/accent color. */ color?: string; trackColor?: string; textColor?: string; labelColor?: string; arcFrom?: 'min' | 'center'; } /** Soft-touch rubber knob with a glowing halo — modern synth hardware. */ export const RubberKnob: React.FC = ({ size = 90, color = '#ff9640', trackColor = 'rgba(255,255,255,0.08)', textColor = 'rgba(255,255,255,0.92)', labelColor = 'rgba(255,255,255,0.45)', arcFrom = 'min', label, showValue = false, unit, format, className, style, ...core }) => { const id = React.useId(); const bodyId = `${id}-body`; const glowId = `${id}-glow`; const c = size / 2; const bodyR = size / 2 - size * 0.17; return ( {/* rubber grip */} {/* top sheen */} {showValue && ( )} {label && ( {label} )} ); };