Warning
This is an internal project, and is not intended for public use. No support or stability guarantees are provided.
Instructions on how to add a new component to the documentation site.
Note
This guide assumes you have already completed the initial Setup for your documentation site, including Demos and Type Docs.
Create the component's page at docs/app/components/button/page.mdx:
# Button
This is a button.See abstractCreateTypes for the full API reference.
Create the component's types component at docs/app/components/button/types.ts
import { Button } from '@base-ui/react/button';
import { createTypes } from 'docs/src/utils/createTypes';
export const TypesButton = createTypes(import.meta.url, Button);Then, import the TypesButton component to the page.
# Button
This is a button.
## API Reference
import { TypesButton } from './types';
<TypesButton />Start the dev server using pnpm docs:dev and load the new component's page: http://localhost:3000/component/button.
The types.md is automatically generated.
If you don't want to view the component in the browser before committing, just run pnpm docs:build and the file will be created.
If the component has multiple parts, use createMultipleTypes():
import { Checkbox } from '@base-ui/react/checkbox';
import { createMultipleTypes } from 'docs/src/utils/createTypes';
const { types, AdditionalTypes } = createMultipleTypes(import.meta.url, Checkbox);
export const TypesCheckbox = types;
export const TypesCheckboxAdditional = AdditionalTypes;and add multiple sections to the page:
# Checkbox
This is a checkbox.
## API reference
import { TypesCheckbox } from './types';
### Root
<TypesCheckbox.Root />
### Indicator
<TypesCheckbox.Indicator />See abstractCreateDemo for the full API reference.
Create an example of how to use the component within a demo directory: docs/app/components/button/demos/basic/ButtonBasic.tsx
import * as React from 'react';
import { Button } from '@base-ui/react/button';
export default function ButtonBasic() {
return (
<div>
<Button>Basic Button</Button>
</div>
);
}Then, create the demo at docs/app/components/button/demos/basic/index.ts:
import { createDemo } from '@/utils/createDemo';
import ButtonBasic from './ButtonBasic';
export const DemoButtonBasic = createDemo(import.meta.url, ButtonBasic);If a demo has multiple variants, use createDemoWithVariants:
import { createDemoWithVariants } from '@/utils/createDemo';
import Tailwind from './ButtonTailwind';
import CssModules from './ButtonCssModules';
export const DemoButtonComplex = createDemoWithVariants(import.meta.url, { Tailwind, CssModules });Or store each variant within a subdirectory:
import { createDemoWithVariants } from '@/utils/createDemo';
import ButtonTailwind from './tailwind/ButtonTailwind';
import ButtonCssModules from './css-modules/ButtonCssModules';
export const DemoButtonComplex = createDemoWithVariants(import.meta.url, { Tailwind, CssModules });