# @lunit/oui > React UI component library for Lunit Scope applications. Built on MUI v9. > When building UI in an app that uses this package, do not use MUI directly — > use the OUI components and design tokens below. ## Setup Wrap your app root with the OUI theme: ```tsx import { ThemeProvider, CssBaseline } from '@mui/material'; import { theme } from '@lunit/oui'; ``` ## Import rules - Components: `import { Button, Dialog, TextField } from '@lunit/oui'` - Icons: `import { ArrowDoubleDown } from '@lunit/oui/icons'` - Tokens/theme: `import { theme, palette, spacing, typography } from '@lunit/oui'` ## Core rules (must follow) - ❌ Do not import equivalent components (Button/TextField/Dialog, etc.) directly from `@mui/material`. ✅ Use the `@lunit/oui` component for the same functionality. - ❌ Do not hardcode magic values like `#fff` or `16px` in `sx`/styles. ✅ Use tokens: color `theme.palette.lunitTeal[40]`, spacing `theme.spacing(n)` (base 4px), typography ``. - For variant/size/color, use only the union values each component allows (e.g. Button `variant: contained|ghost|outlined`). ## Common components - Button: `variant` contained|ghost|outlined, `color` primary|secondary|error, `size` small|medium|large, `label`, `icon`, `loading` - TextField, Checkbox, Radio, Toggle, Dropdown, DatePicker — input/form - Card(`size` small|large), List, Divider, DataTable, EllipsisTypography — display/layout - Alert, Dialog, Tooltip, Progress, LoadingIndicator, Chip — feedback/overlay - Menu, Pagination, Stepper, TabbedPanel — navigation ## Examples ```tsx import { Button } from '@lunit/oui'; import { Close } from '@lunit/oui/icons';