apps/design-system/content/docs/components/button.mdx
import { Button } from '@/components/ui/button'
<Button type="outline">Button</Button>
It is likely that the type prop will be changed to variant in the future.
You can use the buttonVariants helper to create a link that looks like a button.
import { buttonVariants } from '@/components/ui/button'
<Link className={buttonVariants({ variant: 'outline' })}>Click here</Link>
Alternatively, you can set the asChild parameter and nest the link component.
<Button asChild>
<Link href="/login">Login</Link>
</Button>
Use the size prop to determine the size of the button.
These are all the different type variations.
Used for data insertion actions, confirming purchases, strong positive actions.
<ComponentPreview name="button-demo" />Used for opening dialogs, navigating to pages, and other non CRUD actions.
This type will probably be the most used button type.
It will probably be changed to be the default type in future.
Can be used for signaling a data or config change, but not as serious as a primary button.
For destructive or side effect actions, use the destructive or warning type.
Used for actions that might have a side effect, but not as serious as a destructive action.
<ComponentPreview name="button-warning" />danger)Used for actions that will have a serious destructive side effect, like deleting data.
prop type will probably be changed to destructive in the future.
Used for secondary actions, or actions that are not as important as the primary action.
<ComponentPreview name="button-outline" />text)Used for actions that are not as important as the primary action, or for actions that are not as important as the primary action.
prop type will probably be changed to ghost in the future.
Used for actions that are not as important as the primary action, or for actions that are not as important as the primary action.
<ComponentPreview name="button-link" />Displaying only an Icon in a button.
<Admonition type="note" title="This feature requires more support" className="mt-3"> We should update the button component to support this use case better. </Admonition> <ComponentPreview name="button-icon" />Supports slot behavior with asChild prop.
Keyboard focus is automatically handled:
tabIndex={0} (keyboard accessible)tabIndex={-1} (removed from tab order)tabIndex prop when neededYou therefore don't need to manually set tabIndex, as Button handles it automatically based on its disabled state.