From f5cf658bc05e69dd9452e37ba13cbf42d0ab52b3 Mon Sep 17 00:00:00 2001 From: h0lybyte <5599058+h0lybyte@users.noreply.github.com> Date: Mon, 11 Nov 2024 04:35:45 -0500 Subject: [PATCH] feat(expo-bbq): adding a base user schema. --- .../src/components/auth/user/TamaOnboard.tsx | 1 + .../src/components/auth/user/UserSchema.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 packages/expo-bbq/src/components/auth/user/UserSchema.ts diff --git a/packages/expo-bbq/src/components/auth/user/TamaOnboard.tsx b/packages/expo-bbq/src/components/auth/user/TamaOnboard.tsx index b51007f56..5d928faec 100644 --- a/packages/expo-bbq/src/components/auth/user/TamaOnboard.tsx +++ b/packages/expo-bbq/src/components/auth/user/TamaOnboard.tsx @@ -1,6 +1,7 @@ import React, { useState, useCallback, useMemo, useEffect } from 'react'; import { YStack, Input, Button, TextArea, Text } from 'tamagui'; import { createSupabaseClient } from '../../wrapper/Supabase'; +import { socialsSchema, styleSchema } from './UserSchema'; export function TamaOnboard({ supabaseUrl, diff --git a/packages/expo-bbq/src/components/auth/user/UserSchema.ts b/packages/expo-bbq/src/components/auth/user/UserSchema.ts new file mode 100644 index 000000000..524f876c1 --- /dev/null +++ b/packages/expo-bbq/src/components/auth/user/UserSchema.ts @@ -0,0 +1,16 @@ +import { z } from 'zod'; + +// Socials schema +export const socialsSchema = z.object({ + twitter: z.string().url().regex(/^https:\/\/(www\.)?twitter.com\/[a-zA-Z0-9_]{1,15}\/?$/).optional(), + github: z.string().url().regex(/^https:\/\/(www\.)?github.com\/[a-zA-Z0-9_-]+\/?$/).optional(), + linkedin: z.string().url().regex(/^https:\/\/(www\.)?linkedin.com\/in\/[a-zA-Z0-9_-]+\/?$/).optional(), + website: z.string().url().optional(), +}).partial(); + +// Style schema +export const styleSchema = z.object({ + colors: z.array(z.string().regex(/^#[A-Fa-f0-9]{8}$/)).max(10).optional(), + cover: z.string().regex(/^[a-zA-Z0-9_-]+$/).optional(), + background: z.string().regex(/^[a-zA-Z0-9_-]+$/).optional(), +}).partial();