Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

format with biome

+89 -63
+89 -63
assets/tailwind.config.js
··· 1 1 // See the Tailwind configuration guide for advanced usage 2 2 // https://tailwindcss.com/docs/configuration 3 3 4 - const plugin = require("tailwindcss/plugin") 5 - const fs = require("fs") 6 - const path = require("path") 4 + const plugin = require("tailwindcss/plugin"); 5 + const fs = require("fs"); 6 + const path = require("path"); 7 7 8 8 module.exports = { 9 - content: [ 10 - "./js/**/*.js", 11 - "../lib/*_web.ex", 12 - "../lib/*_web/**/*.*ex", 13 - "../deps/ash_authentication_phoenix/**/*.*ex", 14 - ], 15 - theme: { 16 - extend: { 17 - colors: { 18 - brand: "#FD4F00", 19 - } 20 - }, 21 - }, 22 - plugins: [ 23 - require("@tailwindcss/forms"), 24 - // Allows prefixing tailwind classes with LiveView classes to add rules 25 - // only when LiveView classes are applied, for example: 26 - // 27 - // <div class="phx-click-loading:animate-ping"> 28 - // 29 - plugin(({addVariant}) => addVariant("phx-no-feedback", [".phx-no-feedback&", ".phx-no-feedback &"])), 30 - plugin(({addVariant}) => addVariant("phx-click-loading", [".phx-click-loading&", ".phx-click-loading &"])), 31 - plugin(({addVariant}) => addVariant("phx-submit-loading", [".phx-submit-loading&", ".phx-submit-loading &"])), 32 - plugin(({addVariant}) => addVariant("phx-change-loading", [".phx-change-loading&", ".phx-change-loading &"])), 9 + content: [ 10 + "./js/**/*.js", 11 + "../lib/*_web.ex", 12 + "../lib/*_web/**/*.*ex", 13 + "../deps/ash_authentication_phoenix/**/*.*ex", 14 + ], 15 + theme: { 16 + extend: { 17 + colors: { 18 + brand: "#FD4F00", 19 + }, 20 + }, 21 + }, 22 + plugins: [ 23 + require("@tailwindcss/forms"), 24 + // Allows prefixing tailwind classes with LiveView classes to add rules 25 + // only when LiveView classes are applied, for example: 26 + // 27 + // <div class="phx-click-loading:animate-ping"> 28 + // 29 + plugin(({ addVariant }) => 30 + addVariant("phx-no-feedback", [ 31 + ".phx-no-feedback&", 32 + ".phx-no-feedback &", 33 + ]), 34 + ), 35 + plugin(({ addVariant }) => 36 + addVariant("phx-click-loading", [ 37 + ".phx-click-loading&", 38 + ".phx-click-loading &", 39 + ]), 40 + ), 41 + plugin(({ addVariant }) => 42 + addVariant("phx-submit-loading", [ 43 + ".phx-submit-loading&", 44 + ".phx-submit-loading &", 45 + ]), 46 + ), 47 + plugin(({ addVariant }) => 48 + addVariant("phx-change-loading", [ 49 + ".phx-change-loading&", 50 + ".phx-change-loading &", 51 + ]), 52 + ), 33 53 34 - // Embeds Heroicons (https://heroicons.com) into your app.css bundle 35 - // See your `CoreComponents.icon/1` for more information. 36 - // 37 - plugin(function({matchComponents, theme}) { 38 - let iconsDir = path.join(__dirname, "./vendor/heroicons/optimized") 39 - let values = {} 40 - let icons = [ 41 - ["", "/24/outline"], 42 - ["-solid", "/24/solid"], 43 - ["-mini", "/20/solid"] 44 - ] 45 - icons.forEach(([suffix, dir]) => { 46 - fs.readdirSync(path.join(iconsDir, dir)).map(file => { 47 - let name = path.basename(file, ".svg") + suffix 48 - values[name] = {name, fullPath: path.join(iconsDir, dir, file)} 49 - }) 50 - }) 51 - matchComponents({ 52 - "hero": ({name, fullPath}) => { 53 - let content = fs.readFileSync(fullPath).toString().replace(/\r?\n|\r/g, "") 54 - return { 55 - [`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`, 56 - "-webkit-mask": `var(--hero-${name})`, 57 - "mask": `var(--hero-${name})`, 58 - "mask-repeat": "no-repeat", 59 - "background-color": "currentColor", 60 - "vertical-align": "middle", 61 - "display": "inline-block", 62 - "width": theme("spacing.5"), 63 - "height": theme("spacing.5") 64 - } 65 - } 66 - }, {values}) 67 - }) 68 - ] 69 - } 54 + // Embeds Heroicons (https://heroicons.com) into your app.css bundle 55 + // See your `CoreComponents.icon/1` for more information. 56 + // 57 + plugin(function ({ matchComponents, theme }) { 58 + let iconsDir = path.join(__dirname, "./vendor/heroicons/optimized"); 59 + let values = {}; 60 + let icons = [ 61 + ["", "/24/outline"], 62 + ["-solid", "/24/solid"], 63 + ["-mini", "/20/solid"], 64 + ]; 65 + icons.forEach(([suffix, dir]) => { 66 + fs.readdirSync(path.join(iconsDir, dir)).map((file) => { 67 + let name = path.basename(file, ".svg") + suffix; 68 + values[name] = { name, fullPath: path.join(iconsDir, dir, file) }; 69 + }); 70 + }); 71 + matchComponents( 72 + { 73 + hero: ({ name, fullPath }) => { 74 + let content = fs 75 + .readFileSync(fullPath) 76 + .toString() 77 + .replace(/\r?\n|\r/g, ""); 78 + return { 79 + [`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`, 80 + "-webkit-mask": `var(--hero-${name})`, 81 + mask: `var(--hero-${name})`, 82 + "mask-repeat": "no-repeat", 83 + "background-color": "currentColor", 84 + "vertical-align": "middle", 85 + display: "inline-block", 86 + width: theme("spacing.5"), 87 + height: theme("spacing.5"), 88 + }; 89 + }, 90 + }, 91 + { values }, 92 + ); 93 + }), 94 + ], 95 + };