Back to Superset

Button Component

docs/components/ui-components/button.mdx

2021.41.04.3 KB
Original Source
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

title: Button Component sidebar_position: 1

import { StoryExample, StoryWithControls } from '../../src/components/StorybookWrapper'; import { Button } from '../../../superset-frontend/packages/superset-ui-core/src/components/Button';

Button Component

The Button component is a fundamental UI element used throughout Superset for user interactions.

Basic Usage

The default button with primary styling: <StoryExample component={() => ( <Button buttonStyle="primary" onClick={() => console.log('Clicked!')}> Click Me </Button> )} />

Interactive Example

<StoryWithControls component={({ buttonStyle, buttonSize, label, disabled }) => ( <Button buttonStyle={buttonStyle} buttonSize={buttonSize} disabled={disabled} onClick={() => console.log('Clicked!')} > {label} </Button> )} props={{ buttonStyle: 'primary', buttonSize: 'default', label: 'Click Me', disabled: false }} controls={[ { name: 'buttonStyle', label: 'Button Style', type: 'select', options: ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'default', 'link', 'dashed'] }, { name: 'buttonSize', label: 'Button Size', type: 'select', options: ['default', 'small', 'xsmall'] }, { name: 'label', label: 'Button Text', type: 'text' }, { name: 'disabled', label: 'Disabled', type: 'boolean' } ]} />

Props

PropTypeDefaultDescription
buttonStyle'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'default' | 'link' | 'dashed''default'Button style
buttonSize'default' | 'small' | 'xsmall''default'Button size
disabledbooleanfalseWhether the button is disabled
ctabooleanfalseWhether the button is a call-to-action button
tooltipReactNode-Tooltip content
placementTooltipProps['placement']-Tooltip placement
onClickfunction-Callback when button is clicked
hrefstring-Turns button into an anchor link
targetstring-Target attribute for anchor links

Usage

jsx
import Button from 'src/components/Button';

function MyComponent() {
  return (
    <Button
      buttonStyle="primary"
      onClick={() => console.log('Button clicked')}
    >
      Click Me
    </Button>
  );
}

Button Styles

Superset provides a variety of button styles for different purposes:

  • Primary: Used for primary actions
  • Secondary: Used for secondary actions
  • Tertiary: Used for less important actions
  • Success: Used for successful or confirming actions
  • Warning: Used for actions that require caution
  • Danger: Used for destructive actions
  • Link: Used for navigation
  • Dashed: Used for adding new items or features

Button Sizes

Buttons come in three sizes:

  • Default: Standard size for most use cases
  • Small: Compact size for tight spaces
  • XSmall: Extra small size for very limited spaces

Best Practices

  • Use primary buttons for the main action in a form or page
  • Use secondary buttons for alternative actions
  • Use danger buttons for destructive actions
  • Limit the number of primary buttons on a page to avoid confusion
  • Use consistent button styles throughout your application
  • Add tooltips to buttons when their purpose might not be immediately clear