@pudge-ui/mcp-server 0.1.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.
- package/README.md +63 -0
- package/dist/__tests__/catalog.test.d.ts +1 -0
- package/dist/__tests__/catalog.test.js +50 -0
- package/dist/__tests__/search.test.d.ts +1 -0
- package/dist/__tests__/search.test.js +44 -0
- package/dist/__tests__/validation.test.d.ts +1 -0
- package/dist/__tests__/validation.test.js +34 -0
- package/dist/assembler.d.ts +6 -0
- package/dist/assembler.js +95 -0
- package/dist/catalog.d.ts +22 -0
- package/dist/catalog.js +10 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +33 -0
- package/dist/search.d.ts +5 -0
- package/dist/search.js +21 -0
- package/dist/tools.d.ts +105 -0
- package/dist/tools.js +129 -0
- package/package.json +55 -0
- package/spec/components/_index.yaml +822 -0
- package/spec/components/buttons/clear-button.md +89 -0
- package/spec/components/buttons/fn-grid.md +104 -0
- package/spec/components/buttons/gel-button.md +125 -0
- package/spec/components/buttons/icon-button.md +108 -0
- package/spec/components/buttons/keypad-button.md +123 -0
- package/spec/components/buttons/push-button.md +139 -0
- package/spec/components/buttons/rec-button.md +105 -0
- package/spec/components/buttons/rubber-button.md +100 -0
- package/spec/components/buttons/segmented-control.md +95 -0
- package/spec/components/data/assembled-panel.md +135 -0
- package/spec/components/data/data-table.md +116 -0
- package/spec/components/data/film-strip.md +110 -0
- package/spec/components/data/media-grid.md +98 -0
- package/spec/components/dials/click-wheel.md +115 -0
- package/spec/components/dials/cylindrical-horizontal.md +130 -0
- package/spec/components/dials/cylindrical-scroll.md +141 -0
- package/spec/components/dials/cylindrical-vertical.md +100 -0
- package/spec/components/dials/mode-dial.md +123 -0
- package/spec/components/dials/radial-knob.md +150 -0
- package/spec/components/dials/rotary-encoder.md +118 -0
- package/spec/components/forms/color-picker.md +99 -0
- package/spec/components/forms/file-input.md +105 -0
- package/spec/components/forms/search-bar.md +96 -0
- package/spec/components/forms/select.md +143 -0
- package/spec/components/forms/text-input.md +114 -0
- package/spec/components/forms/textarea.md +85 -0
- package/spec/components/indicators/accordion.md +137 -0
- package/spec/components/indicators/badges.md +87 -0
- package/spec/components/indicators/chips.md +93 -0
- package/spec/components/indicators/led-dots.md +103 -0
- package/spec/components/indicators/mode-badge.md +97 -0
- package/spec/components/indicators/profile-badge.md +99 -0
- package/spec/components/indicators/skeleton.md +94 -0
- package/spec/components/indicators/spinners.md +95 -0
- package/spec/components/indicators/status-chips.md +85 -0
- package/spec/components/indicators/transport-controls.md +114 -0
- package/spec/components/meters/battery-icon.md +104 -0
- package/spec/components/meters/eq-bars.md +93 -0
- package/spec/components/meters/ev-meter.md +96 -0
- package/spec/components/meters/exposure-scale.md +110 -0
- package/spec/components/meters/gauge-full.md +102 -0
- package/spec/components/meters/gauge-semi.md +113 -0
- package/spec/components/meters/histogram.md +70 -0
- package/spec/components/meters/level-indicator.md +95 -0
- package/spec/components/meters/oscilloscope.md +83 -0
- package/spec/components/meters/progress-bar.md +84 -0
- package/spec/components/meters/signal-bars.md +80 -0
- package/spec/components/meters/signal-meter.md +84 -0
- package/spec/components/meters/vu-meter.md +88 -0
- package/spec/components/meters/waveform.md +70 -0
- package/spec/components/navigation/breadcrumbs.md +94 -0
- package/spec/components/navigation/context-menu.md +94 -0
- package/spec/components/navigation/d-pad.md +121 -0
- package/spec/components/navigation/drawer.md +103 -0
- package/spec/components/navigation/menu-grid.md +113 -0
- package/spec/components/navigation/menu-list.md +134 -0
- package/spec/components/navigation/pagination.md +100 -0
- package/spec/components/navigation/rack-panel.md +124 -0
- package/spec/components/navigation/scrollbar.md +97 -0
- package/spec/components/navigation/status-bar.md +117 -0
- package/spec/components/navigation/tab-bar.md +104 -0
- package/spec/components/overlays/chassis-panel.md +94 -0
- package/spec/components/overlays/device-bezel.md +83 -0
- package/spec/components/overlays/dialog.md +100 -0
- package/spec/components/overlays/focus-brackets.md +124 -0
- package/spec/components/overlays/grid-overlay.md +93 -0
- package/spec/components/overlays/modal.md +89 -0
- package/spec/components/overlays/panel.md +114 -0
- package/spec/components/overlays/plastic-card.md +92 -0
- package/spec/components/overlays/popover.md +75 -0
- package/spec/components/overlays/toast.md +93 -0
- package/spec/components/overlays/tooltip.md +85 -0
- package/spec/components/readouts/camera-readout.md +123 -0
- package/spec/components/readouts/dot-matrix.md +88 -0
- package/spec/components/readouts/lcd-readout.md +116 -0
- package/spec/components/readouts/resource-monitor.md +98 -0
- package/spec/components/readouts/seven-segment.md +110 -0
- package/spec/components/readouts/signal-display.md +93 -0
- package/spec/components/readouts/timecode-display.md +94 -0
- package/spec/components/sliders/crossfader.md +102 -0
- package/spec/components/sliders/dual-range.md +97 -0
- package/spec/components/sliders/range-fader.md +100 -0
- package/spec/components/sliders/scrubber.md +104 -0
- package/spec/components/sliders/stepper.md +106 -0
- package/spec/components/sliders/vertical-fader.md +116 -0
- package/spec/components/sliders/volume-slider.md +107 -0
- package/spec/components/toggles/dip-switch.md +100 -0
- package/spec/components/toggles/led-checkbox.md +108 -0
- package/spec/components/toggles/power-toggle.md +93 -0
- package/spec/components/toggles/radio-button.md +106 -0
- package/spec/components/toggles/rocker-switch.md +92 -0
- package/spec/components/toggles/slide-switch.md +121 -0
- package/spec/components/toggles/toggle-switch.md +135 -0
- package/spec/compositions/audio-mixer-strip.md +62 -0
- package/spec/compositions/camera-viewfinder.md +66 -0
- package/spec/compositions/phone-interface.md +66 -0
- package/spec/foundation/accessibility.md +33 -0
- package/spec/foundation/canvas.md +20 -0
- package/spec/foundation/depth-model.md +82 -0
- package/spec/foundation/layout.md +33 -0
- package/spec/foundation/materials.md +68 -0
- package/spec/foundation/naming.md +33 -0
- package/spec/foundation/philosophy.md +27 -0
- package/spec/foundation/theme.md +39 -0
- package/spec/foundation/tokens.md +148 -0
- package/spec/guides/extension.md +189 -0
- package/spec/guides/for-llms.md +129 -0
- package/spec/guides/prompt-templates.md +143 -0
- package/spec/spec/components/_index.yaml +822 -0
- package/spec/spec/components/buttons/clear-button.md +89 -0
- package/spec/spec/components/buttons/fn-grid.md +104 -0
- package/spec/spec/components/buttons/gel-button.md +125 -0
- package/spec/spec/components/buttons/icon-button.md +108 -0
- package/spec/spec/components/buttons/keypad-button.md +123 -0
- package/spec/spec/components/buttons/push-button.md +139 -0
- package/spec/spec/components/buttons/rec-button.md +105 -0
- package/spec/spec/components/buttons/rubber-button.md +100 -0
- package/spec/spec/components/buttons/segmented-control.md +95 -0
- package/spec/spec/components/data/assembled-panel.md +135 -0
- package/spec/spec/components/data/data-table.md +116 -0
- package/spec/spec/components/data/film-strip.md +110 -0
- package/spec/spec/components/data/media-grid.md +98 -0
- package/spec/spec/components/dials/click-wheel.md +115 -0
- package/spec/spec/components/dials/cylindrical-horizontal.md +130 -0
- package/spec/spec/components/dials/cylindrical-scroll.md +141 -0
- package/spec/spec/components/dials/cylindrical-vertical.md +100 -0
- package/spec/spec/components/dials/mode-dial.md +123 -0
- package/spec/spec/components/dials/radial-knob.md +150 -0
- package/spec/spec/components/dials/rotary-encoder.md +118 -0
- package/spec/spec/components/forms/color-picker.md +99 -0
- package/spec/spec/components/forms/file-input.md +105 -0
- package/spec/spec/components/forms/search-bar.md +96 -0
- package/spec/spec/components/forms/select.md +143 -0
- package/spec/spec/components/forms/text-input.md +114 -0
- package/spec/spec/components/forms/textarea.md +85 -0
- package/spec/spec/components/indicators/accordion.md +137 -0
- package/spec/spec/components/indicators/badges.md +87 -0
- package/spec/spec/components/indicators/chips.md +93 -0
- package/spec/spec/components/indicators/led-dots.md +103 -0
- package/spec/spec/components/indicators/mode-badge.md +97 -0
- package/spec/spec/components/indicators/profile-badge.md +99 -0
- package/spec/spec/components/indicators/skeleton.md +94 -0
- package/spec/spec/components/indicators/spinners.md +95 -0
- package/spec/spec/components/indicators/status-chips.md +85 -0
- package/spec/spec/components/indicators/transport-controls.md +114 -0
- package/spec/spec/components/meters/battery-icon.md +104 -0
- package/spec/spec/components/meters/eq-bars.md +93 -0
- package/spec/spec/components/meters/ev-meter.md +96 -0
- package/spec/spec/components/meters/exposure-scale.md +110 -0
- package/spec/spec/components/meters/gauge-full.md +102 -0
- package/spec/spec/components/meters/gauge-semi.md +113 -0
- package/spec/spec/components/meters/histogram.md +70 -0
- package/spec/spec/components/meters/level-indicator.md +95 -0
- package/spec/spec/components/meters/oscilloscope.md +83 -0
- package/spec/spec/components/meters/progress-bar.md +84 -0
- package/spec/spec/components/meters/signal-bars.md +80 -0
- package/spec/spec/components/meters/signal-meter.md +84 -0
- package/spec/spec/components/meters/vu-meter.md +88 -0
- package/spec/spec/components/meters/waveform.md +70 -0
- package/spec/spec/components/navigation/breadcrumbs.md +94 -0
- package/spec/spec/components/navigation/context-menu.md +94 -0
- package/spec/spec/components/navigation/d-pad.md +121 -0
- package/spec/spec/components/navigation/drawer.md +103 -0
- package/spec/spec/components/navigation/menu-grid.md +113 -0
- package/spec/spec/components/navigation/menu-list.md +134 -0
- package/spec/spec/components/navigation/pagination.md +100 -0
- package/spec/spec/components/navigation/rack-panel.md +124 -0
- package/spec/spec/components/navigation/scrollbar.md +97 -0
- package/spec/spec/components/navigation/status-bar.md +117 -0
- package/spec/spec/components/navigation/tab-bar.md +104 -0
- package/spec/spec/components/overlays/chassis-panel.md +94 -0
- package/spec/spec/components/overlays/device-bezel.md +83 -0
- package/spec/spec/components/overlays/dialog.md +100 -0
- package/spec/spec/components/overlays/focus-brackets.md +124 -0
- package/spec/spec/components/overlays/grid-overlay.md +93 -0
- package/spec/spec/components/overlays/modal.md +89 -0
- package/spec/spec/components/overlays/panel.md +114 -0
- package/spec/spec/components/overlays/plastic-card.md +92 -0
- package/spec/spec/components/overlays/popover.md +75 -0
- package/spec/spec/components/overlays/toast.md +93 -0
- package/spec/spec/components/overlays/tooltip.md +85 -0
- package/spec/spec/components/readouts/camera-readout.md +123 -0
- package/spec/spec/components/readouts/dot-matrix.md +88 -0
- package/spec/spec/components/readouts/lcd-readout.md +116 -0
- package/spec/spec/components/readouts/resource-monitor.md +98 -0
- package/spec/spec/components/readouts/seven-segment.md +110 -0
- package/spec/spec/components/readouts/signal-display.md +93 -0
- package/spec/spec/components/readouts/timecode-display.md +94 -0
- package/spec/spec/components/sliders/crossfader.md +102 -0
- package/spec/spec/components/sliders/dual-range.md +97 -0
- package/spec/spec/components/sliders/range-fader.md +100 -0
- package/spec/spec/components/sliders/scrubber.md +104 -0
- package/spec/spec/components/sliders/stepper.md +106 -0
- package/spec/spec/components/sliders/vertical-fader.md +116 -0
- package/spec/spec/components/sliders/volume-slider.md +107 -0
- package/spec/spec/components/toggles/dip-switch.md +100 -0
- package/spec/spec/components/toggles/led-checkbox.md +108 -0
- package/spec/spec/components/toggles/power-toggle.md +93 -0
- package/spec/spec/components/toggles/radio-button.md +106 -0
- package/spec/spec/components/toggles/rocker-switch.md +92 -0
- package/spec/spec/components/toggles/slide-switch.md +121 -0
- package/spec/spec/components/toggles/toggle-switch.md +135 -0
- package/spec/spec/compositions/audio-mixer-strip.md +62 -0
- package/spec/spec/compositions/camera-viewfinder.md +66 -0
- package/spec/spec/compositions/phone-interface.md +66 -0
- package/spec/spec/foundation/accessibility.md +33 -0
- package/spec/spec/foundation/canvas.md +20 -0
- package/spec/spec/foundation/depth-model.md +82 -0
- package/spec/spec/foundation/layout.md +33 -0
- package/spec/spec/foundation/materials.md +68 -0
- package/spec/spec/foundation/naming.md +33 -0
- package/spec/spec/foundation/philosophy.md +27 -0
- package/spec/spec/foundation/theme.md +39 -0
- package/spec/spec/foundation/tokens.md +148 -0
- package/spec/spec/guides/extension.md +189 -0
- package/spec/spec/guides/for-llms.md +129 -0
- package/spec/spec/guides/prompt-templates.md +143 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Toast
|
|
3
|
+
id: toast
|
|
4
|
+
class: .toast
|
|
5
|
+
category: overlays
|
|
6
|
+
index: 6
|
|
7
|
+
materials: [glossy-polycarbonate]
|
|
8
|
+
sizes: [default]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: true
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Toast
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: Nokia SMS arrival notification, iPod song change notification, camera "image saved" confirmation.
|
|
18
|
+
**Mechanism**: A transient notification bar that appears briefly and then dismisses automatically. The entry animation (`toastIn`) slides the element down from above with a slight scale-up -- simulating the way early phone notifications would "slide down" from the top of the screen. The animation uses `--snap-soft` easing for a damped settling effect.
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Min width | 180px |
|
|
25
|
+
| Padding | 8px 12px |
|
|
26
|
+
| Border radius | `--radius-md` (8px) |
|
|
27
|
+
| Element gap | 8px |
|
|
28
|
+
| Text font size | 10px |
|
|
29
|
+
| Time font size | 9px |
|
|
30
|
+
| Animation duration | 0.3s |
|
|
31
|
+
|
|
32
|
+
## CSS Recipe
|
|
33
|
+
|
|
34
|
+
### Container (`.toast`)
|
|
35
|
+
```css
|
|
36
|
+
.toast {
|
|
37
|
+
display: flex; align-items: center; gap: 8px;
|
|
38
|
+
background: var(--bg-raised); border: 1px solid var(--border-subtle);
|
|
39
|
+
border-radius: var(--radius-md); padding: 8px 12px; min-width: 180px;
|
|
40
|
+
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
|
|
41
|
+
animation: toastIn 0.3s var(--snap-soft);
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Entry animation
|
|
46
|
+
```css
|
|
47
|
+
@keyframes toastIn { from{opacity:0;transform:translateY(-8px) scale(0.96)} to{opacity:1;transform:translateY(0) scale(1)} }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Text (`.toast-text`)
|
|
51
|
+
```css
|
|
52
|
+
.toast-text { font-family: var(--font-ui); font-size: 10px; font-weight: 500; color: var(--text-primary); letter-spacing: 0.5px; }
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Time (`.toast-time`)
|
|
56
|
+
```css
|
|
57
|
+
.toast-time { font-family: var(--font-mono); font-size: 9px; color: var(--text-muted); margin-left: auto; flex-shrink: 0; }
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## HTML Structure
|
|
61
|
+
```html
|
|
62
|
+
<div class="toast">
|
|
63
|
+
<div class="led-dot green"></div>
|
|
64
|
+
<span class="toast-text">File saved successfully</span>
|
|
65
|
+
<span class="toast-time">12:45</span>
|
|
66
|
+
</div>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Size Variants
|
|
70
|
+
No size variants defined.
|
|
71
|
+
|
|
72
|
+
## Material Variants
|
|
73
|
+
No material variants. Uses standard raised surface.
|
|
74
|
+
|
|
75
|
+
## Theme Behavior
|
|
76
|
+
- Background swaps via `--bg-raised`
|
|
77
|
+
- Shadow reduces in light mode (0.2 ambient)
|
|
78
|
+
- Text colors adapt via tokens
|
|
79
|
+
- LED dot follows its own color rules
|
|
80
|
+
|
|
81
|
+
## Constraints
|
|
82
|
+
1. MUST use `toastIn` animation on appearance
|
|
83
|
+
2. Animation MUST use `--snap-soft` easing (damped settle)
|
|
84
|
+
3. MUST include status LED dot on the left for type indication
|
|
85
|
+
4. Time MUST use monospace font and be pushed to the right via `margin-left: auto`
|
|
86
|
+
5. MUST auto-dismiss after a timeout (JS responsibility, typically 3-5s)
|
|
87
|
+
6. Animation MUST include both translateY and scale for natural appearance
|
|
88
|
+
|
|
89
|
+
## Accessibility
|
|
90
|
+
- Use `role="alert"` or `role="status"` with `aria-live="polite"`
|
|
91
|
+
- If auto-dismissing, provide sufficient time to read (min 5 seconds)
|
|
92
|
+
- Should not interrupt screen reader announcements in progress
|
|
93
|
+
- Consider providing a way to pause auto-dismiss on hover/focus
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Tooltip
|
|
3
|
+
id: tooltip
|
|
4
|
+
class: .tooltip
|
|
5
|
+
category: overlays
|
|
6
|
+
index: 9
|
|
7
|
+
materials: [glossy-polycarbonate]
|
|
8
|
+
sizes: [default]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: true
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Tooltip
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: Camera HUD floating labels, broadcast graphics lower-thirds, military HUD callout boxes.
|
|
18
|
+
**Mechanism**: A small pop-up information panel that appears near a point of interest to provide context. The triangular tail (created via `::after` rotated 45 degrees) points toward the source element, derived from the callout line patterns in engineering drawings and military head-up display overlays.
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Padding | 6px 12px |
|
|
25
|
+
| Border radius | `--radius-sm` (4px) |
|
|
26
|
+
| Font size | 10px |
|
|
27
|
+
| Tail size | 8x8px rotated 45deg |
|
|
28
|
+
| Tail offset | 5px below |
|
|
29
|
+
| Shadow | 0 2px 8px rgba(0,0,0,0.3) |
|
|
30
|
+
|
|
31
|
+
## CSS Recipe
|
|
32
|
+
|
|
33
|
+
### Container (`.tooltip`)
|
|
34
|
+
```css
|
|
35
|
+
.tooltip {
|
|
36
|
+
position: relative; display: inline-flex; padding: 6px 12px;
|
|
37
|
+
background: var(--bg-raised); border: 1px solid var(--border-mid);
|
|
38
|
+
border-radius: var(--radius-sm); box-shadow: 0 2px 8px rgba(0,0,0,0.3);
|
|
39
|
+
font-family: var(--font-ui); font-size: 10px; font-weight: 500;
|
|
40
|
+
color: var(--text-primary); letter-spacing: 0.5px;
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Tail (pointing down)
|
|
45
|
+
```css
|
|
46
|
+
.tooltip::after {
|
|
47
|
+
content: ''; position: absolute; bottom: -5px; left: 50%;
|
|
48
|
+
width: 8px; height: 8px; background: var(--bg-raised);
|
|
49
|
+
border-right: 1px solid var(--border-mid); border-bottom: 1px solid var(--border-mid);
|
|
50
|
+
transform: translateX(-50%) rotate(45deg);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## HTML Structure
|
|
55
|
+
```html
|
|
56
|
+
<div class="tooltip">ISO 800 -- Auto</div>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Size Variants
|
|
60
|
+
No size variants defined.
|
|
61
|
+
|
|
62
|
+
## Material Variants
|
|
63
|
+
No material variants. Uses standard raised surface.
|
|
64
|
+
|
|
65
|
+
## Theme Behavior
|
|
66
|
+
- Background swaps via `--bg-raised`
|
|
67
|
+
- Border adapts via `--border-mid`
|
|
68
|
+
- Tail background matches container background
|
|
69
|
+
- Shadow reduces in light mode
|
|
70
|
+
- Text adapts via `--text-primary`
|
|
71
|
+
|
|
72
|
+
## Constraints
|
|
73
|
+
1. MUST include triangular tail via `::after` pseudo-element
|
|
74
|
+
2. Tail MUST be an 8x8px square rotated 45 degrees
|
|
75
|
+
3. Tail MUST inherit container background and border colors
|
|
76
|
+
4. MUST use `--radius-sm` (small, callout-proportioned)
|
|
77
|
+
5. MUST use `position: relative` for tail positioning
|
|
78
|
+
6. Shadow MUST be moderate (0 2px 8px) -- tooltip is close to surface
|
|
79
|
+
|
|
80
|
+
## Accessibility
|
|
81
|
+
- Use `role="tooltip"` on the element
|
|
82
|
+
- Trigger element should have `aria-describedby` pointing to tooltip id
|
|
83
|
+
- Tooltip should appear on hover AND focus of the trigger
|
|
84
|
+
- Tooltip should dismiss on Escape key
|
|
85
|
+
- Tooltip must not contain interactive elements
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Camera Readout
|
|
3
|
+
id: readout
|
|
4
|
+
class: .readout
|
|
5
|
+
category: readouts
|
|
6
|
+
index: 2
|
|
7
|
+
materials: [phosphor-screen]
|
|
8
|
+
sizes: [sm, md, lg]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: false
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Camera Readout
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: Sony Alpha viewfinder overlay data, Nikon D850 top LCD panel, Canon EOS viewfinder display.
|
|
18
|
+
**Mechanism**: Two display technologies: (1) Top LCD panel -- monochrome segmented LCD, reflective, LED-illuminated in dark. (2) Electronic viewfinder overlay -- data superimposed on EVF OLED microdisplay.
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Default value | 24px Michroma |
|
|
25
|
+
| Small value | 16px |
|
|
26
|
+
| Large value | 32px |
|
|
27
|
+
| Inline value | 14px |
|
|
28
|
+
| Label | 8px IBM Plex Mono |
|
|
29
|
+
| Recess | 0.6 opacity inset shadow |
|
|
30
|
+
|
|
31
|
+
## CSS Recipe
|
|
32
|
+
|
|
33
|
+
### Default
|
|
34
|
+
```css
|
|
35
|
+
.readout {
|
|
36
|
+
background: var(--bg-inset); border: 1px solid #1e1e1e;
|
|
37
|
+
border-radius: var(--radius-md); padding: 8px 14px 10px;
|
|
38
|
+
display: inline-flex; flex-direction: column; gap: 3px;
|
|
39
|
+
box-shadow: inset 0 1px 4px rgba(0,0,0,0.6), inset 0 0 0 1px #181818;
|
|
40
|
+
}
|
|
41
|
+
[data-theme="light"] .readout { border-color: var(--border-mid); box-shadow: var(--shadow-inset); }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Label
|
|
45
|
+
```css
|
|
46
|
+
.readout-label { font-family: var(--font-mono); font-size: 8px; letter-spacing: 3px; color: var(--text-muted); text-transform: uppercase; }
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Value
|
|
50
|
+
```css
|
|
51
|
+
.readout-value {
|
|
52
|
+
font-family: var(--font-display); font-size: 24px; font-weight: 400;
|
|
53
|
+
color: var(--amber); line-height: 1; letter-spacing: 1px;
|
|
54
|
+
text-shadow: 0 0 16px var(--amber-glow);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Unit
|
|
59
|
+
```css
|
|
60
|
+
.readout-unit { font-family: var(--font-display); font-size: 12px; color: var(--amber-dim); margin-left: 3px; }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Size & Layout Variants
|
|
64
|
+
```css
|
|
65
|
+
.readout.sm .readout-value { font-size: 16px; }
|
|
66
|
+
.readout.lg .readout-value { font-size: 32px; }
|
|
67
|
+
.readout.wide { min-width: 200px; }
|
|
68
|
+
.readout.timecode .readout-value { font-size: 20px; letter-spacing: 2px; }
|
|
69
|
+
.readout.inline { flex-direction: row; align-items: baseline; gap: 8px; padding: 5px 10px; }
|
|
70
|
+
.readout.inline .readout-label { font-size: 8px; }
|
|
71
|
+
.readout.inline .readout-value { font-size: 14px; }
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## HTML Structure
|
|
75
|
+
```html
|
|
76
|
+
<!-- Default -->
|
|
77
|
+
<div class="readout">
|
|
78
|
+
<div class="readout-label">SHUTTER</div>
|
|
79
|
+
<div class="readout-value">1/250</div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<!-- Small -->
|
|
83
|
+
<div class="readout sm">
|
|
84
|
+
<div class="readout-label">ISO</div>
|
|
85
|
+
<div class="readout-value">800</div>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<!-- Inline -->
|
|
89
|
+
<div class="readout inline">
|
|
90
|
+
<div class="readout-label">F</div>
|
|
91
|
+
<div class="readout-value">2.8</div>
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Size Variants
|
|
96
|
+
|
|
97
|
+
| Variant | Value Font-Size | Analog |
|
|
98
|
+
|---------|----------------|--------|
|
|
99
|
+
| `.sm` | 16px | Secondary parameters (white balance, drive mode) |
|
|
100
|
+
| default | 24px | Primary parameters (shutter speed, aperture) |
|
|
101
|
+
| `.lg` | 32px | Main hero display (top LCD panel) |
|
|
102
|
+
| `.inline` | 14px | Viewfinder bottom status row |
|
|
103
|
+
| `.timecode` | 20px | SMPTE timecode on video cameras |
|
|
104
|
+
|
|
105
|
+
## Material Variants
|
|
106
|
+
Single material: Phosphor screen with recessed cavity.
|
|
107
|
+
|
|
108
|
+
## Theme Behavior
|
|
109
|
+
- Dark: `bg-inset` background, strong inset shadow (0.6), inner ring at `#181818`
|
|
110
|
+
- Light: Lighter background, softer shadow, no inner ring
|
|
111
|
+
- Amber value and glow are fixed
|
|
112
|
+
|
|
113
|
+
## Constraints
|
|
114
|
+
1. Inset shadow is 0.6 opacity -- standard recess depth (between shallow 0.4 and deep 0.9).
|
|
115
|
+
2. Label MUST use `--font-mono` (IBM Plex Mono) with wide letter-spacing (3px).
|
|
116
|
+
3. Value MUST use `--font-display` (Michroma) with `text-shadow` glow.
|
|
117
|
+
4. Inner ring (`inset 0 0 0 1px #181818`) creates double-depth effect.
|
|
118
|
+
5. Inline variant switches to horizontal layout (row, baseline alignment).
|
|
119
|
+
|
|
120
|
+
## Accessibility
|
|
121
|
+
- Read-only display
|
|
122
|
+
- Use `aria-live="polite"` for dynamically updating values
|
|
123
|
+
- Labels provide context for the numeric values
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Dot Matrix Display
|
|
3
|
+
id: dot-matrix
|
|
4
|
+
class: .dot-matrix
|
|
5
|
+
category: readouts
|
|
6
|
+
index: 7
|
|
7
|
+
materials: [phosphor-screen]
|
|
8
|
+
sizes: [md]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: false
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Dot Matrix Display
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: LED ticker tape displays (stock exchanges, sports arenas), synthesizer patch name scrollers (Korg M1, Roland JV-1080), bus destination signs.
|
|
18
|
+
**Mechanism**: Grid of individual LEDs (5x7 or 8x8 per character cell). Displays arbitrary text by selectively lighting pixels. Text wider than display scrolls horizontally (marquee) via shift register at fixed rate (20-50ms per column shift).
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Text font | 20px VT323 |
|
|
25
|
+
| Letter-spacing | 3px |
|
|
26
|
+
| Scroll animation | 8s linear infinite |
|
|
27
|
+
| Padding | 8px 16px |
|
|
28
|
+
|
|
29
|
+
## CSS Recipe
|
|
30
|
+
|
|
31
|
+
### Container
|
|
32
|
+
```css
|
|
33
|
+
.dot-matrix {
|
|
34
|
+
padding: 8px 16px; background: var(--bg-inset);
|
|
35
|
+
border: 1px solid #1e1e1e; border-radius: var(--radius-md);
|
|
36
|
+
box-shadow: inset 0 1px 4px rgba(0,0,0,0.7); overflow: hidden;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Scrolling Text
|
|
41
|
+
```css
|
|
42
|
+
.dot-matrix-text {
|
|
43
|
+
font-family: var(--font-lcd); font-size: 20px; letter-spacing: 3px;
|
|
44
|
+
color: var(--green-hi); text-shadow: 0 0 8px var(--green-glow);
|
|
45
|
+
white-space: nowrap;
|
|
46
|
+
animation: marquee 8s linear infinite;
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Marquee Animation
|
|
51
|
+
```css
|
|
52
|
+
@keyframes marquee {
|
|
53
|
+
0% { transform: translateX(100%); }
|
|
54
|
+
100% { transform: translateX(-100%); }
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## HTML Structure
|
|
59
|
+
```html
|
|
60
|
+
<div class="dot-matrix" style="width:200px">
|
|
61
|
+
<div class="dot-matrix-text">NOW PLAYING: TRACK 07 -- MIDNIGHT CITY</div>
|
|
62
|
+
</div>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Size Variants
|
|
66
|
+
No explicit size variants. Width set by container.
|
|
67
|
+
|
|
68
|
+
## Material Variants
|
|
69
|
+
Single material: Phosphor screen with LED grid. Default color is green (most common dot-matrix color).
|
|
70
|
+
|
|
71
|
+
## Theme Behavior
|
|
72
|
+
- Container adapts via `--bg-inset`
|
|
73
|
+
- Green LED color and glow are fixed
|
|
74
|
+
- Inset shadow at 0.7 opacity
|
|
75
|
+
|
|
76
|
+
## Constraints
|
|
77
|
+
1. Animation MUST use `linear` timing function -- dot matrix scrolling is uniform speed (clock-driven), NOT eased.
|
|
78
|
+
2. `white-space: nowrap` is REQUIRED to prevent text wrapping.
|
|
79
|
+
3. `overflow: hidden` on container clips the scrolling text.
|
|
80
|
+
4. Font MUST be `--font-lcd` (VT323) for pixel-grid appearance.
|
|
81
|
+
5. `text-shadow` with green glow simulates LED light bleeding.
|
|
82
|
+
6. Width MUST be set on container to define the visible "window".
|
|
83
|
+
|
|
84
|
+
## Accessibility
|
|
85
|
+
- Use `aria-label` on container with the full text content
|
|
86
|
+
- `role="marquee"` or `role="status"` for the scrolling region
|
|
87
|
+
- Consider `prefers-reduced-motion` to pause animation
|
|
88
|
+
- Text content should be accessible even when partially scrolled off-screen
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: LCD Readout
|
|
3
|
+
id: lcd-readout
|
|
4
|
+
class: .lcd-readout
|
|
5
|
+
category: readouts
|
|
6
|
+
index: 3
|
|
7
|
+
materials: [phosphor-screen]
|
|
8
|
+
sizes: [md]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: false
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# LCD Readout
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: iPod Classic now-playing display, Nokia phone main screen, Casio G-Shock watch display, Game Boy screen.
|
|
18
|
+
**Mechanism**: STN or TN LCD with LED backlight. Characteristic color tint from backlight. Visible pixel grid at close inspection. Slow response time (40-80ms) causing ghosting.
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Value font | 28px VT323 (pixel LCD font) |
|
|
25
|
+
| Label font | 8px Rajdhani UI |
|
|
26
|
+
| Padding | 8px 14px 10px |
|
|
27
|
+
|
|
28
|
+
## CSS Recipe
|
|
29
|
+
|
|
30
|
+
### Default
|
|
31
|
+
```css
|
|
32
|
+
.lcd-readout {
|
|
33
|
+
display: inline-flex; flex-direction: column; gap: 3px;
|
|
34
|
+
padding: 8px 14px 10px; background: var(--bg-inset);
|
|
35
|
+
border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
|
|
36
|
+
box-shadow: var(--shadow-inset);
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Label
|
|
41
|
+
```css
|
|
42
|
+
.lcd-label { font-family: var(--font-ui); font-size: 8px; font-weight: 500; letter-spacing: 2px; color: var(--text-muted); text-transform: uppercase; }
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Value (Default: Blue)
|
|
46
|
+
```css
|
|
47
|
+
.lcd-value { font-family: var(--font-lcd); font-size: 28px; color: var(--blue-info); line-height: 1; letter-spacing: 1px; }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Unit
|
|
51
|
+
```css
|
|
52
|
+
.lcd-unit { font-family: var(--font-ui); font-size: 10px; font-weight: 500; color: var(--text-muted); margin-left: 2px; }
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Color Variants (Backlight Colors)
|
|
56
|
+
```css
|
|
57
|
+
.lcd-readout.green .lcd-value { color: var(--green-on); }
|
|
58
|
+
.lcd-readout.amber .lcd-value { color: var(--amber); }
|
|
59
|
+
.lcd-readout.pink .lcd-value { color: var(--pink-action); }
|
|
60
|
+
.lcd-readout.red .lcd-value { color: var(--red-alert); }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## HTML Structure
|
|
64
|
+
```html
|
|
65
|
+
<!-- Default (blue) -->
|
|
66
|
+
<div class="lcd-readout">
|
|
67
|
+
<div class="lcd-label">TRACKS</div>
|
|
68
|
+
<div class="lcd-value">42</div>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<!-- Green variant -->
|
|
72
|
+
<div class="lcd-readout green">
|
|
73
|
+
<div class="lcd-label">SIGNAL</div>
|
|
74
|
+
<div class="lcd-value">OK</div>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<!-- Amber with unit -->
|
|
78
|
+
<div class="lcd-readout amber">
|
|
79
|
+
<div class="lcd-label">TEMP</div>
|
|
80
|
+
<div class="lcd-value">72<span class="lcd-unit">°F</span></div>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<!-- Pink variant -->
|
|
84
|
+
<div class="lcd-readout pink">
|
|
85
|
+
<div class="lcd-label">BPM</div>
|
|
86
|
+
<div class="lcd-value">128</div>
|
|
87
|
+
</div>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Size Variants
|
|
91
|
+
No explicit size variants.
|
|
92
|
+
|
|
93
|
+
## Material Variants
|
|
94
|
+
|
|
95
|
+
| Color Variant | Backlight Era/Device |
|
|
96
|
+
|---------------|---------------------|
|
|
97
|
+
| default (blue) | iPod Classic, Nokia 6600 |
|
|
98
|
+
| `.green` | Game Boy, early Nokia |
|
|
99
|
+
| `.amber` | Car stereo displays, clock radios |
|
|
100
|
+
| `.pink` | Sony Ericsson, RAZR accent |
|
|
101
|
+
| `.red` | Alert/error states |
|
|
102
|
+
|
|
103
|
+
## Theme Behavior
|
|
104
|
+
- Background and shadow adapt via tokens (`--bg-inset`, `--shadow-inset`)
|
|
105
|
+
- Color variants are fixed accent colors
|
|
106
|
+
|
|
107
|
+
## Constraints
|
|
108
|
+
1. Value font MUST be `--font-lcd` (VT323) -- simulates pixel grid of low-res LCDs.
|
|
109
|
+
2. Color variants represent different backlight colors, NOT states.
|
|
110
|
+
3. Unit text uses `--font-ui` (not LCD font) as it's supplementary info.
|
|
111
|
+
4. No text-shadow glow (unlike signal-display) -- LCDs don't emit like OLEDs.
|
|
112
|
+
|
|
113
|
+
## Accessibility
|
|
114
|
+
- Read-only display
|
|
115
|
+
- Use `aria-live="polite"` for dynamic values
|
|
116
|
+
- Color alone should not convey meaning; pair with labels
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Resource Monitor
|
|
3
|
+
id: resource
|
|
4
|
+
class: .resource
|
|
5
|
+
category: readouts
|
|
6
|
+
index: 5
|
|
7
|
+
materials: [panel]
|
|
8
|
+
sizes: [md]
|
|
9
|
+
interactive: false
|
|
10
|
+
requires_js: false
|
|
11
|
+
canvas: false
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Resource Monitor
|
|
15
|
+
|
|
16
|
+
## Physical Analog
|
|
17
|
+
**Reference devices**: Mac OS X Activity Monitor (circa 2003-2005), Windows Task Manager resource graphs, server rack front-panel status displays.
|
|
18
|
+
**Mechanism**: Derived from analog panel meters on rack-mounted server equipment displaying CPU load, memory usage, or network activity as bar graphs.
|
|
19
|
+
|
|
20
|
+
## Geometry
|
|
21
|
+
|
|
22
|
+
| Property | Value |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Grid | 2 columns |
|
|
25
|
+
| Gap | 14px |
|
|
26
|
+
| Bar height | 6px |
|
|
27
|
+
| Value font | 24px Michroma |
|
|
28
|
+
| Name font | 9px Rajdhani |
|
|
29
|
+
|
|
30
|
+
## CSS Recipe
|
|
31
|
+
|
|
32
|
+
### Grid Container
|
|
33
|
+
```css
|
|
34
|
+
.resource-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Individual Resource Card
|
|
38
|
+
```css
|
|
39
|
+
.resource {
|
|
40
|
+
background: linear-gradient(180deg, var(--bg-panel), var(--bg-inset));
|
|
41
|
+
border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 14px;
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Name Label
|
|
46
|
+
```css
|
|
47
|
+
.resource-name { font-size: 9px; color: var(--text-muted); letter-spacing: 2px; font-family: var(--font-ui); font-weight: 500; }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Value
|
|
51
|
+
```css
|
|
52
|
+
.resource-value { margin-top: 8px; color: var(--amber); font-family: var(--font-display); font-size: 24px; }
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Progress Bar
|
|
56
|
+
```css
|
|
57
|
+
.resource-bar { margin-top: 10px; height: 6px; border-radius: 99px; overflow: hidden; background: var(--bg-inset); }
|
|
58
|
+
.resource-fill { height: 100%; background: linear-gradient(90deg, var(--green-hi), var(--green-on)); border-radius: 99px; }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## HTML Structure
|
|
62
|
+
```html
|
|
63
|
+
<div class="resource-grid" style="width:240px">
|
|
64
|
+
<div class="resource">
|
|
65
|
+
<div class="resource-name">CPU</div>
|
|
66
|
+
<div class="resource-value">74%</div>
|
|
67
|
+
<div class="resource-bar"><div class="resource-fill" style="width:74%"></div></div>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="resource">
|
|
70
|
+
<div class="resource-name">MEM</div>
|
|
71
|
+
<div class="resource-value">52%</div>
|
|
72
|
+
<div class="resource-bar"><div class="resource-fill" style="width:52%"></div></div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Size Variants
|
|
78
|
+
No explicit size variants.
|
|
79
|
+
|
|
80
|
+
## Material Variants
|
|
81
|
+
- Card: Panel gradient (bg-panel to bg-inset)
|
|
82
|
+
- Bar track: Recessed (bg-inset)
|
|
83
|
+
- Bar fill: Green gradient
|
|
84
|
+
|
|
85
|
+
## Theme Behavior
|
|
86
|
+
- Card background and borders adapt via tokens
|
|
87
|
+
- Amber value and green bar fill are fixed accent colors
|
|
88
|
+
|
|
89
|
+
## Constraints
|
|
90
|
+
1. Grid MUST be 2 columns for compact dashboard layout.
|
|
91
|
+
2. Bar fill width is set via inline style (percentage).
|
|
92
|
+
3. Bar uses full pill radius (99px) for rounded ends.
|
|
93
|
+
4. Value font is Michroma display, name font is Rajdhani UI.
|
|
94
|
+
|
|
95
|
+
## Accessibility
|
|
96
|
+
- Read-only display
|
|
97
|
+
- Each resource card should have `role="meter"` with `aria-valuenow`, `aria-valuemin="0"`, `aria-valuemax="100"`
|
|
98
|
+
- `aria-label` should describe the resource (e.g., "CPU usage")
|