This commit is contained in:
Raed Bahri 2024-03-08 11:56:20 -07:00 committed by GitHub
commit 4003a83ee6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
177 changed files with 423 additions and 430 deletions

View File

@ -5,6 +5,6 @@ import { Button } from '@/lib/registry/default/ui/button'
<template> <template>
<Button variant="outline" size="icon"> <Button variant="outline" size="icon">
<ChevronRight class="w-4 h-4" /> <ChevronRight class="w-4 h-4 rtl:rotate-180" />
</Button> </Button>
</template> </template>

View File

@ -5,7 +5,7 @@ import { Button } from '@/lib/registry/default/ui/button'
<template> <template>
<Button disabled> <Button disabled>
<Loader2 class="w-4 h-4 mr-2 animate-spin" /> <Loader2 class="w-4 h-4 me-2 animate-spin" />
Please wait Please wait
</Button> </Button>
</template> </template>

View File

@ -5,6 +5,6 @@ import { Button } from '@/lib/registry/default/ui/button'
<template> <template>
<Button> <Button>
<Mail class="w-4 h-4 mr-2" /> Login with Email <Mail class="w-4 h-4 me-2" /> Login with Email
</Button> </Button>
</template> </template>

View File

@ -67,7 +67,7 @@ const selectedUsers = ref<User[]>([])
<template> <template>
<Card> <Card>
<CardHeader class="flex flex-row items-center justify-between"> <CardHeader class="flex flex-row items-center justify-between">
<div class="flex items-center space-x-4"> <div class="flex items-center gap-4">
<Avatar> <Avatar>
<AvatarImage src="/avatars/01.png" alt="Image" /> <AvatarImage src="/avatars/01.png" alt="Image" />
<AvatarFallback>OM</AvatarFallback> <AvatarFallback>OM</AvatarFallback>
@ -105,7 +105,7 @@ const selectedUsers = ref<User[]>([])
:key="index" :key="index"
:class="cn( :class="cn(
'flex w-max max-w-[75%] flex-col gap-2 rounded-lg px-3 py-2 text-sm', 'flex w-max max-w-[75%] flex-col gap-2 rounded-lg px-3 py-2 text-sm',
message.role === 'user' ? 'ml-auto bg-primary text-primary-foreground' : 'bg-muted', message.role === 'user' ? 'ms-auto bg-primary text-primary-foreground' : 'bg-muted',
)" )"
> >
{{ message.content }} {{ message.content }}
@ -114,7 +114,7 @@ const selectedUsers = ref<User[]>([])
</CardContent> </CardContent>
<CardFooter> <CardFooter>
<form <form
class="flex w-full items-center space-x-2" class="flex w-full items-center gap-2"
@submit.prevent="() => { @submit.prevent="() => {
if (inputLength === 0) return if (inputLength === 0) return
messages.push({ messages.push({
@ -168,7 +168,7 @@ const selectedUsers = ref<User[]>([])
<AvatarImage :src="user.avatar" alt="Image" /> <AvatarImage :src="user.avatar" alt="Image" />
<AvatarFallback>{{ user.name[0] }}</AvatarFallback> <AvatarFallback>{{ user.name[0] }}</AvatarFallback>
</Avatar> </Avatar>
<div class="ml-2"> <div class="ms-2">
<p class="text-sm font-medium leading-none"> <p class="text-sm font-medium leading-none">
{{ user.name }} {{ user.name }}
</p> </p>
@ -176,13 +176,13 @@ const selectedUsers = ref<User[]>([])
{{ user.email }} {{ user.email }}
</p> </p>
</div> </div>
<Check v-if="selectedUsers.includes(user)" class="ml-auto flex h-5 w-5 text-primary" /> <Check v-if="selectedUsers.includes(user)" class="ms-auto flex h-5 w-5 text-primary" />
</CommandItem> </CommandItem>
</CommandGroup> </CommandGroup>
</CommandList> </CommandList>
</Command> </Command>
<DialogFooter class="flex items-center border-t p-4 sm:justify-between"> <DialogFooter class="flex items-center border-t p-4 sm:justify-between">
<div v-if="selectedUsers.length > 0" class="flex -space-x-2 overflow-hidden"> <div v-if="selectedUsers.length > 0" class="flex -flex gap-2 overflow-hidden">
<Avatar <Avatar
v-for="user in selectedUsers" v-for="user in selectedUsers"
:key="user.email" :key="user.email"

View File

@ -36,7 +36,7 @@ const notifications = [
<CardDescription>You have 3 unread messages.</CardDescription> <CardDescription>You have 3 unread messages.</CardDescription>
</CardHeader> </CardHeader>
<CardContent class="grid gap-4"> <CardContent class="grid gap-4">
<div class=" flex items-center space-x-4 rounded-md border p-4"> <div class=" flex items-center gap-4 rounded-md border p-4">
<BellRing /> <BellRing />
<div class="flex-1 space-y-1"> <div class="flex-1 space-y-1">
<p class="text-sm font-medium leading-none"> <p class="text-sm font-medium leading-none">
@ -67,7 +67,7 @@ const notifications = [
</CardContent> </CardContent>
<CardFooter> <CardFooter>
<Button class="w-full"> <Button class="w-full">
<Check class="mr-2 h-4 w-4" /> Mark all as read <Check class="me-2 h-4 w-4" /> Mark all as read
</Button> </Button>
</CardFooter> </CardFooter>
</Card> </Card>

View File

@ -49,7 +49,7 @@ const data = [
<CardDescription>Set your daily activity goal.</CardDescription> <CardDescription>Set your daily activity goal.</CardDescription>
</CardHeader> </CardHeader>
<CardContent class="pb-2"> <CardContent class="pb-2">
<div class="flex items-center justify-center space-x-2"> <div class="flex items-center justify-center gap-2">
<Button <Button
variant="outline" variant="outline"
size="icon" size="icon"

View File

@ -104,7 +104,7 @@ const columns: ColumnDef<Payment>[] = [
return h(Button, { return h(Button, {
variant: 'ghost', variant: 'ghost',
onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'),
}, ['Email', h(ChevronsUpDown, { class: 'ml-2 h-4 w-4' })]) }, ['Email', h(ChevronsUpDown, { class: 'ms-2 h-4 w-4' })])
}, },
cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')), cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')),
}, },
@ -178,8 +178,8 @@ const table = useVueTable({
/> />
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger as-child> <DropdownMenuTrigger as-child>
<Button variant="outline" class="ml-auto"> <Button variant="outline" class="ms-auto">
Columns <ChevronDown class="ml-2 h-4 w-4" /> Columns <ChevronDown class="ms-2 h-4 w-4" />
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end">
@ -201,7 +201,7 @@ const table = useVueTable({
<Table> <Table>
<TableHeader> <TableHeader>
<TableRow v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id"> <TableRow v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id">
<TableHead v-for="header in headerGroup.headers" :key="header.id" class="[&:has([role=checkbox])]:pl-3"> <TableHead v-for="header in headerGroup.headers" :key="header.id" class="[&:has([role=checkbox])]:ps-3">
<FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" /> <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
</TableHead> </TableHead>
</TableRow> </TableRow>
@ -213,7 +213,7 @@ const table = useVueTable({
:key="row.id" :key="row.id"
:data-state="row.getIsSelected() && 'selected'" :data-state="row.getIsSelected() && 'selected'"
> >
<TableCell v-for="cell in row.getVisibleCells()" :key="cell.id" class="[&:has([role=checkbox])]:pl-3"> <TableCell v-for="cell in row.getVisibleCells()" :key="cell.id" class="[&:has([role=checkbox])]:ps-3">
<FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" /> <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
</TableCell> </TableCell>
</TableRow> </TableRow>
@ -231,12 +231,12 @@ const table = useVueTable({
</Table> </Table>
</div> </div>
<div class="flex items-center justify-end space-x-2 py-4"> <div class="flex items-center justify-end gap-2 py-4">
<div class="flex-1 text-sm text-muted-foreground"> <div class="flex-1 text-sm text-muted-foreground">
{{ table.getFilteredSelectedRowModel().rows.length }} of {{ table.getFilteredSelectedRowModel().rows.length }} of
{{ table.getFilteredRowModel().rows.length }} row(s) selected. {{ table.getFilteredRowModel().rows.length }} row(s) selected.
</div> </div>
<div class="space-x-2"> <div class="flex gap-2">
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"

View File

@ -10,8 +10,8 @@ import { Card, CardContent } from '@/lib/registry/default/ui/card'
align: 'start', align: 'start',
}" }"
> >
<CarouselContent class="-ml-1"> <CarouselContent class="-ms-1">
<CarouselItem v-for="(_, index) in 5" :key="index" class="pl-1 md:basis-1/2 lg:basis-1/3"> <CarouselItem v-for="(_, index) in 5" :key="index" class="ps-1 md:basis-1/2 lg:basis-1/3">
<div class="p-1"> <div class="p-1">
<Card> <Card>
<CardContent class="flex aspect-square items-center justify-center p-6"> <CardContent class="flex aspect-square items-center justify-center p-6">

View File

@ -3,7 +3,7 @@ import { Checkbox } from '@/lib/registry/default/ui/checkbox'
</script> </script>
<template> <template>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<Checkbox id="terms" /> <Checkbox id="terms" />
<label <label
for="terms" for="terms"

View File

@ -3,7 +3,7 @@ import { Checkbox } from '@/lib/registry/default/ui/checkbox'
</script> </script>
<template> <template>
<div class="items-top flex space-x-2"> <div class="items-top flex gap-2">
<Checkbox id="terms1" disabled /> <Checkbox id="terms1" disabled />
<label <label
for="terms2" for="terms2"

View File

@ -78,7 +78,7 @@ const onSubmit = handleSubmit((values) => {
</div> </div>
<FormField v-for="item in items" v-slot="{ value, handleChange }" :key="item.id" type="checkbox" :value="item.id" :unchecked-value="false" name="items"> <FormField v-for="item in items" v-slot="{ value, handleChange }" :key="item.id" type="checkbox" :value="item.id" :unchecked-value="false" name="items">
<FormItem class="flex flex-row items-start space-x-3 space-y-0"> <FormItem class="flex flex-row items-start gap-3 space-y-0">
<FormControl> <FormControl>
<Checkbox <Checkbox
:checked="value.includes(item.id)" :checked="value.includes(item.id)"

View File

@ -17,7 +17,7 @@ const isOpen = ref(false)
v-model:open="isOpen" v-model:open="isOpen"
class="w-[350px] space-y-2" class="w-[350px] space-y-2"
> >
<div class="flex items-center justify-between space-x-4 px-4"> <div class="flex items-center justify-between gap-4 px-4">
<h4 class="text-sm font-semibold"> <h4 class="text-sm font-semibold">
@peduarte starred 3 repositories @peduarte starred 3 repositories
</h4> </h4>

View File

@ -44,7 +44,7 @@ const value = ref<string>('')
{{ value {{ value
? frameworks.find((framework) => framework.value === value)?.label ? frameworks.find((framework) => framework.value === value)?.label
: "Select framework..." }} : "Select framework..." }}
<ChevronsUpDown class="ml-2 h-4 w-4 shrink-0 opacity-50" /> <ChevronsUpDown class="ms-2 h-4 w-4 shrink-0 opacity-50" />
</Button> </Button>
</PopoverTrigger> </PopoverTrigger>
<PopoverContent class="w-[200px] p-0"> <PopoverContent class="w-[200px] p-0">
@ -67,7 +67,7 @@ const value = ref<string>('')
{{ framework.label }} {{ framework.label }}
<Check <Check
:class="cn( :class="cn(
'ml-auto h-4 w-4', 'ms-auto h-4 w-4',
value === framework.value ? 'opacity-100' : 'opacity-0', value === framework.value ? 'opacity-100' : 'opacity-0',
)" )"
/> />

View File

@ -42,7 +42,7 @@ const open = ref(false)
<template> <template>
<div class="flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center"> <div class="flex w-full flex-col items-start justify-between rounded-md border px-4 py-3 sm:flex-row sm:items-center">
<p class="text-sm font-medium leading-none"> <p class="text-sm font-medium leading-none">
<span class="mr-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground"> <span class="me-2 rounded-lg bg-primary px-2 py-1 text-xs text-primary-foreground">
{{ labelRef }} {{ labelRef }}
</span> </span>
<span class="text-muted-foreground">Create a new project</span> <span class="text-muted-foreground">Create a new project</span>
@ -57,17 +57,17 @@ const open = ref(false)
<DropdownMenuLabel>Actions</DropdownMenuLabel> <DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuGroup> <DropdownMenuGroup>
<DropdownMenuItem> <DropdownMenuItem>
<User class="mr-2 h-4 w-4" /> <User class="me-2 h-4 w-4" />
Assign to... Assign to...
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<Calendar class="mr-2 h-4 w-4" /> <Calendar class="me-2 h-4 w-4" />
Set due date... Set due date...
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuSub> <DropdownMenuSub>
<DropdownMenuSubTrigger> <DropdownMenuSubTrigger>
<Tags class="mr-2 h-4 w-4" /> <Tags class="me-2 h-4 w-4" />
Apply label Apply label
</DropdownMenuSubTrigger> </DropdownMenuSubTrigger>
<DropdownMenuSubContent class="p-0"> <DropdownMenuSubContent class="p-0">
@ -97,7 +97,7 @@ const open = ref(false)
</DropdownMenuSub> </DropdownMenuSub>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem class="text-red-600"> <DropdownMenuItem class="text-red-600">
<Trash class="mr-2 h-4 w-4" /> <Trash class="me-2 h-4 w-4" />
Delete Delete
<DropdownMenuShortcut></DropdownMenuShortcut> <DropdownMenuShortcut></DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>

View File

@ -76,7 +76,7 @@ const onSubmit = handleSubmit((values) => {
{{ values.language ? languages.find( {{ values.language ? languages.find(
(language) => language.value === values.language, (language) => language.value === values.language,
)?.label : 'Select language...' }} )?.label : 'Select language...' }}
<ChevronsUpDown class="ml-2 h-4 w-4 shrink-0 opacity-50" /> <ChevronsUpDown class="ms-2 h-4 w-4 shrink-0 opacity-50" />
</Button> </Button>
</FormControl> </FormControl>
</PopoverTrigger> </PopoverTrigger>
@ -97,7 +97,7 @@ const onSubmit = handleSubmit((values) => {
}" }"
> >
<Check <Check
:class="cn('mr-2 h-4 w-4', language.value === values.language ? 'opacity-100' : 'opacity-0')" :class="cn('me-2 h-4 w-4', language.value === values.language ? 'opacity-100' : 'opacity-0')"
/> />
{{ language.label }} {{ language.label }}
</CommandItem> </CommandItem>

View File

@ -60,13 +60,13 @@ const statuses: Status[] = [
] ]
const open = ref(false) const open = ref(false)
const value = ref<typeof statuses[number]>() // const value = ref<typeof statuses[number]>()
const selectedStatus = ref<Status>() const selectedStatus = ref<Status>()
</script> </script>
<template> <template>
<div class="flex items-center space-x-4"> <div class="flex items-center gap-4">
<p class="text-sm text-muted-foreground"> <p class="text-sm text-muted-foreground">
Status Status
</p> </p>
@ -78,7 +78,7 @@ const selectedStatus = ref<Status>()
class="w-[150px] justify-start" class="w-[150px] justify-start"
> >
<template v-if="selectedStatus"> <template v-if="selectedStatus">
<component :is="selectedStatus?.icon" class="mr-2 h-4 w-4 shrink-0" /> <component :is="selectedStatus?.icon" class="me-2 h-4 w-4 shrink-0" />
{{ selectedStatus?.label }} {{ selectedStatus?.label }}
</template> </template>
<template v-else> <template v-else>
@ -104,7 +104,7 @@ const selectedStatus = ref<Status>()
<component <component
:is="status.icon" :is="status.icon"
:key="status.value" :key="status.value"
:class="cn('mr-2 h-4 w-4', status.value === selectedStatus?.value ? 'opacity-100' : 'opacity-40', :class="cn('me-2 h-4 w-4', status.value === selectedStatus?.value ? 'opacity-100' : 'opacity-40',
)" )"
/> />
<span>{{ status.label }}</span> <span>{{ status.label }}</span>

View File

@ -27,32 +27,32 @@ import {
<CommandEmpty>No results found.</CommandEmpty> <CommandEmpty>No results found.</CommandEmpty>
<CommandGroup heading="Suggestions"> <CommandGroup heading="Suggestions">
<CommandItem value="Calendar"> <CommandItem value="Calendar">
<Calendar class="mr-2 h-4 w-4" /> <Calendar class="me-2 h-4 w-4" />
<span>Calendar</span> <span>Calendar</span>
</CommandItem> </CommandItem>
<CommandItem value="Search Emoji"> <CommandItem value="Search Emoji">
<Smile class="mr-2 h-4 w-4" /> <Smile class="me-2 h-4 w-4" />
<span>Search Emoji</span> <span>Search Emoji</span>
</CommandItem> </CommandItem>
<CommandItem value="Calculator"> <CommandItem value="Calculator">
<Calculator class="mr-2 h-4 w-4" /> <Calculator class="me-2 h-4 w-4" />
<span>Calculator</span> <span>Calculator</span>
</CommandItem> </CommandItem>
</CommandGroup> </CommandGroup>
<CommandSeparator /> <CommandSeparator />
<CommandGroup heading="Settings"> <CommandGroup heading="Settings">
<CommandItem value="Profile"> <CommandItem value="Profile">
<User class="mr-2 h-4 w-4" /> <User class="me-2 h-4 w-4" />
<span>Profile</span> <span>Profile</span>
<CommandShortcut>P</CommandShortcut> <CommandShortcut>P</CommandShortcut>
</CommandItem> </CommandItem>
<CommandItem value="Billing"> <CommandItem value="Billing">
<CreditCard class="mr-2 h-4 w-4" /> <CreditCard class="me-2 h-4 w-4" />
<span>Billing</span> <span>Billing</span>
<CommandShortcut>B</CommandShortcut> <CommandShortcut>B</CommandShortcut>
</CommandItem> </CommandItem>
<CommandItem value="Settings"> <CommandItem value="Settings">
<Settings class="mr-2 h-4 w-4" /> <Settings class="me-2 h-4 w-4" />
<span>Settings</span> <span>Settings</span>
<CommandShortcut>S</CommandShortcut> <CommandShortcut>S</CommandShortcut>
</CommandItem> </CommandItem>

View File

@ -1,6 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import type { import type {
ColumnDef,
ColumnFiltersState, ColumnFiltersState,
SortingState, SortingState,
VisibilityState, VisibilityState,
@ -88,7 +87,7 @@ const columns = [
'onUpdate:checked': value => table.toggleAllPageRowsSelected(!!value), 'onUpdate:checked': value => table.toggleAllPageRowsSelected(!!value),
'ariaLabel': 'Select all', 'ariaLabel': 'Select all',
}), }),
cell: ({ row, column }) => { cell: ({ row }) => {
return h(Checkbox, { return h(Checkbox, {
'checked': row.getIsSelected(), 'checked': row.getIsSelected(),
'onUpdate:checked': value => row.toggleSelected(!!value), 'onUpdate:checked': value => row.toggleSelected(!!value),
@ -108,7 +107,7 @@ const columns = [
return h(Button, { return h(Button, {
variant: 'ghost', variant: 'ghost',
onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'),
}, () => ['Email', h(ArrowUpDown, { class: 'ml-2 h-4 w-4' })]) }, () => ['Email', h(ArrowUpDown, { class: 'ms-2 h-4 w-4' })])
}, },
cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')), cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')),
}), }),
@ -165,8 +164,6 @@ const table = useVueTable({
}, },
}, },
}) })
const getState = table.getState()
</script> </script>
<template> <template>
@ -180,8 +177,8 @@ const getState = table.getState()
/> />
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger as-child> <DropdownMenuTrigger as-child>
<Button variant="outline" class="ml-auto"> <Button variant="outline" class="ms-auto">
Columns <ChevronDown class="ml-2 h-4 w-4" /> Columns <ChevronDown class="ms-2 h-4 w-4" />
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end">
@ -245,12 +242,12 @@ const getState = table.getState()
</Table> </Table>
</div> </div>
<div class="flex items-center justify-end space-x-2 py-4"> <div class="flex items-center justify-end gap-2 py-4">
<div class="flex-1 text-sm text-muted-foreground"> <div class="flex-1 text-sm text-muted-foreground">
{{ table.getFilteredSelectedRowModel().rows.length }} of {{ table.getFilteredSelectedRowModel().rows.length }} of
{{ table.getFilteredRowModel().rows.length }} row(s) selected. {{ table.getFilteredRowModel().rows.length }} row(s) selected.
</div> </div>
<div class="space-x-2"> <div class="flex gap-2">
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"

View File

@ -103,7 +103,7 @@ const columns: ColumnDef<Payment>[] = [
return h(Button, { return h(Button, {
variant: 'ghost', variant: 'ghost',
onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'),
}, () => ['Email', h(ArrowUpDown, { class: 'ml-2 h-4 w-4' })]) }, () => ['Email', h(ArrowUpDown, { class: 'ms-2 h-4 w-4' })])
}, },
cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')), cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')),
}, },
@ -171,8 +171,8 @@ const table = useVueTable({
/> />
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger as-child> <DropdownMenuTrigger as-child>
<Button variant="outline" class="ml-auto"> <Button variant="outline" class="ms-auto">
Columns <ChevronDown class="ml-2 h-4 w-4" /> Columns <ChevronDown class="ms-2 h-4 w-4" />
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end">
@ -224,12 +224,12 @@ const table = useVueTable({
</Table> </Table>
</div> </div>
<div class="flex items-center justify-end space-x-2 py-4"> <div class="flex items-center justify-end gap-2 py-4">
<div class="flex-1 text-sm text-muted-foreground"> <div class="flex-1 text-sm text-muted-foreground">
{{ table.getFilteredSelectedRowModel().rows.length }} of {{ table.getFilteredSelectedRowModel().rows.length }} of
{{ table.getFilteredRowModel().rows.length }} row(s) selected. {{ table.getFilteredRowModel().rows.length }} row(s) selected.
</div> </div>
<div class="space-x-2"> <div class="flex gap-2">
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"

View File

@ -21,11 +21,11 @@ const date = ref<Date>()
<Button <Button
:variant="'outline'" :variant="'outline'"
:class="cn( :class="cn(
'w-[280px] justify-start text-left font-normal', 'w-[280px] justify-start text-start font-normal',
!date && 'text-muted-foreground', !date && 'text-muted-foreground',
)" )"
> >
<CalendarIcon class="mr-2 h-4 w-4" /> <CalendarIcon class="me-2 h-4 w-4" />
<span>{{ date ? format(date, "PPP") : "Pick a date" }}</span> <span>{{ date ? format(date, "PPP") : "Pick a date" }}</span>
</Button> </Button>
</PopoverTrigger> </PopoverTrigger>

View File

@ -28,11 +28,11 @@ const date = ref<Date>()
<Button <Button
variant="outline" variant="outline"
:class="cn( :class="cn(
'w-[280px] justify-start text-left font-normal', 'w-[280px] justify-start text-start font-normal',
!date && 'text-muted-foreground', !date && 'text-muted-foreground',
)" )"
> >
<CalendarIcon class="mr-2 h-4 w-4" /> <CalendarIcon class="me-2 h-4 w-4" />
<template v-if="date"> <template v-if="date">
{{ format(date, "PPP") }} {{ format(date, "PPP") }}
</template> </template>

View File

@ -26,11 +26,11 @@ const date = ref({
id="date" id="date"
:variant="'outline'" :variant="'outline'"
:class="cn( :class="cn(
'w-[300px] justify-start text-left font-normal', 'w-[300px] justify-start text-start font-normal',
!date && 'text-muted-foreground', !date && 'text-muted-foreground',
)" )"
> >
<CalendarIcon class="mr-2 h-4 w-4" /> <CalendarIcon class="me-2 h-4 w-4" />
<span> <span>
{{ date.start ? ( {{ date.start ? (

View File

@ -21,11 +21,11 @@ const date = ref<Date>()
<Button <Button
:variant="'outline'" :variant="'outline'"
:class="cn( :class="cn(
'w-[280px] justify-start text-left font-normal', 'w-[280px] justify-start text-start font-normal',
!date && 'text-muted-foreground', !date && 'text-muted-foreground',
)" )"
> >
<CalendarIcon class="mr-2 h-4 w-4" /> <CalendarIcon class="me-2 h-4 w-4" />
<span>{{ date ? format(date, 'PPP - hh:mm') : "Pick a date" }}</span> <span>{{ date ? format(date, 'PPP - hh:mm') : "Pick a date" }}</span>
</Button> </Button>
</PopoverTrigger> </PopoverTrigger>

View File

@ -29,7 +29,7 @@ import { Label } from '@/lib/registry/default/ui/label'
Anyone who has this link will be able to view this. Anyone who has this link will be able to view this.
</DialogDescription> </DialogDescription>
</DialogHeader> </DialogHeader>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<div class="grid flex-1 gap-2"> <div class="grid flex-1 gap-2">
<Label for="link" class="sr-only"> <Label for="link" class="sr-only">
Link Link

View File

@ -48,7 +48,7 @@ const data = [
<DrawerDescription>Set your daily activity goal.</DrawerDescription> <DrawerDescription>Set your daily activity goal.</DrawerDescription>
</DrawerHeader> </DrawerHeader>
<div class="p-4 pb-0"> <div class="p-4 pb-0">
<div class="flex items-center justify-center space-x-2"> <div class="flex items-center justify-center gap-2">
<Button <Button
variant="outline" variant="outline"
size="icon" size="icon"

View File

@ -34,11 +34,11 @@ const isOpen = ref(false)
<UseTemplate> <UseTemplate>
<form class="grid items-start gap-4 px-4"> <form class="grid items-start gap-4 px-4">
<div class="grid gap-2"> <div class="grid gap-2">
<Label html-for="email">Email</Label> <Label for="email">Email</Label>
<Input id="email" type="email" default-value="shadcn@example.com" /> <Input id="email" type="email" default-value="shadcn@example.com" />
</div> </div>
<div class="grid gap-2"> <div class="grid gap-2">
<Label html-for="username">Username</Label> <Label for="username">Username</Label>
<Input id="username" default-value="@shadcn" /> <Input id="username" default-value="@shadcn" />
</div> </div>
<Button type="submit"> <Button type="submit">
@ -71,7 +71,7 @@ const isOpen = ref(false)
</Button> </Button>
</DrawerTrigger> </DrawerTrigger>
<DrawerContent> <DrawerContent>
<DrawerHeader class="text-left"> <DrawerHeader class="text-start">
<DrawerTitle>Edit profile</DrawerTitle> <DrawerTitle>Edit profile</DrawerTitle>
<DrawerDescription> <DrawerDescription>
Make changes to your profile here. Click save when you're done. Make changes to your profile here. Click save when you're done.

View File

@ -45,22 +45,22 @@ import {
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuGroup> <DropdownMenuGroup>
<DropdownMenuItem> <DropdownMenuItem>
<User class="mr-2 h-4 w-4" /> <User class="me-2 h-4 w-4" />
<span>Profile</span> <span>Profile</span>
<DropdownMenuShortcut>P</DropdownMenuShortcut> <DropdownMenuShortcut>P</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<CreditCard class="mr-2 h-4 w-4" /> <CreditCard class="me-2 h-4 w-4" />
<span>Billing</span> <span>Billing</span>
<DropdownMenuShortcut>B</DropdownMenuShortcut> <DropdownMenuShortcut>B</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<Settings class="mr-2 h-4 w-4" /> <Settings class="me-2 h-4 w-4" />
<span>Settings</span> <span>Settings</span>
<DropdownMenuShortcut>S</DropdownMenuShortcut> <DropdownMenuShortcut>S</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<Keyboard class="mr-2 h-4 w-4" /> <Keyboard class="me-2 h-4 w-4" />
<span>Keyboard shortcuts</span> <span>Keyboard shortcuts</span>
<DropdownMenuShortcut>K</DropdownMenuShortcut> <DropdownMenuShortcut>K</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
@ -68,54 +68,54 @@ import {
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuGroup> <DropdownMenuGroup>
<DropdownMenuItem> <DropdownMenuItem>
<Users class="mr-2 h-4 w-4" /> <Users class="me-2 h-4 w-4" />
<span>Team</span> <span>Team</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuSub> <DropdownMenuSub>
<DropdownMenuSubTrigger> <DropdownMenuSubTrigger>
<UserPlus class="mr-2 h-4 w-4" /> <UserPlus class="me-2 h-4 w-4" />
<span>Invite users</span> <span>Invite users</span>
</DropdownMenuSubTrigger> </DropdownMenuSubTrigger>
<DropdownMenuPortal> <DropdownMenuPortal>
<DropdownMenuSubContent> <DropdownMenuSubContent>
<DropdownMenuItem> <DropdownMenuItem>
<Mail class="mr-2 h-4 w-4" /> <Mail class="me-2 h-4 w-4" />
<span>Email</span> <span>Email</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<MessageSquare class="mr-2 h-4 w-4" /> <MessageSquare class="me-2 h-4 w-4" />
<span>Message</span> <span>Message</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem> <DropdownMenuItem>
<PlusCircle class="mr-2 h-4 w-4" /> <PlusCircle class="me-2 h-4 w-4" />
<span>More...</span> <span>More...</span>
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuSubContent> </DropdownMenuSubContent>
</DropdownMenuPortal> </DropdownMenuPortal>
</DropdownMenuSub> </DropdownMenuSub>
<DropdownMenuItem> <DropdownMenuItem>
<Plus class="mr-2 h-4 w-4" /> <Plus class="me-2 h-4 w-4" />
<span>New Team</span> <span>New Team</span>
<DropdownMenuShortcut>+T</DropdownMenuShortcut> <DropdownMenuShortcut>+T</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem> <DropdownMenuItem>
<Github class="mr-2 h-4 w-4" /> <Github class="me-2 h-4 w-4" />
<span>GitHub</span> <span>GitHub</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<LifeBuoy class="mr-2 h-4 w-4" /> <LifeBuoy class="me-2 h-4 w-4" />
<span>Support</span> <span>Support</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem disabled> <DropdownMenuItem disabled>
<Cloud class="mr-2 h-4 w-4" /> <Cloud class="me-2 h-4 w-4" />
<span>API</span> <span>API</span>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem> <DropdownMenuItem>
<LogOut class="mr-2 h-4 w-4" /> <LogOut class="me-2 h-4 w-4" />
<span>Log out</span> <span>Log out</span>
<DropdownMenuShortcut>Q</DropdownMenuShortcut> <DropdownMenuShortcut>Q</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>

View File

@ -22,7 +22,7 @@ import {
</Button> </Button>
</HoverCardTrigger> </HoverCardTrigger>
<HoverCardContent class="w-80"> <HoverCardContent class="w-80">
<div class="flex justify-between space-x-4"> <div class="flex justify-between gap-4">
<Avatar> <Avatar>
<AvatarImage src="https://github.com/vuejs.png" /> <AvatarImage src="https://github.com/vuejs.png" />
<AvatarFallback>VC</AvatarFallback> <AvatarFallback>VC</AvatarFallback>
@ -35,7 +35,7 @@ import {
Progressive JavaScript framework for building modern web interfaces. Progressive JavaScript framework for building modern web interfaces.
</p> </p>
<div class="flex items-center pt-2"> <div class="flex items-center pt-2">
<CalendarDays class="mr-2 h-4 w-4 opacity-70" /> <CalendarDays class="me-2 h-4 w-4 opacity-70" />
<span class="text-xs text-muted-foreground"> <span class="text-xs text-muted-foreground">
Joined January 2014 Joined January 2014
</span> </span>

View File

@ -5,7 +5,7 @@ import { Input } from '@/lib/registry/default/ui/input'
<template> <template>
<div class="relative w-full max-w-sm items-center"> <div class="relative w-full max-w-sm items-center">
<Input id="search" type="text" placeholder="Search..." class="pl-10" /> <Input id="search" type="text" placeholder="Search..." class="ps-10" />
<span class="absolute start-0 inset-y-0 flex items-center justify-center px-2"> <span class="absolute start-0 inset-y-0 flex items-center justify-center px-2">
<MagnifyingGlassIcon class="size-6 text-muted-foreground" /> <MagnifyingGlassIcon class="size-6 text-muted-foreground" />
</span> </span>

View File

@ -5,7 +5,7 @@ import { Label } from '@/lib/registry/default/ui/label'
<template> <template>
<div> <div>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<Checkbox id="terms" /> <Checkbox id="terms" />
<Label for="terms">Accept terms and conditions</Label> <Label for="terms">Accept terms and conditions</Label>
</div> </div>

View File

@ -5,15 +5,15 @@ import { RadioGroup, RadioGroupItem } from '@/lib/registry/default/ui/radio-grou
<template> <template>
<RadioGroup default-value="comfortable"> <RadioGroup default-value="comfortable">
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<RadioGroupItem id="r1" value="default" /> <RadioGroupItem id="r1" value="default" />
<Label for="r1">Default</Label> <Label for="r1">Default</Label>
</div> </div>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<RadioGroupItem id="r2" value="comfortable" /> <RadioGroupItem id="r2" value="comfortable" />
<Label for="r2">Comfortable</Label> <Label for="r2">Comfortable</Label>
</div> </div>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<RadioGroupItem id="r3" value="compact" /> <RadioGroupItem id="r3" value="compact" />
<Label for="r3">Compact</Label> <Label for="r3">Compact</Label>
</div> </div>

View File

@ -26,11 +26,11 @@ const date = ref({
id="date" id="date"
:variant="'outline'" :variant="'outline'"
:class="cn( :class="cn(
'w-[300px] justify-start text-left font-normal', 'w-[300px] justify-start text-start font-normal',
!date && 'text-muted-foreground', !date && 'text-muted-foreground',
)" )"
> >
<CalendarIcon class="mr-2 h-4 w-4" /> <CalendarIcon class="me-2 h-4 w-4" />
<span> <span>
{{ date.start ? ( {{ date.start ? (

View File

@ -28,7 +28,7 @@ const works: Artwork[] = [
<template> <template>
<ScrollArea class="border rounded-md w-96 whitespace-nowrap"> <ScrollArea class="border rounded-md w-96 whitespace-nowrap">
<div class="flex p-4 space-x-4 w-max"> <div class="flex p-4 gap-4 w-max">
<div v-for="artwork in works" :key="artwork.id"> <div v-for="artwork in works" :key="artwork.id">
<figure class="shrink-0"> <figure class="shrink-0">
<div class="overflow-hidden rounded-md"> <div class="overflow-hidden rounded-md">

View File

@ -13,7 +13,7 @@ import { Separator } from '@/lib/registry/default/ui/separator'
</p> </p>
</div> </div>
<Separator class="my-4" /> <Separator class="my-4" />
<div class="flex h-5 items-center space-x-4 text-sm"> <div class="flex h-5 items-center gap-4 text-sm">
<div>Blog</div> <div>Blog</div>
<Separator orientation="vertical" /> <Separator orientation="vertical" />
<div>Docs</div> <div>Docs</div>

View File

@ -3,7 +3,7 @@ import { Skeleton } from '@/lib/registry/default/ui/skeleton'
</script> </script>
<template> <template>
<div class="flex items-center space-x-4"> <div class="flex items-center gap-4">
<Skeleton class="h-12 w-12 rounded-full" /> <Skeleton class="h-12 w-12 rounded-full" />
<div class="space-y-2"> <div class="space-y-2">
<Skeleton class="h-4 w-[250px]" /> <Skeleton class="h-4 w-[250px]" />

View File

@ -4,7 +4,7 @@ import { Switch } from '@/lib/registry/default/ui/switch'
</script> </script>
<template> <template>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<Switch id="airplane-mode" /> <Switch id="airplane-mode" />
<Label for="airplane-mode">Airplane Mode</Label> <Label for="airplane-mode">Airplane Mode</Label>
</div> </div>

View File

@ -6,7 +6,7 @@ import { Toggle } from '@/lib/registry/default/ui/toggle'
<template> <template>
<Toggle aria-label="Toggle italic"> <Toggle aria-label="Toggle italic">
<Italic class="w-4 h-4 mr-2" /> <Italic class="w-4 h-4 me-2" />
Italic Italic
</Toggle> </Toggle>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<blockquote class="mt-6 border-l-2 pl-6 italic"> <blockquote class="mt-6 border-l-2 ps-6 italic">
"After all," he said, "everyone enjoys a good joke, so it's only fair that "After all," he said, "everyone enjoys a good joke, so it's only fair that
they should pay for the privilege." they should pay for the privilege."
</blockquote> </blockquote>

View File

@ -23,7 +23,7 @@
</a> </a>
: he would tax the jokes in the kingdom. : he would tax the jokes in the kingdom.
</p> </p>
<blockquote class="mt-6 border-l-2 pl-6 italic"> <blockquote class="mt-6 border-l-2 ps-6 italic">
"After all," he said, "everyone enjoys a good joke, so it's only fair "After all," he said, "everyone enjoys a good joke, so it's only fair
that they should pay for the privilege." that they should pay for the privilege."
</blockquote> </blockquote>
@ -34,7 +34,7 @@
The king's subjects were not amused. They grumbled and complained, but The king's subjects were not amused. They grumbled and complained, but
the king was firm: the king was firm:
</p> </p>
<ul class="my-6 ml-6 list-disc [&>li]:mt-2"> <ul class="my-6 ms-6 list-disc [&>li]:mt-2">
<li>1st level of puns: 5 gold coins</li> <li>1st level of puns: 5 gold coins</li>
<li>2nd level of jokes: 10 gold coins</li> <li>2nd level of jokes: 10 gold coins</li>
<li>3rd level of one-liners : 20 gold coins</li> <li>3rd level of one-liners : 20 gold coins</li>
@ -71,12 +71,12 @@
<thead> <thead>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<th <th
class="border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start font-bold [&[align=center]]:text-center [&[align=right]]:text-right"
> >
King's Treasury King's Treasury
</th> </th>
<th <th
class="border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start font-bold [&[align=center]]:text-center [&[align=right]]:text-right"
> >
People's happiness People's happiness
</th> </th>
@ -85,36 +85,36 @@
<tbody> <tbody>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Empty Empty
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Overflowing Overflowing
</td> </td>
</tr> </tr>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Modest Modest
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Satisfied Satisfied
</td> </td>
</tr> </tr>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Full Full
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Ecstatic Ecstatic
</td> </td>

View File

@ -1,5 +1,5 @@
<template> <template>
<ul class="my-6 ml-6 list-disc [&>li]:mt-2"> <ul class="my-6 ms-6 list-disc [&>li]:mt-2">
<li>1st level of puns: 5 gold coins</li> <li>1st level of puns: 5 gold coins</li>
<li>2nd level of jokes: 10 gold coins</li> <li>2nd level of jokes: 10 gold coins</li>
<li>3rd level of one-liners : 20 gold coins</li> <li>3rd level of one-liners : 20 gold coins</li>

View File

@ -4,12 +4,12 @@
<thead> <thead>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<th <th
class="border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start font-bold [&[align=center]]:text-center [&[align=right]]:text-right"
> >
King's Treasury King's Treasury
</th> </th>
<th <th
class="border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start font-bold [&[align=center]]:text-center [&[align=right]]:text-right"
> >
People's happiness People's happiness
</th> </th>
@ -18,36 +18,36 @@
<tbody> <tbody>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Empty Empty
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Overflowing Overflowing
</td> </td>
</tr> </tr>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Modest Modest
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Satisfied Satisfied
</td> </td>
</tr> </tr>
<tr class="m-0 border-t p-0 even:bg-muted"> <tr class="m-0 border-t p-0 even:bg-muted">
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Full Full
</td> </td>
<td <td
class="border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right" class="border px-4 py-2 text-start [&[align=center]]:text-center [&[align=right]]:text-right"
> >
Ecstatic Ecstatic
</td> </td>

View File

@ -31,7 +31,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
v-bind="forwarded" v-bind="forwarded"
:class=" :class="
cn( cn(
'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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', 'fixed start-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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',
props.class, props.class,
) )
" "

View File

@ -9,7 +9,7 @@ const props = defineProps<{
<template> <template>
<div <div
:class="cn('flex flex-col gap-y-2 text-center sm:text-left', props.class)" :class="cn('flex flex-col gap-y-2 text-center sm:text-start', props.class)"
> >
<slot /> <slot />
</div> </div>

View File

@ -5,7 +5,7 @@ export { default as AlertTitle } from './AlertTitle.vue'
export { default as AlertDescription } from './AlertDescription.vue' export { default as AlertDescription } from './AlertDescription.vue'
export const alertVariants = cva( export const alertVariants = cva(
'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground', 'relative w-full rounded-lg border p-4 [&>svg~*]:ps-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:start-4 [&>svg]:top-4 [&>svg]:text-foreground',
{ {
variants: { variants: {
variant: { variant: {

View File

@ -80,10 +80,10 @@ const vCalendarSlots = computed(() => {
<div class="relative"> <div class="relative">
<div v-if="$attrs.mode !== 'time'" class="absolute flex justify-between w-full px-4 top-3 z-[1]"> <div v-if="$attrs.mode !== 'time'" class="absolute flex justify-between w-full px-4 top-3 z-[1]">
<button :class="cn(buttonVariants({ variant: 'outline' }), 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100')" @click="handleNav('prev')"> <button :class="cn(buttonVariants({ variant: 'outline' }), 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100')" @click="handleNav('prev')">
<ChevronLeft class="w-4 h-4" /> <ChevronLeft class="w-4 h-4 rtl:rotate-180" />
</button> </button>
<button :class="cn(buttonVariants({ variant: 'outline' }), 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100')" @click="handleNav('next')"> <button :class="cn(buttonVariants({ variant: 'outline' }), 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100')" @click="handleNav('next')">
<ChevronRight class="w-4 h-4" /> <ChevronRight class="w-4 h-4 rtl:rotate-180" />
</button> </button>
</div> </div>
@ -102,11 +102,11 @@ const vCalendarSlots = computed(() => {
</template> </template>
<template #nav-prev-button> <template #nav-prev-button>
<ChevronLeft /> <ChevronLeft class="rtl:rotate-180" />
</template> </template>
<template #nav-next-button> <template #nav-next-button>
<ChevronRight /> <ChevronRight class="rtl:rotate-180" />
</template> </template>
</DatePicker> </DatePicker>
</div> </div>
@ -305,7 +305,7 @@ const vCalendarSlots = computed(() => {
@apply inline-flex items-center px-1 rounded-md bg-primary-foreground border border-solid border-secondary; @apply inline-flex items-center px-1 rounded-md bg-primary-foreground border border-solid border-secondary;
} }
.vc-time-select-group .vc-base-icon { .vc-time-select-group .vc-base-icon {
@apply mr-1 text-primary stroke-primary; @apply me-1 text-primary stroke-primary;
} }
.vc-time-select-group select { .vc-time-select-group select {
@apply bg-primary-foreground p-1 appearance-none outline-none text-center; @apply bg-primary-foreground p-1 appearance-none outline-none text-center;
@ -314,18 +314,18 @@ const vCalendarSlots = computed(() => {
@apply text-muted-foreground tracking-wide; @apply text-muted-foreground tracking-wide;
} }
.vc-time-month { .vc-time-month {
@apply text-primary ml-2; @apply text-primary ms-2;
} }
.vc-time-day { .vc-time-day {
@apply text-primary ml-1; @apply text-primary ms-1;
} }
.vc-time-year { .vc-time-year {
@apply text-muted-foreground ml-2; @apply text-muted-foreground ms-2;
} }
.vc-time-colon { .vc-time-colon {
@apply mb-0.5; @apply mb-0.5;
} }
.vc-time-decimal { .vc-time-decimal {
@apply ml-0.5; @apply ms-0.5;
} }
</style> </style>

View File

@ -18,7 +18,7 @@ const { carouselRef, orientation } = useCarousel()
:class=" :class="
cn( cn(
'flex', 'flex',
orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', orientation === 'horizontal' ? '-ms-4' : '-mt-4 flex-col',
props.class, props.class,
)" )"
v-bind="$attrs" v-bind="$attrs"

View File

@ -14,7 +14,7 @@ const { orientation } = useCarousel()
aria-roledescription="slide" aria-roledescription="slide"
:class="cn( :class="cn(
'min-w-0 shrink-0 grow-0 basis-full', 'min-w-0 shrink-0 grow-0 basis-full',
orientation === 'horizontal' ? 'pl-4' : 'pt-4', orientation === 'horizontal' ? 'ps-4' : 'pt-4',
props.class, props.class,
)" )"
> >

View File

@ -17,14 +17,14 @@ const { orientation, canScrollNext, scrollNext } = useCarousel()
'touch-manipulation absolute h-8 w-8 rounded-full p-0', 'touch-manipulation absolute h-8 w-8 rounded-full p-0',
orientation === 'horizontal' orientation === 'horizontal'
? '-right-12 top-1/2 -translate-y-1/2' ? '-right-12 top-1/2 -translate-y-1/2'
: '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', : '-bottom-12 start-1/2 -translate-x-1/2 rotate-90',
props.class, props.class,
)" )"
variant="outline" variant="outline"
@click="scrollNext" @click="scrollNext"
> >
<slot> <slot>
<ArrowRight class="h-4 w-4 text-current" /> <ArrowRight class="h-4 w-4 text-current rtl:rotate-180" />
</slot> </slot>
</Button> </Button>
</template> </template>

View File

@ -17,14 +17,14 @@ const { orientation, canScrollPrev, scrollPrev } = useCarousel()
'touch-manipulation absolute h-8 w-8 rounded-full p-0', 'touch-manipulation absolute h-8 w-8 rounded-full p-0',
orientation === 'horizontal' orientation === 'horizontal'
? '-left-12 top-1/2 -translate-y-1/2' ? '-left-12 top-1/2 -translate-y-1/2'
: '-top-12 left-1/2 -translate-x-1/2 rotate-90', : '-top-12 start-1/2 -translate-x-1/2 rotate-90',
props.class, props.class,
)" )"
variant="outline" variant="outline"
@click="scrollPrev" @click="scrollPrev"
> >
<slot> <slot>
<ArrowLeft class="h-4 w-4 text-current" /> <ArrowLeft class="h-4 w-4 text-current rtl:rotate-180" />
</slot> </slot>
</Button> </Button>
</template> </template>

View File

@ -23,7 +23,7 @@ const forwardedProps = useForwardProps(delegatedProps)
<template> <template>
<div class="flex items-center border-b px-3" cmdk-input-wrapper> <div class="flex items-center border-b px-3" cmdk-input-wrapper>
<Search class="mr-2 h-4 w-4 shrink-0 opacity-50" /> <Search class="me-2 h-4 w-4 shrink-0 opacity-50" />
<ComboboxInput <ComboboxInput
v-bind="{ ...forwardedProps, ...$attrs }" v-bind="{ ...forwardedProps, ...$attrs }"
auto-focus auto-focus

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<span :class="cn('ml-auto text-xs tracking-widest text-muted-foreground', props.class)"> <span :class="cn('ms-auto text-xs tracking-widest text-muted-foreground', props.class)">
<slot /> <slot />
</span> </span>
</template> </template>

View File

@ -26,11 +26,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<ContextMenuCheckboxItem <ContextMenuCheckboxItem
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none 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 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<ContextMenuItemIndicator> <ContextMenuItemIndicator>
<Check class="h-4 w-4" /> <Check class="h-4 w-4" />
</ContextMenuItemIndicator> </ContextMenuItemIndicator>

View File

@ -8,7 +8,7 @@ import {
} from 'radix-vue' } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<ContextMenuItemProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<ContextMenuItemProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const emits = defineEmits<ContextMenuItemEmits>() const emits = defineEmits<ContextMenuItemEmits>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
@ -25,7 +25,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none 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 px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
inset && 'pl-8', inset && 'ps-8',
props.class, props.class,
)" )"
> >

View File

@ -3,7 +3,7 @@ import { type HTMLAttributes, computed } from 'vue'
import { ContextMenuLabel, type ContextMenuLabelProps } from 'radix-vue' import { ContextMenuLabel, type ContextMenuLabelProps } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<ContextMenuLabelProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<ContextMenuLabelProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, ...delegated } = props const { class: _, ...delegated } = props
@ -17,7 +17,7 @@ const delegatedProps = computed(() => {
v-bind="delegatedProps" v-bind="delegatedProps"
:class=" :class="
cn('px-2 py-1.5 text-sm font-semibold text-foreground', cn('px-2 py-1.5 text-sm font-semibold text-foreground',
inset && 'pl-8', props.class, inset && 'ps-8', props.class,
)" )"
> >
<slot /> <slot />

View File

@ -26,11 +26,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<ContextMenuRadioItem <ContextMenuRadioItem
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none 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 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<ContextMenuItemIndicator> <ContextMenuItemIndicator>
<Circle class="h-2 w-2 fill-current" /> <Circle class="h-2 w-2 fill-current" />
</ContextMenuItemIndicator> </ContextMenuItemIndicator>

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<span :class="cn('ml-auto text-xs tracking-widest text-muted-foreground', props.class)"> <span :class="cn('ms-auto text-xs tracking-widest text-muted-foreground', props.class)">
<slot /> <slot />
</span> </span>
</template> </template>

View File

@ -8,7 +8,7 @@ import {
import { ChevronRight } from 'lucide-vue-next' import { ChevronRight } from 'lucide-vue-next'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<ContextMenuSubTriggerProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<ContextMenuSubTriggerProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, ...delegated } = props const { class: _, ...delegated } = props
@ -24,11 +24,11 @@ const forwardedProps = useForwardProps(delegatedProps)
v-bind="forwardedProps" v-bind="forwardedProps"
:class="cn( :class="cn(
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground', 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
inset && 'pl-8', inset && 'ps-8',
props.class, props.class,
)" )"
> >
<slot /> <slot />
<ChevronRight class="ml-auto h-4 w-4" /> <ChevronRight class="ms-auto h-4 w-4 rtl:rotate-180" />
</ContextMenuSubTrigger> </ContextMenuSubTrigger>
</template> </template>

View File

@ -33,14 +33,14 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
v-bind="forwarded" v-bind="forwarded"
:class=" :class="
cn( cn(
'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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', 'fixed start-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 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',
props.class, props.class,
)" )"
> >
<slot /> <slot />
<DialogClose <DialogClose
class="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" class="absolute end-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"
> >
<X class="w-4 h-4" /> <X class="w-4 h-4" />
<span class="sr-only">Close</span> <span class="sr-only">Close</span>

View File

@ -9,7 +9,7 @@ const props = defineProps<{
<template> <template>
<div <div
:class="cn('flex flex-col gap-y-1.5 text-center sm:text-left', props.class)" :class="cn('flex flex-col gap-y-1.5 text-center sm:text-start', props.class)"
> >
<slot /> <slot />
</div> </div>

View File

@ -48,7 +48,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<slot /> <slot />
<DialogClose <DialogClose
class="absolute top-3 right-3 p-0.5 transition-colors rounded-md hover:bg-secondary" class="absolute top-3 end-3 p-0.5 transition-colors rounded-md hover:bg-secondary"
> >
<X class="w-4 h-4" /> <X class="w-4 h-4" />
<span class="sr-only">Close</span> <span class="sr-only">Close</span>

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<div :class="cn('grid gap-1.5 p-4 text-center sm:text-left', props.class)"> <div :class="cn('grid gap-1.5 p-4 text-center sm:text-start', props.class)">
<slot /> <slot />
</div> </div>
</template> </template>

View File

@ -26,11 +26,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<DropdownMenuCheckboxItem <DropdownMenuCheckboxItem
v-bind="forwarded" v-bind="forwarded"
:class=" cn( :class=" 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 ps-8 pe-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<DropdownMenuItemIndicator> <DropdownMenuItemIndicator>
<Check class="w-4 h-4" /> <Check class="w-4 h-4" />
</DropdownMenuItemIndicator> </DropdownMenuItemIndicator>

View File

@ -3,7 +3,7 @@ import { type HTMLAttributes, computed } from 'vue'
import { DropdownMenuItem, type DropdownMenuItemProps, useForwardProps } from 'radix-vue' import { DropdownMenuItem, type DropdownMenuItemProps, useForwardProps } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<DropdownMenuItemProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<DropdownMenuItemProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, ...delegated } = props const { class: _, ...delegated } = props
@ -19,7 +19,7 @@ const forwardedProps = useForwardProps(delegatedProps)
v-bind="forwardedProps" v-bind="forwardedProps"
:class="cn( :class="cn(
'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', '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',
inset && 'pl-8', inset && 'ps-8',
props.class, props.class,
)" )"
> >

View File

@ -3,7 +3,7 @@ import { type HTMLAttributes, computed } from 'vue'
import { DropdownMenuLabel, type DropdownMenuLabelProps, useForwardProps } from 'radix-vue' import { DropdownMenuLabel, type DropdownMenuLabelProps, useForwardProps } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<DropdownMenuLabelProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<DropdownMenuLabelProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, ...delegated } = props const { class: _, ...delegated } = props
@ -17,7 +17,7 @@ const forwardedProps = useForwardProps(delegatedProps)
<template> <template>
<DropdownMenuLabel <DropdownMenuLabel
v-bind="forwardedProps" v-bind="forwardedProps"
:class="cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', props.class)" :class="cn('px-2 py-1.5 text-sm font-semibold', inset && 'ps-8', props.class)"
> >
<slot /> <slot />
</DropdownMenuLabel> </DropdownMenuLabel>

View File

@ -27,11 +27,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<DropdownMenuRadioItem <DropdownMenuRadioItem
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="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 ps-8 pe-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<DropdownMenuItemIndicator> <DropdownMenuItemIndicator>
<Circle class="h-2 w-2 fill-current" /> <Circle class="h-2 w-2 fill-current" />
</DropdownMenuItemIndicator> </DropdownMenuItemIndicator>

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<span :class="cn('ml-auto text-xs tracking-widest opacity-60', props.class)"> <span :class="cn('ms-auto text-xs tracking-widest opacity-60', props.class)">
<slot /> <slot />
</span> </span>
</template> </template>

View File

@ -28,6 +28,6 @@ const forwardedProps = useForwardProps(delegatedProps)
)" )"
> >
<slot /> <slot />
<ChevronRight class="ml-auto h-4 w-4" /> <ChevronRight class="ms-auto h-4 w-4 rtl:rotate-180" />
</DropdownMenuSubTrigger> </DropdownMenuSubTrigger>
</template> </template>

View File

@ -26,11 +26,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<MenubarCheckboxItem <MenubarCheckboxItem
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none 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 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<MenubarItemIndicator> <MenubarItemIndicator>
<Check class="w-4 h-4" /> <Check class="w-4 h-4" />
</MenubarItemIndicator> </MenubarItemIndicator>

View File

@ -8,7 +8,7 @@ import {
} from 'radix-vue' } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<MenubarItemProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<MenubarItemProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const emits = defineEmits<MenubarItemEmits>() const emits = defineEmits<MenubarItemEmits>()
@ -26,7 +26,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none 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 px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
inset && 'pl-8', inset && 'ps-8',
props.class, props.class,
)" )"
> >

View File

@ -3,11 +3,11 @@ import type { HTMLAttributes } from 'vue'
import { MenubarLabel, type MenubarLabelProps } from 'radix-vue' import { MenubarLabel, type MenubarLabelProps } from 'radix-vue'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<MenubarLabelProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<MenubarLabelProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
</script> </script>
<template> <template>
<MenubarLabel :class="cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', props.class)"> <MenubarLabel :class="cn('px-2 py-1.5 text-sm font-semibold', inset && 'ps-8', props.class)">
<slot /> <slot />
</MenubarLabel> </MenubarLabel>
</template> </template>

View File

@ -26,11 +26,11 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<MenubarRadioItem <MenubarRadioItem
v-bind="forwarded" v-bind="forwarded"
:class="cn( :class="cn(
'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none 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 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
)" )"
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<MenubarItemIndicator> <MenubarItemIndicator>
<Circle class="h-2 w-2 fill-current" /> <Circle class="h-2 w-2 fill-current" />
</MenubarItemIndicator> </MenubarItemIndicator>

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<span :class="cn('ml-auto text-xs tracking-widest text-muted-foreground', props.class)"> <span :class="cn('ms-auto text-xs tracking-widest text-muted-foreground', props.class)">
<slot /> <slot />
</span> </span>
</template> </template>

View File

@ -4,7 +4,7 @@ import { MenubarSubTrigger, type MenubarSubTriggerProps, useForwardProps } from
import { ChevronRight } from 'lucide-vue-next' import { ChevronRight } from 'lucide-vue-next'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
const props = defineProps<MenubarSubTriggerProps & { class?: HTMLAttributes['class']; inset?: boolean }>() const props = defineProps<MenubarSubTriggerProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, ...delegated } = props const { class: _, ...delegated } = props
@ -20,11 +20,11 @@ const forwardedProps = useForwardProps(delegatedProps)
v-bind="forwardedProps" v-bind="forwardedProps"
:class="cn( :class="cn(
'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground', 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',
inset && 'pl-8', inset && 'ps-8',
props.class, props.class,
)" )"
> >
<slot /> <slot />
<ChevronRight class="ml-auto h-4 w-4" /> <ChevronRight class="ms-auto h-4 w-4 rtl:rotate-180" />
</MenubarSubTrigger> </MenubarSubTrigger>
</template> </template>

View File

@ -27,7 +27,7 @@ const forwardedProps = useForwardProps(delegatedProps)
> >
<slot /> <slot />
<ChevronDown <ChevronDown
class="relative top-px ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180" class="relative top-px ms-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
aria-hidden="true" aria-hidden="true"
/> />
</NavigationMenuTrigger> </NavigationMenuTrigger>

View File

@ -19,7 +19,7 @@ const forwardedProps = useForwardProps(delegatedProps)
</script> </script>
<template> <template>
<div class="absolute left-0 top-full flex justify-center"> <div class="absolute start-0 top-full flex justify-center">
<NavigationMenuViewport <NavigationMenuViewport
v-bind="forwardedProps" v-bind="forwardedProps"
:class=" :class="

View File

@ -22,7 +22,7 @@ const delegatedProps = computed(() => {
<PaginationNext v-bind="delegatedProps"> <PaginationNext v-bind="delegatedProps">
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline"> <Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
<slot> <slot>
<ChevronRight class="h-4 w-4" /> <ChevronRight class="h-4 w-4 rtl:rotate-180" />
</slot> </slot>
</Button> </Button>
</PaginationNext> </PaginationNext>

View File

@ -22,7 +22,7 @@ const delegatedProps = computed(() => {
<PaginationPrev v-bind="delegatedProps"> <PaginationPrev v-bind="delegatedProps">
<Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline"> <Button :class="cn('w-10 h-10 p-0', props.class)" variant="outline">
<slot> <slot>
<ChevronLeft class="h-4 w-4" /> <ChevronLeft class="h-4 w-4 rtl:rotate-180" />
</slot> </slot>
</Button> </Button>
</PaginationPrev> </PaginationPrev>

View File

@ -26,12 +26,12 @@ const forwardedProps = useForwardProps(delegatedProps)
v-bind="forwardedProps" v-bind="forwardedProps"
:class=" :class="
cn( cn(
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
props.class, props.class,
) )
" "
> >
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center"> <span class="absolute start-2 flex h-3.5 w-3.5 items-center justify-center">
<SelectItemIndicator> <SelectItemIndicator>
<Check class="h-4 w-4" /> <Check class="h-4 w-4" />
</SelectItemIndicator> </SelectItemIndicator>

View File

@ -7,7 +7,7 @@ const props = defineProps<SelectLabelProps & { class?: HTMLAttributes['class'] }
</script> </script>
<template> <template>
<SelectLabel :class="cn('py-1.5 pl-8 pr-2 text-sm font-semibold', props.class)"> <SelectLabel :class="cn('py-1.5 ps-8 pe-2 text-sm font-semibold', props.class)">
<slot /> <slot />
</SelectLabel> </SelectLabel>
</template> </template>

View File

@ -27,7 +27,7 @@ const props = defineProps<SheetContentProps>()
const emits = defineEmits<DialogContentEmits>() const emits = defineEmits<DialogContentEmits>()
const delegatedProps = computed(() => { const delegatedProps = computed(() => {
const { class: _, side, ...delegated } = props const { class: _, ...delegated } = props
return delegated return delegated
}) })
@ -47,7 +47,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
<slot /> <slot />
<DialogClose <DialogClose
class="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" class="absolute end-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"
> >
<X class="w-4 h-4 text-muted-foreground" /> <X class="w-4 h-4 text-muted-foreground" />
</DialogClose> </DialogClose>

View File

@ -8,7 +8,7 @@ const props = defineProps<{ class?: HTMLAttributes['class'] }>()
<template> <template>
<div <div
:class=" :class="
cn('flex flex-col gap-y-2 text-center sm:text-left', props.class) cn('flex flex-col gap-y-2 text-center sm:text-start', props.class)
" "
> >
<slot /> <slot />

View File

@ -17,9 +17,9 @@ export const sheetVariants = cva(
top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top', top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
bottom: bottom:
'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom', 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm', left: 'inset-y-0 start-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
right: right:
'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm', 'inset-y-0 end-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
}, },
}, },
defaultVariants: { defaultVariants: {

View File

@ -11,7 +11,7 @@ const props = defineProps<{
<td <td
:class=" :class="
cn( cn(
'p-4 align-middle [&:has([role=checkbox])]:pr-0', 'p-4 align-middle [&:has([role=checkbox])]:pe-0',
props.class, props.class,
) )
" "

View File

@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<th :class="cn('h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', props.class)"> <th :class="cn('h-12 px-4 text-start align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pe-0', props.class)">
<slot /> <slot />
</th> </th>
</template> </template>

View File

@ -16,7 +16,7 @@ const forwardedProps = useForwardProps(delegatedProps)
</script> </script>
<template> <template>
<TagsInputItemDelete v-bind="forwardedProps" :class="cn('flex rounded bg-transparent mr-1', props.class)"> <TagsInputItemDelete v-bind="forwardedProps" :class="cn('flex rounded bg-transparent me-1', props.class)">
<slot> <slot>
<X class="w-4 h-4" /> <X class="w-4 h-4" />
</slot> </slot>

View File

@ -16,7 +16,7 @@ const delegatedProps = computed(() => {
</script> </script>
<template> <template>
<ToastClose v-bind="delegatedProps" :class="cn('absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600', props.class)"> <ToastClose v-bind="delegatedProps" :class="cn('absolute end-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600', props.class)">
<X class="h-4 w-4" /> <X class="h-4 w-4" />
</ToastClose> </ToastClose>
</template> </template>

View File

@ -13,5 +13,5 @@ const delegatedProps = computed(() => {
</script> </script>
<template> <template>
<ToastViewport v-bind="delegatedProps" :class="cn('fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]', props.class)" /> <ToastViewport v-bind="delegatedProps" :class="cn('fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:end-0 sm:top-auto sm:flex-col md:max-w-[420px]', props.class)" />
</template> </template>

View File

@ -14,7 +14,7 @@ export { toast, useToast } from './use-toast'
import { type VariantProps, cva } from 'class-variance-authority' import { type VariantProps, cva } from 'class-variance-authority'
export const toastVariants = cva( export const toastVariants = cva(
'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[--radix-toast-swipe-end-x] data-[swipe=move]:translate-x-[--radix-toast-swipe-move-x] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full', 'group pointer-events-auto relative flex w-full items-center justify-between gap-4 overflow-hidden rounded-md border p-6 pe-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[--radix-toast-swipe-end-x] data-[swipe=move]:translate-x-[--radix-toast-swipe-move-x] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',
{ {
variants: { variants: {
variant: { variant: {
@ -34,5 +34,5 @@ type ToastVariants = VariantProps<typeof toastVariants>
export interface ToastProps extends ToastRootProps { export interface ToastProps extends ToastRootProps {
class?: HTMLAttributes['class'] class?: HTMLAttributes['class']
variant?: ToastVariants['variant'] variant?: ToastVariants['variant']
'onOpenChange'?: ((value: boolean) => void) | undefined onOpenChange?: ((value: boolean) => void) | undefined
} }

View File

@ -5,6 +5,6 @@ import { Button } from '@/lib/registry/new-york/ui/button'
<template> <template>
<Button variant="outline" size="icon"> <Button variant="outline" size="icon">
<ChevronRightIcon class="w-4 h-4" /> <ChevronRightIcon class="w-4 h-4 rtl:rotate-180" />
</Button> </Button>
</template> </template>

View File

@ -5,7 +5,7 @@ import { Button } from '@/lib/registry/new-york/ui/button'
<template> <template>
<Button disabled> <Button disabled>
<ReloadIcon class="w-4 h-4 mr-2 animate-spin" /> <ReloadIcon class="w-4 h-4 me-2 animate-spin" />
Please wait Please wait
</Button> </Button>
</template> </template>

View File

@ -5,6 +5,6 @@ import { Button } from '@/lib/registry/new-york/ui/button'
<template> <template>
<Button> <Button>
<EnvelopeOpenIcon class="w-4 h-4 mr-2" /> Login with Email <EnvelopeOpenIcon class="w-4 h-4 me-2" /> Login with Email
</Button> </Button>
</template> </template>

View File

@ -67,7 +67,7 @@ const selectedUsers = ref<User[]>([])
<template> <template>
<Card> <Card>
<CardHeader class="flex flex-row items-center justify-between"> <CardHeader class="flex flex-row items-center justify-between">
<div class="flex items-center space-x-4"> <div class="flex items-center gap-4">
<Avatar> <Avatar>
<AvatarImage src="/avatars/01.png" alt="Image" /> <AvatarImage src="/avatars/01.png" alt="Image" />
<AvatarFallback>OM</AvatarFallback> <AvatarFallback>OM</AvatarFallback>
@ -105,7 +105,7 @@ const selectedUsers = ref<User[]>([])
:key="index" :key="index"
:class="cn( :class="cn(
'flex w-max max-w-[75%] flex-col gap-2 rounded-lg px-3 py-2 text-sm', 'flex w-max max-w-[75%] flex-col gap-2 rounded-lg px-3 py-2 text-sm',
message.role === 'user' ? 'ml-auto bg-primary text-primary-foreground' : 'bg-muted', message.role === 'user' ? 'ms-auto bg-primary text-primary-foreground' : 'bg-muted',
)" )"
> >
{{ message.content }} {{ message.content }}
@ -114,7 +114,7 @@ const selectedUsers = ref<User[]>([])
</CardContent> </CardContent>
<CardFooter> <CardFooter>
<form <form
class="flex w-full items-center space-x-2" class="flex w-full items-center gap-2"
@submit.prevent="() => { @submit.prevent="() => {
if (inputLength === 0) return if (inputLength === 0) return
messages.push({ messages.push({
@ -168,7 +168,7 @@ const selectedUsers = ref<User[]>([])
<AvatarImage :src="user.avatar" alt="Image" /> <AvatarImage :src="user.avatar" alt="Image" />
<AvatarFallback>{{ user.name[0] }}</AvatarFallback> <AvatarFallback>{{ user.name[0] }}</AvatarFallback>
</Avatar> </Avatar>
<div class="ml-2"> <div class="ms-2">
<p class="text-sm font-medium leading-none"> <p class="text-sm font-medium leading-none">
{{ user.name }} {{ user.name }}
</p> </p>
@ -176,13 +176,13 @@ const selectedUsers = ref<User[]>([])
{{ user.email }} {{ user.email }}
</p> </p>
</div> </div>
<CheckIcon v-if="selectedUsers.includes(user)" class="ml-auto flex h-5 w-5 text-primary" /> <CheckIcon v-if="selectedUsers.includes(user)" class="ms-auto flex h-5 w-5 text-primary" />
</CommandItem> </CommandItem>
</CommandGroup> </CommandGroup>
</CommandList> </CommandList>
</Command> </Command>
<DialogFooter class="flex items-center border-t p-4 sm:justify-between"> <DialogFooter class="flex items-center border-t p-4 sm:justify-between">
<div v-if="selectedUsers.length > 0" class="flex -space-x-2 overflow-hidden"> <div v-if="selectedUsers.length > 0" class="flex -flex gap-2 overflow-hidden">
<Avatar <Avatar
v-for="user in selectedUsers" v-for="user in selectedUsers"
:key="user.email" :key="user.email"

View File

@ -35,7 +35,7 @@ const notifications = [
<CardDescription>You have 3 unread messages.</CardDescription> <CardDescription>You have 3 unread messages.</CardDescription>
</CardHeader> </CardHeader>
<CardContent class="grid gap-4"> <CardContent class="grid gap-4">
<div class=" flex items-center space-x-4 rounded-md border p-4"> <div class=" flex items-center gap-4 rounded-md border p-4">
<BellIcon /> <BellIcon />
<div class="flex-1 space-y-1"> <div class="flex-1 space-y-1">
<p class="text-sm font-medium leading-none"> <p class="text-sm font-medium leading-none">
@ -66,7 +66,7 @@ const notifications = [
</CardContent> </CardContent>
<CardFooter> <CardFooter>
<Button class="w-full"> <Button class="w-full">
<CheckIcon class="mr-2 h-4 w-4" /> Mark all as read <CheckIcon class="me-2 h-4 w-4" /> Mark all as read
</Button> </Button>
</CardFooter> </CardFooter>
</Card> </Card>

View File

@ -45,7 +45,7 @@ const data = [
<CardDescription>Set your daily activity goal.</CardDescription> <CardDescription>Set your daily activity goal.</CardDescription>
</CardHeader> </CardHeader>
<CardContent class="pb-2"> <CardContent class="pb-2">
<div class="flex items-center justify-center space-x-2"> <div class="flex items-center justify-center gap-2">
<Button <Button
variant="outline" variant="outline"
size="icon" size="icon"

View File

@ -104,7 +104,7 @@ const columns: ColumnDef<Payment>[] = [
return h(Button, { return h(Button, {
variant: 'ghost', variant: 'ghost',
onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'),
}, ['Email', h(CaretSortIcon, { class: 'ml-2 h-4 w-4' })]) }, ['Email', h(CaretSortIcon, { class: 'ms-2 h-4 w-4' })])
}, },
cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')), cell: ({ row }) => h('div', { class: 'lowercase' }, row.getValue('email')),
}, },
@ -178,8 +178,8 @@ const table = useVueTable({
/> />
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger as-child> <DropdownMenuTrigger as-child>
<Button variant="outline" class="ml-auto"> <Button variant="outline" class="ms-auto">
Columns <ChevronDownIcon class="ml-2 h-4 w-4" /> Columns <ChevronDownIcon class="ms-2 h-4 w-4" />
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end"> <DropdownMenuContent align="end">
@ -201,7 +201,7 @@ const table = useVueTable({
<Table> <Table>
<TableHeader> <TableHeader>
<TableRow v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id"> <TableRow v-for="headerGroup in table.getHeaderGroups()" :key="headerGroup.id">
<TableHead v-for="header in headerGroup.headers" :key="header.id" class="[&:has([role=checkbox])]:pl-3"> <TableHead v-for="header in headerGroup.headers" :key="header.id" class="[&:has([role=checkbox])]:ps-3">
<FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" /> <FlexRender v-if="!header.isPlaceholder" :render="header.column.columnDef.header" :props="header.getContext()" />
</TableHead> </TableHead>
</TableRow> </TableRow>
@ -213,7 +213,7 @@ const table = useVueTable({
:key="row.id" :key="row.id"
:data-state="row.getIsSelected() && 'selected'" :data-state="row.getIsSelected() && 'selected'"
> >
<TableCell v-for="cell in row.getVisibleCells()" :key="cell.id" class="[&:has([role=checkbox])]:pl-3"> <TableCell v-for="cell in row.getVisibleCells()" :key="cell.id" class="[&:has([role=checkbox])]:ps-3">
<FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" /> <FlexRender :render="cell.column.columnDef.cell" :props="cell.getContext()" />
</TableCell> </TableCell>
</TableRow> </TableRow>
@ -231,12 +231,12 @@ const table = useVueTable({
</Table> </Table>
</div> </div>
<div class="flex items-center justify-end space-x-2 py-4"> <div class="flex items-center justify-end gap-2 py-4">
<div class="flex-1 text-sm text-muted-foreground"> <div class="flex-1 text-sm text-muted-foreground">
{{ table.getFilteredSelectedRowModel().rows.length }} of {{ table.getFilteredSelectedRowModel().rows.length }} of
{{ table.getFilteredRowModel().rows.length }} row(s) selected. {{ table.getFilteredRowModel().rows.length }} row(s) selected.
</div> </div>
<div class="space-x-2"> <div class="flex gap-2">
<Button <Button
variant="outline" variant="outline"
size="sm" size="sm"

View File

@ -10,8 +10,8 @@ import { Card, CardContent } from '@/lib/registry/new-york/ui/card'
align: 'start', align: 'start',
}" }"
> >
<CarouselContent class="-ml-1"> <CarouselContent class="-ms-1">
<CarouselItem v-for="(_, index) in 5" :key="index" class="pl-1 md:basis-1/2 lg:basis-1/3"> <CarouselItem v-for="(_, index) in 5" :key="index" class="ps-1 md:basis-1/2 lg:basis-1/3">
<div class="p-1"> <div class="p-1">
<Card> <Card>
<CardContent class="flex aspect-square items-center justify-center p-6"> <CardContent class="flex aspect-square items-center justify-center p-6">

View File

@ -3,7 +3,7 @@ import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
</script> </script>
<template> <template>
<div class="flex items-center space-x-2"> <div class="flex items-center gap-2">
<Checkbox id="terms" /> <Checkbox id="terms" />
<label <label
for="terms" for="terms"

View File

@ -3,7 +3,7 @@ import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
</script> </script>
<template> <template>
<div class="items-top flex space-x-2"> <div class="items-top flex gap-2">
<Checkbox id="terms1" disabled /> <Checkbox id="terms1" disabled />
<label <label
for="terms2" for="terms2"

View File

@ -78,7 +78,7 @@ const onSubmit = handleSubmit((values) => {
</div> </div>
<FormField v-for="item in items" v-slot="{ value, handleChange }" :key="item.id" type="checkbox" :value="item.id" :unchecked-value="false" name="items"> <FormField v-for="item in items" v-slot="{ value, handleChange }" :key="item.id" type="checkbox" :value="item.id" :unchecked-value="false" name="items">
<FormItem class="flex flex-row items-start space-x-3 space-y-0"> <FormItem class="flex flex-row items-start gap-3 space-y-0">
<FormControl> <FormControl>
<Checkbox <Checkbox
:checked="value.includes(item.id)" :checked="value.includes(item.id)"

View File

@ -17,7 +17,7 @@ const isOpen = ref(false)
v-model:open="isOpen" v-model:open="isOpen"
class="w-[350px] space-y-2" class="w-[350px] space-y-2"
> >
<div class="flex items-center justify-between space-x-4 px-4"> <div class="flex items-center justify-between gap-4 px-4">
<h4 class="text-sm font-semibold"> <h4 class="text-sm font-semibold">
@peduarte starred 3 repositories @peduarte starred 3 repositories
</h4> </h4>

Some files were not shown because too many files have changed in this diff Show More