diff options
| author | rtkay123 <dev@kanjala.com> | 2026-02-22 13:02:35 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-02-22 13:02:35 +0200 |
| commit | 3fef60a3daf7d17dff22d815400e03f36e4128c9 (patch) | |
| tree | f806ab0df97fd314b8679eb483a8af9c8d344bfa /website/src/lib | |
| parent | 386ea2dc8271de95ac63864300f7198bdd445e23 (diff) | |
| download | sellershut-3fef60a3daf7d17dff22d815400e03f36e4128c9.tar.bz2 sellershut-3fef60a3daf7d17dff22d815400e03f36e4128c9.zip | |
feat(web): oauth redirect
Diffstat (limited to 'website/src/lib')
| -rw-r--r-- | website/src/lib/schemas/profile.ts | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/website/src/lib/schemas/profile.ts b/website/src/lib/schemas/profile.ts new file mode 100644 index 0000000..7272800 --- /dev/null +++ b/website/src/lib/schemas/profile.ts @@ -0,0 +1,13 @@ +import { z } from 'zod'; + +export const profileSchema = z.object({ + username: z + .string() + .min(3, { message: 'Username must be at least 3 characters' }) + .max(20, { message: 'Username is too long' }) + .regex(/^[a-zA-Z0-9_]+$/, { message: 'Only letters, numbers, and underscores allowed' }), + bio: z.string().max(160, { message: 'Bio must be under 160 characters' }).optional().default(''), +}); + +// Automatically generate a TS type from the Zod schema +export type ProfileSchema = z.infer<typeof profileSchema>; |
