diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx
index b6d1b5d7c..e7b323d3d 100644
--- a/src/components/ui/alert.tsx
+++ b/src/components/ui/alert.tsx
@@ -4,13 +4,13 @@ import * as React from 'react';
import { cn } from '@/lib/tailwind/utils';
const alertVariants = cva(
- 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
+ "group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
{
variants: {
variant: {
default: 'bg-card text-card-foreground',
destructive:
- 'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current',
+ 'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',
},
},
defaultVariants: {
@@ -39,7 +39,7 @@ function AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {
svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',
className
)}
{...props}
@@ -55,7 +55,7 @@ function AlertDescription({
) {
+ return (
+
+ );
+}
+
+export { Alert, AlertAction, AlertDescription, AlertTitle };
diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx
index 31f9e741d..8e7607c02 100644
--- a/src/components/ui/avatar.tsx
+++ b/src/components/ui/avatar.tsx
@@ -16,7 +16,7 @@ function Avatar({
data-slot="avatar"
data-size={size}
className={cn(
- 'group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',
+ 'group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten',
className
)}
{...props}
@@ -140,7 +140,7 @@ function AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {
svg]:hidden',
'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',
'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',
diff --git a/src/components/ui/button-link.stories.tsx b/src/components/ui/button-link.stories.tsx
index 205a432bf..47cc958b3 100644
--- a/src/components/ui/button-link.stories.tsx
+++ b/src/components/ui/button-link.stories.tsx
@@ -142,28 +142,3 @@ export const FixedWidth = () => {
);
};
-
-export const Disabled = () => {
- return (
-
-
- Default
-
-
- Secondary
-
-
- Destructive
-
-
- Destructive
-
-
- Ghost
-
-
- Link
-
-
- );
-};
diff --git a/src/components/ui/button-link.tsx b/src/components/ui/button-link.tsx
index dc4455c81..d3ff255a8 100644
--- a/src/components/ui/button-link.tsx
+++ b/src/components/ui/button-link.tsx
@@ -13,7 +13,7 @@ function ButtonLink({
size,
...props
}: VariantProps
&
- ComponentProps<'a'> &
+ Omit, 'disabled'> &
LinkProps & { className?: string }) {
return (
span]:gap-2",
+ "group/button relative inline-flex w-fit max-w-full min-w-0 shrink-0 cursor-pointer items-center justify-center overflow-hidden rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-40 disabled:grayscale aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-40 data-disabled:grayscale dark:disabled:opacity-20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 dark:data-disabled:opacity-20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&>span]:gap-2",
{
variants: {
variant: {
diff --git a/src/components/ui/confirm-responsive-drawer.tsx b/src/components/ui/confirm-responsive-drawer.tsx
index f720c2ccf..372f6d66d 100644
--- a/src/components/ui/confirm-responsive-drawer.tsx
+++ b/src/components/ui/confirm-responsive-drawer.tsx
@@ -28,6 +28,7 @@ export const ConfirmResponsiveDrawer = (props: {
confirmText?: ReactNode;
confirmVariant?: ComponentProps['variant'];
cancelText?: ReactNode;
+ forceRenderOverlay?: boolean;
}) => {
const { t } = useTranslation(['common', 'components']);
const [isPending, setIsPending] = useState(false);
@@ -82,6 +83,7 @@ export const ConfirmResponsiveDrawer = (props: {
>
{
if (e.key === 'Enter') {
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
index eb375f96e..1fda56d8f 100644
--- a/src/components/ui/dialog.tsx
+++ b/src/components/ui/dialog.tsx
@@ -88,7 +88,7 @@ function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
return (
);
@@ -118,7 +118,7 @@ function DialogFooter({
);
diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx
index 3b0a75d28..ecb1c1d60 100644
--- a/src/components/ui/dropdown-menu.tsx
+++ b/src/components/ui/dropdown-menu.tsx
@@ -84,7 +84,7 @@ function DropdownMenuItem({
data-inset={inset}
data-variant={variant}
className={cn(
- "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-accent data-highlighted:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:data-highlighted:text-destructive dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!",
+ "group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
className
)}
{...props}
@@ -167,7 +167,7 @@ function DropdownMenuLabel({
data-slot="dropdown-menu-label"
data-inset={inset}
className={cn(
- 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',
+ 'px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8',
className
)}
{...props}
@@ -196,7 +196,7 @@ function DropdownMenuShortcut({
);
diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx
index d503a0ba7..ae327a2bc 100644
--- a/src/components/ui/tooltip.tsx
+++ b/src/components/ui/tooltip.tsx
@@ -52,7 +52,7 @@ function TooltipContent({
{
navigate({
to: '/logout',
diff --git a/src/features/devtools/login-hint.tsx b/src/features/devtools/login-hint.tsx
index 655541628..eaffc5faf 100644
--- a/src/features/devtools/login-hint.tsx
+++ b/src/features/devtools/login-hint.tsx
@@ -36,9 +36,9 @@ export const LoginEmailHint = () => {
{envClient.VITE_IS_DEMO ? 'Demo mode' : 'Dev mode'}
- You can login with{' '}
+ You can login with
- {' or '}
+ or
@@ -58,8 +58,8 @@ export const LoginEmailOtpHint = () => {
{envClient.VITE_IS_DEMO ? 'Demo mode' : 'Dev mode'}
-
- Use the code{' '}
+
+ Use the code