@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.
Files changed (236) hide show
  1. package/README.md +63 -0
  2. package/dist/__tests__/catalog.test.d.ts +1 -0
  3. package/dist/__tests__/catalog.test.js +50 -0
  4. package/dist/__tests__/search.test.d.ts +1 -0
  5. package/dist/__tests__/search.test.js +44 -0
  6. package/dist/__tests__/validation.test.d.ts +1 -0
  7. package/dist/__tests__/validation.test.js +34 -0
  8. package/dist/assembler.d.ts +6 -0
  9. package/dist/assembler.js +95 -0
  10. package/dist/catalog.d.ts +22 -0
  11. package/dist/catalog.js +10 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.js +33 -0
  14. package/dist/search.d.ts +5 -0
  15. package/dist/search.js +21 -0
  16. package/dist/tools.d.ts +105 -0
  17. package/dist/tools.js +129 -0
  18. package/package.json +55 -0
  19. package/spec/components/_index.yaml +822 -0
  20. package/spec/components/buttons/clear-button.md +89 -0
  21. package/spec/components/buttons/fn-grid.md +104 -0
  22. package/spec/components/buttons/gel-button.md +125 -0
  23. package/spec/components/buttons/icon-button.md +108 -0
  24. package/spec/components/buttons/keypad-button.md +123 -0
  25. package/spec/components/buttons/push-button.md +139 -0
  26. package/spec/components/buttons/rec-button.md +105 -0
  27. package/spec/components/buttons/rubber-button.md +100 -0
  28. package/spec/components/buttons/segmented-control.md +95 -0
  29. package/spec/components/data/assembled-panel.md +135 -0
  30. package/spec/components/data/data-table.md +116 -0
  31. package/spec/components/data/film-strip.md +110 -0
  32. package/spec/components/data/media-grid.md +98 -0
  33. package/spec/components/dials/click-wheel.md +115 -0
  34. package/spec/components/dials/cylindrical-horizontal.md +130 -0
  35. package/spec/components/dials/cylindrical-scroll.md +141 -0
  36. package/spec/components/dials/cylindrical-vertical.md +100 -0
  37. package/spec/components/dials/mode-dial.md +123 -0
  38. package/spec/components/dials/radial-knob.md +150 -0
  39. package/spec/components/dials/rotary-encoder.md +118 -0
  40. package/spec/components/forms/color-picker.md +99 -0
  41. package/spec/components/forms/file-input.md +105 -0
  42. package/spec/components/forms/search-bar.md +96 -0
  43. package/spec/components/forms/select.md +143 -0
  44. package/spec/components/forms/text-input.md +114 -0
  45. package/spec/components/forms/textarea.md +85 -0
  46. package/spec/components/indicators/accordion.md +137 -0
  47. package/spec/components/indicators/badges.md +87 -0
  48. package/spec/components/indicators/chips.md +93 -0
  49. package/spec/components/indicators/led-dots.md +103 -0
  50. package/spec/components/indicators/mode-badge.md +97 -0
  51. package/spec/components/indicators/profile-badge.md +99 -0
  52. package/spec/components/indicators/skeleton.md +94 -0
  53. package/spec/components/indicators/spinners.md +95 -0
  54. package/spec/components/indicators/status-chips.md +85 -0
  55. package/spec/components/indicators/transport-controls.md +114 -0
  56. package/spec/components/meters/battery-icon.md +104 -0
  57. package/spec/components/meters/eq-bars.md +93 -0
  58. package/spec/components/meters/ev-meter.md +96 -0
  59. package/spec/components/meters/exposure-scale.md +110 -0
  60. package/spec/components/meters/gauge-full.md +102 -0
  61. package/spec/components/meters/gauge-semi.md +113 -0
  62. package/spec/components/meters/histogram.md +70 -0
  63. package/spec/components/meters/level-indicator.md +95 -0
  64. package/spec/components/meters/oscilloscope.md +83 -0
  65. package/spec/components/meters/progress-bar.md +84 -0
  66. package/spec/components/meters/signal-bars.md +80 -0
  67. package/spec/components/meters/signal-meter.md +84 -0
  68. package/spec/components/meters/vu-meter.md +88 -0
  69. package/spec/components/meters/waveform.md +70 -0
  70. package/spec/components/navigation/breadcrumbs.md +94 -0
  71. package/spec/components/navigation/context-menu.md +94 -0
  72. package/spec/components/navigation/d-pad.md +121 -0
  73. package/spec/components/navigation/drawer.md +103 -0
  74. package/spec/components/navigation/menu-grid.md +113 -0
  75. package/spec/components/navigation/menu-list.md +134 -0
  76. package/spec/components/navigation/pagination.md +100 -0
  77. package/spec/components/navigation/rack-panel.md +124 -0
  78. package/spec/components/navigation/scrollbar.md +97 -0
  79. package/spec/components/navigation/status-bar.md +117 -0
  80. package/spec/components/navigation/tab-bar.md +104 -0
  81. package/spec/components/overlays/chassis-panel.md +94 -0
  82. package/spec/components/overlays/device-bezel.md +83 -0
  83. package/spec/components/overlays/dialog.md +100 -0
  84. package/spec/components/overlays/focus-brackets.md +124 -0
  85. package/spec/components/overlays/grid-overlay.md +93 -0
  86. package/spec/components/overlays/modal.md +89 -0
  87. package/spec/components/overlays/panel.md +114 -0
  88. package/spec/components/overlays/plastic-card.md +92 -0
  89. package/spec/components/overlays/popover.md +75 -0
  90. package/spec/components/overlays/toast.md +93 -0
  91. package/spec/components/overlays/tooltip.md +85 -0
  92. package/spec/components/readouts/camera-readout.md +123 -0
  93. package/spec/components/readouts/dot-matrix.md +88 -0
  94. package/spec/components/readouts/lcd-readout.md +116 -0
  95. package/spec/components/readouts/resource-monitor.md +98 -0
  96. package/spec/components/readouts/seven-segment.md +110 -0
  97. package/spec/components/readouts/signal-display.md +93 -0
  98. package/spec/components/readouts/timecode-display.md +94 -0
  99. package/spec/components/sliders/crossfader.md +102 -0
  100. package/spec/components/sliders/dual-range.md +97 -0
  101. package/spec/components/sliders/range-fader.md +100 -0
  102. package/spec/components/sliders/scrubber.md +104 -0
  103. package/spec/components/sliders/stepper.md +106 -0
  104. package/spec/components/sliders/vertical-fader.md +116 -0
  105. package/spec/components/sliders/volume-slider.md +107 -0
  106. package/spec/components/toggles/dip-switch.md +100 -0
  107. package/spec/components/toggles/led-checkbox.md +108 -0
  108. package/spec/components/toggles/power-toggle.md +93 -0
  109. package/spec/components/toggles/radio-button.md +106 -0
  110. package/spec/components/toggles/rocker-switch.md +92 -0
  111. package/spec/components/toggles/slide-switch.md +121 -0
  112. package/spec/components/toggles/toggle-switch.md +135 -0
  113. package/spec/compositions/audio-mixer-strip.md +62 -0
  114. package/spec/compositions/camera-viewfinder.md +66 -0
  115. package/spec/compositions/phone-interface.md +66 -0
  116. package/spec/foundation/accessibility.md +33 -0
  117. package/spec/foundation/canvas.md +20 -0
  118. package/spec/foundation/depth-model.md +82 -0
  119. package/spec/foundation/layout.md +33 -0
  120. package/spec/foundation/materials.md +68 -0
  121. package/spec/foundation/naming.md +33 -0
  122. package/spec/foundation/philosophy.md +27 -0
  123. package/spec/foundation/theme.md +39 -0
  124. package/spec/foundation/tokens.md +148 -0
  125. package/spec/guides/extension.md +189 -0
  126. package/spec/guides/for-llms.md +129 -0
  127. package/spec/guides/prompt-templates.md +143 -0
  128. package/spec/spec/components/_index.yaml +822 -0
  129. package/spec/spec/components/buttons/clear-button.md +89 -0
  130. package/spec/spec/components/buttons/fn-grid.md +104 -0
  131. package/spec/spec/components/buttons/gel-button.md +125 -0
  132. package/spec/spec/components/buttons/icon-button.md +108 -0
  133. package/spec/spec/components/buttons/keypad-button.md +123 -0
  134. package/spec/spec/components/buttons/push-button.md +139 -0
  135. package/spec/spec/components/buttons/rec-button.md +105 -0
  136. package/spec/spec/components/buttons/rubber-button.md +100 -0
  137. package/spec/spec/components/buttons/segmented-control.md +95 -0
  138. package/spec/spec/components/data/assembled-panel.md +135 -0
  139. package/spec/spec/components/data/data-table.md +116 -0
  140. package/spec/spec/components/data/film-strip.md +110 -0
  141. package/spec/spec/components/data/media-grid.md +98 -0
  142. package/spec/spec/components/dials/click-wheel.md +115 -0
  143. package/spec/spec/components/dials/cylindrical-horizontal.md +130 -0
  144. package/spec/spec/components/dials/cylindrical-scroll.md +141 -0
  145. package/spec/spec/components/dials/cylindrical-vertical.md +100 -0
  146. package/spec/spec/components/dials/mode-dial.md +123 -0
  147. package/spec/spec/components/dials/radial-knob.md +150 -0
  148. package/spec/spec/components/dials/rotary-encoder.md +118 -0
  149. package/spec/spec/components/forms/color-picker.md +99 -0
  150. package/spec/spec/components/forms/file-input.md +105 -0
  151. package/spec/spec/components/forms/search-bar.md +96 -0
  152. package/spec/spec/components/forms/select.md +143 -0
  153. package/spec/spec/components/forms/text-input.md +114 -0
  154. package/spec/spec/components/forms/textarea.md +85 -0
  155. package/spec/spec/components/indicators/accordion.md +137 -0
  156. package/spec/spec/components/indicators/badges.md +87 -0
  157. package/spec/spec/components/indicators/chips.md +93 -0
  158. package/spec/spec/components/indicators/led-dots.md +103 -0
  159. package/spec/spec/components/indicators/mode-badge.md +97 -0
  160. package/spec/spec/components/indicators/profile-badge.md +99 -0
  161. package/spec/spec/components/indicators/skeleton.md +94 -0
  162. package/spec/spec/components/indicators/spinners.md +95 -0
  163. package/spec/spec/components/indicators/status-chips.md +85 -0
  164. package/spec/spec/components/indicators/transport-controls.md +114 -0
  165. package/spec/spec/components/meters/battery-icon.md +104 -0
  166. package/spec/spec/components/meters/eq-bars.md +93 -0
  167. package/spec/spec/components/meters/ev-meter.md +96 -0
  168. package/spec/spec/components/meters/exposure-scale.md +110 -0
  169. package/spec/spec/components/meters/gauge-full.md +102 -0
  170. package/spec/spec/components/meters/gauge-semi.md +113 -0
  171. package/spec/spec/components/meters/histogram.md +70 -0
  172. package/spec/spec/components/meters/level-indicator.md +95 -0
  173. package/spec/spec/components/meters/oscilloscope.md +83 -0
  174. package/spec/spec/components/meters/progress-bar.md +84 -0
  175. package/spec/spec/components/meters/signal-bars.md +80 -0
  176. package/spec/spec/components/meters/signal-meter.md +84 -0
  177. package/spec/spec/components/meters/vu-meter.md +88 -0
  178. package/spec/spec/components/meters/waveform.md +70 -0
  179. package/spec/spec/components/navigation/breadcrumbs.md +94 -0
  180. package/spec/spec/components/navigation/context-menu.md +94 -0
  181. package/spec/spec/components/navigation/d-pad.md +121 -0
  182. package/spec/spec/components/navigation/drawer.md +103 -0
  183. package/spec/spec/components/navigation/menu-grid.md +113 -0
  184. package/spec/spec/components/navigation/menu-list.md +134 -0
  185. package/spec/spec/components/navigation/pagination.md +100 -0
  186. package/spec/spec/components/navigation/rack-panel.md +124 -0
  187. package/spec/spec/components/navigation/scrollbar.md +97 -0
  188. package/spec/spec/components/navigation/status-bar.md +117 -0
  189. package/spec/spec/components/navigation/tab-bar.md +104 -0
  190. package/spec/spec/components/overlays/chassis-panel.md +94 -0
  191. package/spec/spec/components/overlays/device-bezel.md +83 -0
  192. package/spec/spec/components/overlays/dialog.md +100 -0
  193. package/spec/spec/components/overlays/focus-brackets.md +124 -0
  194. package/spec/spec/components/overlays/grid-overlay.md +93 -0
  195. package/spec/spec/components/overlays/modal.md +89 -0
  196. package/spec/spec/components/overlays/panel.md +114 -0
  197. package/spec/spec/components/overlays/plastic-card.md +92 -0
  198. package/spec/spec/components/overlays/popover.md +75 -0
  199. package/spec/spec/components/overlays/toast.md +93 -0
  200. package/spec/spec/components/overlays/tooltip.md +85 -0
  201. package/spec/spec/components/readouts/camera-readout.md +123 -0
  202. package/spec/spec/components/readouts/dot-matrix.md +88 -0
  203. package/spec/spec/components/readouts/lcd-readout.md +116 -0
  204. package/spec/spec/components/readouts/resource-monitor.md +98 -0
  205. package/spec/spec/components/readouts/seven-segment.md +110 -0
  206. package/spec/spec/components/readouts/signal-display.md +93 -0
  207. package/spec/spec/components/readouts/timecode-display.md +94 -0
  208. package/spec/spec/components/sliders/crossfader.md +102 -0
  209. package/spec/spec/components/sliders/dual-range.md +97 -0
  210. package/spec/spec/components/sliders/range-fader.md +100 -0
  211. package/spec/spec/components/sliders/scrubber.md +104 -0
  212. package/spec/spec/components/sliders/stepper.md +106 -0
  213. package/spec/spec/components/sliders/vertical-fader.md +116 -0
  214. package/spec/spec/components/sliders/volume-slider.md +107 -0
  215. package/spec/spec/components/toggles/dip-switch.md +100 -0
  216. package/spec/spec/components/toggles/led-checkbox.md +108 -0
  217. package/spec/spec/components/toggles/power-toggle.md +93 -0
  218. package/spec/spec/components/toggles/radio-button.md +106 -0
  219. package/spec/spec/components/toggles/rocker-switch.md +92 -0
  220. package/spec/spec/components/toggles/slide-switch.md +121 -0
  221. package/spec/spec/components/toggles/toggle-switch.md +135 -0
  222. package/spec/spec/compositions/audio-mixer-strip.md +62 -0
  223. package/spec/spec/compositions/camera-viewfinder.md +66 -0
  224. package/spec/spec/compositions/phone-interface.md +66 -0
  225. package/spec/spec/foundation/accessibility.md +33 -0
  226. package/spec/spec/foundation/canvas.md +20 -0
  227. package/spec/spec/foundation/depth-model.md +82 -0
  228. package/spec/spec/foundation/layout.md +33 -0
  229. package/spec/spec/foundation/materials.md +68 -0
  230. package/spec/spec/foundation/naming.md +33 -0
  231. package/spec/spec/foundation/philosophy.md +27 -0
  232. package/spec/spec/foundation/theme.md +39 -0
  233. package/spec/spec/foundation/tokens.md +148 -0
  234. package/spec/spec/guides/extension.md +189 -0
  235. package/spec/spec/guides/for-llms.md +129 -0
  236. 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">&deg;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")