feat: satoshi font, frontend styling

This commit is contained in:
Per Stark
2025-02-06 08:20:36 +01:00
parent 711e54aea1
commit 6dcae4471b
63 changed files with 4251 additions and 239 deletions
-43
View File
@@ -1,43 +0,0 @@
# Installing Webfonts
Follow these simple Steps.
## 1.
Put `satoshi/` Folder into a Folder called `fonts/`.
## 2.
Put `satoshi.css` into your `css/` Folder.
## 3. (Optional)
You may adapt the `url('path')` in `satoshi.css` depends on your Website Filesystem.
## 4.
Import `satoshi.css` at the top of you main Stylesheet.
```
@import url('satoshi.css');
```
## 5.
You are now ready to use the following Rules in your CSS to specify each Font Style:
```
font-family: Satoshi-Light;
font-family: Satoshi-LightItalic;
font-family: Satoshi-Regular;
font-family: Satoshi-Italic;
font-family: Satoshi-Medium;
font-family: Satoshi-MediumItalic;
font-family: Satoshi-Bold;
font-family: Satoshi-BoldItalic;
font-family: Satoshi-Black;
font-family: Satoshi-BlackItalic;
font-family: Satoshi-Variable;
font-family: Satoshi-VariableItalic;
```
## 6. (Optional)
Use `font-variation-settings` rule to controll axes of variable fonts:
wght 900.0
Available axes:
'wght' (range from 300.0 to 900.0
-148
View File
@@ -1,148 +0,0 @@
/**
* @license
*
* Font Family: Satoshi
* Designed by: Deni Anggara
* URL: https://www.fontshare.com/fonts/satoshi
* © 2025 Indian Type Foundry
*
* Satoshi Light
* Satoshi LightItalic
* Satoshi Regular
* Satoshi Italic
* Satoshi Medium
* Satoshi MediumItalic
* Satoshi Bold
* Satoshi BoldItalic
* Satoshi Black
* Satoshi BlackItalic
* Satoshi Variable (Variable font)
* Satoshi VariableItalic (Variable font)
*
*/
@font-face {
font-family: 'Satoshi-Light';
src: url('../fonts/Satoshi-Light.woff2') format('woff2'),
url('../fonts/Satoshi-Light.woff') format('woff'),
url('../fonts/Satoshi-Light.ttf') format('truetype');
font-weight: 300;
font-display: swap;
font-style: normal;
}
@font-face {
font-family: 'Satoshi-LightItalic';
src: url('../fonts/Satoshi-LightItalic.woff2') format('woff2'),
url('../fonts/Satoshi-LightItalic.woff') format('woff'),
url('../fonts/Satoshi-LightItalic.ttf') format('truetype');
font-weight: 300;
font-display: swap;
font-style: italic;
}
@font-face {
font-family: 'Satoshi-Regular';
src: url('../fonts/Satoshi-Regular.woff2') format('woff2'),
url('../fonts/Satoshi-Regular.woff') format('woff'),
url('../fonts/Satoshi-Regular.ttf') format('truetype');
font-weight: 400;
font-display: swap;
font-style: normal;
}
@font-face {
font-family: 'Satoshi-Italic';
src: url('../fonts/Satoshi-Italic.woff2') format('woff2'),
url('../fonts/Satoshi-Italic.woff') format('woff'),
url('../fonts/Satoshi-Italic.ttf') format('truetype');
font-weight: 400;
font-display: swap;
font-style: italic;
}
@font-face {
font-family: 'Satoshi-Medium';
src: url('../fonts/Satoshi-Medium.woff2') format('woff2'),
url('../fonts/Satoshi-Medium.woff') format('woff'),
url('../fonts/Satoshi-Medium.ttf') format('truetype');
font-weight: 500;
font-display: swap;
font-style: normal;
}
@font-face {
font-family: 'Satoshi-MediumItalic';
src: url('../fonts/Satoshi-MediumItalic.woff2') format('woff2'),
url('../fonts/Satoshi-MediumItalic.woff') format('woff'),
url('../fonts/Satoshi-MediumItalic.ttf') format('truetype');
font-weight: 500;
font-display: swap;
font-style: italic;
}
@font-face {
font-family: 'Satoshi-Bold';
src: url('../fonts/Satoshi-Bold.woff2') format('woff2'),
url('../fonts/Satoshi-Bold.woff') format('woff'),
url('../fonts/Satoshi-Bold.ttf') format('truetype');
font-weight: 700;
font-display: swap;
font-style: normal;
}
@font-face {
font-family: 'Satoshi-BoldItalic';
src: url('../fonts/Satoshi-BoldItalic.woff2') format('woff2'),
url('../fonts/Satoshi-BoldItalic.woff') format('woff'),
url('../fonts/Satoshi-BoldItalic.ttf') format('truetype');
font-weight: 700;
font-display: swap;
font-style: italic;
}
@font-face {
font-family: 'Satoshi-Black';
src: url('../fonts/Satoshi-Black.woff2') format('woff2'),
url('../fonts/Satoshi-Black.woff') format('woff'),
url('../fonts/Satoshi-Black.ttf') format('truetype');
font-weight: 900;
font-display: swap;
font-style: normal;
}
@font-face {
font-family: 'Satoshi-BlackItalic';
src: url('../fonts/Satoshi-BlackItalic.woff2') format('woff2'),
url('../fonts/Satoshi-BlackItalic.woff') format('woff'),
url('../fonts/Satoshi-BlackItalic.ttf') format('truetype');
font-weight: 900;
font-display: swap;
font-style: italic;
}
/**
* This is a variable font
* You can control variable axes as shown below:
* font-variation-settings: wght 900.0;
*
* available axes:
'wght' (range from 300.0 to 900.0
*/
@font-face {
font-family: 'Satoshi-Variable';
src: url('../fonts/Satoshi-Variable.woff2') format('woff2'),
url('../fonts/Satoshi-Variable.woff') format('woff'),
url('../fonts/Satoshi-Variable.ttf') format('truetype');
font-weight: 300 900;
font-display: swap;
font-style: normal;
}
/**
* This is a variable font
* You can control variable axes as shown below:
* font-variation-settings: wght 900.0;
*
* available axes:
'wght' (range from 300.0 to 900.0
*/
@font-face {
font-family: 'Satoshi-VariableItalic';
src: url('../fonts/Satoshi-VariableItalic.woff2') format('woff2'),
url('../fonts/Satoshi-VariableItalic.woff') format('woff'),
url('../fonts/Satoshi-VariableItalic.ttf') format('truetype');
font-weight: 300 900;
font-display: swap;
font-style: italic;
}
-1
View File
@@ -1 +0,0 @@
HI
+130
View File
@@ -12,7 +12,16 @@
If we ever want to remove these styles, we need to add an explicit border If we ever want to remove these styles, we need to add an explicit border
color utility to any element that depends on these defaults. color utility to any element that depends on these defaults.
*/ */
@view-transition {
navigation: auto;
}
@layer base { @layer base {
body {
@apply font-satoshi;
}
*, *,
::after, ::after,
@@ -21,4 +30,125 @@
::file-selector-button { ::file-selector-button {
border-color: var(--color-gray-200, currentColor); border-color: var(--color-gray-200, currentColor);
} }
}
/* satoshi.css */
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Light.woff2') format('woff2'),
url('fonts/Satoshi-Light.woff') format('woff'),
url('fonts/Satoshi-Light.ttf') format('truetype');
font-weight: 300;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-LightItalic.woff2') format('woff2'),
url('fonts/Satoshi-LightItalic.woff') format('woff'),
url('fonts/Satoshi-LightItalic.ttf') format('truetype');
font-weight: 300;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Regular.woff2') format('woff2'),
url('fonts/Satoshi-Regular.woff') format('woff'),
url('fonts/Satoshi-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Italic.woff2') format('woff2'),
url('fonts/Satoshi-Italic.woff') format('woff'),
url('fonts/Satoshi-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Medium.woff2') format('woff2'),
url('fonts/Satoshi-Medium.woff') format('woff'),
url('fonts/Satoshi-Medium.ttf') format('truetype');
font-weight: 500;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-MediumItalic.woff2') format('woff2'),
url('fonts/Satoshi-MediumItalic.woff') format('woff'),
url('fonts/Satoshi-MediumItalic.ttf') format('truetype');
font-weight: 500;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Bold.woff2') format('woff2'),
url('fonts/Satoshi-Bold.woff') format('woff'),
url('fonts/Satoshi-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-BoldItalic.woff2') format('woff2'),
url('fonts/Satoshi-BoldItalic.woff') format('woff'),
url('fonts/Satoshi-BoldItalic.ttf') format('truetype');
font-weight: 700;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Black.woff2') format('woff2'),
url('fonts/Satoshi-Black.woff') format('woff'),
url('fonts/Satoshi-Black.ttf') format('truetype');
font-weight: 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-BlackItalic.woff2') format('woff2'),
url('fonts/Satoshi-BlackItalic.woff') format('woff'),
url('fonts/Satoshi-BlackItalic.ttf') format('truetype');
font-weight: 900;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-Variable.woff2') format('woff2'),
url('fonts/Satoshi-Variable.woff') format('woff'),
url('fonts/Satoshi-Variable.ttf') format('truetype');
font-weight: 300 900;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Satoshi';
src: url('fonts/Satoshi-VariableItalic.woff2') format('woff2'),
url('fonts/Satoshi-VariableItalic.woff') format('woff'),
url('fonts/Satoshi-VariableItalic.ttf') format('truetype');
font-weight: 300 900;
font-style: italic;
font-display: swap;
} }
+4057 -1
View File
File diff suppressed because one or more lines are too long
+3
View File
@@ -15,6 +15,9 @@ module.exports = {
}, },
}, },
extend: { extend: {
fontFamily: {
satoshi: ['Satoshi', 'sans-serif'],
},
typography: { typography: {
DEFAULT: { DEFAULT: {
css: { css: {
+1 -29
View File
@@ -4,35 +4,7 @@
<body> <body>
<div class="min-h-screen flex flex-col"> <div class="min-h-screen flex flex-col">
<!-- Navbar --> <!-- Navbar -->
<nav class="navbar bg-base-200"> {% include "navigation_bar.html" %}
<div class="container flex mx-auto">
<div class="flex-1 flex items-center">
<a class="text-2xl text-primary " href="/" hx-boost="true">Minne</a>
</div>
<div>
<ul class="menu menu-horizontal px-1">
{% include "theme_toggle.html" %}
<li><a hx-boost="true" class="" href="/documentation">Docs</a></li>
{% if user %}
<li>
<details>
<summary>Account</summary>
<ul class="bg-base-100 rounded-t-none p-2 z-50">
<li><a hx-boost="true" href="/account">Account</a></li>
{% if user.admin %}
<li><a hx-boost="true" href="/admin">Admin</a></li>
{% endif %}
<li><a hx-boost="true" href="/signout">Sign out</a></li>
</ul>
</details>
</li>
{% else %}
<li><a hx-boost="true" class="" href="/signin">Sign in</a></li>
{% endif %}
</ul>
</div>
</div>
</nav>
<!-- Main Content --> <!-- Main Content -->
{% block main %}{% endblock %} {% block main %}{% endblock %}
+1 -1
View File
@@ -1,6 +1,6 @@
{% extends "body_base.html" %} {% extends "body_base.html" %}
{% block main %} {% block main %}
<main class="flex justify-center grow mt-2 sm:mt-4"> <main class="flex justify-center grow mt-2 sm:mt-4 pb-10">
<div class="container"> <div class="container">
<div class="grid grid-cols-1 lg:grid-cols-[auto_1fr] gap-4"> <div class="grid grid-cols-1 lg:grid-cols-[auto_1fr] gap-4">
<!-- Documentation Menu --> <!-- Documentation Menu -->
+4 -2
View File
@@ -13,13 +13,15 @@
release, open the <code>config.yaml</code> file and set the following configurations: release, open the <code>config.yaml</code> file and set the following configurations:
</li> </li>
</ol> </ol>
<pre><code>OPENAI_API_KEY: your_api_key <pre><code>
OPENAI_API_KEY: your_api_key
SMTP_EMAIL_RELAYER: your_email_relayer SMTP_EMAIL_RELAYER: your_email_relayer
SMTP_USERNAME: your_smtp_username SMTP_USERNAME: your_smtp_username
SMTP_PASSWORD: your_smtp_password SMTP_PASSWORD: your_smtp_password
DB_ADDRESS: your_db_address DB_ADDRESS: your_db_address
DB_USER: your_db_user DB_USER: your_db_user
DB_PASSWORD: your_db_password</code></pre> DB_PASSWORD: your_db_password
</code></pre>
<p>The database settings relate to a running instance of SurrealDB. You can opt for their cloud solution or run your <p>The database settings relate to a running instance of SurrealDB. You can opt for their cloud solution or run your
own instance.</p> own instance.</p>
+13 -9
View File
@@ -1,6 +1,6 @@
{% extends "documentation/base.html" %} {% extends "documentation/base.html" %}
{% block article %} {% block article %}
<h1>Documentation</h1> <h2>Documentation</h2>
<p> <p>
Personalised Knowledge Management (PKM) is a system designed to help individuals organise, store, and retrieve Personalised Knowledge Management (PKM) is a system designed to help individuals organise, store, and retrieve
information effectively. It empowers users to create a personalised workflow for managing knowledge, enabling information effectively. It empowers users to create a personalised workflow for managing knowledge, enabling
@@ -10,13 +10,17 @@
This documentation will guide you through the core concepts, tools, and best practices for building and This documentation will guide you through the core concepts, tools, and best practices for building and
maintaining your own PKM system. maintaining your own PKM system.
</p> </p>
<div class="card p-6 rounded-lg shadow-md"> <div class="card bg-base-200 rounded-lg shadow-md">
<h2>Getting Started</h2> <div class="card-body">
<p> <h3 class="card-title not-prose">Getting Started</h3>
To begin, explore the sections in the navigation menu. Each section provides detailed insights into <p>
different To begin, explore the sections in the navigation menu. Each section provides detailed insights into
aspects of PKM, from foundational principles to advanced techniques. different
</p> aspects of PKM, from foundational principles to advanced techniques.
<a href="/documentation/quick-start" class="btn btn-primary text-primary-content" hx-boost="true">Learn More</a> </p>
<div class="card-actions">
<a href="/documentation/quick-start" class="btn btn-primary text-primary-content" hx-boost="true">Learn More</a>
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}
+1 -3
View File
@@ -1,8 +1,6 @@
{% extends 'documentation/base.html' %} {% extends 'documentation/base.html' %}
{% block article %} {% block article %}
<header> <h2>Mobile Friendly Ingression: How to Submit Content from iOS to Minne</h2>
<h2>Mobile Friendly Ingression: How to Submit Content from iOS to Minne</h2>
</header>
<p>Minne is built with simplicity in mind. Whether you wish to save a file, capture a thought, or share a page, <p>Minne is built with simplicity in mind. Whether you wish to save a file, capture a thought, or share a page,
submitting content is effortless. Our server provides API access that enables users to perform actions using a submitting content is effortless. Our server provides API access that enables users to perform actions using a
personalized API key.</p> personalized API key.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
{% extends 'documentation/base.html' %} {% extends 'documentation/base.html' %}
{% block article %} {% block article %}
<h1>Privacy Policy</h1> <h2>Privacy Policy</h2>
<p>We value your privacy and are committed to protecting your personal information. This policy <p>We value your privacy and are committed to protecting your personal information. This policy
outlines how we handle your data and ensures transparency in our practices.</p> outlines how we handle your data and ensures transparency in our practices.</p>
+10
View File
@@ -33,4 +33,14 @@
</head> </head>
{% block body %}{% endblock %} {% block body %}{% endblock %}
<script>
(function wait_for_htmx() {
if (window.htmx) {
htmx.config.globalViewTransitions = true;
} else {
setTimeout(wait_for_htmx, 50);
}
})();
</script>
</html> </html>
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="space-y-8"> <div class="space-y-8">
<!-- Hero Section --> <!-- Hero Section -->
<h1 <h1
class="text-5xl sm:text-6xl py-4 pt-10 font-bold bg-linear-to-r from-primary to-secondary text-transparent bg-clip-text"> class="text-5xl sm:text-6xl py-4 pt-10 font-extrabold bg-linear-to-r from-primary to-secondary text-transparent bg-clip-text font-satoshi">
Simplify Your Knowledge Management Simplify Your Knowledge Management
</h1> </h1>
<p class="text-xl text-base-content/70"> <p class="text-xl text-base-content/70">
+29
View File
@@ -0,0 +1,29 @@
<nav class="navbar bg-base-200">
<div class="container flex mx-auto">
<div class="flex-1 flex items-center">
<a class="text-2xl text-primary font-bold" href="/" hx-boost="true">Minne</a>
</div>
<div>
<ul class="menu menu-horizontal px-1">
{% include "theme_toggle.html" %}
<li><a hx-boost="true" class="" href="/documentation">Docs</a></li>
{% if user %}
<li>
<details>
<summary>Account</summary>
<ul class="bg-base-100 rounded-t-none p-2 z-50">
<li><a hx-boost="true" href="/account">Account</a></li>
{% if user.admin %}
<li><a hx-boost="true" href="/admin">Admin</a></li>
{% endif %}
<li><a hx-boost="true" href="/signout">Sign out</a></li>
</ul>
</details>
</li>
{% else %}
<li><a hx-boost="true" class="" href="/signin">Sign in</a></li>
{% endif %}
</ul>
</div>
</div>
</nav>