Button
Button component supporting various styles and sizes.
All Types
Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonTypesDefault(): React.JSX.Element {
return (
<>
<Button>Primary</Button>
<Button buttonType="brand">Brand</Button>
<Button buttonType="secondary">Secondary</Button>
<Button buttonType="ghost">Ghost</Button>
</>
);
} Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonTypesStatus(): React.JSX.Element {
return (
<>
<Button buttonType="success">Success</Button>
<Button buttonType="warning">Warning</Button>
<Button buttonType="critical">Critical</Button>
<Button buttonType="critical-secondary">Critical-secondary</Button>
</>
);
} Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonTypesIntelligence(): React.JSX.Element {
return (
<>
<Button buttonType="intelligence">Intelligence</Button>
<Button buttonType="intelligence-secondary">
Intelligence-secondary
</Button>
</>
);
} Size
The default size is medium.
Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonSize(): React.JSX.Element {
return (
<>
<Button size="small">Small</Button>
<Button>Medium</Button>
<Button size="large">Large</Button>
</>
);
} Icon
Icon-only buttons should include an aria-label.
Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonIcon(): React.JSX.Element {
return (
<>
<Button buttonType="secondary" iconBefore="plus">
Icon before
</Button>
<Button buttonType="secondary" iconAfter="plus">
Icon after
</Button>
<Button aria-label="Add" buttonType="secondary" icon="plus" />
</>
);
} Loading
Has an optional loading message.
Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonLoading(): React.JSX.Element {
return (
<>
<Button buttonType="secondary" isLoading={true} size="small">
Loading
</Button>
<Button buttonType="secondary" isLoading={true}>
Loading
</Button>
<Button buttonType="secondary" isLoading={true} size="large">
Loading
</Button>
</>
);
} Disabled
Show code Hide code
import { Button } from '@mylighthouse/prism-react';
export default function ButtonDisabled(): React.JSX.Element {
return (
<>
<Button buttonType="secondary" iconBefore="plus" isDisabled size="small">
Small
</Button>
<Button buttonType="secondary" iconBefore="plus" isDisabled>
Medium
</Button>
<Button buttonType="secondary" iconBefore="plus" isDisabled size="large">
Large
</Button>
</>
);
} API Reference
| Name | Default | Type | Description |
|---|---|---|---|
buttonType | -- | "primary" | "secondary" | "critical" | "critical-secondary" | "warning" | "success" | "intelligence" | "intelligence-secondary" | "brand" | "ghost" | "unstyled" | -- |
href | -- | string | -- |
icon | -- | IconName | -- |
iconAfter | -- | IconName | -- |
iconBefore | -- | IconName | -- |
isDisabled | -- | boolean | -- |
isLoading | -- | boolean | -- |
loadingMessage | -- | string | -- |
size | -- | "small" | "medium" | "large" | -- |