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