Files
create/icons/themed/zoom-border-cross.svg
forbes d7b532255b
Some checks failed
Build and Test / build (pull_request) Has been cancelled
feat(icons): add icon theming infrastructure with Catppuccin color remapping
- Remove hand-crafted kindred-icons/ in favor of auto-generated themed icons
- Add icons/mappings/ with FCAD.csv (Tango palette) and kindred.csv (Catppuccin Mocha)
- Add icons/retheme.py script to remap upstream FreeCAD SVG colors
- Generate icons/themed/ with 1,595 themed SVGs (45,300 color replacements)
- BitmapFactory loads icons/themed/ as highest priority before default icons
- 157-color mapping covers the full Tango palette, interpolating between
  4 luminance anchors per color family

Regenerate: python3 icons/retheme.py
2026-02-15 20:34:22 -06:00

566 lines
17 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
id="svg11300"
height="64"
width="64"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs3">
<linearGradient
id="linearGradient3873">
<stop
style="stop-color:#cdd6f4;stop-opacity:1;"
offset="0"
id="stop3875" />
<stop
style="stop-color:#6c7086;stop-opacity:1"
offset="1"
id="stop3877" />
</linearGradient>
<linearGradient
id="linearGradient3863">
<stop
style="stop-color:#94e2d5;stop-opacity:1"
offset="0"
id="stop3865" />
<stop
style="stop-color:#54d1bc;stop-opacity:1"
offset="1"
id="stop3867" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89b4fa;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#258d7d;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.3741544,0.4236661,-0.5825572,-0.5144765,35.157782,16.985792)"
cx="18.195206"
cy="17.38835"
fx="18.195206"
fy="17.38835"
r="27.986706" />
<linearGradient
id="linearGradient11979">
<stop
style="stop-color:#cdd6f4;stop-opacity:1;"
offset="0"
id="stop11981" />
<stop
style="stop-color:#89b4fa;stop-opacity:1"
offset="1"
id="stop11983" />
</linearGradient>
<linearGradient
id="linearGradient2846">
<stop
id="stop2848"
offset="0.0000000"
style="stop-color:#8a8a8a;stop-opacity:1.0000000;" />
<stop
id="stop2850"
offset="1.0000000"
style="stop-color:#484848;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2366">
<stop
id="stop2368"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0.21904762;"
offset="0.50000000"
id="stop2374" />
<stop
id="stop2370"
offset="1.0000000"
style="stop-color:#cdd6f4;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient4467">
<stop
style="stop-color:#cdd6f4;stop-opacity:1;"
offset="0"
id="stop4469" />
<stop
style="stop-color:#cdd6f4;stop-opacity:0.24761905;"
offset="1.0000000"
id="stop4471" />
</linearGradient>
<linearGradient
id="linearGradient4454">
<stop
style="stop-color:#89b4fa;stop-opacity:0.20784314;"
offset="0.0000000"
id="stop4456" />
<stop
style="stop-color:#89b4fa;stop-opacity:0.67619050;"
offset="1.0000000"
id="stop4458" />
</linearGradient>
<linearGradient
id="linearGradient4440">
<stop
style="stop-color:#7d7d7d;stop-opacity:1;"
offset="0"
id="stop4442" />
<stop
id="stop4448"
offset="0.50000000"
style="stop-color:#b1b1b1;stop-opacity:1.0000000;" />
<stop
style="stop-color:#686868;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop4444" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)"
r="10.31934"
fy="35.127438"
fx="23.070683"
cy="35.127438"
cx="23.070683"
id="radialGradient2097"
xlink:href="#linearGradient2091" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="34.976799"
x2="27.900846"
y1="22.851799"
x1="16.874998"
id="linearGradient7922"
xlink:href="#linearGradient7916" />
<linearGradient
y2="50.939667"
x2="45.380436"
y1="45.264122"
x1="46.834816"
gradientUnits="userSpaceOnUse"
id="linearGradient7186"
xlink:href="#linearGradient2871" />
<linearGradient
y2="26.649363"
x2="53.588623"
y1="23.667896"
x1="18.935766"
gradientUnits="userSpaceOnUse"
id="linearGradient7184"
xlink:href="#linearGradient2402" />
<linearGradient
y2="50.939667"
x2="45.380436"
y1="45.264122"
x1="46.834816"
gradientUnits="userSpaceOnUse"
id="linearGradient7182"
xlink:href="#linearGradient2871" />
<linearGradient
y2="20.60858"
x2="15.984863"
y1="36.061237"
x1="62.513836"
gradientUnits="userSpaceOnUse"
id="linearGradient7180"
xlink:href="#linearGradient2380" />
<linearGradient
gradientTransform="matrix(-1,0,0,-1,47.93934,50.02474)"
y2="23.554308"
x2="22.374878"
y1="13.604306"
x1="13.435029"
gradientUnits="userSpaceOnUse"
id="linearGradient7189"
xlink:href="#linearGradient7179" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="23.554308"
x2="22.374878"
y1="13.604306"
x1="13.435029"
id="linearGradient7185"
xlink:href="#linearGradient7179" />
<linearGradient
gradientTransform="translate(-18.01785,-13.57119)"
gradientUnits="userSpaceOnUse"
y2="48.547989"
x2="45.918697"
y1="36.422989"
x1="34.892849"
id="linearGradient4975"
xlink:href="#linearGradient1322" />
<linearGradient
id="linearGradient1322">
<stop
style="stop-color:#89b4fa"
offset="0.0000000"
id="stop1324" />
<stop
style="stop-color:#5187d6;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1326" />
</linearGradient>
<linearGradient
id="linearGradient2316">
<stop
id="stop2318"
offset="0"
style="stop-color:#11111b;stop-opacity:1;" />
<stop
id="stop2320"
offset="1"
style="stop-color:#cdd6f4;stop-opacity:0.65979379;" />
</linearGradient>
<linearGradient
id="linearGradient7179">
<stop
id="stop7181"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop7183"
offset="1"
style="stop-color:#cdd6f4;stop-opacity:0;" />
</linearGradient>
<linearGradient
y2="26.048164"
x2="52.854095"
y1="26.048164"
x1="5.9649177"
gradientUnits="userSpaceOnUse"
id="linearGradient1491"
xlink:href="#linearGradient2797" />
<linearGradient
id="linearGradient2797">
<stop
id="stop2799"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop2801"
offset="1"
style="stop-color:#cdd6f4;stop-opacity:0;" />
</linearGradient>
<linearGradient
y2="26.048164"
x2="52.854095"
y1="26.048164"
x1="5.9649177"
gradientUnits="userSpaceOnUse"
id="linearGradient1493"
xlink:href="#linearGradient2797" />
<linearGradient
id="linearGradient2402">
<stop
id="stop2404"
offset="0"
style="stop-color:#89b4fa;stop-opacity:1;" />
<stop
id="stop2406"
offset="1"
style="stop-color:#659df9;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient2871">
<stop
id="stop2873"
offset="0"
style="stop-color:#307bf7;stop-opacity:1;" />
<stop
id="stop2875"
offset="1"
style="stop-color:#307bf7;stop-opacity:1" />
</linearGradient>
<linearGradient
gradientTransform="translate(-48.77039,-5.765705)"
gradientUnits="userSpaceOnUse"
y2="24.842253"
x2="37.124462"
y1="30.748846"
x1="32.647972"
id="linearGradient2696"
xlink:href="#linearGradient2690" />
<linearGradient
id="linearGradient2690">
<stop
id="stop2692"
offset="0"
style="stop-color:#89b4fa;stop-opacity:1;" />
<stop
id="stop2694"
offset="1"
style="stop-color:#89b4fa;stop-opacity:0;" />
</linearGradient>
<linearGradient
gradientTransform="translate(-48.77039,-5.765705)"
gradientUnits="userSpaceOnUse"
y2="24.842253"
x2="37.124462"
y1="31.455952"
x1="36.713837"
id="linearGradient2688"
xlink:href="#linearGradient2682" />
<linearGradient
id="linearGradient2682">
<stop
id="stop2684"
offset="0"
style="stop-color:#4f8ff8;stop-opacity:1;" />
<stop
id="stop2686"
offset="1"
style="stop-color:#89b4fa;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient2380">
<stop
id="stop2382"
offset="0"
style="stop-color:#89b4fa;stop-opacity:1" />
<stop
id="stop2384"
offset="1"
style="stop-color:#89b4fa;stop-opacity:1" />
</linearGradient>
<linearGradient
y2="19.115122"
x2="15.419417"
y1="10.612206"
x1="13.478554"
gradientTransform="translate(-48.30498,-6.043298)"
gradientUnits="userSpaceOnUse"
id="linearGradient1486"
xlink:href="#linearGradient2831" />
<linearGradient
id="linearGradient2831">
<stop
id="stop2833"
offset="0"
style="stop-color:#307bf7;stop-opacity:1;" />
<stop
style="stop-color:#679ef9;stop-opacity:1;"
offset="0.33333334"
id="stop2855" />
<stop
id="stop2835"
offset="1"
style="stop-color:#89b4fa;stop-opacity:0;" />
</linearGradient>
<linearGradient
y2="26.194071"
x2="37.065414"
y1="29.729605"
x1="37.128052"
gradientTransform="matrix(-1,0,0,-1,-1.24248,40.0817)"
gradientUnits="userSpaceOnUse"
id="linearGradient1488"
xlink:href="#linearGradient2847" />
<linearGradient
id="linearGradient2847">
<stop
id="stop2849"
offset="0"
style="stop-color:#307bf7;stop-opacity:1;" />
<stop
id="stop2851"
offset="1"
style="stop-color:#307bf7;stop-opacity:0;" />
</linearGradient>
<radialGradient
r="15.644737"
fy="36.421127"
fx="24.837126"
cy="36.421127"
cx="24.837126"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)"
gradientUnits="userSpaceOnUse"
id="radialGradient1503"
xlink:href="#linearGradient8662" />
<linearGradient
id="linearGradient8662">
<stop
id="stop8664"
offset="0"
style="stop-color:#11111b;stop-opacity:1;" />
<stop
id="stop8666"
offset="1"
style="stop-color:#11111b;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient7916">
<stop
id="stop7918"
offset="0"
style="stop-color:#cdd6f4;stop-opacity:1;" />
<stop
id="stop7920"
offset="1.0000000"
style="stop-color:#cdd6f4;stop-opacity:0.34020618;" />
</linearGradient>
<linearGradient
id="linearGradient2091">
<stop
id="stop2093"
offset="0"
style="stop-color:#11111b;stop-opacity:1;" />
<stop
id="stop2095"
offset="1"
style="stop-color:#11111b;stop-opacity:0;" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient2695"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.97170193,0.00229703,-0.00584891,0.35910699,59.357114,-51.534761)"
cx="44.286785"
cy="6.4023118"
fx="44.286785"
fy="6.4023118"
r="27.986706" />
<radialGradient
xlink:href="#linearGradient3857"
id="radialGradient3163"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.44443897,0.44201085,-0.71793955,0.71401751,140.76466,-18.376658)"
cx="43.783218"
cy="41.446495"
fx="43.783218"
fy="41.446495"
r="12.458333" />
<linearGradient
id="linearGradient3857">
<stop
style="stop-color:#94e2d5;stop-opacity:1"
offset="0"
id="stop3859" />
<stop
style="stop-color:#258e7e;stop-opacity:1"
offset="1"
id="stop3861" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3863"
id="linearGradient3869"
x1="139.61827"
y1="38.502964"
x2="140.73358"
y2="44.079514"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.76377033,0,0,0.75959787,35.331115,11.912598)" />
<linearGradient
xlink:href="#linearGradient3873"
id="linearGradient3879"
x1="126.79221"
y1="22.888617"
x2="131.8111"
y2="34.041721"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.76377033,0,0,0.75959787,35.331115,11.912598)" />
</defs>
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>Martin Ruskov</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://commons.wikimedia.org/wiki/Tango_icon</dc:source>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="translate(0,16)">
<g
id="g3157"
transform="matrix(1.7932228,0,0,1.7932228,-206.36667,-43.04439)">
<path
id="rect3057"
d="m 136.91257,40.017714 3.05508,-3.038391 9.16524,9.115187 -3.05508,3.038381 z"
style="fill:url(#linearGradient3869);fill-opacity:1;stroke:#103b35;stroke-width:0.849511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:2.04;stroke-opacity:1" />
<path
id="path3865"
d="m 148.22059,46.383744 -7.6377,-7.595975"
style="fill:none;stroke:#94e2d5;stroke-width:0.849511;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<ellipse
id="path3055"
style="fill:url(#radialGradient3163);fill-opacity:1;stroke:#103b35;stroke-width:1.09524;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.04;stroke-opacity:1"
cx="133.44901"
cy="33.534679"
rx="8.9443302"
ry="8.8954668" />
<ellipse
id="path3055-1"
style="fill:none;stroke:#94e2d5;stroke-width:1.21053;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.04;stroke-opacity:1"
cx="133.44901"
cy="33.534679"
rx="8.0924892"
ry="8.0482798" />
<rect
style="fill:url(#linearGradient3879);fill-opacity:1;stroke:#103b35;stroke-width:0.849511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.849511, 1.69902;stroke-dashoffset:0;stroke-opacity:1"
id="rect3871"
width="11.073932"
height="9.3190603"
x="127.91203"
y="28.875149" />
<rect
style="fill:#63677d;fill-opacity:1;stroke:none;stroke-width:0.557655;stroke-opacity:1"
id="rect12275"
width="1.1153103"
height="14.499035"
x="121.77331"
y="15.081445" />
<rect
style="fill:#63677d;fill-opacity:1;stroke:none;stroke-width:0.557655;stroke-opacity:1"
id="rect12379"
width="14.499035"
height="1.1153104"
x="115.08144"
y="21.773308" />
</g>
</g>
</svg>