Get StartedComponentsStylingThemingMath & Science
MCP

Vite

npm create vite@latest my-app -- --template react-ts
cd my-app
npm i @indoku/ui @emotion/react

Wrap the app once in src/main.tsx:

import { Provider } from "@indoku/ui"
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import App from "./App"

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <Provider>
      <App />
    </Provider>
  </StrictMode>,
)

Then use any component:

import { Button, Toggle } from "@indoku/ui"

export default function App() {
  return (
    <>
      <Button>Save</Button>
      <Toggle aria-label="Bold">B</Toggle>
    </>
  )
}

Routing

Use react-router (v7+, the react-router-dom package is no longer needed) with asChild:

import { Button } from "@indoku/ui"
import { Link } from "react-router"

<Button asChild><Link to="/settings">Settings</Link></Button>

Linked / monorepo installs

If React is installed twice (linked packages, monorepos), dedupe it in vite.config.ts:

export default defineConfig({
  resolve: { dedupe: ["react", "react-dom", "@emotion/react"] },
})

Created by @indokudev