wix-style-react
Version:
294 lines (280 loc) • 8.69 kB
JavaScript
export const _structure = `
<StorybookComponents.Stack flexDirection="column">
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button value="option1">Option 1</SegmentedToggle.Button>
<SegmentedToggle.Button value="option2">Option 2</SegmentedToggle.Button>
</SegmentedToggle>
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button value="option1">Option 1</SegmentedToggle.Button>
<SegmentedToggle.Button value="option2">Option 2</SegmentedToggle.Button>
<SegmentedToggle.Button value="option3">Option 3</SegmentedToggle.Button>
</SegmentedToggle>
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button value="option1">Option 1</SegmentedToggle.Button>
<SegmentedToggle.Button value="option2">Option 2</SegmentedToggle.Button>
<SegmentedToggle.Button value="option3">Option 3</SegmentedToggle.Button>
<SegmentedToggle.Button value="option4">Option 4</SegmentedToggle.Button>
</SegmentedToggle>
</StorybookComponents.Stack>;
`;
export const _children = `
<StorybookComponents.Stack>
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button value="option1">Option 1</SegmentedToggle.Button>
<SegmentedToggle.Button value="option2">Option 2</SegmentedToggle.Button>
</SegmentedToggle>
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Icon value="option1" tooltipText="Option 1">
<Icons.LockLocked />
</SegmentedToggle.Icon>
<SegmentedToggle.Icon value="option2" tooltipText="Option 2">
<Icons.LockUnlocked />
</SegmentedToggle.Icon>
</SegmentedToggle>
</StorybookComponents.Stack>;
`;
export const _prefixIcon = `
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button prefixIcon={<Icons.LockLocked />} value="option1">
Option 1
</SegmentedToggle.Button>
<SegmentedToggle.Button prefixIcon={<Icons.LockUnlocked />} value="option2">
Option 2
</SegmentedToggle.Button>
</SegmentedToggle>;
`;
export const _disabled = `
<SegmentedToggle defaultSelected="option1" disabled>
<SegmentedToggle.Button value="option1">Option</SegmentedToggle.Button>
<SegmentedToggle.Button value="option2">Option</SegmentedToggle.Button>
</SegmentedToggle>;
`;
export const _controlledMode = `
() => {
const [selectedValue, setSelectedValue] = React.useState('option1');
const onClick = (_, value) => setSelectedValue(value);
return (
<FormField label="Alignment">
<Box>
<SegmentedToggle selected={selectedValue} onClick={onClick}>
<SegmentedToggle.Icon value="option1" tooltipText="Left align">
<Icons.TextAlignLeft />
</SegmentedToggle.Icon>
<SegmentedToggle.Icon value="option2" tooltipText="Center align">
<Icons.TextAlignCenter />
</SegmentedToggle.Icon>
<SegmentedToggle.Icon value="option3" tooltipText="Right align">
<Icons.TextAlignRight />
</SegmentedToggle.Icon>
<SegmentedToggle.Icon value="option4" tooltipText="Justify">
<Icons.TextJustify />
</SegmentedToggle.Icon>
</SegmentedToggle>
</Box>
</FormField>
);
};
`;
export const _switchBetweenViews = `
() => {
const VIEW_TYPE = {
listView: 'listView',
tileView: 'tileView',
};
const [viewType, setViewType] = React.useState(VIEW_TYPE.listView);
const changeViewType = (_, value) => setViewType(value);
const ActionsCell = (
<TableActionCell
primaryAction={{
text: 'Edit',
skin: 'standard',
onClick: () => {},
}}
secondaryActions={[
{
text: 'Move',
icon: <Icons.MoveTo />,
onClick: () => {},
},
{
text: 'Mark as sold out',
icon: <Icons.FoodOutOfStock />,
onClick: () => {},
},
{
text: 'Hide',
icon: <Icons.Hidden />,
onClick: () => {},
},
{
text: 'Archive',
icon: <Icons.Archive />,
onClick: () => {},
},
]}
numOfVisibleSecondaryActions={0}
/>
);
const ListView = () => [
<TableListItem
key="1"
draggable
showDivider
options={[
{
value: (
<Image src="FoodExample1.jpg" width="90px" height="52px" />
),
width: '90px',
},
{ value: 'Breakfast Toast' },
{ value: '$8.00' },
{
value: ActionsCell,
},
]}
/>,
<TableListItem
key="2"
draggable
showDivider
options={[
{
value: (
<Image src="FoodExample2.jpg" width="90px" height="52px" />
),
width: '90px',
},
{ value: 'Lemon Ricotta Pasta' },
{ value: '$27.00' },
{
value: ActionsCell,
},
]}
/>,
<TableListItem
key="3"
draggable
options={[
{
value: (
<Image src="FoodExample3.jpg" width="90px" height="52px" />
),
width: '90px',
},
{ value: 'Spanish Paella' },
{ value: '$18.00' },
{
value: ActionsCell,
},
]}
/>,
];
const Tile = ({ media, title }) => (
<Proportion aspectRatio={1}>
<MediaOverlay skin="gradient" media={media}>
<MediaOverlay.Content placement="top-end" visible="hover">
<IconButton priority="secondary" skin="inverted" size="tiny">
<Icons.Edit />
</IconButton>
</MediaOverlay.Content>
<MediaOverlay.Content placement="bottom-start" visible="always">
<Text size="small" weight="normal" light>
{title}
</Text>
</MediaOverlay.Content>
</MediaOverlay>
</Proportion>
);
const TileView = () => (
<Card.Content>
<Layout cols={4}>
<Tile media="FoodExample1.jpg" title="Breakfast toast" />
<Tile media="FoodExample2.jpg" title="Lemon Ricotta Pasta" />
<Tile media="FoodExample3.jpg" title="Spanish Paella" />
</Layout>
</Card.Content>
);
return (
<Card>
<Card.Header
title="Dishes"
suffix={
<Box gap="18px" verticalAlign="middle">
<SegmentedToggle selected={viewType} onClick={changeViewType}>
<SegmentedToggle.Icon
value={VIEW_TYPE.tileView}
tooltipText="Tile view"
>
<Icons.LayoutGallery />
</SegmentedToggle.Icon>
<SegmentedToggle.Icon
value={VIEW_TYPE.listView}
tooltipText="List view"
>
<Icons.LayoutList />
</SegmentedToggle.Icon>
</SegmentedToggle>
<Button size="small" prefixIcon={<Icons.Add />}>
Add Dish
</Button>
</Box>
}
/>
<Card.Divider />
{viewType === VIEW_TYPE.listView ? <ListView /> : <TileView />}
</Card>
);
};
`;
export const _statusControl = `
() => {
const [registrationOrigin, setRegistrationOrigin] = React.useState(1);
return (
<Card>
<Card.Header title="Guest Registration" />
<Card.Divider />
<Card.Content>
<Layout cols={1}>
<Box direction="vertical" gap="12px">
<Text secondary>Where do guests register?</Text>
<RadioGroup
value={registrationOrigin}
onChange={setRegistrationOrigin}
>
<RadioGroup.Radio value={1}>
On my Wix Events registration page
</RadioGroup.Radio>
<RadioGroup.Radio value={2}>
On a different page or web address
</RadioGroup.Radio>
<RadioGroup.Radio value={3}>
Guest don't need to register
</RadioGroup.Radio>
</RadioGroup>
</Box>
<Divider />
<FormField label="Registration for this event is:">
<Box>
<SegmentedToggle defaultSelected="option1">
<SegmentedToggle.Button
prefixIcon={<Icons.LockUnlocked />}
value="option1"
>
Open
</SegmentedToggle.Button>
<SegmentedToggle.Button
prefixIcon={<Icons.LockLocked />}
value="option2"
>
Closed
</SegmentedToggle.Button>
</SegmentedToggle>
</Box>
</FormField>
</Layout>
</Card.Content>
</Card>
);
};
`;