Skip to main content

Usage

Basic Usage​

All Gravis exports are available as named imports via the respective package.

import { Button, Alert, Box } from '@gravis-os/ui'
import { printNumber } from '@gravis-os/utils'
tip

Refer to the MUI Docs if you are unable to find a component that you're looking for.

Key Concepts​

  1. Each component extends off the API of its corresponding Ant Design counterpart and is injected with MUI's sx prop which enables styling via emotion/jss and access to the global theme object. You may also find components extended with custom props.

Example of extending an Ant Design Divider component:

import React from 'react'
import { Divider as AntdDivider, DividerProps as AntdDividerProps } from 'antd'
import { withStyledTheme, ThemeInterface } from '../styles/withTheme'

export interface DividerProps extends AntdDividerProps, ThemeInterface {}

const StyledDivider = withStyledTheme(AntdDivider)()

const Divider: React.FC<DividerProps> = (props) => {
return <StyledDivider {...props} />
}

export default Divider
  1. Gravis has several types of exports.

  2. Gravis is governed by a set of principles.

Example 1: Extending layout​

// DashboardLayout.tsx
import { DashboardTemplate } from '@gravis-os'

const DashboardLayout = () => {
return (
<DashboardTemplate leftAsideMenuItems={...}>
...
</DashboardTemplate>
)
}

Example 2: Extending core components​

// MyCard.tsx
import { Card, Typography } from '@gravis-os'

const MyCard = (props) => (
<Card {...props}>
<Typography variant="h4">Title</Typography>
</Card>
)

Example 3: Extending types​

import { Alert, AlertProps } from '@gravis-os'

export interface MyAlertProps extends AlertProps {}

const MyAlert: React.FC<MyAlertProps> = (props) => (
<Alert {...props}>
...
</Alert>
)