/** * Copyright IBM Corp. 2026 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ import React, { type HTMLAttributes, type ReactNode } from 'react'; import { type MotionSurfaceInput } from '@carbon/motion'; type SafeDivProps = Omit, 'onAnimationStart' | 'onDrag' | 'onDragEnd' | 'onDragStart'>; export interface MotionSurfaceProps extends SafeDivProps { /** * A named surface from `@carbon/motion`, or an inline definition of the same * shape for a custom surface */ surface: MotionSurfaceInput; surfaceId?: string; open?: boolean; onExitComplete?: () => void; children?: ReactNode; } /** * Animates its children according to a named @carbon/motion surface * * Reveal surfaces enter/exit between surface keyframes. Shared-element * surfaces morph from the `MotionSurfaceOrigin` with the same `surfaceId`. * When a shared-element surface also defines enter/exit keyframes, those * are applied as `animate`/`exit` on top of the layout morph. * * When users prefer reduced motion, render as plain element and * mount/unmount immediately - no Motion runs at all */ export declare const MotionSurface: React.ForwardRefExoticComponent>; export interface MotionSurfaceOriginProps extends SafeDivProps { surface: MotionSurfaceInput; surfaceId: string; children?: ReactNode; } export declare const MotionSurfaceOrigin: React.ForwardRefExoticComponent>; export {};