| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- var empty = require('is-empty-object');
- var format = require('util').format;
- var stripIndent = require('strip-indent');
- var SASS_TEMPLATE = stripIndent(`
- @charset 'utf-8';
- // Variables go here
- %s
- // Core imports go here
- @import 'foundation';
- @import 'motion-ui';
- // Modules go here
- %s
- // Motion UI goes here
- @include motion-ui-transitions;
- @include motion-ui-animations;
- `);
- /**
- * Generates an entry point Sass file with a custom list of CSS exports and Sass variables.
- * @param {Object} config - Customizer configuration object.
- * @param {String[]} modules - Modules to include CSS for.
- * @param {Object} variables - Sass variable overrides to include. The key is the name of the variable, and the value is the value.
- * @returns {String} Formatted Sass file.
- */
- module.exports = function(config, modules, variables) {
- var variableList = [];
- var colorList = {};
- var exportList = ['@include foundation-global-styles;'];
- if (empty(modules)) {
- modules = Object.keys(config);
- }
- // Create variable overrides code
- for (var i in variables) {
- var name = i.replace('_', '-');
- if (name.match(/-color$/)) {
- var key = name.replace('-color', '');
- colorList[key] = variables[i];
- }
- else {
- variableList.push(format('$%s: %s;', name, variables[i]));
- }
- }
- if (!empty(colorList)) {
- variableList.push(createPaletteMap(colorList));
- }
- // Create module exports with @include
- for (var i in modules) {
- var name = modules[i];
- if (config[name] && config[name].sass) {
- exportList.push(format('@include foundation-%s;', config[name].sass));
- }
- }
- return format(SASS_TEMPLATE, variableList.join('\n'), exportList.join('\n'))
- }
- function createPaletteMap(colors) {
- var output = '$foundation-palette: (%s\n);';
- var keys = '';
- for (var i in colors) {
- keys += format('\n %s: %s,', i, colors[i]);
- }
- return format(output, keys);
- }
|