Spaces:
Sleeping
Sleeping
const plugin = require("tailwindcss/plugin"); | |
const fs = require("fs"); | |
const path = require("path"); | |
module.exports = { | |
content: ["./js/**/*.js", "../lib/*_web.ex", "../lib/*_web/**/*.*ex"], | |
theme: { | |
extend: { | |
colors: { | |
brand: "#FD4F00", | |
}, | |
}, | |
}, | |
plugins: [ | |
require("@tailwindcss/forms"), | |
plugin(({ addVariant }) => | |
addVariant("phx-no-feedback", [".phx-no-feedback&", ".phx-no-feedback &"]) | |
), | |
plugin(({ addVariant }) => | |
addVariant("phx-click-loading", [ | |
".phx-click-loading&", | |
".phx-click-loading &", | |
]) | |
), | |
plugin(({ addVariant }) => | |
addVariant("phx-submit-loading", [ | |
".phx-submit-loading&", | |
".phx-submit-loading &", | |
]) | |
), | |
plugin(({ addVariant }) => | |
addVariant("phx-change-loading", [ | |
".phx-change-loading&", | |
".phx-change-loading &", | |
]) | |
), | |
plugin(function ({ matchComponents, theme }) { | |
let iconsDir = path.join(__dirname, "../priv/hero_icons/optimized"); | |
let values = {}; | |
let icons = [ | |
["", "/24/outline"], | |
["-solid", "/24/solid"], | |
["-mini", "/20/solid"], | |
]; | |
icons.forEach(([suffix, dir]) => { | |
fs.readdirSync(path.join(iconsDir, dir)).map((file) => { | |
let name = path.basename(file, ".svg") + suffix; | |
values[name] = { name, fullPath: path.join(iconsDir, dir, file) }; | |
}); | |
}); | |
matchComponents( | |
{ | |
hero: ({ name, fullPath }) => { | |
let content = fs | |
.readFileSync(fullPath) | |
.toString() | |
.replace(/\r?\n|\r/g, ""); | |
return { | |
[`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`, | |
"-webkit-mask": `var(--hero-${name})`, | |
mask: `var(--hero-${name})`, | |
"background-color": "currentColor", | |
"vertical-align": "middle", | |
display: "inline-block", | |
width: theme("spacing.5"), | |
height: theme("spacing.5"), | |
}; | |
}, | |
}, | |
{ values } | |
); | |
}), | |
], | |
}; | |