123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import {Fragment, useState} from 'react';
- import AlertLink from 'sentry/components/alertLink';
- import JSXNode from 'sentry/components/stories/jsxNode';
- import JSXProperty from 'sentry/components/stories/jsxProperty';
- import {IconSentry} from 'sentry/icons';
- import storyBook from 'sentry/stories/storyBook';
- export default storyBook(AlertLink, story => {
- story('Default', () => {
- return (
- <Fragment>
- <p>
- The <JSXNode name="AlertLink" /> component is a highlighted banner that links to
- some other page (or component). Depending on the{' '}
- <JSXProperty name="priority" value /> prop specified, it can be used as a
- success alert, an error or warning alert, and for various other use cases.
- </p>
- <p>
- The default <JSXNode name="AlertLink" /> looks like this:
- </p>
- <AlertLink href="https://sentry.io/welcome">
- Clicking this link will not open in a new tab!
- </AlertLink>
- <p>
- The default props are <JSXProperty name="size" value="normal" />,{' '}
- <JSXProperty name="priority" value="warning" />,{' '}
- <JSXProperty name="withoutMarginBottom" value="false" />, and{' '}
- <JSXProperty name="openInNewTab" value="false" />.
- </p>
- <p>
- This alert below has <JSXProperty name="openInNewTab" value="true" />:
- </p>
- <AlertLink href="https://sentry.io/welcome" openInNewTab>
- Clicking this link WILL open in a new tab!
- </AlertLink>
- </Fragment>
- );
- });
- story('priority', () => {
- return (
- <Fragment>
- <p>
- The <JSXProperty name="priority" value /> prop specifies the alert category, and
- changes the color of the alert.
- </p>
- <AlertLink priority="error">
- This is an error alert. Something went wrong.
- </AlertLink>
- <AlertLink priority="info">Info alert. Put some exciting info here.</AlertLink>
- <AlertLink priority="muted">Muted alerts look like this.</AlertLink>
- <AlertLink priority="success">Success alert. Yay!</AlertLink>
- <AlertLink priority="warning">
- Warning alert. Something is about to go wrong, probably.
- </AlertLink>
- </Fragment>
- );
- });
- story('icon', () => {
- return (
- <Fragment>
- <p>
- The <JSXProperty name="icon" value /> prop can be specified if you want to add
- an icon to the alert. Just directly pass in the icon, like{' '}
- <JSXNode name="IconSentry" /> for example, to the prop.
- </p>
- <AlertLink priority="warning" icon={<IconSentry />}>
- Read the docs.
- </AlertLink>
- </Fragment>
- );
- });
- story('withoutMarginBottom', () => {
- return (
- <Fragment>
- <p>
- The <JSXProperty name="withoutMarginBottom" value /> prop is a boolean that's{' '}
- <code>false</code> by default.
- </p>
- <AlertLink withoutMarginBottom>This one has no bottom margin.</AlertLink>
- <AlertLink>This one has bottom margin by default.</AlertLink>
- <AlertLink withoutMarginBottom>This one has no margin bottom.</AlertLink>
- </Fragment>
- );
- });
- story('size', () => {
- return (
- <Fragment>
- <p>
- The <JSXProperty name="size" value /> prop can be either <code>"small"</code> or{' '}
- <code>"normal"</code>.{' '}
- </p>
- <AlertLink priority="info" size="normal">
- Normal
- </AlertLink>
- <AlertLink priority="info" size="small">
- Small
- </AlertLink>
- </Fragment>
- );
- });
- story('to vs href vs onClick', () => {
- const [count, setCount] = useState(0);
- return (
- <Fragment>
- <p>
- There are three ways to specify what should happen when the{' '}
- <JSXNode name="AlertLink" /> is clicked.{' '}
- </p>
- <p>
- The <JSXProperty name="to" value /> prop should be used for internal links.
- Note: links specified with this prop will never open in a new tab, even if you
- set
- <JSXProperty name="openInNewTab" value="true" /> .
- </p>
- <AlertLink
- priority="info"
- size="normal"
- to="/stories/?name=app/components/badge.stories.tsx"
- >
- View the badge story page
- </AlertLink>
- <p>
- The <JSXProperty name="href" value /> prop should be used for external links.
- </p>
- <AlertLink
- priority="info"
- size="normal"
- href="https://sentry.io/for/session-replay/"
- openInNewTab
- >
- Learn more about Session Replay
- </AlertLink>
- <p>
- Lastly, you can get creative with the <JSXProperty name="onClick" value /> prop.
- </p>
- <AlertLink priority="info" size="normal" onClick={() => setCount(count + 1)}>
- You clicked this {count} times.
- </AlertLink>
- </Fragment>
- );
- });
- });
|