DreamKnob/apps/docs/src/App.tsx
Dreamodus 54189ad07a 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
2026-07-12 18:27:06 -07:00

50 lines
1.5 KiB
TypeScript

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 = () => (
<svg width="22" height="22" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="42" fill="#18191f" stroke="#4cc2ff" strokeWidth="7" />
<line x1="50" y1="50" x2="50" y2="15" stroke="#4cc2ff" strokeWidth="9" strokeLinecap="round" />
</svg>
);
export const App: React.FC = () => (
<>
<nav className="nav">
<div className="container nav-inner">
<a className="nav-logo" href="#">
<Logo />
dreamknob
</a>
<div className="nav-links">
<a href="#start">Start</a>
<a href="#gallery">Gallery</a>
<a href="#synth">Synth</a>
<a href="#playground">Playground</a>
<a href="#guide">Guide</a>
<a href="#docs">Docs</a>
</div>
</div>
</nav>
<Hero />
<GettingStarted />
<Gallery />
<Console />
<Synth />
<Playground />
<AdvancedGuide />
<ApiDocs />
<footer className="footer">
<div className="container">
dreamknob · MIT · built with a headless core, SVG and zero runtime dependencies
</div>
</footer>
</>
);