feat: view tab widget toggle commands and unified SVG icon color scheme

Integrate NAVVCUBE, NAVBAR, PROPERTIES, FILETAB, LAYOUTTAB, TOOLPALETTES
and SHEETSET commands to toggle UI widgets at runtime. Add 15 new SVG icons
for view module tools previously using glyph fallbacks. Restyle all SVG
icons to use the established two-color scheme: #e0e0e0 for passive geometry,
#4cc9f0 for active/accent elements.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-04-24 01:23:06 +03:00
commit 1ec53a4730
81 changed files with 533 additions and 597 deletions

View file

@ -1,8 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Circle --> <circle cx="12" cy="12" r="9" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="12" cy="12" r="9"/> <circle cx="12" cy="8" r="0.8" fill="#4cc9f0"/>
<!-- i dot --> <line x1="12" y1="11" x2="12" y2="17" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="12" cy="8" r="0.8" fill="currentColor" stroke="none"/>
<!-- i stem -->
<line x1="12" y1="11" x2="12" y2="16"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 366 B

After

Width:  |  Height:  |  Size: 348 B

Before After
Before After

View file

@ -1,10 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Tag shape --> <path d="M3 3 h8 l10 9 -10 9 H3 Z" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M3 3 h8 l10 9 -10 9 H3 Z"/> <circle cx="9" cy="12" r="1.5" fill="#4cc9f0"/>
<circle cx="8" cy="12" r="1.5" fill="currentColor" stroke="none"/> <text x="13" y="9" font-size="4" fill="#4cc9f0" stroke="none">@</text>
<!-- "A" attribute letter -->
<text x="5" y="14" font-size="6" fill="currentColor" stroke="none" font-weight="bold">A</text>
<!-- Plus (define/create) -->
<line x1="19" y1="3" x2="19" y2="9"/>
<line x1="16" y1="6" x2="22" y2="6"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 538 B

After

Width:  |  Height:  |  Size: 348 B

Before After
Before After

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Tag shape --> <path d="M3 5 h7 l9 7 -9 7 H3 Z" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M3 5 h7 l9 7 -9 7 H3 Z"/> <circle cx="8" cy="12" r="1.5" fill="#e0e0e0"/>
<circle cx="7" cy="12" r="1.5" fill="currentColor" stroke="none"/> <line x1="17" y1="4" x2="21" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Pencil edit --> <line x1="15" y1="6" x2="19" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="17" y1="3" x2="22" y2="8"/> <line x1="14" y1="10" x2="18" y2="6" stroke="#4cc9f0" stroke-width="1.5"/>
<polygon points="15,5 20,10 18,12 13,7"/>
<line x1="13" y1="7" x2="12" y2="12"/>
<line x1="12" y1="12" x2="17" y2="11"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 503 B

Before After
Before After

View file

@ -1,15 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- List of attributes --> <rect x="3" y="3" width="18" height="18" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="18" rx="1"/> <line x1="3" y1="7" x2="21" y2="7" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="2" y1="7" x2="22" y2="7"/> <line x1="7" y1="11" x2="17" y2="11" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Tag rows --> <line x1="7" y1="14" x2="17" y2="14" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="11" x2="10" y2="11"/> <line x1="7" y1="17" x2="13" y2="17" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="11" x2="19" y2="11"/>
<line x1="5" y1="15" x2="10" y2="15"/>
<line x1="12" y1="15" x2="19" y2="15"/>
<line x1="5" y1="19" x2="10" y2="19"/>
<line x1="12" y1="19" x2="19" y2="19"/>
<!-- Header labels -->
<line x1="5" y1="5" x2="9" y2="5" stroke-width="1"/>
<line x1="12" y1="5" x2="16" y2="5" stroke-width="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 544 B

Before After
Before After

View file

@ -1,9 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Sync arrows --> <path d="M4 12 A8 8 0 0 1 18 7" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M4 12 A8 8 0 0 1 18 7"/> <polyline points="16,4 18,7 15,8" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="16,4 18,7 15,8"/> <path d="M20 12 A8 8 0 0 1 6 17" stroke="#4cc9f0" stroke-width="1.5"/>
<path d="M20 12 A8 8 0 0 1 6 17"/> <polyline points="8,20 6,17 9,16" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="8,20 6,17 9,16"/>
<!-- Tag dot in center -->
<circle cx="12" cy="12" r="2" fill="currentColor" stroke="none"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 437 B

After

Width:  |  Height:  |  Size: 443 B

Before After
Before After

View file

@ -1,10 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Clipboard with checkmarks --> <path d="M9 3 H5 a1 1 0 0 0 -1 1 v16 a1 1 0 0 0 1 1 h14 a1 1 0 0 0 1 -1 V4 a1 1 0 0 0 -1 -1 h-4" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M9 3 H5 a1 1 0 0 0 -1 1 v16 a1 1 0 0 0 1 1 h14 a1 1 0 0 0 1 -1 V4 a1 1 0 0 0 -1 -1 h-4"/> <rect x="9" y="1" width="6" height="4" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="9" y="1" width="6" height="4" rx="1"/> <polyline points="7,12 10,15 17,9" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Check items -->
<polyline points="7,10 9,12 13,8"/>
<line x1="15" y1="10" x2="17" y2="10"/>
<polyline points="7,15 9,17 13,13"/>
<line x1="15" y1="15" x2="17" y2="15"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 448 B

Before After
Before After

View file

@ -1,7 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Crosshair at base point --> <line x1="12" y1="2" x2="12" y2="22" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="2" x2="12" y2="22"/> <line x1="2" y1="12" x2="22" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="12" x2="22" y2="12"/> <circle cx="12" cy="12" r="2.5" fill="#4cc9f0" fill-opacity="0.4" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="12" cy="12" r="4"/>
<circle cx="12" cy="12" r="1.5" fill="currentColor" stroke="none"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 389 B

After

Width:  |  Height:  |  Size: 410 B

Before After
Before After

View file

@ -1,6 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Three cascaded windows --> <rect x="8" y="10" width="13" height="11" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="8" y="10" width="13" height="11" rx="1"/> <rect x="5" y="7" width="13" height="11" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="5" y="7" width="13" height="11" rx="1"/> <rect x="2" y="4" width="13" height="11" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="4" width="13" height="11" rx="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 415 B

Before After
Before After

View file

@ -1,9 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Clock circle --> <circle cx="12" cy="12" r="9" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="12" cy="12" r="9"/> <polyline points="12,7 12,12 15.5,15.5" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Clock hands --> <path d="M5 4 A9 9 0 0 0 3 12" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="12,7 12,12 15.5,15.5"/>
<!-- Counter-clockwise arrow suggesting history -->
<path d="M5.6 5.6 A8.5 8.5 0 0 0 3 12" stroke-width="1.5"/>
<polyline points="2,9.5 3,12 5.5,10.8"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 452 B

After

Width:  |  Height:  |  Size: 371 B

Before After
Before After

View file

@ -1,13 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Browser window --> <rect x="2" y="4" width="20" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="18" rx="1"/> <line x1="2" y1="8" x2="22" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="2" y1="7" x2="22" y2="7"/> <circle cx="7" cy="13" r="1" fill="#4cc9f0"/>
<!-- Nav buttons --> <circle cx="12" cy="13" r="1" fill="#4cc9f0"/>
<circle cx="5" cy="5" r="1" fill="currentColor" stroke="none"/> <circle cx="17" cy="13" r="1" fill="#4cc9f0"/>
<circle cx="9" cy="5" r="1" fill="currentColor" stroke="none"/>
<!-- Content grid -->
<rect x="4" y="10" width="6" height="5" rx="0.5"/>
<rect x="13" y="10" width="6" height="5" rx="0.5"/>
<rect x="4" y="17" width="6" height="3" rx="0.5"/>
<rect x="13" y="17" width="6" height="3" rx="0.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 459 B

Before After
Before After

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- File --> <rect x="4" y="4" width="10" height="13" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M4 4 h10 l4 4 v13 H4 Z"/> <line x1="7" y1="8" x2="11" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="14,4 14,8 18,8"/> <line x1="7" y1="11" x2="11" y2="11" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Arrow pointing out (export) --> <line x1="17" y1="10" x2="17" y2="19" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="10" y1="14" x2="20" y2="14"/> <polyline points="14,16 17,19 20,16" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="17,11 20,14 17,17"/>
<line x1="10" y1="11" x2="10" y2="17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 545 B

Before After
Before After

View file

@ -1,8 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- File --> <rect x="4" y="4" width="10" height="13" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M4 4 h10 l4 4 v13 H4 Z"/> <line x1="7" y1="8" x2="11" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="14,4 14,8 18,8"/> <line x1="7" y1="11" x2="11" y2="11" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Arrow pointing in (import) --> <line x1="17" y1="10" x2="17" y2="19" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="12" y1="14" x2="20" y2="14"/> <polyline points="14,13 17,10 20,13" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="17,11 20,14 17,17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 545 B

Before After
Before After

View file

@ -1,10 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Table grid --> <rect x="3" y="5" width="13" height="14" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="4" width="14" height="12" rx="1"/> <line x1="6" y1="9" x2="13" y2="9" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="8" x2="16" y2="8"/> <line x1="6" y1="12" x2="13" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="12" x2="16" y2="12"/> <line x1="6" y1="15" x2="10" y2="15" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="7" y1="4" x2="7" y2="16"/> <line x1="17" y1="8" x2="21" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Arrow pointing right/out --> <line x1="21" y1="12" x2="17" y2="16" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="18" y1="10" x2="23" y2="10"/> <line x1="15" y1="12" x2="21" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="20,7 23,10 20,13"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 479 B

After

Width:  |  Height:  |  Size: 700 B

Before After
Before After

View file

@ -1,11 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Table grid --> <rect x="3" y="5" width="8" height="6" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="4" width="12" height="12" rx="1"/> <rect x="13" y="13" width="8" height="6" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="8" x2="14" y2="8"/> <line x1="11" y1="8" x2="14" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="2" y1="12" x2="14" y2="12"/> <line x1="10" y1="16" x2="13" y2="16" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="6" y1="4" x2="6" y2="16"/> <line x1="14" y1="8" x2="14" y2="16" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="2 2"/>
<!-- Link chain -->
<path d="M17 10 h2 a3 3 0 0 1 0 6 h-2"/>
<path d="M19 13 h-4"/>
<path d="M17 13 h-2 a3 3 0 0 1 0-6 h2"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 578 B

Before After
Before After

View file

@ -1,16 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Panel with tree on left, content on right --> <rect x="3" y="4" width="7" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="18" rx="1"/> <line x1="5" y1="7" x2="8" y2="7" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="9" y1="3" x2="9" y2="21"/> <line x1="5" y1="10" x2="8" y2="10" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Tree structure on left --> <line x1="5" y1="13" x2="8" y2="13" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="4" y1="7" x2="7" y2="7"/> <rect x="12" y="4" width="9" height="9" rx="1" stroke="#4cc9f0" stroke-width="1.5" fill="#4cc9f0" fill-opacity="0.15"/>
<line x1="5" y1="7" x2="5" y2="11"/> <line x1="14" y1="7" x2="19" y2="7" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="5" y1="11" x2="7" y2="11"/> <line x1="14" y1="10" x2="19" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="5" y1="11" x2="5" y2="15"/> <line x1="12" y1="16" x2="21" y2="16" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="5" y1="15" x2="7" y2="15"/>
<!-- Content thumbnails on right -->
<rect x="11" y="6" width="4" height="4" rx="0.5"/>
<rect x="17" y="6" width="4" height="4" rx="0.5"/>
<rect x="11" y="12" width="4" height="4" rx="0.5"/>
<rect x="17" y="12" width="4" height="4" rx="0.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 796 B

After

Width:  |  Height:  |  Size: 840 B

Before After
Before After

View file

@ -1,16 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- List of alias pairs --> <rect x="3" y="5" width="18" height="14" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="18" rx="1"/> <line x1="3" y1="9" x2="21" y2="9" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="7" x2="22" y2="7"/> <text x="5.5" y="8" font-size="3.5" fill="#4cc9f0" stroke="none">A→a</text>
<line x1="12" y1="7" x2="12" y2="21"/> <line x1="6" y1="13" x2="10" y2="13" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Header --> <line x1="12" y1="13" x2="18" y2="13" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="4" y1="5" x2="8" y2="5" stroke-width="1"/> <line x1="6" y1="16" x2="14" y2="16" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="14" y1="5" x2="18" y2="5" stroke-width="1"/>
<!-- Rows -->
<line x1="4" y1="11" x2="10" y2="11"/>
<line x1="14" y1="11" x2="20" y2="11"/>
<line x1="4" y1="15" x2="10" y2="15"/>
<line x1="14" y1="15" x2="20" y2="15"/>
<line x1="4" y1="19" x2="10" y2="19"/>
<line x1="14" y1="19" x2="20" y2="19"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 625 B

Before After
Before After

View file

@ -1,9 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Block outline --> <rect x="4" y="6" width="12" height="12" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="3" y="5" width="14" height="14" rx="1" stroke-dasharray="4 2"/> <line x1="7" y1="9" x2="13" y2="9" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Pencil edit icon --> <line x1="7" y1="12" x2="13" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="14" y1="3" x2="21" y2="10"/> <line x1="17" y1="4" x2="20" y2="7" stroke="#4cc9f0" stroke-width="1.5"/>
<polygon points="12,5 19,12 16,15 9,8"/> <line x1="12" y1="12" x2="20" y2="4" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="9" y1="8" x2="7" y2="17"/> <line x1="12" y1="12" x2="11" y2="15" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="7" y1="17" x2="16" y2="15"/> <line x1="11" y1="15" x2="14" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 460 B

After

Width:  |  Height:  |  Size: 699 B

Before After
Before After

View file

@ -1,45 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<svg <polygon points="14,4 20,10 12,18 6,12" stroke="#e0e0e0" stroke-width="1.5" fill="#e0e0e0" fill-opacity="0.12"/>
viewBox="0 0 24 24" <line x1="4" y1="20" x2="14" y2="20" stroke="#4cc9f0" stroke-width="1.5"/>
width="64" <line x1="6" y1="12" x2="14" y2="20" stroke="#4cc9f0" stroke-width="1.5"/>
height="64"
version="1.1"
id="svg3"
sodipodi:docname="erase.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#505050"
inkscape:zoom="11.265625"
inkscape:cx="31.955617"
inkscape:cy="32"
inkscape:window-width="1920"
inkscape:window-height="939"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<!-- Object being erased (dashed rect) -->
<!-- Eraser shape (filled block moving across) -->
<!-- Eraser direction arrow (leftward) -->
<path
style="fill:#ff0000;stroke:#ff0000;stroke-width:1.96068;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 3.0549235,3.0549235 20.945076,20.945077"
id="path3" />
<path
style="fill:#ff0000;stroke:#ff0000;stroke-width:1.96068;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 3.0549235,20.945077 20.945076,3.0549235"
id="path4" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 419 B

Before After
Before After

View file

@ -1,11 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Tab bar at top --> <rect x="2" y="5" width="6" height="4" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="5" width="6" height="4" rx="1"/> <rect x="9" y="5" width="6" height="4" rx="1" fill="#4cc9f0" fill-opacity="0.3" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="9" y="5" width="6" height="4" rx="1"/> <rect x="16" y="5" width="6" height="4" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="16" y="5" width="6" height="4" rx="1"/> <rect x="2" y="9" width="20" height="12" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Document area below --> <polyline points="7,12 7,18 17,18 17,12" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="9" width="20" height="12" rx="0 0 1 1"/> <polyline points="7,12 11,12 12,11 17,12" stroke="#e0e0e0" stroke-width="1"/>
<!-- File icon inside -->
<polyline points="7,12 7,18 17,18 17,12"/>
<polyline points="7,12 11,12 12,11 17,12" stroke-width="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 570 B

After

Width:  |  Height:  |  Size: 692 B

Before After
Before After

View file

@ -1,8 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Magnifier --> <circle cx="10" cy="10" r="6" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="10" cy="10" r="7"/> <line x1="14.5" y1="14.5" x2="20" y2="20" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="15" y1="15" x2="21" y2="21"/> <line x1="8" y1="10" x2="12" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Lock inside (non-purgeable / protected) --> <line x1="10" y1="8" x2="10" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="7" y="10" width="6" height="5" rx="0.5"/> <line x1="17" y1="18" x2="20" y2="21" stroke="#4cc9f0" stroke-width="2"/>
<path d="M8 10 V8 a2 2 0 0 1 4 0 V10"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 411 B

After

Width:  |  Height:  |  Size: 532 B

Before After
Before After

8
assets/icons/hidden.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="5" y="9" width="10" height="10" rx="0.5" stroke="#e0e0e0" stroke-width="1.5"/>
<polygon points="5,9 9,5 19,5 15,9" stroke="#e0e0e0" stroke-width="1.5"/>
<polygon points="15,9 19,5 19,15 15,19" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="9" x2="9" y2="5" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="9" y1="5" x2="9" y2="15" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="9" y1="15" x2="19" y2="15" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="2 2"/>
</svg>

After

Width:  |  Height:  |  Size: 691 B

View file

@ -1,6 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Terrain/land profile --> <polyline points="3,17 7,10 11,14 15,7 21,7" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="2,18 6,10 10,14 14,7 18,12 22,6"/> <line x1="3" y1="20" x2="21" y2="20" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- XML brackets --> <circle cx="7" cy="10" r="1.2" fill="#4cc9f0"/>
<text x="3" y="23" font-size="5" fill="currentColor" stroke="none">&lt;XML&gt;</text> <circle cx="11" cy="14" r="1.2" fill="#4cc9f0"/>
<circle cx="15" cy="7" r="1.2" fill="#4cc9f0"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 463 B

Before After
Before After

View file

@ -1,9 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Document area --> <rect x="2" y="3" width="20" height="15" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="15" rx="1"/> <rect x="2" y="18" width="6" height="3" rx="1" fill="#4cc9f0" fill-opacity="0.3" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Layout tabs at bottom --> <rect x="9" y="18" width="6" height="3" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="18" width="6" height="3" rx="1 1 0 0"/> <rect x="5" y="6" width="14" height="9" rx="0.5" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="9" y="18" width="6" height="3" rx="1 1 0 0"/>
<!-- Page border inside -->
<rect x="5" y="6" width="14" height="9" rx="0.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 475 B

After

Width:  |  Height:  |  Size: 535 B

Before After
Before After

View file

@ -1,14 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Multi-view: 3 perspective projections of a block --> <rect x="3" y="4" width="18" height="14" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Top view --> <rect x="5" y="6" width="8" height="6" rx="0.5" stroke="#4cc9f0" stroke-width="1.5" fill="#4cc9f0" fill-opacity="0.15"/>
<rect x="2" y="2" width="8" height="8" rx="0.5"/> <rect x="14" y="6" width="5" height="3" rx="0.5" stroke="#e0e0e0" stroke-width="1"/>
<!-- Front view --> <rect x="14" y="10" width="5" height="3" rx="0.5" stroke="#e0e0e0" stroke-width="1"/>
<rect x="2" y="14" width="8" height="8" rx="0.5"/> <line x1="5" y1="14" x2="19" y2="14" stroke="#e0e0e0" stroke-width="1" stroke-dasharray="2 2"/>
<!-- Isometric block -->
<polygon points="14,8 20,5 20,15 14,18"/>
<polygon points="14,8 20,5 22,7 16,10"/>
<polygon points="16,10 22,7 22,17 16,20"/>
<line x1="14" y1="8" x2="16" y2="10"/>
<line x1="14" y1="18" x2="16" y2="20"/>
<line x1="20" y1="15" x2="22" y2="17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 659 B

After

Width:  |  Height:  |  Size: 634 B

Before After
Before After

View file

@ -1,10 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Compass rose --> <circle cx="12" cy="12" r="9" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="12" cy="12" r="9"/> <line x1="12" y1="3" x2="12" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="3" x2="12" y2="8"/> <line x1="12" y1="16" x2="12" y2="21" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="16" x2="12" y2="21"/> <line x1="3" y1="12" x2="8" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="3" y1="12" x2="8" y2="12"/> <line x1="16" y1="12" x2="21" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="16" y1="12" x2="21" y2="12"/> <text x="9.5" y="7" font-size="4.5" fill="#4cc9f0" stroke="none">N</text>
<!-- N marker -->
<text x="9.5" y="7" font-size="4.5" fill="currentColor" stroke="none">N</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 491 B

After

Width:  |  Height:  |  Size: 604 B

Before After
Before After

6
assets/icons/orbit.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="8" stroke="#e0e0e0" stroke-width="1.5"/>
<ellipse cx="12" cy="12" rx="8" ry="3" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M 5,7 A 9 9 0 0 1 19,7" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="17,4.5 19,7 16.5,8.5" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 452 B

7
assets/icons/ortho.svg Normal file
View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="4" y="8" width="10" height="10" rx="0.5" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="10" y="3" width="10" height="10" rx="0.5" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="4" y1="8" x2="10" y2="3" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="14" y1="8" x2="20" y2="3" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="14" y1="18" x2="20" y2="13" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 560 B

View file

@ -1,8 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Two overlapping lines (duplicates) --> <line x1="4" y1="8" x2="20" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="3" y1="10" x2="21" y2="10"/> <line x1="4" y1="12" x2="20" y2="12" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<line x1="3" y1="12" x2="21" y2="12" stroke-dasharray="3 2"/> <line x1="4" y1="16" x2="20" y2="16" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<!-- X to remove duplicate --> <line x1="15" y1="5" x2="18" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="16" y1="15" x2="21" y2="20"/> <line x1="18" y1="5" x2="15" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="21" y1="15" x2="16" y2="20"/> <line x1="15" y1="9" x2="18" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="18" y1="9" x2="15" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="15" y1="13" x2="18" y2="16" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="18" y1="13" x2="15" y2="16" stroke="#4cc9f0" stroke-width="1.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 887 B

Before After
Before After

8
assets/icons/pan.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="4" x2="12" y2="20" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="4" y1="12" x2="20" y2="12" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="9,7 12,4 15,7" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="9,17 12,20 15,17" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="7,9 4,12 7,15" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="17,9 20,12 17,15" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 602 B

View file

@ -1,14 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Point cloud --> <rect x="3" y="5" width="14" height="14" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="6" cy="14" r="1" fill="currentColor" stroke="none"/> <circle cx="8" cy="10" r="1.5" fill="#e0e0e0"/>
<circle cx="9" cy="11" r="1" fill="currentColor" stroke="none"/> <circle cx="12" cy="14" r="1.5" fill="#e0e0e0"/>
<circle cx="12" cy="9" r="1" fill="currentColor" stroke="none"/> <line x1="8" y1="10" x2="12" y2="14" stroke="#e0e0e0" stroke-width="1" stroke-dasharray="2 2"/>
<circle cx="5" cy="17" r="1" fill="currentColor" stroke="none"/> <line x1="18" y1="9" x2="21" y2="9" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="8" cy="16" r="1" fill="currentColor" stroke="none"/> <line x1="19.5" y1="7.5" x2="19.5" y2="10.5" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="11" cy="13" r="1" fill="currentColor" stroke="none"/>
<circle cx="14" cy="11" r="1" fill="currentColor" stroke="none"/>
<circle cx="13" cy="16" r="1" fill="currentColor" stroke="none"/>
<!-- Plus/attach symbol -->
<line x1="18" y1="5" x2="18" y2="13"/>
<line x1="14" y1="9" x2="22" y2="9"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 598 B

Before After
Before After

8
assets/icons/persp.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="8" width="9" height="9" rx="0.5" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="10" y="10" width="5" height="5" rx="0.5" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="2" y1="8" x2="10" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="11" y1="8" x2="15" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="11" y1="17" x2="15" y2="15" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="2" y1="17" x2="10" y2="15" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 636 B

View file

@ -1,15 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Properties panel --> <rect x="4" y="2" width="16" height="20" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="4" y="2" width="16" height="20" rx="1"/> <rect x="4" y="2" width="16" height="4" rx="1" fill="#4cc9f0" fill-opacity="0.3" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Header --> <line x1="12" y1="3" x2="12" y2="20" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="4" y1="6" x2="20" y2="6"/> <line x1="6" y1="10" x2="11" y2="10" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Property rows: label + value --> <line x1="13" y1="10" x2="18" y2="10" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="6" y1="10" x2="11" y2="10"/> <line x1="6" y1="14" x2="11" y2="14" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="13" y1="10" x2="18" y2="10"/> <line x1="13" y1="14" x2="18" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="6" y1="14" x2="11" y2="14"/> <line x1="6" y1="18" x2="11" y2="18" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="13" y1="14" x2="18" y2="14"/> <line x1="13" y1="18" x2="18" y2="18" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="6" y1="18" x2="11" y2="18"/>
<line x1="13" y1="18" x2="18" y2="18"/>
<!-- Divider between label and value -->
<line x1="12" y1="7" x2="12" y2="20" stroke-dasharray="2 2"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 701 B

After

Width:  |  Height:  |  Size: 924 B

Before After
Before After

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Trash can --> <polyline points="5,7 7,20 17,20 19,7" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="3,6 5,6 19,6"/> <line x1="3" y1="7" x2="21" y2="7" stroke="#e0e0e0" stroke-width="1.5"/>
<path d="M8 6 V4 h8 v2"/> <rect x="9" y="4" width="6" height="3" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="5" y="6" width="14" height="15" rx="1"/> <line x1="10" y1="10" x2="10" y2="17" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Vertical lines inside --> <line x1="14" y1="10" x2="14" y2="17" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="9" y1="10" x2="9" y2="17"/>
<line x1="12" y1="10" x2="12" y2="17"/>
<line x1="15" y1="10" x2="15" y2="17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 546 B

Before After
Before After

View file

@ -1,18 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Point cloud dots --> <polygon points="12,3 20,8 20,16 12,21 4,16 4,8" stroke="#e0e0e0" stroke-width="1.5" fill="none"/>
<circle cx="7" cy="15" r="1" fill="currentColor" stroke="none"/> <circle cx="12" cy="12" r="3" stroke="#4cc9f0" stroke-width="1.5" fill="#4cc9f0" fill-opacity="0.2"/>
<circle cx="10" cy="11" r="1" fill="currentColor" stroke="none"/> <line x1="12" y1="3" x2="12" y2="9" stroke="#e0e0e0" stroke-width="1"/>
<circle cx="13" cy="9" r="1" fill="currentColor" stroke="none"/> <line x1="12" y1="15" x2="12" y2="21" stroke="#e0e0e0" stroke-width="1"/>
<circle cx="5" cy="12" r="1" fill="currentColor" stroke="none"/> <line x1="4" y1="8" x2="9.5" y2="10.5" stroke="#e0e0e0" stroke-width="1"/>
<circle cx="9" cy="16" r="1" fill="currentColor" stroke="none"/> <line x1="14.5" y1="13.5" x2="20" y2="16" stroke="#e0e0e0" stroke-width="1"/>
<circle cx="12" cy="13" r="1" fill="currentColor" stroke="none"/>
<circle cx="15" cy="11" r="1" fill="currentColor" stroke="none"/>
<circle cx="17" cy="8" r="1" fill="currentColor" stroke="none"/>
<circle cx="14" cy="16" r="1" fill="currentColor" stroke="none"/>
<circle cx="17" cy="14" r="1" fill="currentColor" stroke="none"/>
<circle cx="6" cy="18" r="1" fill="currentColor" stroke="none"/>
<circle cx="11" cy="18" r="1" fill="currentColor" stroke="none"/>
<!-- ReCap logo hint: circular arrow -->
<path d="M19 5 A7 7 0 0 1 21 12" stroke-width="2"/>
<polyline points="17,3 19,5 21,3"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 662 B

Before After
Before After

View file

@ -1,17 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Bug body (oval) --> <rect x="4" y="3" width="16" height="18" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<ellipse cx="12" cy="13" rx="5" ry="6"/> <line x1="7" y1="8" x2="17" y2="8" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Head --> <line x1="7" y1="11" x2="17" y2="11" stroke="#e0e0e0" stroke-width="1.5"/>
<circle cx="12" cy="6" r="2.2"/> <line x1="7" y1="14" x2="13" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Antennae --> <line x1="7" y1="17" x2="11" y2="17" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="10.5" y1="4.2" x2="8" y2="2"/>
<line x1="13.5" y1="4.2" x2="16" y2="2"/>
<!-- Left legs -->
<line x1="7" y1="10" x2="4" y2="9"/>
<line x1="7" y1="13" x2="4" y2="13"/>
<line x1="7" y1="16" x2="4" y2="17"/>
<!-- Right legs -->
<line x1="17" y1="10" x2="20" y2="9"/>
<line x1="17" y1="13" x2="20" y2="13"/>
<line x1="17" y1="16" x2="20" y2="17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 683 B

After

Width:  |  Height:  |  Size: 544 B

Before After
Before After

View file

@ -1,9 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Stack of sheets --> <rect x="5" y="6" width="14" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="5" y="6" width="14" height="16" rx="1"/> <rect x="3" y="4" width="14" height="16" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="3" y="4" width="14" height="16" rx="1"/> <line x1="5" y1="8" x2="15" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Lines on top sheet --> <line x1="5" y1="11" x2="15" y2="11" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="8" x2="15" y2="8"/> <line x1="5" y1="14" x2="11" y2="14" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="11" x2="15" y2="11"/>
<line x1="5" y1="14" x2="11" y2="14"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 555 B

Before After
Before After

View file

@ -1,10 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Underlay image --> <rect x="3" y="5" width="14" height="14" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<rect x="2" y="5" width="14" height="12" rx="1" stroke-dasharray="3 2"/> <line x1="10" y1="5" x2="10" y2="19" stroke="#e0e0e0" stroke-width="1" stroke-dasharray="2 2"/>
<!-- Snap crosshair --> <line x1="3" y1="12" x2="17" y2="12" stroke="#e0e0e0" stroke-width="1" stroke-dasharray="2 2"/>
<line x1="17" y1="11" x2="22" y2="11"/> <circle cx="10" cy="12" r="2" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="19" y1="9" x2="19" y2="13"/> <line x1="10" y1="9" x2="10" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="19" cy="11" r="3"/> <line x1="10" y1="15" x2="10" y2="16" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Snap indicator dot --> <line x1="7" y1="12" x2="6" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<circle cx="19" cy="11" r="1" fill="currentColor" stroke="none"/> <line x1="13" y1="12" x2="14" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 510 B

After

Width:  |  Height:  |  Size: 835 B

Before After
Before After

5
assets/icons/solid.svg Normal file
View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<polygon points="5,9 15,9 15,19 5,19" fill="#4cc9f0" fill-opacity="0.25" stroke="#e0e0e0" stroke-width="1.5"/>
<polygon points="5,9 9,5 19,5 15,9" fill="#4cc9f0" fill-opacity="0.55" stroke="#4cc9f0" stroke-width="1.5"/>
<polygon points="15,9 19,5 19,15 15,19" fill="#4cc9f0" fill-opacity="0.12" stroke="#e0e0e0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 489 B

View file

@ -1,5 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Two windows stacked horizontally --> <rect x="2" y="3" width="20" height="8" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="8" rx="1"/> <rect x="2" y="13" width="20" height="8" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="13" width="20" height="8" rx="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 325 B

Before After
Before After

View file

@ -1,5 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Two windows side by side vertically --> <rect x="2" y="3" width="9" height="18" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="3" width="9" height="18" rx="1"/> <rect x="13" y="3" width="9" height="18" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="13" y="3" width="9" height="18" rx="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 325 B

Before After
Before After

View file

@ -1,15 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Palette panel (vertical strip) --> <rect x="11" y="4" width="9" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<rect x="3" y="2" width="7" height="20" rx="1"/> <rect x="3" y="2" width="7" height="20" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Tab on top --> <rect x="3" y="2" width="7" height="4" rx="1" fill="#4cc9f0" fill-opacity="0.3" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="3" y="2" width="7" height="4" rx="1"/> <line x1="5" y1="9" x2="8" y2="9" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Stacked items inside --> <rect x="4" y="7" width="2" height="2" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="9" x2="8" y2="9"/> <line x1="5" y1="14" x2="8" y2="14" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="4" y="7" width="2" height="2"/> <rect x="4" y="12" width="2" height="2" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="14" x2="8" y2="14"/> <line x1="5" y1="19" x2="8" y2="19" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="4" y="12" width="2" height="2"/> <rect x="4" y="17" width="2" height="2" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="5" y1="19" x2="8" y2="19"/>
<rect x="4" y="17" width="2" height="2"/>
<!-- Shadow panel behind -->
<rect x="11" y="4" width="7" height="16" rx="1" stroke-dasharray="3 2"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 933 B

Before After
Before After

View file

@ -1,10 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- X axis (red-ish) --> <line x1="4" y1="18" x2="14" y2="18" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="4" y1="18" x2="14" y2="18"/> <polyline points="11,15 14,18 11,21" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="11,15 14,18 11,21"/> <text x="15" y="21" font-size="5" fill="#4cc9f0" stroke="none">X</text>
<text x="15" y="21" font-size="5" fill="currentColor" stroke="none">X</text> <line x1="4" y1="18" x2="4" y2="6" stroke="#e0e0e0" stroke-width="1.5"/>
<!-- Y axis --> <polyline points="1,9 4,6 7,9" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="4" y1="18" x2="4" y2="6"/> <text x="1" y="5" font-size="5" fill="#e0e0e0" stroke="none">Y</text>
<polyline points="1,9 4,6 7,9"/>
<text x="1" y="5" font-size="5" fill="currentColor" stroke="none">Y</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 596 B

Before After
Before After

View file

@ -1,13 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Frame border (dashed) --> <rect x="5" y="7" width="14" height="10" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<rect x="3" y="3" width="18" height="18" rx="1" stroke-dasharray="4 2"/> <rect x="3" y="5" width="14" height="10" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Corner markers -->
<line x1="3" y1="3" x2="7" y2="3"/>
<line x1="3" y1="3" x2="3" y2="7"/>
<line x1="21" y1="3" x2="17" y2="3"/>
<line x1="21" y1="3" x2="21" y2="7"/>
<line x1="3" y1="21" x2="7" y2="21"/>
<line x1="3" y1="21" x2="3" y2="17"/>
<line x1="21" y1="21" x2="17" y2="21"/>
<line x1="21" y1="21" x2="21" y2="17"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 622 B

After

Width:  |  Height:  |  Size: 349 B

Before After
Before After

View file

@ -1,6 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Stacked layers --> <rect x="5" y="13" width="14" height="6" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<polygon points="12,3 22,8 12,13 2,8"/> <rect x="5" y="8" width="14" height="6" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<polyline points="2,12 12,17 22,12"/> <rect x="5" y="5" width="14" height="6" rx="1" stroke="#4cc9f0" stroke-width="1.5" fill="#4cc9f0" fill-opacity="0.12"/>
<polyline points="2,16 12,21 22,16"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 493 B

Before After
Before After

View file

@ -1,12 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Monitor --> <rect x="3" y="4" width="18" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="3" width="20" height="14" rx="1"/> <line x1="3" y1="8" x2="21" y2="8" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Screen content: ribbon bar --> <line x1="3" y1="17" x2="21" y2="17" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="2" y1="7" x2="22" y2="7"/> <rect x="6" y="11" width="5" height="4" rx="0.5" stroke="#4cc9f0" stroke-width="1" fill="#4cc9f0" fill-opacity="0.2"/>
<rect x="4" y="4" width="3" height="2.5" rx="0.3"/> <line x1="13" y1="12" x2="18" y2="12" stroke="#e0e0e0" stroke-width="1"/>
<rect x="8" y="4" width="3" height="2.5" rx="0.3"/> <line x1="13" y1="14" x2="16" y2="14" stroke="#e0e0e0" stroke-width="1"/>
<rect x="12" y="4" width="3" height="2.5" rx="0.3"/>
<!-- Stand -->
<line x1="12" y1="17" x2="12" y2="21"/>
<line x1="8" y1="21" x2="16" y2="21"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 579 B

After

Width:  |  Height:  |  Size: 663 B

Before After
Before After

View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="4" y="4" width="16" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="4" x2="12" y2="20" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="4" y1="12" x2="20" y2="12" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<circle cx="12" cy="12" r="2.5" fill="#4cc9f0" fill-opacity="0.4" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 544 B

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<polygon points="12,3 20,8 12,13 4,8" fill="#4cc9f0" fill-opacity="0.45" stroke="#4cc9f0" stroke-width="1.5"/>
<polygon points="4,8 12,13 12,21 4,16" fill="#4cc9f0" fill-opacity="0.12" stroke="#e0e0e0" stroke-width="1.5"/>
<polygon points="20,8 12,13 12,21 20,16" fill="#4cc9f0" fill-opacity="0.25" stroke="#e0e0e0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 493 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="4" y="4" width="16" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="4" x2="12" y2="20" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="4" y1="12" x2="20" y2="12" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<polyline points="22,9 19,12 22,15" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="13" y1="12" x2="22" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 592 B

View file

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="4" y="6" width="16" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="12" y1="6" x2="12" y2="22" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<line x1="4" y1="14" x2="20" y2="14" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="2 2"/>
<polyline points="9,3 12,6 15,3" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="12" y1="2" x2="12" y2="6" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 587 B

View file

@ -1,8 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Front face --> <rect x="6" y="10" width="10" height="10" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="6" y="10" width="10" height="10" rx="1"/> <polygon points="6,10 10,6 20,6 16,10" fill="#4cc9f0" fill-opacity="0.45" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Top face --> <polygon points="16,10 20,6 20,16 16,20" fill="#4cc9f0" fill-opacity="0.18" stroke="#e0e0e0" stroke-width="1.5"/>
<polygon points="6,10 10,6 20,6 16,10"/>
<!-- Right face -->
<polygon points="16,10 20,6 20,16 16,20"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 469 B

Before After
Before After

View file

@ -1,7 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- 4 viewport grid --> <rect x="2" y="2" width="9" height="9" rx="1" fill="#4cc9f0" fill-opacity="0.25" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="2" width="9" height="9" rx="1"/> <rect x="13" y="2" width="9" height="9" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="13" y="2" width="9" height="9" rx="1"/> <rect x="2" y="13" width="9" height="9" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="13" width="9" height="9" rx="1"/> <rect x="13" y="13" width="9" height="9" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="13" y="13" width="9" height="9" rx="1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 399 B

After

Width:  |  Height:  |  Size: 533 B

Before After
Before After

View file

@ -1,10 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Two small viewports --> <rect x="2" y="4" width="8" height="7" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="4" width="9" height="7" rx="1"/> <rect x="2" y="13" width="8" height="7" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="2" y="13" width="9" height="7" rx="1"/> <line x1="12" y1="12" x2="17" y2="12" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Arrow merging into one --> <polyline points="15,9 17,12 15,15" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="13" y1="12" x2="18" y2="12"/> <rect x="18" y="4" width="4" height="16" rx="0.5" fill="#4cc9f0" fill-opacity="0.25" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="16,9 18,12 16,15"/>
<!-- Result: one big viewport -->
<rect x="19" y="4" width="3" height="16" rx="0.5"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 506 B

After

Width:  |  Height:  |  Size: 602 B

Before After
Before After

View file

@ -1,8 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Two viewports side by side --> <rect x="2" y="4" width="9" height="16" rx="1" stroke="#4cc9f0" stroke-width="1.5"/>
<rect x="2" y="4" width="9" height="16" rx="1"/> <rect x="13" y="4" width="9" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="13" y="4" width="9" height="16" rx="1"/> <line x1="4" y1="7" x2="9" y2="7" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Label line on each --> <line x1="15" y1="7" x2="20" y2="7" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="4" y1="7" x2="9" y2="7"/>
<line x1="15" y1="7" x2="20" y2="7"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 475 B

Before After
Before After

View file

@ -1,7 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Single viewport with restore arrow --> <rect x="3" y="4" width="18" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5"/>
<rect x="3" y="4" width="18" height="16" rx="1"/> <path d="M9 14 A4 4 0 1 1 15 14" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Restore/refresh arrow inside --> <polyline points="15,11 15,14 18,14" stroke="#4cc9f0" stroke-width="1.5"/>
<path d="M9 14 A4 4 0 1 1 15 14"/>
<polyline points="15,11 15,14 18,14"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 384 B

After

Width:  |  Height:  |  Size: 388 B

Before After
Before After

View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke="#e0e0e0" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
<rect x="5" y="9" width="10" height="10" rx="0.5"/>
<polygon points="5,9 9,5 19,5 15,9"/>
<polygon points="15,9 19,5 19,15 15,19"/>
<line x1="5" y1="9" x2="9" y2="5" stroke-dasharray="2 2"/>
<line x1="9" y1="5" x2="9" y2="15" stroke-dasharray="2 2"/>
<line x1="9" y1="15" x2="19" y2="15" stroke-dasharray="2 2"/>
</svg>

After

Width:  |  Height:  |  Size: 511 B

View file

@ -1,8 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Image/underlay rectangle --> <rect x="4" y="4" width="16" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<rect x="3" y="4" width="14" height="14" rx="1"/> <rect x="7" y="7" width="10" height="10" rx="1" stroke="#4cc9f0" stroke-width="1.5" fill="#4cc9f0" fill-opacity="0.12"/>
<!-- Brightness/contrast sliders --> <line x1="4" y1="4" x2="7" y2="7" stroke="#4cc9f0" stroke-width="1" stroke-dasharray="2 1"/>
<line x1="19" y1="6" x2="19" y2="18"/> <line x1="20" y1="4" x2="17" y2="7" stroke="#4cc9f0" stroke-width="1" stroke-dasharray="2 1"/>
<circle cx="19" cy="10" r="2" fill="currentColor" stroke="none"/> <line x1="4" y1="20" x2="7" y2="17" stroke="#4cc9f0" stroke-width="1" stroke-dasharray="2 1"/>
<line x1="17" y1="10" x2="21" y2="10"/> <line x1="20" y1="20" x2="17" y2="17" stroke="#4cc9f0" stroke-width="1" stroke-dasharray="2 1"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 446 B

After

Width:  |  Height:  |  Size: 772 B

Before After
Before After

View file

@ -1,10 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<!-- Document with clip boundary --> <rect x="4" y="4" width="16" height="16" rx="1" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 2"/>
<rect x="4" y="3" width="12" height="16" rx="1"/> <polygon points="4,4 14,4 14,14 4,14" fill="#4cc9f0" fill-opacity="0.15" stroke="#4cc9f0" stroke-width="1.5"/>
<!-- Clip boundary (dashed polygon) --> <line x1="14" y1="4" x2="14" y2="20" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="3 2"/>
<polygon points="6,6 14,6 14,15 6,15" stroke-dasharray="3 2"/> <line x1="4" y1="14" x2="20" y2="14" stroke="#4cc9f0" stroke-width="1.5" stroke-dasharray="3 2"/>
<!-- Scissors symbol -->
<line x1="16" y1="16" x2="21" y2="21"/>
<circle cx="18" cy="14" r="2"/>
<circle cx="20" cy="19" r="2"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 503 B

After

Width:  |  Height:  |  Size: 574 B

Before After
Before After

8
assets/icons/xray.svg Normal file
View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<rect x="5" y="9" width="10" height="10" rx="0.5" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 1.5"/>
<polygon points="5,9 9,5 19,5 15,9" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 1.5"/>
<polygon points="15,9 19,5 19,15 15,19" stroke="#e0e0e0" stroke-width="1.5" stroke-dasharray="3 1.5"/>
<line x1="5" y1="9" x2="9" y2="5" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="9" y1="5" x2="9" y2="15" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="9" y1="15" x2="19" y2="15" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 697 B

View file

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="7" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="16.5" y1="16.5" x2="21" y2="21" stroke="#e0e0e0" stroke-width="1.5"/>
<polyline points="8,11 5,11 5,8" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="14,11 17,11 17,8" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="11,8 11,5 8,5" stroke="#4cc9f0" stroke-width="1.5"/>
<polyline points="11,14 11,17 8,17" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 600 B

6
assets/icons/zoom_in.svg Normal file
View file

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="7" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="16.5" y1="16.5" x2="21" y2="21" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="8" y1="11" x2="14" y2="11" stroke="#4cc9f0" stroke-width="1.5"/>
<line x1="11" y1="8" x2="11" y2="14" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 456 B

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="64" height="64" fill="none" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="7" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="16.5" y1="16.5" x2="21" y2="21" stroke="#e0e0e0" stroke-width="1.5"/>
<line x1="8" y1="11" x2="14" y2="11" stroke="#4cc9f0" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 379 B

View file

@ -3706,6 +3706,41 @@ impl H7CAD {
} }
} }
// ── NAVVCUBE — toggle ViewCube visibility ────────────────────────────
"NAVVCUBE" => {
return Task::done(Message::ToggleViewCube);
}
// ── NAVBAR — toggle navigation toolbar visibility ────────────────────
"NAVBAR" => {
return Task::done(Message::ToggleNavbar);
}
// ── PROPERTIES — toggle Properties panel visibility ──────────────────
"PROPERTIES" | "PR" | "PROPS" => {
return Task::done(Message::ToggleProperties);
}
// ── FILETAB — toggle file/document tabs ──────────────────────────────
"FILETAB" => {
return Task::done(Message::ToggleFileTabs);
}
// ── LAYOUTTAB — toggle layout/paper-space tabs ───────────────────────
"LAYOUTTAB" => {
return Task::done(Message::ToggleLayoutTabs);
}
// ── TOOLPALETTES — not yet implemented ───────────────────────────────
"TOOLPALETTES" | "TP" => {
self.command_line.push_info("TOOLPALETTES: Tool Palettes not yet implemented.");
}
// ── SHEETSET — not yet implemented ───────────────────────────────────
"SHEETSET" | "SSM" => {
self.command_line.push_info("SHEETSET: Sheet Set Manager not yet implemented.");
}
// ── XDATA — read/write extended entity data ────────────────────────── // ── XDATA — read/write extended entity data ──────────────────────────
// XDATA LIST — show all xdata records on selected entities // XDATA LIST — show all xdata records on selected entities
// XDATA SET <app> <str> — append a string xdata value for <app> // XDATA SET <app> <str> — append a string xdata value for <app>

View file

@ -53,6 +53,16 @@ pub(super) struct H7CAD {
dyn_input: bool, dyn_input: bool,
/// Show the UCS icon in the bottom-left corner of model space (UCSICON). /// Show the UCS icon in the bottom-left corner of model space (UCSICON).
show_ucs_icon: bool, show_ucs_icon: bool,
/// Whether the ViewCube 3D gizmo is visible in model space (NAVVCUBE).
show_viewcube: bool,
/// Whether the navigation toolbar is shown in the viewport (NAVBAR).
show_navbar: bool,
/// Whether the Properties panel is shown on the left (PROPERTIES).
show_properties: bool,
/// Whether the document file tabs are shown at the top (FILETAB).
show_file_tabs: bool,
/// Whether the layout/paper-space tabs are shown at the bottom (LAYOUTTAB).
show_layout_tabs: bool,
/// Last point committed by a drawing command — used as ortho/polar base. /// Last point committed by a drawing command — used as ortho/polar base.
last_point: Option<glam::Vec3>, last_point: Option<glam::Vec3>,
/// OS window Id for the floating Layer Properties Manager (None when closed). /// OS window Id for the floating Layer Properties Manager (None when closed).
@ -248,6 +258,16 @@ pub enum Message {
ToggleSnapEnabled, ToggleSnapEnabled,
/// Toggle grid-snap on/off — F9 / SNAP status-bar button. /// Toggle grid-snap on/off — F9 / SNAP status-bar button.
ToggleGridSnap, ToggleGridSnap,
/// Toggle the ViewCube 3D gizmo visibility (NAVVCUBE).
ToggleViewCube,
/// Toggle the navigation toolbar visibility (NAVBAR).
ToggleNavbar,
/// Toggle the Properties panel visibility (PROPERTIES).
ToggleProperties,
/// Toggle the document file tabs at the top (FILETAB).
ToggleFileTabs,
/// Toggle the layout tabs at the bottom (LAYOUTTAB).
ToggleLayoutTabs,
/// Toggle grid display in the viewport — F7 / GRID status-bar button. /// Toggle grid display in the viewport — F7 / GRID status-bar button.
ToggleGrid, ToggleGrid,
/// Toggle orthogonal drawing constraint — F8 / ORTHO status-bar button. /// Toggle orthogonal drawing constraint — F8 / ORTHO status-bar button.
@ -545,6 +565,11 @@ impl H7CAD {
show_grid: false, show_grid: false,
dyn_input: true, dyn_input: true,
show_ucs_icon: true, show_ucs_icon: true,
show_viewcube: true,
show_navbar: true,
show_properties: true,
show_file_tabs: true,
show_layout_tabs: true,
last_point: None, last_point: None,
layer_window: None, layer_window: None,
main_window: None, main_window: None,

View file

@ -1878,6 +1878,11 @@ impl H7CAD {
Task::none() Task::none()
} }
Message::ToggleDynInput => { self.dyn_input ^= true; Task::none() } Message::ToggleDynInput => { self.dyn_input ^= true; Task::none() }
Message::ToggleViewCube => { self.show_viewcube ^= true; Task::none() }
Message::ToggleNavbar => { self.show_navbar ^= true; Task::none() }
Message::ToggleProperties => { self.show_properties ^= true; Task::none() }
Message::ToggleFileTabs => { self.show_file_tabs ^= true; Task::none() }
Message::ToggleLayoutTabs => { self.show_layout_tabs ^= true; Task::none() }
Message::ToggleOTrack => { Message::ToggleOTrack => {
self.snapper.otrack_enabled ^= true; self.snapper.otrack_enabled ^= true;
if !self.snapper.otrack_enabled { if !self.snapper.otrack_enabled {

View file

@ -189,14 +189,9 @@ impl H7CAD {
vec![] vec![]
}; };
overlay::selection_overlay(sel, snap_info, grips, grid, ucs_icon, ost_points, tab.last_cursor_screen, !is_paper) overlay::selection_overlay(sel, snap_info, grips, grid, ucs_icon, ost_points, tab.last_cursor_screen, !is_paper && self.show_viewcube)
}; };
let nav = container(overlay::nav_toolbar())
.align_right(Fill)
.align_top(Fill)
.padding(iced::Padding { top: 148.0, right: 8.0, bottom: 0.0, left: 0.0 });
let info = container(overlay::info_bar( let info = container(overlay::info_bar(
if is_paper { &tab.scene.current_layout } else { "Custom View" }, if is_paper { &tab.scene.current_layout } else { "Custom View" },
&tab.visual_style, &tab.visual_style,
@ -216,21 +211,6 @@ impl H7CAD {
.on_scroll(Message::ViewportScroll) .on_scroll(Message::ViewportScroll)
.on_exit(Message::ViewportExit); .on_exit(Message::ViewportExit);
let cube_click = mouse_area(container(
iced::widget::Space::new()
.width(iced::Length::Fixed(VIEWCUBE_HIT_SIZE))
.height(iced::Length::Fixed(VIEWCUBE_HIT_SIZE)),
))
.on_move(Message::CursorMoved)
.on_press(Message::ViewportClick);
let cube_click = container(cube_click)
.align_right(Fill)
.align_top(Fill)
.padding(iced::Padding { top: VIEWCUBE_PAD, right: VIEWCUBE_PAD, bottom: 0.0, left: 0.0 })
.width(Fill)
.height(Fill);
let bg_color = if is_paper { let bg_color = if is_paper {
// Desk color — matches the DESK constant in paper_canvas.rs. // Desk color — matches the DESK constant in paper_canvas.rs.
Color { r: 0.22, g: 0.24, b: 0.28, a: 1.0 } Color { r: 0.22, g: 0.24, b: 0.28, a: 1.0 }
@ -270,36 +250,67 @@ impl H7CAD {
container(info).width(Fill).height(Fill), container(info).width(Fill).height(Fill),
selection_overlay, selection_overlay,
viewport_mouse, viewport_mouse,
nav,
cube_click,
] ]
.width(Fill) .width(Fill)
.height(Fill); .height(Fill);
if self.show_navbar {
let nav = container(overlay::nav_toolbar())
.align_right(Fill)
.align_top(Fill)
.padding(iced::Padding { top: 148.0, right: 8.0, bottom: 0.0, left: 0.0 });
viewport_stack = viewport_stack.push(nav);
}
if self.show_viewcube && !is_paper {
let cube_click: Element<'_, Message> = container(
mouse_area(container(
iced::widget::Space::new()
.width(iced::Length::Fixed(VIEWCUBE_HIT_SIZE))
.height(iced::Length::Fixed(VIEWCUBE_HIT_SIZE)),
))
.on_move(Message::CursorMoved)
.on_press(Message::ViewportClick),
)
.align_right(Fill)
.align_top(Fill)
.padding(iced::Padding { top: VIEWCUBE_PAD, right: VIEWCUBE_PAD, bottom: 0.0, left: 0.0 })
.width(Fill)
.height(Fill)
.into();
viewport_stack = viewport_stack.push(cube_click);
}
if let Some(dyn_ol) = dyn_input_overlay { if let Some(dyn_ol) = dyn_input_overlay {
viewport_stack = viewport_stack.push(dyn_ol); viewport_stack = viewport_stack.push(dyn_ol);
} }
let properties_el: Element<'_, Message> = if self.show_properties {
tab.properties.view()
} else {
Space::new().into()
};
let center_stack = iced::widget::stack![ let center_stack = iced::widget::stack![
row![tab.properties.view(), viewport_stack] row![properties_el, viewport_stack]
.width(Fill) .width(Fill)
.height(Fill), .height(Fill),
] ]
.width(Fill) .width(Fill)
.height(Fill); .height(Fill);
let tab_bar = doc_tab_bar(&self.tabs, self.active_tab); let main_ui = container({
let mut col = column![self.ribbon.view(
let main_ui = container(
column![
self.ribbon.view(
is_paper, is_paper,
self.tabs[self.active_tab].history.undo_stack.len(), self.tabs[self.active_tab].history.undo_stack.len(),
self.tabs[self.active_tab].history.redo_stack.len(), self.tabs[self.active_tab].history.redo_stack.len(),
), )];
tab_bar, if self.show_file_tabs {
center_stack, col = col.push(doc_tab_bar(&self.tabs, self.active_tab));
self.command_line.view(), }
self.status_bar.view( col.push(center_stack)
.push(self.command_line.view())
.push(self.status_bar.view(
&self.snapper, &self.snapper,
self.snap_popup_open, self.snap_popup_open,
self.ortho_mode, self.ortho_mode,
@ -314,11 +325,11 @@ impl H7CAD {
tab.scene.first_viewport_scale(), tab.scene.first_viewport_scale(),
tab.scene.viewport_count(), tab.scene.viewport_count(),
tab.scene.active_viewport.is_some(), tab.scene.active_viewport.is_some(),
) self.show_layout_tabs,
] ))
.width(Fill) .width(Fill)
.height(Fill), .height(Fill)
) })
.style(|_: &Theme| container::Style { .style(|_: &Theme| container::Style {
background: Some(Background::Color(Color { r: 0.11, g: 0.11, b: 0.11, a: 1.0 })), background: Some(Background::Color(Color { r: 0.11, g: 0.11, b: 0.11, a: 1.0 })),
..Default::default() ..Default::default()

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/hidden.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "HIDDENLINE", label: "Hidden", icon: ICON, event: ModuleEvent::Command("HIDDENLINE".to_string()) }
id: "HIDDENLINE",
label: "Hidden",
icon: IconKind::Glyph("◫"),
event: ModuleEvent::Command("HIDDENLINE".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/orbit.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "3DORBIT", label: "3D Orbit", icon: ICON, event: ModuleEvent::Command("3DORBIT".to_string()) }
id: "3DORBIT",
label: "3D Orbit",
icon: IconKind::Glyph("⟳"),
event: ModuleEvent::Command("3DORBIT".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/ortho.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "ORTHO", label: "Ortho", icon: ICON, event: ModuleEvent::Command("ORTHO".into()) }
id: "ORTHO",
label: "Ortho",
icon: IconKind::Glyph("⊡"),
event: ModuleEvent::Command("ORTHO".into()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/pan.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "PAN", label: "Pan", icon: ICON, event: ModuleEvent::Command("PAN".to_string()) }
id: "PAN",
label: "Pan",
icon: IconKind::Glyph("✥"),
event: ModuleEvent::Command("PAN".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/persp.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "PERSP", label: "Persp", icon: ICON, event: ModuleEvent::Command("PERSP".into()) }
id: "PERSP",
label: "Persp",
icon: IconKind::Glyph("⟁"),
event: ModuleEvent::Command("PERSP".into()),
}
} }

View file

@ -2,11 +2,7 @@
// id "SOLID" is special-cased in ribbon.rs for active-state highlighting. // id "SOLID" is special-cased in ribbon.rs for active-state highlighting.
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/solid.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "SOLID", label: "Solid", icon: ICON, event: ModuleEvent::SetWireframe(false) }
id: "SOLID",
label: "Solid",
icon: IconKind::Glyph("■"),
event: ModuleEvent::SetWireframe(false),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_front.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "VIEW_FRONT", label: "Front", icon: ICON, event: ModuleEvent::Command("VIEW FRONT".to_string()) }
id: "VIEW_FRONT",
label: "Front",
icon: IconKind::Glyph("⊥"),
event: ModuleEvent::Command("VIEW FRONT".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_iso.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "VIEW_ISO", label: "Iso", icon: ICON, event: ModuleEvent::Command("VIEW ISO".to_string()) }
id: "VIEW_ISO",
label: "Iso",
icon: IconKind::Glyph("◈"),
event: ModuleEvent::Command("VIEW ISO".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_right.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "VIEW_RIGHT", label: "Right", icon: ICON, event: ModuleEvent::Command("VIEW RIGHT".to_string()) }
id: "VIEW_RIGHT",
label: "Right",
icon: IconKind::Glyph("⊣"),
event: ModuleEvent::Command("VIEW RIGHT".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/view_top.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "VIEW_TOP", label: "Top", icon: ICON, event: ModuleEvent::Command("VIEW TOP".to_string()) }
id: "VIEW_TOP",
label: "Top",
icon: IconKind::Glyph("⊤"),
event: ModuleEvent::Command("VIEW TOP".to_string()),
}
} }

View file

@ -2,11 +2,7 @@
// id "WIREFRAME" is special-cased in ribbon.rs for active-state highlighting. // id "WIREFRAME" is special-cased in ribbon.rs for active-state highlighting.
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/wireframe.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "WIREFRAME", label: "Wireframe", icon: ICON, event: ModuleEvent::SetWireframe(true) }
id: "WIREFRAME",
label: "Wireframe",
icon: IconKind::Glyph("□"),
event: ModuleEvent::SetWireframe(true),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/xray.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "XRAY", label: "X-Ray", icon: ICON, event: ModuleEvent::Command("XRAY".to_string()) }
id: "XRAY",
label: "X-Ray",
icon: IconKind::Glyph("◈"),
event: ModuleEvent::Command("XRAY".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_ext.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "ZOOM_EXT", label: "Zoom\nExtents", icon: ICON, event: ModuleEvent::Command("ZOOM EXTENTS".to_string()) }
id: "ZOOM_EXT",
label: "Zoom Ext",
icon: IconKind::Glyph("⊡"),
event: ModuleEvent::Command("ZOOM EXTENTS".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_in.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "ZOOM_IN", label: "Zoom In", icon: ICON, event: ModuleEvent::Command("ZOOM IN".to_string()) }
id: "ZOOM_IN",
label: "Zoom In",
icon: IconKind::Glyph("🔍"),
event: ModuleEvent::Command("ZOOM IN".to_string()),
}
} }

View file

@ -1,9 +1,5 @@
use crate::modules::{IconKind, ModuleEvent, ToolDef}; use crate::modules::{IconKind, ModuleEvent, ToolDef};
pub const ICON: IconKind = IconKind::Svg(include_bytes!("../../../assets/icons/zoom_out.svg"));
pub fn tool() -> ToolDef { pub fn tool() -> ToolDef {
ToolDef { ToolDef { id: "ZOOM_OUT", label: "Zoom Out", icon: ICON, event: ModuleEvent::Command("ZOOM OUT".to_string()) }
id: "ZOOM_OUT",
label: "Zoom Out",
icon: IconKind::Glyph("🔎"),
event: ModuleEvent::Command("ZOOM OUT".to_string()),
}
} }

View file

@ -40,6 +40,8 @@ impl StatusBar {
viewport_count: usize, viewport_count: usize,
// True when the user is editing inside a paper-space viewport (MSPACE). // True when the user is editing inside a paper-space viewport (MSPACE).
in_mspace: bool, in_mspace: bool,
// Whether the layout tabs (Model/Paper) are visible (LAYOUTTAB).
show_layout_tabs: bool,
) -> Element<'a, Message> { ) -> Element<'a, Message> {
let menu_btn = button(text("≡").size(14).color(ICON_COLOR)) let menu_btn = button(text("≡").size(14).color(ICON_COLOR))
.on_press(Message::Command("MENU".into())) .on_press(Message::Command("MENU".into()))
@ -107,6 +109,7 @@ impl StatusBar {
let mut bar = Row::new().align_y(iced::Center).spacing(0); let mut bar = Row::new().align_y(iced::Center).spacing(0);
bar = bar.push(menu_btn); bar = bar.push(menu_btn);
if show_layout_tabs {
for name in layouts { for name in layouts {
let is_active = name == current_layout; let is_active = name == current_layout;
let renaming = rename_state let renaming = rename_state
@ -115,6 +118,7 @@ impl StatusBar {
bar = bar.push(space_tab(name, is_active, renaming)); bar = bar.push(space_tab(name, is_active, renaming));
} }
bar = bar.push(add_btn); bar = bar.push(add_btn);
}
bar = bar.push(iced::widget::Space::new().width(Length::Fill)); bar = bar.push(iced::widget::Space::new().width(Length::Fill));
bar = bar.push(right_status); bar = bar.push(right_status);