feat(docs): GitHub mirror icon, README-sourced doc sections, auto-generated TOC #129

Merged
rootiest merged 6 commits from feat/docs-readme-sections into main 2026-09-04 21:23:07 +00:00
13 changed files with 2451 additions and 2645 deletions
+13 -2
View File
@@ -146,9 +146,12 @@ Contributing to the docs? There are two sources, split by content type:
above each function in `functions/*.fish`. Edit the function; the entry
and its site page are generated from the header.
- **Everything else** lives under `docs/manual/**`.
- **Testing, Contributing, Attribution, and License** are pulled straight
from this README (the sections below) rather than authored twice — edit
them here and the manual, man page, and site all pick up the change.
Never edit the generated `docs/fish-config.md` — it's rebuilt from both
sources and any hand-edits are discarded.
Never edit the generated `docs/fish-config.md` — it's rebuilt from all
three sources and any hand-edits are discarded.
To browse the docs from the terminal:
@@ -348,6 +351,14 @@ Interested in contributing? See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the
branching/PR workflow, commit conventions, fish coding standards, and the
docs/testing pipeline this repo follows.
**Preferred forge:** [git.rootiest.dev/rootiest/fish-config](https://git.rootiest.dev/rootiest/fish-config)
is the base repository. [github.com/rootiest/fish-config](https://github.com/rootiest/fish-config)
is a push-mirror of it — identical content, but one-way and read-only from a
contributor's perspective. Branches, forks, and merges made on the GitHub
side aren't fed back upstream, so they risk being silently overwritten by
the next mirror push. Until two-way sync exists, please fork, branch, and
open issues/PRs from the Gitea repository rather than the GitHub mirror.
---
## Attribution
+100 -1
View File
@@ -23,6 +23,8 @@ DOCS = Path(__file__).parent
MANUAL = DOCS / "manual"
FUNCTIONS = DOCS.parent / "functions"
COMPLETIONS = DOCS.parent / "completions"
README = DOCS.parent / "README.md"
REPO_BLOB_BASE = "https://git.rootiest.dev/rootiest/fish-config/src/branch/main/"
SLUG_DIR = "reference"
# File-tree branches whose real directory contents get listed inline on the
@@ -80,10 +82,104 @@ def _with_abbreviations(body: str, abbrs: dict[str, list[dict]]) -> str:
for cat, table in rendered_abbrs.items():
placeholder = f"<!-- GENERATED: {cat} -->"
body = body.replace(placeholder, table)
return body
TOC_PLACEHOLDER = "<!-- GENERATED: toc -->"
TOC_SKIP_STEMS = {"index"}
def _build_toc(root: Path) -> str:
"""Render the section list for docs/manual/00-table-of-contents.md.
Walks the same tree `build_concat` does, so it can never drift from the
man page's actual section order. `index.md` and the `00-*` front-matter
pages (Name, Synopsis, this page) sit before section 1 and are excluded,
same as any `man: false` page (currently only 404).
"""
lines: list[str] = []
n = 0
for path, depth in mt.walk(root):
rel = path.relative_to(root)
# len(rel.parts) == 1 means a root-level file, not a directory's own
# index page (e.g. 04-abbreviations/index.md), which must keep its
# own numbered line even though its stem is also "index".
if depth == 0 and len(rel.parts) == 1 and (rel.stem in TOC_SKIP_STEMS or rel.stem.startswith("00-")):
continue
fm, _ = mt.parse(path)
if not fm.get("man", True):
continue
title = fm.get("title", path.stem)
if depth == 0:
n += 1
lines.append(f" {n}. {title}")
else:
lines.append(f" - {title}")
return "\n".join(lines)
def _with_toc(body: str, root: Path) -> str:
"""Inject the `<!-- GENERATED: toc -->` placeholder with the built section list."""
return body.replace(TOC_PLACEHOLDER, _build_toc(root)) if TOC_PLACEHOLDER in body else body
README_LINK_RE = re.compile(r"\]\((?!https?://|#|mailto:)([^)]+)\)")
README_FENCE_RE = re.compile(r"```[^\n]*\n(.*?)```\n?", re.DOTALL)
README_PLACEHOLDER_RE = re.compile(r"<!-- README: (.+?) -->")
def _rewrite_repo_links(text: str) -> str:
"""Point a README-relative link (`CONTRIBUTING.md`, `LICENSE`) at its file on Gitea."""
return README_LINK_RE.sub(lambda m: f"]({REPO_BLOB_BASE}{m.group(1)})", text)
def _defence(text: str) -> str:
"""Rewind a README fenced code block into the manual's indented-block form.
`docs/manual` bodies are authored man-page style (4-space indent), never
fenced: `codespans`/pandoc pair backticks per line, and a fence line's
triple backtick throws that count off. README.md is ordinary markdown
and fences its examples, so an injected section is converted back.
"""
def repl(m: re.Match) -> str:
block = m.group(1).rstrip("\n")
return "\n".join(" " + line for line in block.split("\n")) + "\n"
return README_FENCE_RE.sub(repl, text)
@functools.lru_cache(maxsize=1)
def _readme_sections() -> dict[str, str]:
"""Split README.md into {H2 heading: body}, links rewritten to point at the repo.
Lets a manual stub pull one README section in verbatim via a
`<!-- README: <Heading> -->` placeholder, so the README stays the single
source of truth for sections that describe the repo itself rather than
the shell config (Testing, Contributing, Attribution, License).
"""
sections: dict[str, str] = {}
heading: str | None = None
lines: list[str] = []
for line in README.read_text().split("\n") + ["## "]:
if line.startswith("## "):
if heading is not None:
body = "\n".join(lines).strip()
if body.endswith("---"):
body = body[:-3].rstrip()
sections[heading] = _defence(_rewrite_repo_links(body))
heading = line[3:].strip()
lines = []
else:
lines.append(line)
return sections
def _with_readme(body: str) -> str:
"""Inject `<!-- README: Heading -->` placeholders with that README section's body."""
return README_PLACEHOLDER_RE.sub(lambda m: _readme_sections().get(m.group(1), ""), body)
def build_concat(root: Path) -> str:
"""Concatenate the manual into one ordered markdown document.
@@ -123,6 +219,8 @@ def build_concat(root: Path) -> str:
elif "04-abbreviations" in path.parts:
abbrs = mt.parse_abbreviations(DOCS.parent / "conf.d")
body = _with_abbreviations(body, abbrs)
body = _with_readme(body)
body = _with_toc(body, root)
if body:
body = re.sub(r"<LinkButton.*?</LinkButton>\n*", "", body, flags=re.DOTALL)
body = re.sub(r"<CardGrid.*?</CardGrid>\n*", "", body, flags=re.DOTALL)
@@ -749,6 +847,7 @@ def build_site(root: Path, out: Path) -> list[dict]:
if "04-abbreviations" in path.parts:
abbrs = mt.parse_abbreviations(DOCS.parent / "conf.d")
body = _with_abbreviations(body, abbrs)
body = _with_readme(body)
target.parent.mkdir(parents=True, exist_ok=True)
body = _inject_subheading_cards(body)
_write_prettified(target, _page_fm(fm), prettify(body))
+2169 -2546
View File
File diff suppressed because it is too large Load Diff
+19
View File
@@ -403,4 +403,23 @@ site=## The documentation website
source=## Reading the source directly
raw-source=## Reading the source directly
# ── Section 14: Testing ───────────────────────────────────────
testing=# 14. TESTING
tests=# 14. TESTING
# ── Section 15: Contributing ──────────────────────────────────
contributing=# 15. CONTRIBUTING
contribute=# 15. CONTRIBUTING
forge=# 15. CONTRIBUTING
# ── Section 16: Attribution ───────────────────────────────────
attribution=# 16. ATTRIBUTION
credits=# 16. ATTRIBUTION
# ── Section 17: License ───────────────────────────────────────
license=# 17. LICENSE
licensing=# 17. LICENSE
agpl=# 17. LICENSE
copyright=# 17. LICENSE
+79 -46
View File
@@ -82,52 +82,54 @@ The configuration uses a structured file tree:
# TABLE OF CONTENTS
1. Configuration Variables
2. PATH Setup
3. Key Bindings
4. Abbreviations
4.1 Editors
4.2 Navigation and Listing
4.3 Git
4.4 Terminal Windows, Tabs, and Panes
4.5 Chezmoi
4.6 Docker
4.7 Systemctl
4.8 AI Assistants
4.9 History Expansion
4.10 Miscellaneous
4.11 Shell Aliases
5. Functions Reference
5.1 File and Directory
5.2 Navigation
5.3 Editors and Viewers
5.4 Git and Version Control
5.5 Package Management
5.6 Dependency Management
5.7 System and Monitoring
5.8 Terminal Management
5.9 Clipboard
5.10 Network
5.11 Pager and Logging
5.12 AI and Developer Tools
5.13 Media and Utilities
5.14 Miscellaneous
6. Dependency Catalog
7. Customization
8. Fisher Plugins
9. Installation
10. Personalization
11. Troubleshooting
11.1 Uninstalling and Reverting to Backup
11.2 Fish Version Requirement
11.3 Enable or Disable Session Logging
11.4 Change or Disable the Greeting
11.5 Secrets and Machine-Local Configuration
11.6 Tool Init Does Nothing (Return Sentinel)
11.7 Missing Dependencies
11.8 Vi Mode Keybindings
11.9 What's with the C1-C6 stuff?
12. Viewing This Manual
1. Configuration Variables
2. PATH Setup
3. Key Bindings
4. Abbreviations
- Editors
- Navigation and Listing
- Git
- Terminal Windows, Tabs, and Panes
- Chezmoi
- Docker
- Systemctl
- AI Assistants
- History Expansion
- Miscellaneous
- Shell Aliases
5. Functions Reference
- File and Directory
- Navigation
- Editors and Viewers
- Git and Version Control
- Package Management
- Dependency Management
- System and Monitoring
- Terminal Management
- Clipboard
- Network
- Pager and Logging
- AI and Developer Tools
- Media and Utilities
- Miscellaneous
6. Dependency Catalog
7. Customization
8. Components Reference
- C1 — Command Shadows
- C2 — Startup Side-Effects
- C3 — Key and Environment Overrides
- C4 — Terminal and Tool Integration
- C5 — Logging and Capture
- C6 — Greeting and First-Run UI
9. Fisher Plugins
10. Installation
11. Personalization
12. Troubleshooting
13. Viewing This Manual
14. Testing
15. Contributing
16. Attribution
17. License
---
@@ -4309,3 +4311,34 @@ to correct its documentation, open the function itself:
The files under `docs/manual/05-functions/` carry only the category
titles, ordering, and search keywords.
# 14. TESTING
fish tests/run-tests.fish
Runs before every push (and gates the [documentation build](https://git.rootiest.dev/rootiest/fish-config/src/branch/main/.github/workflows/ci.yml) in CI, so a broken config can't get published): syntax-lints every `.fish` file, then loads the config in an isolated `HOME`/XDG sandbox — never this checkout itself, since it doubles as a real `~/.config/fish` — and runs functional checks against foundational behavior (XDG/PATH/CDPATH setup, key bindings, abbreviations, core functions, the opinionated-component registry, and more).
# 15. CONTRIBUTING
Interested in contributing? See [`CONTRIBUTING.md`](https://git.rootiest.dev/rootiest/fish-config/src/branch/main/CONTRIBUTING.md) for the
branching/PR workflow, commit conventions, fish coding standards, and the
docs/testing pipeline this repo follows.
**Preferred forge:** [git.rootiest.dev/rootiest/fish-config](https://git.rootiest.dev/rootiest/fish-config)
is the base repository. [github.com/rootiest/fish-config](https://github.com/rootiest/fish-config)
is a push-mirror of it — identical content, but one-way and read-only from a
contributor's perspective. Branches, forks, and merges made on the GitHub
side aren't fed back upstream, so they risk being silently overwritten by
the next mirror push. Until two-way sync exists, please fork, branch, and
open issues/PRs from the Gitea repository rather than the GitHub mirror.
# 16. ATTRIBUTION
The core of the [Zoxide integration](https://fish.rootiest.fyi/02-path-setup/) in this repository was originally adapted from the [icezyclon/zoxide.fish](https://github.com/icezyclon/zoxide.fish) plugin (MIT Licensed) and has since been heavily customized for performance and Fish 4.x compatibility.
# 17. LICENSE
Copyright (C) 2026 Rootiest
This project is licensed under the **GNU Affero General Public License v3.0 or later** (AGPLv3+).
See the [LICENSE](https://git.rootiest.dev/rootiest/fish-config/src/branch/main/LICENSE) file for the full license text.
+1 -46
View File
@@ -7,51 +7,6 @@ sidebar:
order: 4
---
1. Configuration Variables
2. PATH Setup
3. Key Bindings
4. Abbreviations
4.1 Editors
4.2 Navigation and Listing
4.3 Git
4.4 Terminal Windows, Tabs, and Panes
4.5 Chezmoi
4.6 Docker
4.7 Systemctl
4.8 AI Assistants
4.9 History Expansion
4.10 Miscellaneous
4.11 Shell Aliases
5. Functions Reference
5.1 File and Directory
5.2 Navigation
5.3 Editors and Viewers
5.4 Git and Version Control
5.5 Package Management
5.6 Dependency Management
5.7 System and Monitoring
5.8 Terminal Management
5.9 Clipboard
5.10 Network
5.11 Pager and Logging
5.12 AI and Developer Tools
5.13 Media and Utilities
5.14 Miscellaneous
6. Dependency Catalog
7. Customization
8. Fisher Plugins
9. Installation
10. Personalization
11. Troubleshooting
11.1 Uninstalling and Reverting to Backup
11.2 Fish Version Requirement
11.3 Enable or Disable Session Logging
11.4 Change or Disable the Greeting
11.5 Secrets and Machine-Local Configuration
11.6 Tool Init Does Nothing (Return Sentinel)
11.7 Missing Dependencies
11.8 Vi Mode Keybindings
11.9 What's with the C1-C6 stuff?
12. Viewing This Manual
<!-- GENERATED: toc -->
---
+13
View File
@@ -0,0 +1,13 @@
---
title: Testing
manTitle: 14. TESTING
sidebar:
order: 18
helpKeywords:
- testing
- tests
- test-suite
- run-tests
---
<!-- README: Testing -->
+15
View File
@@ -0,0 +1,15 @@
---
title: Contributing
manTitle: 15. CONTRIBUTING
sidebar:
order: 19
helpKeywords:
- contributing
- contribute
- pull-request
- fork
- issues
- forge
---
<!-- README: Contributing -->
+12
View File
@@ -0,0 +1,12 @@
---
title: Attribution
manTitle: 16. ATTRIBUTION
sidebar:
order: 20
helpKeywords:
- attribution
- credits
- zoxide
---
<!-- README: Attribution -->
+13
View File
@@ -0,0 +1,13 @@
---
title: License
manTitle: 17. LICENSE
sidebar:
order: 21
helpKeywords:
- license
- licensing
- agpl
- copyright
---
<!-- README: License -->
+5
View File
@@ -28,6 +28,11 @@ export default defineConfig({
label: 'Gitea',
href: 'https://git.rootiest.dev/rootiest/fish-config',
},
{
icon: 'github',
label: 'GitHub',
href: 'https://github.com/rootiest/fish-config',
},
],
components: {
SocialIcons: './src/components/starlight/SocialIcons.astro',
+5 -1
View File
@@ -2,7 +2,11 @@
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Accent{color:#ff004c}
.ColorScheme-Text{color:#ff004c}
</style>
</defs>
<path fill="currentColor" d="M1595.4 0c2.1 3.3 7.6 2 11 2 184 1.9 408.1 39.6 576.4 115.6 21.9 9.9 41.4 24.3 62.6 35.4 7.5 3.9 31.4 10.3 32.1 18.1.3 3.1-1.4 6.6-4.1 8-4.9 2.5-41.8-13-50.4-15.6-43.5-13.4-89.2-27.2-133.1-38.9-37.5-10-79-23.5-117.6-16.7-6.4 15 20.6 16.7 24.2 22.1s2.5 6.9-1.8 5.9c-25.1-5.8-61.6-32.7-87.9-44.1-181.7-79.1-436.4-32-621.8 18.9-62.2 17.1-134.7 38.6-193.5 64.5-6.5 2.8-26.5 11.6-30.8 15.2-5.8 4.7-6.3 15.3 0 19.6s21.8 1.6 29.8 2.2c60.4 4.1 109.5-1.3 169.9 14.1 32.2 8.2 75.3 25 99 49 13.2 13.4-9.9 11.2-18.8 10.8-26.4-1.1-53.4-6.9-79.9-8.1-359.5-15.3-709.4 225.7-883.4 528.7-39.7 69.1-86 168.1-104.7 245.3-2.5 10.2-4.8 30.5 11.9 28.1 4.1-.6 27.2-26.6 32.1-32 19-21 35.6-44.5 54.9-65.1 49.2-52.5 133-106.5 200.7-131.3 9.8-3.6 21.1-7.4 29.3 1.5 1.2 5.4-65.6 70-75 80.8-150.4 171.5-255.6 462.1-269.1 688.9-2 33.9-3.9 58.7-7.7 92.3-5 45.3.9 103.6 6 149.5 15.1 137.1 41.9 256.6 107.4 378.5 31.1 57.9 71.4 117.9 123.4 158.6.2-44.3-9.3-88.7-13-133-11.8-142 20.4-314.7 69.5-448.5.6-1.7-.2-6.2 3.5-4.4 8.6 4.1 6.2 25.5 7 33 5.2 43.5 4.9 86.4 8 130 21.2 296.4 113.7 587.3 363.3 766.6 117.3 84.3 282 143.6 422.6 175.4 48.2 10.9 110.9 26.2 159.3 30.7 9.9.9 28.4 2.4 16.8-10.8s-51.6-26.9-68.1-35.9c-81.7-45-140-102.4-203.9-168.1-5.7-5.8-36.5-28.3-30-36.9 82.5 57.3 163.1 113.7 258.4 148.5 234.9 85.7 522.2 75 731-70.1 81.2-56.5 139.1-110 198.5-189.5 11.7-15.6 43.6-53 17-66.9-81.7 3.4-160.6-6.1-238-32-32.1-10.8-72.2-25.3-102.9-39.1s-40.9-19.2-27.1-20.9c80.7 2.5 170.3-9.8 242.3-47.6 13-6.8 58-35.1 63.1-46.8 8.7-20-12.2-13.7-21.5-13.5-67 1.2-135.7 14-202 12-87.1-2.7-190.5-19.5-271-53-96.7-40.3-177.4-108.6-256.2-175.9-4.2-6.2 4.1-14.8 11-13 36.7 14.2 75.8 21.2 114.5 27.7 86.4 14.3 178 24.9 264.3 5 5-1.2 29.6-6.3 30.4-9.7-8.6-15.9-21.4-20.4-37.9-24-81.9-18-164.5-27.7-246.9-49.1-154.8-40.2-344-122.2-426-267.9-5.7-10.2-18.2-35.6 5.6-23.6 14.8 7.5 37.4 29 54.7 39.3 117.7 70.4 312.2 80.7 444.7 55.4 13-2.5 64.8-9.1 41-29.1s-56.3-29.3-71.7-36.3c-179.8-82-393.1-100.3-578.4-165.6-233-82.1-413.3-209.7-545.8-420.2-26.4-41.9-48-87.4-65.2-133.8 10.7.2 11 12 16 19 14.5 20.1 69.2 63.3 91 81 281.1 227.1 683.7 237.1 1020.9 333 80.4 22.9 187.3 55.5 261.4 92.6 16.9 8.4 32 20.5 48.6 29.4 58.2 31 104.9 55.4 158.7 95.3 35.2 26.1 64.9 60.7 106.9 75.1 97.7 33.4 169.4 16.3 265.5 24.5 37.3 3.2 11.7 26.7 3.2 45.3-48.7 106.4-25.7 198.6 32.9 294.6 38.9 63.7 125.6 144.1 206.9 129.2 74.9-13.7 115.4-158 88.3-220.5s-28-33.5-46.2-25.4c-26.8 11.9-51.8 78.2-53.2 106.8-1.8 3-5.6 5.6-9.1 3.1-2.1-3-3.2-6.7-3.7-10.3-6.5-46.6 1.8-85.2 3.9-129.7.9-19.5-2.9-24.7-23.1-23.1-14 1.1-49.1 22.9-50.4.7 32.1-101.4 57-212.9 120.9-300.1 57.4-78.4 218.2-105.9 308.9-139 40.5-14.8 81.1-31.5 120.2-49.8 7.4-3.4 34.8-19.9 39.4-18.9s4.4 3.2 5.9 5.2v8c-26.1 37.3-53.7 70.8-76.3 110.6-52.8 92.8-89.8 196.9-140.6 291.4-35.6 66.1-51.1 76.5-59 157-31.1 314.5-173.9 594.9-419.1 794.8-212.4 173.2-477.4 270.8-750 298l-133 10c-35.9-.9-72.1 1.2-108 0-397.6-12.9-799.2-153.9-1100.9-414C4.9 2277.1-145.4 1511.2 147.7 877.2 251.2 653.3 437.2 437.1 640 297.5 932.6 96.1 1223.4 8.1 1579.4 0z" class="ColorScheme-Accent"/>
<path fill="currentColor" class="ColorScheme-Accent" d="M1595.4 0c2.1 3.3 7.6 2 11 2 184 1.9 408.1 39.6 576.4 115.6 21.9 9.9 41.4 24.3 62.6 35.4 7.5 3.9 31.4 10.3 32.1 18.1.3 3.1-1.4 6.6-4.1 8-4.9 2.5-41.8-13-50.4-15.6-43.5-13.4-89.2-27.2-133.1-38.9-37.5-10-79-23.5-117.6-16.7-6.4 15 20.6 16.7 24.2 22.1s2.5 6.9-1.8 5.9c-25.1-5.8-61.6-32.7-87.9-44.1-181.7-79.1-436.4-32-621.8 18.9-62.2 17.1-134.7 38.6-193.5 64.5-6.5 2.8-26.5 11.6-30.8 15.2-5.8 4.7-6.3 15.3 0 19.6s21.8 1.6 29.8 2.2c60.4 4.1 109.5-1.3 169.9 14.1 32.2 8.2 75.3 25 99 49 13.2 13.4-9.9 11.2-18.8 10.8-26.4-1.1-53.4-6.9-79.9-8.1-359.5-15.3-709.4 225.7-883.4 528.7-39.7 69.1-86 168.1-104.7 245.3-2.5 10.2-4.8 30.5 11.9 28.1 4.1-.6 27.2-26.6 32.1-32 19-21 35.6-44.5 54.9-65.1 49.2-52.5 133-106.5 200.7-131.3 9.8-3.6 21.1-7.4 29.3 1.5 1.2 5.4-65.6 70-75 80.8-150.4 171.5-255.6 462.1-269.1 688.9-2 33.9-3.9 58.7-7.7 92.3-5 45.3.9 103.6 6 149.5 15.1 137.1 41.9 256.6 107.4 378.5 31.1 57.9 71.4 117.9 123.4 158.6.2-44.3-9.3-88.7-13-133-11.8-142 20.4-314.7 69.5-448.5.6-1.7-.2-6.2 3.5-4.4 8.6 4.1 6.2 25.5 7 33 5.2 43.5 4.9 86.4 8 130 21.2 296.4 113.7 587.3 363.3 766.6 117.3 84.3 282 143.6 422.6 175.4 48.2 10.9 110.9 26.2 159.3 30.7 9.9.9 28.4 2.4 16.8-10.8s-51.6-26.9-68.1-35.9c-81.7-45-140-102.4-203.9-168.1-5.7-5.8-36.5-28.3-30-36.9 82.5 57.3 163.1 113.7 258.4 148.5 234.9 85.7 522.2 75 731-70.1 81.2-56.5 139.1-110 198.5-189.5 11.7-15.6 43.6-53 17-66.9-81.7 3.4-160.6-6.1-238-32-32.1-10.8-72.2-25.3-102.9-39.1s-40.9-19.2-27.1-20.9c80.7 2.5 170.3-9.8 242.3-47.6 13-6.8 58-35.1 63.1-46.8 8.7-20-12.2-13.7-21.5-13.5-67 1.2-135.7 14-202 12-87.1-2.7-190.5-19.5-271-53-96.7-40.3-177.4-108.6-256.2-175.9-4.2-6.2 4.1-14.8 11-13 36.7 14.2 75.8 21.2 114.5 27.7 86.4 14.3 178 24.9 264.3 5 5-1.2 29.6-6.3 30.4-9.7-8.6-15.9-21.4-20.4-37.9-24-81.9-18-164.5-27.7-246.9-49.1-154.8-40.2-344-122.2-426-267.9-5.7-10.2-18.2-35.6 5.6-23.6 14.8 7.5 37.4 29 54.7 39.3 117.7 70.4 312.2 80.7 444.7 55.4 13-2.5 64.8-9.1 41-29.1s-56.3-29.3-71.7-36.3c-179.8-82-393.1-100.3-578.4-165.6-233-82.1-413.3-209.7-545.8-420.2-26.4-41.9-48-87.4-65.2-133.8 10.7.2 11 12 16 19 14.5 20.1 69.2 63.3 91 81 281.1 227.1 683.7 237.1 1020.9 333 80.4 22.9 187.3 55.5 261.4 92.6 16.9 8.4 32 20.5 48.6 29.4 58.2 31 104.9 55.4 158.7 95.3 35.2 26.1 64.9 60.7 106.9 75.1 97.7 33.4 169.4 16.3 265.5 24.5 37.3 3.2 11.7 26.7 3.2 45.3-48.7 106.4-25.7 198.6 32.9 294.6 38.9 63.7 125.6 144.1 206.9 129.2 74.9-13.7 115.4-158 88.3-220.5s-28-33.5-46.2-25.4c-26.8 11.9-51.8 78.2-53.2 106.8-1.8 3-5.6 5.6-9.1 3.1-2.1-3-3.2-6.7-3.7-10.3-6.5-46.6 1.8-85.2 3.9-129.7.9-19.5-2.9-24.7-23.1-23.1-14 1.1-49.1 22.9-50.4.7 32.1-101.4 57-212.9 120.9-300.1 57.4-78.4 218.2-105.9 308.9-139 40.5-14.8 81.1-31.5 120.2-49.8 7.4-3.4 34.8-19.9 39.4-18.9s4.4 3.2 5.9 5.2v8c-26.1 37.3-53.7 70.8-76.3 110.6-52.8 92.8-89.8 196.9-140.6 291.4-35.6 66.1-51.1 76.5-59 157-31.1 314.5-173.9 594.9-419.1 794.8-212.4 173.2-477.4 270.8-750 298l-133 10c-35.9-.9-72.1 1.2-108 0-397.6-12.9-799.2-153.9-1100.9-414C4.9 2277.1-145.4 1511.2 147.7 877.2 251.2 653.3 437.2 437.1 640 297.5 932.6 96.1 1223.4 8.1 1579.4 0z"/>
<g transform="translate(907.9791817150754, 326.150186646207) scale(105.39115723844282, 105.39115723844282)">
<path fill="currentColor" class="ColorScheme-Text" d="M9.366 2.085C9.773 2.973 10 3.96 10 5s-.227 2.027-.634 2.915C12.104 7.567 14 6.215 14 5s-1.896-2.567-4.634-2.915zM15 2.577c1.052-1.184 2.851-2.074 5-2.42v9.685c-2.149-.345-3.948-1.235-5-2.42C13.635 8.96 11.012 10 8 10c-4.418 0-8-2.239-8-5s3.582-5 8-5c3.012 0 5.635 1.04 7 2.577zM18 7V3c-1.15.23-2 1.038-2 2s.85 1.77 2 2zM2 5c0 1.27 2.077 2.696 5.032 2.958A4.973 4.973 0 0 0 8 5a4.973 4.973 0 0 0-.968-2.958C4.077 2.304 2 3.73 2 5zm3 1a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -20,7 +20,7 @@ const links = config.social || [];
return (
<a href={href} rel="me" class="sl-flex">
<span class="sr-only">{label}</span>
{customIcon ? <span class={`social-icon ${customIcon}`} aria-hidden="true" /> : <Icon name={icon} />}
{customIcon ? <span class={`social-icon ${customIcon}`} aria-hidden="true" /> : <Icon name={icon} size="1.5em" />}
</a>
);
})}
@@ -39,8 +39,12 @@ const links = config.social || [];
color: var(--sl-color-white);
}
.social-icon {
width: 1.5rem;
height: 1.5rem;
/* !important: the i-pajamas:* class comes from UnoCSS, which emits
unlayered CSS. Unlayered rules always win over anything in a
@layer regardless of specificity or source order, so a plain
override here is silently ignored no matter how it's written. */
width: 1.5rem !important;
height: 1.5rem !important;
}
}
</style>