import React from 'react'
import { EmptyPlaceholderProps } from './types'
import { AnyRecord, IJSX, StyledComponentProps } from '@codeleap/styles'
import { MobileStyleRegistry } from '../../Registry'
import { useStylesFor } from '../../hooks'
import { EmptyPlaceholderContext } from './context'
import { EmptyPlaceholderInfo } from './components/Info'
import { EmptyPlaceholderButton } from './components/Button'
import { EmptyPlaceholderIllustration } from './components/Illustration'
import { EmptyPlaceholderContent } from './components/Content'
export * from './styles'
export * from './types'
/**
* Compound component — all props are forwarded to context so sub-components
* (Info, Button, Illustration) can be placed anywhere inside children without prop drilling.
* The `order` prop only controls the default slot rendering; when `children` is provided it
* bypasses the order map entirely and renders children directly inside the wrapper.
*/
export const EmptyPlaceholder = (props: EmptyPlaceholderProps) => {
const {
children,
style,
...contextValue
} = {
...EmptyPlaceholder.defaultProps,
...props,
}
const styles = useStylesFor(EmptyPlaceholder.styleRegistryName, style)
return (
{children}
)
}
EmptyPlaceholder.styleRegistryName = 'EmptyPlaceholder'
EmptyPlaceholder.elements = ['wrapper', 'loader', 'title', 'description', 'image', 'icon']
EmptyPlaceholder.rootElement = 'wrapper'
EmptyPlaceholder.Info = EmptyPlaceholderInfo
EmptyPlaceholder.Button = EmptyPlaceholderButton
EmptyPlaceholder.Illustration = EmptyPlaceholderIllustration
EmptyPlaceholder.withVariantTypes = (styles: S) => {
return EmptyPlaceholder as ((props: StyledComponentProps) => IJSX) & Pick
}
EmptyPlaceholder.defaultProps = {
order: ['illustration', 'info', 'button']
} as Partial
MobileStyleRegistry.registerComponent(EmptyPlaceholder)