MDK Logo
ReferenceUIComponents

Layout Components

Page layouts, grids, containers, and spacing

Components for page structure and layout.

Prerequisites

  • Complete the installation
  • Import styles: import '@tetherto/mdk-react-devkit/styles.css'

Components

Accordion

Vertically stacked, collapsible content panels with optional toggle icon. Renders a styled wrapper around Radix Accordion: pass title for the default header or compose <[**AccordionItem**](/reference/ui/components/layout/#accordionitem)>s as childre…

agent-ready

Props

PropTypeRequiredDefaultDescription
titlestring--
isRowboolean | undefined--
isOpenedboolean | undefined--
unpaddedboolean | undefined--
noBorderboolean | undefined--
showToggleIconboolean | undefined--
solidBackgroundboolean | undefined--
customLabelReact.ReactNode--
toggleIconPositionTAccordionToggleIconPosition | undefined--
onValueChange((value: string | string[]) => void) | undefined--

AccordionContent

Accordion Content component (collapsible content area)

agent-ready

AccordionItem

Single collapsible row within an <[**Accordion**](/reference/ui/components/layout/#accordion)>. Pass a unique value so Radix can track open/closed state; wrap an <[**AccordionTrigger**](/reference/ui/components/layout/#accordiontrigger)> and an <[**AccordionContent**](/reference/ui/components/layout/#accordioncontent)> as children.

agent-ready

AccordionTrigger

Accordion Trigger component (header/button)

agent-ready

Props

PropTypeRequiredDefaultDescription
timestampstring | undefined--
showToggleIconboolean | undefined--
toggleIconPositionTAccordionToggleIconPosition | undefined--
customLabelReact.ReactNode--

CardBody

Main content region of a <Card> — applies the standard inner padding and vertical rhythm.

agent-ready

CardFooter

Bottom action/metadata row of a <Card>, typically used for buttons, timestamps, or secondary info.

agent-ready

CardHeader

Top region of a <Card> that groups the title, optional subtitle, and an action slot.

agent-ready

ChartWrapper

ChartWrapper - Wrapper component for charts with loading and empty states

agent-ready

Props

PropTypeRequiredDefaultDescription
childrenReact.ReactNode-Chart content to render
dataunknown[] | Record<string, unknown> | undefined-Chart data object (for LineChart with datasets)
datasetunknown[] | Record<string, unknown> | undefined-Chart dataset (for BarChart with direct dataset)
isLoadingboolean | undefinedfalseLoading state
customLoaderReact.ReactNode-Custom loader component to show when loading (overrides default spinner)
showNoDataPlaceholderboolean | undefinedtrueWhether to show "no data" placeholder when data is empty
customNoDataMessageReact.ReactNode-Custom message or component to show when no data
minHeightnumber | undefined-Minimum height for the container (in pixels)
loadingMinHeightnumber | undefined-Minimum height for the loading skeleton (in pixels) Falls back to minHeight if not provided
classNamestring | undefined-Custom className for the container

Divider

Thin horizontal or vertical rule used to separate logical sections of a layout.

agent-ready

Props

PropTypeRequiredDefaultDescription
orientationDividerOrientation | undefined-Line orientation
dashedboolean | undefined-Line style
dottedboolean | undefined--
childrenReact.ReactNode-Text or node rendered in the middle of the divider
align"center" | "left" | "right" | undefined-Horizontal alignment of the label
plainboolean | undefined-Plain text style — no border around label
classNamestring | undefined-Custom className

LabeledCard

Card variant that pairs a tiny label above the body — used for compact stat or metadata blocks.

agent-ready

Props

PropTypeRequiredDefaultDescription
isDarkboolean--
classNamestring--
hasNoWrapboolean--
isRelativeboolean--
isFullWidthboolean--
hasNoMarginboolean--
hasNoBorderboolean--
isFullHeightboolean--
isScrollableboolean--
labelReact.ReactNode--
childrenReact.ReactNode--
getNavigateOptions(label: string) => Partial<{ href: string; target: string; }>--

LazyTabWrapper

LazyTabWrapper - Wrapper for lazy-loaded tab components with Suspense

agent-ready

Props

PropTypeRequiredDefaultDescription
ComponentReact.ComponentType<{ data?: T | undefined; }>-Lazy-loaded component to render
dataT | undefined-Data to pass to the component
fallbackReact.ReactNode<Spinner />Custom fallback component while loading
spinnerType"circle" | "square" | undefined'circle'Spinner type when using default fallback

Mosaic

Mosaic - Grid layout component with named areas

agent-ready

Props

PropTypeRequiredDefaultDescription
templatestring[] | string[][]--
gapstring | undefined--
rowHeightstring | undefined--
columnsstring | string[] | undefined--
childrenReact.ReactNode--
classNamestring | undefined--

Tabs

Tabs component for organizing content into panels

agent-ready

Props

PropTypeRequiredDefaultDescription
variantTabsVariant | undefined--

On this page