UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: glass-сайдбар, popup рабочей области и полировка layout

This commit is contained in:
DCCONSTRUCTIONS
2026-04-19 17:23:12 +03:00
parent 4ba06307ed
commit b46390ccdd
27 changed files with 589 additions and 133 deletions
@@ -27,6 +27,7 @@ const Button = React.forwardRef(function Button(props: ButtonProps, ref: React.F
return (
<button
data-slot="button"
ref={ref}
type={type}
className={cn(buttonVariants({ variant, size }), className)}
@@ -41,8 +41,9 @@ export interface DialogTitleProps extends React.ComponentProps<typeof BaseDialog
}
// Constants
const OVERLAY_CLASSNAME = cn("fixed inset-0 z-90 bg-backdrop");
const BASE_CLASSNAME = "relative text-left bg-surface-1 rounded-lg shadow-md w-full z-100 border border-subtle";
const OVERLAY_CLASSNAME = cn("fixed inset-0 z-90 bg-backdrop/70 backdrop-blur-sm");
const BASE_CLASSNAME =
"nodedc-glass-modal relative w-full rounded-[28px] border border-subtle/70 bg-surface-1/78 text-left shadow-[0_16px_48px_rgba(0,0,0,0.34)] backdrop-blur-2xl z-100";
// Utility functions
const getPositionClassNames = (position: DialogPosition) =>
@@ -27,6 +27,7 @@ const IconButton = React.forwardRef(function IconButton(
return (
<button
data-slot="icon-button"
ref={ref}
type={type}
className={cn(iconButtonVariants({ variant, size }), className)}
@@ -84,7 +84,7 @@ export function ModalPortal({
const positionClass = fullScreen ? "" : PORTAL_POSITION_CLASSES[position];
return cn(
"shadow-lg absolute top-0 h-full bg-white transition-transform duration-300 ease-out",
"nodedc-glass-modal absolute top-0 h-full rounded-[28px] border border-subtle/70 bg-surface-1/78 shadow-[0_16px_48px_rgba(0,0,0,0.34)] backdrop-blur-2xl transition-transform duration-300 ease-out",
widthClass,
positionClass,
contentClassName
@@ -101,7 +101,7 @@ export function ModalPortal({
>
{showOverlay && (
<div
className={cn("absolute inset-0 bg-black/50 transition-colors duration-300", overlayClassName)}
className={cn("absolute inset-0 bg-black/50 backdrop-blur-sm transition-colors duration-300", overlayClassName)}
onClick={handleOverlayClick}
aria-hidden="true"
/>