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

202 lines
10 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="32"
viewBox="0 0 32 32"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<g
id="layer1">
<g
id="g1981"
transform="matrix(1.0791076,0,0,1.0791076,-0.69453337,-1.7779024)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.1484437,6.2290618 26.32561,26.447572"
id="path1941" />
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 26.266406,6.5136899 4.4064936,25.994384"
id="path1943" />
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 15.566779,1.8681068 V 31.156887"
id="path1945" />
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 0.92238901,16.254037 H 30.211169"
id="path1947" />
<g
id="g1951"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1949" />
</g>
<g
id="g1955"
transform="rotate(-46.505836,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1953" />
</g>
<g
id="g1959"
transform="rotate(-91.850633,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1957" />
</g>
<g
id="g1963"
transform="rotate(-137.21415,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 28.603305,9.5599736 23.396755,9.4884566 23.567528,4.2773"
id="path1961" />
</g>
<g
id="g1967"
transform="rotate(-177.20665,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1965" />
</g>
<g
id="g1971"
transform="rotate(132.71152,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1969" />
</g>
<g
id="g1975"
transform="rotate(85.403042,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1973" />
</g>
<g
id="g1979"
transform="rotate(43.419843,15.818396,16.382435)"
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#cdd6f4;stroke-width:1.8533833;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1977" />
</g>
</g>
<g
id="g1923"
transform="matrix(1.0791076,0,0,1.0791076,-0.69453337,-1.7779024)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 5.1484437,6.2290618 26.32561,26.447572"
id="path896" />
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 26.266406,6.5136899 4.4064936,25.994384"
id="path898" />
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 15.566779,1.8681068 V 31.156887"
id="path900" />
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 0.92238901,16.254037 H 30.211169"
id="path902" />
<g
id="g1770"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path908" />
</g>
<g
id="g1828"
transform="rotate(-46.505836,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1826" />
</g>
<g
id="g1832"
transform="rotate(-91.850633,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1830" />
</g>
<g
id="g1836"
transform="rotate(-137.21415,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 28.603305,9.5599736 23.396755,9.4884566 23.567528,4.2773"
id="path1834" />
</g>
<g
id="g1840"
transform="rotate(-177.20665,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1838" />
</g>
<g
id="g1844"
transform="rotate(132.71152,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1842" />
</g>
<g
id="g1848"
transform="rotate(85.403042,15.495234,16.45454)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1846" />
</g>
<g
id="g1852"
transform="rotate(43.419843,15.818396,16.382435)"
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-dasharray:none;stroke-opacity:1">
<path
style="fill:none;fill-opacity:1;stroke:#74dac8;stroke-width:0.92669165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 28.350192,9.3680915 -5.20655,-0.071517 0.170773,-5.2111566"
id="path1850" />
</g>
</g>
</g>
</svg>