@pudge-ui/mcp-server 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +10 -0
  2. package/dist/tools.d.ts +25 -0
  3. package/dist/tools.js +23 -13
  4. package/package.json +5 -4
  5. package/spec/components/.gstack/browse.json.lock +1 -0
  6. package/spec/spec/components/_index.yaml +0 -822
  7. package/spec/spec/components/buttons/clear-button.md +0 -89
  8. package/spec/spec/components/buttons/fn-grid.md +0 -104
  9. package/spec/spec/components/buttons/gel-button.md +0 -125
  10. package/spec/spec/components/buttons/icon-button.md +0 -108
  11. package/spec/spec/components/buttons/keypad-button.md +0 -123
  12. package/spec/spec/components/buttons/push-button.md +0 -139
  13. package/spec/spec/components/buttons/rec-button.md +0 -105
  14. package/spec/spec/components/buttons/rubber-button.md +0 -100
  15. package/spec/spec/components/buttons/segmented-control.md +0 -95
  16. package/spec/spec/components/data/assembled-panel.md +0 -135
  17. package/spec/spec/components/data/data-table.md +0 -116
  18. package/spec/spec/components/data/film-strip.md +0 -110
  19. package/spec/spec/components/data/media-grid.md +0 -98
  20. package/spec/spec/components/dials/click-wheel.md +0 -115
  21. package/spec/spec/components/dials/cylindrical-horizontal.md +0 -130
  22. package/spec/spec/components/dials/cylindrical-scroll.md +0 -141
  23. package/spec/spec/components/dials/cylindrical-vertical.md +0 -100
  24. package/spec/spec/components/dials/mode-dial.md +0 -123
  25. package/spec/spec/components/dials/radial-knob.md +0 -150
  26. package/spec/spec/components/dials/rotary-encoder.md +0 -118
  27. package/spec/spec/components/forms/color-picker.md +0 -99
  28. package/spec/spec/components/forms/file-input.md +0 -105
  29. package/spec/spec/components/forms/search-bar.md +0 -96
  30. package/spec/spec/components/forms/select.md +0 -143
  31. package/spec/spec/components/forms/text-input.md +0 -114
  32. package/spec/spec/components/forms/textarea.md +0 -85
  33. package/spec/spec/components/indicators/accordion.md +0 -137
  34. package/spec/spec/components/indicators/badges.md +0 -87
  35. package/spec/spec/components/indicators/chips.md +0 -93
  36. package/spec/spec/components/indicators/led-dots.md +0 -103
  37. package/spec/spec/components/indicators/mode-badge.md +0 -97
  38. package/spec/spec/components/indicators/profile-badge.md +0 -99
  39. package/spec/spec/components/indicators/skeleton.md +0 -94
  40. package/spec/spec/components/indicators/spinners.md +0 -95
  41. package/spec/spec/components/indicators/status-chips.md +0 -85
  42. package/spec/spec/components/indicators/transport-controls.md +0 -114
  43. package/spec/spec/components/meters/battery-icon.md +0 -104
  44. package/spec/spec/components/meters/eq-bars.md +0 -93
  45. package/spec/spec/components/meters/ev-meter.md +0 -96
  46. package/spec/spec/components/meters/exposure-scale.md +0 -110
  47. package/spec/spec/components/meters/gauge-full.md +0 -102
  48. package/spec/spec/components/meters/gauge-semi.md +0 -113
  49. package/spec/spec/components/meters/histogram.md +0 -70
  50. package/spec/spec/components/meters/level-indicator.md +0 -95
  51. package/spec/spec/components/meters/oscilloscope.md +0 -83
  52. package/spec/spec/components/meters/progress-bar.md +0 -84
  53. package/spec/spec/components/meters/signal-bars.md +0 -80
  54. package/spec/spec/components/meters/signal-meter.md +0 -84
  55. package/spec/spec/components/meters/vu-meter.md +0 -88
  56. package/spec/spec/components/meters/waveform.md +0 -70
  57. package/spec/spec/components/navigation/breadcrumbs.md +0 -94
  58. package/spec/spec/components/navigation/context-menu.md +0 -94
  59. package/spec/spec/components/navigation/d-pad.md +0 -121
  60. package/spec/spec/components/navigation/drawer.md +0 -103
  61. package/spec/spec/components/navigation/menu-grid.md +0 -113
  62. package/spec/spec/components/navigation/menu-list.md +0 -134
  63. package/spec/spec/components/navigation/pagination.md +0 -100
  64. package/spec/spec/components/navigation/rack-panel.md +0 -124
  65. package/spec/spec/components/navigation/scrollbar.md +0 -97
  66. package/spec/spec/components/navigation/status-bar.md +0 -117
  67. package/spec/spec/components/navigation/tab-bar.md +0 -104
  68. package/spec/spec/components/overlays/chassis-panel.md +0 -94
  69. package/spec/spec/components/overlays/device-bezel.md +0 -83
  70. package/spec/spec/components/overlays/dialog.md +0 -100
  71. package/spec/spec/components/overlays/focus-brackets.md +0 -124
  72. package/spec/spec/components/overlays/grid-overlay.md +0 -93
  73. package/spec/spec/components/overlays/modal.md +0 -89
  74. package/spec/spec/components/overlays/panel.md +0 -114
  75. package/spec/spec/components/overlays/plastic-card.md +0 -92
  76. package/spec/spec/components/overlays/popover.md +0 -75
  77. package/spec/spec/components/overlays/toast.md +0 -93
  78. package/spec/spec/components/overlays/tooltip.md +0 -85
  79. package/spec/spec/components/readouts/camera-readout.md +0 -123
  80. package/spec/spec/components/readouts/dot-matrix.md +0 -88
  81. package/spec/spec/components/readouts/lcd-readout.md +0 -116
  82. package/spec/spec/components/readouts/resource-monitor.md +0 -98
  83. package/spec/spec/components/readouts/seven-segment.md +0 -110
  84. package/spec/spec/components/readouts/signal-display.md +0 -93
  85. package/spec/spec/components/readouts/timecode-display.md +0 -94
  86. package/spec/spec/components/sliders/crossfader.md +0 -102
  87. package/spec/spec/components/sliders/dual-range.md +0 -97
  88. package/spec/spec/components/sliders/range-fader.md +0 -100
  89. package/spec/spec/components/sliders/scrubber.md +0 -104
  90. package/spec/spec/components/sliders/stepper.md +0 -106
  91. package/spec/spec/components/sliders/vertical-fader.md +0 -116
  92. package/spec/spec/components/sliders/volume-slider.md +0 -107
  93. package/spec/spec/components/toggles/dip-switch.md +0 -100
  94. package/spec/spec/components/toggles/led-checkbox.md +0 -108
  95. package/spec/spec/components/toggles/power-toggle.md +0 -93
  96. package/spec/spec/components/toggles/radio-button.md +0 -106
  97. package/spec/spec/components/toggles/rocker-switch.md +0 -92
  98. package/spec/spec/components/toggles/slide-switch.md +0 -121
  99. package/spec/spec/components/toggles/toggle-switch.md +0 -135
  100. package/spec/spec/compositions/audio-mixer-strip.md +0 -62
  101. package/spec/spec/compositions/camera-viewfinder.md +0 -66
  102. package/spec/spec/compositions/phone-interface.md +0 -66
  103. package/spec/spec/foundation/accessibility.md +0 -33
  104. package/spec/spec/foundation/canvas.md +0 -20
  105. package/spec/spec/foundation/depth-model.md +0 -82
  106. package/spec/spec/foundation/layout.md +0 -33
  107. package/spec/spec/foundation/materials.md +0 -68
  108. package/spec/spec/foundation/naming.md +0 -33
  109. package/spec/spec/foundation/philosophy.md +0 -27
  110. package/spec/spec/foundation/theme.md +0 -39
  111. package/spec/spec/foundation/tokens.md +0 -148
  112. package/spec/spec/guides/extension.md +0 -189
  113. package/spec/spec/guides/for-llms.md +0 -129
  114. package/spec/spec/guides/prompt-templates.md +0 -143
@@ -1,95 +0,0 @@
1
- ---
2
- name: Level Indicator
3
- id: level-bar
4
- class: .level-bar
5
- category: meters
6
- index: 10
7
- materials: [panel]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # Level Indicator
15
-
16
- ## Physical Analog
17
- **Reference devices**: Camera electronic level/horizon indicator (Sony Alpha, Nikon Z series).
18
- **Mechanism**: Derived from spirit level / bubble level. Accelerometer data drives bar indicator where center mark = level (0 degrees). Fill represents current tilt angle and direction.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Bar | 160px wide x 8px height |
25
- | Center mark | 1px at 50% |
26
- | Fill | Amber, positioned relative to center |
27
- | Border-radius | pill (100px) |
28
-
29
- ## CSS Recipe
30
-
31
- ### Wrapper
32
- ```css
33
- .level-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; }
34
- ```
35
-
36
- ### Bar
37
- ```css
38
- .level-bar {
39
- width: 160px; height: 8px; background: var(--bg-inset);
40
- border: 1px solid var(--border-subtle); border-radius: var(--radius-pill);
41
- position: relative; overflow: hidden; box-shadow: inset 0 1px 3px rgba(0,0,0,0.4);
42
- }
43
- ```
44
-
45
- ### Fill
46
- ```css
47
- .level-fill {
48
- position: absolute; top: 1px; bottom: 1px;
49
- background: var(--amber); border-radius: var(--radius-pill);
50
- transition: left 0.1s, width 0.1s;
51
- }
52
- ```
53
-
54
- ### Center Mark
55
- ```css
56
- .level-center-mark { position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; background: #444; z-index: 2; }
57
- ```
58
-
59
- ### Text Label
60
- ```css
61
- .level-text { font-size: 8px; color: var(--text-muted); letter-spacing: 2px; font-family: var(--font-ui); }
62
- ```
63
-
64
- ## HTML Structure
65
- ```html
66
- <div class="level-wrap">
67
- <div class="level-bar">
68
- <div class="level-center-mark"></div>
69
- <div class="level-fill" style="left:45%;width:10%"></div>
70
- </div>
71
- <span class="level-text">HORIZON &mdash; +2&deg;</span>
72
- </div>
73
- ```
74
-
75
- ## Size Variants
76
- No explicit size variants.
77
-
78
- ## Material Variants
79
- - Bar: Recessed panel with pill shape
80
- - Fill: Solid amber
81
-
82
- ## Theme Behavior
83
- - Bar adapts via tokens
84
- - Amber fill is fixed
85
- - Center mark is fixed at `#444`
86
-
87
- ## Constraints
88
- 1. Center mark MUST be at exact 50% horizontal position.
89
- 2. Fill uses `left` and `width` to show position and magnitude of tilt.
90
- 3. Pill border-radius (100px) for level-instrument aesthetic.
91
- 4. Fill transitions use 0.1s for responsive feedback.
92
-
93
- ## Accessibility
94
- - Use `role="meter"` with `aria-valuenow` for tilt angle
95
- - `aria-label="Horizon level"`
@@ -1,83 +0,0 @@
1
- ---
2
- name: Oscilloscope
3
- id: oscilloscope
4
- class: .oscilloscope
5
- category: meters
6
- index: 14
7
- materials: [phosphor-screen]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: true
11
- canvas: true
12
- ---
13
-
14
- # Oscilloscope
15
-
16
- ## Physical Analog
17
- **Reference devices**: Tektronix analog oscilloscopes, audio test equipment, synthesizer waveform monitors.
18
- **Mechanism**: Cathode ray tube (CRT) display. Electron beam deflected by input signal (vertical) while swept horizontally at constant rate. Beam strikes P31 phosphor screen which glows briefly, creating trailing afterglow effect.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Container | 200x80px |
25
- | Center line | 1px at 50% height (zero-voltage reference) |
26
- | Canvas | Full container size |
27
-
28
- ## CSS Recipe
29
-
30
- ### Container
31
- ```css
32
- .oscilloscope {
33
- width: 200px; height: 80px; background: var(--bg-inset);
34
- border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
35
- box-shadow: inset 0 1px 4px rgba(0,0,0,0.5); position: relative; overflow: hidden;
36
- }
37
- ```
38
-
39
- ### Zero Reference Line
40
- ```css
41
- .oscilloscope-line {
42
- position: absolute; top: 50%; left: 0; right: 0; height: 1px;
43
- background: rgba(102,255,102,0.15);
44
- }
45
- ```
46
-
47
- ### Canvas
48
- ```css
49
- .oscilloscope canvas { display: block; width: 100%; height: 100%; }
50
- ```
51
-
52
- ## HTML Structure
53
- ```html
54
- <div class="oscilloscope">
55
- <div class="oscilloscope-line"></div>
56
- <canvas width="200" height="80" id="oscCanvas"></canvas>
57
- </div>
58
- ```
59
-
60
- ## Size Variants
61
- No explicit size variants.
62
-
63
- ## Material Variants
64
- Single material: Phosphor screen (CRT display).
65
-
66
- ## Theme Behavior
67
- - Container adapts via tokens
68
- - Phosphor green color is fixed
69
- - Center line green tint is fixed
70
-
71
- ## Constraints
72
- 1. Background fade (`rgba(14,12,10,0.3)` fill each frame) simulates phosphor decay -- previous trace fades gradually.
73
- 2. Trace color MUST be green (`rgba(102,255,102,0.8)`) matching P31 phosphor.
74
- 3. Canvas `shadowBlur` of 4px green simulates phosphor glow/bloom.
75
- 4. Center reference line is ALWAYS faintly visible (zero-voltage reference), even with no signal.
76
- 5. Animation uses `requestAnimationFrame` loop.
77
- 6. Waveform: `sin(x*0.06 + t)` + harmonics with time offset.
78
-
79
- ## Accessibility
80
- - Use `role="img"` with `aria-label` on the canvas
81
- - Provide text description of the waveform if informational
82
- - Consider `prefers-reduced-motion` to pause animation
83
- - Requires JS for canvas animation
@@ -1,84 +0,0 @@
1
- ---
2
- name: Progress Bar
3
- id: progress-track
4
- class: .progress-track
5
- category: meters
6
- index: 7
7
- materials: [panel]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # Progress Bar
15
-
16
- ## Physical Analog
17
- **Reference devices**: iPod file transfer progress, Windows XP file copy dialog, CD burning progress.
18
- **Mechanism**: Linear indicator showing completion percentage of time-bound process. Track = total work, fill = completed work.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Track | 100% width x 8px height |
25
- | Fill gradient | Blue-to-green |
26
- | Container width | 180px |
27
-
28
- ## CSS Recipe
29
-
30
- ### Wrapper
31
- ```css
32
- .progress-wrap { display: flex; flex-direction: column; gap: 4px; width: 180px; }
33
- ```
34
-
35
- ### Track
36
- ```css
37
- .progress-track {
38
- width: 100%; height: 8px; border-radius: 4px;
39
- background: var(--bg-inset); border: 1px solid var(--border-subtle);
40
- overflow: hidden; box-shadow: var(--shadow-inset);
41
- }
42
- ```
43
-
44
- ### Fill
45
- ```css
46
- .progress-fill { height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--blue-info), var(--green-on)); transition: width 0.3s var(--ease-out); }
47
- ```
48
-
49
- ### Label
50
- ```css
51
- .progress-label {
52
- display: flex; justify-content: space-between;
53
- font-family: var(--font-ui); font-size: 9px; font-weight: 500;
54
- color: var(--text-muted); letter-spacing: 1px;
55
- }
56
- ```
57
-
58
- ## HTML Structure
59
- ```html
60
- <div class="progress-wrap">
61
- <div class="progress-track"><div class="progress-fill" style="width:65%"></div></div>
62
- <div class="progress-label"><span>TRANSFER</span><span>65%</span></div>
63
- </div>
64
- ```
65
-
66
- ## Size Variants
67
- No explicit size variants.
68
-
69
- ## Material Variants
70
- - Track: Recessed panel
71
- - Fill: Blue-to-green gradient
72
-
73
- ## Theme Behavior
74
- - Track adapts via tokens
75
- - Fill gradient colors are fixed
76
-
77
- ## Constraints
78
- 1. Fill transition MUST use `--ease-out` with 0.3s duration for smooth progress animation.
79
- 2. Track has `overflow: hidden` to clip the fill at edges.
80
- 3. Label row shows description on left, percentage on right.
81
-
82
- ## Accessibility
83
- - Use `role="progressbar"` with `aria-valuenow`, `aria-valuemin="0"`, `aria-valuemax="100"`
84
- - `aria-label` should describe the process
@@ -1,80 +0,0 @@
1
- ---
2
- name: Signal Bars
3
- id: signal-bars
4
- class: .signal-bars
5
- category: meters
6
- index: 8
7
- materials: [panel]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # Signal Bars
15
-
16
- ## Physical Analog
17
- **Reference devices**: Nokia phone signal indicator (universally adopted since ~1998).
18
- **Mechanism**: Received signal strength indication (RSSI) from cellular radio. 5-bar ascending staircase standardized by Nokia. Each bar = one step of signal quality. Bars light left-to-right as signal improves. Unlit bars shown as dim outlines.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Container height | 24px |
25
- | Bar width | 4px |
26
- | Bar gap | 3px |
27
- | Bar heights | 6px, 10px, 14px, 18px, 22px (ascending) |
28
-
29
- ## CSS Recipe
30
-
31
- ### Container
32
- ```css
33
- .signal-bars { display: flex; align-items: flex-end; gap: 3px; height: 24px; }
34
- ```
35
-
36
- ### Bars
37
- ```css
38
- .signal-strength-bar { width: 4px; border-radius: 1px; background: var(--green-on); transition: opacity 0.2s; }
39
- .signal-strength-bar:nth-child(1) { height: 6px; }
40
- .signal-strength-bar:nth-child(2) { height: 10px; }
41
- .signal-strength-bar:nth-child(3) { height: 14px; }
42
- .signal-strength-bar:nth-child(4) { height: 18px; }
43
- .signal-strength-bar:nth-child(5) { height: 22px; }
44
- ```
45
-
46
- ### Off State (Dim)
47
- ```css
48
- .signal-strength-bar.off { opacity: 0.15; background: var(--text-muted); }
49
- ```
50
-
51
- ## HTML Structure
52
- ```html
53
- <div class="signal-bars">
54
- <div class="signal-strength-bar"></div>
55
- <div class="signal-strength-bar"></div>
56
- <div class="signal-strength-bar"></div>
57
- <div class="signal-strength-bar off"></div>
58
- <div class="signal-strength-bar off"></div>
59
- </div>
60
- ```
61
-
62
- ## Size Variants
63
- No explicit size variants.
64
-
65
- ## Material Variants
66
- - Active: Solid green
67
- - Off: Muted at 15% opacity
68
-
69
- ## Theme Behavior
70
- - Green bar color is fixed
71
- - Off state uses `--text-muted` (adapts per theme)
72
-
73
- ## Constraints
74
- 1. Bars MUST ascend left-to-right (6, 10, 14, 18, 22px).
75
- 2. Off bars MUST use `.off` class with `opacity: 0.15` and muted color.
76
- 3. Always 5 bars total (Nokia convention).
77
- 4. Bar border-radius is 1px (minimal rounding).
78
-
79
- ## Accessibility
80
- - Use `role="img"` with `aria-label` (e.g., "Signal strength: 3 of 5 bars")
@@ -1,84 +0,0 @@
1
- ---
2
- name: Signal Meter
3
- id: signal-meter
4
- class: .signal-meter
5
- category: meters
6
- index: 1
7
- materials: [phosphor-screen]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # Signal Meter
15
-
16
- ## Physical Analog
17
- **Reference devices**: Graphic equalizer displays (Pioneer, Kenwood car stereos), Winamp visualization, broadcast spectrum analyzers.
18
- **Mechanism**: LED bar graph array. Each bar is a vertical column of LEDs (8-16 per column, 4-16 columns). Column height represents amplitude of a frequency band. LEDs light bottom-to-top. Green-to-red gradient via different colored LEDs at different heights.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Container height | 100px |
25
- | Bar width | 16px |
26
- | Bar gap | 6px |
27
- | Bar radius | 3px top corners |
28
-
29
- ## CSS Recipe
30
-
31
- ### Container
32
- ```css
33
- .signal-meter { display: flex; align-items: flex-end; gap: 6px; height: 100px; }
34
- ```
35
-
36
- ### Individual Bar
37
- ```css
38
- .signal-bar {
39
- width: 16px; border-radius: 3px 3px 0 0;
40
- background: linear-gradient(180deg, var(--green-hi), var(--green-on));
41
- box-shadow: 0 0 8px rgba(102,255,102,0.15);
42
- animation: fluctuate 2s infinite ease-in-out;
43
- }
44
- ```
45
-
46
- ### Fluctuation Animation
47
- ```css
48
- @keyframes fluctuate { 0%,100%{filter:brightness(1)} 50%{filter:brightness(1.25)} }
49
- ```
50
-
51
- ## HTML Structure
52
- ```html
53
- <div class="signal-meter">
54
- <div class="signal-bar" style="height:28%"></div>
55
- <div class="signal-bar" style="height:55%"></div>
56
- <div class="signal-bar" style="height:80%"></div>
57
- <div class="signal-bar" style="height:42%"></div>
58
- <div class="signal-bar" style="height:64%"></div>
59
- <div class="signal-bar" style="height:35%"></div>
60
- <div class="signal-bar" style="height:72%"></div>
61
- <div class="signal-bar" style="height:50%"></div>
62
- </div>
63
- ```
64
-
65
- ## Size Variants
66
- No explicit size variants. Heights set per bar via inline style.
67
-
68
- ## Material Variants
69
- Single material: LED bars with green gradient and glow.
70
-
71
- ## Theme Behavior
72
- - LED colors and glow are fixed (LEDs emit their own light)
73
- - Container has no background (transparent)
74
-
75
- ## Constraints
76
- 1. Bars MUST align to bottom (`align-items: flex-end`).
77
- 2. Bar heights are set individually per bar via inline `style`.
78
- 3. `fluctuate` animation simulates continuous signal variation.
79
- 4. Border-radius only on top corners (bars grow from bottom).
80
- 5. Subtle glow (`0 0 8px rgba(102,255,102,0.15)`) simulates LED light spill.
81
-
82
- ## Accessibility
83
- - Decorative visualization; use `aria-hidden="true"` if purely decorative
84
- - If informational, use `role="img"` with `aria-label` describing the signal levels
@@ -1,88 +0,0 @@
1
- ---
2
- name: VU Meter
3
- id: vu-meter
4
- class: .vu-meter
5
- category: meters
6
- index: 3
7
- materials: [phosphor-screen]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # VU Meter
15
-
16
- ## Physical Analog
17
- **Reference devices**: Tascam 424 cassette portastudio, Mackie mixer channel meters, Yamaha mixer LED meters.
18
- **Mechanism**: Volume Unit meter displaying audio signal level. Standardized ballistic response (300ms integration time) representing perceived loudness. Green-to-amber-to-red gradient: green = safe, amber = approaching 0dBVU, red = clipping.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Container height | 80px |
25
- | Bar width | 12px |
26
- | Bar gap | 4px |
27
- | Bar gradient | Red top, amber middle, green bottom |
28
-
29
- ## CSS Recipe
30
-
31
- ### Wrapper
32
- ```css
33
- .vu-wrap { display: flex; flex-direction: column; align-items: center; gap: 6px; }
34
- ```
35
-
36
- ### Container
37
- ```css
38
- .vu-meter { display: flex; align-items: flex-end; gap: 4px; height: 80px; }
39
- ```
40
-
41
- ### Bar
42
- ```css
43
- .vu-bar {
44
- width: 12px; border-radius: 2px 2px 0 0;
45
- background: linear-gradient(180deg, #ff4444, #ffaa00 50%, #44cc66);
46
- min-height: 4px;
47
- }
48
- ```
49
-
50
- ### Label
51
- ```css
52
- .vu-label { font-family: var(--font-ui); font-size: 8px; font-weight: 500; letter-spacing: 2px; color: var(--text-muted); }
53
- ```
54
-
55
- ## HTML Structure
56
- ```html
57
- <div class="vu-wrap">
58
- <div class="vu-meter">
59
- <div class="vu-bar" style="height:55%"></div>
60
- <div class="vu-bar" style="height:75%"></div>
61
- <div class="vu-bar" style="height:90%"></div>
62
- <div class="vu-bar" style="height:60%"></div>
63
- <div class="vu-bar" style="height:40%"></div>
64
- <div class="vu-bar" style="height:70%"></div>
65
- </div>
66
- <span class="vu-label">L CHANNEL</span>
67
- </div>
68
- ```
69
-
70
- ## Size Variants
71
- No explicit size variants.
72
-
73
- ## Material Variants
74
- Single gradient bar style. The tri-color gradient automatically shows correct color at any height.
75
-
76
- ## Theme Behavior
77
- - Bar gradient colors are fixed (LED colors)
78
- - Label adapts via `--text-muted`
79
-
80
- ## Constraints
81
- 1. Bar gradient MUST be `linear-gradient(180deg, #ff4444, #ffaa00 50%, #44cc66)` -- single gradient per bar automatically creates correct color at any height.
82
- 2. Bars align to bottom (`flex-end`).
83
- 3. Minimum height of 4px ensures bars are always visible.
84
- 4. Border-radius only on top corners.
85
-
86
- ## Accessibility
87
- - Use `role="img"` with `aria-label` describing the levels
88
- - Or `aria-hidden="true"` if paired with numeric readout
@@ -1,70 +0,0 @@
1
- ---
2
- name: Waveform
3
- id: waveform-wrap
4
- class: .waveform-wrap
5
- category: meters
6
- index: 6
7
- materials: [phosphor-screen]
8
- sizes: [md]
9
- interactive: false
10
- requires_js: true
11
- canvas: true
12
- ---
13
-
14
- # Waveform
15
-
16
- ## Physical Analog
17
- **Reference devices**: Final Cut Pro waveform monitor, DaVinci Resolve parade scope, broadcast waveform monitors.
18
- **Mechanism**: Shows brightness value for each horizontal position in image. Y-axis = luma level (0-100 IRE). Used in broadcast to ensure legal signal levels.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Canvas | 200x80px |
25
- | Container padding | 2px |
26
- | Border-radius | var(--radius-sm) |
27
-
28
- ## CSS Recipe
29
-
30
- ### Container
31
- ```css
32
- .waveform-wrap {
33
- background: #0a0a0a; border: 1px solid #1e1e1e;
34
- border-radius: var(--radius-sm); padding: 2px;
35
- box-shadow: inset 0 1px 4px rgba(0,0,0,0.6);
36
- }
37
- ```
38
-
39
- ### Canvas
40
- ```css
41
- .waveform-canvas { display: block; border-radius: 2px; }
42
- ```
43
-
44
- ## HTML Structure
45
- ```html
46
- <div class="waveform-wrap">
47
- <canvas class="waveform-canvas" width="200" height="80" id="waveCanvas"></canvas>
48
- </div>
49
- ```
50
-
51
- ## Size Variants
52
- No explicit size variants.
53
-
54
- ## Material Variants
55
- Single material: Phosphor screen.
56
-
57
- ## Theme Behavior
58
- - Container uses hardcoded dark colors
59
- - Canvas content rendered by JS
60
-
61
- ## Constraints
62
- 1. Canvas renders 200x80px audio waveform.
63
- 2. Single stroke path using compound sine waves (`sin(x*0.08)` + `sin(x*0.03)`) with random jitter.
64
- 3. Stroke color: `rgba(102,255,102,0.6)`, 1px line width.
65
- 4. Container MUST match histogram container styling.
66
- 5. Requires JS for canvas rendering.
67
-
68
- ## Accessibility
69
- - Use `role="img"` on canvas with `aria-label`
70
- - Provide text fallback for screen readers
@@ -1,94 +0,0 @@
1
- ---
2
- name: Breadcrumbs
3
- id: breadcrumbs
4
- class: .breadcrumbs
5
- category: navigation
6
- index: 7
7
- materials: []
8
- sizes: [default]
9
- interactive: true
10
- requires_js: false
11
- canvas: false
12
- ---
13
-
14
- # Breadcrumbs
15
-
16
- ## Physical Analog
17
- **Reference devices**: Channel strip label chains on mixing desks.
18
- **Mechanism**: Represents a navigation path -- derived from the channel routing labels on mixing console signal chains (INPUT -> PREAMP -> EQ -> COMP -> BUS). Each segment represents a level in the navigation hierarchy, with separators indicating signal flow direction.
19
-
20
- ## Geometry
21
-
22
- | Property | Value |
23
- |----------|-------|
24
- | Gap | 6px |
25
- | Font size | 10px |
26
- | Separator font size | 8px |
27
- | Letter spacing | 1px |
28
-
29
- ## CSS Recipe
30
-
31
- ### Container (`.breadcrumbs`)
32
- ```css
33
- .breadcrumbs {
34
- display: flex; align-items: center; gap: 6px;
35
- font-family: var(--font-ui); font-size: 10px; font-weight: 500;
36
- color: var(--text-muted); letter-spacing: 1px;
37
- }
38
- ```
39
-
40
- ### Item (`.breadcrumb-item`)
41
- ```css
42
- .breadcrumb-item { cursor: pointer; transition: color 0.12s; }
43
- ```
44
-
45
- ### Hover
46
- ```css
47
- .breadcrumb-item:hover { color: var(--text-primary); }
48
- ```
49
-
50
- ### Active (current location)
51
- ```css
52
- .breadcrumb-item.active { color: var(--amber); }
53
- ```
54
-
55
- ### Separator (`.breadcrumb-sep`)
56
- ```css
57
- .breadcrumb-sep { color: var(--text-muted); opacity: 0.5; font-size: 8px; }
58
- ```
59
-
60
- ## HTML Structure
61
- ```html
62
- <div class="breadcrumbs">
63
- <span class="breadcrumb-item">HOME</span>
64
- <span class="breadcrumb-sep">&#9654;</span>
65
- <span class="breadcrumb-item">SETTINGS</span>
66
- <span class="breadcrumb-sep">&#9654;</span>
67
- <span class="breadcrumb-item active">DISPLAY</span>
68
- </div>
69
- ```
70
-
71
- ## Size Variants
72
- No size variants defined.
73
-
74
- ## Material Variants
75
- No material variants. Text-only component.
76
-
77
- ## Theme Behavior
78
- - Text colors swap via `--text-muted`, `--text-primary` tokens
79
- - Active item always uses `--amber`
80
- - Separator opacity remains constant
81
-
82
- ## Constraints
83
- 1. MUST use right-pointing triangle (&#9654;) as separator to indicate signal flow direction
84
- 2. Separator MUST be at 50% opacity to maintain visual hierarchy
85
- 3. Current/active item MUST be amber colored
86
- 4. Previous items MUST be clickable (navigable)
87
- 5. MUST use uppercase text (mixing desk convention)
88
-
89
- ## Accessibility
90
- - Container should have `role="navigation"` and `aria-label="Breadcrumb"`
91
- - Use `<nav>` element as wrapper
92
- - Use `<ol>` with `<li>` for semantic list structure
93
- - Current item should have `aria-current="page"`
94
- - Separators should be decorative (`aria-hidden="true"`)