feat(infra): migración a tema Apollo, reestructuración del blog y página 'Sobre mí'
All checks were successful
Zola / build-and-deploy (push) Successful in 11s
- Implementado tema Apollo como base visual. - Segregación de contenido: Artículos movidos a /blog. - Creación de identidad: Nueva página 'Sobre mí' (about.md). - CI/CD: Actualizado workflow para soporte de submódulos recursivos. - UX: Ajustes en homepage para listado de últimos posts.
|
|
@ -7,7 +7,8 @@ jobs:
|
|||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
with:
|
||||
submodules: recursive # <--- ESTA ES LA CLAVE
|
||||
|
||||
- name: Construir sitio
|
||||
run: zola build
|
||||
|
|
|
|||
3
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "themes/apollo"]
|
||||
path = themes/apollo
|
||||
url = https://github.com/not-matthias/apollo
|
||||
43
config.toml
|
|
@ -1,15 +1,44 @@
|
|||
# config.toml
|
||||
|
||||
theme = "apollo"
|
||||
taxonomies = [{ name = "tags" }]
|
||||
base_url = "https://alejandrogs.es"
|
||||
title = "Alejandro GS"
|
||||
title = "~/alejandrogs.es"
|
||||
description = "Ingeniería, Soberanía y Software Libre."
|
||||
default_language = "es"
|
||||
minify_html = true
|
||||
|
||||
[markdown]
|
||||
highlight_code = true
|
||||
highlight_theme = "gruvbox-dark" # Un clásico de los ingenieros
|
||||
build_search_index = true
|
||||
|
||||
[search]
|
||||
include_title = true
|
||||
include_description = true
|
||||
include_path = true
|
||||
include_content = true
|
||||
index_format = "elasticlunr_json"
|
||||
|
||||
[extra]
|
||||
author = "Alejandro"
|
||||
twitter = "https://twitter.com/alejandro_gs73" # (Cámbielo o bórrelo)
|
||||
github = "https://github.com/alejandrogs73"
|
||||
theme = "toggle"
|
||||
fancy_code = true
|
||||
fediverse = true
|
||||
fediverse_creator = "@alejandrogs73@fosstodon.org"
|
||||
mathjax = true
|
||||
mathjax_dollar_inline_enable = true
|
||||
|
||||
socials = [
|
||||
{ name = "twitter", url = "https://twitter.com/alejandro_gs73", icon = "twitter" },
|
||||
{ name = "github", url = "https://github.com/alejandrogs73/", icon = "github" },
|
||||
{ name = "mastodon", url = "https://fosstodon.org/@alejandrogs73/", icon = "mastodon" },
|
||||
{ name = "email", url = "mailto:mail@alejandrogs.es", icon = "email" },
|
||||
|
||||
|
||||
]
|
||||
menu = [
|
||||
{ name = "/posts", url = "/posts", weight = 1 },
|
||||
{ name = "/about", url = "/about", weight = 2 },
|
||||
{ name = "/contact", url = "/contact", weight = 3 },
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,21 @@
|
|||
+++
|
||||
title = "AlejandroGS"
|
||||
sort_by = "date"
|
||||
template = "index.html"
|
||||
title = "Alejandro GS"
|
||||
template = "homepage.html"
|
||||
+++
|
||||
|
||||
> Soberanía · Hispanidad · Código
|
||||
|
||||
# 🏛️ Un lugar tranquilo en la red
|
||||
|
||||
## Bienvenido a la ZONA CERO.
|
||||
|
||||
|
||||
Bienvenido a mi dominio personal.
|
||||
|
||||
En un internet cada vez más ruidoso, efímero y vigilado, este sitio aspira a ser **tierra firme**.
|
||||
Esto no es un producto ni un escaparate. Es mi rincón de soberanía digital, construido piedra a piedra (o *commit* a *commit*) bajo mis propias reglas.
|
||||
En un internet cada vez más ruidoso, efímero y vigilado, este sitio aspira a ser tierra firme. Esto no es un producto ni un escaparate. Es mi rincón de soberanía digital, construido piedra a piedra (o commit a commit) bajo mis propias reglas.
|
||||
|
||||
Pase, lea y permanezca el tiempo que quiera.
|
||||
|
||||
Aqui documentamos la reconquista de la libertad digital y la busqueda de las estrellas.
|
||||
|
||||
Sin *trackers*, sin ruido, sin permiso.
|
||||
|
|
|
|||
64
content/about.md
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
+++
|
||||
title = "Sobre mí"
|
||||
description = "Sobre el autor, la soberanía, la trinchera y las estrellas."
|
||||
path = "about"
|
||||
+++
|
||||
|
||||
> Sobre el autor, la soberanía, la trinchera y las estrellas.
|
||||
|
||||
|
||||
# Lo que hay detrás del teclado
|
||||
|
||||
No busques aquí un currículum ni una biografía corporativa. Soy programador, hispanista y, sobre todo, un disidente de la inercia moderna.
|
||||
|
||||
Mi relación con la tecnología nació de la curiosidad, no de la academia. Empecé siendo un chaval temerario que rompía cosas para ver cómo funcionaban, peleando con líneas de Java y *scripts* de Python hasta la madrugada. Aprendí a programar por pura terquedad, descubriendo que el código es el único lenguaje donde, si algo se rompe, la culpa es exclusivamente tuya.
|
||||
|
||||
Esa lección forjó mi carácter: no acepto cajas negras.
|
||||
|
||||
## Soberanía o Nada
|
||||
|
||||
Hoy, mi guerra no es solo aprender lenguajes, sino conquistar la **soberanía tecnológica**.
|
||||
|
||||
Vivimos en un feudalismo digital donde alquilamos nuestra vida a grandes corporaciones. Me niego a ello. Defiendo el *self-hosting*, el **Software Libre** y la robustez de sistemas como **NixOS** porque creo que la libertad empieza por ser dueño de tus propias herramientas.
|
||||
|
||||
Odio la web moderna: lenta, obesa y llena de espías. Por eso este sitio es un retorno a la esencia. HTML crudo, CSS ligero y respeto por tu tiempo. Lo que ves es lo que hay.
|
||||
|
||||
## Dios, Patria y Código
|
||||
|
||||
La técnica sin espíritu es una jaula. Soy uno de los fundadores y **Coordinador General** del **[Partido Nacional Hispanista](https://partidonacionalhispanista.09072007.xyz)** porque entiendo que la batalla cultural es tan vital como la tecnológica.
|
||||
|
||||
Busco restaurar una visión del mundo que combine la tradición hispánica con la innovación necesaria, lejos del nihilismo que impera hoy. La política, para mí, no es un juego de escaños, sino la defensa de una cosmovisión.
|
||||
|
||||
## Alcanzando las estrellas
|
||||
|
||||
Junto a unos camaradas nos propusimos lo imposible: tocar el cielo. Así nació el **Proyecto ONZA Φ**, un intento de cohete de propulsión sólida. De aquel sueño solo llegamos a construir el motor. La falta de recursos y la inexperiencia nos cortaron las alas, pero el golpe de gracia fue un fallo informático que eliminó casi todo el registro documental del proyecto. Solo quedó nuestra memoria.
|
||||
|
||||
Lejos de rendirnos, decidimos formalizar la ambición. Fundamos la **Asociación de Cohetería Experimental de Cádiz (ACEC)**, de la que actualmente soy **Director Técnico**.
|
||||
|
||||
De las cenizas de la memoria surge ahora el **ONZA Ψ**, un nuevo vector con un objetivo superior: ya no nos conformamos con que despegue; queremos datos, queremos altura y queremos rigor.
|
||||
|
||||
Aquel desastre informático del primer ONZA me dejó una cicatriz y una obsesión: la **reproducibilidad** y los **backups**. Mi insistencia actual en sistemas indestructibles nace de ahí: no permitiré que el olvido devore nuestro trabajo nunca más.
|
||||
|
||||
Nuestro lema reza:
|
||||
|
||||
> *"O alcanzamos las estrellas, o las vemos caer sobre nosotros."*
|
||||
|
||||
Una frase que combina la ambición poética con una advertencia muy literal sobre la seguridad en la propulsión sólida.
|
||||
|
||||
### Nota al pie: Sobre el nombre ONZA
|
||||
Este nombre surge como homenaje al grupo de rock progresivo ***ONZA*** (ahora ONZAProg), cuya inspiración artística y docente motivó a los fundadores a unir ciencia, arte y espíritu.
|
||||
|
||||
## Zona de Pruebas y Error
|
||||
|
||||
Este blog no es un escaparate; es un taller con el suelo manchado de aceite. Es mi **zona cero**, mi **búnker** y mi **laboratorio**.
|
||||
|
||||
Aquí publicaré:
|
||||
* **Ingeniería de combate:** Cómo levantar servicios soberanos y sobrevivir a Linux.
|
||||
* **Reflexiones incómodas:** Ensayos sobre política, filosofía y el destino de nuestra civilización.
|
||||
* **Apuntes al margen:** Ideas que necesito sacar de mi cabeza para no estallar.
|
||||
|
||||
Escribo para ordenarme, no para complacer. Lo que leas hoy puede cambiar mañana, porque estar vivo significa contradecirse y evolucionar.
|
||||
|
||||
---
|
||||
|
||||
Si buscas certezas absolutas, te has equivocado de sitio. Si buscas a alguien que piensa en voz alta mientras construye su propio camino, bienvenido.
|
||||
44
content/contact.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
+++
|
||||
title = "Contacto"
|
||||
description = "Frecuencias abiertas y cifradas."
|
||||
template = "page.html"
|
||||
+++
|
||||
|
||||
# Protocolo de Comunicación
|
||||
|
||||
No estoy siempre disponible, pero siempre estoy escuchando. Si buscas discutir sobre código, soberanía tecnológica o hispanidad, este es el lugar.
|
||||
|
||||
| | |
|
||||
| :--- | :--- |
|
||||
| 📧 **Correo** | [mail@alejandrogs.es](mailto:mail@alejandrogs.es) |
|
||||
| 🛡️ **Forgejo** | [git.alejandrogs.es](https://git.alejandrogs.es) |
|
||||
| 🐙 **GitHub** | [@alejandrogs73](https://github.com/alejandrogs73) |
|
||||
| 🐦 **Twitter** | [@Alejandro_GS73](https://x.com/alejandro_gs73) |
|
||||
| 🐘 **Mastodon** | [@alejandrogs73@fosstodon.org](https://fosstodon.org/@alejandrogs73) |
|
||||
|
||||
## Criptografía
|
||||
|
||||
Si necesitas enviarme información sensible o verificar que realmente soy yo, utiliza mi clave PGP pública.
|
||||
|
||||
```
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEaTxqyRYJKwYBBAHaRw8BAQdA75MJ1zTOFiIjjlYtrt4+JsEk9rUjMA1z5IdG
|
||||
3UBjRDe0KEFsZWphbmRybyBHdWVycmVybyA8bWFpbEBhbGVqYW5kcm9ncy5lcz6I
|
||||
lAQTFgoAPBYhBDwl3lsnXKUllg59/Rz/EJU77jM8BQJpPGrJAhsDBQkDwmcABAsJ
|
||||
CAcEFQoJCAUWAgMBAAIeBQIXgAAKCRAc/xCVO+4zPG8AAQCcU747N9zMIfcgVTur
|
||||
5ZBZ0CaPLngnNd5yGlb7o4MhiwEA1LVHTleDgQN8Py2S389TErPnybeKvEzbC72M
|
||||
e2hoyA24OARpPGrJEgorBgEEAZdVAQUBAQdAWUbQmpKTMfNRp7GIyfmaRiBHoGHW
|
||||
Lxwd01g5xJDBOnUDAQgHiH4EGBYKACYWIQQ8Jd5bJ1ylJZYOff0c/xCVO+4zPAUC
|
||||
aTxqyQIbDAUJA8JnAAAKCRAc/xCVO+4zPLZPAPwOCUrZoOZbB0p7M1vfHqAyJRwt
|
||||
BAndmxi5rwhefMpqSwEAlhpjQG+A6UQDJBD2SU/f+8aBvwEWW/vdOl9iLCpjvwm4
|
||||
MwRpPGsIFgkrBgEEAdpHDwEBB0ApFnRaIZM+wAi444ZmLhaS5Gz+rD0zZ0j2MgqC
|
||||
26rWGYh+BBgWCgAmFiEEPCXeWydcpSWWDn39HP8QlTvuMzwFAmk8awgCGyAFCQPC
|
||||
ZwAACgkQHP8QlTvuMzxYMgD/eBv5P+yWCSTR2isytL1GPqLy2ie7vPlQ38V1oQkQ
|
||||
p8UBAIj/fY8q5jMfvHEby3aU9M+0q9BEP3VIK72H+7amjeEC
|
||||
=OKMQ
|
||||
-----END PGP PUBLIC KEY BLOCK--------
|
||||
```
|
||||
---
|
||||
|
||||
> *"La privacidad no es ocultar lo que haces, es decidir quién puede verlo."*
|
||||
10
content/posts/_index.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
paginate_by = 7
|
||||
title = "Bitácora"
|
||||
sort_by = "date"
|
||||
|
||||
insert_anchor_links = "heading"
|
||||
|
||||
[extra]
|
||||
comment = true
|
||||
+++
|
||||
10
public/elasticlunr.min.js
vendored
Normal file
1
public/fonts.css
Normal file
|
|
@ -0,0 +1 @@
|
|||
@font-face{font-family:"Jetbrains Mono";font-style:normal;font-weight:400;src:url("fonts/JetbrainsMono/JetBrainsMono-Regular.ttf"),local("ttf");font-display:swap}@font-face{font-family:"Jetbrains Mono";font-style:normal;font-weight:700;src:url("fonts/JetbrainsMono/JetBrainsMono-Bold.ttf"),local("ttf");font-display:swap}@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:400;src:url("fonts/SpaceGrotesk/SpaceGrotesk-Regular.ttf"),local("ttf");font-display:swap}@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:700;src:url("fonts/SpaceGrotesk/SpaceGrotesk-Bold.ttf"),local("ttf");font-display:swap}@font-face{font-family:"ZedTextFtl";src:url(fonts/zed-fonts/ZedTextL-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"ZedTextFtl";src:url(fonts/zed-fonts/ZedTextL-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"ZedDisplayFtl";src:url(fonts/zed-fonts/ZedDisplayL-Heavy.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
|
||||
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Bold.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-BoldItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-ExtraBold.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-ExtraBoldItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-ExtraLight.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-ExtraLightItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Italic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Light.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-LightItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Medium.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-MediumItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Regular.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-SemiBold.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-SemiBoldItalic.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-Thin.ttf
Normal file
BIN
public/fonts/JetbrainsMono/JetBrainsMono-ThinItalic.ttf
Normal file
BIN
public/fonts/SpaceGrotesk/SpaceGrotesk-Bold.ttf
Normal file
BIN
public/fonts/SpaceGrotesk/SpaceGrotesk-Light.ttf
Normal file
BIN
public/fonts/SpaceGrotesk/SpaceGrotesk-Medium.ttf
Normal file
BIN
public/fonts/SpaceGrotesk/SpaceGrotesk-Regular.ttf
Normal file
BIN
public/fonts/SpaceGrotesk/SpaceGrotesk-SemiBold.ttf
Normal file
BIN
public/fonts/zed-fonts/ZedDisplayL-Heavy.woff2
Normal file
BIN
public/fonts/zed-fonts/ZedTextL-Bold.woff2
Normal file
BIN
public/fonts/zed-fonts/ZedTextL-Regular.woff2
Normal file
17
public/gpg.txt
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEaTxqyRYJKwYBBAHaRw8BAQdA75MJ1zTOFiIjjlYtrt4+JsEk9rUjMA1z5IdG
|
||||
3UBjRDe0KEFsZWphbmRybyBHdWVycmVybyA8bWFpbEBhbGVqYW5kcm9ncy5lcz6I
|
||||
lAQTFgoAPBYhBDwl3lsnXKUllg59/Rz/EJU77jM8BQJpPGrJAhsDBQkDwmcABAsJ
|
||||
CAcEFQoJCAUWAgMBAAIeBQIXgAAKCRAc/xCVO+4zPG8AAQCcU747N9zMIfcgVTur
|
||||
5ZBZ0CaPLngnNd5yGlb7o4MhiwEA1LVHTleDgQN8Py2S389TErPnybeKvEzbC72M
|
||||
e2hoyA24OARpPGrJEgorBgEEAZdVAQUBAQdAWUbQmpKTMfNRp7GIyfmaRiBHoGHW
|
||||
Lxwd01g5xJDBOnUDAQgHiH4EGBYKACYWIQQ8Jd5bJ1ylJZYOff0c/xCVO+4zPAUC
|
||||
aTxqyQIbDAUJA8JnAAAKCRAc/xCVO+4zPLZPAPwOCUrZoOZbB0p7M1vfHqAyJRwt
|
||||
BAndmxi5rwhefMpqSwEAlhpjQG+A6UQDJBD2SU/f+8aBvwEWW/vdOl9iLCpjvwm4
|
||||
MwRpPGsIFgkrBgEEAdpHDwEBB0ApFnRaIZM+wAi444ZmLhaS5Gz+rD0zZ0j2MgqC
|
||||
26rWGYh+BBgWCgAmFiEEPCXeWydcpSWWDn39HP8QlTvuMzwFAmk8awgCGyAFCQPC
|
||||
ZwAACgkQHP8QlTvuMzxYMgD/eBv5P+yWCSTR2isytL1GPqLy2ie7vPlQ38V1oQkQ
|
||||
p8UBAIj/fY8q5jMfvHEby3aU9M+0q9BEP3VIK72H+7amjeEC
|
||||
=OKMQ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
4
public/icons/auto.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<path d="M12 2a10 10 0 0 0 0 20" fill="currentColor"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 234 B |
3
public/icons/calendar.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-zinc-400">
|
||||
<path d="M8 2V6M16 2V6M3 10H21M5 4H19C20.1046 4 21 4.89543 21 6V20C21 21.1046 20.1046 22 19 22H5C3.89543 22 3 21.1046 3 20V6C3 4.89543 3.89543 4 5 4Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 374 B |
3
public/icons/code.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4">
|
||||
<path d="M16 18L22 12L16 6M8 6L2 12L8 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 251 B |
4
public/icons/map-pin.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-zinc-400">
|
||||
<path d="M12 13C13.6569 13 15 11.6569 15 10C15 8.34315 13.6569 7 12 7C10.3431 7 9 8.34315 9 10C9 11.6569 10.3431 13 12 13Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M12 2C9.87827 2 7.84344 2.84285 6.34315 4.34315C4.84285 5.84344 4 7.87827 4 10C4 11.892 4.402 13.13 5.5 14.5L12 22L18.5 14.5C19.598 13.13 20 11.892 20 10C20 7.87827 19.1571 5.84344 17.6569 4.34315C16.1566 2.84285 14.1217 2 12 2Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 676 B |
1
public/icons/moon.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>
|
||||
|
After Width: | Height: | Size: 281 B |
4
public/icons/presentation.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4">
|
||||
<path d="M5 7C5 6.46957 5.21071 5.96086 5.58579 5.58579C5.96086 5.21071 6.46957 5 7 5H17C17.5304 5 18.0391 5.21071 18.4142 5.58579C18.7893 5.96086 19 6.46957 19 7V17C19 17.5304 18.7893 18.0391 18.4142 18.4142C18.0391 18.7893 17.5304 19 17 19H7C6.46957 19 5.96086 18.7893 5.58579 18.4142C5.21071 18.0391 5 17.5304 5 17V7Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M8 12H16M12 8V16" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 648 B |
1
public/icons/search.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
|
||||
|
After Width: | Height: | Size: 308 B |
1
public/icons/social/LICENSE
Normal file
|
|
@ -0,0 +1 @@
|
|||
All icons in this directory are downloaded from [FontAwesome](https://fontawesome.com/). They are part of the [free offer](https://fontawesome.com/license/free) and are licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
|
||||
1
public/icons/social/apple.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"/></svg>
|
||||
|
After Width: | Height: | Size: 683 B |
1
public/icons/social/bitcoin.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
3
public/icons/social/bluesky.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="568" height="501" viewBox="0 0 568 501" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0535 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 780 B |
118
public/icons/social/codeberg.svg
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.2333332 4.2333335"
|
||||
version="1.1"
|
||||
id="svg1468"
|
||||
sodipodi:docname="codeberg-logo_special_no-halftone.svg"
|
||||
inkscape:version="1.2-alpha1 (b6a15bb, 2022-02-23)"
|
||||
inkscape:export-filename="/home/mray/Projects/Codeberg/codeberg_.png"
|
||||
inkscape:export-xdpi="1536"
|
||||
inkscape:export-ydpi="1536"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title2230">Codeberg logo special version</title>
|
||||
<defs
|
||||
id="defs1462" />
|
||||
<sodipodi:namedview
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:snap-intersection-paths="true"
|
||||
inkscape:snap-bbox-midpoints="true"
|
||||
inkscape:snap-bbox="true"
|
||||
showborder="false"
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6568543"
|
||||
inkscape:cx="5.7452425"
|
||||
inkscape:cy="32.261747"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
units="px"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:snap-page="true"
|
||||
showguides="true"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid2067" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata1465">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Codeberg logo special version</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Robert Martinez</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
<dc:description>Special single color version with fake halftone</dc:description>
|
||||
<dc:date>2020-04-09</dc:date>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<dc:source>codeberg.org</dc:source>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>Codeberg e.V.</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
style="opacity:1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-44.867463,-75.990641)">
|
||||
<g
|
||||
id="g1542-5-7-2"
|
||||
style="opacity:1"
|
||||
transform="matrix(0.62731857,0,0,0.30231784,25.415003,63.342477)" />
|
||||
<path
|
||||
id="rect60043"
|
||||
style="fill-opacity:1;stroke:none;stroke-width:0.0660874;paint-order:markers fill stroke;stop-color:#000000"
|
||||
d="m 46.983886,76.122471 c -1.172544,0 -2.116423,0.944367 -2.116423,2.116911 -5.6e-5,0.397554 0.112002,0.787589 0.323326,1.124632 l 1.764533,-2.281439 c 0.01275,-0.01632 0.04434,-0.01632 0.05708,0 l 0.736954,0.952848 h -0.527804 l 0.01143,0.04204 h 0.549083 l 0.155695,0.200846 h -0.648209 l 0.01818,0.06591 h 0.680903 l 0.137012,0.176972 h -0.768612 l 0.02386,0.08511 h 0.810129 l 0.122481,0.157769 H 47.42501 l 0.02906,0.103797 h 0.939356 l 0.10743,0.138567 h -1.008381 l 0.03218,0.114695 h 1.064947 l 0.09912,0.128189 h -1.128265 l 0.03218,0.114694 h 1.184832 c 0.211323,-0.337043 0.323393,-0.727078 0.323326,-1.12463 1e-6,-1.172544 -0.944364,-2.116911 -2.116909,-2.116911 z m 0.644552,3.369732 0.03218,0.114695 h 0.939339 c 0.03063,-0.03616 0.06232,-0.07645 0.09055,-0.114695 z m 0.06799,0.242882 0.03166,0.114695 h 0.628487 c 0.04111,-0.03504 0.08566,-0.07553 0.125654,-0.114694 z m 0.06747,0.242883 0.03218,0.114176 h 0.212225 c 0.06271,-0.03599 0.120816,-0.07262 0.183679,-0.114176 z"
|
||||
sodipodi:nodetypes="scccccccccccccccccccccccccccccsccccccccccccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
1
public/icons/social/deviantart.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"/></svg>
|
||||
|
After Width: | Height: | Size: 420 B |
1
public/icons/social/diaspora.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 654 B |
1
public/icons/social/discord.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
1
public/icons/social/discourse.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"/></svg>
|
||||
|
After Width: | Height: | Size: 511 B |
1
public/icons/social/email.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>
|
||||
|
After Width: | Height: | Size: 507 B |
1
public/icons/social/ethereum.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 343 B |
1
public/icons/social/etsy.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"/></svg>
|
||||
|
After Width: | Height: | Size: 830 B |
1
public/icons/social/facebook.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 512 B |
1
public/icons/social/fediverse.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="742.753" height="742.753" viewBox="0 0 196.52 196.52"><path fill="#000000" d="M47.924 72.797a18.23 18.23 0 0 1-7.796 7.76l42.799 42.965 10.318-5.23zm56.453 56.67-10.319 5.23 21.686 21.77a18.23 18.23 0 0 1 7.798-7.76z"/><path fill="#000000" d="m129.665 102.077 1.786 11.427 27.415-13.895a18.23 18.23 0 0 1-4.972-9.812zm-14.066 7.128-57.29 29.034a18.23 18.23 0 0 1 4.973 9.813l54.103-27.42z"/><path fill="#000000" d="m69.531 91.654 8.162 8.193 29.269-57.139a18.23 18.23 0 0 1-9.787-5.021zm-7.19 14.036L48.34 133.025a18.23 18.23 0 0 1 9.786 5.022l12.378-24.164z"/><path fill="#000000" d="M39.89 80.676a18.23 18.23 0 0 1-10.865 1.72l8.176 52.298a18.23 18.23 0 0 1 10.865-1.72z"/><path fill="#000000" d="M63.326 148.31a18.23 18.23 0 0 1-1.732 10.864l52.289 8.39a18.23 18.23 0 0 1 1.732-10.862z"/><path fill="#000000" d="M134.915 146.918a18.23 18.23 0 0 1 9.788 5.023l24.134-47.117a18.23 18.23 0 0 1-9.787-5.023z"/><path fill="#000000" d="M126.133 33.16a18.23 18.23 0 0 1-7.798 7.761l37.377 37.52a18.23 18.23 0 0 1 7.797-7.76z"/><path fill="#000000" d="M44.77 51.628a18.23 18.23 0 0 1 4.973 9.812L96.99 37.495a18.23 18.23 0 0 1-4.971-9.811z"/><path fill="#000000" d="M118.25 40.965a18.23 18.23 0 0 1-10.852 1.812l4.185 26.8 11.42 1.832zm-4.234 44.192 9.895 63.363a18.23 18.23 0 0 1 10.88-1.627l-9.355-59.904z"/><path fill="#000000" d="M49.776 61.641a18.23 18.23 0 0 1-1.694 10.869l26.82 4.307 5.272-10.294zm45.968 7.382L90.472 79.32l63.371 10.177a18.23 18.23 0 0 1 1.76-10.859z"/><path fill="#000000" d="M93.439 23.842a1 1 0 1 0 33.092 1.802 1 1 0 1 0-33.092-1.802"/><path fill="#000000" d="M155.314 85.957a1 1 0 1 0 33.092 1.803 1 1 0 1 0-33.092-1.803"/><path fill="#000000" d="M115.347 163.982a1 1 0 1 0 33.092 1.803 1 1 0 1 0-33.092-1.803"/><path fill="#000000" d="M28.77 150.09a1 1 0 1 0 33.092 1.802 1 1 0 1 0-33.092-1.802"/><path fill="#000000" d="M15.23 63.478a1 1 0 1 0 33.092 1.803 1 1 0 1 0-33.092-1.803"/></svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
1
public/icons/social/github.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
1
public/icons/social/gitlab.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 1,012 B |
1
public/icons/social/globe.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z" /></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
21
public/icons/social/google-scholar.svg
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 57.1 63.8" style="enable-background:new 0 0 57.1 63.8;" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M53.8,7.1c0.7,0.1,1,0.7,1,1.7v21.4c0,0.3-0.1,0.6-0.2,0.9c-0.2,0.3-0.4,0.5-0.7,0.7C53.6,32,53.3,32,53,32h-0.7
|
||||
c-0.2,0-0.5-0.1-0.7-0.2c-0.3-0.2-0.5-0.4-0.7-0.7c-0.2-0.3-0.2-0.6-0.2-0.9V8.8c0-1.1,0.3-1.7,1-1.7V4.3L42.2,12
|
||||
c0.1,0.1,0.2,0.2,0.2,0.3l0.2,0.2c0.9,1.6,1.3,3.4,1.3,5.6c0,1.7-0.3,3.2-0.9,4.6c-0.6,1.4-1.3,2.5-2.1,3.3
|
||||
c-0.8,0.8-1.6,1.6-2.4,2.3c-0.8,0.7-1.6,1.5-2.2,2.2c-0.6,0.8-0.9,1.6-0.9,2.3c0,0.8,0.4,1.6,1.2,2.4c0.8,0.8,1.7,1.7,2.8,2.6
|
||||
c1,0.8,2,1.7,3.2,2.7c1.1,0.9,2,2.1,2.7,3.7c0.7,1.6,1.1,3.2,1.1,5c0,2.4-0.6,4.6-1.8,6.6c-1.2,1.9-2.8,3.5-4.8,4.6s-4.1,2-6.3,2.6
|
||||
c-2.2,0.6-4.4,0.8-6.6,0.8c-1.4,0-2.9-0.1-4.3-0.3c-1.4-0.2-2.9-0.6-4.3-1.2c-1.4-0.6-2.7-1.2-3.8-2.1c-1.1-0.8-2-1.9-2.7-3.2
|
||||
c-0.7-1.3-1.1-2.7-1.1-4.4c0-1.9,0.5-3.6,1.6-5.2c1.1-1.6,2.5-3,4.2-4.1c3.1-1.9,7.9-3,14.3-3.5c-1.4-1.9-2.2-3.7-2.2-5.3
|
||||
c0-0.9,0.2-1.9,0.7-3c-0.8,0.1-1.6,0.2-2.3,0.2c-3.5,0-6.5-1.1-8.9-3.4c-2.4-2.3-3.6-5.2-3.6-8.7c0-0.3,0-0.7,0-1H0L21.6,0h35.5
|
||||
l-3.3,2.5V7.1z M37.2,45c-0.7-0.6-1.1-0.9-1.2-1c-0.2-0.1-0.6-0.4-1.4-1c-0.8-0.6-1.2-0.9-1.3-1c-0.4-0.1-1-0.2-1.7-0.2
|
||||
c-1.7,0-3.3,0.2-4.8,0.5c-1.6,0.3-3.1,0.8-4.6,1.4c-1.5,0.6-2.7,1.6-3.7,2.8c-0.9,1.3-1.4,2.8-1.4,4.6c0,1.6,0.4,3,1.2,4.2
|
||||
c0.8,1.3,1.9,2.3,3.2,3c1.3,0.7,2.7,1.2,4.2,1.6c1.5,0.4,3,0.7,4.5,0.7c3.1,0,5.7-0.7,7.9-2.1c2.2-1.4,3.2-3.5,3.2-6.4
|
||||
c0-0.6-0.1-1.1-0.2-1.7c-0.2-0.6-0.3-1.1-0.5-1.5c-0.2-0.4-0.5-0.9-0.9-1.5c-0.4-0.4-0.8-0.8-1.2-1.2C38.3,46,37.9,45.5,37.2,45z
|
||||
M35.4,27.3c1.2-1.5,1.8-3.3,1.8-5.6c0-1.9-0.3-3.9-1-6c-0.7-2.1-1.7-4-3.2-5.6s-3.2-2.5-5.2-2.5c-2.2,0-3.9,0.8-5.1,2.4
|
||||
c-1.2,1.6-1.7,3.5-1.7,5.7c0,2,0.3,4,0.9,6c0.6,2,1.7,3.8,3.2,5.4c1.5,1.6,3.2,2.4,5.2,2.4C32.4,29.6,34.1,28.8,35.4,27.3z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2 KiB |
1
public/icons/social/google.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 488 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"/></svg>
|
||||
|
After Width: | Height: | Size: 495 B |
1
public/icons/social/hacker-news.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"/></svg>
|
||||
|
After Width: | Height: | Size: 428 B |
1
public/icons/social/instagram.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
public/icons/social/linkedin.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 672 B |
1
public/icons/social/mastodon.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 863 B |
7
public/icons/social/matrix.svg
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 520 520" style="enable-background:new 0 0 520 520;" xml:space="preserve">
|
||||
<path d="M13.7,11.9v496.2h35.7V520H0V0h49.4v11.9H13.7z"/>
|
||||
<path d="M166.3,169.2v25.1h0.7c6.7-9.6,14.8-17,24.2-22.2c9.4-5.3,20.3-7.9,32.5-7.9c11.7,0,22.4,2.3,32.1,6.8 c9.7,4.5,17,12.6,22.1,24c5.5-8.1,13-15.3,22.4-21.5c9.4-6.2,20.6-9.3,33.5-9.3c9.8,0,18.9,1.2,27.3,3.6c8.4,2.4,15.5,6.2,21.5,11.5 c6,5.3,10.6,12.1,14,20.6c3.3,8.5,5,18.7,5,30.7v124.1h-50.9V249.6c0-6.2-0.2-12.1-0.7-17.6c-0.5-5.5-1.8-10.3-3.9-14.3 c-2.2-4.1-5.3-7.3-9.5-9.7c-4.2-2.4-9.9-3.6-17-3.6c-7.2,0-13,1.4-17.4,4.1c-4.4,2.8-7.9,6.3-10.4,10.8c-2.5,4.4-4.2,9.4-5,15.1 c-0.8,5.6-1.3,11.3-1.3,17v103.3h-50.9v-104c0-5.5-0.1-10.9-0.4-16.3c-0.2-5.4-1.3-10.3-3.1-14.9c-1.8-4.5-4.8-8.2-9-10.9 c-4.2-2.7-10.3-4.1-18.5-4.1c-2.4,0-5.6,0.5-9.5,1.6c-3.9,1.1-7.8,3.1-11.5,6.1c-3.7,3-6.9,7.3-9.5,12.9c-2.6,5.6-3.9,13-3.9,22.1 v107.6h-50.9V169.2H166.3z"/>
|
||||
<path d="M506.3,508.1V11.9h-35.7V0H520v520h-49.4v-11.9H506.3z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
16
public/icons/social/orcid.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<path d="M256,128c0,70.7-57.3,128-128,128S0,198.7,0,128S57.3,0,128,0S256,57.3,256,128z"/>
|
||||
<g>
|
||||
<path class="st0" d="M86.3,186.2H70.9V79.1h15.4v48.4V186.2z"/>
|
||||
<path class="st0" d="M108.9,79.1h41.6c39.6,0,57,28.3,57,53.6c0,27.5-21.5,53.6-56.8,53.6h-41.8C108.9,186.3,108.9,79.1,108.9,79.1
|
||||
z M124.3,172.4h24.5c34.9,0,42.9-26.5,42.9-39.7C191.7,111.2,178,93,148,93h-23.7L124.3,172.4L124.3,172.4z"/>
|
||||
<path class="st0" d="M88.7,56.8c0,5.5-4.5,10.1-10.1,10.1s-10.1-4.6-10.1-10.1c0-5.6,4.5-10.1,10.1-10.1
|
||||
C84.2,46.7,88.7,51.3,88.7,56.8z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 951 B |
1
public/icons/social/paypal.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 801 B |
1
public/icons/social/pinterest.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 914 B |
1
public/icons/social/quora.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 740 B |
1
public/icons/social/reddit.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
public/icons/social/rss.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
|
||||
|
After Width: | Height: | Size: 587 B |
1
public/icons/social/skype.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"/></svg>
|
||||
|
After Width: | Height: | Size: 953 B |
1
public/icons/social/slack.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
public/icons/social/snapchat.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm-3.907,319.309-.083.1a32.364,32.364,0,0,1-8.717,6.823,90.26,90.26,0,0,1-20.586,8.2,12.694,12.694,0,0,0-3.852,1.76c-2.158,1.909-2.1,4.64-4.4,8.55a23.137,23.137,0,0,1-6.84,7.471c-6.707,4.632-14.244,4.923-22.23,5.23-7.214.274-15.39.581-24.729,3.669-3.761,1.245-7.753,3.694-12.377,6.533-11.265,6.9-26.68,16.353-52.3,16.353s-40.925-9.4-52.106-16.279c-4.657-2.888-8.675-5.362-12.543-6.64-9.339-3.08-17.516-3.4-24.729-3.67-7.986-.307-15.523-.6-22.231-5.229a23.085,23.085,0,0,1-6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.428,13.428,0,0,0-4.1-1.834,89.986,89.986,0,0,1-20.313-8.127,32.905,32.905,0,0,1-8.3-6.284c-6.583-6.757-8.276-14.776-5.686-21.824,3.436-9.338,11.571-12.111,19.4-16.262,14.776-8.027,26.348-18.055,34.433-29.884a68.236,68.236,0,0,0,5.985-10.567c.789-2.158.772-3.329.241-4.416a7.386,7.386,0,0,0-2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.245a28.4,28.4,0,0,1-1.369-23.584c4.134-10.924,14.469-17.706,26.978-17.706a37.141,37.141,0,0,1,7.845.83c.689.15,1.37.307,2.042.482-.108-7.43.058-15.357.722-23.119,2.358-27.261,11.912-41.589,21.874-52.994a86.836,86.836,0,0,1,22.28-17.931C188.254,100.383,205.312,96,224,96s35.828,4.383,50.944,13.016a87.169,87.169,0,0,1,22.239,17.9c9.961,11.406,19.516,25.709,21.874,52.995a231.194,231.194,0,0,1,.713,23.118c.673-.174,1.362-.332,2.051-.481a37.131,37.131,0,0,1,7.844-.83c12.5,0,22.82,6.782,26.971,17.706a28.37,28.37,0,0,1-1.4,23.559c-2.74,5.2-7.123,9.861-13.39,14.244-1.668,1.187-4.258,2.864-7.529,4.981-1.835,1.187-4.541,2.947-7.164,4.682a6.856,6.856,0,0,0-1.951,2.034c-.506,1.046-.539,2.191.166,4.208a69.015,69.015,0,0,0,6.085,10.792c8.268,12.1,20.188,22.313,35.454,30.407,1.486.772,2.98,1.5,4.441,2.258.722.332,1.569.763,2.491,1.3,4.9,2.723,9.2,6.01,11.455,12.153C387.821,336.915,386.269,344.7,380.093,351.309Zm-16.719-18.461c-50.313-24.314-58.332-61.918-58.689-64.749-.431-3.379-.921-6.035,2.806-9.472,3.594-3.328,19.541-13.19,23.965-16.278,7.33-5.114,10.534-10.219,8.16-16.495-1.66-4.316-5.686-5.976-9.961-5.976a18.5,18.5,0,0,0-3.993.448c-8.035,1.743-15.838,5.769-20.354,6.857a7.1,7.1,0,0,1-1.66.224c-2.408,0-3.279-1.071-3.088-3.968.564-8.783,1.759-25.925.373-41.937-1.884-22.032-8.99-32.948-17.432-42.6-4.051-4.624-23.135-24.654-59.536-24.654S168.53,134.359,164.479,139c-8.434,9.654-15.531,20.57-17.432,42.6-1.386,16.013-.141,33.147.373,41.937.166,2.756-.68,3.968-3.088,3.968a7.1,7.1,0,0,1-1.66-.224c-4.507-1.087-12.31-5.113-20.346-6.856a18.494,18.494,0,0,0-3.993-.449c-4.25,0-8.3,1.636-9.961,5.977-2.374,6.276.847,11.381,8.168,16.494,4.425,3.088,20.371,12.958,23.966,16.279,3.719,3.437,3.237,6.093,2.805,9.471-.356,2.79-8.384,40.394-58.689,64.749-2.946,1.428-7.96,4.45.88,9.331,13.88,7.628,23.111,6.807,30.3,11.43,6.093,3.927,2.5,12.394,6.923,15.449,5.454,3.76,21.583-.266,42.335,6.6,17.433,5.744,28.116,22.015,58.963,22.015s41.788-16.3,58.938-21.973c20.795-6.865,36.89-2.839,42.336-6.6,4.433-3.055.822-11.522,6.923-15.448,7.181-4.624,16.411-3.8,30.3-11.472C371.36,337.355,366.346,334.333,363.374,332.848Z"/></svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
1
public/icons/social/soundcloud.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
1
public/icons/social/spotify.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"/></svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
1
public/icons/social/stack-exchange.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"/></svg>
|
||||
|
After Width: | Height: | Size: 468 B |
1
public/icons/social/stack-overflow.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"/></svg>
|
||||
|
After Width: | Height: | Size: 467 B |
1
public/icons/social/steam.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 980 B |
1
public/icons/social/telegram.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg>
|
||||
|
After Width: | Height: | Size: 950 B |
1
public/icons/social/twitter.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
1
public/icons/social/vimeo.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"/></svg>
|
||||
|
After Width: | Height: | Size: 743 B |
1
public/icons/social/whatsapp.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
public/icons/social/x-twitter.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 404 B |
1
public/icons/social/youtube.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path 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"/></svg>
|
||||
|
After Width: | Height: | Size: 718 B |
1
public/icons/sun.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
|
||||
|
After Width: | Height: | Size: 650 B |
BIN
public/images/characters/hooded.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/images/talks/default.webp
Normal file
|
After Width: | Height: | Size: 90 KiB |
103
public/js/codeblock.js
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
const successIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" class="bi bi-check-lg" viewBox="0 0 16 16">
|
||||
<path d="M13.485 1.85a.5.5 0 0 1 1.065.02.75.75 0 0 1-.02 1.065L5.82 12.78a.75.75 0 0 1-1.106.02L1.476 9.346a.75.75 0 1 1 1.05-1.07l2.74 2.742L12.44 2.92a.75.75 0 0 1 1.045-.07z"/>
|
||||
</svg>`;
|
||||
const errorIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" class="bi bi-x-lg" viewBox="0 0 16 16">
|
||||
<path d="M2.293 2.293a1 1 0 0 1 1.414 0L8 6.586l4.293-4.293a1 1 0 0 1 1.414 1.414L9.414 8l4.293 4.293a1 1 0 0 1-1.414 1.414L8 9.414l-4.293 4.293a1 1 0 0 1-1.414-1.414L6.586 8 2.293 3.707a1 1 0 0 1 0-1.414z"/>
|
||||
</svg>`;
|
||||
const copyIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" class="bi bi-clipboard" viewBox="0 0 16 16">
|
||||
<path d="M10 1.5a.5.5 0 0 1 .5-.5h2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-9a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h2a.5.5 0 0 1 .5.5V3h3V1.5zM6.5 3V2h3v1h-3zm4 0v1h2a1 1 0 0 0-1-1h-2V3zm-5 0H3a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1H5.5V3z"/>
|
||||
</svg>`;
|
||||
|
||||
// Function to change icons after copying
|
||||
const changeIcon = (button, isSuccess) => {
|
||||
button.innerHTML = isSuccess ? successIcon : errorIcon;
|
||||
setTimeout(() => {
|
||||
button.innerHTML = copyIcon; // Reset to copy icon
|
||||
}, 2000);
|
||||
};
|
||||
|
||||
// Function to get code text from tables, skipping line numbers
|
||||
const getCodeFromTable = (codeBlock) => {
|
||||
return [...codeBlock.querySelectorAll('tr')]
|
||||
.map(row => row.querySelector('td:last-child')?.innerText ?? '')
|
||||
.join('');
|
||||
};
|
||||
|
||||
// Function to get code text from non-table blocks
|
||||
const getNonTableCode = (codeBlock) => {
|
||||
return codeBlock.textContent.trim();
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
// Select all `pre` elements containing `code`
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
const pre = entry.target.parentNode;
|
||||
const clipboardBtn = pre.querySelector('.clipboard-button');
|
||||
const label = pre.querySelector('.code-label');
|
||||
|
||||
if (clipboardBtn) {
|
||||
// Adjust the position of the clipboard button when the `code` is not fully visible
|
||||
clipboardBtn.style.right = entry.isIntersecting ? '5px' : `-${entry.boundingClientRect.right - pre.clientWidth + 5}px`;
|
||||
}
|
||||
|
||||
if (label) {
|
||||
// Adjust the position of the label similarly
|
||||
label.style.right = entry.isIntersecting ? '0px' : `-${entry.boundingClientRect.right - pre.clientWidth}px`;
|
||||
}
|
||||
});
|
||||
}, {
|
||||
root: null, // observing relative to viewport
|
||||
rootMargin: '0px',
|
||||
threshold: 1.0 // Adjust this to control when the callback fires
|
||||
});
|
||||
|
||||
document.querySelectorAll('pre code').forEach(codeBlock => {
|
||||
const pre = codeBlock.parentNode;
|
||||
pre.style.position = 'relative'; // Ensure parent `pre` can contain absolute elements
|
||||
|
||||
// Create and append the copy button
|
||||
const copyBtn = document.createElement('button');
|
||||
copyBtn.className = 'clipboard-button';
|
||||
copyBtn.innerHTML = copyIcon;
|
||||
copyBtn.setAttribute('aria-label', 'Copy code to clipboard');
|
||||
pre.appendChild(copyBtn);
|
||||
|
||||
// Attach event listener to copy button
|
||||
copyBtn.addEventListener('click', async () => {
|
||||
// Determine if the code is in a table or not
|
||||
const isTable = codeBlock.querySelector('table');
|
||||
const codeToCopy = isTable ? getCodeFromTable(codeBlock) : getNonTableCode(codeBlock);
|
||||
try {
|
||||
await navigator.clipboard.writeText(codeToCopy);
|
||||
changeIcon(copyBtn, true); // Show success icon
|
||||
} catch (error) {
|
||||
console.error('Failed to copy text: ', error);
|
||||
changeIcon(copyBtn, false); // Show error icon
|
||||
}
|
||||
});
|
||||
|
||||
const langClass = codeBlock.className.match(/language-(\w+)/);
|
||||
const lang = langClass ? langClass[1] : 'default';
|
||||
|
||||
// Create and append the label
|
||||
const label = document.createElement('span');
|
||||
label.className = 'code-label label-' + lang; // Use the specific language class
|
||||
label.textContent = lang.toUpperCase(); // Display the language as label
|
||||
pre.appendChild(label);
|
||||
|
||||
let ticking = false;
|
||||
pre.addEventListener('scroll', () => {
|
||||
if (!ticking) {
|
||||
window.requestAnimationFrame(() => {
|
||||
copyBtn.style.right = `-${pre.scrollLeft}px`;
|
||||
label.style.right = `-${pre.scrollLeft}px`;
|
||||
ticking = false;
|
||||
});
|
||||
ticking = true;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
271
public/js/count.js
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
// GoatCounter: https://www.goatcounter.com
|
||||
// This file (and *only* this file) is released under the ISC license: https://opensource.org/licenses/ISC
|
||||
;(function() {
|
||||
'use strict';
|
||||
|
||||
if (window.goatcounter && window.goatcounter.vars) // Compatibility with very old version; do not use.
|
||||
window.goatcounter = window.goatcounter.vars
|
||||
else
|
||||
window.goatcounter = window.goatcounter || {}
|
||||
|
||||
// Load settings from data-goatcounter-settings.
|
||||
var s = document.querySelector('script[data-goatcounter]')
|
||||
if (s && s.dataset.goatcounterSettings) {
|
||||
try { var set = JSON.parse(s.dataset.goatcounterSettings) }
|
||||
catch (err) { console.error('invalid JSON in data-goatcounter-settings: ' + err) }
|
||||
for (var k in set)
|
||||
if (['no_onload', 'no_events', 'allow_local', 'allow_frame', 'path', 'title', 'referrer', 'event'].indexOf(k) > -1)
|
||||
window.goatcounter[k] = set[k]
|
||||
}
|
||||
|
||||
var enc = encodeURIComponent
|
||||
|
||||
// Get all data we're going to send off to the counter endpoint.
|
||||
var get_data = function(vars) {
|
||||
var data = {
|
||||
p: (vars.path === undefined ? goatcounter.path : vars.path),
|
||||
r: (vars.referrer === undefined ? goatcounter.referrer : vars.referrer),
|
||||
t: (vars.title === undefined ? goatcounter.title : vars.title),
|
||||
e: !!(vars.event || goatcounter.event),
|
||||
s: [window.screen.width, window.screen.height, (window.devicePixelRatio || 1)],
|
||||
b: is_bot(),
|
||||
q: location.search,
|
||||
}
|
||||
|
||||
var rcb, pcb, tcb // Save callbacks to apply later.
|
||||
if (typeof(data.r) === 'function') rcb = data.r
|
||||
if (typeof(data.t) === 'function') tcb = data.t
|
||||
if (typeof(data.p) === 'function') pcb = data.p
|
||||
|
||||
if (is_empty(data.r)) data.r = document.referrer
|
||||
if (is_empty(data.t)) data.t = document.title
|
||||
if (is_empty(data.p)) data.p = get_path()
|
||||
|
||||
if (rcb) data.r = rcb(data.r)
|
||||
if (tcb) data.t = tcb(data.t)
|
||||
if (pcb) data.p = pcb(data.p)
|
||||
return data
|
||||
}
|
||||
|
||||
// Check if a value is "empty" for the purpose of get_data().
|
||||
var is_empty = function(v) { return v === null || v === undefined || typeof(v) === 'function' }
|
||||
|
||||
// See if this looks like a bot; there is some additional filtering on the
|
||||
// backend, but these properties can't be fetched from there.
|
||||
var is_bot = function() {
|
||||
// Headless browsers are probably a bot.
|
||||
var w = window, d = document
|
||||
if (w.callPhantom || w._phantom || w.phantom)
|
||||
return 150
|
||||
if (w.__nightmare)
|
||||
return 151
|
||||
if (d.__selenium_unwrapped || d.__webdriver_evaluate || d.__driver_evaluate)
|
||||
return 152
|
||||
if (navigator.webdriver)
|
||||
return 153
|
||||
return 0
|
||||
}
|
||||
|
||||
// Object to urlencoded string, starting with a ?.
|
||||
var urlencode = function(obj) {
|
||||
var p = []
|
||||
for (var k in obj)
|
||||
if (obj[k] !== '' && obj[k] !== null && obj[k] !== undefined && obj[k] !== false)
|
||||
p.push(enc(k) + '=' + enc(obj[k]))
|
||||
return '?' + p.join('&')
|
||||
}
|
||||
|
||||
// Show a warning in the console.
|
||||
var warn = function(msg) {
|
||||
if (console && 'warn' in console)
|
||||
console.warn('goatcounter: ' + msg)
|
||||
}
|
||||
|
||||
// Get the endpoint to send requests to.
|
||||
var get_endpoint = function() {
|
||||
var s = document.querySelector('script[data-goatcounter]')
|
||||
if (s && s.dataset.goatcounter)
|
||||
return s.dataset.goatcounter
|
||||
return (goatcounter.endpoint || window.counter) // counter is for compat; don't use.
|
||||
}
|
||||
|
||||
// Get current path.
|
||||
var get_path = function() {
|
||||
var loc = location,
|
||||
c = document.querySelector('link[rel="canonical"][href]')
|
||||
if (c) { // May be relative or point to different domain.
|
||||
var a = document.createElement('a')
|
||||
a.href = c.href
|
||||
if (a.hostname.replace(/^www\./, '') === location.hostname.replace(/^www\./, ''))
|
||||
loc = a
|
||||
}
|
||||
return (loc.pathname + loc.search) || '/'
|
||||
}
|
||||
|
||||
// Run function after DOM is loaded.
|
||||
var on_load = function(f) {
|
||||
if (document.body === null)
|
||||
document.addEventListener('DOMContentLoaded', function() { f() }, false)
|
||||
else
|
||||
f()
|
||||
}
|
||||
|
||||
// Filter some requests that we (probably) don't want to count.
|
||||
goatcounter.filter = function() {
|
||||
if ('visibilityState' in document && document.visibilityState === 'prerender')
|
||||
return 'visibilityState'
|
||||
if (!goatcounter.allow_frame && location !== parent.location)
|
||||
return 'frame'
|
||||
if (!goatcounter.allow_local && location.hostname.match(/(localhost$|^127\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\.|^192\.168\.|^0\.0\.0\.0$)/))
|
||||
return 'localhost'
|
||||
if (!goatcounter.allow_local && location.protocol === 'file:')
|
||||
return 'localfile'
|
||||
if (localStorage && localStorage.getItem('skipgc') === 't')
|
||||
return 'disabled with #toggle-goatcounter'
|
||||
return false
|
||||
}
|
||||
|
||||
// Get URL to send to GoatCounter.
|
||||
window.goatcounter.url = function(vars) {
|
||||
var data = get_data(vars || {})
|
||||
if (data.p === null) // null from user callback.
|
||||
return
|
||||
data.rnd = Math.random().toString(36).substr(2, 5) // Browsers don't always listen to Cache-Control.
|
||||
|
||||
var endpoint = get_endpoint()
|
||||
if (!endpoint)
|
||||
return warn('no endpoint found')
|
||||
|
||||
return endpoint + urlencode(data)
|
||||
}
|
||||
|
||||
// Count a hit.
|
||||
window.goatcounter.count = function(vars) {
|
||||
var f = goatcounter.filter()
|
||||
if (f)
|
||||
return warn('not counting because of: ' + f)
|
||||
var url = goatcounter.url(vars)
|
||||
if (!url)
|
||||
return warn('not counting because path callback returned null')
|
||||
|
||||
if (!navigator.sendBeacon(url)) {
|
||||
// This mostly fails due to being blocked by CSP; try again with an
|
||||
// image-based fallback.
|
||||
var img = document.createElement('img')
|
||||
img.src = url
|
||||
img.style.position = 'absolute' // Affect layout less.
|
||||
img.style.bottom = '0px'
|
||||
img.style.width = '1px'
|
||||
img.style.height = '1px'
|
||||
img.loading = 'eager'
|
||||
img.setAttribute('alt', '')
|
||||
img.setAttribute('aria-hidden', 'true')
|
||||
|
||||
var rm = function() { if (img && img.parentNode) img.parentNode.removeChild(img) }
|
||||
img.addEventListener('load', rm, false)
|
||||
document.body.appendChild(img)
|
||||
}
|
||||
}
|
||||
|
||||
// Get a query parameter.
|
||||
window.goatcounter.get_query = function(name) {
|
||||
var s = location.search.substr(1).split('&')
|
||||
for (var i = 0; i < s.length; i++)
|
||||
if (s[i].toLowerCase().indexOf(name.toLowerCase() + '=') === 0)
|
||||
return s[i].substr(name.length + 1)
|
||||
}
|
||||
|
||||
// Track click events.
|
||||
window.goatcounter.bind_events = function() {
|
||||
if (!document.querySelectorAll) // Just in case someone uses an ancient browser.
|
||||
return
|
||||
|
||||
var send = function(elem) {
|
||||
return function() {
|
||||
goatcounter.count({
|
||||
event: true,
|
||||
path: (elem.dataset.goatcounterClick || elem.name || elem.id || ''),
|
||||
title: (elem.dataset.goatcounterTitle || elem.title || (elem.innerHTML || '').substr(0, 200) || ''),
|
||||
referrer: (elem.dataset.goatcounterReferrer || elem.dataset.goatcounterReferral || ''),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Array.prototype.slice.call(document.querySelectorAll("*[data-goatcounter-click]")).forEach(function(elem) {
|
||||
if (elem.dataset.goatcounterBound)
|
||||
return
|
||||
var f = send(elem)
|
||||
elem.addEventListener('click', f, false)
|
||||
elem.addEventListener('auxclick', f, false) // Middle click.
|
||||
elem.dataset.goatcounterBound = 'true'
|
||||
})
|
||||
}
|
||||
|
||||
// Add a "visitor counter" frame or image.
|
||||
window.goatcounter.visit_count = function(opt) {
|
||||
on_load(function() {
|
||||
opt = opt || {}
|
||||
opt.type = opt.type || 'html'
|
||||
opt.append = opt.append || 'body'
|
||||
opt.path = opt.path || get_path()
|
||||
opt.attr = opt.attr || {width: '200', height: (opt.no_branding ? '60' : '80')}
|
||||
|
||||
opt.attr['src'] = get_endpoint() + 'er/' + enc(opt.path) + '.' + enc(opt.type) + '?'
|
||||
if (opt.no_branding) opt.attr['src'] += '&no_branding=1'
|
||||
if (opt.style) opt.attr['src'] += '&style=' + enc(opt.style)
|
||||
if (opt.start) opt.attr['src'] += '&start=' + enc(opt.start)
|
||||
if (opt.end) opt.attr['src'] += '&end=' + enc(opt.end)
|
||||
|
||||
var tag = {png: 'img', svg: 'img', html: 'iframe'}[opt.type]
|
||||
if (!tag)
|
||||
return warn('visit_count: unknown type: ' + opt.type)
|
||||
|
||||
if (opt.type === 'html') {
|
||||
opt.attr['frameborder'] = '0'
|
||||
opt.attr['scrolling'] = 'no'
|
||||
}
|
||||
|
||||
var d = document.createElement(tag)
|
||||
for (var k in opt.attr)
|
||||
d.setAttribute(k, opt.attr[k])
|
||||
|
||||
var p = document.querySelector(opt.append)
|
||||
if (!p)
|
||||
return warn('visit_count: append not found: ' + opt.append)
|
||||
p.appendChild(d)
|
||||
})
|
||||
}
|
||||
|
||||
// Make it easy to skip your own views.
|
||||
if (location.hash === '#toggle-goatcounter') {
|
||||
if (localStorage.getItem('skipgc') === 't') {
|
||||
localStorage.removeItem('skipgc', 't')
|
||||
alert('GoatCounter tracking is now ENABLED in this browser.')
|
||||
}
|
||||
else {
|
||||
localStorage.setItem('skipgc', 't')
|
||||
alert('GoatCounter tracking is now DISABLED in this browser until ' + location + ' is loaded again.')
|
||||
}
|
||||
}
|
||||
|
||||
if (!goatcounter.no_onload)
|
||||
on_load(function() {
|
||||
// 1. Page is visible, count request.
|
||||
// 2. Page is not yet visible; wait until it switches to 'visible' and count.
|
||||
// See #487
|
||||
if (!('visibilityState' in document) || document.visibilityState === 'visible')
|
||||
goatcounter.count()
|
||||
else {
|
||||
var f = function(e) {
|
||||
if (document.visibilityState !== 'visible')
|
||||
return
|
||||
document.removeEventListener('visibilitychange', f)
|
||||
goatcounter.count()
|
||||
}
|
||||
document.addEventListener('visibilitychange', f)
|
||||
}
|
||||
|
||||
if (!goatcounter.no_events)
|
||||
goatcounter.bind_events()
|
||||
})
|
||||
})();
|
||||
2
public/js/imamu.js
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
// https://cloud.umami.is/script.js
|
||||
!function(){"use strict";(t=>{const{screen:{width:e,height:a},navigator:{language:r},location:n,document:i,history:c}=t,{hostname:s,href:o,origin:u}=n,{currentScript:l,referrer:d}=i,h=o.startsWith("data:")?void 0:t.localStorage;if(!l)return;const m="data-",f=l.getAttribute.bind(l),p=f(m+"website-id"),g=f(m+"host-url"),y=f(m+"tag"),b="false"!==f(m+"auto-track"),v="true"===f(m+"exclude-search"),w=f(m+"domains")||"",S=w.split(",").map((t=>t.trim())),N=`${(g||"https://api-gateway.umami.dev"||l.src.split("/").slice(0,-1).join("/")).replace(/\/$/,"")}/api/send`,T=`${e}x${a}`,A=/data-umami-event-([\w-_]+)/,x=m+"umami-event",O=300,U=t=>{if(t){try{const e=decodeURI(t);if(e!==t)return e}catch(e){return t}return encodeURI(t)}},j=t=>{try{const{pathname:e,search:a,hash:r}=new URL(t,n.href);t=e+a+r}catch(t){}return v?t.split("?")[0]:t},k=()=>({website:p,hostname:s,screen:T,language:r,title:U(q),url:U(W),referrer:U(_),tag:y||void 0}),E=(t,e,a)=>{a&&(_=W,W=j(a.toString()),W!==_&&setTimeout(K,O))},L=()=>!p||h&&h.getItem("umami.disabled")||w&&!S.includes(s),$=async(t,e="event")=>{if(L())return;const a={"Content-Type":"application/json"};void 0!==B&&(a["x-umami-cache"]=B);try{const r=await fetch(N,{method:"POST",body:JSON.stringify({type:e,payload:t}),headers:a}),n=await r.text();return B=n}catch(t){}},I=()=>{D||(K(),(()=>{const t=(t,e,a)=>{const r=t[e];return(...e)=>(a.apply(null,e),r.apply(t,e))};c.pushState=t(c,"pushState",E),c.replaceState=t(c,"replaceState",E)})(),(()=>{const t=new MutationObserver((([t])=>{q=t&&t.target?t.target.text:void 0})),e=i.querySelector("head > title");e&&t.observe(e,{subtree:!0,characterData:!0,childList:!0})})(),i.addEventListener("click",(async t=>{const e=t=>["BUTTON","A"].includes(t),a=async t=>{const e=t.getAttribute.bind(t),a=e(x);if(a){const r={};return t.getAttributeNames().forEach((t=>{const a=t.match(A);a&&(r[a[1]]=e(t))})),K(a,r)}},r=t.target,i=e(r.tagName)?r:((t,a)=>{let r=t;for(let t=0;t<a;t++){if(e(r.tagName))return r;if(r=r.parentElement,!r)return null}})(r,10);if(!i)return a(r);{const{href:e,target:r}=i,c=i.getAttribute(x);if(c)if("A"===i.tagName){const s="_blank"===r||t.ctrlKey||t.shiftKey||t.metaKey||t.button&&1===t.button;if(c&&e)return s||t.preventDefault(),a(i).then((()=>{s||(n.href=e)}))}else if("BUTTON"===i.tagName)return a(i)}}),!0),D=!0)},K=(t,e)=>$("string"==typeof t?{...k(),name:t,data:"object"==typeof e?e:void 0}:"object"==typeof t?t:"function"==typeof t?t(k()):k()),R=t=>$({...k(),data:t},"identify");t.umami||(t.umami={track:K,identify:R});let B,D,W=j(o),_=d.startsWith(u)?"":d,q=i.title;b&&!L()&&("complete"===i.readyState?I():i.addEventListener("readystatechange",I,!0))})(window)}();
|
||||
25
public/js/main.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
mmdElements = document.getElementsByClassName("mermaid");
|
||||
const mmdHTML = [];
|
||||
for (let i = 0; i < mmdElements.length; i++) {
|
||||
mmdHTML[i] = mmdElements[i].innerHTML;
|
||||
}
|
||||
|
||||
function mermaidRender(theme) {
|
||||
if (theme == "dark") {
|
||||
initOptions = {
|
||||
startOnLoad: false,
|
||||
theme: "dark",
|
||||
};
|
||||
} else {
|
||||
initOptions = {
|
||||
startOnLoad: false,
|
||||
theme: "neutral",
|
||||
};
|
||||
}
|
||||
for (let i = 0; i < mmdElements.length; i++) {
|
||||
delete mmdElements[i].dataset.processed;
|
||||
mmdElements[i].innerHTML = mmdHTML[i];
|
||||
}
|
||||
mermaid.initialize(initOptions);
|
||||
mermaid.run();
|
||||
}
|
||||
1760
public/js/mermaid.js
Normal file
14
public/js/note.js
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.note-toggle').forEach(function(toggleButton) {
|
||||
var content = toggleButton.nextElementSibling;
|
||||
var isHidden = content.style.display === 'none';
|
||||
toggleButton.setAttribute('aria-expanded', !isHidden);
|
||||
|
||||
toggleButton.addEventListener('click', function() {
|
||||
var expanded = this.getAttribute('aria-expanded') === 'true';
|
||||
this.setAttribute('aria-expanded', !expanded);
|
||||
content.style.display = expanded ? 'none' : 'block';
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
3201
public/js/searchElasticlunr.js
Normal file
1
public/js/searchElasticlunr.min.js
vendored
Normal file
82
public/js/themetoggle.js
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
function setTheme(mode) {
|
||||
localStorage.setItem("theme-storage", mode);
|
||||
}
|
||||
|
||||
// Functions needed for the theme toggle
|
||||
//
|
||||
|
||||
function toggleTheme() {
|
||||
const currentTheme = getSavedTheme();
|
||||
if (currentTheme === "light") {
|
||||
setTheme("dark");
|
||||
updateItemToggleTheme();
|
||||
} else if (currentTheme === "dark") {
|
||||
setTheme("auto");
|
||||
updateItemToggleTheme();
|
||||
} else {
|
||||
setTheme("light");
|
||||
updateItemToggleTheme();
|
||||
}
|
||||
}
|
||||
|
||||
function updateItemToggleTheme() {
|
||||
let mode = getSavedTheme();
|
||||
|
||||
const darkModeStyle = document.getElementById("darkModeStyle");
|
||||
if (darkModeStyle) {
|
||||
if (mode === "dark" || (mode === "auto" && getSystemPrefersDark())) {
|
||||
darkModeStyle.disabled = false;
|
||||
} else {
|
||||
darkModeStyle.disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
const sunIcon = document.getElementById("sun-icon");
|
||||
const moonIcon = document.getElementById("moon-icon");
|
||||
const autoIcon = document.getElementById("auto-icon");
|
||||
if (sunIcon && moonIcon && autoIcon) {
|
||||
sunIcon.style.display = (mode === "light") ? "block" : "none";
|
||||
moonIcon.style.display = (mode === "dark") ? "block" : "none";
|
||||
autoIcon.style.display = (mode === "auto") ? "block" : "none";
|
||||
|
||||
if (mode === "auto") {
|
||||
autoIcon.style.filter = getSystemPrefersDark() ? "invert(1)" : "invert(0)";
|
||||
} else {
|
||||
autoIcon.style.filter = "none";
|
||||
}
|
||||
}
|
||||
|
||||
let htmlElement = document.querySelector("html");
|
||||
if (mode === "dark" || (mode === "auto" && getSystemPrefersDark())) {
|
||||
htmlElement.classList.remove("light")
|
||||
htmlElement.classList.add("dark")
|
||||
} else {
|
||||
htmlElement.classList.remove("dark")
|
||||
htmlElement.classList.add("light")
|
||||
}
|
||||
}
|
||||
|
||||
function getSystemPrefersDark() {
|
||||
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
}
|
||||
|
||||
function getSavedTheme() {
|
||||
let currentTheme = localStorage.getItem("theme-storage");
|
||||
if(!currentTheme) {
|
||||
currentTheme = getSystemPrefersDark() ? "dark" : "light";
|
||||
}
|
||||
|
||||
return currentTheme;
|
||||
}
|
||||
|
||||
// Update the toggle theme on page load
|
||||
updateItemToggleTheme();
|
||||
|
||||
// Listen for system theme changes in auto mode
|
||||
if (window.matchMedia) {
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) {
|
||||
if (getSavedTheme() === "auto") {
|
||||
updateItemToggleTheme();
|
||||
}
|
||||
});
|
||||
}
|
||||
49
public/js/toc.js
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
document.addEventListener("DOMContentLoaded", () => {
|
||||
let observer = new IntersectionObserver(handler, {
|
||||
threshold: [0],
|
||||
});
|
||||
let paragraphs = [...document.querySelectorAll("section > *")];
|
||||
let submenu = [...document.querySelectorAll(".toc a")];
|
||||
|
||||
function previousHeaderId(e) {
|
||||
for (; e && !e.matches("h1, h2, h3, h4"); ) e = e.previousElementSibling;
|
||||
return e?.id;
|
||||
}
|
||||
let paragraphMenuMap = paragraphs.reduce((e, t) => {
|
||||
let n = previousHeaderId(t);
|
||||
if (((t.previousHeader = n), n)) {
|
||||
let t = submenu.find((e) => decodeURIComponent(e.hash) === "#" + n);
|
||||
e[n] = t;
|
||||
}
|
||||
return e;
|
||||
}, {});
|
||||
|
||||
paragraphs.forEach((e) => observer.observe(e));
|
||||
let selection;
|
||||
function handler(e) {
|
||||
selection = (selection || e).map(
|
||||
(t) => e.find((e) => e.target === t.target) || t,
|
||||
);
|
||||
for (s of selection)
|
||||
s.isIntersecting ||
|
||||
paragraphMenuMap[
|
||||
s.target.previousHeader
|
||||
]?.parentElement.classList.remove("selected", "parent");
|
||||
for (s of selection)
|
||||
if (s.isIntersecting) {
|
||||
let e = paragraphMenuMap[s.target.previousHeader]?.closest("li");
|
||||
if ((e?.classList.add("selected"), e === void 0)) continue;
|
||||
// Find the anchor element within the list item
|
||||
let t = e.querySelector("a");
|
||||
if (t) {
|
||||
t.scrollIntoView({
|
||||
block: "nearest",
|
||||
inline: "nearest",
|
||||
});
|
||||
}
|
||||
for (; e; ) {
|
||||
e?.classList.add("parent"), (e = e.parentElement.closest("li"));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
1
public/main.css
Normal file
BIN
public/processed_images/default.05d0d1570fe67adf.webp
Normal file
|
After Width: | Height: | Size: 238 KiB |