+
{/* Bio */}
+ {base64ToUtf8(user.bio)}
);
diff --git a/client/src/hooks/data/useUserInfo.ts b/client/src/hooks/data/useUserInfo.ts
index c45e453..46e6abe 100644
--- a/client/src/hooks/data/useUserInfo.ts
+++ b/client/src/hooks/data/useUserInfo.ts
@@ -12,7 +12,7 @@ export function useUserInfo() {
nickname: string;
subtitle: string;
avatar: string;
- checkin: string | null;
+ bio: string;
}
>('/user/info');
return response.data;
diff --git a/client/src/index.css b/client/src/index.css
index 7ed3aa3..2a7c5f4 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -1,5 +1,6 @@
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+Mono:wght@100..900&display=swap");
@import "tailwindcss";
+@plugin "@tailwindcss/typography";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
diff --git a/client/src/lib/utils.ts b/client/src/lib/utils.ts
index 568578c..4306642 100644
--- a/client/src/lib/utils.ts
+++ b/client/src/lib/utils.ts
@@ -1,7 +1,19 @@
import type { ClassValue } from 'clsx';
+// eslint-disable-next-line unicorn/prefer-node-protocol
+import { Buffer } from 'buffer';
import { clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
+
+export function base64ToUtf8(base64: string): string {
+ return new TextDecoder('utf-8').decode(
+ Uint8Array.from(Buffer.from(base64, 'base64')),
+ );
+}
+
+export function utf8ToBase64(utf8: string): string {
+ return Buffer.from(utf8, 'utf-8').toString('base64');
+}
diff --git a/client/src/routes/magicLinkSent.tsx b/client/src/routes/magicLinkSent.tsx
index 6a99aa7..6ce3237 100644
--- a/client/src/routes/magicLinkSent.tsx
+++ b/client/src/routes/magicLinkSent.tsx
@@ -6,7 +6,6 @@ import NixOSLogo from '@/assets/nixos.svg?react';
const paramsSchema = z.object({
email: z.string().optional(),
});
-
export const Route = createFileRoute('/magicLinkSent')({
component: RouteComponent,
validateSearch: zodValidator(paramsSchema),
@@ -16,7 +15,8 @@ function RouteComponent() {
const { email } = Route.useSearch();
return email !== undefined
? (
-
@@ -29,5 +29,7 @@ function RouteComponent() {
{email}
)
- : ;
+ : (
+
+ );
}