@vessel-dsp/core 0.6.3 → 0.6.5

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 (182) hide show
  1. package/README.md +11 -3
  2. package/dist/editor/commands.d.ts +13 -13
  3. package/dist/editor/commands.d.ts.map +1 -1
  4. package/dist/editor/commands.js +44 -29
  5. package/dist/editor/commands.js.map +1 -1
  6. package/dist/editor/factory.d.ts +1 -1
  7. package/dist/editor/factory.d.ts.map +1 -1
  8. package/dist/editor/factory.js +51 -51
  9. package/dist/editor/factory.js.map +1 -1
  10. package/dist/editor/history.d.ts +7 -7
  11. package/dist/editor/history.d.ts.map +1 -1
  12. package/dist/editor/history.js +20 -12
  13. package/dist/editor/history.js.map +1 -1
  14. package/dist/editor/index.d.ts +8 -8
  15. package/dist/editor/index.d.ts.map +1 -1
  16. package/dist/editor/index.js +4 -4
  17. package/dist/editor/index.js.map +1 -1
  18. package/dist/editor/layout.d.ts +1 -1
  19. package/dist/editor/layout.d.ts.map +1 -1
  20. package/dist/editor/layout.js +11 -6
  21. package/dist/editor/layout.js.map +1 -1
  22. package/dist/formats/circuit-json/serializer.d.ts +15 -15
  23. package/dist/formats/circuit-json/serializer.d.ts.map +1 -1
  24. package/dist/formats/circuit-json/serializer.js +486 -394
  25. package/dist/formats/circuit-json/serializer.js.map +1 -1
  26. package/dist/formats/document.d.ts +6 -6
  27. package/dist/formats/document.d.ts.map +1 -1
  28. package/dist/formats/document.js +112 -92
  29. package/dist/formats/document.js.map +1 -1
  30. package/dist/formats/interchange/parser.d.ts +1 -1
  31. package/dist/formats/interchange/parser.d.ts.map +1 -1
  32. package/dist/formats/interchange/parser.js +483 -286
  33. package/dist/formats/interchange/parser.js.map +1 -1
  34. package/dist/formats/interchange/serializer.d.ts +1 -1
  35. package/dist/formats/interchange/serializer.d.ts.map +1 -1
  36. package/dist/formats/interchange/serializer.js +59 -28
  37. package/dist/formats/interchange/serializer.js.map +1 -1
  38. package/dist/formats/ltspice/catalog.d.ts +1 -1
  39. package/dist/formats/ltspice/catalog.d.ts.map +1 -1
  40. package/dist/formats/ltspice/catalog.js +150 -48
  41. package/dist/formats/ltspice/catalog.js.map +1 -1
  42. package/dist/formats/ltspice/encoding.js +12 -40
  43. package/dist/formats/ltspice/encoding.js.map +1 -1
  44. package/dist/formats/ltspice/parser.d.ts +1 -1
  45. package/dist/formats/ltspice/parser.d.ts.map +1 -1
  46. package/dist/formats/ltspice/parser.js +122 -75
  47. package/dist/formats/ltspice/parser.js.map +1 -1
  48. package/dist/formats/ltspice/serializer.d.ts +1 -1
  49. package/dist/formats/ltspice/serializer.d.ts.map +1 -1
  50. package/dist/formats/ltspice/serializer.js +69 -47
  51. package/dist/formats/ltspice/serializer.js.map +1 -1
  52. package/dist/formats/schx/catalog.d.ts +1 -1
  53. package/dist/formats/schx/catalog.d.ts.map +1 -1
  54. package/dist/formats/schx/catalog.js +499 -254
  55. package/dist/formats/schx/catalog.js.map +1 -1
  56. package/dist/formats/schx/parser.d.ts +1 -1
  57. package/dist/formats/schx/parser.d.ts.map +1 -1
  58. package/dist/formats/schx/parser.js +40 -38
  59. package/dist/formats/schx/parser.js.map +1 -1
  60. package/dist/formats/schx/runtime-descriptors.d.ts +1 -1
  61. package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -1
  62. package/dist/formats/schx/runtime-descriptors.js +239 -201
  63. package/dist/formats/schx/runtime-descriptors.js.map +1 -1
  64. package/dist/formats/schx/serializer.d.ts +2 -2
  65. package/dist/formats/schx/serializer.d.ts.map +1 -1
  66. package/dist/formats/schx/serializer.js +106 -106
  67. package/dist/formats/schx/serializer.js.map +1 -1
  68. package/dist/formats/schx/transforms.d.ts +1 -1
  69. package/dist/formats/schx/transforms.d.ts.map +1 -1
  70. package/dist/formats/schx/transforms.js +16 -8
  71. package/dist/formats/schx/transforms.js.map +1 -1
  72. package/dist/formats/spice/parser.d.ts +1 -1
  73. package/dist/formats/spice/parser.d.ts.map +1 -1
  74. package/dist/formats/spice/parser.js +105 -56
  75. package/dist/formats/spice/parser.js.map +1 -1
  76. package/dist/formats/spice/serializer.d.ts +1 -1
  77. package/dist/formats/spice/serializer.js +14 -12
  78. package/dist/formats/spice/serializer.js.map +1 -1
  79. package/dist/index.d.ts +47 -46
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +32 -31
  82. package/dist/index.js.map +1 -1
  83. package/dist/model/connectivity.d.ts +1 -1
  84. package/dist/model/connectivity.d.ts.map +1 -1
  85. package/dist/model/connectivity.js +22 -7
  86. package/dist/model/connectivity.js.map +1 -1
  87. package/dist/model/netlist.d.ts +3 -3
  88. package/dist/model/netlist.d.ts.map +1 -1
  89. package/dist/model/netlist.js +117 -100
  90. package/dist/model/netlist.js.map +1 -1
  91. package/dist/model/properties.d.ts +1 -1
  92. package/dist/model/properties.d.ts.map +1 -1
  93. package/dist/model/properties.js +16 -16
  94. package/dist/model/properties.js.map +1 -1
  95. package/dist/model/quantity.d.ts +1 -1
  96. package/dist/model/quantity.d.ts.map +1 -1
  97. package/dist/model/quantity.js +35 -35
  98. package/dist/model/quantity.js.map +1 -1
  99. package/dist/model/types.d.ts +72 -37
  100. package/dist/model/types.d.ts.map +1 -1
  101. package/dist/model/types.js +1 -1
  102. package/dist/model/types.js.map +1 -1
  103. package/dist/model/validation.d.ts +5 -5
  104. package/dist/model/validation.d.ts.map +1 -1
  105. package/dist/model/validation.js +763 -315
  106. package/dist/model/validation.js.map +1 -1
  107. package/dist/model/wires.d.ts +1 -1
  108. package/dist/model/wires.d.ts.map +1 -1
  109. package/dist/model/wires.js +4 -1
  110. package/dist/model/wires.js.map +1 -1
  111. package/dist/panel/extract.d.ts +2 -2
  112. package/dist/panel/extract.d.ts.map +1 -1
  113. package/dist/panel/extract.js +376 -216
  114. package/dist/panel/extract.js.map +1 -1
  115. package/dist/panel/index.d.ts +7 -5
  116. package/dist/panel/index.d.ts.map +1 -1
  117. package/dist/panel/index.js +5 -4
  118. package/dist/panel/index.js.map +1 -1
  119. package/dist/panel/knobs.d.ts +4 -4
  120. package/dist/panel/knobs.d.ts.map +1 -1
  121. package/dist/panel/knobs.js +1 -1
  122. package/dist/panel/knobs.js.map +1 -1
  123. package/dist/panel/placement.d.ts +27 -0
  124. package/dist/panel/placement.d.ts.map +1 -0
  125. package/dist/panel/placement.js +91 -0
  126. package/dist/panel/placement.js.map +1 -0
  127. package/dist/panel/protocol.d.ts +1 -1
  128. package/dist/panel/protocol.d.ts.map +1 -1
  129. package/dist/panel/protocol.js +32 -23
  130. package/dist/panel/protocol.js.map +1 -1
  131. package/dist/panel/types.d.ts +26 -18
  132. package/dist/panel/types.d.ts.map +1 -1
  133. package/dist/panel/types.js.map +1 -1
  134. package/dist/preview/bounds.d.ts +1 -1
  135. package/dist/preview/bounds.d.ts.map +1 -1
  136. package/dist/preview/bounds.js +3 -3
  137. package/dist/preview/bounds.js.map +1 -1
  138. package/dist/preview/box-layout.d.ts +2 -2
  139. package/dist/preview/box-layout.js.map +1 -1
  140. package/dist/preview/colors.d.ts +1 -1
  141. package/dist/preview/colors.js +35 -35
  142. package/dist/preview/colors.js.map +1 -1
  143. package/dist/preview/hanging.d.ts +1 -1
  144. package/dist/preview/hanging.d.ts.map +1 -1
  145. package/dist/preview/hanging.js +4 -1
  146. package/dist/preview/hanging.js.map +1 -1
  147. package/dist/preview/junctions.d.ts +1 -1
  148. package/dist/preview/junctions.d.ts.map +1 -1
  149. package/dist/preview/junctions.js.map +1 -1
  150. package/dist/preview/label-layout.d.ts.map +1 -1
  151. package/dist/preview/label-layout.js +4 -4
  152. package/dist/preview/label-layout.js.map +1 -1
  153. package/dist/preview/ports.d.ts +1 -1
  154. package/dist/preview/ports.d.ts.map +1 -1
  155. package/dist/preview/ports.js +2 -1
  156. package/dist/preview/ports.js.map +1 -1
  157. package/dist/preview/renderable-wires.d.ts +1 -1
  158. package/dist/preview/renderable-wires.d.ts.map +1 -1
  159. package/dist/preview/renderable-wires.js +3 -1
  160. package/dist/preview/renderable-wires.js.map +1 -1
  161. package/dist/preview/routing.d.ts +1 -1
  162. package/dist/preview/routing.js +1 -1
  163. package/dist/preview/routing.js.map +1 -1
  164. package/dist/preview/snap.d.ts +1 -1
  165. package/dist/preview/snap.d.ts.map +1 -1
  166. package/dist/preview/snap.js +11 -3
  167. package/dist/preview/snap.js.map +1 -1
  168. package/dist/preview/symbols/svg-content.d.ts.map +1 -1
  169. package/dist/preview/symbols/svg-content.js +200 -50
  170. package/dist/preview/symbols/svg-content.js.map +1 -1
  171. package/dist/preview/symbols.d.ts +2 -2
  172. package/dist/preview/symbols.d.ts.map +1 -1
  173. package/dist/preview/symbols.js +100 -97
  174. package/dist/preview/symbols.js.map +1 -1
  175. package/dist/preview/wire-chains.d.ts +1 -1
  176. package/dist/preview/wire-chains.d.ts.map +1 -1
  177. package/dist/preview/wire-chains.js.map +1 -1
  178. package/dist/profiles.d.ts +600 -0
  179. package/dist/profiles.d.ts.map +1 -0
  180. package/dist/profiles.js +118 -0
  181. package/dist/profiles.js.map +1 -0
  182. package/package.json +54 -54
@@ -49,16 +49,24 @@ export function findSnap(draggedComponent, candidateOrigin, others, radius = DEF
49
49
  }
50
50
  }
51
51
  if (bestDelta === null || bestTarget === null) {
52
- return { origin: candidateOrigin, snappedTo: null, distance: Number.POSITIVE_INFINITY };
52
+ return {
53
+ origin: candidateOrigin,
54
+ snappedTo: null,
55
+ distance: Number.POSITIVE_INFINITY,
56
+ };
53
57
  }
54
58
  return {
55
- origin: { x: candidateOrigin.x + bestDelta.x, y: candidateOrigin.y + bestDelta.y },
59
+ origin: {
60
+ x: candidateOrigin.x + bestDelta.x,
61
+ y: candidateOrigin.y + bestDelta.y,
62
+ },
56
63
  snappedTo: bestTarget,
57
64
  distance: bestDistance,
58
65
  };
59
66
  }
60
67
  function wireTouchesDraggedTerminal(wire, terminalKeys) {
61
- return terminalKeys.has(pointKey(wire.endpoints[0])) || terminalKeys.has(pointKey(wire.endpoints[1]));
68
+ return (terminalKeys.has(pointKey(wire.endpoints[0])) ||
69
+ terminalKeys.has(pointKey(wire.endpoints[1])));
62
70
  }
63
71
  function nearestInteriorPointOnSegment(point, a, b) {
64
72
  const dx = b.x - a.x;
@@ -1 +1 @@
1
- {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../src/preview/snap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snap.js","sourceRoot":"","sources":["../../src/preview/snap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"svg-content.d.ts","sourceRoot":"","sources":["../../../src/preview/symbols/svg-content.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAmDlE,CAAC;AAEF,eAAO,MAAM,WAAW,EAAkC,SAAS,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"svg-content.d.ts","sourceRoot":"","sources":["../../../src/preview/symbols/svg-content.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CA2PlE,CAAC;AAEF,eAAO,MAAM,WAAW,EAAkC,SAAS,MAAM,EAAE,CAAC"}
@@ -1,56 +1,206 @@
1
1
  // AUTO-GENERATED by scripts/generate-symbol-content.ts — DO NOT EDIT BY HAND.
2
2
  // Run `bun run generate:symbols` to regenerate from packages/core/src/preview/symbols/*.svg.
3
3
  export const SYMBOL_CONTENT = {
4
- "analog-switch": { viewBox: "-25 -25 50 50", content: "<!--\n kind: analog-switch (one element of a CD4066-style bilateral switch)\n terminals: a (SVG -20,-10), b (SVG 20,-10), ctrl (SVG 0,20)\n Two contacts with a control input on the bottom — like an SPST but with electronic control.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-10\" x2=\"-7\" y2=\"-10\"/>\n <line x1=\"7\" y1=\"-10\" x2=\"20\" y2=\"-10\"/>\n <line x1=\"0\" y1=\"6\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"-5\" cy=\"-10\" r=\"1.5\"/>\n <circle cx=\"5\" cy=\"-10\" r=\"1.5\"/>\n <line x1=\"-5\" y1=\"-10\" x2=\"5\" y2=\"-10\" stroke-dasharray=\"2 2\"/>\n <rect x=\"-6\" y=\"0\" width=\"12\" height=\"6\" rx=\"1\"/>\n <text x=\"0\" y=\"-13\" font-size=\"3.5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">SW</text>" },
5
- "battery": { viewBox: "-25 -25 50 50", content: "<!--\n kind: battery / DC supply\n terminals: + (SVG 0,-20), - (SVG 0,20)\n Long plate = +, short plate = -. Top lead is the + terminal.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <line x1=\"-7\" y1=\"-5\" x2=\"7\" y2=\"-5\"/>\n <line x1=\"-3\" y1=\"-2\" x2=\"3\" y2=\"-2\"/>\n <line x1=\"-7\" y1=\"2\" x2=\"7\" y2=\"2\"/>\n <line x1=\"-3\" y1=\"5\" x2=\"3\" y2=\"5\"/>\n <text x=\"-12\" y=\"-4\" font-size=\"6\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">+</text>" },
6
- "bbd": { viewBox: "-35 -25 70 50", content: "<!--\n kind: bbd (bucket-brigade delay MN3007 / MN3008 / MN3205 family)\n terminals: vdd (-30,-20), vgg (-30,0), vss (-30,20), cp1 (0,-20), cp2 (0,20), in (-30,10), out1 (30,-10), out2 (30,10)\n DIP-8 style rectangle, \"BBD\" label and small bucket icon on the face.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-30\" y1=\"-20\" x2=\"-20\" y2=\"-20\"/>\n <line x1=\"-30\" y1=\"0\" x2=\"-20\" y2=\"0\"/>\n <line x1=\"-30\" y1=\"20\" x2=\"-20\" y2=\"20\"/>\n <line x1=\"-30\" y1=\"10\" x2=\"-20\" y2=\"10\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-15\"/>\n <line x1=\"0\" y1=\"15\" x2=\"0\" y2=\"20\"/>\n <line x1=\"20\" y1=\"-10\" x2=\"30\" y2=\"-10\"/>\n <line x1=\"20\" y1=\"10\" x2=\"30\" y2=\"10\"/>\n </g>\n <rect x=\"-20\" y=\"-15\" width=\"40\" height=\"30\" rx=\"2\"/>\n <circle cx=\"-17\" cy=\"-12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>\n <text x=\"0\" y=\"-3\" font-size=\"6\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">BBD</text>\n <text x=\"0\" y=\"8\" font-size=\"3.5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">MN3007</text>" },
7
- "bjt-npn": { viewBox: "-25 -25 50 50", content: "<!--\n kind: bjt (NPN variant)\n terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-6\" y2=\"0\"/>\n <line x1=\"4\" y1=\"-7\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"4\" y1=\"7\" x2=\"10\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-6\" y1=\"-5\" x2=\"-6\" y2=\"5\"/>\n <line x1=\"-6\" y1=\"-3\" x2=\"4\" y2=\"-7\"/>\n <line x1=\"-6\" y1=\"3\" x2=\"4\" y2=\"7\"/>\n <path d=\"M 4 7 L -0.3 6.9 L 1.2 4.1 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
8
- "bjt-pnp": { viewBox: "-25 -25 50 50", content: "<!--\n kind: bjt (PNP variant)\n terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)\n Arrow points INWARD (emitter -> base) to distinguish PNP from NPN.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-6\" y2=\"0\"/>\n <line x1=\"4\" y1=\"-7\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"4\" y1=\"7\" x2=\"10\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-6\" y1=\"-5\" x2=\"-6\" y2=\"5\"/>\n <line x1=\"-6\" y1=\"-3\" x2=\"4\" y2=\"-7\"/>\n <line x1=\"-6\" y1=\"3\" x2=\"4\" y2=\"7\"/>\n <path d=\"M -6 3 L -1.7 3.1 L -3.2 5.9 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
9
- "capacitor-electrolytic": { viewBox: "-25 -25 50 50", content: "<!--\n kind: capacitor (electrolytic variant)\n terminals: a/+ (SVG 0,-20), b/- (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <line x1=\"-8\" y1=\"-3\" x2=\"8\" y2=\"-3\"/>\n <path d=\"M -8 3 Q 0 7 8 3\"/>\n <text x=\"-9\" y=\"-6\" font-size=\"7\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">+</text>" },
10
- "capacitor": { viewBox: "-25 -25 50 50", content: "<!--\n kind: capacitor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"0\" y1=\"3\" x2=\"0\" y2=\"20\"/>\n </g>\n <line x1=\"-8\" y1=\"-3\" x2=\"8\" y2=\"-3\"/>\n <line x1=\"-8\" y1=\"3\" x2=\"8\" y2=\"3\"/>" },
11
- "current-source": { viewBox: "-25 -25 50 50", content: "<!--\n kind: current-source\n terminals: + (SVG 0,-20), - (SVG 0,20)\n Arrow points toward + terminal (top) — direction of conventional current flow.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-9\"/>\n <line x1=\"0\" y1=\"9\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"9\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"-2\"/>\n <path d=\"M 0 -5 L -3 0 L 3 0 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
12
- "delay-ic": { viewBox: "-35 -25 70 50", content: "<!--\n kind: delay-ic (PT2399 digital echo IC)\n terminals: vcc (-30,-20), gnd (-30,20), vref (-30,-10), vco (-30,0), in (-30,10), out (30,-10), fb (30,0), da1 (30,5), da2 (30,10)\n DIP-16 footprint, \"PT2399\" label centered.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-30\" y1=\"-20\" x2=\"-20\" y2=\"-20\"/>\n <line x1=\"-30\" y1=\"-10\" x2=\"-20\" y2=\"-10\"/>\n <line x1=\"-30\" y1=\"0\" x2=\"-20\" y2=\"0\"/>\n <line x1=\"-30\" y1=\"10\" x2=\"-20\" y2=\"10\"/>\n <line x1=\"-30\" y1=\"20\" x2=\"-20\" y2=\"20\"/>\n <line x1=\"20\" y1=\"-10\" x2=\"30\" y2=\"-10\"/>\n <line x1=\"20\" y1=\"0\" x2=\"30\" y2=\"0\"/>\n <line x1=\"20\" y1=\"5\" x2=\"30\" y2=\"5\"/>\n <line x1=\"20\" y1=\"10\" x2=\"30\" y2=\"10\"/>\n </g>\n <rect x=\"-20\" y=\"-22\" width=\"40\" height=\"44\" rx=\"2\"/>\n <circle cx=\"-17\" cy=\"-19\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>\n <text x=\"0\" y=\"-2\" font-size=\"6\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">PT2399</text>\n <text x=\"0\" y=\"8\" font-size=\"3.5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">echo</text>" },
13
- "diode-schottky": { viewBox: "-25 -25 50 50", content: "<!--\n kind: diode (Schottky variant)\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"4\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -6 -5 L 6 -5 L 0 4 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <polyline points=\"-9,1 -7,1 -7,4 7,4 7,7 9,7\"/>" },
14
- "diode-zener": { viewBox: "-25 -25 50 50", content: "<!--\n kind: diode (Zener variant)\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"4\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -6 -5 L 6 -5 L 0 4 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <polyline points=\"-9,2 -7,4 7,4 9,6\"/>" },
15
- "diode": { viewBox: "-25 -25 50 50", content: "<!--\n kind: diode\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n Arrow points anode (top) -> cathode (bottom).\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"4\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -6 -5 L 6 -5 L 0 4 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <line x1=\"-7\" y1=\"4\" x2=\"7\" y2=\"4\"/>" },
16
- "flipflop": { viewBox: "-25 -25 50 50", content: "<!--\n kind: flipflop (one half of a CD4013 dual D flip-flop)\n terminals: d (-20,-10), clk (-20,10), s (0,-20), r (0,20), q (20,-10), qbar (20,10)\n Rectangular gate body with D/CK on left, Q/Q̄ on right, set/reset on top/bottom.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-10\" x2=\"-12\" y2=\"-10\"/>\n <line x1=\"-20\" y1=\"10\" x2=\"-12\" y2=\"10\"/>\n <line x1=\"12\" y1=\"-10\" x2=\"20\" y2=\"-10\"/>\n <line x1=\"12\" y1=\"10\" x2=\"20\" y2=\"10\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-15\"/>\n <line x1=\"0\" y1=\"15\" x2=\"0\" y2=\"20\"/>\n </g>\n <rect x=\"-12\" y=\"-15\" width=\"24\" height=\"30\" rx=\"2\"/>\n <text x=\"-7\" y=\"-7\" font-size=\"4\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">D</text>\n <text x=\"-9\" y=\"13\" font-size=\"4\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">CK</text>\n <text x=\"7\" y=\"-7\" font-size=\"4\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"end\">Q</text>\n <text x=\"9\" y=\"13\" font-size=\"4\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"end\">Q̄</text>" },
17
- "ground": { viewBox: "-25 -25 50 50", content: "<!--\n kind: ground\n terminals: t (SVG 0,0)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"4\"/>\n </g>\n <line x1=\"-8\" y1=\"4\" x2=\"8\" y2=\"4\"/>\n <line x1=\"-5\" y1=\"8\" x2=\"5\" y2=\"8\"/>\n <line x1=\"-2\" y1=\"12\" x2=\"2\" y2=\"12\"/>" },
18
- "ic-block": { viewBox: "-25 -25 50 50", content: "<!--\n kind: ic (opaque block — BBD, PT2399, regulator, OTA, codec/DSP)\n terminals: generic DIP-8 layout (4 left, 4 right)\n NOTE: catalog has no terminal map yet for opaque ICs; this is a layout placeholder.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-9\" x2=\"-13\" y2=\"-9\"/>\n <line x1=\"-20\" y1=\"-3\" x2=\"-13\" y2=\"-3\"/>\n <line x1=\"-20\" y1=\"3\" x2=\"-13\" y2=\"3\"/>\n <line x1=\"-20\" y1=\"9\" x2=\"-13\" y2=\"9\"/>\n <line x1=\"13\" y1=\"-9\" x2=\"20\" y2=\"-9\"/>\n <line x1=\"13\" y1=\"-3\" x2=\"20\" y2=\"-3\"/>\n <line x1=\"13\" y1=\"3\" x2=\"20\" y2=\"3\"/>\n <line x1=\"13\" y1=\"9\" x2=\"20\" y2=\"9\"/>\n </g>\n <rect x=\"-13\" y=\"-13\" width=\"26\" height=\"26\" rx=\"2\"/>\n <!-- Pin-1 indicator -->\n <circle cx=\"-9\" cy=\"-9\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>" },
19
- "ic": { viewBox: "-25 -25 50 50", content: "<!--\n kind: ic (generic opaque IC — DIP-8 layout)\n terminals: p1..p4 left side (top→bottom), p5..p8 right side (bottom→top)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-15\" x2=\"-13\" y2=\"-15\"/>\n <line x1=\"-20\" y1=\"-5\" x2=\"-13\" y2=\"-5\"/>\n <line x1=\"-20\" y1=\"5\" x2=\"-13\" y2=\"5\"/>\n <line x1=\"-20\" y1=\"15\" x2=\"-13\" y2=\"15\"/>\n <line x1=\"13\" y1=\"-15\" x2=\"20\" y2=\"-15\"/>\n <line x1=\"13\" y1=\"-5\" x2=\"20\" y2=\"-5\"/>\n <line x1=\"13\" y1=\"5\" x2=\"20\" y2=\"5\"/>\n <line x1=\"13\" y1=\"15\" x2=\"20\" y2=\"15\"/>\n </g>\n <rect x=\"-13\" y=\"-18\" width=\"26\" height=\"36\" rx=\"2\"/>\n <circle cx=\"-9\" cy=\"-15\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>\n <text x=\"0\" y=\"2\" font-size=\"5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">IC</text>" },
20
- "inductor": { viewBox: "-25 -25 50 50", content: "<!--\n kind: inductor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-10\"/>\n <line x1=\"0\" y1=\"10\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M 0 -10 A 3 2.5 0 0 1 0 -5 A 3 2.5 0 0 1 0 0 A 3 2.5 0 0 1 0 5 A 3 2.5 0 0 1 0 10\"/>" },
21
- "jack-input": { viewBox: "-25 -25 50 50", content: "<!--\n kind: jack (Input variant — TS phone jack)\n terminals: tip (SVG 0,-20), sleeve (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"0\" y1=\"3\" x2=\"0\" y2=\"20\"/>\n </g>\n <!-- Plug barrel -->\n <rect x=\"-15\" y=\"-7\" width=\"6\" height=\"14\" rx=\"1\"/>\n <!-- Tip and sleeve rods -->\n <line x1=\"-9\" y1=\"-3\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"-9\" y1=\"3\" x2=\"0\" y2=\"3\"/>\n <text x=\"-12\" y=\"-11\" font-size=\"5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">INPUT</text>" },
22
- "jack-output": { viewBox: "-25 -25 50 50", content: "<!--\n kind: jack (Output variant — TS phone jack / Speaker)\n terminals: tip (SVG 0,-20), sleeve (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"0\" y1=\"3\" x2=\"0\" y2=\"20\"/>\n </g>\n <!-- Mirrored plug barrel -->\n <rect x=\"9\" y=\"-7\" width=\"6\" height=\"14\" rx=\"1\"/>\n <!-- Tip and sleeve rods -->\n <line x1=\"0\" y1=\"-3\" x2=\"9\" y2=\"-3\"/>\n <line x1=\"0\" y1=\"3\" x2=\"9\" y2=\"3\"/>\n <text x=\"2\" y=\"-11\" font-size=\"5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">OUTPUT</text>" },
23
- "jfet-junction-n": { viewBox: "-25 -25 50 50", content: "<!--\n kind: jfet (N-channel JunctionFieldEffectTransistor variant)\n terminals: drain (SVG 10,-20), gate (SVG -20,0), source (SVG 10,20)\n LiveSPICE JunctionFieldEffectTransistor uses slanted drain/source anchors.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-8\" x2=\"10\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"8\" x2=\"10\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"-3\" y2=\"8\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"0\" y2=\"-8\"/>\n <line x1=\"-3\" y1=\"8\" x2=\"0\" y2=\"8\"/>\n <path d=\"M -3 0 L -7 -2 L -7 2 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
24
- "jfet-n": { viewBox: "-25 -25 50 50", content: "<!--\n kind: jfet (N-channel variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20)\n Arrow on gate lead points INTO the channel.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-8\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"8\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"-3\" y2=\"8\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"0\" y2=\"-8\"/>\n <line x1=\"-3\" y1=\"8\" x2=\"0\" y2=\"8\"/>\n <path d=\"M -3 0 L -7 -2 L -7 2 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
25
- "jfet-p": { viewBox: "-25 -25 50 50", content: "<!--\n kind: jfet (P-channel variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20)\n Arrow on gate lead points OUT of the channel (away from channel).\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-8\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"8\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"-3\" y2=\"8\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"0\" y2=\"-8\"/>\n <line x1=\"-3\" y1=\"8\" x2=\"0\" y2=\"8\"/>\n <path d=\"M -7 0 L -3 -2 L -3 2 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
26
- "label": { viewBox: "-25 -25 50 50", content: "<!--\n kind: label\n terminals: none\n The label text is dynamic (read from properties.Text by schematic.tsx).\n This SVG is intentionally empty the renderer draws the text glyph itself.\n -->" },
27
- "led": { viewBox: "-25 -25 50 50", content: "<!--\n kind: led\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"4\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -6 -5 L 6 -5 L 0 4 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <line x1=\"-7\" y1=\"4\" x2=\"7\" y2=\"4\"/>\n <line x1=\"8\" y1=\"-8\" x2=\"14\" y2=\"-14\"/>\n <line x1=\"14\" y1=\"-14\" x2=\"12\" y2=\"-10\"/>\n <line x1=\"14\" y1=\"-14\" x2=\"10\" y2=\"-12\"/>\n <line x1=\"11\" y1=\"-3\" x2=\"17\" y2=\"-9\"/>\n <line x1=\"17\" y1=\"-9\" x2=\"15\" y2=\"-5\"/>\n <line x1=\"17\" y1=\"-9\" x2=\"13\" y2=\"-7\"/>" },
28
- "mosfet-n": { viewBox: "-25 -25 50 50", content: "<!--\n kind: mosfet (N-channel enhancement variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20), body (SVG 10,0)\n Body arrow points INTO channel (left) — distinguishes N from P.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-7\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-8\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"8\" x2=\"0\" y2=\"20\"/>\n <line x1=\"-3\" y1=\"0\" x2=\"10\" y2=\"0\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-7\" y1=\"-5\" x2=\"-7\" y2=\"5\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"-3\" y2=\"-3\"/>\n <line x1=\"-3\" y1=\"-1\" x2=\"-3\" y2=\"1\"/>\n <line x1=\"-3\" y1=\"3\" x2=\"-3\" y2=\"8\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"0\" y2=\"-8\"/>\n <line x1=\"-3\" y1=\"8\" x2=\"0\" y2=\"8\"/>\n <path d=\"M -1 0 L 3 -2 L 3 2 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
29
- "mosfet-p": { viewBox: "-25 -25 50 50", content: "<!--\n kind: mosfet (P-channel enhancement variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20), body (SVG 10,0)\n Body arrow points OUT of channel (right) — distinguishes P from N.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-7\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-8\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"8\" x2=\"0\" y2=\"20\"/>\n <line x1=\"-3\" y1=\"0\" x2=\"10\" y2=\"0\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-7\" y1=\"-5\" x2=\"-7\" y2=\"5\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"-3\" y2=\"-3\"/>\n <line x1=\"-3\" y1=\"-1\" x2=\"-3\" y2=\"1\"/>\n <line x1=\"-3\" y1=\"3\" x2=\"-3\" y2=\"8\"/>\n <line x1=\"-3\" y1=\"-8\" x2=\"0\" y2=\"-8\"/>\n <line x1=\"-3\" y1=\"8\" x2=\"0\" y2=\"8\"/>\n <path d=\"M 3 0 L -1 -2 L -1 2 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
30
- "named-wire": { viewBox: "-25 -25 50 50", content: "<!--\n kind: named-wire\n terminals: t (SVG 0,0)\n Small marker circle + short outbound stroke toward the wire's name label.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"3\" y1=\"0\" x2=\"12\" y2=\"0\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"3\"/>" },
31
- "opamp": { viewBox: "-35 -25 70 50", content: "<!--\n kind: opamp\n terminals: vin+ (SVG -30,-10), vin- (SVG -30,10), vout (SVG 30,0), vcc (SVG 0,-20), vee (SVG 0,20)\n NOTE: extended viewBox (-35..35 wide) because input/output leads sit at x=±30.\n + and − markers drawn as line strokes (more readable at small scale than <text>).\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-30\" y1=\"-10\" x2=\"-11\" y2=\"-10\"/>\n <line x1=\"-30\" y1=\"10\" x2=\"-11\" y2=\"10\"/>\n <line x1=\"10\" y1=\"0\" x2=\"30\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -11 -10 L 10 0 L -11 10 Z\"/>\n <!-- + marker (vin+ side) -->\n <line x1=\"-9\" y1=\"-5\" x2=\"-5\" y2=\"-5\"/>\n <line x1=\"-7\" y1=\"-7\" x2=\"-7\" y2=\"-3\"/>\n <!-- − marker (vin− side) -->\n <line x1=\"-9\" y1=\"5\" x2=\"-5\" y2=\"5\"/>" },
32
- "optocoupler": { viewBox: "-25 -25 50 50", content: "<!--\n kind: optocoupler (vactrol — LED + LDR pair inside an opaque package)\n terminals: led+ (SVG -20,-10), led- (SVG -20,10), r1 (SVG 20,-10), r2 (SVG 20,10)\n NOTE: catalog has no terminal map yet; using generic 4-pin DIP-style layout.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-10\" x2=\"-7\" y2=\"-10\"/>\n <line x1=\"-20\" y1=\"10\" x2=\"-7\" y2=\"10\"/>\n <line x1=\"7\" y1=\"-10\" x2=\"20\" y2=\"-10\"/>\n <line x1=\"7\" y1=\"10\" x2=\"20\" y2=\"10\"/>\n </g>\n <rect x=\"-15\" y=\"-13\" width=\"30\" height=\"26\" rx=\"2\"/>\n <!-- LED triangle pointing down (anode top → cathode bottom) -->\n <path d=\"M -10 -3 L -4 -3 L -7 3 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <line x1=\"-11\" y1=\"3\" x2=\"-3\" y2=\"3\"/>\n <line x1=\"-7\" y1=\"-10\" x2=\"-7\" y2=\"-3\"/>\n <line x1=\"-7\" y1=\"3\" x2=\"-7\" y2=\"10\"/>\n <!-- Emission arrows from LED → LDR -->\n <line x1=\"-2\" y1=\"-2\" x2=\"2\" y2=\"-2\"/>\n <line x1=\"2\" y1=\"-2\" x2=\"0\" y2=\"-3\"/>\n <line x1=\"2\" y1=\"-2\" x2=\"0\" y2=\"-1\"/>\n <line x1=\"-2\" y1=\"2\" x2=\"2\" y2=\"2\"/>\n <line x1=\"2\" y1=\"2\" x2=\"0\" y2=\"1\"/>\n <line x1=\"2\" y1=\"2\" x2=\"0\" y2=\"3\"/>\n <!-- LDR (vertical resistor zigzag) -->\n <polyline points=\"7,-7 4,-5 10,-3 4,-1 10,1 4,3 10,5 7,7\"/>\n <line x1=\"7\" y1=\"-10\" x2=\"7\" y2=\"-7\"/>\n <line x1=\"7\" y1=\"7\" x2=\"7\" y2=\"10\"/>" },
33
- "ota": { viewBox: "-35 -25 70 50", content: "<!--\n kind: ota (operational transconductance amplifier — LM13700 / CA3080 family)\n terminals: vin+ (SVG -30,-10), vin- (SVG -30,10), ibias (SVG -30,-20), iout (SVG 30,0), vcc (SVG 0,-20), vee (SVG 0,20)\n Same triangle as op-amp but with a bias-current input lead labeled \"Ib\".\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-30\" y1=\"-10\" x2=\"-11\" y2=\"-10\"/>\n <line x1=\"-30\" y1=\"10\" x2=\"-11\" y2=\"10\"/>\n <line x1=\"-30\" y1=\"-20\" x2=\"-3\" y2=\"-15\"/>\n <line x1=\"10\" y1=\"0\" x2=\"30\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <path d=\"M -11 -10 L 10 0 L -11 10 Z\"/>\n <line x1=\"-9\" y1=\"-12\" x2=\"-5\" y2=\"-12\"/>\n <line x1=\"-7\" y1=\"-14\" x2=\"-7\" y2=\"-10\"/>\n <line x1=\"-9\" y1=\"10\" x2=\"-5\" y2=\"10\"/>\n <text x=\"-1\" y=\"-14\" font-size=\"4\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">Ib</text>" },
34
- "pentode": { viewBox: "-25 -25 50 50", content: "<!--\n kind: pentode\n terminals: plate (SVG 0,-20), screen (SVG 10,-10), grid (SVG -20,0), cathode (SVG -10,20), suppressor (SVG 10,10)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-7\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"-20\" y1=\"0\" x2=\"-11\" y2=\"0\"/>\n <line x1=\"5\" y1=\"-3\" x2=\"10\" y2=\"-10\"/>\n <line x1=\"5\" y1=\"3\" x2=\"10\" y2=\"10\"/>\n <line x1=\"-4\" y1=\"6\" x2=\"-10\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-5\" y1=\"-7\" x2=\"5\" y2=\"-7\"/>\n <line x1=\"-5\" y1=\"-3\" x2=\"-3\" y2=\"-3\"/>\n <line x1=\"-1\" y1=\"-3\" x2=\"1\" y2=\"-3\"/>\n <line x1=\"3\" y1=\"-3\" x2=\"5\" y2=\"-3\"/>\n <line x1=\"-5\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n <line x1=\"-1\" y1=\"0\" x2=\"1\" y2=\"0\"/>\n <line x1=\"3\" y1=\"0\" x2=\"5\" y2=\"0\"/>\n <line x1=\"-5\" y1=\"3\" x2=\"-3\" y2=\"3\"/>\n <line x1=\"-1\" y1=\"3\" x2=\"1\" y2=\"3\"/>\n <line x1=\"3\" y1=\"3\" x2=\"5\" y2=\"3\"/>\n <line x1=\"-4\" y1=\"6\" x2=\"4\" y2=\"6\"/>" },
35
- "photoresistor": { viewBox: "-25 -25 50 50", content: "<!--\n kind: photoresistor (LDR)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n Light arrows point INTO the body (upper-right → resistor).\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-10\"/>\n <line x1=\"0\" y1=\"10\" x2=\"0\" y2=\"20\"/>\n </g>\n <polyline points=\"0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10\"/>\n <circle cx=\"0\" cy=\"0\" r=\"14\"/>\n <line x1=\"20\" y1=\"-20\" x2=\"14\" y2=\"-14\"/>\n <line x1=\"14\" y1=\"-14\" x2=\"17\" y2=\"-15\"/>\n <line x1=\"14\" y1=\"-14\" x2=\"15\" y2=\"-17\"/>\n <line x1=\"22\" y1=\"-12\" x2=\"16\" y2=\"-6\"/>\n <line x1=\"16\" y1=\"-6\" x2=\"19\" y2=\"-7\"/>\n <line x1=\"16\" y1=\"-6\" x2=\"17\" y2=\"-9\"/>" },
36
- "port": { viewBox: "-25 -25 50 50", content: "<!--\n kind: port (test point)\n terminals: t (SVG 0,0)\n -->\n <circle cx=\"0\" cy=\"0\" r=\"7\"/>\n <text x=\"0\" y=\"2.5\" font-size=\"7\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">P</text>" },
37
- "potentiometer": { viewBox: "-25 -45 50 90", content: "<!--\n kind: potentiometer\n terminals: a (SVG -10,-40), wiper (SVG 10,0), b (SVG -10,40)\n NOTE: catalog terminals extend to ±40, but the square card renderer draws\n connector dots separately, so the visual lead stubs are shortened.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-10\" y1=\"-24\" x2=\"-10\" y2=\"-10\"/>\n <line x1=\"-10\" y1=\"10\" x2=\"-10\" y2=\"24\"/>\n <line x1=\"10\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n </g>\n <polyline points=\"-10,-10 -15,-8 -5,-4 -15,0 -5,4 -15,8 -10,10\"/>\n <path d=\"M -3 0 L 1 -2.5 L 1 2.5 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
38
- "power-amp": { viewBox: "-35 -25 70 50", content: "<!--\n kind: power-amp (LM386 audio power amp, DIP-8)\n terminals: gain1 (-30,-20), vin- (-30,-10), vin+ (-30,0), gnd (-30,20), vout (30,0), vs (30,-20), bypass (30,-10), gain8 (30,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-30\" y1=\"-20\" x2=\"-20\" y2=\"-20\"/>\n <line x1=\"-30\" y1=\"-10\" x2=\"-20\" y2=\"-10\"/>\n <line x1=\"-30\" y1=\"0\" x2=\"-20\" y2=\"0\"/>\n <line x1=\"-30\" y1=\"20\" x2=\"-20\" y2=\"20\"/>\n <line x1=\"20\" y1=\"-20\" x2=\"30\" y2=\"-20\"/>\n <line x1=\"20\" y1=\"-10\" x2=\"30\" y2=\"-10\"/>\n <line x1=\"20\" y1=\"0\" x2=\"30\" y2=\"0\"/>\n <line x1=\"20\" y1=\"20\" x2=\"30\" y2=\"20\"/>\n </g>\n <rect x=\"-20\" y=\"-22\" width=\"40\" height=\"44\" rx=\"2\"/>\n <circle cx=\"-17\" cy=\"-19\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>\n <text x=\"0\" y=\"-3\" font-size=\"6\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">LM386</text>\n <text x=\"0\" y=\"7\" font-size=\"3.5\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">power amp</text>" },
39
- "rail": { viewBox: "-25 -25 50 50", content: "<!--\n kind: rail (voltage rail / power supply pin)\n terminals: t (SVG 0,0)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"-11\"/>\n </g>\n <path d=\"M 0 -16 L -3 -10 L 3 -10 Z\" fill=\"currentColor\" stroke=\"none\"/>\n <text x=\"6\" y=\"-9\" font-size=\"7\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\">V</text>" },
40
- "regulator": { viewBox: "-25 -25 50 50", content: "<!--\n kind: regulator (78xx / 79xx 3-terminal linear regulator, TO-92 / TO-220)\n terminals: vin (SVG -20,0), gnd (SVG 0,20), vout (SVG 20,0)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-10\" y2=\"0\"/>\n <line x1=\"10\" y1=\"0\" x2=\"20\" y2=\"0\"/>\n <line x1=\"0\" y1=\"10\" x2=\"0\" y2=\"20\"/>\n </g>\n <rect x=\"-10\" y=\"-10\" width=\"20\" height=\"20\" rx=\"2\"/>\n <text x=\"0\" y=\"3\" font-size=\"6\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">REG</text>" },
41
- "relay": { viewBox: "-25 -25 50 50", content: "<!--\n kind: relay (electromechanical, SPDT contact)\n terminals: coil+ (SVG -20,-10), coil- (SVG -20,10), pole (SVG 20,0), throw1 (SVG 20,-13), throw2 (SVG 20,13)\n Coil on the left, contact group on the right, mechanical coupling shown as dashed line.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-10\" x2=\"-12\" y2=\"-10\"/>\n <line x1=\"-20\" y1=\"10\" x2=\"-12\" y2=\"10\"/>\n <line x1=\"6\" y1=\"0\" x2=\"20\" y2=\"0\"/>\n <line x1=\"13\" y1=\"-13\" x2=\"20\" y2=\"-13\"/>\n <line x1=\"13\" y1=\"13\" x2=\"20\" y2=\"13\"/>\n </g>\n <path d=\"M -12 -10 A 3 2.5 0 0 1 -12 -5 A 3 2.5 0 0 1 -12 0 A 3 2.5 0 0 1 -12 5 A 3 2.5 0 0 1 -12 10\"/>\n <circle cx=\"6\" cy=\"0\" r=\"1.5\"/>\n <circle cx=\"13\" cy=\"-13\" r=\"1.5\"/>\n <circle cx=\"13\" cy=\"13\" r=\"1.5\"/>\n <line x1=\"6\" y1=\"0\" x2=\"12\" y2=\"-12\"/>\n <line x1=\"-9\" y1=\"0\" x2=\"6\" y2=\"0\" stroke-dasharray=\"2 2\"/>" },
42
- "resistor": { viewBox: "-25 -25 50 50", content: "<!--\n kind: resistor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-10\"/>\n <line x1=\"0\" y1=\"10\" x2=\"0\" y2=\"20\"/>\n </g>\n <polyline points=\"0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10\"/>" },
43
- "switch-3pdt": { viewBox: "-25 -25 50 50", content: "<!--\n kind: switch (3PDT footswitch — 3 stacked SPDTs ganged together)\n terminals: 9 lugs in a 3×3 grid — three columns p1/p2/p3, three rows tNa (top) / pole / tNb (bottom).\n Catalog local coords (y flips into SVG): t*a sits at SVG y=-20, pole at y=0, t*b at y=20.\n Each lever connects the centre pole to the upper throw; the dashed line shows mechanical gang.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"-20\" x2=\"-20\" y2=\"-12\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-12\"/>\n <line x1=\"20\" y1=\"-20\" x2=\"20\" y2=\"-12\"/>\n <line x1=\"-20\" y1=\"-3\" x2=\"-20\" y2=\"3\"/>\n <line x1=\"0\" y1=\"-3\" x2=\"0\" y2=\"3\"/>\n <line x1=\"20\" y1=\"-3\" x2=\"20\" y2=\"3\"/>\n <line x1=\"-20\" y1=\"12\" x2=\"-20\" y2=\"20\"/>\n <line x1=\"0\" y1=\"12\" x2=\"0\" y2=\"20\"/>\n <line x1=\"20\" y1=\"12\" x2=\"20\" y2=\"20\"/>\n </g>\n <circle cx=\"-20\" cy=\"-20\" r=\"1.5\"/>\n <circle cx=\"0\" cy=\"-20\" r=\"1.5\"/>\n <circle cx=\"20\" cy=\"-20\" r=\"1.5\"/>\n <circle cx=\"-20\" cy=\"0\" r=\"1.5\"/>\n <circle cx=\"0\" cy=\"0\" r=\"1.5\"/>\n <circle cx=\"20\" cy=\"0\" r=\"1.5\"/>\n <circle cx=\"-20\" cy=\"20\" r=\"1.5\"/>\n <circle cx=\"0\" cy=\"20\" r=\"1.5\"/>\n <circle cx=\"20\" cy=\"20\" r=\"1.5\"/>\n <line x1=\"-20\" y1=\"0\" x2=\"-18\" y2=\"-12\"/>\n <line x1=\"0\" y1=\"0\" x2=\"2\" y2=\"-12\"/>\n <line x1=\"20\" y1=\"0\" x2=\"22\" y2=\"-12\"/>\n <line x1=\"-22\" y1=\"-12\" x2=\"22\" y2=\"-12\" stroke-dasharray=\"2 2\"/>" },
44
- "switch-rotary": { viewBox: "-25 -25 50 50", content: "<!--\n kind: switch (rotary, 6-position example)\n terminals: 1 pole + N throws — geometric placeholder (catalog has no rotary terminal map yet)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-11\" y2=\"0\"/>\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-11\"/>\n <line x1=\"11\" y1=\"0\" x2=\"20\" y2=\"0\"/>\n <line x1=\"0\" y1=\"11\" x2=\"0\" y2=\"20\"/>\n <line x1=\"-8\" y1=\"-8\" x2=\"-13\" y2=\"-13\"/>\n <line x1=\"8\" y1=\"-8\" x2=\"13\" y2=\"-13\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <circle cx=\"-11\" cy=\"0\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"0\" cy=\"-11\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"11\" cy=\"0\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"-8\" cy=\"-8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"-8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"0\" cy=\"11\" r=\"1.5\" fill=\"currentColor\"/>\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"-9\"/>\n <path d=\"M 0 -9 L -2 -5 L 2 -5 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
45
- "switch-spdt": { viewBox: "-25 -25 50 50", content: "<!--\n kind: switch (SPDT — uses BJT_TERMINALS in the catalog)\n terminals: pole/base (SVG -20,0), throw1/collector (SVG 0,-20), throw2/emitter (SVG 10,20)\n Lever shown selecting the upper throw.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-20\" y1=\"0\" x2=\"-7\" y2=\"0\"/>\n <line x1=\"3\" y1=\"-10\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"3\" y1=\"10\" x2=\"10\" y2=\"20\"/>\n </g>\n <circle cx=\"-5\" cy=\"0\" r=\"1.5\"/>\n <circle cx=\"3\" cy=\"-10\" r=\"1.5\"/>\n <circle cx=\"3\" cy=\"10\" r=\"1.5\"/>\n <line x1=\"-5\" y1=\"0\" x2=\"2\" y2=\"-9\"/>" },
46
- "switch-spst": { viewBox: "-25 -25 50 50", content: "<!--\n kind: switch (SPST)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n Lever drawn in OPEN position (angled away from lower contact).\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"-5\" r=\"1.5\"/>\n <circle cx=\"0\" cy=\"5\" r=\"1.5\"/>\n <line x1=\"0\" y1=\"-5\" x2=\"-6\" y2=\"2\"/>" },
47
- "switch-toggle": { viewBox: "-25 -25 50 50", content: "<!--\n kind: switch (toggle — panel-mount, SPST visual with handle indicator)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-5\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"-5\" r=\"1.5\"/>\n <circle cx=\"0\" cy=\"5\" r=\"1.5\"/>\n <line x1=\"0\" y1=\"-5\" x2=\"-6\" y2=\"2\"/>\n <circle cx=\"-6\" cy=\"2\" r=\"2.5\"/>" },
48
- "transformer": { viewBox: "-25 -25 50 50", content: "<!--\n kind: transformer\n terminals: p+ (SVG -10,-20), p- (SVG -10,20), s+ (SVG 10,-20), s- (SVG 10,20)\n Primary on left, secondary on right. Core bars in the middle.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"-10\" y1=\"-20\" x2=\"-10\" y2=\"-10\"/>\n <line x1=\"-10\" y1=\"10\" x2=\"-10\" y2=\"20\"/>\n <line x1=\"10\" y1=\"-20\" x2=\"10\" y2=\"-10\"/>\n <line x1=\"10\" y1=\"10\" x2=\"10\" y2=\"20\"/>\n </g>\n <path d=\"M -10 -10 A 3 2.5 0 0 1 -10 -5 A 3 2.5 0 0 1 -10 0 A 3 2.5 0 0 1 -10 5 A 3 2.5 0 0 1 -10 10\"/>\n <path d=\"M 10 -10 A 3 2.5 0 0 0 10 -5 A 3 2.5 0 0 0 10 0 A 3 2.5 0 0 0 10 5 A 3 2.5 0 0 0 10 10\"/>\n <line x1=\"-2\" y1=\"-10\" x2=\"-2\" y2=\"10\"/>\n <line x1=\"2\" y1=\"-10\" x2=\"2\" y2=\"10\"/>" },
49
- "triode": { viewBox: "-25 -25 50 50", content: "<!--\n kind: triode\n terminals: plate (SVG 0,-20), grid (SVG -20,0), cathode (SVG -10,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-5\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"-20\" y1=\"0\" x2=\"-11\" y2=\"0\"/>\n <line x1=\"-4\" y1=\"5\" x2=\"-10\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-5\" y1=\"-5\" x2=\"5\" y2=\"-5\"/>\n <line x1=\"-5\" y1=\"0\" x2=\"-3\" y2=\"0\"/>\n <line x1=\"-1\" y1=\"0\" x2=\"1\" y2=\"0\"/>\n <line x1=\"3\" y1=\"0\" x2=\"5\" y2=\"0\"/>\n <line x1=\"-4\" y1=\"5\" x2=\"4\" y2=\"5\"/>" },
50
- "tube-diode": { viewBox: "-25 -25 50 50", content: "<!--\n kind: tube-diode (rectifier tube — single anode + cathode, no grids)\n terminals: anode/plate (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-5\" x2=\"0\" y2=\"-20\"/>\n <line x1=\"0\" y1=\"5\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"11\"/>\n <line x1=\"-5\" y1=\"-5\" x2=\"5\" y2=\"-5\"/>\n <line x1=\"-4\" y1=\"5\" x2=\"4\" y2=\"5\"/>" },
51
- "unsupported": { viewBox: "-25 -25 50 50", content: "<!--\n kind: unsupported (fallback glyph for source types that have no model mapping yet)\n terminals: depends on parser — usually 0 or 1\n -->\n <circle cx=\"0\" cy=\"0\" r=\"9\" stroke-dasharray=\"3 2\"/>\n <text x=\"0\" y=\"3\" font-size=\"10\" font-family=\"ui-sans-serif, system-ui, sans-serif\" fill=\"currentColor\" stroke=\"none\" text-anchor=\"middle\">?</text>" },
52
- "variable-resistor": { viewBox: "-25 -25 50 50", content: "<!--\n kind: variable-resistor (trimpot)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-10\"/>\n <line x1=\"0\" y1=\"10\" x2=\"0\" y2=\"20\"/>\n </g>\n <polyline points=\"0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10\"/>\n <line x1=\"-11\" y1=\"11\" x2=\"11\" y2=\"-11\"/>\n <path d=\"M 11 -11 L 6 -8 L 8 -6 Z\" fill=\"currentColor\" stroke=\"none\"/>" },
53
- "voltage-source": { viewBox: "-25 -25 50 50", content: "<!--\n kind: voltage-source\n terminals: + (SVG 0,-20), - (SVG 0,20)\n + marker at top, − marker at bottom inside the circle.\n -->\n <g stroke-width=\"0.95\">\n <line x1=\"0\" y1=\"-20\" x2=\"0\" y2=\"-9\"/>\n <line x1=\"0\" y1=\"9\" x2=\"0\" y2=\"20\"/>\n </g>\n <circle cx=\"0\" cy=\"0\" r=\"9\"/>\n <line x1=\"-2\" y1=\"-4\" x2=\"2\" y2=\"-4\"/>\n <line x1=\"0\" y1=\"-6\" x2=\"0\" y2=\"-2\"/>\n <line x1=\"-2\" y1=\"4\" x2=\"2\" y2=\"4\"/>" },
4
+ "analog-switch": {
5
+ viewBox: "-25 -25 50 50",
6
+ content: '<!--\n kind: analog-switch (one element of a CD4066-style bilateral switch)\n terminals: a (SVG -20,-10), b (SVG 20,-10), ctrl (SVG 0,20)\n Two contacts with a control input on the bottom like an SPST but with electronic control.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-10" x2="-7" y2="-10"/>\n <line x1="7" y1="-10" x2="20" y2="-10"/>\n <line x1="0" y1="6" x2="0" y2="20"/>\n </g>\n <circle cx="-5" cy="-10" r="1.5"/>\n <circle cx="5" cy="-10" r="1.5"/>\n <line x1="-5" y1="-10" x2="5" y2="-10" stroke-dasharray="2 2"/>\n <rect x="-6" y="0" width="12" height="6" rx="1"/>\n <text x="0" y="-13" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">SW</text>',
7
+ },
8
+ battery: {
9
+ viewBox: "-25 -25 50 50",
10
+ content: '<!--\n kind: battery / DC supply\n terminals: + (SVG 0,-20), - (SVG 0,20)\n Long plate = +, short plate = -. Top lead is the + terminal.\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <line x1="-7" y1="-5" x2="7" y2="-5"/>\n <line x1="-3" y1="-2" x2="3" y2="-2"/>\n <line x1="-7" y1="2" x2="7" y2="2"/>\n <line x1="-3" y1="5" x2="3" y2="5"/>\n <text x="-12" y="-4" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">+</text>',
11
+ },
12
+ bbd: {
13
+ viewBox: "-35 -25 70 50",
14
+ content: '<!--\n kind: bbd (bucket-brigade delay MN3007 / MN3008 / MN3205 family)\n terminals: vdd (-30,-20), vgg (-30,0), vss (-30,20), cp1 (0,-20), cp2 (0,20), in (-30,10), out1 (30,-10), out2 (30,10)\n DIP-8 style rectangle, "BBD" label and small bucket icon on the face.\n -->\n <g stroke-width="0.95">\n <line x1="-30" y1="-20" x2="-20" y2="-20"/>\n <line x1="-30" y1="0" x2="-20" y2="0"/>\n <line x1="-30" y1="20" x2="-20" y2="20"/>\n <line x1="-30" y1="10" x2="-20" y2="10"/>\n <line x1="0" y1="-20" x2="0" y2="-15"/>\n <line x1="0" y1="15" x2="0" y2="20"/>\n <line x1="20" y1="-10" x2="30" y2="-10"/>\n <line x1="20" y1="10" x2="30" y2="10"/>\n </g>\n <rect x="-20" y="-15" width="40" height="30" rx="2"/>\n <circle cx="-17" cy="-12" r="1.2" fill="currentColor" stroke="none"/>\n <text x="0" y="-3" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">BBD</text>\n <text x="0" y="8" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">MN3007</text>',
15
+ },
16
+ "bjt-npn": {
17
+ viewBox: "-25 -25 50 50",
18
+ content: '<!--\n kind: bjt (NPN variant)\n terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-6" y2="0"/>\n <line x1="4" y1="-7" x2="0" y2="-20"/>\n <line x1="4" y1="7" x2="10" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-6" y1="-5" x2="-6" y2="5"/>\n <line x1="-6" y1="-3" x2="4" y2="-7"/>\n <line x1="-6" y1="3" x2="4" y2="7"/>\n <path d="M 4 7 L -0.3 6.9 L 1.2 4.1 Z" fill="currentColor" stroke="none"/>',
19
+ },
20
+ "bjt-pnp": {
21
+ viewBox: "-25 -25 50 50",
22
+ content: '<!--\n kind: bjt (PNP variant)\n terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)\n Arrow points INWARD (emitter -> base) to distinguish PNP from NPN.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-6" y2="0"/>\n <line x1="4" y1="-7" x2="0" y2="-20"/>\n <line x1="4" y1="7" x2="10" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-6" y1="-5" x2="-6" y2="5"/>\n <line x1="-6" y1="-3" x2="4" y2="-7"/>\n <line x1="-6" y1="3" x2="4" y2="7"/>\n <path d="M -6 3 L -1.7 3.1 L -3.2 5.9 Z" fill="currentColor" stroke="none"/>',
23
+ },
24
+ "capacitor-electrolytic": {
25
+ viewBox: "-25 -25 50 50",
26
+ content: '<!--\n kind: capacitor (electrolytic variant)\n terminals: a/+ (SVG 0,-20), b/- (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-3"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <line x1="-8" y1="-3" x2="8" y2="-3"/>\n <path d="M -8 3 Q 0 7 8 3"/>\n <text x="-9" y="-6" font-size="7" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">+</text>',
27
+ },
28
+ capacitor: {
29
+ viewBox: "-25 -25 50 50",
30
+ content: '<!--\n kind: capacitor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-3"/>\n <line x1="0" y1="3" x2="0" y2="20"/>\n </g>\n <line x1="-8" y1="-3" x2="8" y2="-3"/>\n <line x1="-8" y1="3" x2="8" y2="3"/>',
31
+ },
32
+ "current-source": {
33
+ viewBox: "-25 -25 50 50",
34
+ content: '<!--\n kind: current-source\n terminals: + (SVG 0,-20), - (SVG 0,20)\n Arrow points toward + terminal (top) direction of conventional current flow.\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-9"/>\n <line x1="0" y1="9" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="9"/>\n <line x1="0" y1="5" x2="0" y2="-2"/>\n <path d="M 0 -5 L -3 0 L 3 0 Z" fill="currentColor" stroke="none"/>',
35
+ },
36
+ "delay-ic": {
37
+ viewBox: "-35 -25 70 50",
38
+ content: '<!--\n kind: delay-ic (PT2399 digital echo IC)\n terminals: vcc (-30,-20), gnd (-30,20), vref (-30,-10), vco (-30,0), in (-30,10), out (30,-10), fb (30,0), da1 (30,5), da2 (30,10)\n DIP-16 footprint, "PT2399" label centered.\n -->\n <g stroke-width="0.95">\n <line x1="-30" y1="-20" x2="-20" y2="-20"/>\n <line x1="-30" y1="-10" x2="-20" y2="-10"/>\n <line x1="-30" y1="0" x2="-20" y2="0"/>\n <line x1="-30" y1="10" x2="-20" y2="10"/>\n <line x1="-30" y1="20" x2="-20" y2="20"/>\n <line x1="20" y1="-10" x2="30" y2="-10"/>\n <line x1="20" y1="0" x2="30" y2="0"/>\n <line x1="20" y1="5" x2="30" y2="5"/>\n <line x1="20" y1="10" x2="30" y2="10"/>\n </g>\n <rect x="-20" y="-22" width="40" height="44" rx="2"/>\n <circle cx="-17" cy="-19" r="1.2" fill="currentColor" stroke="none"/>\n <text x="0" y="-2" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">PT2399</text>\n <text x="0" y="8" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">echo</text>',
39
+ },
40
+ "diode-schottky": {
41
+ viewBox: "-25 -25 50 50",
42
+ content: '<!--\n kind: diode (Schottky variant)\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="4" x2="0" y2="20"/>\n </g>\n <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>\n <polyline points="-9,1 -7,1 -7,4 7,4 7,7 9,7"/>',
43
+ },
44
+ "diode-zener": {
45
+ viewBox: "-25 -25 50 50",
46
+ content: '<!--\n kind: diode (Zener variant)\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="4" x2="0" y2="20"/>\n </g>\n <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>\n <polyline points="-9,2 -7,4 7,4 9,6"/>',
47
+ },
48
+ diode: {
49
+ viewBox: "-25 -25 50 50",
50
+ content: '<!--\n kind: diode\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n Arrow points anode (top) -> cathode (bottom).\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="4" x2="0" y2="20"/>\n </g>\n <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>\n <line x1="-7" y1="4" x2="7" y2="4"/>',
51
+ },
52
+ flipflop: {
53
+ viewBox: "-25 -25 50 50",
54
+ content: '<!--\n kind: flipflop (one half of a CD4013 dual D flip-flop)\n terminals: d (-20,-10), clk (-20,10), s (0,-20), r (0,20), q (20,-10), qbar (20,10)\n Rectangular gate body with D/CK on left, Q/Q̄ on right, set/reset on top/bottom.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-10" x2="-12" y2="-10"/>\n <line x1="-20" y1="10" x2="-12" y2="10"/>\n <line x1="12" y1="-10" x2="20" y2="-10"/>\n <line x1="12" y1="10" x2="20" y2="10"/>\n <line x1="0" y1="-20" x2="0" y2="-15"/>\n <line x1="0" y1="15" x2="0" y2="20"/>\n </g>\n <rect x="-12" y="-15" width="24" height="30" rx="2"/>\n <text x="-7" y="-7" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">D</text>\n <text x="-9" y="13" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">CK</text>\n <text x="7" y="-7" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="end">Q</text>\n <text x="9" y="13" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="end">Q̄</text>',
55
+ },
56
+ ground: {
57
+ viewBox: "-25 -25 50 50",
58
+ content: '<!--\n kind: ground\n terminals: t (SVG 0,0)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="0" x2="0" y2="4"/>\n </g>\n <line x1="-8" y1="4" x2="8" y2="4"/>\n <line x1="-5" y1="8" x2="5" y2="8"/>\n <line x1="-2" y1="12" x2="2" y2="12"/>',
59
+ },
60
+ "ic-block": {
61
+ viewBox: "-25 -25 50 50",
62
+ content: '<!--\n kind: ic (opaque block — BBD, PT2399, regulator, OTA, codec/DSP)\n terminals: generic DIP-8 layout (4 left, 4 right)\n NOTE: catalog has no terminal map yet for opaque ICs; this is a layout placeholder.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-9" x2="-13" y2="-9"/>\n <line x1="-20" y1="-3" x2="-13" y2="-3"/>\n <line x1="-20" y1="3" x2="-13" y2="3"/>\n <line x1="-20" y1="9" x2="-13" y2="9"/>\n <line x1="13" y1="-9" x2="20" y2="-9"/>\n <line x1="13" y1="-3" x2="20" y2="-3"/>\n <line x1="13" y1="3" x2="20" y2="3"/>\n <line x1="13" y1="9" x2="20" y2="9"/>\n </g>\n <rect x="-13" y="-13" width="26" height="26" rx="2"/>\n <!-- Pin-1 indicator -->\n <circle cx="-9" cy="-9" r="1.2" fill="currentColor" stroke="none"/>',
63
+ },
64
+ ic: {
65
+ viewBox: "-25 -25 50 50",
66
+ content: '<!--\n kind: ic (generic opaque IC — DIP-8 layout)\n terminals: p1..p4 left side (top→bottom), p5..p8 right side (bottom→top)\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-15" x2="-13" y2="-15"/>\n <line x1="-20" y1="-5" x2="-13" y2="-5"/>\n <line x1="-20" y1="5" x2="-13" y2="5"/>\n <line x1="-20" y1="15" x2="-13" y2="15"/>\n <line x1="13" y1="-15" x2="20" y2="-15"/>\n <line x1="13" y1="-5" x2="20" y2="-5"/>\n <line x1="13" y1="5" x2="20" y2="5"/>\n <line x1="13" y1="15" x2="20" y2="15"/>\n </g>\n <rect x="-13" y="-18" width="26" height="36" rx="2"/>\n <circle cx="-9" cy="-15" r="1.2" fill="currentColor" stroke="none"/>\n <text x="0" y="2" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">IC</text>',
67
+ },
68
+ inductor: {
69
+ viewBox: "-25 -25 50 50",
70
+ content: '<!--\n kind: inductor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-10"/>\n <line x1="0" y1="10" x2="0" y2="20"/>\n </g>\n <path d="M 0 -10 A 3 2.5 0 0 1 0 -5 A 3 2.5 0 0 1 0 0 A 3 2.5 0 0 1 0 5 A 3 2.5 0 0 1 0 10"/>',
71
+ },
72
+ "jack-input": {
73
+ viewBox: "-25 -25 50 50",
74
+ content: '<!--\n kind: jack (Input variant — TS phone jack)\n terminals: tip (SVG 0,-20), sleeve (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-3"/>\n <line x1="0" y1="3" x2="0" y2="20"/>\n </g>\n <!-- Plug barrel -->\n <rect x="-15" y="-7" width="6" height="14" rx="1"/>\n <!-- Tip and sleeve rods -->\n <line x1="-9" y1="-3" x2="0" y2="-3"/>\n <line x1="-9" y1="3" x2="0" y2="3"/>\n <text x="-12" y="-11" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">INPUT</text>',
75
+ },
76
+ "jack-output": {
77
+ viewBox: "-25 -25 50 50",
78
+ content: '<!--\n kind: jack (Output variant — TS phone jack / Speaker)\n terminals: tip (SVG 0,-20), sleeve (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-3"/>\n <line x1="0" y1="3" x2="0" y2="20"/>\n </g>\n <!-- Mirrored plug barrel -->\n <rect x="9" y="-7" width="6" height="14" rx="1"/>\n <!-- Tip and sleeve rods -->\n <line x1="0" y1="-3" x2="9" y2="-3"/>\n <line x1="0" y1="3" x2="9" y2="3"/>\n <text x="2" y="-11" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">OUTPUT</text>',
79
+ },
80
+ "jfet-junction-n": {
81
+ viewBox: "-25 -25 50 50",
82
+ content: '<!--\n kind: jfet (N-channel JunctionFieldEffectTransistor variant)\n terminals: drain (SVG 10,-20), gate (SVG -20,0), source (SVG 10,20)\n LiveSPICE JunctionFieldEffectTransistor uses slanted drain/source anchors.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-3" y2="0"/>\n <line x1="0" y1="-8" x2="10" y2="-20"/>\n <line x1="0" y1="8" x2="10" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-3" y1="-8" x2="-3" y2="8"/>\n <line x1="-3" y1="-8" x2="0" y2="-8"/>\n <line x1="-3" y1="8" x2="0" y2="8"/>\n <path d="M -3 0 L -7 -2 L -7 2 Z" fill="currentColor" stroke="none"/>',
83
+ },
84
+ "jfet-n": {
85
+ viewBox: "-25 -25 50 50",
86
+ content: '<!--\n kind: jfet (N-channel variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20)\n Arrow on gate lead points INTO the channel.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-3" y2="0"/>\n <line x1="0" y1="-8" x2="0" y2="-20"/>\n <line x1="0" y1="8" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-3" y1="-8" x2="-3" y2="8"/>\n <line x1="-3" y1="-8" x2="0" y2="-8"/>\n <line x1="-3" y1="8" x2="0" y2="8"/>\n <path d="M -3 0 L -7 -2 L -7 2 Z" fill="currentColor" stroke="none"/>',
87
+ },
88
+ "jfet-p": {
89
+ viewBox: "-25 -25 50 50",
90
+ content: '<!--\n kind: jfet (P-channel variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20)\n Arrow on gate lead points OUT of the channel (away from channel).\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-3" y2="0"/>\n <line x1="0" y1="-8" x2="0" y2="-20"/>\n <line x1="0" y1="8" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-3" y1="-8" x2="-3" y2="8"/>\n <line x1="-3" y1="-8" x2="0" y2="-8"/>\n <line x1="-3" y1="8" x2="0" y2="8"/>\n <path d="M -7 0 L -3 -2 L -3 2 Z" fill="currentColor" stroke="none"/>',
91
+ },
92
+ label: {
93
+ viewBox: "-25 -25 50 50",
94
+ content: "<!--\n kind: label\n terminals: none\n The label text is dynamic (read from properties.Text by schematic.tsx).\n This SVG is intentionally empty — the renderer draws the text glyph itself.\n -->",
95
+ },
96
+ led: {
97
+ viewBox: "-25 -25 50 50",
98
+ content: '<!--\n kind: led\n terminals: anode (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="4" x2="0" y2="20"/>\n </g>\n <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>\n <line x1="-7" y1="4" x2="7" y2="4"/>\n <line x1="8" y1="-8" x2="14" y2="-14"/>\n <line x1="14" y1="-14" x2="12" y2="-10"/>\n <line x1="14" y1="-14" x2="10" y2="-12"/>\n <line x1="11" y1="-3" x2="17" y2="-9"/>\n <line x1="17" y1="-9" x2="15" y2="-5"/>\n <line x1="17" y1="-9" x2="13" y2="-7"/>',
99
+ },
100
+ "mosfet-n": {
101
+ viewBox: "-25 -25 50 50",
102
+ content: '<!--\n kind: mosfet (N-channel enhancement variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20), body (SVG 10,0)\n Body arrow points INTO channel (left) — distinguishes N from P.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-7" y2="0"/>\n <line x1="0" y1="-8" x2="0" y2="-20"/>\n <line x1="0" y1="8" x2="0" y2="20"/>\n <line x1="-3" y1="0" x2="10" y2="0"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-7" y1="-5" x2="-7" y2="5"/>\n <line x1="-3" y1="-8" x2="-3" y2="-3"/>\n <line x1="-3" y1="-1" x2="-3" y2="1"/>\n <line x1="-3" y1="3" x2="-3" y2="8"/>\n <line x1="-3" y1="-8" x2="0" y2="-8"/>\n <line x1="-3" y1="8" x2="0" y2="8"/>\n <path d="M -1 0 L 3 -2 L 3 2 Z" fill="currentColor" stroke="none"/>',
103
+ },
104
+ "mosfet-p": {
105
+ viewBox: "-25 -25 50 50",
106
+ content: '<!--\n kind: mosfet (P-channel enhancement variant)\n terminals: drain (SVG 0,-20), gate (SVG -20,0), source (SVG 0,20), body (SVG 10,0)\n Body arrow points OUT of channel (right) — distinguishes P from N.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-7" y2="0"/>\n <line x1="0" y1="-8" x2="0" y2="-20"/>\n <line x1="0" y1="8" x2="0" y2="20"/>\n <line x1="-3" y1="0" x2="10" y2="0"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-7" y1="-5" x2="-7" y2="5"/>\n <line x1="-3" y1="-8" x2="-3" y2="-3"/>\n <line x1="-3" y1="-1" x2="-3" y2="1"/>\n <line x1="-3" y1="3" x2="-3" y2="8"/>\n <line x1="-3" y1="-8" x2="0" y2="-8"/>\n <line x1="-3" y1="8" x2="0" y2="8"/>\n <path d="M 3 0 L -1 -2 L -1 2 Z" fill="currentColor" stroke="none"/>',
107
+ },
108
+ "named-wire": {
109
+ viewBox: "-25 -25 50 50",
110
+ content: '<!--\n kind: named-wire\n terminals: t (SVG 0,0)\n Small marker circle + short outbound stroke toward the wire\'s name label.\n -->\n <g stroke-width="0.95">\n <line x1="3" y1="0" x2="12" y2="0"/>\n </g>\n <circle cx="0" cy="0" r="3"/>',
111
+ },
112
+ opamp: {
113
+ viewBox: "-35 -25 70 50",
114
+ content: '<!--\n kind: opamp\n terminals: vin+ (SVG -30,-10), vin- (SVG -30,10), vout (SVG 30,0), vcc (SVG 0,-20), vee (SVG 0,20)\n NOTE: extended viewBox (-35..35 wide) because input/output leads sit at x=±30.\n + and − markers drawn as line strokes (more readable at small scale than <text>).\n -->\n <g stroke-width="0.95">\n <line x1="-30" y1="-10" x2="-11" y2="-10"/>\n <line x1="-30" y1="10" x2="-11" y2="10"/>\n <line x1="10" y1="0" x2="30" y2="0"/>\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <path d="M -11 -10 L 10 0 L -11 10 Z"/>\n <!-- + marker (vin+ side) -->\n <line x1="-9" y1="-5" x2="-5" y2="-5"/>\n <line x1="-7" y1="-7" x2="-7" y2="-3"/>\n <!-- − marker (vin− side) -->\n <line x1="-9" y1="5" x2="-5" y2="5"/>',
115
+ },
116
+ optocoupler: {
117
+ viewBox: "-25 -25 50 50",
118
+ content: '<!--\n kind: optocoupler (vactrol — LED + LDR pair inside an opaque package)\n terminals: led+ (SVG -20,-10), led- (SVG -20,10), r1 (SVG 20,-10), r2 (SVG 20,10)\n NOTE: catalog has no terminal map yet; using generic 4-pin DIP-style layout.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-10" x2="-7" y2="-10"/>\n <line x1="-20" y1="10" x2="-7" y2="10"/>\n <line x1="7" y1="-10" x2="20" y2="-10"/>\n <line x1="7" y1="10" x2="20" y2="10"/>\n </g>\n <rect x="-15" y="-13" width="30" height="26" rx="2"/>\n <!-- LED triangle pointing down (anode top → cathode bottom) -->\n <path d="M -10 -3 L -4 -3 L -7 3 Z" fill="currentColor" stroke="none"/>\n <line x1="-11" y1="3" x2="-3" y2="3"/>\n <line x1="-7" y1="-10" x2="-7" y2="-3"/>\n <line x1="-7" y1="3" x2="-7" y2="10"/>\n <!-- Emission arrows from LED → LDR -->\n <line x1="-2" y1="-2" x2="2" y2="-2"/>\n <line x1="2" y1="-2" x2="0" y2="-3"/>\n <line x1="2" y1="-2" x2="0" y2="-1"/>\n <line x1="-2" y1="2" x2="2" y2="2"/>\n <line x1="2" y1="2" x2="0" y2="1"/>\n <line x1="2" y1="2" x2="0" y2="3"/>\n <!-- LDR (vertical resistor zigzag) -->\n <polyline points="7,-7 4,-5 10,-3 4,-1 10,1 4,3 10,5 7,7"/>\n <line x1="7" y1="-10" x2="7" y2="-7"/>\n <line x1="7" y1="7" x2="7" y2="10"/>',
119
+ },
120
+ ota: {
121
+ viewBox: "-35 -25 70 50",
122
+ content: '<!--\n kind: ota (operational transconductance amplifier — LM13700 / CA3080 family)\n terminals: vin+ (SVG -30,-10), vin- (SVG -30,10), ibias (SVG -30,-20), iout (SVG 30,0), vcc (SVG 0,-20), vee (SVG 0,20)\n Same triangle as op-amp but with a bias-current input lead labeled "Ib".\n -->\n <g stroke-width="0.95">\n <line x1="-30" y1="-10" x2="-11" y2="-10"/>\n <line x1="-30" y1="10" x2="-11" y2="10"/>\n <line x1="-30" y1="-20" x2="-3" y2="-15"/>\n <line x1="10" y1="0" x2="30" y2="0"/>\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <path d="M -11 -10 L 10 0 L -11 10 Z"/>\n <line x1="-9" y1="-12" x2="-5" y2="-12"/>\n <line x1="-7" y1="-14" x2="-7" y2="-10"/>\n <line x1="-9" y1="10" x2="-5" y2="10"/>\n <text x="-1" y="-14" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">Ib</text>',
123
+ },
124
+ pentode: {
125
+ viewBox: "-25 -25 50 50",
126
+ content: '<!--\n kind: pentode\n terminals: plate (SVG 0,-20), screen (SVG 10,-10), grid (SVG -20,0), cathode (SVG -10,20), suppressor (SVG 10,10)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-7" x2="0" y2="-20"/>\n <line x1="-20" y1="0" x2="-11" y2="0"/>\n <line x1="5" y1="-3" x2="10" y2="-10"/>\n <line x1="5" y1="3" x2="10" y2="10"/>\n <line x1="-4" y1="6" x2="-10" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-5" y1="-7" x2="5" y2="-7"/>\n <line x1="-5" y1="-3" x2="-3" y2="-3"/>\n <line x1="-1" y1="-3" x2="1" y2="-3"/>\n <line x1="3" y1="-3" x2="5" y2="-3"/>\n <line x1="-5" y1="0" x2="-3" y2="0"/>\n <line x1="-1" y1="0" x2="1" y2="0"/>\n <line x1="3" y1="0" x2="5" y2="0"/>\n <line x1="-5" y1="3" x2="-3" y2="3"/>\n <line x1="-1" y1="3" x2="1" y2="3"/>\n <line x1="3" y1="3" x2="5" y2="3"/>\n <line x1="-4" y1="6" x2="4" y2="6"/>',
127
+ },
128
+ photoresistor: {
129
+ viewBox: "-25 -25 50 50",
130
+ content: '<!--\n kind: photoresistor (LDR)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n Light arrows point INTO the body (upper-right → resistor).\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-10"/>\n <line x1="0" y1="10" x2="0" y2="20"/>\n </g>\n <polyline points="0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10"/>\n <circle cx="0" cy="0" r="14"/>\n <line x1="20" y1="-20" x2="14" y2="-14"/>\n <line x1="14" y1="-14" x2="17" y2="-15"/>\n <line x1="14" y1="-14" x2="15" y2="-17"/>\n <line x1="22" y1="-12" x2="16" y2="-6"/>\n <line x1="16" y1="-6" x2="19" y2="-7"/>\n <line x1="16" y1="-6" x2="17" y2="-9"/>',
131
+ },
132
+ port: {
133
+ viewBox: "-25 -25 50 50",
134
+ content: '<!--\n kind: port (test point)\n terminals: t (SVG 0,0)\n -->\n <circle cx="0" cy="0" r="7"/>\n <text x="0" y="2.5" font-size="7" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">P</text>',
135
+ },
136
+ potentiometer: {
137
+ viewBox: "-25 -45 50 90",
138
+ content: '<!--\n kind: potentiometer\n terminals: a (SVG -10,-40), wiper (SVG 10,0), b (SVG -10,40)\n NOTE: catalog terminals extend to ±40, but the square card renderer draws\n connector dots separately, so the visual lead stubs are shortened.\n -->\n <g stroke-width="0.95">\n <line x1="-10" y1="-24" x2="-10" y2="-10"/>\n <line x1="-10" y1="10" x2="-10" y2="24"/>\n <line x1="10" y1="0" x2="-3" y2="0"/>\n </g>\n <polyline points="-10,-10 -15,-8 -5,-4 -15,0 -5,4 -15,8 -10,10"/>\n <path d="M -3 0 L 1 -2.5 L 1 2.5 Z" fill="currentColor" stroke="none"/>',
139
+ },
140
+ "power-amp": {
141
+ viewBox: "-35 -25 70 50",
142
+ content: '<!--\n kind: power-amp (LM386 audio power amp, DIP-8)\n terminals: gain1 (-30,-20), vin- (-30,-10), vin+ (-30,0), gnd (-30,20), vout (30,0), vs (30,-20), bypass (30,-10), gain8 (30,20)\n -->\n <g stroke-width="0.95">\n <line x1="-30" y1="-20" x2="-20" y2="-20"/>\n <line x1="-30" y1="-10" x2="-20" y2="-10"/>\n <line x1="-30" y1="0" x2="-20" y2="0"/>\n <line x1="-30" y1="20" x2="-20" y2="20"/>\n <line x1="20" y1="-20" x2="30" y2="-20"/>\n <line x1="20" y1="-10" x2="30" y2="-10"/>\n <line x1="20" y1="0" x2="30" y2="0"/>\n <line x1="20" y1="20" x2="30" y2="20"/>\n </g>\n <rect x="-20" y="-22" width="40" height="44" rx="2"/>\n <circle cx="-17" cy="-19" r="1.2" fill="currentColor" stroke="none"/>\n <text x="0" y="-3" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">LM386</text>\n <text x="0" y="7" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">power amp</text>',
143
+ },
144
+ rail: {
145
+ viewBox: "-25 -25 50 50",
146
+ content: '<!--\n kind: rail (voltage rail / power supply pin)\n terminals: t (SVG 0,0)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="0" x2="0" y2="-11"/>\n </g>\n <path d="M 0 -16 L -3 -10 L 3 -10 Z" fill="currentColor" stroke="none"/>\n <text x="6" y="-9" font-size="7" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">V</text>',
147
+ },
148
+ regulator: {
149
+ viewBox: "-25 -25 50 50",
150
+ content: '<!--\n kind: regulator (78xx / 79xx 3-terminal linear regulator, TO-92 / TO-220)\n terminals: vin (SVG -20,0), gnd (SVG 0,20), vout (SVG 20,0)\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-10" y2="0"/>\n <line x1="10" y1="0" x2="20" y2="0"/>\n <line x1="0" y1="10" x2="0" y2="20"/>\n </g>\n <rect x="-10" y="-10" width="20" height="20" rx="2"/>\n <text x="0" y="3" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">REG</text>',
151
+ },
152
+ relay: {
153
+ viewBox: "-25 -25 50 50",
154
+ content: '<!--\n kind: relay (electromechanical, SPDT contact)\n terminals: coil+ (SVG -20,-10), coil- (SVG -20,10), pole (SVG 20,0), throw1 (SVG 20,-13), throw2 (SVG 20,13)\n Coil on the left, contact group on the right, mechanical coupling shown as dashed line.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-10" x2="-12" y2="-10"/>\n <line x1="-20" y1="10" x2="-12" y2="10"/>\n <line x1="6" y1="0" x2="20" y2="0"/>\n <line x1="13" y1="-13" x2="20" y2="-13"/>\n <line x1="13" y1="13" x2="20" y2="13"/>\n </g>\n <path d="M -12 -10 A 3 2.5 0 0 1 -12 -5 A 3 2.5 0 0 1 -12 0 A 3 2.5 0 0 1 -12 5 A 3 2.5 0 0 1 -12 10"/>\n <circle cx="6" cy="0" r="1.5"/>\n <circle cx="13" cy="-13" r="1.5"/>\n <circle cx="13" cy="13" r="1.5"/>\n <line x1="6" y1="0" x2="12" y2="-12"/>\n <line x1="-9" y1="0" x2="6" y2="0" stroke-dasharray="2 2"/>',
155
+ },
156
+ resistor: {
157
+ viewBox: "-25 -25 50 50",
158
+ content: '<!--\n kind: resistor\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-10"/>\n <line x1="0" y1="10" x2="0" y2="20"/>\n </g>\n <polyline points="0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10"/>',
159
+ },
160
+ "switch-3pdt": {
161
+ viewBox: "-25 -25 50 50",
162
+ content: '<!--\n kind: switch (3PDT footswitch — 3 stacked SPDTs ganged together)\n terminals: 9 lugs in a 3×3 grid — three columns p1/p2/p3, three rows tNa (top) / pole / tNb (bottom).\n Catalog local coords (y flips into SVG): t*a sits at SVG y=-20, pole at y=0, t*b at y=20.\n Each lever connects the centre pole to the upper throw; the dashed line shows mechanical gang.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="-20" x2="-20" y2="-12"/>\n <line x1="0" y1="-20" x2="0" y2="-12"/>\n <line x1="20" y1="-20" x2="20" y2="-12"/>\n <line x1="-20" y1="-3" x2="-20" y2="3"/>\n <line x1="0" y1="-3" x2="0" y2="3"/>\n <line x1="20" y1="-3" x2="20" y2="3"/>\n <line x1="-20" y1="12" x2="-20" y2="20"/>\n <line x1="0" y1="12" x2="0" y2="20"/>\n <line x1="20" y1="12" x2="20" y2="20"/>\n </g>\n <circle cx="-20" cy="-20" r="1.5"/>\n <circle cx="0" cy="-20" r="1.5"/>\n <circle cx="20" cy="-20" r="1.5"/>\n <circle cx="-20" cy="0" r="1.5"/>\n <circle cx="0" cy="0" r="1.5"/>\n <circle cx="20" cy="0" r="1.5"/>\n <circle cx="-20" cy="20" r="1.5"/>\n <circle cx="0" cy="20" r="1.5"/>\n <circle cx="20" cy="20" r="1.5"/>\n <line x1="-20" y1="0" x2="-18" y2="-12"/>\n <line x1="0" y1="0" x2="2" y2="-12"/>\n <line x1="20" y1="0" x2="22" y2="-12"/>\n <line x1="-22" y1="-12" x2="22" y2="-12" stroke-dasharray="2 2"/>',
163
+ },
164
+ "switch-rotary": {
165
+ viewBox: "-25 -25 50 50",
166
+ content: '<!--\n kind: switch (rotary, 6-position example)\n terminals: 1 pole + N throws — geometric placeholder (catalog has no rotary terminal map yet)\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-11" y2="0"/>\n <line x1="0" y1="-20" x2="0" y2="-11"/>\n <line x1="11" y1="0" x2="20" y2="0"/>\n <line x1="0" y1="11" x2="0" y2="20"/>\n <line x1="-8" y1="-8" x2="-13" y2="-13"/>\n <line x1="8" y1="-8" x2="13" y2="-13"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <circle cx="-11" cy="0" r="1.5" fill="currentColor"/>\n <circle cx="0" cy="-11" r="1.5" fill="currentColor"/>\n <circle cx="11" cy="0" r="1.5" fill="currentColor"/>\n <circle cx="-8" cy="-8" r="1.5" fill="currentColor"/>\n <circle cx="8" cy="-8" r="1.5" fill="currentColor"/>\n <circle cx="0" cy="11" r="1.5" fill="currentColor"/>\n <line x1="0" y1="0" x2="0" y2="-9"/>\n <path d="M 0 -9 L -2 -5 L 2 -5 Z" fill="currentColor" stroke="none"/>',
167
+ },
168
+ "switch-spdt": {
169
+ viewBox: "-25 -25 50 50",
170
+ content: '<!--\n kind: switch (SPDT — uses BJT_TERMINALS in the catalog)\n terminals: pole/base (SVG -20,0), throw1/collector (SVG 0,-20), throw2/emitter (SVG 10,20)\n Lever shown selecting the upper throw.\n -->\n <g stroke-width="0.95">\n <line x1="-20" y1="0" x2="-7" y2="0"/>\n <line x1="3" y1="-10" x2="0" y2="-20"/>\n <line x1="3" y1="10" x2="10" y2="20"/>\n </g>\n <circle cx="-5" cy="0" r="1.5"/>\n <circle cx="3" cy="-10" r="1.5"/>\n <circle cx="3" cy="10" r="1.5"/>\n <line x1="-5" y1="0" x2="2" y2="-9"/>',
171
+ },
172
+ "switch-spst": {
173
+ viewBox: "-25 -25 50 50",
174
+ content: '<!--\n kind: switch (SPST)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n Lever drawn in OPEN position (angled away from lower contact).\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="-5" r="1.5"/>\n <circle cx="0" cy="5" r="1.5"/>\n <line x1="0" y1="-5" x2="-6" y2="2"/>',
175
+ },
176
+ "switch-toggle": {
177
+ viewBox: "-25 -25 50 50",
178
+ content: '<!--\n kind: switch (toggle — panel-mount, SPST visual with handle indicator)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-5"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="-5" r="1.5"/>\n <circle cx="0" cy="5" r="1.5"/>\n <line x1="0" y1="-5" x2="-6" y2="2"/>\n <circle cx="-6" cy="2" r="2.5"/>',
179
+ },
180
+ transformer: {
181
+ viewBox: "-25 -25 50 50",
182
+ content: '<!--\n kind: transformer\n terminals: p+ (SVG -10,-20), p- (SVG -10,20), s+ (SVG 10,-20), s- (SVG 10,20)\n Primary on left, secondary on right. Core bars in the middle.\n -->\n <g stroke-width="0.95">\n <line x1="-10" y1="-20" x2="-10" y2="-10"/>\n <line x1="-10" y1="10" x2="-10" y2="20"/>\n <line x1="10" y1="-20" x2="10" y2="-10"/>\n <line x1="10" y1="10" x2="10" y2="20"/>\n </g>\n <path d="M -10 -10 A 3 2.5 0 0 1 -10 -5 A 3 2.5 0 0 1 -10 0 A 3 2.5 0 0 1 -10 5 A 3 2.5 0 0 1 -10 10"/>\n <path d="M 10 -10 A 3 2.5 0 0 0 10 -5 A 3 2.5 0 0 0 10 0 A 3 2.5 0 0 0 10 5 A 3 2.5 0 0 0 10 10"/>\n <line x1="-2" y1="-10" x2="-2" y2="10"/>\n <line x1="2" y1="-10" x2="2" y2="10"/>',
183
+ },
184
+ triode: {
185
+ viewBox: "-25 -25 50 50",
186
+ content: '<!--\n kind: triode\n terminals: plate (SVG 0,-20), grid (SVG -20,0), cathode (SVG -10,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-5" x2="0" y2="-20"/>\n <line x1="-20" y1="0" x2="-11" y2="0"/>\n <line x1="-4" y1="5" x2="-10" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-5" y1="-5" x2="5" y2="-5"/>\n <line x1="-5" y1="0" x2="-3" y2="0"/>\n <line x1="-1" y1="0" x2="1" y2="0"/>\n <line x1="3" y1="0" x2="5" y2="0"/>\n <line x1="-4" y1="5" x2="4" y2="5"/>',
187
+ },
188
+ "tube-diode": {
189
+ viewBox: "-25 -25 50 50",
190
+ content: '<!--\n kind: tube-diode (rectifier tube — single anode + cathode, no grids)\n terminals: anode/plate (SVG 0,-20), cathode (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-5" x2="0" y2="-20"/>\n <line x1="0" y1="5" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="11"/>\n <line x1="-5" y1="-5" x2="5" y2="-5"/>\n <line x1="-4" y1="5" x2="4" y2="5"/>',
191
+ },
192
+ unsupported: {
193
+ viewBox: "-25 -25 50 50",
194
+ content: '<!--\n kind: unsupported (fallback glyph for source types that have no model mapping yet)\n terminals: depends on parser — usually 0 or 1\n -->\n <circle cx="0" cy="0" r="9" stroke-dasharray="3 2"/>\n <text x="0" y="3" font-size="10" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">?</text>',
195
+ },
196
+ "variable-resistor": {
197
+ viewBox: "-25 -25 50 50",
198
+ content: '<!--\n kind: variable-resistor (trimpot)\n terminals: a (SVG 0,-20), b (SVG 0,20)\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-10"/>\n <line x1="0" y1="10" x2="0" y2="20"/>\n </g>\n <polyline points="0,-10 -5,-8 5,-4 -5,0 5,4 -5,8 0,10"/>\n <line x1="-11" y1="11" x2="11" y2="-11"/>\n <path d="M 11 -11 L 6 -8 L 8 -6 Z" fill="currentColor" stroke="none"/>',
199
+ },
200
+ "voltage-source": {
201
+ viewBox: "-25 -25 50 50",
202
+ content: '<!--\n kind: voltage-source\n terminals: + (SVG 0,-20), - (SVG 0,20)\n + marker at top, − marker at bottom inside the circle.\n -->\n <g stroke-width="0.95">\n <line x1="0" y1="-20" x2="0" y2="-9"/>\n <line x1="0" y1="9" x2="0" y2="20"/>\n </g>\n <circle cx="0" cy="0" r="9"/>\n <line x1="-2" y1="-4" x2="2" y2="-4"/>\n <line x1="0" y1="-6" x2="0" y2="-2"/>\n <line x1="-2" y1="4" x2="2" y2="4"/>',
203
+ },
54
204
  };
55
205
  export const SYMBOL_KEYS = Object.keys(SYMBOL_CONTENT);
56
206
  //# sourceMappingURL=svg-content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"svg-content.js","sourceRoot":"","sources":["../../../src/preview/symbols/svg-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"svg-content.js","sourceRoot":"","sources":["../../../src/preview/symbols/svg-content.ts"],"names":[],"mappings":"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"}