[{"data":1,"prerenderedAt":306},["ShallowReactive",2],{"footer-links":3,"content-\u002Ffavicon":12},[4,9],{"path":5,"title":6,"type":7,"isExternal":8},"https:\u002F\u002Fgithub.com\u002Flife-and-dev\u002Fmdsite","GitHub Repo","link",true,{"path":10,"title":11,"type":7,"isExternal":8},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@life-and-dev\u002Fmdsite","NPM Registry",{"id":13,"title":14,"body":15,"description":299,"extension":300,"meta":301,"navigation":8,"path":302,"seo":303,"stem":304,"__hash__":305},"content\u002Ffavicon.md","Favicon Configuration",{"type":16,"value":17,"toc":288},"minimark",[18,22,87,92,134,170,174,192,196,201,204,221,230,260,264,277,284],[19,20,14],"h1",{"id":21},"favicon-configuration",[23,24,25,26,30,31,34,35,38,39,42,43,42,46,42,49,52,53,56,57,60,61,60,64,60,67,60,70,73,74,76,77,80,81,83,84,86],"p",{},"mdsite uses the ",[27,28,29],"code",{},"site.favicon"," value in ",[27,32,33],{},"mdsite.yml"," to pass a favicon path to the local renderer. ",[27,36,37],{},"mdsite init"," auto-detects a favicon by scanning the content directory's top level and its immediate subdirectories in priority order — ",[27,40,41],{},"favicon.\u003Cext>"," → ",[27,44,45],{},"\u003Cproject-name>-logo.\u003Cext>",[27,47,48],{},"\u003Cproject-name>.\u003Cext>",[27,50,51],{},"logo.\u003Cext>",", where ",[27,54,55],{},"\u003Cext>"," is tried as ",[27,58,59],{},".svg"," > ",[27,62,63],{},".png",[27,65,66],{},".webp",[27,68,69],{},".jpg",[27,71,72],{},".ico"," (with ",[27,75,72],{}," as a last-resort legacy format) and ",[27,78,79],{},"\u003Cproject-name>"," is the basename of the directory you run ",[27,82,37],{}," in. You can also set ",[27,85,29],{}," by hand.",[88,89,91],"h2",{"id":90},"how-it-works","How it Works",[23,93,94,95,97,98,102,103,106,107,112,113,122,123,126,127,130,131,133],{},"The ",[27,96,29],{}," path is resolved first relative to your ",[99,100,101],"strong",{},"input directory"," (e.g. ",[27,104,105],{},"docs\u002F","), then — if not found there — relative to the ",[99,108,109,110],{},"directory containing ",[27,111,33],{}," (the project root). It may be any raster or vector image format that ",[114,115,119],"a",{"href":116,"rel":117},"https:\u002F\u002Fsharp.pixelplumbing.com\u002F",[118],"nofollow",[27,120,121],{},"sharp"," supports, so both ",[27,124,125],{},"favicon.png"," (a file in the input dir) and ",[27,128,129],{},"docs\u002Ffavicon.png"," (project-root-relative) work. If ",[27,132,29],{}," is configured, the referenced file must exist under one of those bases.",[23,135,136,137,140,141,140,144,140,147,140,150,153,154,157,158,161,162,165,166,169],{},"The renderer reads that source image directly and generates all derived favicon assets — ",[27,138,139],{},"favicon.svg",", ",[27,142,143],{},"favicon.ico",[27,145,146],{},"apple-touch-icon.png",[27,148,149],{},"icon-192.png",[27,151,152],{},"icon-512.png",", and ",[27,155,156],{},"site.webmanifest"," — into the renderer's own ",[27,159,160],{},"public\u002F"," directory (the renderer working dir, e.g. ",[27,163,164],{},".mdsite\u002Fpublic\u002F","). No favicon files are written into your content directory, and no ",[27,167,168],{},"favicon\u002F"," subdirectory is created.",[88,171,173],{"id":172},"when-no-favicon-is-set","When No Favicon Is Set",[23,175,176,177,179,180,183,184,187,188,191],{},"If ",[27,178,29],{}," is empty or the referenced file is missing, the renderer generates a monogram favicon: the first letter of ",[27,181,182],{},"site.name"," rendered in ",[27,185,186],{},"themes.light.colors.on-primary"," on a rounded square filled with ",[27,189,190],{},"themes.light.colors.primary"," (each falling back to a built-in default when unset). This avoids leaking any default branding and gives every site a distinct favicon out of the box.",[88,193,195],{"id":194},"configuration-steps","Configuration Steps",[197,198,200],"h3",{"id":199},"_1-add-a-favicon-file","1. Add a favicon file",[23,202,203],{},"Place your favicon in the content directory, for example:",[205,206,211],"pre",{"className":207,"code":208,"language":209,"meta":210,"style":210},"language-bash shiki shiki-themes github-light github-dark","your-content\u002Ffavicon.svg\n","bash","",[27,212,213],{"__ignoreMap":210},[214,215,218],"span",{"class":216,"line":217},"line",1,[214,219,208],{"class":220},"sScJk",[197,222,224,225,227,228],{"id":223},"_2-set-sitefavicon-in-mdsiteyml","2. Set ",[27,226,29],{}," in ",[27,229,33],{},[205,231,235],{"className":232,"code":233,"language":234,"meta":210,"style":210},"language-yaml shiki shiki-themes github-light github-dark","site:\n  favicon: favicon.svg\n","yaml",[27,236,237,247],{"__ignoreMap":210},[214,238,239,243],{"class":216,"line":217},[214,240,242],{"class":241},"s9eBZ","site",[214,244,246],{"class":245},"sVt8B",":\n",[214,248,250,253,256],{"class":216,"line":249},2,[214,251,252],{"class":241},"  favicon",[214,254,255],{"class":245},": ",[214,257,259],{"class":258},"sZZnC","favicon.svg\n",[197,261,263],{"id":262},"_3-run-the-cli","3. Run the CLI",[205,265,267],{"className":207,"code":266,"language":209,"meta":210,"style":210},"mdsite live\n",[27,268,269],{"__ignoreMap":210},[214,270,271,274],{"class":216,"line":217},[214,272,273],{"class":220},"mdsite",[214,275,276],{"class":258}," live\n",[23,278,279,280,283],{},"Use ",[27,281,282],{},"mdsite generate"," when building static output.",[285,286,287],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":210,"searchDepth":249,"depth":249,"links":289},[290,291,292],{"id":90,"depth":249,"text":91},{"id":172,"depth":249,"text":173},{"id":194,"depth":249,"text":195,"children":293},[294,296,298],{"id":199,"depth":295,"text":200},3,{"id":223,"depth":295,"text":297},"2. Set site.favicon in mdsite.yml",{"id":262,"depth":295,"text":263},"mdsite uses the site.favicon value in mdsite.yml to pass a favicon path to the local renderer. mdsite init auto-detects a favicon by scanning the content directory's top level and its immediate subdirectories in priority order — favicon.\u003Cext> → \u003Cproject-name>-logo.\u003Cext> → \u003Cproject-name>.\u003Cext> → logo.\u003Cext>, where \u003Cext> is tried as .svg > .png > .webp > .jpg > .ico (with .ico as a last-resort legacy format) and \u003Cproject-name> is the basename of the directory you run mdsite init in. You can also set site.favicon by hand.","md",{},"\u002Ffavicon",{"title":14,"description":299},"favicon","bERw7PRNafeik8OxqyhvAVuLRbYmRBzc5lgKXBe_e1Y",1784017753075]