@betterstart/cli 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betterstart/cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Scaffold a full-featured CMS into any Next.js 16 application",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,7 +29,7 @@ const AccordionTrigger = React.forwardRef<
29
29
  {...props}
30
30
  >
31
31
  {children}
32
- <ChevronDown className="h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" />
32
+ <ChevronDown className="size-4 shrink-0 text-muted-foreground transition-transform duration-200" />
33
33
  </AccordionPrimitive.Trigger>
34
34
  </AccordionPrimitive.Header>
35
35
  ))
@@ -81,7 +81,7 @@ const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'
81
81
  className={cn('flex h-9 w-9 items-center justify-center', className)}
82
82
  {...props}
83
83
  >
84
- <MoreHorizontal className="h-4 w-4" />
84
+ <MoreHorizontal className="size-4" />
85
85
  <span className="sr-only">More</span>
86
86
  </span>
87
87
  )
@@ -195,7 +195,7 @@ const CarouselPrevious = React.forwardRef<HTMLButtonElement, React.ComponentProp
195
195
  onClick={scrollPrev}
196
196
  {...props}
197
197
  >
198
- <ArrowLeft className="h-4 w-4" />
198
+ <ArrowLeft className="size-4" />
199
199
  <span className="sr-only">Previous slide</span>
200
200
  </Button>
201
201
  )
@@ -223,7 +223,7 @@ const CarouselNext = React.forwardRef<HTMLButtonElement, React.ComponentProps<ty
223
223
  onClick={scrollNext}
224
224
  {...props}
225
225
  >
226
- <ArrowRight className="h-4 w-4" />
226
+ <ArrowRight className="size-4" />
227
227
  <span className="sr-only">Next slide</span>
228
228
  </Button>
229
229
  )
@@ -39,7 +39,7 @@ const CommandInput = React.forwardRef<
39
39
  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>
40
40
  >(({ className, ...props }, ref) => (
41
41
  <div className="flex items-center border-b px-3" cmdk-input-wrapper="">
42
- <Search className="mr-2 h-4 w-4 shrink-0 opacity-50" />
42
+ <Search className="mr-2 size-4 shrink-0 opacity-50" />
43
43
  <CommandPrimitive.Input
44
44
  ref={ref}
45
45
  className={cn(
@@ -33,7 +33,7 @@ const ContextMenuSubTrigger = React.forwardRef<
33
33
  {...props}
34
34
  >
35
35
  {children}
36
- <ChevronRight className="ml-auto h-4 w-4" />
36
+ <ChevronRight className="ml-auto size-4" />
37
37
  </ContextMenuPrimitive.SubTrigger>
38
38
  ))
39
39
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName
@@ -103,7 +103,7 @@ const ContextMenuCheckboxItem = React.forwardRef<
103
103
  >
104
104
  <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
105
105
  <ContextMenuPrimitive.ItemIndicator>
106
- <Check className="h-4 w-4" />
106
+ <Check className="size-4" />
107
107
  </ContextMenuPrimitive.ItemIndicator>
108
108
  </span>
109
109
  {children}
@@ -125,7 +125,7 @@ const ContextMenuRadioItem = React.forwardRef<
125
125
  >
126
126
  <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
127
127
  <ContextMenuPrimitive.ItemIndicator>
128
- <Circle className="h-4 w-4 fill-current" />
128
+ <Circle className="size-4 fill-current" />
129
129
  </ContextMenuPrimitive.ItemIndicator>
130
130
  </span>
131
131
  {children}
@@ -44,7 +44,7 @@ const DialogContent = React.forwardRef<
44
44
  >
45
45
  {children}
46
46
  <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">
47
- <X className="h-4 w-4" />
47
+ <X className="size-4" />
48
48
  <span className="sr-only">Close</span>
49
49
  </DialogPrimitive.Close>
50
50
  </DialogPrimitive.Content>
@@ -105,7 +105,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
105
105
  >
106
106
  <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
107
107
  <DropdownMenuPrimitive.ItemIndicator>
108
- <Check className="h-4 w-4" />
108
+ <Check className="size-4" />
109
109
  </DropdownMenuPrimitive.ItemIndicator>
110
110
  </span>
111
111
  {children}
@@ -49,7 +49,7 @@ export function DynamicListField({
49
49
  onClick={handleAdd}
50
50
  disabled={disabled || !canAddMore}
51
51
  >
52
- <Plus className="mr-2 h-4 w-4" />
52
+ <Plus className="mr-2 size-4" />
53
53
  Add {label}
54
54
  </Button>
55
55
  </div>
@@ -79,7 +79,7 @@ export function DynamicListField({
79
79
  disabled={disabled}
80
80
  className="mt-0"
81
81
  >
82
- <Trash2 className="h-4 w-4" />
82
+ <Trash2 className="size-4" />
83
83
  </Button>
84
84
  </div>
85
85
  ))}
@@ -71,7 +71,7 @@ const MenubarSubTrigger = React.forwardRef<
71
71
  {...props}
72
72
  >
73
73
  {children}
74
- <ChevronRight className="ml-auto h-4 w-4" />
74
+ <ChevronRight className="ml-auto size-4" />
75
75
  </MenubarPrimitive.SubTrigger>
76
76
  ))
77
77
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
@@ -144,7 +144,7 @@ const MenubarCheckboxItem = React.forwardRef<
144
144
  >
145
145
  <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
146
146
  <MenubarPrimitive.ItemIndicator>
147
- <Check className="h-4 w-4" />
147
+ <Check className="size-4" />
148
148
  </MenubarPrimitive.ItemIndicator>
149
149
  </span>
150
150
  {children}
@@ -166,7 +166,7 @@ const MenubarRadioItem = React.forwardRef<
166
166
  >
167
167
  <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
168
168
  <MenubarPrimitive.ItemIndicator>
169
- <Circle className="h-4 w-4 fill-current" />
169
+ <Circle className="size-4 fill-current" />
170
170
  </MenubarPrimitive.ItemIndicator>
171
171
  </span>
172
172
  {children}
@@ -54,7 +54,7 @@ const PaginationPrevious = ({
54
54
  className={cn('gap-1 pl-2.5', className)}
55
55
  {...props}
56
56
  >
57
- <ChevronLeft className="h-4 w-4" />
57
+ <ChevronLeft className="size-4" />
58
58
  <span>Previous</span>
59
59
  </PaginationLink>
60
60
  )
@@ -68,7 +68,7 @@ const PaginationNext = ({ className, ...props }: React.ComponentProps<typeof Pag
68
68
  {...props}
69
69
  >
70
70
  <span>Next</span>
71
- <ChevronRight className="h-4 w-4" />
71
+ <ChevronRight className="size-4" />
72
72
  </PaginationLink>
73
73
  )
74
74
  PaginationNext.displayName = 'PaginationNext'
@@ -79,7 +79,7 @@ const PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'
79
79
  className={cn('flex h-9 w-9 items-center justify-center', className)}
80
80
  {...props}
81
81
  >
82
- <MoreHorizontal className="h-4 w-4" />
82
+ <MoreHorizontal className="size-4" />
83
83
  <span className="sr-only">More pages</span>
84
84
  </span>
85
85
  )
@@ -21,7 +21,7 @@ const RadioGroupItem = React.forwardRef<
21
21
  <RadioGroupPrimitive.Item
22
22
  ref={ref}
23
23
  className={cn(
24
- 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
24
+ 'aspect-square size-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
25
25
  className
26
26
  )}
27
27
  {...props}
@@ -25,7 +25,7 @@ const SelectTrigger = React.forwardRef<
25
25
  >
26
26
  {children}
27
27
  <SelectPrimitive.Icon asChild>
28
- <ChevronDown className="h-4 w-4 opacity-50" />
28
+ <ChevronDown className="size-4 opacity-50" />
29
29
  </SelectPrimitive.Icon>
30
30
  </SelectPrimitive.Trigger>
31
31
  ))
@@ -40,7 +40,7 @@ const SelectScrollUpButton = React.forwardRef<
40
40
  className={cn('flex cursor-default items-center justify-center py-1', className)}
41
41
  {...props}
42
42
  >
43
- <ChevronUp className="h-4 w-4" />
43
+ <ChevronUp className="size-4" />
44
44
  </SelectPrimitive.ScrollUpButton>
45
45
  ))
46
46
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
@@ -54,7 +54,7 @@ const SelectScrollDownButton = React.forwardRef<
54
54
  className={cn('flex cursor-default items-center justify-center py-1', className)}
55
55
  {...props}
56
56
  >
57
- <ChevronDown className="h-4 w-4" />
57
+ <ChevronDown className="size-4" />
58
58
  </SelectPrimitive.ScrollDownButton>
59
59
  ))
60
60
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName
@@ -117,7 +117,7 @@ const SelectItem = React.forwardRef<
117
117
  >
118
118
  <span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center">
119
119
  <SelectPrimitive.ItemIndicator>
120
- <Check className="h-4 w-4" />
120
+ <Check className="size-4" />
121
121
  </SelectPrimitive.ItemIndicator>
122
122
  </span>
123
123
  <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
@@ -60,7 +60,7 @@ const SheetContent = React.forwardRef<
60
60
  <SheetOverlay />
61
61
  <SheetPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>
62
62
  <SheetPrimitive.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-secondary">
63
- <X className="h-4 w-4" />
63
+ <X className="size-4" />
64
64
  <span className="sr-only">Close</span>
65
65
  </SheetPrimitive.Close>
66
66
  {children}
@@ -123,7 +123,12 @@ function SidebarProvider({
123
123
  ...style
124
124
  } as React.CSSProperties
125
125
  }
126
- className={cn('group/sidebar-wrapper bg-background flex min-h-svh w-full', className)}
126
+ className={cn(
127
+ 'flex min-h-svh w-full',
128
+ 'bg-background',
129
+ 'group/sidebar-wrapper',
130
+ className
131
+ )}
127
132
  {...props}
128
133
  >
129
134
  {children}
@@ -152,7 +157,8 @@ function Sidebar({
152
157
  <div
153
158
  data-slot="sidebar"
154
159
  className={cn(
155
- 'bg-sidebar text-default flex h-full w-(--sidebar-width) flex-col',
160
+ 'flex h-full w-(--sidebar-width) flex-col',
161
+ 'bg-sidebar text-default',
156
162
  className
157
163
  )}
158
164
  {...props}
@@ -169,7 +175,7 @@ function Sidebar({
169
175
  data-sidebar="sidebar"
170
176
  data-slot="sidebar"
171
177
  data-mobile="true"
172
- className="bg-white text-default w-(--sidebar-width) p-0 [&>button]:hidden"
178
+ className={cn('w-(--sidebar-width) p-0', 'bg-white text-default', '[&>button]:hidden')}
173
179
  style={
174
180
  {
175
181
  '--sidebar-width': SIDEBAR_WIDTH_MOBILE
@@ -189,7 +195,7 @@ function Sidebar({
189
195
 
190
196
  return (
191
197
  <div
192
- className="group peer text-sidebar-foreground bg-background hidden md:block"
198
+ className={cn('hidden', 'bg-background text-sidebar-foreground', 'group peer', 'md:block')}
193
199
  data-state={state}
194
200
  data-collapsible={state === 'collapsed' ? collapsible : ''}
195
201
  data-variant={variant}
@@ -200,7 +206,9 @@ function Sidebar({
200
206
  <div
201
207
  data-slot="sidebar-gap"
202
208
  className={cn(
203
- 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',
209
+ 'relative w-(--sidebar-width)',
210
+ 'bg-transparent',
211
+ 'transition-[width] duration-200 ease-linear',
204
212
  'group-data-[collapsible=offcanvas]:w-0',
205
213
  'group-data-[side=right]:rotate-180',
206
214
  variant === 'floating' || variant === 'inset'
@@ -211,11 +219,13 @@ function Sidebar({
211
219
  <div
212
220
  data-slot="sidebar-container"
213
221
  className={cn(
214
- 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',
222
+ 'fixed inset-y-0 z-10 hidden',
223
+ 'h-svh w-(--sidebar-width)',
224
+ 'transition-[left,right,width] duration-200 ease-linear',
225
+ 'md:flex',
215
226
  side === 'left'
216
227
  ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
217
228
  : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
218
- // Adjust the padding for floating and inset variants.
219
229
  variant === 'floating' || variant === 'inset'
220
230
  ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
221
231
  : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',
@@ -226,7 +236,12 @@ function Sidebar({
226
236
  <div
227
237
  data-sidebar="sidebar"
228
238
  data-slot="sidebar-inner"
229
- className="bg-sidebar text-default group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg corner-squircle group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm"
239
+ className={cn(
240
+ 'flex h-full w-full flex-col',
241
+ 'bg-sidebar text-default',
242
+ 'corner-squircle',
243
+ 'group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm'
244
+ )}
230
245
  >
231
246
  {children}
232
247
  </div>
@@ -270,10 +285,17 @@ function SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {
270
285
  onClick={toggleSidebar}
271
286
  title="Toggle Sidebar"
272
287
  className={cn(
273
- 'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',
288
+ 'absolute inset-y-0 z-20 hidden w-4',
289
+ '-translate-x-1/2',
290
+ 'transition-all ease-linear',
291
+ 'after:absolute after:inset-y-0 after:left-1/2 after:w-[2px]',
292
+ 'hover:after:bg-sidebar-border',
293
+ 'sm:flex',
294
+ 'group-data-[side=left]:-right-4 group-data-[side=right]:left-0',
274
295
  'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',
275
296
  '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',
276
- 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',
297
+ 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',
298
+ 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',
277
299
  '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',
278
300
  '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',
279
301
  className
@@ -288,8 +310,11 @@ function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {
288
310
  <main
289
311
  data-slot="sidebar-inset"
290
312
  className={cn(
291
- 'bg-background relative flex w-full flex-1 flex-col',
292
- 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-2xl corner-squircle md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
313
+ 'relative flex w-full flex-1 flex-col',
314
+ 'bg-background',
315
+ 'corner-squircle',
316
+ 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-2xl md:peer-data-[variant=inset]:shadow-sm',
317
+ 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
293
318
  className
294
319
  )}
295
320
  {...props}
@@ -302,7 +327,7 @@ function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input
302
327
  <Input
303
328
  data-slot="sidebar-input"
304
329
  data-sidebar="input"
305
- className={cn('bg-background h-8 w-full shadow-none', className)}
330
+ className={cn('h-8 w-full', 'bg-background shadow-none', className)}
306
331
  {...props}
307
332
  />
308
333
  )
@@ -324,7 +349,7 @@ function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {
324
349
  <div
325
350
  data-slot="sidebar-footer"
326
351
  data-sidebar="footer"
327
- className={cn('flex flex-col gap-2 p-2', className)}
352
+ className={cn('flex flex-col gap-2', 'border-t border-border', 'p-2', className)}
328
353
  {...props}
329
354
  />
330
355
  )
@@ -335,7 +360,7 @@ function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof S
335
360
  <Separator
336
361
  data-slot="sidebar-separator"
337
362
  data-sidebar="separator"
338
- className={cn('bg-sidebar-border mx-2 w-auto', className)}
363
+ className={cn('mx-2 w-auto', 'bg-sidebar-border', className)}
339
364
  {...props}
340
365
  />
341
366
  )
@@ -347,7 +372,9 @@ function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {
347
372
  data-slot="sidebar-content"
348
373
  data-sidebar="content"
349
374
  className={cn(
350
- 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',
375
+ 'flex min-h-0 flex-1 flex-col gap-2',
376
+ 'overflow-auto',
377
+ 'group-data-[collapsible=icon]:overflow-hidden',
351
378
  className
352
379
  )}
353
380
  {...props}
@@ -378,7 +405,14 @@ function SidebarGroupLabel({
378
405
  data-slot="sidebar-group-label"
379
406
  data-sidebar="group-label"
380
407
  className={cn(
381
- 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md corner-squircle 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',
408
+ 'flex h-8 shrink-0 items-center',
409
+ 'px-2',
410
+ 'text-xs font-medium text-sidebar-foreground/70',
411
+ 'rounded-md corner-squircle',
412
+ 'ring-sidebar-ring outline-hidden',
413
+ 'transition-[margin,opacity] duration-200 ease-linear',
414
+ 'focus-visible:ring-2',
415
+ '[&>svg]:size-4 [&>svg]:shrink-0',
382
416
  'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',
383
417
  className
384
418
  )}
@@ -399,8 +433,16 @@ function SidebarGroupAction({
399
433
  data-slot="sidebar-group-action"
400
434
  data-sidebar="group-action"
401
435
  className={cn(
402
- 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md corner-squircle p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
403
- // Increases the hit area of the button on mobile.
436
+ 'absolute top-3.5 right-3',
437
+ 'flex aspect-square w-5 items-center justify-center',
438
+ 'p-0',
439
+ 'text-sidebar-foreground',
440
+ 'rounded-md corner-squircle',
441
+ 'ring-sidebar-ring outline-hidden',
442
+ 'transition-transform',
443
+ 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
444
+ 'focus-visible:ring-2',
445
+ '[&>svg]:size-4 [&>svg]:shrink-0',
404
446
  'after:absolute after:-inset-2 md:after:hidden',
405
447
  'group-data-[collapsible=icon]:hidden',
406
448
  className
@@ -437,14 +479,32 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {
437
479
  <li
438
480
  data-slot="sidebar-menu-item"
439
481
  data-sidebar="menu-item"
440
- className={cn('group/menu-item relative', className)}
482
+ className={cn('relative group/menu-item', className)}
441
483
  {...props}
442
484
  />
443
485
  )
444
486
  }
445
487
 
446
488
  const sidebarMenuButtonVariants = cva(
447
- 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md corner-squircle p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',
489
+ [
490
+ 'flex w-full items-center gap-2',
491
+ 'overflow-hidden p-2',
492
+ 'text-left text-sm',
493
+ 'rounded-md corner-squircle',
494
+ 'ring-sidebar-ring outline-hidden',
495
+ 'transition-[width,height,padding]',
496
+ 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
497
+ 'focus-visible:ring-2',
498
+ 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',
499
+ 'disabled:pointer-events-none disabled:opacity-50',
500
+ 'aria-disabled:pointer-events-none aria-disabled:opacity-50',
501
+ 'data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground',
502
+ 'data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground',
503
+ '[&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',
504
+ 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',
505
+ 'group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!',
506
+ 'peer/menu-button'
507
+ ],
448
508
  {
449
509
  variants: {
450
510
  variant: {
@@ -531,8 +591,17 @@ function SidebarMenuAction({
531
591
  data-slot="sidebar-menu-action"
532
592
  data-sidebar="menu-action"
533
593
  className={cn(
534
- 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md corner-squircle p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
535
- // Increases the hit area of the button on mobile.
594
+ 'absolute top-1.5 right-1',
595
+ 'flex aspect-square w-5 items-center justify-center',
596
+ 'p-0',
597
+ 'text-sidebar-foreground',
598
+ 'rounded-md corner-squircle',
599
+ 'ring-sidebar-ring outline-hidden',
600
+ 'transition-transform',
601
+ 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
602
+ 'focus-visible:ring-2',
603
+ '[&>svg]:size-4 [&>svg]:shrink-0',
604
+ 'peer-hover/menu-button:text-sidebar-accent-foreground',
536
605
  'after:absolute after:-inset-2 md:after:hidden',
537
606
  'peer-data-[size=sm]/menu-button:top-1',
538
607
  'peer-data-[size=default]/menu-button:top-1.5',
@@ -553,8 +622,14 @@ function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>)
553
622
  data-slot="sidebar-menu-badge"
554
623
  data-sidebar="menu-badge"
555
624
  className={cn(
556
- 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md corner-squircle px-1 text-xs font-medium tabular-nums select-none',
557
- 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
625
+ 'pointer-events-none absolute right-1',
626
+ 'flex h-5 min-w-5 items-center justify-center',
627
+ 'px-1',
628
+ 'text-xs font-medium tabular-nums text-sidebar-foreground',
629
+ 'rounded-md corner-squircle',
630
+ 'select-none',
631
+ 'peer-hover/menu-button:text-sidebar-accent-foreground',
632
+ 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
558
633
  'peer-data-[size=sm]/menu-button:top-1',
559
634
  'peer-data-[size=default]/menu-button:top-1.5',
560
635
  'peer-data-[size=lg]/menu-button:top-2.5',
@@ -582,7 +657,7 @@ function SidebarMenuSkeleton({
582
657
  <div
583
658
  data-slot="sidebar-menu-skeleton"
584
659
  data-sidebar="menu-skeleton"
585
- className={cn('flex h-8 items-center gap-2 rounded-md corner-squircle px-2', className)}
660
+ className={cn('flex h-8 items-center gap-2', 'px-2', 'rounded-md corner-squircle', className)}
586
661
  {...props}
587
662
  >
588
663
  {showIcon && (
@@ -607,7 +682,10 @@ function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {
607
682
  data-slot="sidebar-menu-sub"
608
683
  data-sidebar="menu-sub"
609
684
  className={cn(
610
- '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',
685
+ 'mx-3.5 flex min-w-0 flex-col gap-1',
686
+ 'px-2.5 py-0.5',
687
+ 'translate-x-px',
688
+ 'border-l border-sidebar-border',
611
689
  'group-data-[collapsible=icon]:hidden',
612
690
  className
613
691
  )}
@@ -621,7 +699,7 @@ function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>)
621
699
  <li
622
700
  data-slot="sidebar-menu-sub-item"
623
701
  data-sidebar="menu-sub-item"
624
- className={cn('group/menu-sub-item relative', className)}
702
+ className={cn('relative group/menu-sub-item', className)}
625
703
  {...props}
626
704
  />
627
705
  )
@@ -647,7 +725,18 @@ function SidebarMenuSubButton({
647
725
  data-size={size}
648
726
  data-active={isActive}
649
727
  className={cn(
650
- 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md corner-squircle px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',
728
+ 'flex h-7 min-w-0 items-center gap-2',
729
+ 'overflow-hidden px-2',
730
+ 'text-sidebar-foreground',
731
+ 'rounded-md corner-squircle',
732
+ 'ring-sidebar-ring outline-hidden',
733
+ '-translate-x-px',
734
+ 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
735
+ 'focus-visible:ring-2',
736
+ 'active:bg-sidebar-accent active:text-sidebar-accent-foreground',
737
+ 'disabled:pointer-events-none disabled:opacity-50',
738
+ 'aria-disabled:pointer-events-none aria-disabled:opacity-50',
739
+ '[&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',
651
740
  'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',
652
741
  size === 'sm' && 'text-xs',
653
742
  size === 'md' && 'text-sm',
@@ -16,7 +16,7 @@ const Slider = React.forwardRef<
16
16
  <SliderPrimitive.Track className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20">
17
17
  <SliderPrimitive.Range className="absolute h-full bg-primary" />
18
18
  </SliderPrimitive.Track>
19
- <SliderPrimitive.Thumb className="block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" />
19
+ <SliderPrimitive.Thumb className="block size-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" />
20
20
  </SliderPrimitive.Root>
21
21
  ))
22
22
  Slider.displayName = SliderPrimitive.Root.displayName
@@ -18,7 +18,7 @@ const Switch = React.forwardRef<
18
18
  >
19
19
  <SwitchPrimitives.Thumb
20
20
  className={cn(
21
- 'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'
21
+ 'pointer-events-none block size-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0'
22
22
  )}
23
23
  />
24
24
  </SwitchPrimitives.Root>
@@ -81,7 +81,7 @@ const ToastClose = React.forwardRef<
81
81
  toast-close=""
82
82
  {...props}
83
83
  >
84
- <X className="h-4 w-4" />
84
+ <X className="size-4" />
85
85
  </ToastPrimitives.Close>
86
86
  ))
87
87
  ToastClose.displayName = ToastPrimitives.Close.displayName