- PushButton/Button forward native button props (...rest) and compose their own event handlers with consumer/Radix-injected ones, so a Button works as a Radix `asChild` trigger (dropdowns/tooltips/popovers). Prop types now extend React.ButtonHTMLAttributes. - Meter gains opt-in metering: `ballistics` (PPM attack/decay), `peakDecay` (peak-hold fall tail), `scale="db"` (feed amplitude → dBFS with reference lines; min/max default -60/0), and `integrated` (windowed LUFS-ish loudness readout + marker). New rAF engine in meterEngine.ts with ampToDb/dbToAmp helpers; default behavior unchanged. - New `PanKnob` — bipolar stereo pan: fills from center, center detent, L<n>/C/R<n> readout, -50..50 default. - Docs: ApiDocs rows + recipes (dBFS meter, pan strip, Button-as-trigger), gallery cards (dBFS meter, Pan) + a Regenerate Button in the panel. CHANGELOG 1.1.3; version 1.1.3; install URLs bumped. Library + docs typecheck and build; 46 tests pass. - Meter dBFS readout: muted-grey unit labels (LUFS matched to dB), value-first layout in an aligned 2-column grid so peak/loudness decimals line up, and ghost pad digits removed — the loudness row no longer looks like a stray tag. - Action buttons (Button / PushButton mode="action") no longer show an LED by default — an action has no state to indicate. led defaults to 'strip' for toggle/momentary and false for action; led="dot"/"strip" opts back in. - Meter dBFS readout: units (dB / LUFS) sit centered directly under each value; grid alignment tidied and ghost pad digits removed. Docs: dBFS-meter card moved next to the Meters card (same component) + a horizontal example.
55 lines
1.2 KiB
JSON
55 lines
1.2 KiB
JSON
{
|
|
"name": "dreamknob",
|
|
"version": "1.1.3",
|
|
"description": "A feature-full, studio-grade React knob & fader library. Rotary, linear, 2D, 3D, digital and analog styles with a headless core.",
|
|
"license": "MIT",
|
|
"author": "Dreamodus Software Inc.",
|
|
"type": "module",
|
|
"sideEffects": false,
|
|
"main": "./dist/index.cjs",
|
|
"module": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"import": "./dist/index.js",
|
|
"require": "./dist/index.cjs"
|
|
}
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"LICENSE",
|
|
"README.md",
|
|
"CHANGELOG.md"
|
|
],
|
|
"scripts": {
|
|
"build": "tsup src/index.ts --format esm,cjs --dts --sourcemap --clean",
|
|
"dev": "tsup src/index.ts --format esm --dts --watch",
|
|
"test": "vitest run",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"keywords": [
|
|
"react",
|
|
"knob",
|
|
"fader",
|
|
"slider",
|
|
"rotary",
|
|
"audio",
|
|
"synth",
|
|
"dial",
|
|
"typescript"
|
|
],
|
|
"peerDependencies": {
|
|
"react": ">=18",
|
|
"react-dom": ">=18"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^18.3.3",
|
|
"@types/react-dom": "^18.3.0",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"tsup": "^8.1.0",
|
|
"typescript": "^5.5.3",
|
|
"vitest": "^2.0.3"
|
|
}
|
|
}
|