diff --git a/.github/workflows/auto-update-icons.yml b/.github/workflows/auto-update-icons.yml index f900738e0c72..92d0cbe23e3d 100644 --- a/.github/workflows/auto-update-icons.yml +++ b/.github/workflows/auto-update-icons.yml @@ -11,11 +11,6 @@ jobs: - uses: taiga-family/ci/actions/setup/checkout@v1.66.5 - uses: taiga-family/ci/actions/setup/variables@v1.66.5 - uses: taiga-family/ci/actions/setup/node@v1.66.5 - - name: Copy flags from design tokens icons - run: | - rm -rf ./projects/icons/src/flags && mkdir -p ./projects/icons/src/flags - cp -R ./node_modules/@taiga-ui/design-tokens/icons/flags/* ./projects/icons/src/flags - npx prettier ./projects/icons/src/flags --write - name: Lucide icons run: | npx nx prebuild icons @@ -24,6 +19,10 @@ jobs: run: | npx nx prebuild icons-material npx nx build icons-material + - name: FontAwesome icons + run: | + npx nx prebuild icons-fontawesome + npx nx build icons-fontawesome - run: | npx ts-node ./scripts/generate-used-icons.ts npx eslint ./projects/cdk/constants/used-icons.ts --fix || echo "no file matching" diff --git a/projects/icons-fontawesome/project.json b/projects/icons-fontawesome/project.json index 5385a07e56ba..ed7715e5a64c 100644 --- a/projects/icons-fontawesome/project.json +++ b/projects/icons-fontawesome/project.json @@ -20,7 +20,7 @@ "parallel": false, "commands": [ "ts-node ./{projectRoot}/scripts/prepare-icons.ts", - "prettier ./{projectRoot}/src/* --write" + "prettier ./{projectRoot}/src/* --write --log-level silent" ] } }, diff --git a/projects/icons-fontawesome/scripts/prepare-icons.ts b/projects/icons-fontawesome/scripts/prepare-icons.ts index d90616f1c8bb..29cf9462b597 100644 --- a/projects/icons-fontawesome/scripts/prepare-icons.ts +++ b/projects/icons-fontawesome/scripts/prepare-icons.ts @@ -1,6 +1,12 @@ +/// import fs from 'node:fs'; import path from 'node:path'; +import {PAYMENTS_ICONS} from '../../../scripts/custom-icons'; +import {tuiIsCI} from '../../cdk/schematics'; + +const verbose = !tuiIsCI(); + (function main(): void { const dest = process.argv[2] || @@ -32,7 +38,7 @@ import path from 'node:path'; fs.mkdirSync(path.dirname(filePath), {recursive: true}); fs.writeFileSync(filePath, content); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); }); @@ -47,40 +53,11 @@ import path from 'node:path'; fs.mkdirSync(path.dirname(filePath), {recursive: true}); fs.writeFileSync(filePath, content); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); // 3. copy payment icons - [ - 'electron-mono', - 'maestro-mono', - 'mastercard-mono', - 'mir-mono', - 'visa-mono', - 'electron', - 'cirrus', - 'maestro', - 'mastercard', - 'mir', - 'visa', - 'union-pay', - 'jcb', - 'pay-pal', - 'amex', - 'diners-club', - 'discover', - 'humo', - 'ru-pay', - 'uzcard', - 'verve', - 'apple-pay', - 'google-pay', - 'samsung-pay', - 'world-pay', - 'ali-pay', - 'amazon-pay', - 'android-pay', - ].forEach((filename) => { + PAYMENTS_ICONS.forEach((filename) => { const filePath = path.join('projects/icons/src', `${filename}.svg`); fs.writeFileSync( @@ -88,6 +65,6 @@ import path from 'node:path'; fs.readFileSync(path.join(filePath), 'utf-8'), ); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); })(); diff --git a/projects/icons-material/project.json b/projects/icons-material/project.json index b22c973339e6..a906c01589a3 100644 --- a/projects/icons-material/project.json +++ b/projects/icons-material/project.json @@ -20,7 +20,7 @@ "parallel": false, "commands": [ "ts-node ./{projectRoot}/scripts/prepare-icons.ts", - "prettier ./{projectRoot}/src/* --write" + "prettier ./{projectRoot}/src/* --write --log-level silent" ] } }, diff --git a/projects/icons-material/scripts/prepare-icons.ts b/projects/icons-material/scripts/prepare-icons.ts index 0f6a674071c4..df1317f34cd1 100644 --- a/projects/icons-material/scripts/prepare-icons.ts +++ b/projects/icons-material/scripts/prepare-icons.ts @@ -1,6 +1,12 @@ +/// import fs from 'node:fs'; import path from 'node:path'; +import {PAYMENTS_ICONS} from '../../../scripts/custom-icons'; +import {tuiIsCI} from '../../cdk/schematics'; + +const verbose = !tuiIsCI(); + (function main(): void { const dest = process.argv[2] || path.join(process.cwd(), 'projects', 'icons-material', 'src'); @@ -29,7 +35,7 @@ import path from 'node:path'; fs.mkdirSync(path.dirname(filePath), {recursive: true}); fs.writeFileSync(filePath, content); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); }); @@ -43,40 +49,11 @@ import path from 'node:path'; fs.mkdirSync(path.dirname(filePath), {recursive: true}); fs.writeFileSync(filePath, content); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); // 3. copy payment icons - [ - 'electron-mono', - 'maestro-mono', - 'mastercard-mono', - 'mir-mono', - 'visa-mono', - 'electron', - 'cirrus', - 'maestro', - 'mastercard', - 'mir', - 'visa', - 'union-pay', - 'jcb', - 'pay-pal', - 'amex', - 'diners-club', - 'discover', - 'humo', - 'ru-pay', - 'uzcard', - 'verve', - 'apple-pay', - 'google-pay', - 'samsung-pay', - 'world-pay', - 'ali-pay', - 'amazon-pay', - 'android-pay', - ].forEach((filename) => { + PAYMENTS_ICONS.forEach((filename) => { const filePath = path.join('projects/icons/src', `${filename}.svg`); fs.writeFileSync( @@ -84,6 +61,6 @@ import path from 'node:path'; fs.readFileSync(path.join(filePath), 'utf-8'), ); - console.info('copied:', filePath); + verbose && console.info('copied:', filePath); }); })(); diff --git a/projects/icons/project.json b/projects/icons/project.json index 6bbd753c52d1..663208311238 100644 --- a/projects/icons/project.json +++ b/projects/icons/project.json @@ -20,7 +20,7 @@ "parallel": false, "commands": [ "ts-node ./{projectRoot}/scripts/prepare-icons.ts", - "npx prettier ./{projectRoot}/src/* --write" + "prettier ./{projectRoot}/src/* --write --log-level silent" ] } }, diff --git a/projects/icons/scripts/prepare-icons.ts b/projects/icons/scripts/prepare-icons.ts index 9e383ed95333..3b1e9cfeaa02 100644 --- a/projects/icons/scripts/prepare-icons.ts +++ b/projects/icons/scripts/prepare-icons.ts @@ -1,11 +1,17 @@ +/// import fs from 'node:fs'; import path from 'node:path'; +import {tuiIsCI} from '../../cdk/schematics'; + +const verbose = !tuiIsCI(); + (function main(): void { const src = path.join(process.cwd(), 'node_modules', 'lucide-static', 'icons'); const dest = process.argv[2] || path.join(process.cwd(), 'projects', 'icons', 'src'); fs.readdirSync(src).forEach((filename: string) => { + const filledFilename = renameToFilled(filename); const content = fs .readFileSync(path.join(src, filename), 'utf-8') .replace(/class="[a-zA-Z0-9:;.\s()\-,]*"/, '') @@ -13,11 +19,28 @@ import path from 'node:path'; /<(circle|ellipse|line|polygon|polyline|path|rect)/g, '<$1 vector-effect="non-scaling-stroke"', ); - const filled = content.replaceAll('fill="none"', 'fill="currentColor"'); + const filePath = path.join(dest, filename); + const fileFilledPath = path.join(dest, filledFilename); + + fs.writeFileSync(filePath, content); + verbose && console.info('copied:', filePath); + + fs.writeFileSync(fileFilledPath, filled); + verbose && console.info('copied:', fileFilledPath); + }); + + // 2. copy flags from design tokens + // noinspection DuplicatedCode + const flagsDir = path.resolve('node_modules/@taiga-ui/design-tokens/icons/flags'); + + fs.readdirSync(flagsDir).forEach((filename: string) => { + const content = fs.readFileSync(path.join(flagsDir, filename), 'utf-8'); + const filePath = path.join(dest, 'flags', filename); - fs.writeFileSync(path.join(dest, filename), content); - fs.writeFileSync(path.join(dest, renameToFilled(filename)), filled); + fs.mkdirSync(path.dirname(filePath), {recursive: true}); + fs.writeFileSync(filePath, content); + verbose && console.info('copied:', filePath); }); })(); diff --git a/scripts/custom-icons.ts b/scripts/custom-icons.ts new file mode 100644 index 000000000000..ae4700d91996 --- /dev/null +++ b/scripts/custom-icons.ts @@ -0,0 +1,30 @@ +export const PAYMENTS_ICONS = [ + 'electron-mono', + 'maestro-mono', + 'mastercard-mono', + 'mir-mono', + 'visa-mono', + 'electron', + 'cirrus', + 'maestro', + 'mastercard', + 'mir', + 'visa', + 'union-pay', + 'jcb', + 'pay-pal', + 'amex', + 'diners-club', + 'discover', + 'humo', + 'ru-pay', + 'uzcard', + 'verve', + 'apple-pay', + 'google-pay', + 'samsung-pay', + 'world-pay', + 'ali-pay', + 'amazon-pay', + 'android-pay', +] as const;