Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/theopenlane/openlane-ui/llms.txt

Use this file to discover all available pages before exploring further.

Prerequisites

Before installing the component library, ensure you have:
  • Node.js: Version 18 or higher
  • React: Version 19.2.4 or compatible
  • Package Manager: npm, yarn, or pnpm

Installation

The @repo/ui package is an internal monorepo package. If you’re working within the Openlane monorepo, it’s already available as a workspace dependency.

Within the Monorepo

If you’re creating a new app or package within the monorepo:
1

Add the dependency

Add @repo/ui to your package.json:
package.json
{
  "dependencies": {
    "@repo/ui": "workspace:*",
    "react": "19.2.4",
    "react-dom": "19.2.4"
  }
}
2

Install dependencies

Run the package manager install command from the monorepo root:
npm install
3

Import the styles

Import the global styles in your app’s entry point:
app/layout.tsx
import '@repo/ui/styles.css'

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  )
}

Configuration

Tailwind CSS Setup

The component library uses Tailwind CSS v4. Configure your application to work with the UI package:
1

Install Tailwind CSS v4

npm install tailwindcss@^4.1.13 @tailwindcss/postcss@^4.1.13
2

Configure PostCSS

Create or update postcss.config.mjs:
postcss.config.mjs
export default {
  plugins: {
    '@tailwindcss/postcss': {},
  },
}
3

Import UI package PostCSS config (Optional)

If you need the exact PostCSS configuration:
postcss.config.mjs
import uiPostcssConfig from '@repo/ui/postcss.config'

export default uiPostcssConfig

TypeScript Configuration

Ensure your tsconfig.json is properly configured:
tsconfig.json
{
  "compilerOptions": {
    "jsx": "react-jsx",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "lib": ["ES2022", "DOM", "DOM.Iterable"],
    "types": ["node"],
    "paths": {
      "@repo/ui/*": ["../../packages/ui/src/*"]
    }
  }
}

Peer Dependencies

The component library requires React as a peer dependency. Most additional dependencies are bundled, but you may need to install:
npm install react@19.2.4 react-dom@19.2.4

Importing Components

The library uses individual exports for tree-shaking optimization:
import { Button } from '@repo/ui/button'
import { Input } from '@repo/ui/input'
import { Alert } from '@repo/ui/alert'

Utility Imports

import { cn } from '@repo/ui/lib/utils'
import { useToast } from '@repo/ui/use-toast'

Style Imports

import '@repo/ui/styles.css'

Available Exports

Here are all available component exports:
// Form Components
import { Input } from '@repo/ui/input'
import { Textarea } from '@repo/ui/textarea'
import { Select } from '@repo/ui/select'
import { Checkbox } from '@repo/ui/checkbox'
import { RadioGroup } from '@repo/ui/radio-group'
import { Switch } from '@repo/ui/switch'
import { Form } from '@repo/ui/form'
import { PasswordInput } from '@repo/ui/password-input'
import { TagInput } from '@repo/ui/tag-input'
import { InputOTP } from '@repo/ui/input-otp'
import { MultipleSelector } from '@repo/ui/multiple-selector'
import { CountryDropdown } from '@repo/ui/country-dropdown'

// Action Components
import { Button } from '@repo/ui/button'
import { AlertDialog } from '@repo/ui/alert-dialog'
import { ConfirmationDialog } from '@repo/ui/confirmation-dialog'
import { Dialog } from '@repo/ui/dialog'
import { Sheet } from '@repo/ui/sheet'
import { DropdownMenu } from '@repo/ui/dropdown-menu'
import { Command } from '@repo/ui/command'

// Data Display
import { Table } from '@repo/ui/table'
import { DataTable } from '@repo/ui/data-table'
import { Badge } from '@repo/ui/badge'
import { Avatar } from '@repo/ui/avatar'
import { Panel } from '@repo/ui/panel'
import { Tag } from '@repo/ui/tag'
import { Pagination } from '@repo/ui/pagination'
import { ProgressCircle } from '@repo/ui/progress-circle'

// Navigation
import { Breadcrumb } from '@repo/ui/breadcrumb'
import { Tabs } from '@repo/ui/tabs'
import { Separator } from '@repo/ui/separator'
import { PageHeading } from '@repo/ui/page-heading'

// Feedback
import { Alert } from '@repo/ui/alert'
import { Toast, Toaster } from '@repo/ui/toast'
import { Tooltip } from '@repo/ui/tooltip'
import { SystemTooltip } from '@repo/ui/system-tooltip'
import { Info } from '@repo/ui/info'
import { MessageBox } from '@repo/ui/message-box'

// Data Entry
import { Calendar } from '@repo/ui/calendar'
import { CalendarPopover } from '@repo/ui/calendar-popover'
import { Slider } from '@repo/ui/slider'

// Layout
import { Grid } from '@repo/ui/grid'
import { Popover } from '@repo/ui/popover'

// Charts
import { LineChart } from '@repo/ui/line-chart'
import { DonutChart } from '@repo/ui/donut-chart'

Verifying Installation

Create a simple test component to verify everything is working:
app/test.tsx
import { Button } from '@repo/ui/button'
import { Input } from '@repo/ui/input'
import { Alert, AlertTitle, AlertDescription } from '@repo/ui/alert'

export default function TestPage() {
  return (
    <div className="p-8 space-y-4">
      <Alert>
        <AlertTitle>Installation Successful!</AlertTitle>
        <AlertDescription>
          The @repo/ui component library is working correctly.
        </AlertDescription>
      </Alert>
      
      <div className="space-y-2">
        <Input placeholder="Enter text..." />
        <Button variant="primary">Click me</Button>
      </div>
    </div>
  )
}

Troubleshooting

Ensure you’ve installed all dependencies and the workspace link is correct:
# From monorepo root
pnpm install

# Clear cache if needed
rm -rf node_modules
pnpm install
Make sure you’ve imported the styles CSS:
import '@repo/ui/styles.css'
Check that PostCSS is configured correctly with Tailwind v4.
Verify your tsconfig.json includes proper path mappings and the React types:
{
  "compilerOptions": {
    "types": ["node", "react", "react-dom"]
  }
}
Ensure the dark class is applied to a parent element:
<html className={isDark ? 'dark' : ''}>
  <body>{children}</body>
</html>

Next Steps

Usage Guide

Learn how to use components in your application

Theming

Customize the component library theme

Component Overview

Explore all available components

Storybook

Browse interactive component examples