Build a generalized data table component in React.
Requirements:
- Display tabular data with columns and rows.
- Support client-side pagination (e.g., 5 or 10 rows per page).
- Allow sorting by clicking on column headers (toggle ascending/descending).
- Add a simple search box for filtering rows.
- Make the component reusable by passing in data and columns as props.
- Focus on functionality over styling.