-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
74 lines (70 loc) · 1.96 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import container from './src/plugins/container.js';
import flex from './src/plugins/flex.js';
import grid from './src/plugins/grid.js';
import item from './src/plugins/item.js';
export default (options = {}) => {
const config = {
screens: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
'2xl': '1536px',
},
gap: {
0: '0',
4: '4px',
8: '8px',
16: '16px',
24: '24px',
32: '32px',
64: '64px',
},
plugins: {
container: {
selector: 'container',
center: true,
fixWidthToScreen: true,
maxWidth: '1440px',
defaults: {
gap: {
default: '16px',
// md: '24px',
// xl: '32px',
},
},
},
flex: { selector: 'flex' },
grid: {
selector: 'grid',
defaults: {
gap: {
default: '16px',
// md: '24px',
// xl: '32px',
},
},
},
item: { selector: 'item' },
},
...options,
};
return {
postcssPlugin: 'postcss-layouts',
AtRule(atRule, postcss) {
if (atRule.name === 'layouts') {
const rules = [
...container(config, postcss),
...flex(config, postcss),
...grid(config, postcss),
...item(config, postcss),
];
rules.forEach((rule) => {
atRule.parent.insertBefore(atRule, rule);
});
atRule.remove();
}
},
};
};
export const postcss = true;