# HyperReactXML Response And Contract Guide

This file documents the response shapes used by actions, data sources, table loading, and callbacks.

## Data Source Response

Data sources can return a plain array:

```ts
const dataSources = {
  users: () => [
    { id: 1, name: 'Pradeep' },
    { id: 2, name: 'Demo User' },
  ],
};
```

Or an object with rows and total:

```ts
const dataSources = {
  users: () => ({
    rows: [{ id: 1, name: 'Pradeep' }],
    total: 1,
  }),
};
```

## Table Query Args

When a table loads data, the data source receives:

```ts
{
  values,
  filters,
  page,
  pageSize,
  sort
}
```

`sort` shape:

```ts
{
  field: 'name',
  direction: 'asc'
}
```

## Action Args

Actions receive:

```ts
{
  values,
  row,
  selectedRows,
  event,
  node,
  setValue,
  setValues,
  reload,
  toast,
  closeModal,
  openModal,
  validate
}
```

## Error Response

Use `onError` to receive normalized `Error` objects:

```tsx
<HyperReactXMLRenderer
  onError={(error) => {
    console.error(error.message);
  }}
/>
```

## Toast Response

Pass your own toast implementation:

```tsx
toast={{
  success: (message) => notify.success(message),
  error: (message) => notify.error(message),
  info: (message) => notify.info(message),
  warning: (message) => notify.warning(message),
}}
```

## Export Response

```tsx
onExport={(rows, source) => {
  console.log('Export requested', source, rows);
}}
```
