diff --git a/apps/backend/src/config/index.ts b/apps/backend/src/config/index.ts index 6c0f416..2d8beb0 100644 --- a/apps/backend/src/config/index.ts +++ b/apps/backend/src/config/index.ts @@ -50,7 +50,7 @@ const environmentVariableSchema = z.object({ .string() .regex( /^\d+[smhd]$/, - "Invalid JWT expiry format. Use formats like '15m', '1h', '7d'." + "Invalid JWT expiry format. Use formats like '15m', '1h', '7d'.", ) .transform((val) => val as `${number}${"s" | "m" | "h" | "d"}`) .default("15m"), @@ -58,7 +58,7 @@ const environmentVariableSchema = z.object({ .string() .regex( /^\d+[smhd]$/, - "Invalid JWT expiry format. Use formats like '15m', '1h', '7d'." + "Invalid JWT expiry format. Use formats like '15m', '1h', '7d'.", ) .transform((val) => val as `${number}${"s" | "m" | "h" | "d"}`) .default("7d"), diff --git a/apps/backend/src/middlewares/error.ts b/apps/backend/src/middlewares/error.ts index e1f0da8..9b663cd 100644 --- a/apps/backend/src/middlewares/error.ts +++ b/apps/backend/src/middlewares/error.ts @@ -5,7 +5,7 @@ import { GenericError } from "@repo/backend/utils/errors"; const errorHandler: ErrorRequestHandler = ( error: unknown, req: Request, - res: Response + res: Response, ) => { console.error(error); diff --git a/apps/backend/src/middlewares/validation.ts b/apps/backend/src/middlewares/validation.ts index ce24057..4546856 100644 --- a/apps/backend/src/middlewares/validation.ts +++ b/apps/backend/src/middlewares/validation.ts @@ -11,7 +11,8 @@ const validateHandler = (schema: z.ZodSchema) => { if (error instanceof ZodError) { const errorMessages = error.errors .map( - (issue: z.ZodIssue) => `${issue.path.join(".")} is ${issue.message}` + (issue: z.ZodIssue) => + `${issue.path.join(".")} is ${issue.message}`, ) .join(", "); throw new BadRequestError(errorMessages); diff --git a/apps/backend/src/modules/auth/auth.route.ts b/apps/backend/src/modules/auth/auth.route.ts index 645e545..3e0ea45 100644 --- a/apps/backend/src/modules/auth/auth.route.ts +++ b/apps/backend/src/modules/auth/auth.route.ts @@ -19,13 +19,13 @@ authRouter.post("/send-otp", validateHandler(sendOtpSchema), sendOtpController); authRouter.post( "/verify-otp", validateHandler(verifyOtpSchema), - verifyOtpController + verifyOtpController, ); authRouter.get( "/refresh-token", validateHandler(refreshTokenSchema), - refreshTokenController + refreshTokenController, ); authRouter.get("/logout", logoutController); diff --git a/apps/backend/src/modules/auth/auth.service.ts b/apps/backend/src/modules/auth/auth.service.ts index dd52b6f..7b5a14d 100644 --- a/apps/backend/src/modules/auth/auth.service.ts +++ b/apps/backend/src/modules/auth/auth.service.ts @@ -13,7 +13,7 @@ import { const twilioClient = twilio( process.env.TWILIO_ACCOUNT_SID, - process.env.TWILIO_AUTH_TOKEN + process.env.TWILIO_AUTH_TOKEN, ); const sendOtp = async (phoneNumber: string) => { diff --git a/apps/backend/src/modules/auth/auth.test.ts b/apps/backend/src/modules/auth/auth.test.ts index 1465cb9..573b276 100644 --- a/apps/backend/src/modules/auth/auth.test.ts +++ b/apps/backend/src/modules/auth/auth.test.ts @@ -102,7 +102,7 @@ describe("Auth API", () => { const endIndex = cookie[0].indexOf(";", startIndex); const extractedToken = cookie[0].slice(startIndex, endIndex); expect(await argon2.verify(refreshTokenRow!.token, extractedToken)).toBe( - true + true, ); }); @@ -194,7 +194,7 @@ describe("Auth API", () => { .get("/api/v1/auth/refresh-token") .set( "Cookie", - `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=invalidToken` + `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=invalidToken`, ); expect(res.status).toBe(401); @@ -218,7 +218,7 @@ describe("Auth API", () => { .get("/api/v1/auth/refresh-token") .set( "Cookie", - `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}` + `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}`, ); expect(res.status).toBe(401); @@ -245,7 +245,7 @@ describe("Auth API", () => { .get("/api/v1/auth/refresh-token") .set( "Cookie", - `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}` + `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}`, ); expect(res.status).toBe(401); @@ -267,7 +267,7 @@ describe("Auth API", () => { .get("/api/v1/auth/refresh-token") .set( "Cookie", - `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}` + `${process.env.JWT_REFRESH_TOKEN_COOKIE_KEY}=${refreshToken}`, ); expect(res.status).toBe(401); @@ -298,7 +298,7 @@ describe("Auth API", () => { expect( cookieHeader.includes("Max-Age=0") || - cookieHeader.includes("Expires=Thu, 01 Jan 1970") + cookieHeader.includes("Expires=Thu, 01 Jan 1970"), ).toBe(true); expect(cookieHeader.includes("refreshToken=;")).toBeDefined(); diff --git a/apps/backend/src/modules/chat/chat.controller.ts b/apps/backend/src/modules/chat/chat.controller.ts index 09c946f..d3c809a 100644 --- a/apps/backend/src/modules/chat/chat.controller.ts +++ b/apps/backend/src/modules/chat/chat.controller.ts @@ -10,7 +10,7 @@ const getChatsController = async (req: AuthenticatedRequest, res: Response) => { const getChatDetailsController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const { chatId } = req.params; const { page, limit } = req.query; @@ -18,7 +18,7 @@ const getChatDetailsController = async ( req.user.id, parseInt(chatId), parseInt(page as string), - parseInt(limit as string) + parseInt(limit as string), ); res.status(StatusCodes.OK).json({ chatDetails }); }; diff --git a/apps/backend/src/modules/chat/chat.service.ts b/apps/backend/src/modules/chat/chat.service.ts index 8a6ac88..cfd57ed 100644 --- a/apps/backend/src/modules/chat/chat.service.ts +++ b/apps/backend/src/modules/chat/chat.service.ts @@ -18,8 +18,8 @@ const getChats = async (userId: number) => { db .select() .from(chatParticipants) - .where(eq(chatParticipants.userId, users.id)) - ) + .where(eq(chatParticipants.userId, users.id)), + ), ); return await Promise.all( @@ -47,10 +47,10 @@ const getChats = async (userId: number) => { .where( and( eq(messageReadReceipts.chatId, chat.id), - eq(messageReadReceipts.userId, userId) - ) - ) - ) + eq(messageReadReceipts.userId, userId), + ), + ), + ), ); return { @@ -58,7 +58,7 @@ const getChats = async (userId: number) => { latestMessage, unreadMessagesCount, }; - }) + }), ); }; @@ -66,12 +66,12 @@ const getChatDetails = async ( userId: number, chatId: number, page: number, - limit: number + limit: number, ) => { const isParticipant = await db.query.chatParticipants.findFirst({ where: and( eq(chatParticipants.userId, userId), - eq(chatParticipants.chatId, chatId) + eq(chatParticipants.chatId, chatId), ), }); if (!isParticipant) diff --git a/apps/backend/src/modules/friends/friends.controller.ts b/apps/backend/src/modules/friends/friends.controller.ts index bc5a6fa..02e844e 100644 --- a/apps/backend/src/modules/friends/friends.controller.ts +++ b/apps/backend/src/modules/friends/friends.controller.ts @@ -11,7 +11,7 @@ import { const getFriendsController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const friends = await getFriends(req.user.id); res.status(StatusCodes.OK).json({ friends }); @@ -19,7 +19,7 @@ const getFriendsController = async ( const addFriendController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const { friendId } = req.params; await addFriend(req.user.id, parseInt(friendId)); @@ -30,7 +30,7 @@ const addFriendController = async ( const deleteFriendController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const { friendId } = req.params; await deleteFriend(req.user.id, parseInt(friendId)); @@ -39,7 +39,7 @@ const deleteFriendController = async ( const acceptFriendRequestController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const { friendId } = req.params; await acceptFriendRequest(req.user.id, parseInt(friendId)); @@ -48,7 +48,7 @@ const acceptFriendRequestController = async ( const denyFriendRequestController = async ( req: AuthenticatedRequest, - res: Response + res: Response, ) => { const { friendId } = req.params; await denyFriendRequest(req.user.id, parseInt(friendId)); diff --git a/apps/backend/src/modules/friends/friends.route.ts b/apps/backend/src/modules/friends/friends.route.ts index fd6e9c5..5ddfe8c 100644 --- a/apps/backend/src/modules/friends/friends.route.ts +++ b/apps/backend/src/modules/friends/friends.route.ts @@ -16,20 +16,16 @@ friendsRouter.get("/", (req, res) => { getFriendsController(req as AuthenticatedRequest, res as Response); }); -friendsRouter.post( - "/:friendId", - validateHandler(friendsSchema), - (req, res) => { - addFriendController(req as AuthenticatedRequest, res as Response); - } -); +friendsRouter.post("/:friendId", validateHandler(friendsSchema), (req, res) => { + addFriendController(req as AuthenticatedRequest, res as Response); +}); friendsRouter.delete( "/:friendId", validateHandler(friendsSchema), (req, res) => { deleteFriendController(req as AuthenticatedRequest, res as Response); - } + }, ); friendsRouter.post( @@ -37,7 +33,7 @@ friendsRouter.post( validateHandler(friendsSchema), (req, res) => { acceptFriendRequestController(req as AuthenticatedRequest, res as Response); - } + }, ); friendsRouter.post( @@ -45,7 +41,7 @@ friendsRouter.post( validateHandler(friendsSchema), (req, res) => { denyFriendRequestController(req as AuthenticatedRequest, res as Response); - } + }, ); export default friendsRouter; diff --git a/apps/backend/src/modules/friends/friends.service.ts b/apps/backend/src/modules/friends/friends.service.ts index 4213bee..ef1b7cf 100644 --- a/apps/backend/src/modules/friends/friends.service.ts +++ b/apps/backend/src/modules/friends/friends.service.ts @@ -18,13 +18,13 @@ const getFriends = async (userId: number) => { users, and( eq(friends.status, "accepted"), - or(eq(friends.userA, userId), eq(friends.userB, userId)) - ) + or(eq(friends.userA, userId), eq(friends.userB, userId)), + ), ) .where( and( - not(eq(users.id, userId)) // Exclude self from results - ) + not(eq(users.id, userId)), // Exclude self from results + ), ); const friendsRequestsSent = await db @@ -67,7 +67,7 @@ const addFriend = async (userId: number, friendId: number) => { const friendship = await db.query.friends.findFirst({ where: or( and(eq(friends.userA, userId), eq(friends.userB, friendId)), - and(eq(friends.userB, userId), eq(friends.userA, friendId)) + and(eq(friends.userB, userId), eq(friends.userA, friendId)), ), with: { userA: true, @@ -98,8 +98,8 @@ const deleteFriend = async (userId: number, friendId: number) => { .where( or( and(eq(friends.userA, userId), eq(friends.userB, friendId)), - and(eq(friends.userB, userId), eq(friends.userA, friendId)) - ) + and(eq(friends.userB, userId), eq(friends.userA, friendId)), + ), ) .returning(); @@ -115,8 +115,8 @@ const acceptFriendRequest = async (userId: number, friendId: number) => { and( eq(friends.userA, userId), eq(friends.userB, friendId), - eq(friends.status, "pending") - ) + eq(friends.status, "pending"), + ), ) .returning(); @@ -132,8 +132,8 @@ const denyFriendRequest = async (userId: number, friendId: number) => { and( eq(friends.userA, userId), eq(friends.userB, friendId), - eq(friends.status, "pending") - ) + eq(friends.status, "pending"), + ), ) .returning(); diff --git a/apps/backend/src/server.ts b/apps/backend/src/server.ts index ebf9268..ce342ab 100644 --- a/apps/backend/src/server.ts +++ b/apps/backend/src/server.ts @@ -20,7 +20,7 @@ export const createServer = (): Express => { rateLimit({ windowMs: process.env.WINDOW_SIZE_IN_MINUTES * 60 * 1000, max: process.env.MAX_NUMBER_OF_REQUESTS_PER_WINDOW_SIZE, - }) + }), ) .get("/healthcheck", (_req, res) => { res.json({ diff --git a/apps/backend/src/utils/errors.ts b/apps/backend/src/utils/errors.ts index 3d2a1a4..619a104 100644 --- a/apps/backend/src/utils/errors.ts +++ b/apps/backend/src/utils/errors.ts @@ -30,7 +30,7 @@ export class ServerError extends GenericError { super( ReasonPhrases.INTERNAL_SERVER_ERROR, StatusCodes.INTERNAL_SERVER_ERROR, - message + message, ); } } @@ -40,7 +40,7 @@ export class RateLimitError extends GenericError { super( ReasonPhrases.TOO_MANY_REQUESTS, StatusCodes.TOO_MANY_REQUESTS, - message + message, ); } } diff --git a/packages/database/src/schema/friendships.ts b/packages/database/src/schema/friendships.ts index bd23f65..9cfc41b 100644 --- a/packages/database/src/schema/friendships.ts +++ b/packages/database/src/schema/friendships.ts @@ -21,7 +21,7 @@ export const friends = pgTable( status: friendStatusEnum().notNull().default("pending"), ...timeStamps(false), }, - (table) => [primaryKey({ columns: [table.userA, table.userB] })] + (table) => [primaryKey({ columns: [table.userA, table.userB] })], ); export const blockedUsers = pgTable("blocked_users", { diff --git a/packages/database/src/schema/realtions.ts b/packages/database/src/schema/realtions.ts index 076b9e8..480ea2d 100644 --- a/packages/database/src/schema/realtions.ts +++ b/packages/database/src/schema/realtions.ts @@ -19,7 +19,7 @@ export const userPrivacySettingsRelations = relations( fields: [userPrivacySettings.userId], references: [users.id], }), - }) + }), ); export const friendsRealtions = relations(friends, ({ one }) => ({ @@ -64,7 +64,7 @@ export const chatParticipantsRelations = relations( fields: [chatParticipants.chatId], references: [chats.id], }), - }) + }), ); export const messagesRelations = relations(messages, ({ one }) => ({ @@ -94,5 +94,5 @@ export const messageReadReceiptsRelations = relations( fields: [messageReadReceipts.userId], references: [users.id], }), - }) + }), ); diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js index 04f8e55..27bb21a 100644 --- a/packages/eslint-config/next.js +++ b/packages/eslint-config/next.js @@ -45,5 +45,5 @@ export const config = [ // React scope no longer necessary with new JSX transform. "react/react-in-jsx-scope": "off", }, - } + }, ]; diff --git a/packages/ui/src/components/avatar.tsx b/packages/ui/src/components/avatar.tsx index 2a60e4b..11b1e61 100644 --- a/packages/ui/src/components/avatar.tsx +++ b/packages/ui/src/components/avatar.tsx @@ -14,7 +14,7 @@ function Avatar({ data-slot="avatar" className={cn( "relative flex size-8 shrink-0 overflow-hidden rounded-full", - className + className, )} {...props} /> @@ -43,7 +43,7 @@ function AvatarFallback({ data-slot="avatar-fallback" className={cn( "bg-muted flex size-full items-center justify-center rounded-full", - className + className, )} {...props} /> diff --git a/packages/ui/src/components/button.tsx b/packages/ui/src/components/button.tsx index 1900410..5582d89 100644 --- a/packages/ui/src/components/button.tsx +++ b/packages/ui/src/components/button.tsx @@ -1,8 +1,8 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; const buttonVariants = cva( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", @@ -31,8 +31,8 @@ const buttonVariants = cva( variant: "default", size: "default", }, - } -) + }, +); function Button({ className, @@ -42,9 +42,9 @@ function Button({ ...props }: React.ComponentProps<"button"> & VariantProps & { - asChild?: boolean + asChild?: boolean; }) { - const Comp = asChild ? Slot : "button" + const Comp = asChild ? Slot : "button"; return ( - ) + ); } -export { Button, buttonVariants } +export { Button, buttonVariants }; diff --git a/packages/ui/src/components/card.tsx b/packages/ui/src/components/card.tsx index 471e3a6..c117fe1 100644 --- a/packages/ui/src/components/card.tsx +++ b/packages/ui/src/components/card.tsx @@ -1,6 +1,6 @@ -import * as React from "react" +import * as React from "react"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Card({ className, ...props }: React.ComponentProps<"div">) { return ( @@ -8,11 +8,11 @@ function Card({ className, ...props }: React.ComponentProps<"div">) { data-slot="card" className={cn( "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", - className + className, )} {...props} /> - ) + ); } function CardHeader({ className, ...props }: React.ComponentProps<"div">) { @@ -22,7 +22,7 @@ function CardHeader({ className, ...props }: React.ComponentProps<"div">) { className={cn("flex flex-col gap-1.5 px-6", className)} {...props} /> - ) + ); } function CardTitle({ className, ...props }: React.ComponentProps<"div">) { @@ -32,7 +32,7 @@ function CardTitle({ className, ...props }: React.ComponentProps<"div">) { className={cn("leading-none font-semibold", className)} {...props} /> - ) + ); } function CardDescription({ className, ...props }: React.ComponentProps<"div">) { @@ -42,7 +42,7 @@ function CardDescription({ className, ...props }: React.ComponentProps<"div">) { className={cn("text-muted-foreground text-sm", className)} {...props} /> - ) + ); } function CardContent({ className, ...props }: React.ComponentProps<"div">) { @@ -52,7 +52,7 @@ function CardContent({ className, ...props }: React.ComponentProps<"div">) { className={cn("px-6", className)} {...props} /> - ) + ); } function CardFooter({ className, ...props }: React.ComponentProps<"div">) { @@ -62,7 +62,14 @@ function CardFooter({ className, ...props }: React.ComponentProps<"div">) { className={cn("flex items-center px-6", className)} {...props} /> - ) + ); } -export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, +}; diff --git a/packages/ui/src/components/input-otp.tsx b/packages/ui/src/components/input-otp.tsx index 0950cab..7b51440 100644 --- a/packages/ui/src/components/input-otp.tsx +++ b/packages/ui/src/components/input-otp.tsx @@ -1,29 +1,29 @@ -"use client" +"use client"; -import * as React from "react" -import { OTPInput, OTPInputContext } from "input-otp" -import { MinusIcon } from "lucide-react" +import * as React from "react"; +import { OTPInput, OTPInputContext } from "input-otp"; +import { MinusIcon } from "lucide-react"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function InputOTP({ className, containerClassName, ...props }: React.ComponentProps & { - containerClassName?: string + containerClassName?: string; }) { return ( - ) + ); } function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) { @@ -33,7 +33,7 @@ function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) { className={cn("flex items-center", className)} {...props} /> - ) + ); } function InputOTPSlot({ @@ -41,10 +41,10 @@ function InputOTPSlot({ className, ...props }: React.ComponentProps<"div"> & { - index: number + index: number; }) { - const inputOTPContext = React.useContext(OTPInputContext) - const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] + const inputOTPContext = React.useContext(OTPInputContext); + const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]; return (
@@ -63,7 +63,7 @@ function InputOTPSlot({
)} - ) + ); } function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) { @@ -71,7 +71,7 @@ function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) {
- ) + ); } -export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } +export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }; diff --git a/packages/ui/src/components/input.tsx b/packages/ui/src/components/input.tsx index 2737858..5f8279e 100644 --- a/packages/ui/src/components/input.tsx +++ b/packages/ui/src/components/input.tsx @@ -1,6 +1,6 @@ -import * as React from "react" +import * as React from "react"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Input({ className, type, ...props }: React.ComponentProps<"input">) { return ( @@ -11,11 +11,11 @@ function Input({ className, type, ...props }: React.ComponentProps<"input">) { "border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", - className + className, )} {...props} /> - ) + ); } -export { Input } +export { Input }; diff --git a/packages/ui/src/components/label.tsx b/packages/ui/src/components/label.tsx index 0f76d92..3132f24 100644 --- a/packages/ui/src/components/label.tsx +++ b/packages/ui/src/components/label.tsx @@ -1,9 +1,9 @@ -"use client" +"use client"; -import * as React from "react" -import * as LabelPrimitive from "@radix-ui/react-label" +import * as React from "react"; +import * as LabelPrimitive from "@radix-ui/react-label"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Label({ className, @@ -14,11 +14,11 @@ function Label({ data-slot="label" className={cn( "text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", - className + className, )} {...props} /> - ) + ); } -export { Label } +export { Label }; diff --git a/packages/ui/src/components/separator.tsx b/packages/ui/src/components/separator.tsx index df56a18..bcce3c6 100644 --- a/packages/ui/src/components/separator.tsx +++ b/packages/ui/src/components/separator.tsx @@ -1,9 +1,9 @@ -"use client" +"use client"; -import * as React from "react" -import * as SeparatorPrimitive from "@radix-ui/react-separator" +import * as React from "react"; +import * as SeparatorPrimitive from "@radix-ui/react-separator"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Separator({ className, @@ -18,11 +18,11 @@ function Separator({ orientation={orientation} className={cn( "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", - className + className, )} {...props} /> - ) + ); } -export { Separator } +export { Separator }; diff --git a/packages/ui/src/components/sheet.tsx b/packages/ui/src/components/sheet.tsx index 10c3e96..0ec8b0e 100644 --- a/packages/ui/src/components/sheet.tsx +++ b/packages/ui/src/components/sheet.tsx @@ -1,31 +1,31 @@ -"use client" +"use client"; -import * as React from "react" -import * as SheetPrimitive from "@radix-ui/react-dialog" -import { XIcon } from "lucide-react" +import * as React from "react"; +import * as SheetPrimitive from "@radix-ui/react-dialog"; +import { XIcon } from "lucide-react"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Sheet({ ...props }: React.ComponentProps) { - return + return ; } function SheetTrigger({ ...props }: React.ComponentProps) { - return + return ; } function SheetClose({ ...props }: React.ComponentProps) { - return + return ; } function SheetPortal({ ...props }: React.ComponentProps) { - return + return ; } function SheetOverlay({ @@ -37,11 +37,11 @@ function SheetOverlay({ data-slot="sheet-overlay" className={cn( "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", - className + className, )} {...props} /> - ) + ); } function SheetContent({ @@ -50,7 +50,7 @@ function SheetContent({ side = "right", ...props }: React.ComponentProps & { - side?: "top" | "right" | "bottom" | "left" + side?: "top" | "right" | "bottom" | "left"; }) { return ( @@ -67,7 +67,7 @@ function SheetContent({ "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", - className + className, )} {...props} > @@ -78,7 +78,7 @@ function SheetContent({ - ) + ); } function SheetHeader({ className, ...props }: React.ComponentProps<"div">) { @@ -88,7 +88,7 @@ function SheetHeader({ className, ...props }: React.ComponentProps<"div">) { className={cn("flex flex-col gap-1.5 p-4", className)} {...props} /> - ) + ); } function SheetFooter({ className, ...props }: React.ComponentProps<"div">) { @@ -98,7 +98,7 @@ function SheetFooter({ className, ...props }: React.ComponentProps<"div">) { className={cn("mt-auto flex flex-col gap-2 p-4", className)} {...props} /> - ) + ); } function SheetTitle({ @@ -111,7 +111,7 @@ function SheetTitle({ className={cn("text-foreground font-semibold", className)} {...props} /> - ) + ); } function SheetDescription({ @@ -124,7 +124,7 @@ function SheetDescription({ className={cn("text-muted-foreground text-sm", className)} {...props} /> - ) + ); } export { @@ -136,4 +136,4 @@ export { SheetFooter, SheetTitle, SheetDescription, -} +}; diff --git a/packages/ui/src/components/sidebar.tsx b/packages/ui/src/components/sidebar.tsx index 4e1834a..38a101a 100644 --- a/packages/ui/src/components/sidebar.tsx +++ b/packages/ui/src/components/sidebar.tsx @@ -85,7 +85,7 @@ function SidebarProvider({ // This sets the cookie to keep the sidebar state. document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`; }, - [setOpenProp, open] + [setOpenProp, open], ); // Helper to toggle the sidebar. @@ -123,7 +123,7 @@ function SidebarProvider({ setOpenMobile, toggleSidebar, }), - [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar] + [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar], ); return ( @@ -140,7 +140,7 @@ function SidebarProvider({ } className={cn( "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", - className + className, )} {...props} > @@ -171,7 +171,7 @@ function Sidebar({ data-slot="sidebar" className={cn( "bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", - className + className, )} {...props} > @@ -222,7 +222,7 @@ function Sidebar({ "group-data-[side=right]:rotate-180", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" - : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)" + : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)", )} />
@@ -294,7 +294,7 @@ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) { "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", - className + className, )} {...props} /> @@ -308,7 +308,7 @@ function SidebarInset({ className, ...props }: React.ComponentProps<"main">) { className={cn( "bg-background relative flex min-h-svh flex-1 flex-col", "peer-data-[variant=inset]:min-h-[calc(100svh-(--spacing(4)))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", - className + className, )} {...props} /> @@ -372,7 +372,7 @@ function SidebarContent({ className, ...props }: React.ComponentProps<"div">) { data-sidebar="content" className={cn( "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", - className + className, )} {...props} /> @@ -404,7 +404,7 @@ function SidebarGroupLabel({ className={cn( "text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", - className + className, )} {...props} /> @@ -427,7 +427,7 @@ function SidebarGroupAction({ // Increases the hit area of the button on mobile. "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", - className + className, )} {...props} /> @@ -489,7 +489,7 @@ const sidebarMenuButtonVariants = cva( variant: "default", size: "default", }, - } + }, ); function SidebarMenuButton({ @@ -567,7 +567,7 @@ function SidebarMenuAction({ "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", - className + className, )} {...props} /> @@ -589,7 +589,7 @@ function SidebarMenuBadge({ "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", - className + className, )} {...props} /> @@ -642,7 +642,7 @@ function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">) { className={cn( "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", - className + className, )} {...props} /> @@ -688,7 +688,7 @@ function SidebarMenuSubButton({ size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", - className + className, )} {...props} /> diff --git a/packages/ui/src/components/skeleton.tsx b/packages/ui/src/components/skeleton.tsx index 2d10bee..a784737 100644 --- a/packages/ui/src/components/skeleton.tsx +++ b/packages/ui/src/components/skeleton.tsx @@ -1,4 +1,4 @@ -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function Skeleton({ className, ...props }: React.ComponentProps<"div">) { return ( @@ -7,7 +7,7 @@ function Skeleton({ className, ...props }: React.ComponentProps<"div">) { className={cn("bg-primary/10 animate-pulse rounded-md", className)} {...props} /> - ) + ); } -export { Skeleton } +export { Skeleton }; diff --git a/packages/ui/src/components/tooltip.tsx b/packages/ui/src/components/tooltip.tsx index 784f7b1..e8564b0 100644 --- a/packages/ui/src/components/tooltip.tsx +++ b/packages/ui/src/components/tooltip.tsx @@ -1,9 +1,9 @@ -"use client" +"use client"; -import * as React from "react" -import * as TooltipPrimitive from "@radix-ui/react-tooltip" +import * as React from "react"; +import * as TooltipPrimitive from "@radix-ui/react-tooltip"; -import { cn } from "@repo/ui/lib/utils" +import { cn } from "@repo/ui/lib/utils"; function TooltipProvider({ delayDuration = 0, @@ -15,7 +15,7 @@ function TooltipProvider({ delayDuration={delayDuration} {...props} /> - ) + ); } function Tooltip({ @@ -25,13 +25,13 @@ function Tooltip({ - ) + ); } function TooltipTrigger({ ...props }: React.ComponentProps) { - return + return ; } function TooltipContent({ @@ -47,7 +47,7 @@ function TooltipContent({ sideOffset={sideOffset} className={cn( "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-w-sm rounded-md px-3 py-1.5 text-xs", - className + className, )} {...props} > @@ -55,7 +55,7 @@ function TooltipContent({ - ) + ); } -export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/packages/ui/src/hooks/use-mobile.ts b/packages/ui/src/hooks/use-mobile.ts index 2b0fe1d..a93d583 100644 --- a/packages/ui/src/hooks/use-mobile.ts +++ b/packages/ui/src/hooks/use-mobile.ts @@ -1,19 +1,21 @@ -import * as React from "react" +import * as React from "react"; -const MOBILE_BREAKPOINT = 768 +const MOBILE_BREAKPOINT = 768; export function useIsMobile() { - const [isMobile, setIsMobile] = React.useState(undefined) + const [isMobile, setIsMobile] = React.useState( + undefined, + ); React.useEffect(() => { - const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`) + const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`); const onChange = () => { - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - } - mql.addEventListener("change", onChange) - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - return () => mql.removeEventListener("change", onChange) - }, []) + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); + }; + mql.addEventListener("change", onChange); + setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); + return () => mql.removeEventListener("change", onChange); + }, []); - return !!isMobile + return !!isMobile; } diff --git a/packages/ui/src/lib/utils.ts b/packages/ui/src/lib/utils.ts index bd0c391..a5ef193 100644 --- a/packages/ui/src/lib/utils.ts +++ b/packages/ui/src/lib/utils.ts @@ -1,6 +1,6 @@ -import { clsx, type ClassValue } from "clsx" -import { twMerge } from "tailwind-merge" +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) + return twMerge(clsx(inputs)); } diff --git a/packages/ui/src/providers/theme-provider.tsx b/packages/ui/src/providers/theme-provider.tsx index 6a1ffe4..189a2b1 100644 --- a/packages/ui/src/providers/theme-provider.tsx +++ b/packages/ui/src/providers/theme-provider.tsx @@ -1,11 +1,11 @@ -"use client" +"use client"; -import * as React from "react" -import { ThemeProvider as NextThemesProvider } from "next-themes" +import * as React from "react"; +import { ThemeProvider as NextThemesProvider } from "next-themes"; export function ThemeProvider({ children, ...props }: React.ComponentProps) { - return {children} + return {children}; } diff --git a/packages/ui/src/styles/globals.css b/packages/ui/src/styles/globals.css index 33e4cc7..4cd9692 100644 --- a/packages/ui/src/styles/globals.css +++ b/packages/ui/src/styles/globals.css @@ -102,6 +102,5 @@ button, [role="button"] { - cursor: pointer; + cursor: pointer; } -