-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfractal.js
executable file
·144 lines (121 loc) · 3.36 KB
/
fractal.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
75
76
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
'use strict';
/*
* Create a new Fractal instance and export it for use elsewhere if required
*/
const fractal = module.exports = require('@frctl/fractal').create();
/*
* General project configuration.
*/
fractal.set('project.title', 'Sofology Component Library');
/*
* Configure components.
*/
fractal.components.set('path', `${__dirname}/components`);
fractal.components.set('default.preview', '@preview');
/*
* Configure the Handlebars template engine used by components
*
* Components use Handlebars templates by default, so this step normally not required.
* However in this example we are expicitly loading the handlebars adapter
* to demonstrate how to add custom Handlebars helpers that you can then use
* in your components.
*
* See https://github.com/frctl/handlebars for more information on the Handlebars
* adapter and bundled helpers.
*/
const handlebarsAdapter = require('@frctl/handlebars');
const hbs = handlebarsAdapter({
helpers: {
uppercase: function(str) {
return str.toUpperCase();
},
lowercase: function(str) {
return str.toLowerCase();
}
}
});
fractal.components.engine(hbs);
fractal.components.set('default.status', 'initial');
fractal.components.set('statuses', {
initial: {
label: "Initial",
description: "I'm doing it.",
color: '#db80b3'
},
inprogress: {
label: "In Progress",
description: "I'm done with this.",
color: "#f4bf75"
},
review: {
label: "In Review",
description: "Component needs to be reviewed",
color: "#61afef"
},
completed: {
label: "Completed",
description: "Completed and ready for production",
color: "#6eb401"
}
});
/*
* Configure docs.
*/
fractal.docs.set('path', `${__dirname}/docs`);
fractal.docs.set('default.status', 'initial');
fractal.docs.set('markdown.breaks', true);
fractal.docs.set('statuses', {
initial: {
label: "Initial",
description: "I'm doing it.",
color: '#db80b3'
},
inprogress: {
label: "In Progress",
description: "I'm done with this.",
color: "#f4bf75"
},
review: {
label: "In Review",
description: "Component needs to be reviewed",
color: "#61afef"
},
completed: {
label: "Completed",
description: "Completed and ready for production",
color: "#6eb401"
}
});
/*
* Configure the web interface.
*/
fractal.web.set('static.path', `${__dirname}/build`);
fractal.web.set('builder.dest', 'build');
/*
* Customise the web interface theme.
*
* This step is not needed if you want to just use the default theme
* out-of-the-box. This example demonstrates some simple theme customisation
* but you can also create your own bespoke themes or undertake much more extensive
* customisation if required.
*/
const theme = require('@frctl/mandelbrot')({
nav: ['components', 'docs'],
skin: 'maroon',
panels: ["html", "view", "context", "resources", "info", "notes"]
});
// fractal.components.set('resources', {
// scss: {
// label: 'SCSS',
// match: ['**/*.scss']
// },
// css: {
// label: 'CSS',
// match: ['**/*.css']
// },
// other: {
// label: 'Other Assets',
// match: ['**/*', '!**/*.scss', '!**.css']
// }
// });
fractal.web.theme(theme);