generator-folklore 3.0.23 → 3.0.25
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/lib/generators/css/index.js +76 -0
- package/lib/generators/css/templates/styles.css +31 -0
- package/lib/generators/css/templates/theme/colors.css +19 -0
- package/lib/generators/css/templates/theme/general.css +11 -0
- package/lib/generators/css/templates/theme/medias.css +14 -0
- package/lib/generators/css/templates/theme/reset.css +168 -0
- package/lib/generators/css/templates/theme/typography.css +12 -0
- package/lib/generators/css/templates/theme.css +5 -0
- package/lib/generators/html-project/index.js +3 -2
- package/lib/generators/laravel/index.js +5 -5
- package/lib/generators/laravel-panneau/templates/resources/assets/styles/panneau.scss +0 -1
- package/lib/generators/laravel-project/index.js +1 -24
- package/lib/generators/micromag-project/index.js +4 -4
- package/lib/generators/micromag-project/templates/Home.jsx +1 -1
- package/lib/generators/micromag-project/templates/Routes.jsx +1 -1
- package/lib/generators/micromag-project/templates/styles.css +3 -0
- package/lib/generators/prettier/templates/prettierrc.json +2 -1
- package/lib/generators/react-app/templates/src/components/App.jsx +1 -9
- package/lib/generators/react-app/templates/src/components/Routes.jsx +1 -4
- package/lib/generators/react-app/templates/src/components/buttons/Button.jsx +18 -39
- package/lib/generators/react-app/templates/src/components/layouts/Main.jsx +2 -5
- package/lib/generators/react-app/templates/src/components/menus/Menu.jsx +2 -8
- package/lib/generators/react-app/templates/src/components/pages/Error.jsx +2 -7
- package/lib/generators/react-app/templates/src/components/pages/Home.jsx +1 -1
- package/lib/generators/react-app/templates/src/components/partials/PageMeta.jsx +2 -7
- package/lib/generators/react-app/templates/src/contexts/KeysContext.jsx +6 -10
- package/lib/generators/react-app/templates/styles/buttons/button.module.css +11 -0
- package/lib/generators/react-app/templates/styles/layouts/{main.module.scss → main.module.css} +0 -4
- package/lib/generators/react-app/templates/styles/menus/menu.module.css +3 -0
- package/lib/generators/react-app/templates/styles/pages/error.module.css +3 -0
- package/lib/generators/react-app/templates/styles/pages/{home.module.scss → home.module.css} +0 -4
- package/lib/generators/stylelint/index.js +1 -2
- package/lib/generators/stylelint/templates/stylelintrc +0 -1
- package/package.json +4 -4
- package/lib/generators/micromag-project/templates/styles.scss +0 -2
- package/lib/generators/react-app/templates/styles/buttons/button.module.scss +0 -8
- package/lib/generators/react-app/templates/styles/menus/menu.module.scss +0 -7
- package/lib/generators/react-app/templates/styles/pages/error.module.scss +0 -7
- /package/lib/generators/micromag-project/templates/{home.module.scss → home.module.css} +0 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
4
|
+
var _path = _interopRequireDefault(require("path"));
|
5
|
+
var _generator = _interopRequireDefault(require("../../lib/generator"));
|
6
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
7
|
+
module.exports = class CssGenerator extends _generator.default {
|
8
|
+
constructor(...args) {
|
9
|
+
super(...args);
|
10
|
+
this.argument('project-name', {
|
11
|
+
type: String,
|
12
|
+
required: false
|
13
|
+
});
|
14
|
+
this.option('path', {
|
15
|
+
type: String,
|
16
|
+
defaults: 'src/css'
|
17
|
+
});
|
18
|
+
this.stylesPath = destPath => this.destinationPath(_path.default.join(this.options.path, destPath || ''));
|
19
|
+
}
|
20
|
+
get prompting() {
|
21
|
+
return {
|
22
|
+
welcome() {
|
23
|
+
if (this.options.quiet) {
|
24
|
+
return;
|
25
|
+
}
|
26
|
+
console.log(_chalk.default.yellow('\n----------------------'));
|
27
|
+
console.log('CSS Generator');
|
28
|
+
console.log(_chalk.default.yellow('----------------------\n'));
|
29
|
+
},
|
30
|
+
prompts() {
|
31
|
+
const prompts = [];
|
32
|
+
if (!this.options['project-name']) {
|
33
|
+
prompts.push(CssGenerator.prompts.project_name);
|
34
|
+
}
|
35
|
+
if (!prompts.length) {
|
36
|
+
return null;
|
37
|
+
}
|
38
|
+
return this.prompt(prompts).then(answers => {
|
39
|
+
if (answers['project-name']) {
|
40
|
+
this.options['project-name'] = answers['project-name'];
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
};
|
45
|
+
}
|
46
|
+
get writing() {
|
47
|
+
return {
|
48
|
+
styles() {
|
49
|
+
const srcPath = this.templatePath('styles.css');
|
50
|
+
const destPath = this.stylesPath('styles.css');
|
51
|
+
this.fs.copy(srcPath, destPath);
|
52
|
+
},
|
53
|
+
theme() {
|
54
|
+
const srcPath = this.templatePath('theme.css');
|
55
|
+
const destPath = this.stylesPath('theme.css');
|
56
|
+
this.fs.copy(srcPath, destPath);
|
57
|
+
},
|
58
|
+
themes() {
|
59
|
+
const srcPath = this.templatePath('theme');
|
60
|
+
const destPath = this.stylesPath('theme');
|
61
|
+
this.fs.copy(srcPath, destPath);
|
62
|
+
},
|
63
|
+
dependencies() {
|
64
|
+
this.addDependencies({
|
65
|
+
'sanitize.css': '^13.0.0'
|
66
|
+
});
|
67
|
+
}
|
68
|
+
};
|
69
|
+
}
|
70
|
+
async install() {
|
71
|
+
if (this.options['skip-install']) {
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
await this.spawnCommand('npm', ['install']);
|
75
|
+
}
|
76
|
+
};
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/* stylelint-disable selector-class-pattern */
|
2
|
+
@import 'sanitize.css';
|
3
|
+
@import './theme.css';
|
4
|
+
|
5
|
+
body {
|
6
|
+
font-family: var(--font-text);
|
7
|
+
font-size: var(--base-font-size);
|
8
|
+
font-weight: 700;
|
9
|
+
overflow-y: scroll;
|
10
|
+
}
|
11
|
+
|
12
|
+
html,
|
13
|
+
body {
|
14
|
+
overscroll-behavior: none;
|
15
|
+
overscroll-behavior-x: none;
|
16
|
+
}
|
17
|
+
|
18
|
+
/* Hide scrollbar for IE, Edge and Firefox */
|
19
|
+
.hide-scrollbar {
|
20
|
+
-ms-overflow-style: none; /* IE and Edge */
|
21
|
+
scrollbar-width: none; /* Firefox */
|
22
|
+
|
23
|
+
&::-webkit-scrollbar {
|
24
|
+
display: none;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
.modal-open {
|
29
|
+
overflow: hidden;
|
30
|
+
padding-right: 0;
|
31
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
:root {
|
2
|
+
--color-white: #fff;
|
3
|
+
--color-black: #000;
|
4
|
+
--color-blue: #0000fb;
|
5
|
+
--color-purple: #90f;
|
6
|
+
--color-red: #f03;
|
7
|
+
--color-error: var(--color-red);
|
8
|
+
}
|
9
|
+
|
10
|
+
|
11
|
+
div[data-theme="light"] {
|
12
|
+
--color-text: var(--color-black);
|
13
|
+
--color-title: var(--color-white);
|
14
|
+
}
|
15
|
+
|
16
|
+
div[data-theme="dark"] {
|
17
|
+
--color-text: var(--color-white);
|
18
|
+
--color-text-alt: var(--color-black);
|
19
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
@custom-media --very-small-viewport (min-width: 360px);
|
3
|
+
@custom-media --small-viewport (min-width: 576px);
|
4
|
+
@custom-media --medium-viewport (min-width: 768px);
|
5
|
+
@custom-media --large-viewport (min-width: 1200px);
|
6
|
+
@custom-media --x-large-viewport (min-width: 1400px);
|
7
|
+
|
8
|
+
:root {
|
9
|
+
--very-small-viewport: 360px;
|
10
|
+
--small-viewport: 500px;
|
11
|
+
--medium-viewport: 768px;
|
12
|
+
--large-viewport: 1200px;
|
13
|
+
--x-large-viewport: 1400px;
|
14
|
+
}
|
@@ -0,0 +1,168 @@
|
|
1
|
+
html,
|
2
|
+
body {
|
3
|
+
min-height: 100%;
|
4
|
+
padding: 0;
|
5
|
+
margin: 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
a {
|
9
|
+
color: inherit;
|
10
|
+
}
|
11
|
+
|
12
|
+
/* http://meyerweb.com/eric/tools/css/reset/
|
13
|
+
v2.0 | 20110126
|
14
|
+
License: none (public domain)
|
15
|
+
*/
|
16
|
+
|
17
|
+
html,
|
18
|
+
body,
|
19
|
+
div,
|
20
|
+
span,
|
21
|
+
applet,
|
22
|
+
object,
|
23
|
+
iframe,
|
24
|
+
h1,
|
25
|
+
h2,
|
26
|
+
h3,
|
27
|
+
h4,
|
28
|
+
h5,
|
29
|
+
h6,
|
30
|
+
p,
|
31
|
+
blockquote,
|
32
|
+
pre,
|
33
|
+
a,
|
34
|
+
abbr,
|
35
|
+
acronym,
|
36
|
+
address,
|
37
|
+
big,
|
38
|
+
cite,
|
39
|
+
code,
|
40
|
+
del,
|
41
|
+
dfn,
|
42
|
+
em,
|
43
|
+
img,
|
44
|
+
ins,
|
45
|
+
kbd,
|
46
|
+
q,
|
47
|
+
s,
|
48
|
+
samp,
|
49
|
+
small,
|
50
|
+
strike,
|
51
|
+
strong,
|
52
|
+
sub,
|
53
|
+
sup,
|
54
|
+
tt,
|
55
|
+
var,
|
56
|
+
b,
|
57
|
+
u,
|
58
|
+
i,
|
59
|
+
center,
|
60
|
+
dl,
|
61
|
+
dt,
|
62
|
+
dd,
|
63
|
+
ol,
|
64
|
+
ul,
|
65
|
+
li,
|
66
|
+
fieldset,
|
67
|
+
form,
|
68
|
+
label,
|
69
|
+
legend,
|
70
|
+
table,
|
71
|
+
caption,
|
72
|
+
tbody,
|
73
|
+
tfoot,
|
74
|
+
thead,
|
75
|
+
tr,
|
76
|
+
th,
|
77
|
+
td,
|
78
|
+
article,
|
79
|
+
aside,
|
80
|
+
canvas,
|
81
|
+
details,
|
82
|
+
embed,
|
83
|
+
figure,
|
84
|
+
figcaption,
|
85
|
+
footer,
|
86
|
+
header,
|
87
|
+
hgroup,
|
88
|
+
menu,
|
89
|
+
nav,
|
90
|
+
output,
|
91
|
+
ruby,
|
92
|
+
section,
|
93
|
+
summary,
|
94
|
+
time,
|
95
|
+
mark,
|
96
|
+
audio,
|
97
|
+
video {
|
98
|
+
padding: 0;
|
99
|
+
border: 0;
|
100
|
+
margin: 0;
|
101
|
+
font: inherit;
|
102
|
+
font-size: 100%;
|
103
|
+
vertical-align: baseline;
|
104
|
+
}
|
105
|
+
|
106
|
+
/* HTML5 display-role reset for older browsers */
|
107
|
+
article,
|
108
|
+
aside,
|
109
|
+
details,
|
110
|
+
figcaption,
|
111
|
+
figure,
|
112
|
+
footer,
|
113
|
+
header,
|
114
|
+
hgroup,
|
115
|
+
menu,
|
116
|
+
nav,
|
117
|
+
section {
|
118
|
+
display: block;
|
119
|
+
}
|
120
|
+
|
121
|
+
body {
|
122
|
+
line-height: 1;
|
123
|
+
}
|
124
|
+
|
125
|
+
ol,
|
126
|
+
ul {
|
127
|
+
list-style: none;
|
128
|
+
}
|
129
|
+
|
130
|
+
blockquote,
|
131
|
+
q {
|
132
|
+
quotes: none;
|
133
|
+
}
|
134
|
+
|
135
|
+
blockquote::before,
|
136
|
+
blockquote::after,
|
137
|
+
q::before,
|
138
|
+
q::after {
|
139
|
+
content: '';
|
140
|
+
content: none;
|
141
|
+
}
|
142
|
+
|
143
|
+
table {
|
144
|
+
border-collapse: collapse;
|
145
|
+
border-spacing: 0;
|
146
|
+
}
|
147
|
+
|
148
|
+
html {
|
149
|
+
box-sizing: border-box;
|
150
|
+
}
|
151
|
+
|
152
|
+
input,
|
153
|
+
button,
|
154
|
+
a,
|
155
|
+
textarea,
|
156
|
+
select {
|
157
|
+
outline: none;
|
158
|
+
}
|
159
|
+
|
160
|
+
*,
|
161
|
+
*::before,
|
162
|
+
*::after {
|
163
|
+
box-sizing: inherit;
|
164
|
+
}
|
165
|
+
|
166
|
+
a > img {
|
167
|
+
display: block;
|
168
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
:root {
|
2
|
+
--font-title: 'Helvetica', 'Arial', sans-serif;
|
3
|
+
--font-text: 'Helvetica', 'Arial', sans-serif;
|
4
|
+
--base-font-size: 16px;
|
5
|
+
}
|
6
|
+
|
7
|
+
/* @font-face {
|
8
|
+
font-family: KodeMono;
|
9
|
+
font-style: normal;
|
10
|
+
font-weight: 400;
|
11
|
+
src: url('../../fonts/kode-mono.woff2') format('woff2');
|
12
|
+
} */
|
@@ -30,7 +30,7 @@ module.exports = class HTMLProjectGenerator extends _generator.default {
|
|
30
30
|
});
|
31
31
|
this.option('styles-path', {
|
32
32
|
type: String,
|
33
|
-
desc: 'Path for the scss',
|
33
|
+
desc: 'Path for the css/scss',
|
34
34
|
defaults: 'styles'
|
35
35
|
});
|
36
36
|
this.option('server', {
|
@@ -118,7 +118,7 @@ module.exports = class HTMLProjectGenerator extends _generator.default {
|
|
118
118
|
'skip-install': true,
|
119
119
|
quiet: true
|
120
120
|
});
|
121
|
-
this.composeWith('folklore:
|
121
|
+
this.composeWith('folklore:css', {
|
122
122
|
'project-name': projectName,
|
123
123
|
path: stylesSrcPath,
|
124
124
|
react: true,
|
@@ -134,6 +134,7 @@ module.exports = class HTMLProjectGenerator extends _generator.default {
|
|
134
134
|
});
|
135
135
|
}
|
136
136
|
console.log(srcPath, jsSrcPath, _path.default.join(jsSrcPath, 'index.js'), _path.default.join(srcPath, 'index.html.ejs'));
|
137
|
+
this.log('merging with folklore build');
|
137
138
|
this.composeWith('folklore:build', {
|
138
139
|
'src-path': srcPath,
|
139
140
|
'entry-path': _path.default.join(jsSrcPath, 'index.js'),
|
@@ -1,11 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
4
|
-
var _yeomanRemote = _interopRequireDefault(require("yeoman-remote"));
|
5
|
-
var _glob = _interopRequireDefault(require("glob"));
|
6
|
-
var _path = _interopRequireDefault(require("path"));
|
7
3
|
var _chalk = _interopRequireDefault(require("chalk"));
|
4
|
+
var _glob = _interopRequireDefault(require("glob"));
|
5
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
8
6
|
var _passwordGenerator = _interopRequireDefault(require("password-generator"));
|
7
|
+
var _path = _interopRequireDefault(require("path"));
|
8
|
+
var _yeomanRemote = _interopRequireDefault(require("yeoman-remote"));
|
9
9
|
var _generator = _interopRequireDefault(require("../../lib/generator"));
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
11
11
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
@@ -221,7 +221,7 @@ module.exports = class LaravelGenerator extends _generator.default {
|
|
221
221
|
this.composeWith('folklore:editorconfig', {
|
222
222
|
quiet: true
|
223
223
|
});
|
224
|
-
this.composeWith('folklore:
|
224
|
+
this.composeWith('folklore:css', {
|
225
225
|
'project-name': this.options['project-name'],
|
226
226
|
path: stylesSrcPath,
|
227
227
|
react: true,
|
@@ -103,11 +103,6 @@ module.exports = class LaravelProjectGenerator extends _generator.default {
|
|
103
103
|
desc: 'Add mediatheque',
|
104
104
|
defaults: false
|
105
105
|
});
|
106
|
-
this.option('auth', {
|
107
|
-
type: Boolean,
|
108
|
-
desc: 'Add auth',
|
109
|
-
defaults: false
|
110
|
-
});
|
111
106
|
}
|
112
107
|
get prompting() {
|
113
108
|
return {
|
@@ -154,10 +149,6 @@ module.exports = class LaravelProjectGenerator extends _generator.default {
|
|
154
149
|
name: 'Panneau',
|
155
150
|
value: 'panneau',
|
156
151
|
checked: true
|
157
|
-
}, !this.options.auth && {
|
158
|
-
name: 'Auth',
|
159
|
-
value: 'auth',
|
160
|
-
checked: true
|
161
152
|
}].filter(Boolean);
|
162
153
|
if (featuresChoices.length) {
|
163
154
|
prompts.push({
|
@@ -185,9 +176,6 @@ module.exports = class LaravelProjectGenerator extends _generator.default {
|
|
185
176
|
if (features.indexOf('panneau') !== -1) {
|
186
177
|
this.options.panneau = true;
|
187
178
|
}
|
188
|
-
if (features.indexOf('auth') !== -1) {
|
189
|
-
this.options.auth = true;
|
190
|
-
}
|
191
179
|
if (features.indexOf('mediatheque') !== -1) {
|
192
180
|
this.options.mediatheque = true;
|
193
181
|
}
|
@@ -233,7 +221,7 @@ module.exports = class LaravelProjectGenerator extends _generator.default {
|
|
233
221
|
quiet: true,
|
234
222
|
'skip-install': true
|
235
223
|
});
|
236
|
-
this.composeWith('folklore:
|
224
|
+
this.composeWith('folklore:css', {
|
237
225
|
'project-name': this.options['project-name'],
|
238
226
|
path: stylesSrcPath,
|
239
227
|
react: true,
|
@@ -268,17 +256,6 @@ module.exports = class LaravelProjectGenerator extends _generator.default {
|
|
268
256
|
quiet: true
|
269
257
|
});
|
270
258
|
}
|
271
|
-
|
272
|
-
// if (this.options.auth) {
|
273
|
-
// this.composeWith('folklore:laravel-auth', {
|
274
|
-
// 'project-name': this.options['project-name'],
|
275
|
-
// 'js-path': jsSrcPath,
|
276
|
-
// 'styles-path': stylesSrcPath,
|
277
|
-
// 'skip-install': true,
|
278
|
-
// 'install-npm': true,
|
279
|
-
// quiet: true,
|
280
|
-
// });
|
281
|
-
// }
|
282
259
|
}
|
283
260
|
get writing() {
|
284
261
|
return {
|
@@ -76,9 +76,9 @@ module.exports = class MicromagProjectGenerator extends _generator.default {
|
|
76
76
|
getRelativeStylesPath: (from, src) => _path.default.relative(this.destinationPath(_path.default.dirname(_path.default.join(srcPath, from))), this.destinationPath(_path.default.join(_path.default.join(srcPath, 'styles'), src)))
|
77
77
|
};
|
78
78
|
this.fs.delete(this.srcPath('components/pages/Home.jsx'));
|
79
|
-
this.fs.delete(this.srcPath('styles/pages/home.module.
|
79
|
+
this.fs.delete(this.srcPath('styles/pages/home.module.css'));
|
80
80
|
this.fs.copyTpl(this.templatePath('Home.jsx'), this.srcPath('components/pages/Home.jsx'), templateData);
|
81
|
-
this.fs.copyTpl(this.templatePath('home.module.
|
81
|
+
this.fs.copyTpl(this.templatePath('home.module.css'), this.srcPath('styles/pages/home.module.css'), templateData);
|
82
82
|
},
|
83
83
|
routes() {
|
84
84
|
const {
|
@@ -91,8 +91,8 @@ module.exports = class MicromagProjectGenerator extends _generator.default {
|
|
91
91
|
this.fs.copyTpl(this.templatePath('Routes.jsx'), this.srcPath('components/Routes.jsx'), templateData);
|
92
92
|
},
|
93
93
|
styles() {
|
94
|
-
this.fs.delete(this.srcPath('styles/styles.
|
95
|
-
this.fs.copyTpl(this.templatePath('styles.
|
94
|
+
this.fs.delete(this.srcPath('styles/styles.css'));
|
95
|
+
this.fs.copyTpl(this.templatePath('styles.css'), this.srcPath('styles/styles.css'));
|
96
96
|
},
|
97
97
|
micromag() {
|
98
98
|
this.fs.copyTpl(this.templatePath('data.json'), this.srcPath('micromag/data.json'));
|
@@ -6,7 +6,7 @@ import { useIntl } from 'react-intl';
|
|
6
6
|
// import * as AppPropTypes from '../../lib/PropTypes';
|
7
7
|
import story from '../../micromag/data.json';
|
8
8
|
|
9
|
-
import styles from '<%= getRelativeStylesPath('components/pages/Home.jsx', 'pages/home.module.
|
9
|
+
import styles from '<%= getRelativeStylesPath('components/pages/Home.jsx', 'pages/home.module.css') %>';
|
10
10
|
|
11
11
|
const propTypes = {
|
12
12
|
// intl: AppPropTypes.intl.isRequired,
|
@@ -9,7 +9,7 @@ import MainLayout from './layouts/Main';
|
|
9
9
|
import ErrorPage from './pages/Error';
|
10
10
|
import HomePage from './pages/Home';
|
11
11
|
|
12
|
-
import '<%= getRelativeStylesPath('components/App.jsx', 'styles.
|
12
|
+
import '<%= getRelativeStylesPath('components/App.jsx', 'styles.css') %>';
|
13
13
|
|
14
14
|
const propTypes = {};
|
15
15
|
|
@@ -5,10 +5,11 @@
|
|
5
5
|
"trailingComma": "all",
|
6
6
|
"tabWidth": 4,
|
7
7
|
"importOrder": [
|
8
|
+
"styles\\.s?css$",
|
8
9
|
"<THIRD_PARTY_MODULES>",
|
9
10
|
"^[./](.*)?/(utils|hooks|lib)",
|
10
11
|
"^[./].*(?<!(\\.[a-z]+))$",
|
11
|
-
"\\.
|
12
|
+
"\\.s?css$",
|
12
13
|
"\\.[a-z]+$"
|
13
14
|
],
|
14
15
|
"importOrderSeparation": true
|
@@ -18,14 +18,7 @@ const propTypes = {
|
|
18
18
|
routes: PropTypes.objectOf(PropTypes.string),
|
19
19
|
};
|
20
20
|
|
21
|
-
|
22
|
-
intl: null,
|
23
|
-
routes: {
|
24
|
-
home: '/'
|
25
|
-
},
|
26
|
-
};
|
27
|
-
|
28
|
-
function App({ intl, routes }) {
|
21
|
+
function App({ intl = null, routes = { home: '/' } }) {
|
29
22
|
const { locale = 'fr', messages = {} } = intl || {};
|
30
23
|
return (
|
31
24
|
<IntlProvider locale={locale} messages={messages[locale] || messages}>
|
@@ -39,6 +32,5 @@ function App({ intl, routes }) {
|
|
39
32
|
}
|
40
33
|
|
41
34
|
App.propTypes = propTypes;
|
42
|
-
App.defaultProps = defaultProps;
|
43
35
|
|
44
36
|
export default App;
|
@@ -9,12 +9,10 @@ import MainLayout from './layouts/Main';
|
|
9
9
|
import ErrorPage from './pages/Error';
|
10
10
|
import HomePage from './pages/Home';
|
11
11
|
|
12
|
-
import '<%= getRelativeStylesPath('components/App.jsx', 'styles.
|
12
|
+
import '<%= getRelativeStylesPath('components/App.jsx', 'styles.css') %>';
|
13
13
|
|
14
14
|
const propTypes = {};
|
15
15
|
|
16
|
-
const defaultProps = {};
|
17
|
-
|
18
16
|
function Routes() {
|
19
17
|
const routes = useRoutes() || {};
|
20
18
|
return (
|
@@ -34,6 +32,5 @@ function Routes() {
|
|
34
32
|
}
|
35
33
|
|
36
34
|
Routes.propTypes = propTypes;
|
37
|
-
Routes.defaultProps = defaultProps;
|
38
35
|
|
39
36
|
export default Routes;
|
@@ -6,7 +6,7 @@ import { Link } from 'wouter';
|
|
6
6
|
|
7
7
|
import * as AppPropTypes from '../../lib/PropTypes';
|
8
8
|
|
9
|
-
import styles from '<%= getRelativeStylesPath('components/buttons/Button.jsx', 'buttons/button.module.
|
9
|
+
import styles from '<%= getRelativeStylesPath('components/buttons/Button.jsx', 'buttons/button.module.css') %>';
|
10
10
|
|
11
11
|
const propTypes = {
|
12
12
|
text: PropTypes.string,
|
@@ -28,44 +28,24 @@ const propTypes = {
|
|
28
28
|
onClick: PropTypes.func,
|
29
29
|
};
|
30
30
|
|
31
|
-
const defaultProps = {
|
32
|
-
text: null,
|
33
|
-
type: 'button',
|
34
|
-
href: null,
|
35
|
-
external: false,
|
36
|
-
direct: false,
|
37
|
-
target: '_blank',
|
38
|
-
label: null,
|
39
|
-
children: null,
|
40
|
-
icon: null,
|
41
|
-
iconPosition: 'inline',
|
42
|
-
disabled: false,
|
43
|
-
loading: false,
|
44
|
-
disableOnLoading: true,
|
45
|
-
className: null,
|
46
|
-
iconClassName: null,
|
47
|
-
labelClassName: null,
|
48
|
-
onClick: null,
|
49
|
-
};
|
50
|
-
|
51
31
|
function Button({
|
52
|
-
text,
|
53
|
-
type,
|
54
|
-
href,
|
55
|
-
external,
|
56
|
-
direct,
|
57
|
-
target,
|
58
|
-
label,
|
59
|
-
children,
|
60
|
-
icon,
|
61
|
-
iconPosition,
|
62
|
-
disabled,
|
63
|
-
loading,
|
64
|
-
disableOnLoading,
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
32
|
+
text = null,
|
33
|
+
type = 'button',
|
34
|
+
href = null,
|
35
|
+
external = false,
|
36
|
+
direct = false,
|
37
|
+
target = '_blank',
|
38
|
+
label = null,
|
39
|
+
children = null,
|
40
|
+
icon = null,
|
41
|
+
iconPosition = 'inline',
|
42
|
+
disabled = false,
|
43
|
+
loading = false,
|
44
|
+
disableOnLoading = true,
|
45
|
+
className = null,
|
46
|
+
iconClassName = null,
|
47
|
+
labelClassName = null,
|
48
|
+
onClick = null,
|
69
49
|
}) {
|
70
50
|
const finalLabel = label || children;
|
71
51
|
const hasChildren = label !== null && children !== null;
|
@@ -158,6 +138,5 @@ function Button({
|
|
158
138
|
};
|
159
139
|
|
160
140
|
Button.propTypes = propTypes;
|
161
|
-
Button.defaultProps = defaultProps;
|
162
141
|
|
163
142
|
export default Button;
|
@@ -1,15 +1,13 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import PropTypes from 'prop-types';
|
3
3
|
|
4
|
-
import styles from '<%= getRelativeStylesPath('components/layouts/Main.jsx', 'layouts/main.module.
|
4
|
+
import styles from '<%= getRelativeStylesPath('components/layouts/Main.jsx', 'layouts/main.module.css') %>';
|
5
5
|
|
6
6
|
const propTypes = {
|
7
7
|
children: PropTypes.node.isRequired,
|
8
8
|
};
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
function MainLayout({ children }) {
|
10
|
+
function MainLayout({ children = null }) {
|
13
11
|
return (
|
14
12
|
<div className={styles.container}>
|
15
13
|
<div className={styles.inner}>
|
@@ -20,6 +18,5 @@ function MainLayout({ children }) {
|
|
20
18
|
};
|
21
19
|
|
22
20
|
MainLayout.propTypes = propTypes;
|
23
|
-
MainLayout.defaultProps = defaultProps;
|
24
21
|
|
25
22
|
export default MainLayout;
|
@@ -6,19 +6,14 @@ import { Link } from 'wouter';
|
|
6
6
|
|
7
7
|
import * as AppPropTypes from '../../lib/PropTypes';
|
8
8
|
|
9
|
-
import styles from '<%= getRelativeStylesPath('components/menus/Menu.jsx', 'menus/menu.module.
|
9
|
+
import styles from '<%= getRelativeStylesPath('components/menus/Menu.jsx', 'menus/menu.module.css') %>';
|
10
10
|
|
11
11
|
const propTypes = {
|
12
12
|
items: AppPropTypes.menuItems,
|
13
13
|
className: PropTypes.string,
|
14
14
|
};
|
15
15
|
|
16
|
-
|
17
|
-
items: [],
|
18
|
-
className: null,
|
19
|
-
};
|
20
|
-
|
21
|
-
function Menu({ items, className }) {
|
16
|
+
function Menu({ items = [], className = null }) {
|
22
17
|
return (
|
23
18
|
<nav
|
24
19
|
className={classNames([
|
@@ -56,6 +51,5 @@ function Menu({ items, className }) {
|
|
56
51
|
}
|
57
52
|
|
58
53
|
Menu.propTypes = propTypes;
|
59
|
-
Menu.defaultProps = defaultProps;
|
60
54
|
|
61
55
|
export default Menu;
|
@@ -8,7 +8,7 @@ import { useUrlGenerator } from '@folklore/routes';
|
|
8
8
|
// import * as AppPropTypes from '../../lib/PropTypes';
|
9
9
|
import PageMeta from '../partials/PageMeta';
|
10
10
|
|
11
|
-
import styles from '<%= getRelativeStylesPath('components/pages/Error.jsx', 'pages/error.module.
|
11
|
+
import styles from '<%= getRelativeStylesPath('components/pages/Error.jsx', 'pages/error.module.css') %>';
|
12
12
|
|
13
13
|
export const messages = defineMessages({
|
14
14
|
metaTitle401: {
|
@@ -73,11 +73,7 @@ const propTypes = {
|
|
73
73
|
statusCode: PropTypes.number,
|
74
74
|
};
|
75
75
|
|
76
|
-
|
77
|
-
statusCode: 404,
|
78
|
-
};
|
79
|
-
|
80
|
-
function ErrorPage({ statusCode }) {
|
76
|
+
function ErrorPage({ statusCode = 404 }) {
|
81
77
|
const url = useUrlGenerator();
|
82
78
|
return (
|
83
79
|
<div className={styles.container}>
|
@@ -100,6 +96,5 @@ function ErrorPage({ statusCode }) {
|
|
100
96
|
};
|
101
97
|
|
102
98
|
ErrorPage.propTypes = propTypes;
|
103
|
-
ErrorPage.defaultProps = defaultProps;
|
104
99
|
|
105
100
|
export default ErrorPage;
|
@@ -5,7 +5,7 @@ import { defineMessages } from 'react-intl';
|
|
5
5
|
// import * as AppPropTypes from '../../lib/PropTypes';
|
6
6
|
import PageMeta from '../partials/PageMeta';
|
7
7
|
|
8
|
-
import styles from '<%= getRelativeStylesPath('components/pages/Home.jsx', 'pages/home.module.
|
8
|
+
import styles from '<%= getRelativeStylesPath('components/pages/Home.jsx', 'pages/home.module.css') %>';
|
9
9
|
|
10
10
|
const messages = defineMessages({
|
11
11
|
metaTitle: {
|
@@ -17,11 +17,7 @@ const propTypes = {
|
|
17
17
|
title: AppPropTypes.message,
|
18
18
|
};
|
19
19
|
|
20
|
-
|
21
|
-
title: messages.title,
|
22
|
-
};
|
23
|
-
|
24
|
-
function PageMeta({ title }) {
|
20
|
+
function PageMeta({ title = null }) {
|
25
21
|
const intl = useIntl();
|
26
22
|
return (
|
27
23
|
<Helmet>
|
@@ -31,6 +27,5 @@ function PageMeta({ title }) {
|
|
31
27
|
}
|
32
28
|
|
33
29
|
PageMeta.propTypes = propTypes;
|
34
|
-
PageMeta.defaultProps = defaultProps;
|
35
30
|
|
36
|
-
export default
|
31
|
+
export default PageMeta;
|
@@ -1,7 +1,8 @@
|
|
1
1
|
/* globals GOOGLE_API_KEY: true */
|
2
|
+
|
2
3
|
/* eslint-disable react/jsx-props-no-spreading */
|
3
|
-
import React, { useContext } from 'react';
|
4
4
|
import PropTypes from 'prop-types';
|
5
|
+
import React, { useContext } from 'react';
|
5
6
|
|
6
7
|
const KeysContext = React.createContext({
|
7
8
|
googleApiKey: typeof GOOGLE_API_KEY !== 'undefined' ? GOOGLE_API_KEY : null,
|
@@ -9,13 +10,13 @@ const KeysContext = React.createContext({
|
|
9
10
|
|
10
11
|
export const useKeys = () => useContext(KeysContext);
|
11
12
|
|
12
|
-
export const withKeys = WrappedComponent => {
|
13
|
+
export const withKeys = (WrappedComponent) => {
|
13
14
|
const getDisplayName = ({ displayName = null, name = null }) =>
|
14
15
|
displayName || name || 'Component';
|
15
16
|
|
16
|
-
const WithKeysComponent = props => (
|
17
|
+
const WithKeysComponent = (props) => (
|
17
18
|
<KeysContext.Consumer>
|
18
|
-
{keys => <WrappedComponent {...keys} {...props} />}
|
19
|
+
{(keys) => <WrappedComponent {...keys} {...props} />}
|
19
20
|
</KeysContext.Consumer>
|
20
21
|
);
|
21
22
|
WithKeysComponent.displayName = `WithKeys(${getDisplayName(WrappedComponent)})`;
|
@@ -27,15 +28,10 @@ const propTypes = {
|
|
27
28
|
keys: PropTypes.objectOf(PropTypes.string),
|
28
29
|
};
|
29
30
|
|
30
|
-
const
|
31
|
-
keys: {},
|
32
|
-
};
|
33
|
-
|
34
|
-
export const KeysProvider = ({ children, keys }) => (
|
31
|
+
export const KeysProvider = ({ children = null, keys = null }) => (
|
35
32
|
<KeysContext.Provider value={keys}>{children}</KeysContext.Provider>
|
36
33
|
);
|
37
34
|
|
38
35
|
KeysProvider.propTypes = propTypes;
|
39
|
-
KeysProvider.defaultProps = defaultProps;
|
40
36
|
|
41
37
|
export default KeysContext;
|
@@ -32,9 +32,8 @@ module.exports = class StylelintGenerator extends _generator.default {
|
|
32
32
|
dependencies() {
|
33
33
|
this.addDevDependencies({
|
34
34
|
stylelint: '^16.2.1',
|
35
|
-
'stylelint-config-standard-scss': '^13.0.0',
|
36
35
|
'stylelint-config-idiomatic-order': '^10.0.0',
|
37
|
-
'stylelint-config-standard': '^
|
36
|
+
'stylelint-config-standard': '^37.0.0'
|
38
37
|
});
|
39
38
|
}
|
40
39
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "generator-folklore",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.25",
|
4
4
|
"description": "Yeoman generator for projects at Folklore",
|
5
5
|
"keywords": [
|
6
6
|
"yeoman-generator"
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"scripts": {
|
10
10
|
"clean:lib": "rm -rf lib/*",
|
11
11
|
"clean": "npm run clean:lib",
|
12
|
-
"copy:dirs": "find src/ -type d | grep -E '(/templates|/instructions)$' | sed 's/src
|
12
|
+
"copy:dirs": "find src/ -type d | grep -E '(/templates|/instructions)$' | sed 's/src\\///g' | xargs -I{} cp -r \"./src/{}\" \"./lib/{}\"",
|
13
13
|
"compile": "../../node_modules/.bin/babel -d lib/ src/",
|
14
14
|
"build": "npm run compile && npm run copy:dirs",
|
15
15
|
"test": "echo \"Error: no test specified\" && exit 1",
|
@@ -37,8 +37,8 @@
|
|
37
37
|
"is-utf8": "^0.2.1",
|
38
38
|
"lodash": "^4.17.21",
|
39
39
|
"password-generator": "^2.3.2",
|
40
|
-
"yeoman-generator": "
|
40
|
+
"yeoman-generator": "5.9.0",
|
41
41
|
"yeoman-remote": "^1.0.1"
|
42
42
|
},
|
43
|
-
"gitHead": "
|
43
|
+
"gitHead": "6879f02e1991265ab2248de470fbf8e1240483a9"
|
44
44
|
}
|
File without changes
|