aboutsummaryrefslogtreecommitdiff
path: root/docs/prototypes/widgets.js
Commit message (Collapse)AuthorAgeFilesLines
* feat(gallery): slide-rule unit stops, zoom-safe clicks, and four facesCraig Jennings6 hours1-18/+72
| | | | | | | | Clicks compared e.clientX (visual px, scaled by the size toggle's CSS zoom) against layout-px mark coordinates, so at M or L size nearest-mark snapping picked the wrong stop, usually the far end — the dial felt impossible to select. The click handler now divides the zoom out (offsetWidth over rect width), and the widget shows a subtle outline on click focus so it reads as armed for arrow keys. The printed numerals are now majors with minor ticks at the integer units between them, all selectable: click a numeral, a mark, or between marks, and arrows step one unit instead of one numeral. The spec sheet claimed drag-only input, which was never true; it now names the click and key idioms. The face rides new --tn-* vars and GW.slideRule gains opts.skin plus setStyle backed by GW.slideRule.STYLES: warm backlit (shipped default), chrome with dark ink, 80s black glass with an LED-red needle, and marantz blue with a pale needle. Card 25 joins the styleChips rig.
* feat(gallery): give the segmented selector amber, green, and red accentsCraig Jennings6 hours1-3/+19
| | | | | | The lit segment rides new --seg-on-* vars with the shipped amber as the stylesheet fallback, and GW.segmented gains opts.accent plus setStyle backed by GW.segmented.STYLES, the same shape as the slide toggle. Card 06 is the third chips demo rig, so the per-card IIFEs collapse into one styleChips(no, STYLES, AXES) helper serving cards 01, R05, and 06.
* fix(gallery): drop the lab parchment panel skin, restore the cream cap finishCraig Jennings6 hours1-10/+9
| | | | ca006d8 removed the cream cap color, but the parchment to retire was the lab panel skin. The panel axis is now silver / studio with silver as the default, and cream returns to the cap-color axis.
* fix(gallery): drop the chrome-on-chrome index line and the cream cap colorCraig Jennings6 hours1-3/+3
| | | | | | Bare metal needs no painted stripe, so the chrome cap shape in the chrome finish renders lineless. Other shapes keep their index line in every finish. The cream finish is gone from the color axis along with its now-unused gradient. The stripe set stands at black, red, green, blue, amber, plus the chrome body.
* feat(gallery): rebuild R05 filter bank with three skin axesCraig Jennings6 hours1-28/+117
| | | | | | | | The old card was a sketch: eight bare tracks and flat teal arrows floating on the card background. Real slider banks (the Vieltronix filter, the Pioneer SG-9500, the Technics SH-8065, the Zaxcom Oasis) have a faceplate, dual dB rails, dense bands, and caps that read as machined parts. The rebuilt bank draws twelve bands on a screwed faceplate with tick rails both sides. Skins ship as constructor opts backed by GW.filterBank.STYLES on three independent axes: panel (lab parchment / silver aluminum / studio black), cap shape (tall block fader / short ribbed / chrome T), and cap color (black white-index / red, green, blue, amber stripes / chrome / cream). Shape and color are separate axes so any finish applies to any cap. opts.style picks a native trio. setStyle(axis, name) restyles a live instance with values preserved. The card grows chip groups driving setStyle, the same demo-rig pattern as the slide toggle. Values shorter than a custom freqs list now pad instead of placing caps at NaN. I filed the Oasis reference alongside the others.
* refactor(gallery): slide-toggle style options become GW.slideToggle optsCraig Jennings7 hours1-2/+37
| | | | The four style axes (on/off track, off engraving, thumb) move from a page-side chip rig into named constructor opts backed by GW.slideToggle.STYLES, with a setStyle handle method for live restyling. The gallery chips stay as a demo rig driving that method. Defaults match the stylesheet fallbacks, so a bare GW.slideToggle renders unchanged.
* refactor(gallery): move widget CSS into GW_CSS in widgets.jsCraig Jennings7 hours1-1/+503
| | | | Widget-internal rules and the pulse/flipdrop keyframes now inject via ensureCss, so widgets.js consumers get styling without the gallery stylesheet. The page-side reelspin injector became a plain GW_CSS rule. The gallery keeps page furniture, option-chip capsules, tokens, and the reduced-motion guard.
* refactor(gallery): extract indicators R35, R36, R45-R47, R52 into GW buildersCraig Jennings7 hours1-0/+260
|
* refactor(gallery): extract indicators R10, R11, R25, R26, R30, R31 into GW ↵Craig Jennings8 hours1-0/+314
| | | | builders
* refactor(gallery): extract indicators N20-N28 into GW buildersCraig Jennings8 hours1-0/+256
|
* refactor(gallery): extract indicators 18-23, 26 into GW buildersCraig Jennings8 hours1-0/+147
|
* refactor(gallery): extract meters R43, R44, R53-R56 into GW buildersCraig Jennings8 hours1-0/+361
| | | | The heading-bug servo chase and the chart recorder's day clock are widget-owned animations, so they move into their builders with the reduced-motion gates intact (reduced motion paints the recorder's full day once). This completes the Meters section — all 28 extracted.
* refactor(gallery): extract meters R01, R07-R09, R13, R17 into GW buildersCraig Jennings8 hours1-0/+296
| | | | The VU ballistics chase stays page-side and drives mcVu.set(t); the R17 trace animation is widget-owned so it moves into the builder with its reduced-motion gate. The R17 face gradient keeps instance-local defs because its stops read screen-family vars from the widget subtree; probe-fams selectors follow the retired rcrt ids to the card handle.
* refactor(gallery): extract meters N11-N18 into GW buildersCraig Jennings8 hours1-0/+172
| | | | Scope, EQ bars, and strip chart take value-driven handles (set samples / push); the eqBands oscillator and the demo signal stay page-side. The N11 screen-family chips now reach the scope through the card handle instead of the retired scopep id.
* refactor(gallery): extract meters 10-17 into GW buildersCraig Jennings8 hours1-0/+169
| | | | The page keeps the clock and demo signal; live meters (VU pair, mini signal, sparkline, waveform strip) expose value-driven handles — set/push repaint synchronously and fire onChange like every other builder. Peak-hold and history buffers move into the builders. fastTick and paintStatic now drive card handles.
* refactor(gallery): extract controls R39-R42, R48-R51 into GW buildersCraig Jennings8 hours1-0/+334
| | | | Rotary telephone dial, circuit breaker panel, DSKY, cam-timer drum, knife switch, decade box, two-hand safety, and voice-loop keyset — the Controls section is now fully extracted. The dial keeps its wind-and-return animation (reduced-motion path included); the cam timer and voice loop keep their gated self-advance and activity-flicker intervals inside their builders. DSKY and voice loop are the first HTML-based builders with structural CSS still gallery-side. Behavioral pass now 118 checks; both probes green.
* refactor(gallery): extract controls R27-R29, R32-R34, R37, R38 into GW buildersCraig Jennings8 hours1-0/+333
| | | | Winged gain selector, rotary disc switch, guarded toggle, mechanical timer dial, four-way rocker, four-way toggle selector, pin routing matrix, and dead-man button. The timer dial keeps its reduced-motion-gated 1 Hz wind-down inside the builder — it's widget behavior, not a gallery meter loop. discRed moves to the shared defs so the guarded toggle renders standalone. Behavioral pass now 96 checks; both probes green.
* refactor(gallery): extract controls R16, R18-R24 into GW buildersCraig Jennings8 hours1-0/+306
| | | | Entry keypad, thumb-slide pair, waveform region editor, drum roller, LED program row, three-position slide, spun knob, and stomp switch. The drum roller's per-instance clip paths get a uid() helper so two instances can coexist; the region editor's screen-family chips now reach the widget through the card handle (card.gw.el) instead of a stage id, and probe-fams drives its post-recolor check through the handle's set(). Behavioral pass now 78 checks; both probes green.
* refactor(gallery): extract R02-R06, R12, R14, R15 into GW buildersCraig Jennings9 hours1-0/+314
| | | | First SVG-widget batch: vernier dial, bat toggle, fluted knob, filter bank, chicken-head, slot fader, spade knob, and multi-band dial. widgets.js gains the shared-defs mechanism — document-scoped gradients (nutG, chromeG, spadeKnob, sfScrew, ...) now live in one hidden defs svg, created idempotently by whichever builder needs them first, so cross-widget url(#id) references survive extraction and any widget renders standalone. Probes green; behavioral pass now 60 checks.
* refactor(gallery): extract controls N01-N10 into GW buildersCraig Jennings9 hours1-0/+199
| | | | Rocker, transport cluster, preset bank, dual knob, encoder, key switch, crossfader, thumbwheel, DIP bank, and jog wheel move into widgets.js; their inline onclick globals (transport/preset/keyTurn/dip) become listeners inside the builders. Transport takes an explicit animate option so reduced-motion behavior is the consumer's call; its initial paint leaves reel play-state to CSS, matching load behavior. Probes green plus the per-widget behavioral pass (43 checks).
* refactor(gallery): extract controls 01-09, 24, 25 into GW buildersCraig Jennings9 hours1-0/+213
| | | | Eleven CSS-form controls (slide toggle, console keys, both faders, knob, segmented, chip, arm-to-fire, lamp row, rotary selector, slide-rule dial) move into widgets.js as parameterized builders returning handles; card() now accepts a builder function in place of stage HTML, so these cards are declarative records wiring GW.* onChange into their readouts. Probes green plus a per-widget behavioral pass over all eleven.
* refactor(gallery): extract the shared engine into widgets.jsCraig Jennings9 hours1-0/+122
First componentization batch per the component-generation spec: widgets.js is a classic script exposing the GW namespace (svgEl, polar, drag helpers, seg7, buildBars, VU law, SCREEN_FAMS) plus a css-injection scaffold that grows as builders move in. The gallery loads it via a relative script src and destructures the helpers, so file:// keeps working. Probes green.