import type { ElementType } from 'react'; import type { AriaLabelingProps } from '../../core/types/a11y-props.js'; import type { BehaviorTrackingProps } from '../../core/types/behavior-tracking-props.js'; import type { DataTestId } from '../../core/types/data-props.js'; import type { DOMProps } from '../../core/types/dom.js'; import type { MaskingProps } from '../../core/types/masking-props.js'; import type { PolymorphicComponentProps } from '../../core/types/polymorph.js'; import type { StylingProps } from '../../core/types/styling-props.js'; import type { WithChildren } from '../../core/types/with-children.js'; import type { SpacingProps } from '../../styles/getSpacingSprinkles.js'; import type { LayoutSizeCSS } from '../types/layout.types.js'; /** * Accepted properties for Surface * @public */ export interface SurfaceOwnProps extends AriaLabelingProps, SpacingProps, LayoutSizeCSS, DOMProps, WithChildren, StylingProps, DataTestId, MaskingProps, BehaviorTrackingProps { /** * Color of the border when the surface has focus or is selected. * @defaultValue 'neutral' */ color?: 'neutral' | 'primary' | 'success' | 'critical' | 'warning'; /** * Defines if the surface is selected and should indicate that state with a border. * @defaultValue false */ selected?: boolean; /** * Indicates if the surface is currently dragged and then applies the corresponding styles. * @defaultValue false */ dragged?: boolean; /** * Defines the surface's elevation to the background. * @defaultValue 'flat' */ elevation?: 'flat' | 'raised' | 'floating'; } /** * Merge own props with others inherited from the underlying element type * @public */ export type SurfaceProps = PolymorphicComponentProps;