v1.1.2: action button, responsive faders, label scaling

Third integration-feedback release from building the streaming studio.

- New `Button` — a click-to-fire command button in the panel style, the
  non-latching sibling of PushButton. Implemented as PushButton's new
  `mode="action"` (never latches, press-down + brief LED flash, `onClick`);
  led="dot" (default) matches the corner-dot look, led={false} is plain.
- `fill` on LEDFader (parity with Fader) — faders stretch to fill their
  container in resizable panels instead of a fixed pixel length.
- `labelSize` on IndicatorLamp (and LampRow) — shrink the caption below its
  10px floor to match dense header rows.
- Docs: a dedicated "Buttons & switches" section with a decision guide
  (Button/PushButton/TransportButton/ToggleSwitch/SegmentSwitch) + live demos.

Library + docs typecheck and build; 38 tests pass.
This commit is contained in:
Dreamodus 2026-07-14 06:11:26 -07:00
parent 89c7a7f603
commit a6348d5c46
13 changed files with 372 additions and 27 deletions

View file

@ -11,6 +11,8 @@ export interface LampRowProps {
lamps: readonly LampRowItem[];
/** Lamp diameter in px. Default: 9. */
size?: number;
/** Caption font size in px. Default: 9.5. */
labelSize?: number;
/** Caption placement relative to each lamp. Default: 'right'. */
labelPosition?: 'right' | 'below';
/** Make lamps clickable (a compact indicator toggle bank). */
@ -31,6 +33,7 @@ export interface LampRowProps {
export const LampRow: React.FC<LampRowProps> = ({
lamps,
size = 9,
labelSize,
labelPosition = 'right',
onToggle,
gap = 14,
@ -80,7 +83,7 @@ export const LampRow: React.FC<LampRowProps> = ({
<span
style={{
fontFamily: theme.fontUI,
fontSize: 9.5,
fontSize: labelSize ?? 9.5,
fontWeight: 600,
letterSpacing: '0.12em',
textTransform: 'uppercase',