{"id":22016014,"url":"https://github.com/micahkepe/radion","last_synced_at":"2026-02-08T07:30:58.196Z","repository":{"id":261307686,"uuid":"883877129","full_name":"micahkepe/radion","owner":"micahkepe","description":"A sleek, modern blog theme. 📡","archived":false,"fork":false,"pushed_at":"2026-01-26T20:06:26.000Z","size":51880,"stargazers_count":41,"open_issues_count":4,"forks_count":16,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-27T07:36:00.844Z","etag":null,"topics":["blog","blog-theme","giscus","markdown","static-site-generator","zola-theme"],"latest_commit_sha":null,"homepage":"https://micahkepe.com/radion","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/micahkepe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-05T18:21:27.000Z","updated_at":"2026-01-26T20:06:03.000Z","dependencies_parsed_at":"2025-05-26T21:29:44.824Z","dependency_job_id":"88e120ee-05b0-40c5-9fe0-42b3ca602bba","html_url":"https://github.com/micahkepe/radion","commit_stats":null,"previous_names":["micahkepe/radion"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/micahkepe/radion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahkepe%2Fradion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahkepe%2Fradion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahkepe%2Fradion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahkepe%2Fradion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micahkepe","download_url":"https://codeload.github.com/micahkepe/radion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micahkepe%2Fradion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29224437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T06:05:31.539Z","status":"ssl_error","status_checked_at":"2026-02-08T05:58:33.853Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","blog-theme","giscus","markdown","static-site-generator","zola-theme"],"created_at":"2024-11-30T04:31:28.980Z","updated_at":"2026-02-08T07:30:58.190Z","avatar_url":"https://github.com/micahkepe.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# radion\n\nA sleek, modern blog theme for [Zola](https://www.getzola.org/). See the live\nsite demo [here](https://micahkepe.com/radion/).\n\n\u003e **radion**\n\u003e noun\n\u003e\n\u003e 1. (_physics_) A scalar field in higher-dimensional spacetimes\n\n\u003cdetails open\u003e\n\u003csummary\u003eDark theme\u003c/summary\u003e\n\n![radion dark theme screenshot](screenshot.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eLight theme\u003c/summary\u003e\n\n![radion light theme screenshot](screenshot-light.png)\n\n\u003c/details\u003e\n\n## Features\n\n- [x] Code Snippet Clipboards\n  - [x] Line(s)-specific highlighting\n- [x] Latex Support\n- [x] Light/Dark mode support\n- [x] Search functionality\n- [x] Table of Contents option\n- [x] Footnote support\n- [x] Built-in comments option (Giscus)\n- [x] Open Graph cover image selection\n\n## Contents and Configuration Guide\n\n- [Installation](#installation)\n- [Options](#options)\n  - [Top\\-menu](#top-menu)\n  - [Title](#title)\n  - [Author Attribution](#author-attribution)\n    - [Defining a Global Default Author in config\\.toml](#defining-a-global-default-author-in-configtoml)\n    - [Defining Author(s) Per\\-Page](#defining-authors-per-page)\n  - [Favicon](#favicon)\n  - [GitHub](#github)\n  - [Fediverse and Mastodon](#fediverse-and-mastodon)\n  - [Code Snippets](#code-snippets)\n    - [Syntax Highlighting:](#syntax-highlighting)\n    - [Enhanced Codeblocks (Clipboard Support and Language Tags)](#enhanced-codeblocks-clipboard-support-and-language-tags)\n  - [LaTex Support](#latex-support)\n  - [Searchbar](#searchbar)\n  - [Light and Dark Modes](#light-and-dark-modes)\n  - [Table of Contents](#table-of-contents)\n  - [Comments](#comments)\n  - [Post Revision History](#post-revision-history)\n  - [Set Post Open Graph Image (Cover Image)](#set-post-open-graph-image-cover-image)\n  - [Custom Fonts](#custom-fonts)\n    - [Font Weights by Provider](#font-weights-by-provider)\n    - [Examples](#examples)\n- [Acknowledgements](#acknowledgements)\n\n## Installation\n\n\u003e [!IMPORTANT]\n\u003e **Requires Zola \u003e= 0.22.** For older Zola versions (0.20–0.21), use\n\u003e [v1.0.0](https://github.com/micahkepe/radion/releases/tag/v1.0.0).\n\nFirst download this theme to your `themes` directory:\n\n```bash\ncd themes\ngit clone https://github.com/micahkepe/radion\n```\n\nand then enable it in your `config.toml`:\n\n```toml\ntheme = \"radion\"\n```\n\nThis theme requires your index section (`content/_index.md`) to be paginated to\nwork:\n\n```toml\npaginate_by = 5\n```\n\nThe posts should therefore be in directly under the `content` folder.\n\nThe theme requires tags and categories taxonomies to be enabled in your\n`config.toml`:\n\n```toml\ntaxonomies = [\n    # You can enable/disable RSS\n    { name = \"categories\", feed = true },\n    { name = \"tags\", feed = true },\n]\n```\n\nIf you want to paginate taxonomies pages, you will need to overwrite the\ntemplates as it only works for non-paginated taxonomies by default.\n\n---\n\n## Options\n\n### Top-menu\n\nSet a field in `extra` with a key of `radion_menu`:\n\n```toml\nradion_menu = [\n    { url = \"$BASE_URL\", name = \"Home\" },\n    { url = \"$BASE_URL/categories\", name = \"Categories\" },\n    { url = \"$BASE_URL/tags\", name = \"Tags\" },\n    { url = \"https://google.com\", name = \"Google\" },\n]\n```\n\nIf you put `$BASE_URL` in a url, it will automatically be replaced by the actual\nsite URL.\n\n### Title\n\nThe site title is shown on the homepage. As it might be different from the\n`\u003ctitle\u003e` element that the `title` field in the config represents, you can set\nthe `radion_title` instead.\n\n### Author Attribution\n\nYou may define the author(s) of a page in either the root `config.toml` file, or\non a per-page basis in the page's frontmatter.\n\nThe order of precedence for determining the author shown in a page’s footer is:\n\n1. `page.extra.author` (highest precedence)\n2. `page.authors`\n3. `config.author` (lowest precedence, default)\n\n#### Defining a Global Default Author in `config.toml`\n\nIn `config.toml`:\n\n```toml\nauthor = \"John Smith\"\n```\n\n#### Defining Author(s) Per-Page\n\nAt the top of a page in its frontmatter (wrap this in `+++`):\n\n1. Define a single author for the page:\n\n```toml\ntitle = \"...\"\ndate = 1970-01-01\n\n[extra]\nauthor = \"John Smith\"\n```\n\nAlternatively, you can define the `page.authors` variable with a single entry:\n\n```toml\ntitle = \"...\"\ndate = 1970-01-01\nauthors = [\"John Smith\"]\n```\n\n2. Define multiple authors for a page:\n\n```toml\ntitle = \"...\"\ndate = 1970-01-01\nauthors = [\"John Smith\", \"Joe Schmoe\", \"Jane Doe\"]\n```\n\n\u003e [!NOTE]\n\u003e Do not define both `extra.author` and `authors` in the same page unless you\n\u003e want `extra.author` to take precedence.\n\n### Favicon\n\nTo change the default favicon:\n\n1. Create your own favicon folder with the following site:\n   [RealFaviconGenerator](https://realfavicongenerator.net/)\n   - Set the 'Favicon path' option to `/icons/favicon/`\n\n2. Unzip the created folder\n3. Create a `static/icons/` directory if it does not already exist\n4. Place the unzipped `favicon/` directory in `static/icons/`.\n\nBy default, favicons are enabled, however, if for some reason you would like to\ndisable favicons, set the following in your `config.toml`:\n\n```toml\n[extra]\nfavicon = false\n```\n\n### GitHub\n\nTo enable a GitHub reference link in the header, set the following in your\n`config.toml`:\n\n```toml\n[extra]\ngithub = \"https://github.com/your-github-link\"\n```\n\n### Fediverse and Mastodon\n\nIn your `config.toml` you can set options related to the Fediverse and\nexplicitly Mastodon.\n\nTo enable author attribution, set the `extra.fediverse.creator` option to your\naccount address. To enable website verification, set the\n`extra.fediverse.rel_me` option to a link to your profile.\n\nSet the `extra.mastodon` field to a link to your Mastodon account to show a\nMastodon logo with this link.\n\n```toml\n[extra]\nfediverse.creator = \"@username@my.instance.example.com\"\nfediverse.rel_me = \"https://my.instance.example.com/@username\"\nmastodon = \"https://my.instance.example.com/@username\"\n```\n\n### Code Snippets\n\n#### Syntax Highlighting:\n\nThis theme uses [giallo](https://github.com/getzola/giallo) for **class-based\nsyntax highlighting**, which was introduced in Zola 0.22 as a replacement for\n[syntect](https://github.com/trishume/syntect).\n\nIn your `config.toml`:\n\n```toml\n[markdown.highlighting]\nstyle = \"class\"\ndark_theme = \"material-theme-palenight\"\nlight_theme = \"everforest-light\"\n```\n\nThe above configuration will use the `material-theme-palenight` theme for dark\nmode and the `gruvbox-dark-medium` theme for light mode. Zola will automatically\ngenerate `giallo-dark.css` and `giallo-light.css` in the build output.\n\n##### Choosing Themes\n\n1. Browse available themes in the [giallo\n   README](https://github.com/getzola/giallo) or preview them at\n   [textmate-grammars-themes.netlify.app](https://textmate-grammars-themes.netlify.app/)\n2. Update `dark_theme` and `light_theme` with your preferred themes\n3. Run `zola serve` or `zola build` — the CSS files will be regenerated\n   automatically\n\n##### Migration from v1.0.0 (syntect)\n\nIf upgrading from [v1.0.0](https://github.com/micahkepe/radion/releases/tag/v1.0.0)\nor earlier (Zola \u003c0.22):\n\n1. Replace the old `[markdown]` highlighting config:\n\n   ```diff\n   - [markdown]\n   - highlight_code = true\n   - highlight_theme = \"css\"\n   - highlight_themes_css = [\n   -   { theme = \"one-dark\", filename = \"syntax/syntax-theme-dark.css\" },\n   -   { theme = \"gruvbox-dark\", filename = \"syntax/syntax-theme-light.css\" },\n   - ]\n   + [markdown.highlighting]\n   + style = \"class\"\n   + dark_theme = \"one-dark-pro\"\n   + light_theme = \"everforest-light\"\n   ```\n\n2. Delete the `static/syntax/` directory (old syntect CSS files)\n3. Run `zola build` to generate the new giallo CSS files\n\n#### Enhanced Codeblocks (Clipboard Support and Language Tags)\n\n```toml\n[extra]\ncodeblock = true\n```\n\n\u003e [!NOTE]\n\u003e Ligatures are disabled by default as defined in the\n\u003e [\\_theme.scss](./sass/_theme.scss) file.\n\n### LaTex Support\n\nTo enable LaTeX support with MathJax, set the following in your `config.toml`:\n\n```toml\n[extra]\nlatex = true\n```\n\n### Searchbar\n\nTo enable a searchbar at the top of the page navigation, set the following in\nyour `config.toml`:\n\n```toml\nbuild_search_index = true\n\n[search]\nindex_format = \"elasticlunr_json\"\n\n[extra]\nenable_search = true\n```\n\n### Light and Dark Modes\n\nTo set the color theme of the site, set the following in your `config.toml`:\n\n```toml\n[extra]\ntheme = \"toggle\" # options: {light, dark, auto, toggle}\n```\n\nThere are four options for the `theme` field:\n\n- `light`: Always light mode\n- `dark`: Always dark mode\n- `auto`: Automatically switch between light and dark mode based on the user's\n  system preferences\n- `toggle`: Allow the user to toggle between light and dark mode\n\n### Table of Contents\n\nTo enable a table of contents on a page, add the following to the front matter\nof the page:\n\n```toml\n[extra]\ntoc = true\n```\n\n### Comments\n\n\u003e [!NOTE]\n\u003e Giscus comments assumes that you are hosting the blog site via GitHub Pages\n\u003e and thus have access to GitHub Discussions.\n\nFirst, follow the instructions at [giscus.app](https://giscus.app/).\nThis includes installing the Giscus app and enabling discussions on the\nGitHub repository that you host the website code. Additionally, fill in the\nrepository path in the prompt. Then, from the generated script, fill in the\ncorresponding values in the `config.toml`:\n\n```toml\n[extra]\ncomments = true  # {true, false}; sets global enabling of comments by default\ngiscus_repo = \"FILL ME IN\"\ngiscus_repo_id = \"FILL ME IN\"\ngiscus_data_category_id = \"FILL ME IN\"\n# giscus_data_category = \"General\" # Default to \"General\"\n```\n\nComments can be enabled or disabled on a per page basis by editing the page's\nfront matter. For example, to disable comments on a specific post:\n\n```toml\n[extra]\ncomments = false\n```\n\nThe `config.toml` value for `comments` takes precedence and priority. For\nexample, if you globally disable comments in your `config.toml` by setting\n`comments = false`, then trying to enabling comments through a page's front\nmatter will have no effect.\n\n### Post Revision History\n\nTo enable revision history links that allow readers to view the commit history\nfor individual posts, configure the following in your `config.toml`:\n\n```toml\n[extra]\n# Enable revision history globally\nrevision_history = true\n# Your blog's GitHub repository URL\nblog_github_repo_url = \"https://github.com/username/repository-name\"\n```\n\nRevision history can be enabled or disabled on a per-page basis by adding the\nfollowing to a page's front matter:\n\n```toml\n[extra]\nrevision_history = true  # or false to disable for this page\n```\n\nWhen enabled, a \"(revision history)\" link will appear in the page footer that\nlinks directly to the GitHub commit history for that specific content file,\nallowing readers to see how the post has evolved over time.\n\n### Set Post Open Graph Image (Cover Image)\n\n[Open Graph](https://ogp.me/) is a standard for embedding rich previews of\ncontent on the Internet. It is used by social media platforms like Facebook,\nTwitter, and LinkedIn to display a preview of a page when a user shares the\npage on their social media network.\n\nFor example, to set the Open Graph image for a post `my-post` to be the page\nasset `cover.png`, add the following to the front matter of the post:\n\n1. Make sure the image is located in the page's content directory (i.e.\n   `content/my-post/`. For example:\n\n   ```\n   content/\n   └── my-post/\n       ├── index.md\n       ├── cover.png        # Your cover image\n       └── assets/\n           └── other-image.jpg\n   ```\n\n   or\n\n   ```\n   content/\n   └── my-post/\n       ├── index.md\n       └── assets/\n           ├── other-image.jpg\n           └── cover.png    # Your cover image\n   ```\n\n2. Add the following to the front matter of the post:\n\n```toml\n[extra]\ncover_image = \"cover.png\"\n```\n\n\u003e [!NOTE]\n\u003e The image must be located within the page's content directory and\n\u003e `cover_image` expects just the filename of the image (e.g., `\"cover.png\"`, not\n\u003e a path like `\"assets/cover.png\"`). The first filename match will be used.\n\n### Custom Fonts\n\nCurrently three font CDN sites are supported:\n\n1. [Google Font (`\"googlefont\"`)](https://fonts.google.com/): Fonts from `fonts.google.com`\n2. [Fontsource (`\"fontsource\"`)](https://fontsource.org/): Self-hosted fonts from `fontsource.org`. Uses WOFF2 files.\n3. [ZeoSeven Font (`\"zeoseven\"`)](https://fonts.zeoseven.com/): Fonts from\n   `fonts.zeoseven.com`. Requires a `font_id` for URL construction.\n\nTo configure, add entries under `[extra]` in your `config.toml`:\n\n| Option          | Type   | Default            | Description                                                                |\n| --------------- | ------ | ------------------ | -------------------------------------------------------------------------- |\n| `font_cdn`      | String | `\"googlefont\"`     | Font provider: `\"googlefont\"`, `\"fontsource\"`, `\"zeoseven\"`, or `\"custom\"` |\n| `font_name`     | String | `\"JetBrains Mono\"` | Font family name (e.g., `\"Inter\"`, `\"Roboto\"`)                             |\n| `font_weights`  | Array  | (_See below_)      | Weights to load (provider-specific format)                                 |\n| `font_display`  | String | `\"swap\"`           | CSS `font-display` value: `\"swap\"`, `\"block\"`, `\"auto\"`, etc.              |\n| `font_id`       | Number | _None_             | **ZeoSeven only**: Numeric ID from font URL                                |\n| `font_css_urls` | Array  | _None_             | **Custom only**: Array of CSS URLs for font definitions                    |\n\n#### Font Weights by Provider\n\n| Provider     | Format           | Example      |\n| ------------ | ---------------- | ------------ |\n| Google Fonts | Array of numbers | `[400, 700]` |\n| Fontsource   | Array of strings | `[\"main\"]`   |\n| ZeoSeven     | Array of numbers | `[400, 700]` |\n\n#### Examples\n\n```toml\n# Google Fonts\n[extra]\nfont_cdn = \"googlefont\"\nfont_name = \"Inter\"\nfont_weights = [300, 400, 500, 700]\nfont_display = \"swap\"\n\n# Fontsource\n[extra]\nfont_cdn = \"fontsource\"\nfont_name = \"JetBrains Mono\"\nfont_weights = [\"main\"]\n\n# ZeoSeven\n[extra]\nfont_cdn = \"zeoseven\"\nfont_name = \"Custom Font\"\nfont_id = 443\nfont_weights = [400, 700]\n\n# Custom CSS\n[extra]\nfont_cdn = \"custom\"\nfont_name = \"My Custom Font\"\nfont_css_urls = [\n    \"https://example.com/fonts/custom-font.css\",\n    \"https://cdn.example.com/typography.css\"\n]\n```\n\n---\n\n## Acknowledgements\n\nLots of inspiration and code snippets taken from these awesome Zola themes:\n\n- [`after-dark`](https://github.com/getzola/after-dark) by\n  [Vincent Prouillet](https://www.vincentprouillet.com/)\n\n- [`apollo`](https://github.com/not-matthias/apollo/tree/main) by\n  [not-matthias](https://github.com/not-matthias)\n\n- [`redux`](https://github.com/SeniorMars/redux) by\n  [SeniorMars](https://github.com/SeniorMars).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicahkepe%2Fradion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicahkepe%2Fradion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicahkepe%2Fradion/lists"}