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;