jbx 1.7.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/index.js +209 -336
- package/package.json +1 -1
- package/style.css +136 -0
package/CHANGELOG.md
CHANGED
package/index.js
CHANGED
|
@@ -1,205 +1,101 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import Styled from 'styled-components';
|
|
4
|
-
import capsize from 'capsize';
|
|
1
|
+
import './style.css';
|
|
5
2
|
|
|
6
|
-
import {
|
|
3
|
+
import React, { Fragment } from 'react';
|
|
7
4
|
|
|
8
5
|
const SIZE = window.innerWidth > 1280 ? 16 : window.innerWidth > 640 ? 14 : 12;
|
|
9
|
-
const BASE_SIZE = SIZE;
|
|
10
6
|
const BASE_RADIUS = SIZE / 2;
|
|
11
|
-
const SPACE = SIZE;
|
|
12
7
|
const BASE_FONT_SIZE = SIZE;
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
body {
|
|
38
|
-
touch-action: manipulation;
|
|
39
|
-
touch-action: pan-y;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
body,
|
|
43
|
-
input,
|
|
44
|
-
textarea {
|
|
45
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
body {
|
|
49
|
-
background: #fcfcfd;
|
|
50
|
-
color: #000;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
:root {
|
|
54
|
-
--accent-color: ${(props) => props.accent};
|
|
55
|
-
}
|
|
56
|
-
`;
|
|
57
|
-
|
|
58
|
-
const BaseText = Styled.div({});
|
|
59
|
-
|
|
60
|
-
function textProps(capsizeConfig) {
|
|
61
|
-
const capsizeComputed = {
|
|
62
|
-
fontMetrics,
|
|
63
|
-
lineGap: BASE_FONT_SIZE * 0.618,
|
|
64
|
-
...capsizeConfig
|
|
9
|
+
function Component(className, styleSrc, config = {}) {
|
|
10
|
+
const { element = `div`, styleProps } = config;
|
|
11
|
+
|
|
12
|
+
return function MakeComponent({ children, ...props }) {
|
|
13
|
+
const passProps = styleProps
|
|
14
|
+
? Object.keys(props)
|
|
15
|
+
.filter((e) => !styleProps.includes(e))
|
|
16
|
+
.reduce((acc, p) => {
|
|
17
|
+
acc[p] = props[p];
|
|
18
|
+
return acc;
|
|
19
|
+
}, {})
|
|
20
|
+
: props;
|
|
21
|
+
|
|
22
|
+
return React.createElement(
|
|
23
|
+
element,
|
|
24
|
+
{
|
|
25
|
+
className,
|
|
26
|
+
style: typeof styleSrc === 'function' ? styleSrc(props) : styleSrc,
|
|
27
|
+
...passProps
|
|
28
|
+
},
|
|
29
|
+
children
|
|
30
|
+
);
|
|
65
31
|
};
|
|
66
|
-
|
|
67
|
-
return capsize(capsizeComputed);
|
|
68
32
|
}
|
|
69
33
|
|
|
70
|
-
export const Container =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
export const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
export const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
borderRadius: 0,
|
|
136
|
-
'&::-webkit-slider-thumb': {
|
|
137
|
-
appearance: 'none',
|
|
138
|
-
boxShadow: 'none',
|
|
139
|
-
borderRadius: 0,
|
|
140
|
-
height: SPACE * 2,
|
|
141
|
-
width: SPACE,
|
|
142
|
-
backgroundColor: '#000',
|
|
143
|
-
border: 'none'
|
|
144
|
-
},
|
|
145
|
-
'&::-moz-range-thumb': {
|
|
146
|
-
appearance: 'none',
|
|
147
|
-
boxShadow: 'none',
|
|
148
|
-
borderRadius: 0,
|
|
149
|
-
height: SPACE * 2,
|
|
150
|
-
width: SPACE,
|
|
151
|
-
backgroundColor: '#000',
|
|
152
|
-
border: 'none'
|
|
153
|
-
},
|
|
154
|
-
'&::-webkit-slider-runnable-track': {
|
|
155
|
-
appearance: 'none'
|
|
156
|
-
},
|
|
157
|
-
':focus': {
|
|
158
|
-
outline: 'none'
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
export const HeaderH4 = Styled.h4({
|
|
163
|
-
margin: 0,
|
|
164
|
-
|
|
165
|
-
letterSpacing: -0.11,
|
|
166
|
-
fontWeight: 700,
|
|
167
|
-
...textProps({
|
|
168
|
-
capHeight: BASE_FONT_SIZE,
|
|
169
|
-
lineGap: BASE_FONT_SIZE
|
|
170
|
-
})
|
|
171
|
-
});
|
|
172
|
-
export const HeaderH3 = Styled.h3({
|
|
173
|
-
margin: 0,
|
|
174
|
-
|
|
175
|
-
letterSpacing: -0.22,
|
|
176
|
-
fontWeight: 500,
|
|
177
|
-
...textProps({
|
|
178
|
-
capHeight: BASE_FONT_SIZE * 1 * 1.25,
|
|
179
|
-
lineGap: BASE_FONT_SIZE
|
|
180
|
-
})
|
|
181
|
-
});
|
|
182
|
-
export const HeaderH2 = Styled.h2({
|
|
183
|
-
margin: 0,
|
|
184
|
-
|
|
185
|
-
letterSpacing: -0.33,
|
|
186
|
-
fontWeight: 500,
|
|
187
|
-
...textProps({
|
|
188
|
-
capHeight: BASE_FONT_SIZE * 1.5,
|
|
189
|
-
lineGap: 12
|
|
190
|
-
})
|
|
191
|
-
});
|
|
192
|
-
export const HeaderH1 = Styled.h1({
|
|
193
|
-
letterSpacing: -1,
|
|
194
|
-
margin: '2px 0',
|
|
195
|
-
fontWeight: 700,
|
|
196
|
-
...textProps({
|
|
197
|
-
capHeight: BASE_FONT_SIZE * 3 - 4,
|
|
198
|
-
lineGap: BASE_FONT_SIZE
|
|
199
|
-
})
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
export const MainHeader = function MainHeader({ children }) {
|
|
34
|
+
export const Container = Component(`jbx-container`);
|
|
35
|
+
|
|
36
|
+
export const Text = Component(`jbx-text`);
|
|
37
|
+
|
|
38
|
+
export const SmallText = Component(`jbx-small-text`);
|
|
39
|
+
|
|
40
|
+
export const Button = Component(`jbx-button`, {}, { element: 'button' });
|
|
41
|
+
|
|
42
|
+
// export const Input = Styled.input({
|
|
43
|
+
// '-webkit-text-fill-color': '#777',
|
|
44
|
+
// opacity: 1,
|
|
45
|
+
// flex: 1,
|
|
46
|
+
// display: 'block',
|
|
47
|
+
// appearance: 'none',
|
|
48
|
+
// border: 'none',
|
|
49
|
+
// borderRadius: 0,
|
|
50
|
+
// height: SPACE * 2.5,
|
|
51
|
+
// backgroundColor: '#eee',
|
|
52
|
+
// ...textProps({
|
|
53
|
+
// capHeight: (BASE_FONT_SIZE * 3) / 3
|
|
54
|
+
// }),
|
|
55
|
+
// padding: `0 ${SPACE / 2}px`,
|
|
56
|
+
// boxShadow: `inset rgba(0, 0, 0, 0.04) 3px 3px 0, inset rgba(0, 0, 0, 0.03) 0.5px 0.5px 0`,
|
|
57
|
+
// color: '#777'
|
|
58
|
+
// });
|
|
59
|
+
|
|
60
|
+
// export const Range = Styled.input({
|
|
61
|
+
// flex: 1,
|
|
62
|
+
// width: '100%',
|
|
63
|
+
// appearance: 'none',
|
|
64
|
+
// backgroundColor: 'var(--accent-color)',
|
|
65
|
+
// height: SPACE,
|
|
66
|
+
// borderRadius: 0,
|
|
67
|
+
// '&::-webkit-slider-thumb': {
|
|
68
|
+
// appearance: 'none',
|
|
69
|
+
// boxShadow: 'none',
|
|
70
|
+
// borderRadius: 0,
|
|
71
|
+
// height: SPACE * 2,
|
|
72
|
+
// width: SPACE,
|
|
73
|
+
// backgroundColor: '#000',
|
|
74
|
+
// border: 'none'
|
|
75
|
+
// },
|
|
76
|
+
// '&::-moz-range-thumb': {
|
|
77
|
+
// appearance: 'none',
|
|
78
|
+
// boxShadow: 'none',
|
|
79
|
+
// borderRadius: 0,
|
|
80
|
+
// height: SPACE * 2,
|
|
81
|
+
// width: SPACE,
|
|
82
|
+
// backgroundColor: '#000',
|
|
83
|
+
// border: 'none'
|
|
84
|
+
// },
|
|
85
|
+
// '&::-webkit-slider-runnable-track': {
|
|
86
|
+
// appearance: 'none'
|
|
87
|
+
// },
|
|
88
|
+
// ':focus': {
|
|
89
|
+
// outline: 'none'
|
|
90
|
+
// }
|
|
91
|
+
// });
|
|
92
|
+
|
|
93
|
+
export const HeaderH1 = Component(`jbx-h${1}`, null, { element: 'h1' });
|
|
94
|
+
export const HeaderH2 = Component(`jbx-h${2}`, null, { element: 'h2' });
|
|
95
|
+
export const HeaderH3 = Component(`jbx-h${3}`, null, { element: 'h3' });
|
|
96
|
+
export const HeaderH4 = Component(`jbx-h${4}`, null, { element: 'h4' });
|
|
97
|
+
|
|
98
|
+
export const MainHeader = function MainHeader({ children, style }) {
|
|
203
99
|
const content = String(children).split(' ');
|
|
204
100
|
|
|
205
101
|
return React.createElement(
|
|
@@ -216,7 +112,8 @@ export const MainHeader = function MainHeader({ children }) {
|
|
|
216
112
|
width: 'auto',
|
|
217
113
|
padding: '6px',
|
|
218
114
|
margin: 0,
|
|
219
|
-
backgroundColor: 'var(--accent-color)'
|
|
115
|
+
backgroundColor: 'var(--accent-color)',
|
|
116
|
+
...style
|
|
220
117
|
}
|
|
221
118
|
},
|
|
222
119
|
word
|
|
@@ -225,139 +122,130 @@ export const MainHeader = function MainHeader({ children }) {
|
|
|
225
122
|
);
|
|
226
123
|
};
|
|
227
124
|
|
|
228
|
-
export const A =
|
|
229
|
-
color: '#000',
|
|
230
|
-
boxShadow: 'var(--accent-color) 0 2px 0, inset var(--accent-color) 0 -2px 0',
|
|
231
|
-
fontWeight: 700,
|
|
232
|
-
textDecoration: 'none',
|
|
233
|
-
'&:hover': {
|
|
234
|
-
color: '#34495e'
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
export const Space = Styled.div({
|
|
239
|
-
display: (props) => (props.inline ? 'inline-block' : 'block'),
|
|
240
|
-
height: (props) => `${SPACE * props.h}px`,
|
|
241
|
-
width: (props) => `${SPACE * props.w}px`
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
export const Box = Styled.div({
|
|
245
|
-
flex: (props) => props.flex,
|
|
246
|
-
minWidth: (props) => props.minWidth,
|
|
247
|
-
padding: ({ padding }) => {
|
|
248
|
-
if (!padding) return `0`;
|
|
249
|
-
|
|
250
|
-
const paddingArr = [padding].flat();
|
|
251
|
-
|
|
252
|
-
return paddingArr.map((paddingValue) => `${paddingValue * SPACE}px`).join(` `);
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
'@media (max-width: 768px)': {
|
|
256
|
-
display: ({ hideOnSmall }) => (hideOnSmall ? 'none' : undefined)
|
|
257
|
-
},
|
|
258
|
-
|
|
259
|
-
'@media (max-width: 1080px)': {
|
|
260
|
-
display: ({ hideOnMedium }) => (hideOnMedium ? 'none' : undefined)
|
|
261
|
-
}
|
|
262
|
-
});
|
|
125
|
+
export const A = Component(`jbx-a`, null, { element: 'a' });
|
|
263
126
|
|
|
264
|
-
export const
|
|
265
|
-
display: '
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
marginTop: ({ v }) => `${v * SPACE}px`,
|
|
270
|
-
marginBottom: ({ v }) => `${v * SPACE}px`
|
|
271
|
-
});
|
|
127
|
+
export const Space = Component(`jbx-space`, (props) => ({
|
|
128
|
+
display: props.inline ? 'inline-block' : 'block',
|
|
129
|
+
height: `${SIZE * props.h}px`,
|
|
130
|
+
width: `${SIZE * props.w}px`
|
|
131
|
+
}));
|
|
272
132
|
|
|
273
|
-
export const
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
alignContent: 'center',
|
|
285
|
-
justifyContent: 'center',
|
|
286
|
-
padding: 0,
|
|
287
|
-
'&:hover': {
|
|
288
|
-
boxShadow: `rgba(0, 0, 0, 0.1) 0 1px 1px, rgba(0, 0, 0, 0.1) 0 3px 12px`
|
|
289
|
-
}
|
|
133
|
+
export const Box = Component(`jbx-box`, ({ hideOnSmall, flex, minWidth }) => {
|
|
134
|
+
return {
|
|
135
|
+
flex,
|
|
136
|
+
minWidth,
|
|
137
|
+
padding: padding
|
|
138
|
+
? [padding]
|
|
139
|
+
.flat()
|
|
140
|
+
.map((paddingValue) => `${paddingValue * SIZE}px`)
|
|
141
|
+
.join(` `)
|
|
142
|
+
: null
|
|
143
|
+
};
|
|
290
144
|
});
|
|
291
145
|
|
|
292
|
-
export const
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
146
|
+
export const Inline = Component(`jbx-inline`, ({ v, h, gap }) => ({
|
|
147
|
+
marginLeft: `${h * SIZE}px`,
|
|
148
|
+
marginRight: `${h * SIZE}px`,
|
|
149
|
+
marginTop: `${v * SIZE}px`,
|
|
150
|
+
marginBottom: `${v * SIZE}px`,
|
|
151
|
+
gap: `${gap * SIZE}px`
|
|
152
|
+
}));
|
|
153
|
+
|
|
154
|
+
export const Stack = Component(`jbx-stack`, ({ v, h, gap }) => ({
|
|
155
|
+
marginLeft: `${h * SIZE}px`,
|
|
156
|
+
marginRight: `${h * SIZE}px`,
|
|
157
|
+
marginTop: `${v * SIZE}px`,
|
|
158
|
+
marginBottom: `${v * SIZE}px`,
|
|
159
|
+
gap: `${gap * SIZE}px`
|
|
160
|
+
}));
|
|
161
|
+
|
|
162
|
+
// export const LinkButton = Styled.a({
|
|
163
|
+
// capHeight: BASE_FONT_SIZE,
|
|
164
|
+
// color: '#3498db',
|
|
165
|
+
// cursor: 'pointer',
|
|
166
|
+
// borderRadius: 5,
|
|
167
|
+
// borderTop: '1px solid #3498db10',
|
|
168
|
+
// borderBottom: '1px solid #0000',
|
|
169
|
+
// backgroundColor: '#3498db20',
|
|
170
|
+
// height: BASE_FONT_SIZE * 2,
|
|
171
|
+
// display: 'flex',
|
|
172
|
+
// alignItems: 'center',
|
|
173
|
+
// alignContent: 'center',
|
|
174
|
+
// justifyContent: 'center',
|
|
175
|
+
// padding: 0,
|
|
176
|
+
// '&:hover': {
|
|
177
|
+
// boxShadow: `rgba(0, 0, 0, 0.1) 0 1px 1px, rgba(0, 0, 0, 0.1) 0 3px 12px`
|
|
178
|
+
// }
|
|
179
|
+
// });
|
|
180
|
+
|
|
181
|
+
// export const Dropzone = Styled.div({
|
|
182
|
+
// height: '120px',
|
|
183
|
+
// flex: 1,
|
|
184
|
+
// 'max-width': '320px',
|
|
185
|
+
// display: 'flex',
|
|
186
|
+
// 'text-align': 'center',
|
|
187
|
+
// 'align-items': 'center',
|
|
188
|
+
// 'align-content': 'center',
|
|
189
|
+
// 'justify-content': 'center',
|
|
190
|
+
// 'flex-direction': 'column',
|
|
191
|
+
// border: '2px dashed #000',
|
|
192
|
+
// color: '#000',
|
|
193
|
+
// padding: '0',
|
|
194
|
+
// cursor: 'pointer',
|
|
195
|
+
// '& span': {
|
|
196
|
+
// width: '100%',
|
|
197
|
+
// cursor: 'pointer'
|
|
198
|
+
// },
|
|
199
|
+
// '&:hover': {
|
|
200
|
+
// 'border-color': '#999'
|
|
201
|
+
// },
|
|
202
|
+
// '& input': {
|
|
203
|
+
// position: 'absolute',
|
|
204
|
+
// top: '0',
|
|
205
|
+
// left: '0',
|
|
206
|
+
// height: '100%',
|
|
207
|
+
// width: '100%',
|
|
208
|
+
// opacity: '0',
|
|
209
|
+
// cursor: 'pointer'
|
|
210
|
+
// }
|
|
211
|
+
// });
|
|
212
|
+
|
|
213
|
+
export const Ul = Component(
|
|
214
|
+
`jbx-ul`,
|
|
215
|
+
{
|
|
216
|
+
margin: 0,
|
|
217
|
+
padding: `0 0 0 ${BASE_FONT_SIZE / 4}px`
|
|
309
218
|
},
|
|
310
|
-
'
|
|
311
|
-
|
|
219
|
+
{ element: 'ul' }
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
export const Li = Component(
|
|
223
|
+
`jbx-li`,
|
|
224
|
+
{
|
|
225
|
+
margin: `0 0 0 ${SIZE}px`,
|
|
226
|
+
padding: `${SIZE / 4}px 0`
|
|
312
227
|
},
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
})
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
margin: `0 0 0 ${SIZE}px`,
|
|
331
|
-
padding: `${SIZE / 4}px 0`
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
export const Tabs = Styled.div({});
|
|
335
|
-
|
|
336
|
-
export const Tab = Styled.div({
|
|
337
|
-
userSelect: 'none',
|
|
338
|
-
padding: SIZE / 2,
|
|
339
|
-
cursor: 'pointer',
|
|
340
|
-
backgroundColor: (props) => (props.active ? '#000' : props.info ? '#fff' : '#ecf0f1'),
|
|
341
|
-
color: (props) => (props.active ? '#fff' : '#000'),
|
|
342
|
-
paddingLeft: (props) => (props.info ? 0 : undefined)
|
|
343
|
-
});
|
|
228
|
+
{ element: 'li' }
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
export const Tabs = Component(`jbx-tabs`);
|
|
232
|
+
|
|
233
|
+
export const Tab = Component(
|
|
234
|
+
`jbx-tabs--tab`,
|
|
235
|
+
({ info, active }) => ({
|
|
236
|
+
userSelect: 'none',
|
|
237
|
+
cursor: 'pointer',
|
|
238
|
+
backgroundColor: active ? '#000' : info ? '#fff' : '#ecf0f1',
|
|
239
|
+
color: active ? '#fff' : '#000',
|
|
240
|
+
padding: SIZE / 2,
|
|
241
|
+
paddingLeft: info ? 0 : SIZE / 2
|
|
242
|
+
}),
|
|
243
|
+
{ styleProps: ['info', 'active'] }
|
|
244
|
+
);
|
|
344
245
|
|
|
345
|
-
export const CodeSnippet =
|
|
346
|
-
borderRadius: BASE_RADIUS,
|
|
347
|
-
'font-family': 'monaco, monospace',
|
|
348
|
-
border: 'none',
|
|
349
|
-
width: '100%',
|
|
350
|
-
'font-size': SIZE - 2,
|
|
351
|
-
'line-height': '1.5',
|
|
352
|
-
padding: SIZE,
|
|
353
|
-
background: '#ecf0f1',
|
|
354
|
-
color: '#34495e',
|
|
355
|
-
':focus': {
|
|
356
|
-
outline: 'none'
|
|
357
|
-
}
|
|
358
|
-
});
|
|
246
|
+
export const CodeSnippet = Component(`jbx-code-snippet`, null, { element: 'pre' });
|
|
359
247
|
|
|
360
|
-
export const CheckboxHidden =
|
|
248
|
+
export const CheckboxHidden = Component(`jbx-checkbox-hidden`, ({ checked }) => {
|
|
361
249
|
return {
|
|
362
250
|
height: BASE_SIZE * 2 - 4,
|
|
363
251
|
width: BASE_SIZE * 2 - 4,
|
|
@@ -397,8 +285,8 @@ export const Checkbox = function Checkbox({ label, checked, onChange }) {
|
|
|
397
285
|
'svg',
|
|
398
286
|
{
|
|
399
287
|
xmlns: 'http://www.w3.org/2000/svg',
|
|
400
|
-
width:
|
|
401
|
-
height:
|
|
288
|
+
width: BASE_SIZE * 2 - 8,
|
|
289
|
+
height: BASE_SIZE * 2 - 8,
|
|
402
290
|
fill: 'none',
|
|
403
291
|
stroke: 'currentColor',
|
|
404
292
|
strokeLinecap: 'round',
|
|
@@ -418,18 +306,3 @@ export const Checkbox = function Checkbox({ label, checked, onChange }) {
|
|
|
418
306
|
]
|
|
419
307
|
);
|
|
420
308
|
};
|
|
421
|
-
|
|
422
|
-
export const Code = Styled.textarea({
|
|
423
|
-
'font-family': 'monaco, monospace',
|
|
424
|
-
border: 'none',
|
|
425
|
-
width: '100%',
|
|
426
|
-
height: '256px',
|
|
427
|
-
'font-size': '12px',
|
|
428
|
-
'line-height': '1.309',
|
|
429
|
-
padding: '16px 18px',
|
|
430
|
-
background: '#ecf0f1',
|
|
431
|
-
color: '#34495e',
|
|
432
|
-
':focus': {
|
|
433
|
-
outline: 'none'
|
|
434
|
-
}
|
|
435
|
-
});
|
package/package.json
CHANGED
package/style.css
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
html {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
}
|
|
4
|
+
*,
|
|
5
|
+
*:before,
|
|
6
|
+
*:after {
|
|
7
|
+
box-sizing: inherit;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:root {
|
|
11
|
+
--size: 16px;
|
|
12
|
+
--base-font-size: 24px;
|
|
13
|
+
--base-radius: #95a5a6;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
* {
|
|
17
|
+
padding: 0;
|
|
18
|
+
margin: 0;
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
body {
|
|
23
|
+
touch-action: pan-y;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
body,
|
|
27
|
+
input,
|
|
28
|
+
textarea {
|
|
29
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
body {
|
|
33
|
+
background: #fcfcfd;
|
|
34
|
+
color: #000;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* base text */
|
|
38
|
+
body,
|
|
39
|
+
.jbx-button {
|
|
40
|
+
font-size: var(--base-font-size);
|
|
41
|
+
line-height: 1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.jbx-code-snippet {
|
|
45
|
+
border-radius: var(--size);
|
|
46
|
+
font-family: monaco, monospace;
|
|
47
|
+
border: none;
|
|
48
|
+
width: 100%;
|
|
49
|
+
font-size: calc(var(--size) - 2px);
|
|
50
|
+
line-height: 1.5;
|
|
51
|
+
padding: var(--size);
|
|
52
|
+
background: #ecf0f1;
|
|
53
|
+
color: #34495e;
|
|
54
|
+
}
|
|
55
|
+
.jbx-code-snippet:focus {
|
|
56
|
+
outline: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.jbx-button {
|
|
60
|
+
appearance: none;
|
|
61
|
+
user-select: none;
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
display: inline-block;
|
|
64
|
+
background-color: #eee;
|
|
65
|
+
box-shadow: 3px 3px 0 #ccc;
|
|
66
|
+
padding: 0 calc(var(--size) / 2);
|
|
67
|
+
border: none;
|
|
68
|
+
height: calc(var(--size) * 2.5);
|
|
69
|
+
}
|
|
70
|
+
.jbx-button:active {
|
|
71
|
+
top: 1;
|
|
72
|
+
left: 1;
|
|
73
|
+
box-shadow: 2px 2px 0 #ccc;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.jbx-a {
|
|
77
|
+
color: #000;
|
|
78
|
+
box-shadow: var(--accent-color) 0 2px 0, inset var(--accent-color) 0 -2px 0;
|
|
79
|
+
font-weight: 700;
|
|
80
|
+
text-decoration: none;
|
|
81
|
+
}
|
|
82
|
+
.jbx-a:hover {
|
|
83
|
+
color: '#34495e';
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.jbx-h1,
|
|
87
|
+
.jbx-h2,
|
|
88
|
+
.jbx-h3,
|
|
89
|
+
.jbx-h4 {
|
|
90
|
+
line-height: 1;
|
|
91
|
+
padding: 0;
|
|
92
|
+
margin: 0;
|
|
93
|
+
font-weight: 400;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.jbx-h4 {
|
|
97
|
+
font-size: calc(var(--base-font-size));
|
|
98
|
+
letter-spacing: -0.11px;
|
|
99
|
+
}
|
|
100
|
+
.jbx-h3 {
|
|
101
|
+
font-size: calc(var(--base-font-size) * 1.25);
|
|
102
|
+
letter-spacing: -0.22px;
|
|
103
|
+
}
|
|
104
|
+
.jbx-h2 {
|
|
105
|
+
font-size: calc(var(--base-font-size) * 1.5);
|
|
106
|
+
letter-spacing: -0.33px;
|
|
107
|
+
}
|
|
108
|
+
.jbx-h1 {
|
|
109
|
+
font-size: calc(var(--base-font-size) * 2.5);
|
|
110
|
+
letter-spacing: -1px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.jbx-small-text {
|
|
114
|
+
font-size: calc(var(--base-font-size) * 0.8);
|
|
115
|
+
line-height: calc(var(--base-font-size) * 0.6);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.jbx-container {
|
|
119
|
+
max-width: 1080px;
|
|
120
|
+
margin: 0 auto;
|
|
121
|
+
padding: calc(var(--size) * 2.5) calc(var(--size) * 1.5) calc(var(--size) * 4);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.jbx-inline {
|
|
125
|
+
flex: 1;
|
|
126
|
+
display: flex;
|
|
127
|
+
flex-wrap: wrap;
|
|
128
|
+
flex-direction: row;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.jbx-stack {
|
|
132
|
+
flex: 1;
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-wrap: wrap;
|
|
135
|
+
flex-direction: column;
|
|
136
|
+
}
|