-
Alexander Polyankin authoredAlexander Polyankin authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Loader.stories.mdx 1.53 KiB
import { Fragment } from "react";
import { Canvas, Story, Meta } from "@storybook/addon-docs";
import { Grid, Text } from "metabase/ui";
import { Loader } from "./";
export const args = {
size: "md",
};
export const argTypes = {
size: {
options: ["xs", "sm", "md", "lg", "xl"],
control: { type: "inline-radio" },
},
};
<Meta
title="Feedback/Loader"
component={Loader}
args={args}
argTypes={argTypes}
/>
# Loader
Our themed wrapper around [Mantine Loader](https://v6.mantine.dev/core/loader/).
## Docs
- [Figma File](https://www.figma.com/file/NUXRUa9Ot3HvgC1WwIA4UH/Loader?type=design&node-id=1-96&mode=design&t=yaNljw178EFJeU7k-0)
- [Mantine Loader Docs](https://v6.mantine.dev/core/loader/)
## Caveats
- Only use the `oval` variant unless otherwise called out
- Prefer usage of loader sizes less than `xl` unless specifically called out
## Examples
export const DefaultTemplate = args => <Loader {...args} />;
export const SizeTemplate = args => (
<Grid w="10rem" columns={2} align="center">
{argTypes.size.options.map(size => (
<Fragment key={size}>
<Grid.Col span={1} align="center">
<Text weight="bold">{size}</Text>
</Grid.Col>
<Grid.Col span={1} align="center">
<Loader size={size} />
</Grid.Col>
</Fragment>
))}
</Grid>
);
export const Default = DefaultTemplate.bind({});
<Canvas>
<Story name="Default">{Default}</Story>
</Canvas>
### Sizes
export const Sizes = SizeTemplate.bind({});
<Canvas>
<Story name="Sizes">{Sizes}</Story>
</Canvas>