jbx 1.7.6 → 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.
Files changed (4) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/index.js +203 -345
  3. package/package.json +1 -1
  4. package/style.css +136 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 2.0.0
2
+
3
+ - Drop `styled-components` and `capsize`.
4
+
1
5
  # v1.7.0
2
6
 
3
7
  - Add `touch-action: pan-y;`.
package/index.js CHANGED
@@ -1,202 +1,99 @@
1
- import React, { Fragment } from 'react';
2
-
3
- import Styled from 'styled-components';
4
- import capsize from 'capsize';
1
+ import './style.css';
5
2
 
6
- import { createGlobalStyle } from 'styled-components';
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
- const fontMetrics = {
15
- capHeight: 1364,
16
- ascent: 1950,
17
- descent: -494,
18
- unitsPerEm: 2048
19
- };
20
-
21
- export const JBX = createGlobalStyle`
22
- html {
23
- box-sizing: border-box;
24
- }
25
- *,
26
- *:before,
27
- *:after {
28
- box-sizing: inherit;
29
- }
30
-
31
- * {
32
- padding: 0;
33
- margin: 0;
34
- position: relative;
35
- }
36
-
37
- body {
38
- touch-action: pan-y;
39
- }
40
-
41
- body,
42
- input,
43
- textarea {
44
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif;
45
- }
46
-
47
- body {
48
- background: #fcfcfd;
49
- color: #000;
50
- }
51
-
52
- :root {
53
- --accent-color: ${(props) => props.accent};
54
- }
55
- `;
56
-
57
- const BaseText = Styled.div({});
58
-
59
- function textProps(capsizeConfig) {
60
- const capsizeComputed = {
61
- fontMetrics,
62
- lineGap: BASE_FONT_SIZE * 0.618,
63
- ...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
+ );
64
31
  };
65
-
66
- return capsize(capsizeComputed);
67
32
  }
68
33
 
69
- export const Container = Styled.div({
70
- maxWidth: '1080px',
71
- margin: '0 auto',
72
- padding: `${SIZE * 2.5}px ${SIZE * 1.5}px ${SIZE * 4}px`
73
- });
74
-
75
- export const Text = Styled(BaseText)({
76
- ...textProps({
77
- capHeight: BASE_FONT_SIZE
78
- })
79
- });
80
-
81
- export const SmallText = Styled(BaseText)({
82
- ...textProps({
83
- capHeight: BASE_FONT_SIZE * 0.8,
84
- lineGap: BASE_FONT_SIZE / 3
85
- })
86
- });
87
-
88
- export const ButtonContainer = Styled.button({
89
- appearance: 'none',
90
- userSelect: 'none',
91
- cursor: 'pointer',
92
- display: 'inline-block',
93
- backgroundColor: '#eee',
94
- boxShadow: '3px 3px 0 #ccc',
95
- padding: `0 ${SPACE / 2}px`,
96
- border: 'none',
97
- height: SPACE * 2.5,
98
- '&:active': {
99
- top: 1,
100
- left: 1,
101
- boxShadow: '2px 2px 0 #ccc'
102
- }
103
- });
104
-
105
- export const Button = function Button(props) {
106
- const { children, ...other } = props;
107
- return React.createElement(ButtonContainer, other, React.createElement(Text, {}, children));
108
- };
109
-
110
- export const Input = Styled.input({
111
- '-webkit-text-fill-color': '#777',
112
- opacity: 1,
113
- flex: 1,
114
- display: 'block',
115
- appearance: 'none',
116
- border: 'none',
117
- borderRadius: 0,
118
- height: SPACE * 2.5,
119
- backgroundColor: '#eee',
120
- ...textProps({
121
- capHeight: (BASE_FONT_SIZE * 3) / 3
122
- }),
123
- padding: `0 ${SPACE / 2}px`,
124
- boxShadow: `inset rgba(0, 0, 0, 0.04) 3px 3px 0, inset rgba(0, 0, 0, 0.03) 0.5px 0.5px 0`,
125
- color: '#777'
126
- });
127
-
128
- export const Range = Styled.input({
129
- flex: 1,
130
- width: '100%',
131
- appearance: 'none',
132
- backgroundColor: 'var(--accent-color)',
133
- height: SPACE,
134
- borderRadius: 0,
135
- '&::-webkit-slider-thumb': {
136
- appearance: 'none',
137
- boxShadow: 'none',
138
- borderRadius: 0,
139
- height: SPACE * 2,
140
- width: SPACE,
141
- backgroundColor: '#000',
142
- border: 'none'
143
- },
144
- '&::-moz-range-thumb': {
145
- appearance: 'none',
146
- boxShadow: 'none',
147
- borderRadius: 0,
148
- height: SPACE * 2,
149
- width: SPACE,
150
- backgroundColor: '#000',
151
- border: 'none'
152
- },
153
- '&::-webkit-slider-runnable-track': {
154
- appearance: 'none'
155
- },
156
- ':focus': {
157
- outline: 'none'
158
- }
159
- });
160
-
161
- export const HeaderH4 = Styled.h4({
162
- margin: 0,
163
-
164
- letterSpacing: -0.11,
165
- fontWeight: 700,
166
- ...textProps({
167
- capHeight: BASE_FONT_SIZE,
168
- lineGap: BASE_FONT_SIZE
169
- })
170
- });
171
- export const HeaderH3 = Styled.h3({
172
- margin: 0,
173
-
174
- letterSpacing: -0.22,
175
- fontWeight: 500,
176
- ...textProps({
177
- capHeight: BASE_FONT_SIZE * 1 * 1.25,
178
- lineGap: BASE_FONT_SIZE
179
- })
180
- });
181
- export const HeaderH2 = Styled.h2({
182
- margin: 0,
183
-
184
- letterSpacing: -0.33,
185
- fontWeight: 500,
186
- ...textProps({
187
- capHeight: BASE_FONT_SIZE * 1.5,
188
- lineGap: 12
189
- })
190
- });
191
- export const HeaderH1 = Styled.h1({
192
- letterSpacing: -1,
193
- margin: '2px 0',
194
- fontWeight: 700,
195
- ...textProps({
196
- capHeight: BASE_FONT_SIZE * 3 - 4,
197
- lineGap: BASE_FONT_SIZE
198
- })
199
- });
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' });
200
97
 
201
98
  export const MainHeader = function MainHeader({ children, style }) {
202
99
  const content = String(children).split(' ');
@@ -225,154 +122,130 @@ export const MainHeader = function MainHeader({ children, style }) {
225
122
  );
226
123
  };
227
124
 
228
- export const A = Styled.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
- });
263
-
264
- export const Inline = Styled.div({
265
- flex: 1,
266
- display: 'flex',
267
- flexWrap: 'wrap',
268
- flexDirection: `row`,
269
- marginLeft: ({ h }) => `${h * SPACE}px`,
270
- marginRight: ({ h }) => `${h * SPACE}px`,
271
- marginTop: ({ v }) => `${v * SPACE}px`,
272
- marginBottom: ({ v }) => `${v * SPACE}px`,
273
- gap: ({ gap }) => `${gap * SPACE}px`
274
- });
125
+ export const A = Component(`jbx-a`, null, { element: 'a' });
275
126
 
276
- export const Stack = Styled.div({
277
- flex: 1,
278
- display: 'flex',
279
- flexWrap: 'wrap',
280
- flexDirection: `column`,
281
- marginLeft: ({ h }) => `${h * SPACE}px`,
282
- marginRight: ({ h }) => `${h * SPACE}px`,
283
- marginTop: ({ v }) => `${v * SPACE}px`,
284
- marginBottom: ({ v }) => `${v * SPACE}px`,
285
- gap: ({ gap }) => `${gap * SPACE}px`
286
- });
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
+ }));
287
132
 
288
- export const LinkButton = Styled.a({
289
- capHeight: BASE_FONT_SIZE,
290
- color: '#3498db',
291
- cursor: 'pointer',
292
- borderRadius: 5,
293
- borderTop: '1px solid #3498db10',
294
- borderBottom: '1px solid #0000',
295
- backgroundColor: '#3498db20',
296
- height: BASE_FONT_SIZE * 2,
297
- display: 'flex',
298
- alignItems: 'center',
299
- alignContent: 'center',
300
- justifyContent: 'center',
301
- padding: 0,
302
- '&:hover': {
303
- boxShadow: `rgba(0, 0, 0, 0.1) 0 1px 1px, rgba(0, 0, 0, 0.1) 0 3px 12px`
304
- }
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
+ };
305
144
  });
306
145
 
307
- export const Dropzone = Styled.div({
308
- height: '120px',
309
- flex: 1,
310
- 'max-width': '320px',
311
- display: 'flex',
312
- 'text-align': 'center',
313
- 'align-items': 'center',
314
- 'align-content': 'center',
315
- 'justify-content': 'center',
316
- 'flex-direction': 'column',
317
- border: '2px dashed #000',
318
- color: '#000',
319
- padding: '0',
320
- cursor: 'pointer',
321
- '& span': {
322
- width: '100%',
323
- cursor: 'pointer'
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`
324
218
  },
325
- '&:hover': {
326
- 'border-color': '#999'
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`
327
227
  },
328
- '& input': {
329
- position: 'absolute',
330
- top: '0',
331
- left: '0',
332
- height: '100%',
333
- width: '100%',
334
- opacity: '0',
335
- cursor: 'pointer'
336
- }
337
- });
338
-
339
- export const Ul = Styled.ul({
340
- margin: 0,
341
- padding: `0 0 0 ${BASE_FONT_SIZE / 4}px`
342
- });
343
-
344
- export const Li = Styled.li({
345
- margin: `0 0 0 ${SIZE}px`,
346
- padding: `${SIZE / 4}px 0`
347
- });
348
-
349
- export const Tabs = Styled.div({});
350
-
351
- export const Tab = Styled.div({
352
- userSelect: 'none',
353
- padding: SIZE / 2,
354
- cursor: 'pointer',
355
- backgroundColor: (props) => (props.active ? '#000' : props.info ? '#fff' : '#ecf0f1'),
356
- color: (props) => (props.active ? '#fff' : '#000'),
357
- paddingLeft: (props) => (props.info ? 0 : undefined)
358
- });
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
+ );
359
245
 
360
- export const CodeSnippet = Styled.pre({
361
- borderRadius: BASE_RADIUS,
362
- 'font-family': 'monaco, monospace',
363
- border: 'none',
364
- width: '100%',
365
- 'font-size': SIZE - 2,
366
- 'line-height': '1.5',
367
- padding: SIZE,
368
- background: '#ecf0f1',
369
- color: '#34495e',
370
- ':focus': {
371
- outline: 'none'
372
- }
373
- });
246
+ export const CodeSnippet = Component(`jbx-code-snippet`, null, { element: 'pre' });
374
247
 
375
- export const CheckboxHidden = Styled.div(({ checked }) => {
248
+ export const CheckboxHidden = Component(`jbx-checkbox-hidden`, ({ checked }) => {
376
249
  return {
377
250
  height: BASE_SIZE * 2 - 4,
378
251
  width: BASE_SIZE * 2 - 4,
@@ -433,18 +306,3 @@ export const Checkbox = function Checkbox({ label, checked, onChange }) {
433
306
  ]
434
307
  );
435
308
  };
436
-
437
- export const Code = Styled.textarea({
438
- 'font-family': 'monaco, monospace',
439
- border: 'none',
440
- width: '100%',
441
- height: '256px',
442
- 'font-size': '12px',
443
- 'line-height': '1.309',
444
- padding: '16px 18px',
445
- background: '#ecf0f1',
446
- color: '#34495e',
447
- ':focus': {
448
- outline: 'none'
449
- }
450
- });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jbx",
3
- "version": "1.7.6",
3
+ "version": "2.0.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "hi@javier.xyz",
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
+ }