UNPKG

2.14 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.TapIconButton = exports.Button = void 0;
7
8var _preact = require("preact");
9
10var _getStyledComponent = _interopRequireDefault(require("./utils/get-styled-component"));
11
12var _icon = require("./icon");
13
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16/** @jsx h */
17const preventDefault = e => {
18 e.preventDefault();
19};
20
21const Button = (0, _getStyledComponent.default)({
22 tagName: 'button',
23 baseClasses: 'br2 ba',
24 options: {
25 size: ['tiny', 'large'],
26 pressed: ['pressed'],
27 variant: ['primary', 'stop', 'disabled']
28 },
29 defaultProps: {
30 onContextMenu: preventDefault
31 },
32 fn: ({
33 tiny,
34 large,
35 disabled,
36 pressed,
37 primary,
38 stop
39 }) => {
40 let classes = ['bn']; // handle sizes
41
42 if (tiny) {
43 classes.push('pa1');
44 } else if (large) {
45 classes.push('pa3 fw6');
46 } else {
47 classes.push('pa2');
48 } // if disabled stop here
49
50
51 if (disabled) {
52 classes.push('mid-gray bg-light-gray not-allowed');
53 return classes.join(' ');
54 } // pointer class
55
56
57 classes.push('pointer');
58
59 if (pressed) {
60 classes.push('shadow-3');
61 } else {
62 classes.push('shadow-2');
63 }
64
65 if (stop) {
66 classes.push('white bg-red');
67 }
68
69 if (primary) {
70 classes.push('dark-blue bg-light-blue');
71 }
72
73 if (!stop && !primary) {
74 classes.push('dark-blue');
75
76 if (pressed) {
77 classes.push('bg-lightest-blue');
78 } else {
79 classes.push('bg-white');
80 }
81 }
82
83 return classes.join(' ');
84 }
85});
86exports.Button = Button;
87const TapIconButton = (0, _getStyledComponent.default)({
88 baseClasses: 'button-reset pointer pa0 ma0 bn bg-transparent flex items-center justify-center',
89 style: {
90 width: '40px',
91 height: '40px'
92 },
93 options: {
94 icon: ['icon'],
95 color: ['color']
96 },
97 renderChildren: ({
98 icon,
99 color
100 }) => [(0, _preact.h)(_icon.Icon, {
101 key: icon,
102 icon: icon,
103 color: color,
104 size: "28"
105 })]
106});
107exports.TapIconButton = TapIconButton;
\No newline at end of file