MCPcopy Index your code
hub / github.com/openai/apps-sdk-ui

github.com/openai/apps-sdk-ui @v0.2.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.2 ↗ · + Follow
1,329 symbols 2,627 edges 928 files 1 documented · 0% 4 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Apps SDK UI

Apps SDK UI is a lightweight, accessible design system for building high-quality ChatGPT apps with the Apps SDK. It provides Tailwind-integrated design tokens, a curated React component library, and utilities optimized for consistent experiences inside ChatGPT.

Features

  • Design tokens for colors, typography, spacing, sizing, shadows, surfaces, and more.
  • Tailwind 4 integration pre-configured with Apps SDK UI's design tokens.
  • Accessible components, built on Radix primitives with consistent styling.
  • Utilities for dark mode, responsive layouts, and ChatGPT-optimized behaviors.
  • Minimal boilerplate — import styles, wrap with a provider, start building.

Prerequisites

Apps SDK UI requires React 18 or 19 and Tailwind 4.

  • React: https://react.dev/learn/installation
  • Tailwind 4: https://tailwindcss.com/docs/installation

Installation

1. Install the package

npm install @openai/apps-sdk-ui

2. Setup styles

Add the foundation styles and Tailwind layers to the top of your global stylesheet (e.g. main.css):

@import "tailwindcss";
@import "@openai/apps-sdk-ui/css";
/* Required for Tailwind to find class references in Apps SDK UI components. */
@source "../node_modules/@openai/apps-sdk-ui";

/* The rest of your application CSS */

Then import your stylesheet before rendering any components:

// Must be imported first to ensure Tailwind layers and style foundations are defined before any potential component styles
import "./main.css"

import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import { App } from "./App"

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

3. Configure router (optional)

<AppsSDKUIProvider> helps define your default router link component, used in components like <TextLink> and <ButtonLink>.

This provider is optional - router links can also be passed directly to components via the as prop.

// Must be imported first to ensure Tailwind layers and style foundations are defined before component styles
import "./main.css"

import { AppsSDKUIProvider } from "@openai/apps-sdk-ui/components/AppsSDKUIProvider"
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
import { Link } from "react-router"
import { App } from "./App"

declare global {
  interface AppsSDKUIConfig {
    LinkComponent: typeof Link
  }
}

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <AppsSDKUIProvider linkComponent={Link}>
      <App />
    </AppsSDKUIProvider>
  </StrictMode>,
)

Start building

Your project is now ready to use Apps SDK UI!

Here's an example of a simple reservation card, using Tailwind classes and components.

import { Badge } from "@openai/apps-sdk-ui/components/Badge"
import { Button } from "@openai/apps-sdk-ui/components/Button"
import { Calendar, Invoice, Maps, Members, Phone } from "@openai/apps-sdk-ui/components/Icon"

export function ReservationCard() {
  return (











Reservation


          <h2 className="mt-1 heading-lg">La Luna Bistro</h2>



        <Badge color="success">Confirmed</Badge>






        <dl className="mt-4 grid grid-cols-[auto_1fr] gap-x-3 gap-y-2 text-sm">
          <dt className="flex items-center gap-1.5 font-medium text-secondary">
            <Calendar className="size-4" />
            Date
          </dt>
          <dd className="text-right">Apr 12 · 7:30 PM</dd>
          <dt className="flex items-center gap-1.5 font-medium text-secondary">
            <Members className="size-4" />
            Guests
          </dt>
          <dd className="text-right">Party of 2</dd>
          <dt className="flex items-center gap-1.5 font-medium text-secondary">
            <Invoice className="size-4" />
            Reference
          </dt>
          <dd className="text-right uppercase">4F9Q2K</dd>
        </dl>






        <Button variant="soft" color="secondary" block>
          <Phone />
          Call
        </Button>
        <Button color="primary" block>
          <Maps />
          Directions
        </Button>






  )
}

License

MIT © OpenAI

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 1,320
Interface 9

Languages

TypeScript100%

Modules by API surface

src/components/Select/Select.tsx44 symbols
src/components/CodeBlock/CodeBlock.stories.tsx27 symbols
src/components/Menu/Menu.tsx16 symbols
src/lib/helpers.ts15 symbols
src/components/TagInput/TagInput.tsx13 symbols
src/components/SelectControl/SelectControl.stories.tsx13 symbols
src/components/Popover/Popover.tsx12 symbols
src/components/Input/Input.stories.tsx12 symbols
src/components/Indicator/Indicator.stories.tsx12 symbols
src/components/Button/Button.stories.tsx11 symbols
src/components/Avatar/Avatar.stories.tsx11 symbols
src/components/Alert/Alert.stories.tsx11 symbols

Datastores touched

dbDatabase · 1 repos

For agents

$ claude mcp add apps-sdk-ui \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page