sort tw classes

This commit is contained in:
2024-08-15 14:17:56 +02:00
parent 0ebef3657f
commit 8b1a09d960
12 changed files with 23 additions and 27 deletions

View File

@@ -6,7 +6,10 @@
"linter": { "linter": {
"enabled": true, "enabled": true,
"rules": { "rules": {
"recommended": true "recommended": true,
"nursery": {
"useSortedClasses": "warn"
}
} }
}, },
"javascript": { "javascript": {

BIN
bun.lockb

Binary file not shown.

View File

@@ -5,7 +5,7 @@
"scripts": { "scripts": {
"build": "next build", "build": "next build",
"dev": "next dev", "dev": "next dev",
"lint": "next lint", "lint": "biome lint --write --unsafe ./src",
"start": "next start", "start": "next start",
"format": "prettier --write ." "format": "prettier --write ."
}, },
@@ -29,19 +29,12 @@
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.8.3", "@biomejs/biome": "1.8.3",
"@it-incubator/eslint-config": "^0.1.0",
"@it-incubator/prettier-config": "^0.1.0", "@it-incubator/prettier-config": "^0.1.0",
"@types/node": "^18.15.11", "@types/node": "^18.15.11",
"@types/react": "^18.0.33", "@types/react": "^18.0.33",
"@types/react-dom": "^18.0.11", "@types/react-dom": "^18.0.11",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"eslint": "^8.37.0",
"eslint-config-next": "13.2.4",
"postcss": "^8.4.21", "postcss": "^8.4.21",
"prettier": "^2.8.7",
"prettier-plugin-tailwindcss": "^0.2.6",
"tailwindcss": "^3.3.1", "tailwindcss": "^3.3.1",
"typescript": "^5.0.3" "typescript": "^5.0.3"
}, },

View File

@@ -19,7 +19,7 @@ export function ModeToggle() {
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
<Button variant="outline" size="icon"> <Button variant="outline" size="icon">
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" /> <Sun className="dark:-rotate-90 h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:scale-0" />
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" /> <Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
<span className="sr-only">Toggle theme</span> <span className="sr-only">Toggle theme</span>
</Button> </Button>

View File

@@ -2,15 +2,15 @@ import {
type ChangeEvent, type ChangeEvent,
type FC, type FC,
type FormEvent, type FormEvent,
memo,
useCallback, useCallback,
useMemo, useMemo,
useState,
} from "react" } from "react"
import { memo, useState } from "react"
import { import {
Card, Card,
CardContent, CardContent,
CardDescription,
CardFooter, CardFooter,
CardHeader, CardHeader,
CardTitle, CardTitle,
@@ -24,7 +24,6 @@ import { Button } from "../ui/button"
import { Input } from "../ui/input" import { Input } from "../ui/input"
import { Checkbox } from "@/components/ui/checkbox" import { Checkbox } from "@/components/ui/checkbox"
import { Skeleton } from "@/components/ui/skeleton"
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"
import { import {
TaskStatus, TaskStatus,
@@ -123,7 +122,7 @@ export const Todolist: FC<Props> = memo(({ todolist }) => {
}, [filteredTasks, todolist.id, handleChangeStatus, handleDeleteTask]) }, [filteredTasks, todolist.id, handleChangeStatus, handleDeleteTask])
return ( return (
<Card key={todolist.id} className={"w-72 flex flex-col justify-between"}> <Card key={todolist.id} className={"flex w-72 flex-col justify-between"}>
<div> <div>
<CardHeader className={"flex flex-row items-center justify-between"}> <CardHeader className={"flex flex-row items-center justify-between"}>
<CardTitle>{todolist.title}</CardTitle> <CardTitle>{todolist.title}</CardTitle>

View File

@@ -36,7 +36,7 @@ const CardTitle = React.forwardRef<
<h3 <h3
ref={ref} ref={ref}
className={cn( className={cn(
"text-2xl font-semibold leading-none tracking-tight", "font-semibold text-2xl leading-none tracking-tight",
className className
)} )}
{...props} {...props}
@@ -50,7 +50,7 @@ const CardDescription = React.forwardRef<
>(({ className, ...props }, ref) => ( >(({ className, ...props }, ref) => (
<p <p
ref={ref} ref={ref}
className={cn("text-sm text-muted-foreground", className)} className={cn("text-muted-foreground text-sm", className)}
{...props} {...props}
/> />
)) ))

View File

@@ -45,7 +45,7 @@ const DropdownMenuSubContent = React.forwardRef<
<DropdownMenuPrimitive.SubContent <DropdownMenuPrimitive.SubContent
ref={ref} ref={ref}
className={cn( className={cn(
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=closed]:animate-out data-[state=open]:animate-in",
className className
)} )}
{...props} {...props}
@@ -63,7 +63,7 @@ const DropdownMenuContent = React.forwardRef<
ref={ref} ref={ref}
sideOffset={sideOffset} sideOffset={sideOffset}
className={cn( className={cn(
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in",
className className
)} )}
{...props} {...props}
@@ -97,7 +97,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
<DropdownMenuPrimitive.CheckboxItem <DropdownMenuPrimitive.CheckboxItem
ref={ref} ref={ref}
className={cn( className={cn(
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", "relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
className className
)} )}
checked={checked} checked={checked}
@@ -121,7 +121,7 @@ const DropdownMenuRadioItem = React.forwardRef<
<DropdownMenuPrimitive.RadioItem <DropdownMenuPrimitive.RadioItem
ref={ref} ref={ref}
className={cn( className={cn(
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", "relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
className className
)} )}
{...props} {...props}
@@ -145,7 +145,7 @@ const DropdownMenuLabel = React.forwardRef<
<DropdownMenuPrimitive.Label <DropdownMenuPrimitive.Label
ref={ref} ref={ref}
className={cn( className={cn(
"px-2 py-1.5 text-sm font-semibold", "px-2 py-1.5 font-semibold text-sm",
inset && "pl-8", inset && "pl-8",
className className
)} )}

View File

@@ -20,7 +20,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
id={idToUse} id={idToUse}
type={type} type={type}
className={cn( className={cn(
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:font-medium file:text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
className, className,
)} )}
ref={ref} ref={ref}

View File

@@ -34,7 +34,7 @@ function Header() {
logout() logout()
} }
return ( return (
<header className={"flex justify-between items-center p-4"}> <header className={"flex items-center justify-between p-4"}>
<h1 className={"text-3xl"}>Tasks</h1> <h1 className={"text-3xl"}>Tasks</h1>
<div className={"flex gap-4"}> <div className={"flex gap-4"}>
<ModeToggle /> <ModeToggle />

View File

@@ -2,9 +2,9 @@ import { Head, Html, Main, NextScript } from "next/document"
export default function Document() { export default function Document() {
return ( return (
<Html lang="en" className={"bg-zinc-950 h-screen"}> <Html lang="en" className={"h-screen bg-zinc-950"}>
<Head /> <Head />
<body className={"h-full grid grid-rows-[auto_1fr] overflow-hidden"}> <body className={"grid h-full grid-rows-[auto_1fr] overflow-hidden"}>
<Main /> <Main />
<NextScript /> <NextScript />
</body> </body>

View File

@@ -13,6 +13,7 @@ const Login: NextPage = () => {
e.preventDefault() e.preventDefault()
const formData = new FormData(e.currentTarget) const formData = new FormData(e.currentTarget)
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
const values = Object.fromEntries(formData) as any const values = Object.fromEntries(formData) as any
signUp(values) signUp(values)
} }
@@ -23,7 +24,7 @@ const Login: NextPage = () => {
className={"flex w-96 flex-col gap-3 rounded-md border p-6"} className={"flex w-96 flex-col gap-3 rounded-md border p-6"}
onSubmit={handleSubmit} onSubmit={handleSubmit}
> >
<h1 className={"text-2xl font-bold"}>Sign up</h1> <h1 className={"font-bold text-2xl"}>Sign up</h1>
<label className={"flex flex-col gap-1"}> <label className={"flex flex-col gap-1"}>
Username (optional) Username (optional)
<Input name={"username"} type="text" /> <Input name={"username"} type="text" />

View File

@@ -22,7 +22,7 @@ export const AuthApi = {
return res.data return res.data
}, },
async signUp(args: PostSignUpArgs) { async signUp(args: PostSignUpArgs) {
const res = await todolistApiInstance.post<any>("/auth/sign-up", args) const res = await todolistApiInstance.post<void>("/auth/sign-up", args)
return res.data return res.data
}, },