# Introduction > Gaudi is a curated React design system for blogs and applications, with shared foundations, rich components and reusable interface patterns. Gaudi brings reusable React components, design foundations and practical interface patterns into one coherent system. It began with a blog and grew to support application interfaces: forms, data views, navigation, dialogs, dashboards and complete workflows, alongside rich editorial and MDX experiences. The package is `@gaudi/design-system`; the source lives at [ahmadassaf/design-system](https://github.com/ahmadassaf/design-system). ## How this site is built Every component, block, chart, chat and hook page is **generated from the design system's own metadata** (its `ai/components.json`, the pattern coverage manifest and the owner fixtures), so the docs cannot drift from the code. Each example renders the real fixture in an isolated frame, and its **Code** tab shows the same copyable source as Storybook, rewritten to public `@gaudi/design-system/...` imports. - [Installation](https://design.gaudi.site/docs/getting-started): Add the package, the stylesheet and the Next.js config. - [Foundations](https://design.gaudi.site/docs/foundations): Colours and tokens, typography, icons, accessibility and states. - [Theming](https://design.gaudi.site/docs/theming): Eight presets, the theme contract and StyleGlide/tweakcn/shadcn import. - [AI & agents](https://design.gaudi.site/docs/ai): llms.txt, the agent skill, the MCP server and the registry. - [Components](https://design.gaudi.site/docs/components): Controls, inputs, overlays, data display, feedback and navigation. - [Blocks](https://design.gaudi.site/docs/blocks): App shells, auth, dashboards, forms, scheduling, settings and more. ## What belongs in Gaudi - **Foundations:** shared tokens, typography, colours, icons, motion and accessibility conventions. - **Components:** reusable controls and compositions, with variants and interaction states for real product use. - **Patterns and blocks:** application shells, settings, onboarding, collections and editorial page sections. - **Publishing:** post components, reading layouts and MDX primitives for blogs and other content experiences. Source: https://design.gaudi.site/docs (Markdown with example code: https://design.gaudi.site/docs.md) --- # Installation > Install @gaudi/design-system and render your first component. ## Install the package Install the package from its GitHub repository, then import it as `@gaudi/design-system`. ```sh pnpm add github:ahmadassaf/design-system ``` React, React DOM, Next.js, `next-themes` and Tailwind CSS are shared framework **peers**; Gaudi installs its own implementation libraries. Install the optional peers only for the features that need them: ```sh pnpm add recharts # Charts (@gaudi/design-system/charts) pnpm add @xyflow/react # Flow (@gaudi/design-system/core/Flow + flow.css) ``` ## Use a component ```jsx import { Avatar, Button, Dialog } from '@gaudi/design-system'; import '@gaudi/design-system/global.css'; ``` For route-level code that imports one or two components, prefer **leaf entries** so bundlers do not traverse the full barrel: ```jsx import Button from '@gaudi/design-system/core/Button'; import Dialog from '@gaudi/design-system/core/Dialog'; ``` Only the explicit entries in the package `exports` are public: owner paths such as `/core/Button`, `/chat/ChatInput` and `/hooks/state/use-controllable-state`. ## Next steps - [Set up with Next.js](https://design.gaudi.site/docs/getting-started/nextjs): transpilePackages, the stylesheet and the theme script. - [Tailwind preset](https://design.gaudi.site/docs/getting-started/tailwind): Use Gaudi's tokens in your own utilities. - [styles.css](https://design.gaudi.site/docs/getting-started/styles): global.css versus styles.css, themes.css and flow.css. - [Fonts](https://design.gaudi.site/docs/getting-started/fonts): Gaudi never downloads fonts; wire next/font or @fontsource. Source: https://design.gaudi.site/docs/getting-started (Markdown with example code: https://design.gaudi.site/docs/getting-started.md) --- # Setup with Next.js > Configure the App Router for Gaudi's React source, stylesheet and themes. Gaudi ships **React source (JSX)** for a JSX-aware bundler and Tailwind CSS v4 processing, so Next.js must transpile it. ## 1. Transpile the package ```js title="next.config.mjs" export default { transpilePackages: ['@gaudi/design-system'] }; ``` ## 2. Load the stylesheet once ```jsx title="app/layout.jsx" import '@gaudi/design-system/global.css'; ``` `global.css` loads Tailwind v4, Gaudi's tokens, foundations and component CSS, and scans the package source. If your app owns its Tailwind entry, use [styles.css](https://design.gaudi.site/docs/getting-started/styles) instead. ## 3. Add themes (optional) Render the no-flash script in `` and wrap the app in `ThemeProvider` from a client component: ```jsx title="app/layout.jsx" import { getThemeScript } from '@gaudi/design-system/themes'; import { Providers } from './providers'; export default function RootLayout({ children }) { return (