From 54189ad07ab4bbbd6f0af5f981df4e961bd30d30 Mon Sep 17 00:00:00 2001 From: Dreamodus Date: Sun, 12 Jul 2026 18:27:06 -0700 Subject: [PATCH] Docs accuracy pass, guides, and a playable Web Audio synth demo Docs/playground accuracy (from a full docs-vs-source audit): - Playground: drag-feel select covers pickup/relative rotary modes, is disabled for faders, and generated code no longer emits props the target component does not accept - API/README claims corrected: Shift-fine wheel scope, wheelStep and decimals defaults, trackInset row, data-part and ref-forwarding scope, VintageKnob readout exception, Meter peakHold tag, stale component lists, aria-valuetext wording, also-exported list API consistency fixes surfaced by the audit and the tutorial: - Keyboard gestures now fire onChangeStart (bracket parity with drag/ wheel - fixes gesture-scoped undo patterns) - name (hidden form input) added to Fader, LEDFader, ImageKnob - PushButton gets a themed keyboard-only focus ring + data-focus-visible New docs content: - Getting Started: 7-step guide with live examples and a gotchas list - Advanced guide: 8-step channel-strip tutorial ending in a live, themed, gesture-undoable strip with meter (plus headless demo) - Synth section: playable Web Audio synth - osc/filter/env/LFO/master all dreamknob controls, momentary-pad keyboard, analyser-driven Meter --- README.md | 16 +- apps/docs/src/App.tsx | 10 +- apps/docs/src/sections/AdvancedGuide.tsx | 444 ++++++++++++++++++++ apps/docs/src/sections/ApiDocs.tsx | 42 +- apps/docs/src/sections/Gallery.tsx | 8 +- apps/docs/src/sections/GettingStarted.tsx | 155 +++++++ apps/docs/src/sections/Hero.tsx | 4 +- apps/docs/src/sections/Playground.tsx | 48 ++- apps/docs/src/sections/Synth.tsx | 330 +++++++++++++++ packages/dreamknob/README.md | 24 +- packages/dreamknob/src/hooks/useKnob.ts | 10 + packages/dreamknob/src/skins/Fader.tsx | 4 + packages/dreamknob/src/skins/ImageKnob.tsx | 4 + packages/dreamknob/src/skins/LEDFader.tsx | 4 + packages/dreamknob/src/skins/PushButton.tsx | 19 +- 15 files changed, 1069 insertions(+), 53 deletions(-) create mode 100644 apps/docs/src/sections/AdvancedGuide.tsx create mode 100644 apps/docs/src/sections/GettingStarted.tsx create mode 100644 apps/docs/src/sections/Synth.tsx diff --git a/README.md b/README.md index 6909549..40376d0 100644 --- a/README.md +++ b/README.md @@ -27,16 +27,18 @@ import { MetalKnob, LEDKnob, Fader, logTaper } from 'dreamknob' ``` -- **Feel**: grab-and-rotate rotary tracking (rc-knob style), or relative vertical / - horizontal drag (DAW plugin style), or absolute track dragging for faders. Scroll-wheel - nudge, full keyboard support, Shift for fine control, double-click reset, touch via - pointer capture, proper `role="slider"` accessibility. +- **Feel**: grab-and-rotate rotary tracking (rc-knob style) with pickup/relative modes, + or relative vertical / horizontal drag (DAW plugin style), or absolute track dragging + for faders. Scroll-wheel nudge, full keyboard support, Shift+scroll for fine control, + double-click reset, touch via pointer capture, proper `role="slider"` accessibility. - **Numbers**: any range (negative, fractional, huge), decimal `step` with float-drift-safe rounding, discrete `values` lists, evenly spaced detents (`steps`), linear / log / power / custom tapers. - **Styles**: `FlatKnob`, `MetalKnob`, `RubberKnob`, `VintageKnob`, `LEDKnob`, `NeonKnob`, - `SteppedKnob`, `Fader`, `LEDFader`, `SegmentDisplay` β€” every color themeable per instance. -- **Composable**: `` + primitives (`Arc`, `Pointer`, `Ticks`, `Face`, `KnobValue`, - `KnobLabel`) for custom designs, or go fully headless with `useKnob`. + `SteppedKnob`, `ImageKnob` (film-strips), `Fader`, `LEDFader`, `Meter`, `XYPad`, + `PushButton`, `SegmentDisplay`, `AlphaDisplay` β€” every color themeable per instance. +- **Composable**: `` + primitives (`Arc`, `Pointer`, `Ticks`, `TickLabels`, `Face`, + `KnobValue`, `KnobLabel`, `GlowFilter`) for custom designs, or go fully headless with + `useKnob`. See `packages/dreamknob/README.md` and the docs app for the full API. diff --git a/apps/docs/src/App.tsx b/apps/docs/src/App.tsx index dc47f1c..4610a69 100644 --- a/apps/docs/src/App.tsx +++ b/apps/docs/src/App.tsx @@ -1,9 +1,12 @@ import React from 'react'; +import { AdvancedGuide } from './sections/AdvancedGuide'; import { ApiDocs } from './sections/ApiDocs'; import { Console } from './sections/Console'; import { Gallery } from './sections/Gallery'; +import { GettingStarted } from './sections/GettingStarted'; import { Hero } from './sections/Hero'; import { Playground } from './sections/Playground'; +import { Synth } from './sections/Synth'; const Logo: React.FC = () => ( @@ -21,17 +24,22 @@ export const App: React.FC = () => ( dreamknob
+ Start Gallery - Demo + Synth Playground + Guide Docs
+ + +