feat(assets): implant HUD icon set v0.1 — #795

13 SVG icons covering stance indicators (walk/careful/sprint/crouch),
status badges (health, perception), interaction prompts (talk/observe/
follow/examine), and inventory silhouettes (manifest, access token,
comm log).

All D-086 compliant: 1px stroke, #c8d0e0 chrome, round linecaps,
minimal anchor points, no icon fonts, runtime-replaceable via
ShaderMaterial. Sizes: 20×20 (stance/status), 16×16 (actions),
40×40 (inventory). Unblocks client #787.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-06 08:18:56 +02:00
co-authored by Claude Sonnet 4.6
parent f1b97d4a88
commit b5cb93203b
14 changed files with 389 additions and 0 deletions
@@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
<!--
Interaction prompt: EXAMINE
Design: magnifying glass — lens circle (geometric primitive) with diagonal handle.
Universally understood. The circle is a geometric primitive, not a decorative curve.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Lens -->
<circle cx="7" cy="7" r="4"/>
<!-- Handle -->
<line x1="10.5" y1="10.5" x2="14" y2="14"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 602 B

@@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
<!--
Interaction prompt: FOLLOW
Design: directional arrow right — clean shaft with arrowhead.
Communicates: move toward / track. Verb context makes the meaning clear.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Arrow shaft -->
<line x1="2" y1="8" x2="13" y2="8"/>
<!-- Arrowhead -->
<polyline points="10,5 13,8 10,11"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 578 B

@@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
<!--
Interaction prompt: OBSERVE
Design: geometric eye — diamond outline with pupil circle.
Shares vocabulary with icon_status_perception.svg (reinforces visual system).
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Diamond eye -->
<polygon points="8,2 15,8 8,14 1,8"/>
<!-- Pupil -->
<circle cx="8" cy="8" r="2.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 573 B

+18
View File
@@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16">
<!--
Interaction prompt: TALK
Design: speech bubble — rectangle body, triangle callout at bottom-left,
two content lines suggesting text. Rectangular (not rounded) to match
insert UI geometry aesthetic.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Bubble body -->
<rect x="2" y="2" width="12" height="8"/>
<!-- Callout triangle (bottom-left) -->
<polyline points="4,10 4,14 7,10"/>
<!-- Implied text content lines -->
<line x1="5" y1="5" x2="11" y2="5"/>
<line x1="5" y1="7.5" x2="9" y2="7.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 768 B

@@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40">
<!--
Inventory item: ACCESS TOKEN (hexagonal tag)
Design: flat-top hexagon body with a small punch-hole circle near top center
(physical tag/credential). Two interior lines suggest encoded markings.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points, 40×40px.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Hexagon (flat-top orientation) -->
<polygon points="10,10 20,5 30,10 30,30 20,35 10,30"/>
<!-- Punch hole (physical tag indicator) -->
<circle cx="20" cy="9" r="2"/>
<!-- Encoded marking lines -->
<line x1="14" y1="20" x2="26" y2="20"/>
<line x1="16" y1="24" x2="24" y2="24"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 798 B

@@ -0,0 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40">
<!--
Inventory item: PERSONAL COMM LOG (communication device)
Design: rectangular handheld device body, screen inset, antenna stub,
two diagonal signal-propagation lines (polylines, not curves).
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points, 40×40px.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Device body -->
<rect x="11" y="12" width="16" height="24"/>
<!-- Screen inset -->
<rect x="14" y="15" width="10" height="9"/>
<!-- Antenna stub -->
<line x1="21" y1="12" x2="23" y2="7"/>
<!-- Signal propagation lines (angled, not arcs) -->
<polyline points="25,9 27,10 28,12"/>
<polyline points="25,7 29,9 30,12"/>
<!-- Control button -->
<line x1="16" y1="31" x2="22" y2="31"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 913 B

@@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40">
<!--
Inventory item: MANIFEST (document)
Design: document body with top-right folded corner (classic document indicator),
three text-content lines inside suggesting information density.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points, 40×40px.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Document body with folded corner (pentagon path) -->
<path d="M8,4 L22,4 L28,10 L28,34 L8,34 Z"/>
<!-- Fold crease lines (complete the corner triangle) -->
<polyline points="22,4 22,10 28,10"/>
<!-- Content text lines -->
<line x1="12" y1="17" x2="24" y2="17"/>
<line x1="12" y1="21" x2="24" y2="21"/>
<line x1="12" y1="25" x2="19" y2="25"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 854 B

@@ -0,0 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Stance: CAREFUL
Design: upright, arms spread wide (checking environment, lateral awareness),
legs closer together (deliberate slow placement).
Differentiator vs WALK: arms extend outward rather than swinging forward/back.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Head -->
<circle cx="10" cy="4" r="2.5"/>
<!-- Torso (upright) -->
<line x1="10" y1="6.5" x2="10" y2="13"/>
<!-- Arms spread laterally (alert posture) -->
<line x1="10" y1="9" x2="4" y2="12"/>
<line x1="10" y1="9" x2="16" y2="12"/>
<!-- Legs closer together (cautious, controlled placement) -->
<line x1="10" y1="13" x2="7" y2="19"/>
<line x1="10" y1="13" x2="13" y2="19"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 929 B

@@ -0,0 +1,22 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Stance: CROUCH
Design: head lowered, torso bent forward, knees visibly bent via polyline angles.
Differentiator vs all others: compressed vertical range, bent-knee polylines.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Head (lowered, compressed stance) -->
<circle cx="9" cy="6" r="2.5"/>
<!-- Torso (bent at waist, angled forward) -->
<line x1="9" y1="8.5" x2="10" y2="13"/>
<!-- Left arm (braced forward) -->
<line x1="9.5" y1="10.5" x2="5" y2="12"/>
<!-- Right arm (rearward) -->
<line x1="9.5" y1="10.5" x2="13" y2="11"/>
<!-- Left leg (bent knee) -->
<polyline points="10,13 6,16 5,19"/>
<!-- Right leg (bent knee) -->
<polyline points="10,13 14,15 15,19"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 956 B

@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Stance: SPRINT
Design: head shifted forward, torso angled aggressively, wide asymmetric stride.
Differentiator vs WALK: clear forward lean of both head and torso,
arms in pump position (one high, one low), wider leg spread.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Head (shifted forward, momentum lean) -->
<circle cx="12" cy="4" r="2.5"/>
<!-- Torso (strongly angled forward) -->
<line x1="12" y1="6.5" x2="9" y2="13"/>
<!-- Left arm (drive forward and up) -->
<line x1="11" y1="9" x2="14" y2="13"/>
<!-- Right arm (pull back) -->
<line x1="11" y1="9" x2="6" y2="11"/>
<!-- Left leg (long lead stride) -->
<line x1="9" y1="13" x2="5" y2="19"/>
<!-- Right leg (push-off, trailing high) -->
<line x1="9" y1="13" x2="15" y2="17"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

+22
View File
@@ -0,0 +1,22 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Stance: WALK
Design: upright figure, bilateral stride, arms in natural walking swing.
Differentiator vs CAREFUL: arms follow natural walk arc, not spread wide.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Head -->
<circle cx="10" cy="4" r="2.5"/>
<!-- Torso -->
<line x1="10" y1="6.5" x2="10" y2="13"/>
<!-- Left arm (forward swing) -->
<line x1="10" y1="9" x2="6" y2="12"/>
<!-- Right arm (back swing) -->
<line x1="10" y1="9" x2="14" y2="11"/>
<!-- Left leg (forward step) -->
<line x1="10" y1="13" x2="6" y2="19"/>
<!-- Right leg (trailing step) -->
<line x1="10" y1="13" x2="14" y2="18"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 885 B

@@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Status badge: HEALTH
Design: medical cross — two overlapping rectangles forming a plus symbol.
Universally understood health indicator. Geometric, no curves.
The live health value is displayed separately; this icon represents the concept.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Vertical bar of cross -->
<rect x="8.5" y="3" width="3" height="14"/>
<!-- Horizontal bar of cross -->
<rect x="3" y="8.5" width="14" height="3"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 697 B

@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20">
<!--
Status badge: PERCEPTION MODE
Design: geometric eye — diamond outline (4 straight lines) with centered circle pupil.
Diamond shape reinforces the insert/lattice aesthetic; no curves in the outer form.
Communicates: vision, awareness, active perception layer.
Deferred: mode-specific variants (thermal, camera feed) await #315 specs.
D-086: 1px stroke, #c8d0e0 chrome, minimal anchor points.
-->
<g stroke="#c8d0e0" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" fill="none">
<!-- Diamond eye outline (4 straight edges) -->
<polygon points="10,3 18,10 10,17 2,10"/>
<!-- Pupil circle -->
<circle cx="10" cy="10" r="3"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 787 B