Skip to content

Commit 70e8b02

Browse files
committed
chore: upgrade shadcn/ui to latest version
1 parent a9ecbb0 commit 70e8b02

File tree

7 files changed

+83
-80
lines changed

7 files changed

+83
-80
lines changed

components.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "https://ui.shadcn.com/schema.json",
3-
"style": "default",
3+
"style": "new-york",
44
"rsc": true,
55
"tsx": true,
66
"tailwind": {
@@ -12,6 +12,10 @@
1212
},
1313
"aliases": {
1414
"components": "@/components",
15-
"utils": "@/lib/utils"
16-
}
15+
"utils": "@/lib/utils",
16+
"ui": "@/components/ui",
17+
"lib": "@/lib",
18+
"hooks": "@/hooks"
19+
},
20+
"iconLibrary": "lucide"
1721
}

next.config.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
2-
/* eslint-disable @typescript-eslint/no-unsafe-return */
3-
/* eslint-disable @typescript-eslint/no-unsafe-call */
4-
51
/**
62
* Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.
73
* This is especially useful for Docker builds.

src/components/counter.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ export default function Counter() {
1616
</CardHeader>
1717
<CardContent className='flex w-full items-center justify-between'>
1818
<Button
19-
className='w-10 rounded-full'
19+
className='rounded-full'
2020
data-testid='increase-count'
21+
isIconOnly
2122
onPress={() => {
2223
setCount((previousCount) => previousCount + 1);
2324
}}
@@ -30,8 +31,9 @@ export default function Counter() {
3031
</h2>
3132

3233
<Button
33-
className='w-10 rounded-full'
34+
className='rounded-full'
3435
data-testid='decrease-count'
36+
isIconOnly
3537
onPress={() => {
3638
setCount((previousCount) => previousCount - 1);
3739
}}

src/components/ui/card.tsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElemen
66
({ className, ...properties }, reference) => (
77
<div
88
ref={reference}
9-
className={cn('rounded-lg border bg-card text-card-foreground shadow-sm', className)}
9+
className={cn('rounded-xl border bg-card text-card-foreground shadow', className)}
1010
{...properties}
1111
/>
1212
)
@@ -24,23 +24,26 @@ const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDiv
2424
);
2525
CardHeader.displayName = 'CardHeader';
2626

27-
const CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
27+
const CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
2828
({ className, ...properties }, reference) => (
29-
<h3
29+
<div
3030
ref={reference}
31-
className={cn('text-2xl font-semibold leading-none tracking-tight', className)}
31+
className={cn('font-semibold leading-none tracking-tight', className)}
3232
{...properties}
3333
/>
3434
)
3535
);
3636
CardTitle.displayName = 'CardTitle';
3737

38-
const CardDescription = React.forwardRef<
39-
HTMLParagraphElement,
40-
React.HTMLAttributes<HTMLParagraphElement>
41-
>(({ className, ...properties }, reference) => (
42-
<p ref={reference} className={cn('text-sm text-muted-foreground', className)} {...properties} />
43-
));
38+
const CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
39+
({ className, ...properties }, reference) => (
40+
<div
41+
ref={reference}
42+
className={cn('text-sm text-muted-foreground', className)}
43+
{...properties}
44+
/>
45+
)
46+
);
4447
CardDescription.displayName = 'CardDescription';
4548

4649
const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(

src/components/ui/dialog.tsx

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable unicorn/prevent-abbreviations */
2-
31
'use client';
42

53
import * as React from 'react';
@@ -20,14 +18,14 @@ const DialogClose = DialogPrimitive.Close;
2018
const DialogOverlay = React.forwardRef<
2119
React.ComponentRef<typeof DialogPrimitive.Overlay>,
2220
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
23-
>(({ className, ...props }, ref) => (
21+
>(({ className, ...properties }, reference) => (
2422
<DialogPrimitive.Overlay
25-
ref={ref}
23+
ref={reference}
2624
className={cn(
2725
'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',
2826
className
2927
)}
30-
{...props}
28+
{...properties}
3129
/>
3230
));
3331
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
@@ -37,19 +35,18 @@ const DialogContent = React.forwardRef<
3735
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {
3836
hideCloseButton?: boolean;
3937
}
40-
>(({ className, children, hideCloseButton, ...props }, ref) => (
38+
>(({ hideCloseButton, className, children, ...properties }, reference) => (
4139
<DialogPortal>
4240
<DialogOverlay />
4341
<DialogPrimitive.Content
44-
ref={ref}
42+
ref={reference}
4543
className={cn(
4644
'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',
4745
className
4846
)}
49-
{...props}
47+
{...properties}
5048
>
5149
{children}
52-
5350
{!hideCloseButton && (
5451
<DialogPrimitive.Close className='absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground'>
5552
<X className='h-4 w-4' />
@@ -61,39 +58,42 @@ const DialogContent = React.forwardRef<
6158
));
6259
DialogContent.displayName = DialogPrimitive.Content.displayName;
6360

64-
const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
65-
<div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />
61+
const DialogHeader = ({ className, ...properties }: React.HTMLAttributes<HTMLDivElement>) => (
62+
<div
63+
className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)}
64+
{...properties}
65+
/>
6666
);
6767
DialogHeader.displayName = 'DialogHeader';
6868

69-
const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
69+
const DialogFooter = ({ className, ...properties }: React.HTMLAttributes<HTMLDivElement>) => (
7070
<div
7171
className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}
72-
{...props}
72+
{...properties}
7373
/>
7474
);
7575
DialogFooter.displayName = 'DialogFooter';
7676

7777
const DialogTitle = React.forwardRef<
7878
React.ComponentRef<typeof DialogPrimitive.Title>,
7979
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
80-
>(({ className, ...props }, ref) => (
80+
>(({ className, ...properties }, reference) => (
8181
<DialogPrimitive.Title
82-
ref={ref}
82+
ref={reference}
8383
className={cn('text-lg font-semibold leading-none tracking-tight', className)}
84-
{...props}
84+
{...properties}
8585
/>
8686
));
8787
DialogTitle.displayName = DialogPrimitive.Title.displayName;
8888

8989
const DialogDescription = React.forwardRef<
9090
React.ComponentRef<typeof DialogPrimitive.Description>,
9191
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
92-
>(({ className, ...props }, ref) => (
92+
>(({ className, ...properties }, reference) => (
9393
<DialogPrimitive.Description
94-
ref={ref}
94+
ref={reference}
9595
className={cn('text-sm text-muted-foreground', className)}
96-
{...props}
96+
{...properties}
9797
/>
9898
));
9999
DialogDescription.displayName = DialogPrimitive.Description.displayName;
@@ -102,8 +102,8 @@ export {
102102
Dialog,
103103
DialogPortal,
104104
DialogOverlay,
105-
DialogClose,
106105
DialogTrigger,
106+
DialogClose,
107107
DialogContent,
108108
DialogHeader,
109109
DialogFooter,

src/components/ui/dropdown-menu.tsx

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* eslint-disable unicorn/prevent-abbreviations */
2-
31
'use client';
42

53
import * as React from 'react';
@@ -26,50 +24,51 @@ const DropdownMenuSubTrigger = React.forwardRef<
2624
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
2725
inset?: boolean;
2826
}
29-
>(({ className, inset, children, ...props }, ref) => (
27+
>(({ className, inset, children, ...properties }, reference) => (
3028
<DropdownMenuPrimitive.SubTrigger
31-
ref={ref}
29+
ref={reference}
3230
className={cn(
33-
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',
31+
'flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
3432
inset && 'pl-8',
3533
className
3634
)}
37-
{...props}
35+
{...properties}
3836
>
3937
{children}
40-
<ChevronRight className='ml-auto h-4 w-4' />
38+
<ChevronRight className='ml-auto' />
4139
</DropdownMenuPrimitive.SubTrigger>
4240
));
4341
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
4442

4543
const DropdownMenuSubContent = React.forwardRef<
4644
React.ComponentRef<typeof DropdownMenuPrimitive.SubContent>,
4745
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
48-
>(({ className, ...props }, ref) => (
46+
>(({ className, ...properties }, reference) => (
4947
<DropdownMenuPrimitive.SubContent
50-
ref={ref}
48+
ref={reference}
5149
className={cn(
52-
'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',
50+
'z-50 min-w-[8rem] origin-[--radix-dropdown-menu-content-transform-origin] 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',
5351
className
5452
)}
55-
{...props}
53+
{...properties}
5654
/>
5755
));
5856
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
5957

6058
const DropdownMenuContent = React.forwardRef<
6159
React.ComponentRef<typeof DropdownMenuPrimitive.Content>,
6260
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
63-
>(({ className, sideOffset = 4, ...props }, ref) => (
61+
>(({ className, sideOffset = 4, ...properties }, reference) => (
6462
<DropdownMenuPrimitive.Portal>
6563
<DropdownMenuPrimitive.Content
66-
ref={ref}
64+
ref={reference}
6765
sideOffset={sideOffset}
6866
className={cn(
69-
'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',
67+
'z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md',
68+
'origin-[--radix-dropdown-menu-content-transform-origin] 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',
7069
className
7170
)}
72-
{...props}
71+
{...properties}
7372
/>
7473
</DropdownMenuPrimitive.Portal>
7574
));
@@ -80,31 +79,31 @@ const DropdownMenuItem = React.forwardRef<
8079
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
8180
inset?: boolean;
8281
}
83-
>(({ className, inset, ...props }, ref) => (
82+
>(({ className, inset, ...properties }, reference) => (
8483
<DropdownMenuPrimitive.Item
85-
ref={ref}
84+
ref={reference}
8685
className={cn(
87-
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
86+
'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0',
8887
inset && 'pl-8',
8988
className
9089
)}
91-
{...props}
90+
{...properties}
9291
/>
9392
));
9493
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
9594

9695
const DropdownMenuCheckboxItem = React.forwardRef<
9796
React.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,
9897
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
99-
>(({ className, children, checked, ...props }, ref) => (
98+
>(({ className, children, checked, ...properties }, reference) => (
10099
<DropdownMenuPrimitive.CheckboxItem
101-
ref={ref}
100+
ref={reference}
102101
className={cn(
103102
'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',
104103
className
105104
)}
106105
checked={checked}
107-
{...props}
106+
{...properties}
108107
>
109108
<span className='absolute left-2 flex h-3.5 w-3.5 items-center justify-center'>
110109
<DropdownMenuPrimitive.ItemIndicator>
@@ -119,14 +118,14 @@ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displa
119118
const DropdownMenuRadioItem = React.forwardRef<
120119
React.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,
121120
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
122-
>(({ className, children, ...props }, ref) => (
121+
>(({ className, children, ...properties }, reference) => (
123122
<DropdownMenuPrimitive.RadioItem
124-
ref={ref}
123+
ref={reference}
125124
className={cn(
126125
'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',
127126
className
128127
)}
129-
{...props}
128+
{...properties}
130129
>
131130
<span className='absolute left-2 flex h-3.5 w-3.5 items-center justify-center'>
132131
<DropdownMenuPrimitive.ItemIndicator>
@@ -143,30 +142,33 @@ const DropdownMenuLabel = React.forwardRef<
143142
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
144143
inset?: boolean;
145144
}
146-
>(({ className, inset, ...props }, ref) => (
145+
>(({ className, inset, ...properties }, reference) => (
147146
<DropdownMenuPrimitive.Label
148-
ref={ref}
147+
ref={reference}
149148
className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)}
150-
{...props}
149+
{...properties}
151150
/>
152151
));
153152
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
154153

155154
const DropdownMenuSeparator = React.forwardRef<
156155
React.ComponentRef<typeof DropdownMenuPrimitive.Separator>,
157156
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
158-
>(({ className, ...props }, ref) => (
157+
>(({ className, ...properties }, reference) => (
159158
<DropdownMenuPrimitive.Separator
160-
ref={ref}
159+
ref={reference}
161160
className={cn('-mx-1 my-1 h-px bg-muted', className)}
162-
{...props}
161+
{...properties}
163162
/>
164163
));
165164
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
166165

167-
const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {
166+
const DropdownMenuShortcut = ({
167+
className,
168+
...properties
169+
}: React.HTMLAttributes<HTMLSpanElement>) => {
168170
return (
169-
<span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />
171+
<span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...properties} />
170172
);
171173
};
172174
DropdownMenuShortcut.displayName = 'DropdownMenuShortcut';

0 commit comments

Comments
 (0)