Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(docs): update tooltip page to use new layout #628

Merged
merged 1 commit into from
Oct 12, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 104 additions & 81 deletions packages/docs/pages/tooltip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,98 +2,121 @@ import { Box, Button, Flex, Grid, H1, Panel, Text, Tooltip } from '@bigcommerce/
import { WarningIcon } from '@bigcommerce/big-design-icons';
import React from 'react';

import { Code, CodePreview, PageNavigation } from '../components';
import { Code, CodePreview, ContentRoutingTabs, List } from '../components';
import { TooltipPropTable } from '../PropTables';

const TooltipPage = () => {
const items = [
{
id: 'examples',
title: 'Examples',
render: () => (
<>
<Panel>
<Text>
Tooltips contain information to help users understand actions or page elements. They are short, and
triggered by a user hovering with their keyboard or mouse over a UI element.
</Text>
<CodePreview>
{/* jsx-to-string:start */}
<Tooltip trigger={<Button>Hover</Button>} placement="right">
Tooltip Content
</Tooltip>
{/* jsx-to-string:end */}
</CodePreview>
</Panel>
<Panel header="Anchor">
<Text>
Tooltips can wrap any <Code>Element</Code>. Tooltip will show on hover.
</Text>
return (
<>
<H1>Tooltip</H1>

<CodePreview>
{/* jsx-to-string:start */}
<Flex alignItems="center">
<Box marginRight="medium">
<Tooltip trigger={<Button>Button</Button>} placement="right">
Tooltip Content
</Tooltip>
</Box>
<Panel header="Overview" headerId="overview">
<Text>
<Code primary>Tooltip</Code>s contain information to help users understand actions or page elements.
</Text>
<Text bold>When to use:</Text>
<List>
<List.Item>
They are short, and triggered by a user hovering with their keyboard or mouse over a UI element.
</List.Item>
<List.Item>They are used to help reduce information density on otherwise crowded pages or forms.</List.Item>
<List.Item>
Use tooltips to explain columns in a table, explain buttons (e.g. add, edit) on page or alongisde a help
icon.
</List.Item>
</List>
</Panel>

<Box marginRight="medium">
<Tooltip trigger={<WarningIcon />} placement="right">
<Panel header="Implementation" headerId="implementation">
<ContentRoutingTabs
id="implementation"
routes={[
{
id: 'basic',
title: 'Basic',
render: () => (
<CodePreview>
{/* jsx-to-string:start */}
<Tooltip trigger={<Button>Hover</Button>} placement="right">
Tooltip Content
</Tooltip>
</Box>
<Box marginRight="medium">
<Tooltip trigger={<span>Span</span>} placement="right">
Tooltip Content
</Tooltip>
</Box>
</Flex>
{/* jsx-to-string:end */}
</CodePreview>
</Panel>
<Panel header="Placement">
<Text>
Tooltip can be anchored in different directions with the <Code primary>placement</Code> property. It will
automatically find a position if there's not enough space in the chosen direction.
</Text>
{/* jsx-to-string:end */}
</CodePreview>
),
},
{
id: 'anchor',
title: 'Anchor',
render: () => (
<>
<Text>
Tooltips can wrap any <Code>Element</Code>. Tooltip will show on hover.
</Text>

<CodePreview>
{/* jsx-to-string:start */}
<Grid gridColumns="repeat(4, min-content)">
<Tooltip trigger={<Button>Right</Button>} placement="right">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Top</Button>} placement="top">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Left</Button>} placement="left">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Bottom</Button>} placement="bottom">
Tooltip Content
</Tooltip>
</Grid>
<CodePreview>
{/* jsx-to-string:start */}
<Flex alignItems="center">
<Box marginRight="medium">
<Tooltip trigger={<Button>Button</Button>} placement="right">
Tooltip Content
</Tooltip>
</Box>

{/* jsx-to-string:end */}
</CodePreview>
</Panel>
</>
),
},
{
id: 'props',
title: 'Props',
render: () => <TooltipPropTable />,
},
];
<Box marginRight="medium">
<Tooltip trigger={<WarningIcon />} placement="right">
Tooltip Content
</Tooltip>
</Box>
<Box marginRight="medium">
<Tooltip trigger={<span>Span</span>} placement="right">
Tooltip Content
</Tooltip>
</Box>
</Flex>
{/* jsx-to-string:end */}
</CodePreview>
</>
),
},
{
id: 'placement',
title: 'Placement',
render: () => (
<>
<Text>
Tooltip can be anchored in different directions with the <Code primary>placement</Code> property. It
will automatically find a position if there's not enough space in the chosen direction.
</Text>

return (
<>
<H1>Tooltip</H1>
<CodePreview>
{/* jsx-to-string:start */}
<Grid gridColumns="repeat(4, min-content)">
<Tooltip trigger={<Button>Right</Button>} placement="right">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Top</Button>} placement="top">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Left</Button>} placement="left">
Tooltip Content
</Tooltip>
<Tooltip trigger={<Button>Bottom</Button>} placement="bottom">
Tooltip Content
</Tooltip>
</Grid>

{/* jsx-to-string:end */}
</CodePreview>
</>
),
},
]}
/>
</Panel>

<PageNavigation items={items} />
<Panel header="Props" headerId="props">
<TooltipPropTable renderPanel={false} />
</Panel>
</>
);
};
Expand Down