From e36193a8c00be5c4f88bbc19e10547367ca5a1ad Mon Sep 17 00:00:00 2001
From: Guillaume <4112243+LEI@users.noreply.github.com>
Date: Mon, 9 Jun 2025 16:30:03 +0200
Subject: [PATCH] feat: add logo and favicon (#238)
---
app/components/Header.tsx | 4 ++--
app/components/Logo.tsx | 10 ++++++++++
app/root.tsx | 1 +
public/favicon.ico | Bin 16958 -> 74814 bytes
public/logo-dark-bg.svg | 14 ++++++++++++++
public/logo-dark.svg | 13 +++++++++++++
public/logo-light-bg.svg | 14 ++++++++++++++
public/logo-light.svg | 13 +++++++++++++
8 files changed, 67 insertions(+), 2 deletions(-)
create mode 100644 app/components/Logo.tsx
create mode 100644 public/logo-dark-bg.svg
create mode 100644 public/logo-dark.svg
create mode 100644 public/logo-light-bg.svg
create mode 100644 public/logo-light.svg
diff --git a/app/components/Header.tsx b/app/components/Header.tsx
index 3d57642..f02d6e3 100644
--- a/app/components/Header.tsx
+++ b/app/components/Header.tsx
@@ -2,13 +2,13 @@ import {
CircleUser,
Globe2,
Lock,
- PlaneTakeoff,
Server,
Settings,
Users,
} from 'lucide-react';
import type { ReactNode } from 'react';
import { NavLink, useSubmit } from 'react-router';
+import Logo from '~/components/Logo';
import Menu from '~/components/Menu';
import { AuthSession } from '~/server/web/sessions';
import cn from '~/utils/cn';
@@ -91,7 +91,7 @@ export default function Header(data: Props) {
>
diff --git a/app/components/Logo.tsx b/app/components/Logo.tsx
new file mode 100644
index 0000000..cb44372
--- /dev/null
+++ b/app/components/Logo.tsx
@@ -0,0 +1,10 @@
+import cn from '~/utils/cn';
+import LogoSvg from '../../public/logo-light.svg';
+
+export interface LogoProps {
+ className?: string;
+}
+
+export default function Logo({ className }: LogoProps) {
+ return

;
+}
diff --git a/app/root.tsx b/app/root.tsx
index 71ebcad..6cccf27 100644
--- a/app/root.tsx
+++ b/app/root.tsx
@@ -41,6 +41,7 @@ export function Layout({ children }: { readonly children: React.ReactNode }) {
+
{children}
diff --git a/public/favicon.ico b/public/favicon.ico
index 8830cf6821b354114848e6354889b8ecf6d2bc61..b13b79180909db61b9017ae43424660dc3065e63 100644
GIT binary patch
literal 74814
zcmeHQZF3aI5$*%6bVh)rpp#CAge0Vsu?>1XC4@JL7uy&ofB-oGBocyw`xmInF;3-6
zi~*Oy2J9r2ulWo534Tew#kNwhoqUOniCsy#5-YnaEw{JZJuhlo>)V;5Ry*50-967U
zv$K0U^esTf{pWo$kcDmi8EA9M+m-|XYnJ5RA@<4T3eeV;cef6AD?odDySwGxtpoD;
zyt{QkM~Al+pitNhn>TktXQ#JyL08un*s`S?y1RRzcWWPP^|yZL>+`lE^!N9>+W-`c
zMRyy39Xoco+n~D*!QkK!3=MhPu)B@G@bIv^jljr=w~e~n7>tgNy4x6xjd@!McJJN`
zd-izSKG?h0+a_S&K5v_ZiHS*=oZJrw4jhDo2M@u~qsQUcu_-uy`~*x*orDu7PQl5O
z({Sq4G)zxF2WQUAz}d62Ff(%wW@l&N+_`h`!VABI7hk*zSFgSVFa7G*@SB&f!OPdK
z!?kNS;FVWy!u9K~!i^g@;pWX(;kDOp!L3`j;nwXp;P&fx;Pp4|!W(z)!JWJJ;O@OQ
z;mx;x3%~pQAK>kG-i3GGeGlII)1Tol?|
^8TiH+D64#&viq;LK5mOMD$vAr8p?IG
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
EKbET!0{{R3
diff --git a/public/logo-dark-bg.svg b/public/logo-dark-bg.svg
new file mode 100644
index 0000000..25dd539
--- /dev/null
+++ b/public/logo-dark-bg.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/logo-dark.svg b/public/logo-dark.svg
new file mode 100644
index 0000000..6178374
--- /dev/null
+++ b/public/logo-dark.svg
@@ -0,0 +1,13 @@
+
diff --git a/public/logo-light-bg.svg b/public/logo-light-bg.svg
new file mode 100644
index 0000000..70832cd
--- /dev/null
+++ b/public/logo-light-bg.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/logo-light.svg b/public/logo-light.svg
new file mode 100644
index 0000000..a106898
--- /dev/null
+++ b/public/logo-light.svg
@@ -0,0 +1,13 @@
+