grommet
Version:
focus on the essential experience
359 lines (340 loc) • 9.44 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React from 'react';
import { storiesOf } from '@storybook/react';
import { Add } from "grommet-icons/es6/icons/Add";
import { Box, Button, Grommet, RoutedButton, Text } from 'grommet';
import { grommet } from 'grommet/themes';
import { deepMerge } from '../../utils';
var SimpleButton = function SimpleButton(props) {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Button, _extends({
label: "Submit",
onClick: function onClick() {}
}, props))));
};
var IconButton = function IconButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Box, {
round: "full",
overflow: "hidden",
background: "neutral-1"
}, React.createElement(Button, {
icon: React.createElement(Add, null),
hoverIndicator: true,
onClick: function onClick() {}
}))));
};
var IconLabelButton = function IconLabelButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large",
gap: "small"
}, React.createElement(Button, {
icon: React.createElement(Add, null),
label: "Add",
onClick: function onClick() {},
primary: true
}), React.createElement(Button, {
icon: React.createElement(Add, null),
label: "Add",
onClick: function onClick() {}
})));
};
var PlainButton = function PlainButton(props) {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Button, _extends({
hoverIndicator: "light-1",
onClick: function onClick() {}
}, props), React.createElement(Box, {
pad: "small",
direction: "row",
align: "center",
gap: "small"
}, React.createElement(Add, null), React.createElement(Text, null, "Add")))));
};
var AnchorButton = function AnchorButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Button, {
label: "Go",
href: "#"
})));
};
var RouteButton = function RouteButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(RoutedButton, {
label: "Go",
path: "/"
})));
};
var CustomTagButton = function CustomTagButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Button, {
as: "span",
label: "Go",
path: "/"
})));
};
var customTheme = {
global: {
font: {
family: 'Arial'
}
},
button: {
border: {
radius: undefined,
color: '#2196f3'
},
padding: {
vertical: '12px',
horizontal: '24px'
},
primary: {
color: '#2196f3'
},
extend: function extend(props) {
var extraStyles = '';
if (props.primary) {
extraStyles = "\n text-transform: uppercase;\n ";
}
return "\n color: white;\n font-size: 12px;\n font-weight: bold;\n\n " + extraStyles + "\n ";
}
}
};
var CustomThemeButton = function CustomThemeButton() {
return React.createElement(Grommet, {
theme: customTheme
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Button, {
label: "Submit",
onClick: function onClick() {},
primary: true
})));
};
var MultipleButton = function MultipleButton() {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large"
}, React.createElement(Box, {
direction: "row",
align: "center",
gap: "small",
pad: "xsmall"
}, React.createElement(Button, {
label: "Cancel",
onClick: function onClick() {}
}), React.createElement(Button, {
color: "dark-1",
primary: true,
icon: React.createElement(Add, {
color: "accent-1"
}),
label: "Add",
onClick: function onClick() {}
})), React.createElement(Box, {
direction: "row",
align: "center",
gap: "small",
pad: "xsmall"
}, React.createElement(Button, {
label: "Cancel",
onClick: function onClick() {}
}), React.createElement(Button, {
color: "dark-1",
primary: true,
icon: React.createElement(Add, null),
label: "Add",
onClick: function onClick() {}
})), React.createElement(Box, {
direction: "row",
align: "center",
gap: "small",
pad: "xsmall"
}, React.createElement(Button, {
label: "Cancel",
onClick: function onClick() {}
}), React.createElement(Button, {
primary: true,
icon: React.createElement(Add, null),
label: "Add",
onClick: function onClick() {}
})), React.createElement(Box, {
direction: "row",
align: "center",
gap: "small",
pad: "xsmall"
}, React.createElement(Button, {
label: "Cancel",
onClick: function onClick() {}
}), React.createElement(Button, {
color: "light-2",
primary: true,
icon: React.createElement(Add, null),
label: "Add",
onClick: function onClick() {}
}))));
};
var ColoredButton = function ColoredButton(props) {
return React.createElement(Grommet, {
theme: grommet
}, React.createElement(Box, {
align: "center",
pad: "large",
gap: "small"
}, React.createElement(Button, _extends({
primary: true,
color: "dark-1",
label: "Submit",
onClick: function onClick() {}
}, props)), React.createElement(Button, _extends({
primary: true,
color: "#111111",
label: "Submit",
onClick: function onClick() {}
}, props)), React.createElement(Button, _extends({
primary: true,
color: "#000",
label: "Submit",
onClick: function onClick() {}
}, props))));
};
var customButtonColor = deepMerge(grommet, {
global: {
colors: {
text: {
light: 'grey',
dark: 'grey'
}
}
},
button: {
color: {
light: 'white',
dark: 'white'
}
}
});
var ThemeColored = function ThemeColored() {
return React.createElement(Grommet, {
theme: customButtonColor
}, React.createElement(Box, {
align: "center",
pad: "large",
gap: "small"
}, React.createElement(Button, {
primary: true,
label: "Submit",
onClick: function onClick() {}
}), React.createElement(Button, {
primary: true,
color: "dark-1",
label: "Submit",
onClick: function onClick() {}
})));
};
var SidebarButton = function SidebarButton(_ref) {
var label = _ref.label,
onClick = _ref.onClick;
return React.createElement(Button, {
plain: true,
onClick: onClick
}, function (_ref2) {
var hover = _ref2.hover;
return React.createElement(Box, {
background: hover ? 'accent-1' : undefined,
pad: {
horizontal: 'large',
vertical: 'medium'
}
}, React.createElement(Text, {
size: "large"
}, label));
});
};
var SidebarButtons = function SidebarButtons() {
return React.createElement(Grommet, {
full: true,
theme: grommet
}, React.createElement(Box, {
fill: true,
direction: "row"
}, React.createElement(Box, {
background: "neutral-1"
}, React.createElement(SidebarButton, {
label: "Dashboard",
onClick: function onClick() {}
}), React.createElement(SidebarButton, {
label: "Devices",
onClick: function onClick() {}
}), React.createElement(SidebarButton, {
label: "Settings",
onClick: function onClick() {}
}))));
};
storiesOf('Button', module).add('Default', function () {
return React.createElement(SimpleButton, null);
}).add('Primary', function () {
return React.createElement(SimpleButton, {
primary: true
});
}).add('Icon', function () {
return React.createElement(IconButton, null);
}).add('Icon Label', function () {
return React.createElement(IconLabelButton, null);
}).add('Disabled', function () {
return React.createElement(SimpleButton, {
disabled: true
});
}).add('Plain', function () {
return React.createElement(PlainButton, null);
}).add('Anchor', function () {
return React.createElement(AnchorButton, null);
}).add('RoutedButton', function () {
return React.createElement(RouteButton, null);
}).add('Active', function () {
return React.createElement(PlainButton, {
active: true
});
}).add('Custom theme', function () {
return React.createElement(CustomThemeButton, null);
}).add('Multiple Same Line', function () {
return React.createElement(MultipleButton, null);
}).add('Colored', function () {
return React.createElement(ColoredButton, null);
}).add('Theme Colored', function () {
return React.createElement(ThemeColored, null);
}).add('Custom tag Button', function () {
return React.createElement(CustomTagButton, null);
}).add('Sidebar', function () {
return React.createElement(SidebarButtons, null);
});