initial commit
5
.astro/settings.json
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"devToolbar": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
}
|
||||||
150
.astro/types.d.ts
vendored
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
declare module 'astro:content' {
|
||||||
|
interface Render {
|
||||||
|
'.mdx': Promise<{
|
||||||
|
Content: import('astro').MarkdownInstance<{}>['Content'];
|
||||||
|
headings: import('astro').MarkdownHeading[];
|
||||||
|
remarkPluginFrontmatter: Record<string, any>;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module 'astro:content' {
|
||||||
|
interface Render {
|
||||||
|
'.md': Promise<{
|
||||||
|
Content: import('astro').MarkdownInstance<{}>['Content'];
|
||||||
|
headings: import('astro').MarkdownHeading[];
|
||||||
|
remarkPluginFrontmatter: Record<string, any>;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module 'astro:content' {
|
||||||
|
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
||||||
|
|
||||||
|
export type CollectionKey = keyof AnyEntryMap;
|
||||||
|
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
||||||
|
|
||||||
|
export type ContentCollectionKey = keyof ContentEntryMap;
|
||||||
|
export type DataCollectionKey = keyof DataEntryMap;
|
||||||
|
|
||||||
|
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
||||||
|
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
||||||
|
ContentEntryMap[C]
|
||||||
|
>['slug'];
|
||||||
|
|
||||||
|
export function getEntryBySlug<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||||
|
>(
|
||||||
|
collection: C,
|
||||||
|
// Note that this has to accept a regular string too, for SSR
|
||||||
|
entrySlug: E
|
||||||
|
): E extends ValidContentEntrySlug<C>
|
||||||
|
? Promise<CollectionEntry<C>>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
|
||||||
|
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
||||||
|
collection: C,
|
||||||
|
entryId: E
|
||||||
|
): Promise<CollectionEntry<C>>;
|
||||||
|
|
||||||
|
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
||||||
|
collection: C,
|
||||||
|
filter?: (entry: CollectionEntry<C>) => entry is E
|
||||||
|
): Promise<E[]>;
|
||||||
|
export function getCollection<C extends keyof AnyEntryMap>(
|
||||||
|
collection: C,
|
||||||
|
filter?: (entry: CollectionEntry<C>) => unknown
|
||||||
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||||
|
>(entry: {
|
||||||
|
collection: C;
|
||||||
|
slug: E;
|
||||||
|
}): E extends ValidContentEntrySlug<C>
|
||||||
|
? Promise<CollectionEntry<C>>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof DataEntryMap,
|
||||||
|
E extends keyof DataEntryMap[C] | (string & {}),
|
||||||
|
>(entry: {
|
||||||
|
collection: C;
|
||||||
|
id: E;
|
||||||
|
}): E extends keyof DataEntryMap[C]
|
||||||
|
? Promise<DataEntryMap[C][E]>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||||
|
>(
|
||||||
|
collection: C,
|
||||||
|
slug: E
|
||||||
|
): E extends ValidContentEntrySlug<C>
|
||||||
|
? Promise<CollectionEntry<C>>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof DataEntryMap,
|
||||||
|
E extends keyof DataEntryMap[C] | (string & {}),
|
||||||
|
>(
|
||||||
|
collection: C,
|
||||||
|
id: E
|
||||||
|
): E extends keyof DataEntryMap[C]
|
||||||
|
? Promise<DataEntryMap[C][E]>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
|
||||||
|
/** Resolve an array of entry references from the same collection */
|
||||||
|
export function getEntries<C extends keyof ContentEntryMap>(
|
||||||
|
entries: {
|
||||||
|
collection: C;
|
||||||
|
slug: ValidContentEntrySlug<C>;
|
||||||
|
}[]
|
||||||
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
export function getEntries<C extends keyof DataEntryMap>(
|
||||||
|
entries: {
|
||||||
|
collection: C;
|
||||||
|
id: keyof DataEntryMap[C];
|
||||||
|
}[]
|
||||||
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
|
||||||
|
export function reference<C extends keyof AnyEntryMap>(
|
||||||
|
collection: C
|
||||||
|
): import('astro/zod').ZodEffects<
|
||||||
|
import('astro/zod').ZodString,
|
||||||
|
C extends keyof ContentEntryMap
|
||||||
|
? {
|
||||||
|
collection: C;
|
||||||
|
slug: ValidContentEntrySlug<C>;
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
collection: C;
|
||||||
|
id: keyof DataEntryMap[C];
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
// Allow generic `string` to avoid excessive type errors in the config
|
||||||
|
// if `dev` is not running to update as you edit.
|
||||||
|
// Invalid collection names will be caught at build time.
|
||||||
|
export function reference<C extends string>(
|
||||||
|
collection: C
|
||||||
|
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
||||||
|
|
||||||
|
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
||||||
|
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
||||||
|
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
||||||
|
>;
|
||||||
|
|
||||||
|
type ContentEntryMap = {
|
||||||
|
"blog": {
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
type DataEntryMap = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
||||||
|
|
||||||
|
export type ContentConfig = typeof import("../src/content/config.js");
|
||||||
|
}
|
||||||
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
use flake;
|
||||||
68
README.md
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Astro Starter Kit: Blog
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm create astro@latest -- --template blog
|
||||||
|
```
|
||||||
|
|
||||||
|
[](https://stackblitz.com/github/withastro/astro/tree/latest/examples/blog)
|
||||||
|
[](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/blog)
|
||||||
|
[](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/blog/devcontainer.json)
|
||||||
|
|
||||||
|
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
- ✅ Minimal styling (make it your own!)
|
||||||
|
- ✅ 100/100 Lighthouse performance
|
||||||
|
- ✅ SEO-friendly with canonical URLs and OpenGraph data
|
||||||
|
- ✅ Sitemap support
|
||||||
|
- ✅ RSS Feed support
|
||||||
|
- ✅ Markdown & MDX support
|
||||||
|
|
||||||
|
## 🚀 Project Structure
|
||||||
|
|
||||||
|
Inside of your Astro project, you'll see the following folders and files:
|
||||||
|
|
||||||
|
```text
|
||||||
|
├── public/
|
||||||
|
├── src/
|
||||||
|
│ ├── components/
|
||||||
|
│ ├── content/
|
||||||
|
│ ├── layouts/
|
||||||
|
│ └── pages/
|
||||||
|
├── astro.config.mjs
|
||||||
|
├── README.md
|
||||||
|
├── package.json
|
||||||
|
└── tsconfig.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||||
|
|
||||||
|
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
|
||||||
|
|
||||||
|
The `src/content/` directory contains "collections" of related Markdown and MDX documents. Use `getCollection()` to retrieve posts from `src/content/blog/`, and type-check your frontmatter using an optional schema. See [Astro's Content Collections docs](https://docs.astro.build/en/guides/content-collections/) to learn more.
|
||||||
|
|
||||||
|
Any static assets, like images, can be placed in the `public/` directory.
|
||||||
|
|
||||||
|
## 🧞 Commands
|
||||||
|
|
||||||
|
All commands are run from the root of the project, from a terminal:
|
||||||
|
|
||||||
|
| Command | Action |
|
||||||
|
| :------------------------ | :----------------------------------------------- |
|
||||||
|
| `npm install` | Installs dependencies |
|
||||||
|
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||||
|
| `npm run build` | Build your production site to `./dist/` |
|
||||||
|
| `npm run preview` | Preview your build locally, before deploying |
|
||||||
|
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||||
|
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||||
|
|
||||||
|
## 👀 Want to learn more?
|
||||||
|
|
||||||
|
Check out [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
||||||
|
|
||||||
|
## Credit
|
||||||
|
|
||||||
|
This theme is based off of the lovely [Bear Blog](https://github.com/HermanMartinus/bearblog/).
|
||||||
11
astro.config.mjs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { defineConfig } from "astro/config";
|
||||||
|
import mdx from "@astrojs/mdx";
|
||||||
|
import sitemap from "@astrojs/sitemap";
|
||||||
|
|
||||||
|
import tailwind from "@astrojs/tailwind";
|
||||||
|
|
||||||
|
// https://astro.build/config
|
||||||
|
export default defineConfig({
|
||||||
|
site: "https://zackmyers.io",
|
||||||
|
integrations: [mdx(), sitemap(), tailwind()],
|
||||||
|
});
|
||||||
112
flake.lock
generated
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1712883908,
|
||||||
|
"narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702151865,
|
||||||
|
"narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pnpm2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1706694632,
|
||||||
|
"narHash": "sha256-ytyTwNPiUR8aq74QlxFI+Wv3MyvXz5POO1xZxQIoi0c=",
|
||||||
|
"owner": "nzbr",
|
||||||
|
"repo": "pnpm2nix-nzbr",
|
||||||
|
"rev": "0366b7344171accc2522525710e52a8abbf03579",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nzbr",
|
||||||
|
"repo": "pnpm2nix-nzbr",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"pnpm2nix": "pnpm2nix",
|
||||||
|
"systems": "systems_2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
84
flake.nix
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
systems.url = "github:nix-systems/default";
|
||||||
|
pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
systems,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
|
eachSystem = f:
|
||||||
|
nixpkgs.lib.genAttrs (import systems) (
|
||||||
|
system:
|
||||||
|
f nixpkgs.legacyPackages.${system}
|
||||||
|
);
|
||||||
|
in {
|
||||||
|
packages = eachSystem (pkgs: {
|
||||||
|
default = inputs.pnpm2nix.packages.${pkgs.system}.mkPnpmPackage {
|
||||||
|
name = "zm-blog";
|
||||||
|
src = ./.;
|
||||||
|
packageJSON = ./package.json;
|
||||||
|
pnpmLock = ./pnpm-lock.yaml;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
nixosModule = {
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.zmio.blog;
|
||||||
|
in {
|
||||||
|
options.zmio.blog = {
|
||||||
|
enable = mkEnableOption "Enables the Blog Site";
|
||||||
|
|
||||||
|
domain = mkOption rec {
|
||||||
|
type = type.str;
|
||||||
|
default = "zackmyers.io";
|
||||||
|
example = default;
|
||||||
|
description = "The domain name for the website";
|
||||||
|
};
|
||||||
|
|
||||||
|
ssl = mkOption rec {
|
||||||
|
type = type.bool;
|
||||||
|
default = true;
|
||||||
|
example = default;
|
||||||
|
description = "Whether to enable SSL on the domain or not";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.nginx.virtualHosts.${cfg.domain} = {
|
||||||
|
forceSSL = cfg.ssl;
|
||||||
|
enableACME = cfg.ssl;
|
||||||
|
root = "${packages.${pkgs.system}.default}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
devShells = eachSystem (pkgs: {
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.nodejs
|
||||||
|
# You can set the major version of Node.js to a specific one instead
|
||||||
|
# of the default version
|
||||||
|
# pkgs.nodejs-19_x
|
||||||
|
|
||||||
|
# You can choose pnpm, yarn, or none (npm).
|
||||||
|
pkgs.nodePackages.pnpm
|
||||||
|
# pkgs.yarn
|
||||||
|
|
||||||
|
pkgs.nodePackages.typescript
|
||||||
|
pkgs.nodePackages.typescript-language-server
|
||||||
|
pkgs.nodePackages."@tailwindcss/language-server"
|
||||||
|
pkgs.nodePackages."@astrojs/language-server"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
25
package.json
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"name": "web",
|
||||||
|
"type": "module",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "astro dev",
|
||||||
|
"start": "astro dev",
|
||||||
|
"build": "astro check && astro build",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/check": "^0.5.10",
|
||||||
|
"@astrojs/mdx": "^2.3.0",
|
||||||
|
"@astrojs/rss": "^4.0.5",
|
||||||
|
"@astrojs/sitemap": "^3.1.2",
|
||||||
|
"@astrojs/tailwind": "^5.1.0",
|
||||||
|
"astro": "^4.6.1",
|
||||||
|
"tailwindcss": "^3.4.3",
|
||||||
|
"typescript": "^5.4.5"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.12"
|
||||||
|
}
|
||||||
|
}
|
||||||
6644
pnpm-lock.yaml
generated
Normal file
BIN
public/blog-placeholder-1.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
public/blog-placeholder-2.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/blog-placeholder-3.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/blog-placeholder-4.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/blog-placeholder-5.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/blog-placeholder-about.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
9
public/favicon.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||||
|
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||||
|
<style>
|
||||||
|
path { fill: #000; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
path { fill: #FFF; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 749 B |
773
public/fonts/Iosevka.css
Normal file
|
|
@ -0,0 +1,773 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Thin.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Thin.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedThin.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedThin.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ThinOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ThinOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ThinOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ThinOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedThinOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedThinOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedThinOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedThinOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ThinItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ThinItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 100;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedThinItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedThinItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraLight.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraLight.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraLight.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraLight.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraLightItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraLightItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 200;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraLightItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraLightItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Light.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Light.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedLight.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedLight.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-LightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-LightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-LightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-LightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedLightOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedLightOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-LightItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-LightItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 300;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedLightItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedLightItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Regular.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Regular.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Extended.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Extended.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Oblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Oblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Oblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Oblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Italic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Italic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 400;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Medium.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Medium.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedMedium.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedMedium.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-MediumOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-MediumOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-MediumOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-MediumOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedMediumOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedMediumOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedMediumOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedMediumOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-MediumItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-MediumItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 500;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedMediumItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedMediumItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-SemiBold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-SemiBold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedSemiBold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedSemiBold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-SemiBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-SemiBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-SemiBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-SemiBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedSemiBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedSemiBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedSemiBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedSemiBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-SemiBoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-SemiBoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 600;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedSemiBoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedSemiBoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Bold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Bold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedBold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedBold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-BoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-BoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-BoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-BoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-BoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-BoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 700;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedBoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedBoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraBold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraBold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraBold.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraBold.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraBoldOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraBoldOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtraBoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtraBoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 800;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedExtraBoldItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedExtraBoldItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-Heavy.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-Heavy.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedHeavy.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedHeavy.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-HeavyOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-HeavyOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: normal;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-HeavyOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-HeavyOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: oblique;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedHeavyOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedHeavyOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web Oblique";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: expanded;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedHeavyOblique.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedHeavyOblique.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: normal;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-HeavyItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-HeavyItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Iosevka Web";
|
||||||
|
font-display: swap;
|
||||||
|
font-weight: 900;
|
||||||
|
font-stretch: expanded;
|
||||||
|
font-style: italic;
|
||||||
|
src:
|
||||||
|
url("WOFF2/Iosevka-ExtendedHeavyItalic.woff2") format("woff2"),
|
||||||
|
url("TTF/Iosevka-ExtendedHeavyItalic.ttf") format("truetype");
|
||||||
|
}
|
||||||