⬆️ Upgrade Biome to the latest version (#1861)

This commit is contained in:
Alejandra
2025-09-09 14:45:10 +02:00
committed by GitHub
parent 61174f1806
commit f813161912
39 changed files with 1962 additions and 2134 deletions

View File

@@ -1,10 +1,3 @@
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { Controller, type SubmitHandler, useForm } from "react-hook-form"
import { type UserCreate, UsersService } from "@/client"
import type { ApiError } from "@/client/core/ApiError"
import useCustomToast from "@/hooks/useCustomToast"
import { emailPattern, handleError } from "@/utils"
import {
Button,
DialogActionTrigger,
@@ -14,8 +7,14 @@ import {
Text,
VStack,
} from "@chakra-ui/react"
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { useState } from "react"
import { Controller, type SubmitHandler, useForm } from "react-hook-form"
import { FaPlus } from "react-icons/fa"
import { type UserCreate, UsersService } from "@/client"
import type { ApiError } from "@/client/core/ApiError"
import useCustomToast from "@/hooks/useCustomToast"
import { emailPattern, handleError } from "@/utils"
import { Checkbox } from "../ui/checkbox"
import {
DialogBody,
@@ -106,7 +105,6 @@ const AddUser = () => {
label="Email"
>
<Input
id="email"
{...register("email", {
required: "Email is required",
pattern: emailPattern,
@@ -122,7 +120,6 @@ const AddUser = () => {
label="Full Name"
>
<Input
id="name"
{...register("full_name")}
placeholder="Full name"
type="text"
@@ -136,7 +133,6 @@ const AddUser = () => {
label="Set Password"
>
<Input
id="password"
{...register("password", {
required: "Password is required",
minLength: {
@@ -156,7 +152,6 @@ const AddUser = () => {
label="Confirm Password"
>
<Input
id="confirm_password"
{...register("confirm_password", {
required: "Please confirm your password",
validate: (value) =>

View File

@@ -1,6 +1,3 @@
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { Controller, type SubmitHandler, useForm } from "react-hook-form"
import {
Button,
DialogActionTrigger,
@@ -11,10 +8,12 @@ import {
Text,
VStack,
} from "@chakra-ui/react"
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { useState } from "react"
import { Controller, type SubmitHandler, useForm } from "react-hook-form"
import { FaExchangeAlt } from "react-icons/fa"
import { type UserPublic, type UserUpdate, UsersService } from "@/client"
import { type UserPublic, UsersService, type UserUpdate } from "@/client"
import type { ApiError } from "@/client/core/ApiError"
import useCustomToast from "@/hooks/useCustomToast"
import { emailPattern, handleError } from "@/utils"
@@ -105,7 +104,6 @@ const EditUser = ({ user }: EditUserProps) => {
label="Email"
>
<Input
id="email"
{...register("email", {
required: "Email is required",
pattern: emailPattern,
@@ -121,7 +119,6 @@ const EditUser = ({ user }: EditUserProps) => {
label="Full Name"
>
<Input
id="name"
{...register("full_name")}
placeholder="Full name"
type="text"
@@ -134,7 +131,6 @@ const EditUser = ({ user }: EditUserProps) => {
label="Set Password"
>
<Input
id="password"
{...register("password", {
minLength: {
value: 8,
@@ -152,7 +148,6 @@ const EditUser = ({ user }: EditUserProps) => {
label="Confirm Password"
>
<Input
id="confirm_password"
{...register("confirm_password", {
validate: (value) =>
value === getValues().password ||

View File

@@ -1,10 +1,9 @@
import { IconButton } from "@chakra-ui/react"
import { BsThreeDotsVertical } from "react-icons/bs"
import { MenuContent, MenuRoot, MenuTrigger } from "../ui/menu"
import type { ItemPublic } from "@/client"
import DeleteItem from "../Items/DeleteItem"
import EditItem from "../Items/EditItem"
import { MenuContent, MenuRoot, MenuTrigger } from "../ui/menu"
interface ItemActionsMenuProps {
item: ItemPublic

View File

@@ -3,54 +3,41 @@ import { Link } from "@tanstack/react-router"
const NotFound = () => {
return (
<>
<Flex
height="100vh"
align="center"
justify="center"
flexDir="column"
data-testid="not-found"
p={4}
>
<Flex alignItems="center" zIndex={1}>
<Flex flexDir="column" ml={4} align="center" justify="center" p={4}>
<Text
fontSize={{ base: "6xl", md: "8xl" }}
fontWeight="bold"
lineHeight="1"
mb={4}
>
404
</Text>
<Text fontSize="2xl" fontWeight="bold" mb={2}>
Oops!
</Text>
</Flex>
<Flex
height="100vh"
align="center"
justify="center"
flexDir="column"
data-testid="not-found"
p={4}
>
<Flex alignItems="center" zIndex={1}>
<Flex flexDir="column" ml={4} align="center" justify="center" p={4}>
<Text
fontSize={{ base: "6xl", md: "8xl" }}
fontWeight="bold"
lineHeight="1"
mb={4}
>
404
</Text>
<Text fontSize="2xl" fontWeight="bold" mb={2}>
Oops!
</Text>
</Flex>
<Text
fontSize="lg"
color="gray.600"
mb={4}
textAlign="center"
zIndex={1}
>
The page you are looking for was not found.
</Text>
<Center zIndex={1}>
<Link to="/">
<Button
variant="solid"
colorScheme="teal"
mt={4}
alignSelf="center"
>
Go Back
</Button>
</Link>
</Center>
</Flex>
</>
<Text fontSize="lg" color="gray.600" mb={4} textAlign="center" zIndex={1}>
The page you are looking for was not found.
</Text>
<Center zIndex={1}>
<Link to="/">
<Button variant="solid" colorScheme="teal" mt={4} alignSelf="center">
Go Back
</Button>
</Link>
</Center>
</Flex>
)
}

View File

@@ -1,10 +1,9 @@
import { IconButton } from "@chakra-ui/react"
import { BsThreeDotsVertical } from "react-icons/bs"
import { MenuContent, MenuRoot, MenuTrigger } from "../ui/menu"
import type { UserPublic } from "@/client"
import DeleteUser from "../Admin/DeleteUser"
import EditUser from "../Admin/EditUser"
import { MenuContent, MenuRoot, MenuTrigger } from "../ui/menu"
interface UserActionsMenuProps {
user: UserPublic

View File

@@ -1,6 +1,3 @@
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { type SubmitHandler, useForm } from "react-hook-form"
import {
Button,
DialogActionTrigger,
@@ -9,7 +6,9 @@ import {
Text,
VStack,
} from "@chakra-ui/react"
import { useMutation, useQueryClient } from "@tanstack/react-query"
import { useState } from "react"
import { type SubmitHandler, useForm } from "react-hook-form"
import { FaPlus } from "react-icons/fa"
import { type ItemCreate, ItemsService } from "@/client"
@@ -93,7 +92,6 @@ const AddItem = () => {
label="Title"
>
<Input
id="title"
{...register("title", {
required: "Title is required.",
})}
@@ -108,7 +106,6 @@ const AddItem = () => {
label="Description"
>
<Input
id="description"
{...register("description")}
placeholder="Description"
type="text"

View File

@@ -101,7 +101,6 @@ const EditItem = ({ item }: EditItemProps) => {
label="Title"
>
<Input
id="title"
{...register("title", {
required: "Title is required",
})}
@@ -116,7 +115,6 @@ const EditItem = ({ item }: EditItemProps) => {
label="Description"
>
<Input
id="description"
{...register("description")}
placeholder="Description"
type="text"

View File

@@ -7,25 +7,23 @@ const Appearance = () => {
const { theme, setTheme } = useTheme()
return (
<>
<Container maxW="full">
<Heading size="sm" py={4}>
Appearance
</Heading>
<Container maxW="full">
<Heading size="sm" py={4}>
Appearance
</Heading>
<RadioGroup
onValueChange={(e) => setTheme(e.value ?? "system")}
value={theme}
colorPalette="teal"
>
<Stack>
<Radio value="system">System</Radio>
<Radio value="light">Light Mode</Radio>
<Radio value="dark">Dark Mode</Radio>
</Stack>
</RadioGroup>
</Container>
</>
<RadioGroup
onValueChange={(e) => setTheme(e.value ?? "system")}
value={theme}
colorPalette="teal"
>
<Stack>
<Radio value="system">System</Radio>
<Radio value="light">Light Mode</Radio>
<Radio value="dark">Dark Mode</Radio>
</Stack>
</RadioGroup>
</Container>
)
}
export default Appearance

View File

@@ -42,46 +42,39 @@ const ChangePassword = () => {
}
return (
<>
<Container maxW="full">
<Heading size="sm" py={4}>
Change Password
</Heading>
<Box as="form" onSubmit={handleSubmit(onSubmit)}>
<VStack gap={4} w={{ base: "100%", md: "sm" }}>
<PasswordInput
type="current_password"
startElement={<FiLock />}
{...register("current_password", passwordRules())}
placeholder="Current Password"
errors={errors}
/>
<PasswordInput
type="new_password"
startElement={<FiLock />}
{...register("new_password", passwordRules())}
placeholder="New Password"
errors={errors}
/>
<PasswordInput
type="confirm_password"
startElement={<FiLock />}
{...register("confirm_password", confirmPasswordRules(getValues))}
placeholder="Confirm Password"
errors={errors}
/>
</VStack>
<Button
variant="solid"
mt={4}
type="submit"
loading={isSubmitting}
>
Save
</Button>
</Box>
</Container>
</>
<Container maxW="full">
<Heading size="sm" py={4}>
Change Password
</Heading>
<Box as="form" onSubmit={handleSubmit(onSubmit)}>
<VStack gap={4} w={{ base: "100%", md: "sm" }}>
<PasswordInput
type="current_password"
startElement={<FiLock />}
{...register("current_password", passwordRules())}
placeholder="Current Password"
errors={errors}
/>
<PasswordInput
type="new_password"
startElement={<FiLock />}
{...register("new_password", passwordRules())}
placeholder="New Password"
errors={errors}
/>
<PasswordInput
type="confirm_password"
startElement={<FiLock />}
{...register("confirm_password", confirmPasswordRules(getValues))}
placeholder="Confirm Password"
errors={errors}
/>
</VStack>
<Button variant="solid" mt={4} type="submit" loading={isSubmitting}>
Save
</Button>
</Box>
</Container>
)
}
export default ChangePassword

View File

@@ -49,60 +49,58 @@ const DeleteConfirmation = () => {
}
return (
<>
<DialogRoot
size={{ base: "xs", md: "md" }}
role="alertdialog"
placement="center"
open={isOpen}
onOpenChange={({ open }) => setIsOpen(open)}
>
<DialogTrigger asChild>
<Button variant="solid" colorPalette="red" mt={4}>
Delete
</Button>
</DialogTrigger>
<DialogRoot
size={{ base: "xs", md: "md" }}
role="alertdialog"
placement="center"
open={isOpen}
onOpenChange={({ open }) => setIsOpen(open)}
>
<DialogTrigger asChild>
<Button variant="solid" colorPalette="red" mt={4}>
Delete
</Button>
</DialogTrigger>
<DialogContent>
<form onSubmit={handleSubmit(onSubmit)}>
<DialogCloseTrigger />
<DialogHeader>
<DialogTitle>Confirmation Required</DialogTitle>
</DialogHeader>
<DialogBody>
<Text mb={4}>
All your account data will be{" "}
<strong>permanently deleted.</strong> If you are sure, please
click <strong>"Confirm"</strong> to proceed. This action cannot
be undone.
</Text>
</DialogBody>
<DialogContent>
<form onSubmit={handleSubmit(onSubmit)}>
<DialogCloseTrigger />
<DialogHeader>
<DialogTitle>Confirmation Required</DialogTitle>
</DialogHeader>
<DialogBody>
<Text mb={4}>
All your account data will be{" "}
<strong>permanently deleted.</strong> If you are sure, please
click <strong>"Confirm"</strong> to proceed. This action cannot be
undone.
</Text>
</DialogBody>
<DialogFooter gap={2}>
<ButtonGroup>
<DialogActionTrigger asChild>
<Button
variant="subtle"
colorPalette="gray"
disabled={isSubmitting}
>
Cancel
</Button>
</DialogActionTrigger>
<DialogFooter gap={2}>
<ButtonGroup>
<DialogActionTrigger asChild>
<Button
variant="solid"
colorPalette="red"
type="submit"
loading={isSubmitting}
variant="subtle"
colorPalette="gray"
disabled={isSubmitting}
>
Delete
Cancel
</Button>
</ButtonGroup>
</DialogFooter>
</form>
</DialogContent>
</DialogRoot>
</>
</DialogActionTrigger>
<Button
variant="solid"
colorPalette="red"
type="submit"
loading={isSubmitting}
>
Delete
</Button>
</ButtonGroup>
</DialogFooter>
</form>
</DialogContent>
</DialogRoot>
)
}

View File

@@ -14,8 +14,8 @@ import { type SubmitHandler, useForm } from "react-hook-form"
import {
type ApiError,
type UserPublic,
type UserUpdateMe,
UsersService,
type UserUpdateMe,
} from "@/client"
import useAuth from "@/hooks/useAuth"
import useCustomToast from "@/hooks/useCustomToast"
@@ -70,80 +70,78 @@ const UserInformation = () => {
}
return (
<>
<Container maxW="full">
<Heading size="sm" py={4}>
User Information
</Heading>
<Box
w={{ sm: "full", md: "sm" }}
as="form"
onSubmit={handleSubmit(onSubmit)}
>
<Field label="Full name">
{editMode ? (
<Input
{...register("full_name", { maxLength: 30 })}
type="text"
size="md"
/>
) : (
<Text
fontSize="md"
py={2}
color={!currentUser?.full_name ? "gray" : "inherit"}
truncate
maxW="sm"
>
{currentUser?.full_name || "N/A"}
</Text>
)}
</Field>
<Field
mt={4}
label="Email"
invalid={!!errors.email}
errorText={errors.email?.message}
>
{editMode ? (
<Input
{...register("email", {
required: "Email is required",
pattern: emailPattern,
})}
type="email"
size="md"
/>
) : (
<Text fontSize="md" py={2} truncate maxW="sm">
{currentUser?.email}
</Text>
)}
</Field>
<Flex mt={4} gap={3}>
<Button
variant="solid"
onClick={toggleEditMode}
type={editMode ? "button" : "submit"}
loading={editMode ? isSubmitting : false}
disabled={editMode ? !isDirty || !getValues("email") : false}
<Container maxW="full">
<Heading size="sm" py={4}>
User Information
</Heading>
<Box
w={{ sm: "full", md: "sm" }}
as="form"
onSubmit={handleSubmit(onSubmit)}
>
<Field label="Full name">
{editMode ? (
<Input
{...register("full_name", { maxLength: 30 })}
type="text"
size="md"
/>
) : (
<Text
fontSize="md"
py={2}
color={!currentUser?.full_name ? "gray" : "inherit"}
truncate
maxW="sm"
>
{editMode ? "Save" : "Edit"}
{currentUser?.full_name || "N/A"}
</Text>
)}
</Field>
<Field
mt={4}
label="Email"
invalid={!!errors.email}
errorText={errors.email?.message}
>
{editMode ? (
<Input
{...register("email", {
required: "Email is required",
pattern: emailPattern,
})}
type="email"
size="md"
/>
) : (
<Text fontSize="md" py={2} truncate maxW="sm">
{currentUser?.email}
</Text>
)}
</Field>
<Flex mt={4} gap={3}>
<Button
variant="solid"
onClick={toggleEditMode}
type={editMode ? "button" : "submit"}
loading={editMode ? isSubmitting : false}
disabled={editMode ? !isDirty || !getValues("email") : false}
>
{editMode ? "Save" : "Edit"}
</Button>
{editMode && (
<Button
variant="subtle"
colorPalette="gray"
onClick={onCancel}
disabled={isSubmitting}
>
Cancel
</Button>
{editMode && (
<Button
variant="subtle"
colorPalette="gray"
onClick={onCancel}
disabled={isSubmitting}
>
Cancel
</Button>
)}
</Flex>
</Box>
</Container>
</>
)}
</Flex>
</Box>
</Container>
)
}