diff --git a/.prettierignore b/.prettierignore
index 57d0389..54ad965 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,3 +1,4 @@
.next
out
-pnpm-lock.yaml
\ No newline at end of file
+pnpm-lock.yaml
+node_modules
diff --git a/README.md b/README.md
index be54d92..649f220 100644
--- a/README.md
+++ b/README.md
@@ -49,5 +49,7 @@ A general list for any contributors. If you make a contribution add yourself her
- Quite a Fancy Emerald
- sexyduceduce
- mdoryammilwalrus
+- Crllect
+- xmb9
If you wish to support TitaniumNetwork please check out our Discord!
diff --git a/package.json b/package.json
index 4f8c133..8d7e3e7 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"homepage": "https://titaniumnetwork.org",
"scripts": {
"dev": "next dev",
- "build": "next build --webpack",
+ "build": "next build",
"start": "next start",
"format": "prettier --write .",
"lint": "next lint"
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..6d38f1f
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,2 @@
+allowBuilds:
+ sharp: true
diff --git a/prettier.config.js b/prettier.config.js
index b8b614a..5749b39 100644
--- a/prettier.config.js
+++ b/prettier.config.js
@@ -6,6 +6,7 @@ const config = {
useTabs: true,
semi: true,
singleQuote: false,
+ tabWidth: 4,
};
export default config;
diff --git a/src/app/error.tsx b/src/app/error.tsx
index 63843ab..a31f936 100644
--- a/src/app/error.tsx
+++ b/src/app/error.tsx
@@ -9,7 +9,9 @@ export default function Error() {
-
{disabled("TitaniumNetwork")}
+
+ {disabled("TitaniumNetwork")}
+
Something went wrong
diff --git a/src/app/globals.css b/src/app/globals.css
index e7546cd..d665353 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -40,7 +40,11 @@ body {
color: var(--text);
font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
background:
- radial-gradient(circle at 86% 14%, rgba(211, 70, 68, 0.08), transparent 36%),
+ radial-gradient(
+ circle at 86% 14%,
+ rgba(211, 70, 68, 0.08),
+ transparent 36%
+ ),
linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);
}
@@ -58,10 +62,13 @@ h1,
h2,
h3 {
color: var(--text);
- font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
+ font-family:
+ var(--font-raleway), "Avenir Next", "Segoe UI", "Helvetica Neue",
+ sans-serif;
font-weight: 600;
letter-spacing: -0.02em;
line-height: 0.98;
+ font-style: normal;
}
code {
@@ -82,17 +89,23 @@ code {
justify-content: center;
padding: 0.34rem 0.62rem;
color: var(--muted);
- font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
+ font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
font-size: 0.95rem;
font-weight: 400;
letter-spacing: 0.08em;
text-transform: uppercase;
- transition: color 0.1s ease, text-shadow 0.1s ease, transform 0.1s ease;
+ transition:
+ color 0.1s ease,
+ text-shadow 0.1s ease,
+ transform 0.1s ease;
}
.nav-link-label {
display: inline-block;
- transition: color 0.1s ease, text-shadow 0.1s ease, transform 0.1s ease;
+ transition:
+ color 0.1s ease,
+ text-shadow 0.1s ease,
+ transform 0.1s ease;
}
.nav-link-plain:hover,
@@ -101,13 +114,51 @@ code {
text-shadow: 0 0 1px color-mix(in oklab, var(--primary) 58%, white 42%);
}
+.mobile-nav-link {
+ display: flex;
+ align-items: center;
+ min-height: 2.6rem;
+ padding: 0.5rem 0.72rem;
+ border: 1px solid rgba(255, 255, 255, 0.12);
+ border-radius: 10px;
+ background: rgba(255, 255, 255, 0.04);
+ color: var(--muted);
+ font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
+ font-size: 0.92rem;
+ font-weight: 500;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ transition:
+ color 0.1s ease,
+ background-color 0.1s ease,
+ border-color 0.1s ease,
+ text-shadow 0.1s ease;
+}
+
+.mobile-nav-link:hover,
+.mobile-nav-link:focus-visible {
+ border-color: color-mix(in oklab, var(--primary) 68%, white 32%);
+ background: color-mix(in oklab, var(--primary) 12%, transparent);
+ color: color-mix(in oklab, var(--primary) 72%, white 28%);
+ text-shadow: 0 0 1px color-mix(in oklab, var(--primary) 58%, white 42%);
+}
+
+.mobile-nav-link-active {
+ border-color: rgba(255, 255, 255, 0.25);
+ background: rgba(255, 255, 255, 0.1);
+ color: rgba(255, 248, 251, 0.95);
+ text-shadow: 0 0 1px rgba(255, 248, 251, 0.3);
+}
+
.dock-brand-icon {
display: flex;
align-items: center;
justify-content: center;
transform: scale(1);
color: rgba(255, 248, 251, 0.78);
- filter: drop-shadow(0 0 0 color-mix(in oklab, var(--primary) 58%, white 42%));
+ filter: drop-shadow(
+ 0 0 0 color-mix(in oklab, var(--primary) 58%, white 42%)
+ );
transition:
color 0.1s ease,
filter 0.1s ease,
@@ -119,13 +170,17 @@ code {
.dock-brand-button:focus-visible .dock-brand-icon {
transform: scale(1.03);
color: color-mix(in oklab, var(--primary) 72%, white 28%);
- filter: drop-shadow(0 0 0.5px color-mix(in oklab, var(--primary) 58%, white 42%));
+ filter: drop-shadow(
+ 0 0 0.5px color-mix(in oklab, var(--primary) 58%, white 42%)
+ );
}
.dock-brand-button:active .dock-brand-icon {
transform: scale(0.97);
color: color-mix(in oklab, var(--primary) 64%, white 36%);
- filter: drop-shadow(0 0 1px color-mix(in oklab, var(--primary) 52%, white 48%));
+ filter: drop-shadow(
+ 0 0 1px color-mix(in oklab, var(--primary) 52%, white 48%)
+ );
}
.content-frame {
@@ -174,7 +229,7 @@ code {
.legacy-stack {
display: grid;
gap: 1rem;
- font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
+ font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
font-weight: 400;
}
@@ -206,7 +261,9 @@ code {
.service-source,
.service-name {
color: var(--text);
- transition: color 0.18s ease, text-shadow 0.18s ease;
+ transition:
+ color 0.18s ease,
+ text-shadow 0.18s ease;
}
.legacy-stack a:hover,
@@ -293,6 +350,7 @@ code {
.service-source {
color: var(--muted);
font-size: 0.9rem;
+ white-space: nowrap;
}
.social-badge {
@@ -329,17 +387,27 @@ code {
display: block;
font-size: clamp(2.7rem, 12vw, 4rem);
}
-
- .nav-link-plain {
- font-size: 0.84rem;
- padding: 0.28rem 0.5rem;
- }
}
@media (max-width: 720px) {
.service-row-legacy,
.social-row-legacy {
- flex-direction: column;
- align-items: flex-start;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: nowrap;
+ padding: 0.78rem 0.82rem;
+ gap: 0.75rem;
+ }
+
+ .service-name,
+ .social-name {
+ min-width: 0;
+ flex: 1 1 auto;
+ }
+
+ .service-meta,
+ .social-badge {
+ flex: 0 0 auto;
}
}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 60c602f..2b71d1c 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,7 +1,14 @@
import { Metadata, Viewport } from "next";
+import { Raleway } from "next/font/google";
import Nav from "../components/Nav";
import "./globals.css";
+const raleway = Raleway({
+ subsets: ["latin"],
+ weight: ["600"],
+ variable: "--font-raleway",
+});
+
export const metadata: Metadata = {
title: "TitaniumNetwork",
description:
@@ -28,7 +35,10 @@ export default function RootLayout({
children: React.ReactNode;
}) {
return (
-
+