| |
| |
|
|
| const plugin = require("tailwindcss/plugin"); |
| const fs = require("fs"); |
| const path = require("path"); |
| const defaultTheme = require("tailwindcss/defaultTheme"); |
|
|
| module.exports = { |
| |
| content: [ |
| "./js/**/*.js", |
| "../lib/medicode_web.ex", |
| "../lib/medicode_web/**/*.*ex", |
| ], |
| theme: { |
| extend: { |
| colors: { |
| brand: "#0A8390", |
| "brand-active": "#93BC6B", |
| "type-black-primary": "#202020", |
| "type-black-secondary": "#202020CC", |
| "type-black-tertiary": "#202020B2", |
| "button-deactivated-background": "#010101", |
| "light-divider": "#EBEBEB", |
| "accepted-primary": "#B8EB86", |
| "accepted-secondary": "#51841F", |
| "rejected-primary": "#FFB0B0", |
| "rejected-secondary": "#A72222", |
| "iron-mountain": "#8A8A8A", |
| }, |
| fontFamily: { |
| sans: ["Poppins", ...defaultTheme.fontFamily.sans], |
| secondary: ["Space Grotesk", ...defaultTheme.fontFamily.sans], |
| }, |
| }, |
| }, |
| 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, "./vendor/heroicons/optimized"); |
| let values = {}; |
| let icons = [ |
| ["", "/24/outline"], |
| ["-solid", "/24/solid"], |
| ["-mini", "/20/solid"], |
| ]; |
| icons.forEach(([suffix, dir]) => { |
| fs.readdirSync(path.join(iconsDir, dir)).forEach((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})`, |
| "mask-repeat": "no-repeat", |
| "background-color": "currentColor", |
| "vertical-align": "middle", |
| display: "inline-block", |
| width: theme("spacing.5"), |
| height: theme("spacing.5"), |
| }; |
| }, |
| }, |
| { values }, |
| ); |
| }), |
| ], |
| }; |
|
|