Files
create/icons/themed/LinkSub.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

187 lines
9.9 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
viewBox="0 0 63.999999 63.999998"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="LinkSub.svg">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12">
<linearGradient
inkscape:collect="always"
id="linearGradient3861">
<stop
style="stop-color:#307bf7;stop-opacity:1;"
offset="0"
id="stop3863" />
<stop
style="stop-color:#89b4fa;stop-opacity:1"
offset="1"
id="stop3865" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3861"
id="linearGradient4204"
x1="220.23199"
y1="452.43173"
x2="178.23227"
y2="89.727692"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3774"
id="linearGradient4192"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.07263174,0,0,0.08518106,60.356743,2.1425583)"
x1="108.0051"
y1="380.41721"
x2="182.35744"
y2="135.45494" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3774"
id="linearGradient4316"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.51964051,0,0,0.50042191,1386.3532,982.21378)"
x1="288.11227"
y1="358.15811"
x2="372.52457"
y2="7.5416322" />
<linearGradient
inkscape:collect="always"
id="linearGradient3774">
<stop
style="stop-color:#359b2e;stop-opacity:1"
offset="0"
id="stop3776" />
<stop
style="stop-color:#a6e3a1;stop-opacity:1"
offset="1"
id="stop3778" />
</linearGradient>
</defs>
<sodipodi:namedview
pagecolor="#cdd6f4"
bordercolor="#38394b"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1375"
inkscape:window-height="876"
id="namedview10"
showgrid="false"
inkscape:zoom="7.3803767"
inkscape:cx="7.0493414"
inkscape:cy="27.241652"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
id="g4"
style="fill:#205493;stroke:#052459;stroke-width:17.03064728;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.11712934,0,0,0.12658345,3.102156,-2.7048542)">
<path
style="fill:url(#linearGradient4204);fill-opacity:1;stroke:#052459;stroke-width:17.13426781;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 191.68535,68.991034 c -25.01113,0.825185 25.55018,0.03509 0.25466,0.363792 -43.36411,0.212557 -75.47638,-0.692241 -118.824699,0.06442 -43.079122,3.698128 -79.7652904,44.484057 -76.9336704,88.026067 -0.4439575,75.47002 -0.051566,150.94383 -0.1459621,226.41396 -0.5002276,16.57633 1.0512879,33.72441 9.3462972,48.45039 15.1024633,29.2002 47.5748333,49.03481 80.7098203,46.74393 81.071924,-0.21153 162.166794,0.57106 243.224554,-0.41015 43.22514,-3.74522 79.42489,-45.02726 76.62401,-88.51258 -0.22056,-30.91559 1.31867,-13.51025 0.0795,-44.36085 -2.34002,-8.22613 -12.14001,-10.33714 -19.54688,-8.83594 -7.75802,-0.46323 -18.74559,-1.78474 -22.87891,6.63477 -3.83588,9.4189 -0.29725,19.57848 -1.61914,29.34375 -0.40461,25.86461 0.59366,3.47835 -1.47293,29.2046 -4.3795,20.76154 -25.86566,35.21453 -46.75585,32.40721 -79.28903,-0.25751 -158.60963,0.5384 -237.878912,-0.41112 -21.612075,-2.81679 -38.071154,-24.76126 -35.322258,-46.2832 0.263584,-79.62158 -0.544254,-159.27571 0.416008,-238.87696 2.816182,-21.62523 24.76226,-38.04333 46.289061,-35.32265 66.459691,-0.23376 45.553841,0.63643 111.988081,-0.21561 8.31737,-1.76623 8.5373,-12.68319 9.56641,-18.996092 0.22106,-7.774814 2.06378,-18.411454 -5.84961,-23.224609 -3.44384,-1.838988 -7.42123,-2.284442 -11.26958,-2.203125 z"
id="path6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccccccccc" />
</g>
<path
inkscape:connector-curvature="0"
id="path4230"
d="m 50.085451,6.4784739 c 1.424946,0.2271651 2.202068,1.8237033 3.183968,2.8760854 3.133555,3.8146007 6.611522,7.2693777 9.415937,11.4363287 0.338501,1.484183 -0.533269,2.912426 -1.547231,3.702245 -3.505457,3.971929 -6.738104,8.291818 -10.477719,11.964582 -1.446322,0.597843 -3.136748,-1.015134 -2.937472,-2.797831 -0.179414,-1.356178 0.501714,-2.723713 1.451471,-3.483154 2.431121,-2.884471 4.995102,-5.622935 7.256393,-8.698071 -1.154581,-1.651133 -2.580784,-3.000676 -3.804128,-4.577525 -1.642358,-1.923446 -3.288782,-3.842892 -4.885436,-5.81889 0.03354,-1.2808287 -0.182855,-2.783234 0.636095,-3.8120188 0.444294,-0.5244422 1.080193,-0.8076457 1.708122,-0.7917513 z"
style="fill:#a6e3a1;fill-opacity:1;stroke:#1c5017;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4190"
d="m 49.907573,8.5672399 c 1.3212,0.6919081 1.946622,2.3552991 3.050654,3.3723501 2.696417,3.127746 5.574623,6.067579 7.929222,9.57201 0.166826,0.300068 -0.182874,0.641473 -0.324289,0.895899 -0.616251,0.753953 -1.385452,1.309372 -1.955996,2.123867 -2.887035,3.354451 -5.567258,6.978589 -8.761583,9.949051 -0.70035,-0.466535 -0.507422,-1.705857 0.01521,-2.268883 0.824814,-1.102682 1.864707,-1.951266 2.680016,-3.066236 2.136327,-2.462446 4.278911,-4.931572 6.169963,-7.661981 -2.807641,-4.040982 -6.27277,-7.354498 -9.204796,-11.26037 -0.07449,-0.5538331 -0.13189,-1.3548574 0.368549,-1.6715122 l 0.03305,0.015805 z"
style="fill:url(#linearGradient4192);fill-opacity:1.0;stroke:none;stroke-width:19.07025528;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g4232"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4234"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4236"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4238"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4240"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4242"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4244"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4246"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4248"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4250"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4252"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4254"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4256"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4258"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4260"
transform="matrix(-0.07263174,0,0,0.08518106,61.068603,2.1425583)" />
<g
id="g4310"
transform="matrix(0.1618532,0,0,0.15917038,-166.68934,-150.54225)">
<path
id="path4312"
d="m 1145.5648,1074.1543 c 18.5937,-18.383 48.2169,-28.9064 88.8688,-31.5737 l 0,-37.4326 c 0,-4.0003 1.9294,-6.80966 5.7868,-8.43006 4.0547,-1.61639 7.5171,-0.95178 10.3849,2.00121 l 75.9581,73.15065 c 1.8799,1.8121 2.8184,3.9543 2.8184,6.4303 0,2.4767 -0.9389,4.6185 -2.8184,6.429 l -75.9602,73.1502 c -1.7833,1.81 -4.0064,2.7148 -6.6772,2.7148 -1.1865,0 -2.4222,-0.2382 -3.7083,-0.7141 -3.8572,-1.6204 -5.7882,-4.4273 -5.7882,-8.4296 l 0,-35.8618 c -15.9228,1.2386 -29.1503,3.7387 -39.6881,7.5008 -10.5331,3.7627 -18.9637,9.0247 -25.2946,15.7879 -14.738,15.7158 -19.9806,42.6214 -15.7274,80.7237 0.1953,2.4775 -0.9389,4.0963 -3.4125,4.858 -0.2967,0.097 -0.7414,0.142 -1.3349,0.142 -1.9778,0 -3.361,-0.8095 -4.154,-2.4285 l -2.9667,-5.7148 c -1.3832,-2.6676 -3.3858,-6.9784 -6.007,-12.9313 -2.6194,-5.9556 -4.9969,-11.9071 -7.1237,-17.8612 -2.1269,-5.9515 -4.0298,-12.5235 -5.7119,-19.7147 -1.6805,-7.194 -2.5219,-13.5508 -2.5219,-19.074 0,-32.0039 8.3606,-56.2428 25.078,-72.7222 z"
inkscape:connector-curvature="0"
style="opacity:1;fill:#a6e3a1;fill-opacity:1;stroke:#1c5017;stroke-width:15.57572379;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="opacity:1;fill:url(#linearGradient4316);fill-opacity:1;stroke:none;stroke-width:34.75331116;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 1252.6459,1025.0625 c 18.4441,17.7617 37.1632,35.1962 55.3062,53.3235 -19.0906,18.0067 -37.542,36.7844 -56.7747,54.6184 -0.018,-12.2743 -0.087,-24.5491 0.032,-36.8231 -26.4463,1.6409 -53.9694,3.575 -77.8197,17.2303 -17.0095,9.5803 -28.4884,27.8106 -34.5388,47.088 -3.5743,-21.5969 -1.2897,-45.3408 10.607,-63.6609 11.0273,-16.9013 29.5358,-25.7267 47.629,-30.3404 14.7839,-4.3279 30.2561,-4.0127 45.1276,-7.7257 7.8392,-4.3982 10.4187,-14.9284 9.2176,-23.8416 -0.062,-3.7919 -0.2886,-7.6325 -0.4323,-11.451 0.5488,0.5275 1.0977,1.055 1.6465,1.5825 z"
id="path4314"
inkscape:connector-curvature="0" />
</g>
</svg>