🎉 Initial commit
1
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
github: jpanther
|
47
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
name: 🐛 Bug Report
|
||||||
|
description: Report a new problem encountered using the theme
|
||||||
|
labels: [bug]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report! Before proceeding, please check that a similar issue has not already been reported. [View open issues](https://github.com/jpanther/lynx/issues)
|
||||||
|
- type: textarea
|
||||||
|
id: what-happened
|
||||||
|
attributes:
|
||||||
|
label: What happened?
|
||||||
|
description: Describe the issue and how to reproduce it, including what you expected to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: theme-version
|
||||||
|
attributes:
|
||||||
|
label: Theme version
|
||||||
|
description: What version of the theme are you using?
|
||||||
|
placeholder: eg. v1.1.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: hugo-version
|
||||||
|
attributes:
|
||||||
|
label: Hugo version
|
||||||
|
description: What version of Hugo are you using?
|
||||||
|
placeholder: eg. v0.86.1
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: browsers
|
||||||
|
attributes:
|
||||||
|
label: What browsers are you seeing the problem on?
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Firefox
|
||||||
|
- Chrome
|
||||||
|
- Safari
|
||||||
|
- Microsoft Edge
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant Hugo log output
|
||||||
|
description: Please copy and paste any relevant Hugo log output. This will be automatically formatted into code, so no need for backticks.
|
||||||
|
render: shell
|
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
blank_issues_enabled: true
|
||||||
|
contact_links:
|
||||||
|
- name: 💡 Feature Request
|
||||||
|
url: https://github.com/jpanther/lynx/discussions
|
||||||
|
about: Request and discuss enhancements using GitHub Discussions
|
||||||
|
- name: 🙋♀️ Question
|
||||||
|
url: https://github.com/jpanther/lynx/discussions
|
||||||
|
about: Please ask and answer general questions using GitHub Discussions
|
45
.github/ISSUE_TEMPLATE/i18n-issue.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
name: 💬 i18n Issue
|
||||||
|
description: Report an issue with i18n or translations
|
||||||
|
labels: [i18n]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this issue report!
|
||||||
|
- type: input
|
||||||
|
id: language
|
||||||
|
attributes:
|
||||||
|
label: Language
|
||||||
|
description: Which language are you using?
|
||||||
|
placeholder: eg. English
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: issue
|
||||||
|
attributes:
|
||||||
|
label: What's the issue?
|
||||||
|
description: Describe the translation issue and how to reproduce it.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: theme-version
|
||||||
|
attributes:
|
||||||
|
label: Theme version
|
||||||
|
description: What version of the theme are you using?
|
||||||
|
placeholder: eg. v1.1.0
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: hugo-version
|
||||||
|
attributes:
|
||||||
|
label: Hugo version
|
||||||
|
description: What version of Hugo are you using?
|
||||||
|
placeholder: eg. v0.86.1
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant Hugo log output
|
||||||
|
description: Please copy and paste any relevant Hugo log output. This will be automatically formatted into code, so no need for backticks.
|
||||||
|
render: shell
|
6
.github/labeller.yml
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
i18n:
|
||||||
|
- i18n/*
|
||||||
|
|
||||||
|
documentation:
|
||||||
|
- "*.md"
|
||||||
|
- exampleSite/content/*
|
35
.github/workflows/gh-pages.yml
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
name: GitHub Pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- stable
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-deploy:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2
|
||||||
|
with:
|
||||||
|
hugo-version: "latest"
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ./exampleSite
|
||||||
|
run: hugo --minify --themesDir ../.. --baseURL https://jpanther.github.io/lynx/
|
||||||
|
|
||||||
|
- name: Deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v3
|
||||||
|
if: ${{ github.ref == 'refs/heads/stable' }}
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
publish_branch: gh-pages
|
||||||
|
publish_dir: ./exampleSite/public
|
17
.github/workflows/label.yml
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name: Labeller
|
||||||
|
|
||||||
|
on: [pull_request_target]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
label:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Label
|
||||||
|
uses: actions/labeler@v3
|
||||||
|
with:
|
||||||
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
configuration-path: .github/labeller.yml
|
24
.github/workflows/test-build.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: Test Build
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v2
|
||||||
|
with:
|
||||||
|
hugo-version: "latest"
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ./exampleSite
|
||||||
|
run: hugo --minify --themesDir ../.. --baseURL https://jpanther.github.io/lynx/
|
144
.gitignore
vendored
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node,
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,
|
||||||
|
|
||||||
|
### Node ###
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# Snowpack dependency directory (https://snowpack.dev/)
|
||||||
|
web_modules/
|
||||||
|
|
||||||
|
# TypeScript cache
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Microbundle cache
|
||||||
|
.rpt2_cache/
|
||||||
|
.rts2_cache_cjs/
|
||||||
|
.rts2_cache_es/
|
||||||
|
.rts2_cache_umd/
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
.env.test
|
||||||
|
.env.production
|
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/)
|
||||||
|
.cache
|
||||||
|
.parcel-cache
|
||||||
|
|
||||||
|
# Next.js build output
|
||||||
|
.next
|
||||||
|
out
|
||||||
|
|
||||||
|
# Nuxt.js build / generate output
|
||||||
|
.nuxt
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Gatsby files
|
||||||
|
.cache/
|
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||||
|
# public
|
||||||
|
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist
|
||||||
|
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/
|
||||||
|
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/
|
||||||
|
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/
|
||||||
|
|
||||||
|
# TernJS port file
|
||||||
|
.tern-port
|
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
|
.vscode-test
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
||||||
|
|
||||||
|
### Node Patch ###
|
||||||
|
# Serverless Webpack directories
|
||||||
|
.webpack/
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/hugo
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=hugo
|
||||||
|
|
||||||
|
### Hugo ###
|
||||||
|
# Generated files by hugo
|
||||||
|
/public/
|
||||||
|
/resources/_gen/
|
||||||
|
|
||||||
|
# Executable may be added to repository
|
||||||
|
hugo.exe
|
||||||
|
hugo.darwin
|
||||||
|
hugo.linux
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/hugo
|
15
.prettierrc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"htmlWhitespaceSensitivity": "css",
|
||||||
|
"printWidth": 100,
|
||||||
|
"singleQuote": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ["*.html"],
|
||||||
|
"options": {
|
||||||
|
"parser": "go-template"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
CHANGELOG.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Built with Tailwind CSS JIT for minified stylesheets without any excess code
|
||||||
|
- Fully responsive layout
|
||||||
|
- Dark mode (auto-switching based upon browser)
|
||||||
|
- SVG icons from FontAwesome 5
|
||||||
|
- HTML and Emoji support
|
||||||
|
- Fathom Analytics and Google Analytics support
|
||||||
|
- Favicons support
|
53
CONTRIBUTING.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
## How to contribute to Lynx
|
||||||
|
|
||||||
|
### Bugs & other issues
|
||||||
|
|
||||||
|
#### Found a bug? 🐛
|
||||||
|
|
||||||
|
- **Ensure the bug has not already been reported** by searching [GitHub Issues](https://github.com/jpanther/lynx/issues). If there's already an open issue, feel free to add any extra information you might have about the issue.
|
||||||
|
- If you're unable to find an open issue matching the problem, [open a new one](https://github.com/jpanther/lynx/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample**, **screenshot**, or a **test case** demonstrating the expected behavior that is not occurring.
|
||||||
|
- Where possible, use the bug report templates to create the issue. Avoid including descriptions like "bug", "feature", etc in the issue title as these will be handled by labels.
|
||||||
|
|
||||||
|
#### Have a patch that fixes an issue?
|
||||||
|
|
||||||
|
- Great! Open a new GitHub pull request with the patch.
|
||||||
|
- All development occurs on the `dev` branch and new PRs should be forked from here.
|
||||||
|
- The command `npm run example` can be used to test local changes using the example site.
|
||||||
|
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
|
||||||
|
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
|
||||||
|
|
||||||
|
### New features & enhancements
|
||||||
|
|
||||||
|
#### Do you intend to add a new feature, or change an existing one?
|
||||||
|
|
||||||
|
- Enhancements are welcome but before implementing any features, be sure to suggest your change by opening a [new discussion](https://github.com/jpanther/lynx/discussions/new) about your idea. Enhancements are discussed to ensure they fit with the project's design intent and overall roadmap.
|
||||||
|
- Before opening a discussion, [check to see](https://github.com/jpanther/lynx/discussions/categories/ideas) if a similar idea is already being discussed.
|
||||||
|
- All ideas and suggestions are welcome and will be judged on their merits.
|
||||||
|
- If the community supports your idea, go ahead and submit a PR with the implemented feature.
|
||||||
|
|
||||||
|
### Questions? 🙋♀️
|
||||||
|
|
||||||
|
- If you have a general question, these should be asked using [GitHub Discussions](https://github.com/jpanther/lynx/discussions). Feel free to open a [new discussion](https://github.com/jpanther/lynx/discussions/new) to ask your question using the "Q&A" category.
|
||||||
|
- Be sure to check if your question has already been answered by searching [existing Q&A discussions](https://github.com/jpanther/lynx/discussions/categories/q-a).
|
||||||
|
|
||||||
|
### Coding conventions
|
||||||
|
|
||||||
|
- Indent using 2 spaces (soft tabs).
|
||||||
|
- Put spaces between list items (ie. `[1, 2, 3]`, not `[1,2,3]`), around operators (ie. `1 + 1`, not `1+1`) and inside go templating tags (ie. `{{< alert >}}`, not `{{<alert>}}`).
|
||||||
|
- Avoid code reuse in templates by extracting components into partials.
|
||||||
|
- Layout code in a logical manner that prioritises readibility.
|
||||||
|
- Add comments when the intent of the code isn't immediately apparent or to break up large blocks of logic.
|
||||||
|
- Use relative paths to assets without including the preceeding slash but, when referring to a folder, including a trailing slash (ie. `static/img/`, not `/static/img/` or `/static/img`).
|
||||||
|
- Any static text must be referenced using the `i18n` methods and included in the localisation assets.
|
||||||
|
- Commit often, preferring incremental changes rather than bundling everything into a single, large commit.
|
||||||
|
|
||||||
|
The project includes a Prettier config that helps to format code in line with these guidelines.
|
||||||
|
|
||||||
|
#### Commit message guidelines
|
||||||
|
|
||||||
|
- Use [Gitmoji](https://gitmoji.dev) in commit messages to provide context.
|
||||||
|
- Clearly describe the change with a short summary in the first 72 characters.
|
||||||
|
- Place more detailed explanations in paragraphs below the summary, separated by a blank line.
|
||||||
|
- Use imperative language (ie. "Fix bug", not "Fixed bug" or "Fixes bug").
|
||||||
|
- Do not end the summary line with a period.
|
||||||
|
- Reference any issues fixed using their GitHub issue number.
|
20
LICENSE
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2021 James Panther (https://jamespanther.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
68
README.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Lynx
|
||||||
|
|
||||||
|
Lynx is designed to be a simple links page powered by [Hugo](https://gohugo.io). It's built using Tailwind CSS and inspired by services like LinkTree.
|
||||||
|
|
||||||
|
🌏 [Demo site](https://jpanther.github.io/lynx/)
|
||||||
|
🐛 [Bug reports & issues](https://github.com/jpanther/lynx/issues)
|
||||||
|
💡 [Questions & feature requests](https://github.com/jpanther/lynx/discussions)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Built with Tailwind CSS JIT for minified stylesheets without any excess code
|
||||||
|
- Fully responsive layout
|
||||||
|
- Dark mode (auto-switching based upon browser)
|
||||||
|
- SVG icons from FontAwesome 5
|
||||||
|
- HTML and Emoji support
|
||||||
|
- Fathom Analytics and Google Analytics support
|
||||||
|
- Favicons support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Lynx supports several installation methods - as a Hugo Module (easiest), a git submodule, or as a completely manual install.
|
||||||
|
|
||||||
|
Below is a quick start guide using Hugo modules.
|
||||||
|
|
||||||
|
### Quick start using Hugo
|
||||||
|
|
||||||
|
> **Note:** Ensure you have **Go** and **Hugo** installed, and that you have created a new Hugo project before proceeding.
|
||||||
|
|
||||||
|
1. From your project directory, initialise Hugo Modules:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
hugo mod init github.com/<username>/<repo-name>
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create `config/_default/module.toml` and add the following:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[[imports]]
|
||||||
|
path = "github.com/jpanther/lynx"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Start your server using `hugo server` and the theme will be downloaded automatically.
|
||||||
|
|
||||||
|
4. In the root folder of your website, replace the `config.toml` file that was generated by Hugo with the one from Lynx. You will find the theme config file in the Hugo cache directory, or [download a copy](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/jpanther/lynx/tree/stable/config.toml) from GitHub.
|
||||||
|
|
||||||
|
5. Edit the settings in the `config.toml` file to suit your needs. You can also create a `content/_index.md` file to add additional text to your site.
|
||||||
|
|
||||||
|
### Installing theme updates
|
||||||
|
|
||||||
|
As new releases are posted, you can update the theme using Hugo. Simply run `hugo mod get -u` from your project directory and the theme will automatically update to the latest release.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Lynx is expected to evolve over time. I intend to keep adding features and making changes as required.
|
||||||
|
|
||||||
|
Feel free to get in touch with any issues or suggestions for new features you'd like to see.
|
||||||
|
|
||||||
|
- 🐛 **Bug reports & issues:** Use [GitHub Issues](https://github.com/jpanther/lynx/issues)
|
||||||
|
- 💡 **Ideas for new features:** Open a discussion on [GitHub Discussions](https://github.com/jpanther/lynx/discussions)
|
||||||
|
- 🙋♀️ **General questions:** Head to [GitHub Discussions](https://github.com/jpanther/lynx/discussions)
|
||||||
|
|
||||||
|
If you're able to fix a bug or implement a new feature, I welcome PRs for this purpose. Learn more in the [contributing guidelines](https://github.com/jpanther/lynx/blob/dev/CONTRIBUTING.md).
|
5
archetypes/default.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
description: ""
|
||||||
|
---
|
1458
assets/css/compiled/main.css
Normal file
104
assets/css/main.css
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
/*! Lynx v1.0.0 | MIT License | https://github.com/jpanther/lynx */
|
||||||
|
|
||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
|
||||||
|
body a,
|
||||||
|
body button {
|
||||||
|
/* @apply transition; */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scale SVG icons to text size */
|
||||||
|
.icon svg {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
.link {
|
||||||
|
@apply text-white bg-primary-700 hover:brightness-90;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-codepen {
|
||||||
|
background-color: #1e1f26;
|
||||||
|
}
|
||||||
|
.link-dev {
|
||||||
|
background-color: #0a0a0a;
|
||||||
|
}
|
||||||
|
.link-discord {
|
||||||
|
background-color: #7289da;
|
||||||
|
}
|
||||||
|
.link-dribbble {
|
||||||
|
background-color: #ea4c89;
|
||||||
|
}
|
||||||
|
.link-facebook {
|
||||||
|
background-color: #1877f2;
|
||||||
|
}
|
||||||
|
.link-foursquare {
|
||||||
|
background-color: #0732a2;
|
||||||
|
}
|
||||||
|
.link-github {
|
||||||
|
background-color: #333;
|
||||||
|
}
|
||||||
|
.link-gitlab {
|
||||||
|
background-color: #554488;
|
||||||
|
}
|
||||||
|
.link-instagram {
|
||||||
|
background-color: #c13584;
|
||||||
|
background: linear-gradient(45deg, #405de6, #5851db, #833ab4, #c13584, #e1306c, #fd1d1d);
|
||||||
|
}
|
||||||
|
.link-keybase {
|
||||||
|
background-color: #33a0ff;
|
||||||
|
}
|
||||||
|
.link-lastfm {
|
||||||
|
background-color: #d51007;
|
||||||
|
}
|
||||||
|
.link-linkedin {
|
||||||
|
background-color: #0077b5;
|
||||||
|
}
|
||||||
|
.link-mastodon {
|
||||||
|
background-color: #338cd4;
|
||||||
|
}
|
||||||
|
.link-medium {
|
||||||
|
background-color: #00ab6c;
|
||||||
|
}
|
||||||
|
.link-orcid {
|
||||||
|
background-color: #a6ce39;
|
||||||
|
}
|
||||||
|
.link-pinterest {
|
||||||
|
background-color: #e60023;
|
||||||
|
}
|
||||||
|
.link-reddit {
|
||||||
|
background-color: #ff4500;
|
||||||
|
}
|
||||||
|
.link-researchgate {
|
||||||
|
background-color: #40ba9c;
|
||||||
|
}
|
||||||
|
.link-slack {
|
||||||
|
background-color: #4a154b;
|
||||||
|
}
|
||||||
|
.link-snapchat {
|
||||||
|
@apply text-neutral-900;
|
||||||
|
background-color: #fffc00;
|
||||||
|
}
|
||||||
|
.link-soundcloud {
|
||||||
|
background-color: #ff8800;
|
||||||
|
background: linear-gradient(120deg, #ff8800, #ff3300);
|
||||||
|
}
|
||||||
|
.link-steam {
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
.link-tiktok {
|
||||||
|
background-color: #fe2d55;
|
||||||
|
}
|
||||||
|
.link-twitch {
|
||||||
|
background-color: #9146ff;
|
||||||
|
}
|
||||||
|
.link-twitter {
|
||||||
|
background-color: #1da1f2;
|
||||||
|
}
|
||||||
|
.link-youtube {
|
||||||
|
background-color: #ff0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
@tailwind utilities;
|
1
assets/icons/codepen.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="codepen" class="svg-inline--fa fa-codepen fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"></path></svg>
|
After Width: | Height: | Size: 899 B |
1
assets/icons/dev.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="dev" class="svg-inline--fa fa-dev fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"></path></svg>
|
After Width: | Height: | Size: 911 B |
1
assets/icons/discord.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="discord" class="svg-inline--fa fa-discord fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
assets/icons/dribbble.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="dribbble" class="svg-inline--fa fa-dribbble fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"></path></svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
assets/icons/email.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="at" class="svg-inline--fa fa-at fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
assets/icons/facebook.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook" class="svg-inline--fa fa-facebook fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg>
|
After Width: | Height: | Size: 500 B |
1
assets/icons/foursquare.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="foursquare" class="svg-inline--fa fa-foursquare fa-w-12" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 368 512"><path fill="currentColor" d="M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"></path></svg>
|
After Width: | Height: | Size: 783 B |
1
assets/icons/github.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
assets/icons/gitlab.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="gitlab" class="svg-inline--fa fa-gitlab fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"></path></svg>
|
After Width: | Height: | Size: 506 B |
1
assets/icons/instagram.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="instagram" class="svg-inline--fa fa-instagram fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
assets/icons/keybase.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="keybase" class="svg-inline--fa fa-keybase fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"></path></svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
assets/icons/lastfm.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="lastfm" class="svg-inline--fa fa-lastfm fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"></path></svg>
|
After Width: | Height: | Size: 801 B |
1
assets/icons/link.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="link" class="svg-inline--fa fa-link fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg>
|
After Width: | Height: | Size: 1.4 KiB |
1
assets/icons/linkedin.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="linkedin" class="svg-inline--fa fa-linkedin fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>
|
After Width: | Height: | Size: 660 B |
1
assets/icons/mastodon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="mastodon" class="svg-inline--fa fa-mastodon fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path></svg>
|
After Width: | Height: | Size: 851 B |
1
assets/icons/medium.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="medium" class="svg-inline--fa fa-medium fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"></path></svg>
|
After Width: | Height: | Size: 568 B |
1
assets/icons/orcid.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="orcid" class="svg-inline--fa fa-orcid" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M294.8 188.2h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.8h-29.84v-207.5h29.84zm-14.92-231.1a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1 -19.57 19.57zM300 369h-81V161.3h80.6c76.73 0 110.4 54.83 110.4 103.8C410 318.4 368.4 369 300 369z"></path></svg>
|
After Width: | Height: | Size: 576 B |
1
assets/icons/pinterest.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="pinterest" class="svg-inline--fa fa-pinterest fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"></path></svg>
|
After Width: | Height: | Size: 904 B |
1
assets/icons/reddit.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="reddit" class="svg-inline--fa fa-reddit fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
assets/icons/researchgate.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="researchgate" class="svg-inline--fa fa-researchgate" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1 .6-33.6 .8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"></path></svg>
|
After Width: | Height: | Size: 970 B |
1
assets/icons/slack.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="slack" class="svg-inline--fa fa-slack fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
assets/icons/snapchat.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="snapchat" class="svg-inline--fa fa-snapchat fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
assets/icons/soundcloud.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="soundcloud" class="svg-inline--fa fa-soundcloud fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"></path></svg>
|
After Width: | Height: | Size: 2.3 KiB |
1
assets/icons/steam.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="steam" class="svg-inline--fa fa-steam fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"></path></svg>
|
After Width: | Height: | Size: 962 B |
1
assets/icons/tiktok.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="tiktok" class="svg-inline--fa fa-tiktok fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"></path></svg>
|
After Width: | Height: | Size: 451 B |
1
assets/icons/twitch.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitch" class="svg-inline--fa fa-twitch fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"></path></svg>
|
After Width: | Height: | Size: 432 B |
1
assets/icons/twitter.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
1
assets/icons/youtube.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" class="svg-inline--fa fa-youtube fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg>
|
After Width: | Height: | Size: 704 B |
46
config.toml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# baseURL = "https://your_domain.com/"
|
||||||
|
languageCode = "en"
|
||||||
|
defaultContentLanguage = "en"
|
||||||
|
|
||||||
|
title = "Lynx"
|
||||||
|
# copyright = "Copy, _right?_ :thinking_face:"
|
||||||
|
|
||||||
|
enableEmoji = true
|
||||||
|
disableKinds = ["taxonomy", "term"]
|
||||||
|
|
||||||
|
[author]
|
||||||
|
# name = "Your name here"
|
||||||
|
# image = "img/author.jpg"
|
||||||
|
links = [
|
||||||
|
# { email = "mailto:hello@your_domain.com" },
|
||||||
|
# { link = "https://link-to-some-website.com/" },
|
||||||
|
# { codepen = "https://codepen.io/username" },
|
||||||
|
# { dev = "https://dev.to/username" },
|
||||||
|
# { discord = "https://discord.gg/invitecode" },
|
||||||
|
# { dribbble = "https://dribbble.com/username" },
|
||||||
|
# { facebook = "https://facebook.com/username" },
|
||||||
|
# { foursquare = "https://foursquare.com/username" },
|
||||||
|
# { github = "https://github.com/username" },
|
||||||
|
# { gitlab = "https://gitlab.com/username" },
|
||||||
|
# { instagram = "https://instagram.com/username" },
|
||||||
|
# { keybase = "https://keybase.io/username" },
|
||||||
|
# { lastfm = "https://lastfm.com/user/username" },
|
||||||
|
# { linkedin = "https://linkedin.com/in/username" },
|
||||||
|
# { mastodon = "https://mastodon.instance/@username" },
|
||||||
|
# { medium = "https://medium.com/username" },
|
||||||
|
# { pinterest = "https://pinterest.com/username" },
|
||||||
|
# { reddit = "https://reddit.com/user/username" },
|
||||||
|
# { slack = "https://workspace.url/team/userid" },
|
||||||
|
# { snapchat = "https://snapchat.com/add/username" },
|
||||||
|
# { soundcloud = "https://soundcloud.com/username" },
|
||||||
|
# { steam = "https://steamcommunity.com/profiles/userid" },
|
||||||
|
# { tiktok = "https://tiktok.com/@username" },
|
||||||
|
# { twitch = "https://twitch.tv/username" },
|
||||||
|
# { twitter = "https://twitter.com/username" },
|
||||||
|
# { youtube = "https://youtube.com/username" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[module]
|
||||||
|
[module.hugoVersion]
|
||||||
|
extended = false
|
||||||
|
min = "0.86.1"
|
20
exampleSite/config.toml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
theme = "lynx"
|
||||||
|
languageCode = "en-au"
|
||||||
|
defaultContentLanguage = "en"
|
||||||
|
|
||||||
|
title = "Lynx"
|
||||||
|
# copyright = "Copy, _right?_ :thinking_face:"
|
||||||
|
|
||||||
|
enableEmoji = true
|
||||||
|
disableKinds = ["taxonomy", "term"]
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "Lynx"
|
||||||
|
image = "author.jpg"
|
||||||
|
links = [
|
||||||
|
{ github = "https://github.com/jpanther/lynx" },
|
||||||
|
{ discord = "https://discord.gg/invitecode" },
|
||||||
|
{ instagram = "https://instagram.com/username" },
|
||||||
|
{ soundcloud = "https://soundcloud.com/username" },
|
||||||
|
{ twitter = "https://twitter.com/username" },
|
||||||
|
]
|
5
exampleSite/content/_index.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
description: "This is a demo of the Lynx theme for Hugo."
|
||||||
|
---
|
||||||
|
|
||||||
|
A simple links theme for Hugo built with Tailwind CSS.
|
BIN
exampleSite/static/author.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
32
i18n/en.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
link:
|
||||||
|
codepen: CodePen
|
||||||
|
dev: DEV
|
||||||
|
discord: Discord
|
||||||
|
dribbble: Dribbble
|
||||||
|
email: Email
|
||||||
|
facebook: Facebook
|
||||||
|
foursquare: Foursquare
|
||||||
|
github: GitHub
|
||||||
|
gitlab: Gitlab
|
||||||
|
instagram: Instagram
|
||||||
|
keybase: Keybase
|
||||||
|
lastfm: Last.fm
|
||||||
|
link: Website
|
||||||
|
linkedin: LinkedIn
|
||||||
|
mastodon: Mastodon
|
||||||
|
medium: Medium
|
||||||
|
orcid: ORCiD
|
||||||
|
pinterest: Pinterest
|
||||||
|
reddit: Reddit
|
||||||
|
researchgate: ResearchGate
|
||||||
|
slack: Slack
|
||||||
|
snapchat: Snapchat
|
||||||
|
soundcloud: Soundcloud
|
||||||
|
steam: Steam
|
||||||
|
tiktok: TikTok
|
||||||
|
twitch: Twitch
|
||||||
|
twitter: Twitter
|
||||||
|
youtube: YouTube
|
||||||
|
|
||||||
|
footer:
|
||||||
|
powered_by: "Powered by {{ .Hugo }} & {{ .Lynx }}"
|
BIN
images/screenshot.png
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
images/tn.png
Normal file
After Width: | Height: | Size: 70 KiB |
10
layouts/_default/baseof.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en{{ end }}">
|
||||||
|
{{- partial "head.html" . -}}
|
||||||
|
<body
|
||||||
|
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 bg-neutral text-neutral-900 sm:px-14 md:px-24 lg:px-32 dark:bg-neutral-800 dark:text-neutral max-w-7xl"
|
||||||
|
>
|
||||||
|
<main class="flex-grow">{{- block "main" . }}{{- end }}</main>
|
||||||
|
{{- partial "footer.html" . -}}
|
||||||
|
</body>
|
||||||
|
</html>
|
35
layouts/index.html
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
<article class="flex flex-col items-center justify-center h-full mt-10 text-center">
|
||||||
|
<header class="flex flex-col items-center mb-3">
|
||||||
|
{{ with .Site.Author.image }}
|
||||||
|
<img class="mb-2 rounded-full w-36 h-36" src="{{ . | relURL }}" />
|
||||||
|
{{ end }}
|
||||||
|
<h1 class="text-4xl font-extrabold dark:text-white">
|
||||||
|
{{ .Params.title | default .Site.Author.name | default .Site.Title | emojify }}
|
||||||
|
</h1>
|
||||||
|
{{ with .Content }}
|
||||||
|
<section class="pt-5 prose dark:prose-light">{{ . | emojify }}</section>
|
||||||
|
{{ end }}
|
||||||
|
</header>
|
||||||
|
{{ with .Site.Author.links }}
|
||||||
|
<div class="flex flex-col flex-wrap min-w-full mt-4 sm:min-w-0">
|
||||||
|
{{ range $links := . }}
|
||||||
|
{{ range $name, $url := $links }}
|
||||||
|
<a
|
||||||
|
class="link link-{{ $name }} sm:px-24 min-w-full py-2 mb-3 text-lg rounded"
|
||||||
|
href="{{ $url }}"
|
||||||
|
target="_blank"
|
||||||
|
alt="{{ $name | title }}"
|
||||||
|
rel="me noopener noreferrer"
|
||||||
|
><div class="">
|
||||||
|
<span class="mr-1">{{ partial "icon.html" $name }}</span
|
||||||
|
>{{ i18n (printf "link.%s" $name) }}
|
||||||
|
</div></a
|
||||||
|
>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
</article>
|
||||||
|
{{ end }}
|
10
layouts/partials/analytics.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{{ if not .Site.IsServer }}
|
||||||
|
{{ with .Site.Params.fathomAnalytics.site }}
|
||||||
|
{{ if isset $.Site.Params.fathomanalytics "domain" }}
|
||||||
|
<script defer src="https://{{ $.Site.Params.fathomanalytics.domain }}/script.js" data-site="{{ . }}"></script>
|
||||||
|
{{ else }}
|
||||||
|
<script defer src="https://cdn.usefathom.com/script.js" data-site="{{ . }}"></script>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ template "_internal/google_analytics.html" . }}
|
||||||
|
{{ end }}
|
28
layouts/partials/footer.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<footer class="py-10">
|
||||||
|
<div class="text-center">
|
||||||
|
{{/* Copyright */}}
|
||||||
|
<p class="text-sm text-neutral-400 dark:text-neutral-500">
|
||||||
|
{{- with .Site.Copyright }}
|
||||||
|
{{ . | emojify | markdownify }}
|
||||||
|
{{- else }}
|
||||||
|
©
|
||||||
|
{{ now.Format "2006" }}
|
||||||
|
{{ .Site.Author.name | markdownify | emojify }}
|
||||||
|
{{- end }}
|
||||||
|
</p>
|
||||||
|
{{/* Theme attribution */}}
|
||||||
|
{{ if .Site.Params.attribution | default true }}
|
||||||
|
<p class="text-xs text-neutral-300 dark:text-neutral-600">
|
||||||
|
{{ $hugo := printf `<a class="hover:underline hover:underline-primary-300 hover:text-primary-400"
|
||||||
|
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a>`
|
||||||
|
}}
|
||||||
|
{{ $lynx := printf `<a class="hover:underline hover:underline-primary-300 hover:text-primary-400" href="https://git.io/hugo-lynx" target="_blank" rel="noopener noreferrer">Lynx</a>` }}
|
||||||
|
{{ i18n "footer.powered_by" (dict "Hugo" $hugo "Lynx" $lynx) | safeHTML }}
|
||||||
|
</p>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{/* Extend footer - eg. for extra scripts, etc. */}}
|
||||||
|
{{ if templates.Exists "partials/extend-footer.html" }}
|
||||||
|
{{ partialCached "extend-footer.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
</footer>
|
96
layouts/partials/head.html
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
{{ with .Site.LanguageCode }}
|
||||||
|
<meta http-equiv="content-language" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
|
{{/* Title */}}
|
||||||
|
{{ if .IsHome -}}
|
||||||
|
<title>{{ .Site.Title }}</title>
|
||||||
|
<meta name="title" content="{{ .Site.Title }}" />
|
||||||
|
{{- else -}}
|
||||||
|
<title>{{ .Title }} · {{ .Site.Title }}</title>
|
||||||
|
<meta name="title" content="{{ .Title }} · {{ .Site.Title }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{/* Metadata */}}
|
||||||
|
{{ with .Params.Description -}}
|
||||||
|
<meta name="description" content="{{ . }}" />
|
||||||
|
{{- else -}}
|
||||||
|
<meta name="description" content="{{ $.Site.Params.Description }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{ with .Site.Params.keywords -}}
|
||||||
|
<meta name="keywords" content="{{ . }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{ with .Site.Params.robots }}
|
||||||
|
<meta name="robots" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Params.robots }}
|
||||||
|
<meta name="robots" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
<link rel="canonical" href="{{ .Permalink }}" />
|
||||||
|
{{ range .AlternativeOutputFormats -}}
|
||||||
|
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
|
||||||
|
{{ end -}}
|
||||||
|
{{/* Styles */}}
|
||||||
|
{{ $mainCSS := resources.Get "css/compiled/main.css" }}
|
||||||
|
{{ $mainStyles := $mainCSS | resources.Minify | resources.Fingerprint "sha512" }}
|
||||||
|
<link
|
||||||
|
type="text/css"
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ $mainStyles.RelPermalink }}"
|
||||||
|
integrity="{{ $mainStyles.Data.Integrity }}"
|
||||||
|
/>
|
||||||
|
{{ $customCSS := resources.Get "css/custom.css" }}
|
||||||
|
{{ if $customCSS }}
|
||||||
|
{{ $customStyles := $customCSS | resources.Minify | resources.Fingerprint "sha512" }}
|
||||||
|
<link
|
||||||
|
type="text/css"
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ $customStyles.RelPermalink }}"
|
||||||
|
integrity="{{ $customStyles.Data.Integrity }}"
|
||||||
|
/>
|
||||||
|
{{ end }}
|
||||||
|
{{/* Icons */}}
|
||||||
|
{{ if templates.Exists "partials/favicons.html" }}
|
||||||
|
{{ partialCached "favicons.html" .Site }}
|
||||||
|
{{ else }}
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}" />
|
||||||
|
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{/* Site Verification */}}
|
||||||
|
{{ with .Site.Params.verification.google }}
|
||||||
|
<meta name="google-site-verification" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.verification.bing }}
|
||||||
|
<meta name="msvalidate.01" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.verification.pinterest }}
|
||||||
|
<meta name="p:domain_verify" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.verification.yandex }}
|
||||||
|
<meta name="yandex-verification" content="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
{{/* Social */}}
|
||||||
|
{{ template "_internal/opengraph.html" . }}
|
||||||
|
{{ template "_internal/twitter_cards.html" . }}
|
||||||
|
{{/* Generator */}}
|
||||||
|
{{ if .Site.Params.attribution | default true }}
|
||||||
|
{{ hugo.Generator }}
|
||||||
|
{{ end }}
|
||||||
|
{{/* Me */}}
|
||||||
|
{{ with .Site.Author.name }}<meta name="author" content="{{ . }}" />{{ end }}
|
||||||
|
{{ with .Site.Author.links }}
|
||||||
|
{{ range $links := . }}
|
||||||
|
{{ range $name, $url := $links }}<link href="{{ $url }}" rel="me" />{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{/* Analytics */}}
|
||||||
|
{{ partialCached "analytics.html" .Site }}
|
||||||
|
{{/* Extend head - eg. for custom analytics scripts, etc. */}}
|
||||||
|
{{ if templates.Exists "partials/extend-head.html" }}
|
||||||
|
{{ partialCached "extend-head.html" .Site }}
|
||||||
|
{{ end }}
|
||||||
|
</head>
|
6
layouts/partials/icon.html
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<span class="relative inline-block align-text-bottom icon">
|
||||||
|
{{ $icon := resources.Get (print "icons/" . ".svg") }}
|
||||||
|
{{ if $icon }}
|
||||||
|
{{ $icon.Content | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
8
layouts/shortcodes/icon.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<span class="relative inline-block align-text-bottom icon">
|
||||||
|
{{ $icon := resources.Get (printf "icons/%s.svg" ($.Get 0)) }}
|
||||||
|
{{ if $icon }}
|
||||||
|
{{ $icon.Content | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
|
<em>{{ i18n "shortcode.icon_none" }}</em>
|
||||||
|
{{ end }}
|
||||||
|
</span>
|
3
layouts/shortcodes/lead.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<p class="!mb-9 text-xl text-neutral-400 dark:text-neutral-500">
|
||||||
|
{{ .Inner }}
|
||||||
|
</p>
|
2826
package-lock.json
generated
Normal file
32
package.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"name": "hugo-lynx-theme",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "Lynx theme for Hugo",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "NODE_ENV=development ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
|
||||||
|
"build": "NODE_ENV=production ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
|
||||||
|
"example": "hugo server --source exampleSite --themesDir ../.. --buildDrafts -b http://localhost/lynx/ -p 8008"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/jpanther/lynx.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"hugo",
|
||||||
|
"hugo-theme",
|
||||||
|
"tailwind",
|
||||||
|
"dark-mode"
|
||||||
|
],
|
||||||
|
"author": "James Panther",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/jpanther/lynx/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/jpanther/lynx#readme",
|
||||||
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.4.1",
|
||||||
|
"prettier": "^2.4.1",
|
||||||
|
"prettier-plugin-go-template": "^0.0.11",
|
||||||
|
"tailwindcss": "^2.2.19"
|
||||||
|
}
|
||||||
|
}
|
68
release.sh
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
#!bin/bash
|
||||||
|
|
||||||
|
# get current branch
|
||||||
|
branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
|
||||||
|
|
||||||
|
# push any local changes
|
||||||
|
git push
|
||||||
|
|
||||||
|
# run a build to catch any uncommitted updates
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# branch validation
|
||||||
|
if [ $branch = "dev" ]; then
|
||||||
|
# check current branch is clean
|
||||||
|
if output=$(git status --porcelain) && [ -z "$output" ]; then
|
||||||
|
|
||||||
|
# get the version number
|
||||||
|
echo "Enter the release version (eg. 1.2.0):"
|
||||||
|
read version
|
||||||
|
|
||||||
|
echo "Started releasing Lynx v$version..."
|
||||||
|
|
||||||
|
# update package version
|
||||||
|
jq --arg version "$version" '.version=$version' package.json > package.tmp && mv package.tmp package.json
|
||||||
|
sed -i "" -e "1s/^\(\/\*! Lynx \)v[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}/\1v$version/" assets/css/main.css
|
||||||
|
|
||||||
|
# update changelog
|
||||||
|
chan release $version || exit
|
||||||
|
npx prettier --write CHANGELOG.md
|
||||||
|
|
||||||
|
# build project
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# commit version updates
|
||||||
|
git commit -a -m "🔨 Preparing release v$version"
|
||||||
|
git push
|
||||||
|
|
||||||
|
# switch to stable branch
|
||||||
|
git checkout stable
|
||||||
|
|
||||||
|
# pull latest from stable
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# merge in changes from dev branch
|
||||||
|
git merge --no-ff dev -m "🔖 Release v$version"
|
||||||
|
|
||||||
|
# create tag
|
||||||
|
git tag "v$version"
|
||||||
|
|
||||||
|
# push commit and tag to remote
|
||||||
|
git push
|
||||||
|
git push --tags
|
||||||
|
|
||||||
|
# publish GitHub release
|
||||||
|
timeout 2 chan gh-release $version
|
||||||
|
|
||||||
|
echo "Lynx v$version successfully released! 🎉"
|
||||||
|
echo "Returning to dev branch..."
|
||||||
|
|
||||||
|
git checkout dev
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "ERROR: There are unstaged changes in development!"
|
||||||
|
echo "Clean the working directory and try again."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "ERROR: Releases can only be published from the dev branch!"
|
||||||
|
fi
|
BIN
static/android-chrome-192x192.png
Executable file
After Width: | Height: | Size: 2.1 KiB |
BIN
static/android-chrome-512x512.png
Executable file
After Width: | Height: | Size: 8.8 KiB |
BIN
static/apple-touch-icon.png
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
static/favicon-16x16.png
Executable file
After Width: | Height: | Size: 229 B |
BIN
static/favicon-32x32.png
Executable file
After Width: | Height: | Size: 307 B |
BIN
static/favicon.ico
Executable file
After Width: | Height: | Size: 15 KiB |
1
static/site.webmanifest
Executable file
@ -0,0 +1 @@
|
|||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
183
tailwind.config.js
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
const colors = require("tailwindcss/colors");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
mode: "jit",
|
||||||
|
purge: {
|
||||||
|
content: [
|
||||||
|
"./layouts/**/*.html",
|
||||||
|
"./content/**/*.{html,md}",
|
||||||
|
"./themes/lynx/layouts/**/*.html",
|
||||||
|
"./themes/lynx/content/**/*.{html,md}",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
darkMode: "media",
|
||||||
|
theme: {
|
||||||
|
colors: {
|
||||||
|
white: "#fff",
|
||||||
|
neutral: colors.gray,
|
||||||
|
primary: colors.purple,
|
||||||
|
},
|
||||||
|
extend: {
|
||||||
|
typography: (theme) => ({
|
||||||
|
DEFAULT: {
|
||||||
|
css: [
|
||||||
|
{
|
||||||
|
color: theme("colors.neutral.700"),
|
||||||
|
a: {
|
||||||
|
color: theme("colors.primary.700"),
|
||||||
|
textDecoration: "underline",
|
||||||
|
textDecorationColor: theme("colors.primary.300"),
|
||||||
|
fontWeight: "500",
|
||||||
|
"&:hover": {
|
||||||
|
backgroundColor: theme("colors.primary.600"),
|
||||||
|
borderRadius: "0.09rem",
|
||||||
|
color: theme("colors.white"),
|
||||||
|
textDecoration: "none",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
strong: {
|
||||||
|
color: theme("colors.neutral.900"),
|
||||||
|
},
|
||||||
|
"ol > li::before": {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
},
|
||||||
|
"ul > li::before": {
|
||||||
|
backgroundColor: theme("colors.neutral.500"),
|
||||||
|
},
|
||||||
|
hr: {
|
||||||
|
borderColor: theme("colors.neutral.200"),
|
||||||
|
},
|
||||||
|
blockquote: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
borderLeftColor: theme("colors.primary.200"),
|
||||||
|
},
|
||||||
|
h1: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
position: "relative",
|
||||||
|
},
|
||||||
|
h2: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
position: "relative",
|
||||||
|
},
|
||||||
|
h3: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
position: "relative",
|
||||||
|
},
|
||||||
|
h4: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
position: "relative",
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
color: theme("colors.secondary.700"),
|
||||||
|
},
|
||||||
|
"pre code": {
|
||||||
|
color: theme("colors.neutral.700"),
|
||||||
|
},
|
||||||
|
pre: {
|
||||||
|
color: theme("colors.neutral.700"),
|
||||||
|
backgroundColor: theme("colors.neutral.50"),
|
||||||
|
},
|
||||||
|
"pre code": {
|
||||||
|
color: theme("colors.neutral.700"),
|
||||||
|
},
|
||||||
|
thead: {
|
||||||
|
color: theme("colors.neutral.800"),
|
||||||
|
borderBottomColor: theme("colors.neutral.500"),
|
||||||
|
},
|
||||||
|
"tbody tr": {
|
||||||
|
borderBottomColor: theme("colors.neutral.300"),
|
||||||
|
},
|
||||||
|
kbd: {
|
||||||
|
backgroundColor: theme("colors.neutral.200"),
|
||||||
|
padding: "0.1rem 0.4rem",
|
||||||
|
borderRadius: "0.25rem",
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
fontWeight: "600",
|
||||||
|
},
|
||||||
|
mark: {
|
||||||
|
backgroundColor: theme("colors.secondary.200"),
|
||||||
|
padding: "0.1rem 0.2rem",
|
||||||
|
borderRadius: "0.12rem",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
light: {
|
||||||
|
css: [
|
||||||
|
{
|
||||||
|
color: theme("colors.neutral.400"),
|
||||||
|
a: {
|
||||||
|
color: theme("colors.primary.400"),
|
||||||
|
textDecorationColor: theme("colors.neutral.500"),
|
||||||
|
},
|
||||||
|
strong: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
"ol > li::before": {
|
||||||
|
color: theme("colors.neutral.400"),
|
||||||
|
},
|
||||||
|
"ul > li::before": {
|
||||||
|
backgroundColor: theme("colors.neutral.600"),
|
||||||
|
},
|
||||||
|
hr: {
|
||||||
|
borderColor: theme("colors.neutral.500"),
|
||||||
|
},
|
||||||
|
blockquote: {
|
||||||
|
color: theme("colors.neutral.200"),
|
||||||
|
borderLeftColor: theme("colors.primary.900"),
|
||||||
|
},
|
||||||
|
h1: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
h2: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
h3: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
h4: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
"figure figcaption": {
|
||||||
|
color: theme("colors.neutral.400"),
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
color: theme("colors.secondary.400"),
|
||||||
|
},
|
||||||
|
"a code": {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
},
|
||||||
|
pre: {
|
||||||
|
color: theme("colors.neutral.200"),
|
||||||
|
backgroundColor: theme("colors.neutral.700"),
|
||||||
|
},
|
||||||
|
"pre code": {
|
||||||
|
color: theme("colors.neutral.200"),
|
||||||
|
},
|
||||||
|
thead: {
|
||||||
|
color: theme("colors.white"),
|
||||||
|
borderBottomColor: theme("colors.neutral.500"),
|
||||||
|
},
|
||||||
|
"tbody tr": {
|
||||||
|
borderBottomColor: theme("colors.neutral.700"),
|
||||||
|
},
|
||||||
|
kbd: {
|
||||||
|
backgroundColor: theme("colors.neutral.700"),
|
||||||
|
color: theme("colors.neutral.300"),
|
||||||
|
},
|
||||||
|
mark: {
|
||||||
|
backgroundColor: theme("colors.secondary.400"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
variants: {
|
||||||
|
extend: {
|
||||||
|
typography: ["dark"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
plugins: [require("@tailwindcss/typography")],
|
||||||
|
};
|
16
theme.toml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Lynx theme for Hugo
|
||||||
|
|
||||||
|
name = "lynx"
|
||||||
|
license = "MIT"
|
||||||
|
licenselink = "https://github.com/jpanther/lynx/blob/master/LICENSE"
|
||||||
|
description = "A links page theme for Hugo built with Tailwind CSS."
|
||||||
|
|
||||||
|
homepage = "https://github.com/jpanther/lynx/"
|
||||||
|
demosite = "https://jpanther.github.io/lynx/"
|
||||||
|
|
||||||
|
tags = ["minimal", "responsive", "dark mode", "dark", "light", "tailwind", "personal"]
|
||||||
|
features = ["dark mode", "emoji"]
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "James Panther"
|
||||||
|
homepage = "https://jamespanther.com/"
|