feat: add comftui plugin, initial db

This commit is contained in:
BennyKok
2023-12-09 00:10:59 +08:00
parent d6ac12a7ef
commit 6b431426ff
72 changed files with 4602 additions and 250 deletions
+12
View File
@@ -0,0 +1,12 @@
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import React from "react";
dayjs.extend(relativeTime);
export function getRelativeTime(time: string | Date | null | undefined) {
if (typeof time === "string" || time instanceof Date) {
return dayjs().to(time);
}
return null;
}
+38
View File
@@ -0,0 +1,38 @@
import { NextResponse } from "next/server";
import { ZodError, ZodType, z } from "zod";
export async function parseDataSafe<T extends ZodType<any, any, any>>(
schema: T,
request: Request,
headers?: HeadersInit,
): Promise<[z.infer<T> | undefined, NextResponse | undefined]> {
let data: z.infer<T> | undefined = undefined;
try {
data = await schema.parseAsync(await request.json());
} catch (e: any) {
if (e instanceof ZodError) {
const message = e.flatten().fieldErrors;
return [
undefined,
NextResponse.json(message, {
status: 500,
statusText: "Invalid request",
headers: headers,
}),
];
}
}
if (!data)
return [
undefined,
NextResponse.json(
{
message: "Invalid request",
},
{ status: 500, statusText: "Invalid request", headers: headers },
),
];
return [data, undefined];
}
+6
View File
@@ -0,0 +1,6 @@
import { type ClassValue, clsx } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}