easycolors
Version:
Package that stores colors of the web and many popular css frameworks
705 lines (688 loc) • 7.17 kB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires */
//@ts-check
// eslint-disable-next-line no-undef
const { writeFile } = require('node:fs/promises')
// eslint-disable-next-line no-undef
const { capitalizeOne, fileHeader } = require('./utils')
class MaterialColorFamily {
/**
* Creates a MaterialColorFamily
* @param {string} text
*/
constructor(text){
const splited = text.split(/\n/g).filter(line => line !== '')
this.name = splited.shift() ?? ''
this.keys = splited.filter((_, index) => index % 2 == 0)
this.values = splited.filter((_, index) => index % 2 == 1)
// Removes the 500 first value
this.keys.shift()
this.values.shift()
}
get variables(){
if(this.keys.length !== this.values.length){
throw new Error(`I can't, keys and values are not the same`)
}
let variablesText = ''
for(let index = 0; index < this.keys.length; index++){
const key = this.keys[index]
const value = this.values[index]
variablesText += `\nexport const s${key} = '${value}'`
}
return variablesText
}
get mainObject(){
return `
/** Material ${capitalizeOne(this.name)} Colors */
const ${this.name}:MaterialColorObject = {
'50' : s50,
'100' : s100,
'200' : s200,
'300' : s300,
'400' : s400,
'500' : s500,
'600' : s600,
'700' : s700,
'800' : s800,
'900' : s900,
'A100' : sA100,
'A200' : sA200,
'A400' : sA400,
'A700' : sA700
}
export default ${this.name}`
}
get fileText(){
return `${fileHeader(`Material ${capitalizeOne(this.name)} Colors`, 'material.creator.js')}
import { MaterialColorObject } from './types'
${this.variables}
${this.mainObject}`
}
async createFile(){
const filePath = `./src/material/${this.name}.ts`
await writeFile(filePath, this.fileText)
console.log(`material.creator: ${this.name}.ts created successfully`)
}
}
/**
* Creates an instance of MaterialColorFamily
* @param {string} text
* @returns Instance of MaterialColorFamily
*/
const colorFamily = (text) => new MaterialColorFamily(text)
const colorFamilies = [
colorFamily(`
red
500
#f44336
50
#ffebee
100
#ffcdd2
200
#ef9a9a
300
#e57373
400
#ef5350
500
#f44336
600
#e53935
700
#d32f2f
800
#c62828
900
#b71c1c
A100
#ff8a80
A200
#ff5252
A400
#ff1744
A700
#d50000`),
colorFamily(`
deepPurple
500
#673ab7
50
#ede7f6
100
#d1c4e9
200
#b39ddb
300
#9575cd
400
#7e57c2
500
#673ab7
600
#5e35b1
700
#512da8
800
#4527a0
900
#311b92
A100
#b388ff
A200
#7c4dff
A400
#651fff
A700
#6200ea`),
colorFamily(`
lightBlue
500
#03a9f4
50
#e1f5fe
100
#b3e5fc
200
#81d4fa
300
#4fc3f7
400
#29b6f6
500
#03a9f4
600
#039be5
700
#0288d1
800
#0277bd
900
#01579b
A100
#80d8ff
A200
#40c4ff
A400
#00b0ff
A700
#0091ea`),
colorFamily(`
green
500
#4caf50
50
#e8f5e9
100
#c8e6c9
200
#a5d6a7
300
#81c784
400
#66bb6a
500
#4caf50
600
#43a047
700
#388e3c
800
#2e7d32
900
#1b5e20
A100
#b9f6ca
A200
#69f0ae
A400
#00e676
A700
#00c853`),
colorFamily(`
yellow
500
#ffeb3b
50
#fffde7
100
#fff9c4
200
#fff59d
300
#fff176
400
#ffee58
500
#ffeb3b
600
#fdd835
700
#fbc02d
800
#f9a825
900
#f57f17
A100
#ffff8d
A200
#ffff00
A400
#ffea00
A700
#ffd600`),
colorFamily(`
deepOrange
500
#ff5722
50
#fbe9e7
100
#ffccbc
200
#ffab91
300
#ff8a65
400
#ff7043
500
#ff5722
600
#f4511e
700
#e64a19
800
#d84315
900
#bf360c
A100
#ff9e80
A200
#ff6e40
A400
#ff3d00
A700
#dd2c00`),
colorFamily(`
blueGrey
500
#607d8b
50
#eceff1
100
#cfd8dc
200
#b0bec5
300
#90a4ae
400
#78909c
500
#607d8b
600
#546e7a
700
#455a64
800
#37474f
900
#263238
A100
#cfd8dc
A200
#b0bec5
A400
#78909c
A700
#455a64`),
colorFamily(`
pink
500
#e91e63
50
#fce4ec
100
#f8bbd0
200
#f48fb1
300
#f06292
400
#ec407a
500
#e91e63
600
#d81b60
700
#c2185b
800
#ad1457
900
#880e4f
A100
#ff80ab
A200
#ff4081
A400
#f50057
A700
#c51162`),
colorFamily(`
indigo
500
#3f51b5
50
#e8eaf6
100
#c5cae9
200
#9fa8da
300
#7986cb
400
#5c6bc0
500
#3f51b5
600
#3949ab
700
#303f9f
800
#283593
900
#1a237e
A100
#8c9eff
A200
#536dfe
A400
#3d5afe
A700
#304ffe`),
colorFamily(`
cyan
500
#00bcd4
50
#e0f7fa
100
#b2ebf2
200
#80deea
300
#4dd0e1
400
#26c6da
500
#00bcd4
600
#00acc1
700
#0097a7
800
#00838f
900
#006064
A100
#84ffff
A200
#18ffff
A400
#00e5ff
A700
#00b8d4`),
colorFamily(`
lightGreen
500
#8bc34a
50
#f1f8e9
100
#dcedc8
200
#c5e1a5
300
#aed581
400
#9ccc65
500
#8bc34a
600
#7cb342
700
#689f38
800
#558b2f
900
#33691e
A100
#ccff90
A200
#b2ff59
A400
#76ff03
A700
#64dd17`),
colorFamily(`
amber
500
#ffc107
50
#fff8e1
100
#ffecb3
200
#ffe082
300
#ffd54f
400
#ffca28
500
#ffc107
600
#ffb300
700
#ffa000
800
#ff8f00
900
#ff6f00
A100
#ffe57f
A200
#ffd740
A400
#ffc400
A700
#ffab00`),
colorFamily(`
brown
500
#795548
50
#efebe9
100
#d7ccc8
200
#bcaaa4
300
#a1887f
400
#8d6e63
500
#795548
600
#6d4c41
700
#5d4037
800
#4e342e
900
#3e2723
A100
#d7ccc8
A200
#bcaaa4
A400
#8d6e63
A700
#5d4037`),
colorFamily(`
purple
500
#9c27b0
50
#f3e5f5
100
#e1bee7
200
#ce93d8
300
#ba68c8
400
#ab47bc
500
#9c27b0
600
#8e24aa
700
#7b1fa2
800
#6a1b9a
900
#4a148c
A100
#ea80fc
A200
#e040fb
A400
#d500f9
A700
#aa00ff`),
colorFamily(`
blue
500
#2196f3
50
#e3f2fd
100
#bbdefb
200
#90caf9
300
#64b5f6
400
#42a5f5
500
#2196f3
600
#1e88e5
700
#1976d2
800
#1565c0
900
#0d47a1
A100
#82b1ff
A200
#448aff
A400
#2979ff
A700
#2962ff`),
colorFamily(`
teal
500
#009688
50
#e0f2f1
100
#b2dfdb
200
#80cbc4
300
#4db6ac
400
#26a69a
500
#009688
600
#00897b
700
#00796b
800
#00695c
900
#004d40
A100
#a7ffeb
A200
#64ffda
A400
#1de9b6
A700
#00bfa5`),
colorFamily(`
lime
500
#cddc39
50
#f9fbe7
100
#f0f4c3
200
#e6ee9c
300
#dce775
400
#d4e157
500
#cddc39
600
#c0ca33
700
#afb42b
800
#9e9d24
900
#827717
A100
#f4ff81
A200
#eeff41
A400
#c6ff00
A700
#aeea00`),
colorFamily(`
orange
500
#ff9800
50
#fff3e0
100
#ffe0b2
200
#ffcc80
300
#ffb74d
400
#ffa726
500
#ff9800
600
#fb8c00
700
#f57c00
800
#ef6c00
900
#e65100
A100
#ffd180
A200
#ffab40
A400
#ff9100
A700
#ff6d00`),
colorFamily(`
grey
500
#9e9e9e
50
#fafafa
100
#f5f5f5
200
#eeeeee
300
#e0e0e0
400
#bdbdbd
500
#9e9e9e
600
#757575
700
#616161
800
#424242
900
#212121
A100
#f5f5f5
A200
#eeeeee
A400
#bdbdbd
A700
#616161`)
]
function materialCreator(){
colorFamilies.forEach(colorFamily => colorFamily.createFile())
}
// eslint-disable-next-line no-undef
module.exports = {
materialCreator
}