From 12c213c2f9897c67c6729147ed839600c99b3a27 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Tue, 24 Oct 2023 12:10:50 +0200 Subject: [PATCH 01/16] Add the new `generateNewIcon` file (only comments for now) and relative component template --- src/components/icons/generateNewIcons.js | 64 ++++++++++++++++++++++ src/components/icons/svg/_IconTemplate.tsx | 11 ++++ 2 files changed, 75 insertions(+) create mode 100644 src/components/icons/generateNewIcons.js create mode 100644 src/components/icons/svg/_IconTemplate.tsx diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js new file mode 100644 index 00000000..d158c310 --- /dev/null +++ b/src/components/icons/generateNewIcons.js @@ -0,0 +1,64 @@ +/** +DRAFT for an AUTOMATIC process to generate new icon components +(`Icon....tsx`) from the SVG files exported from Figma. + +Prerequisites: +- The icon must be exported from the 24 × 24 frame +- The icon must be saved with the final name + - To learn more about naming conventions, please read the local README +*/ + +// STEPS: + +/** + * 1. Only process the newly added files + * + * Suggested path: + * 1. Files that need to be processed must be in the `svg/originals` folder. + * 2. Add a new file with the timestamp of the last process run. + * The file must be committed along with others. + * 3. Only files added after that timestamp value will be processed. + * 4. After the process run, update the new file with the current timestamp. + */ + +/** + * 2. Optimize SVG files with SVGO package (https://github.com/svg/svgo) + * + * Suggested path: + * 1. Add `svgo` to the `package.json` to use it as an executable + * 2. Configure it with the following parameters: + * - removeDimensions + * - removeRasterImages + * - removeScriptElement + * - removeViewBox (disabled) + * 3. Overwrite the original files + * 4. Optionally save the old ones in a `tmp` folder, which may be useful + * for debugging purposes. + * - Consider adding a `--debug' flag to the + * command to enable this behavior. + * - Add the `tmp` folder to `.gitignore` to keep the folder clean + * 5. Check the files after the optimizations + */ + +/** + * 3. Create the relative React component (with .tsx) + * + * Suggested path: + * - For every new SVG file: + * 1. Copy all the code contained in the `` tag + * 2. Use the file `_IconTemplate.tsx` as component template + * - Replace `IconTemplate` with the original SVG name + * - Remove all the comments inserted in the component file + * 3. Replace the `{SVGContent}` placeholder with the code copied + * in the step 1, replacing all the tags with the appropriate + * React ones. E.g: `path` becomes `Path` and so on… + * 4. Replace all the color values, set in hexadecimal format, with the + * `currentColor` attribute. + * E.g: fill="#CCCCCC" -> fill="currentColor" + * 5. Save a new file in the `svg` folder with the same filename + * of the relative SVG file and extension `.tsx`. + * E.g: svg/originals/IconProfile.svg -> svg/IconProfile.tsx + * 6. Save the list of processed SVG files and corresponding generated + * React components to a separate file. Add it to the `.gitignore` + * to keep the folder clean. + */ diff --git a/src/components/icons/svg/_IconTemplate.tsx b/src/components/icons/svg/_IconTemplate.tsx new file mode 100644 index 00000000..37bfdf21 --- /dev/null +++ b/src/components/icons/svg/_IconTemplate.tsx @@ -0,0 +1,11 @@ +import React from "react"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore (ignore Path unused component) +import { Svg, Path } from "react-native-svg"; +import { SVGIconProps } from "../Icon"; + +export const IconTemplate = ({ size, style, ...props }: SVGIconProps) => ( + + {/* SVGContent */} + +); From 1a6fbacd9800081c49a4d259bb5f0ac13b70929d Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Tue, 24 Oct 2023 16:10:13 +0200 Subject: [PATCH 02/16] Add the AI-generated `generateNewIcons` file --- package.json | 5 +- src/components/icons/generateNewIcons.js | 82 +++++++++++++++++++ src/components/icons/generateNewTimestamp.js | 6 ++ .../icons/svg/originals/IconFolder.svg | 3 + .../icons/svg/originals/IconReceiptOn.svg | 3 + src/components/icons/timestamp.txt | 1 + yarn.lock | 61 +++++++++++++- 7 files changed, 158 insertions(+), 3 deletions(-) create mode 100644 src/components/icons/generateNewTimestamp.js create mode 100644 src/components/icons/svg/originals/IconFolder.svg create mode 100644 src/components/icons/svg/originals/IconReceiptOn.svg create mode 100644 src/components/icons/timestamp.txt diff --git a/package.json b/package.json index 583589c0..643b861f 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-storybook": "^0.6.13", + "fs-extra": "^11.1.1", "jest": "^29.5.0", "metro-react-native-babel-preset": "^0.77.0", "pod-install": "^0.1.0", @@ -94,6 +95,7 @@ "react-test-renderer": "^18.2.0", "release-it": "^15.0.0", "storybook": "^7.4.0", + "svgo": "^3.0.2", "typescript": "^4.9.5" }, "resolutions": { @@ -112,7 +114,6 @@ "engines": { "node": ">= 16.0.0" }, - "packageManager": "^yarn@1.22.15", "jest": { "preset": "react-native", "modulePathIgnorePatterns": [ @@ -171,7 +172,6 @@ ] }, "dependencies": { - "lodash": "^4.17.21", "@expo/vector-icons": "^13.0.0", "@pagopa/ts-commons": "^12.0.0", "@testing-library/jest-native": "^5.4.2", @@ -181,6 +181,7 @@ "expo-asset": "^8.10.1", "expo-font": "^11.4.0", "expo-modules-core": "^1.5.6", + "lodash": "^4.17.21", "react-native-gesture-handler": "^2.12.0", "react-native-haptic-feedback": "^2.0.2", "react-native-linear-gradient": "^2.5.6", diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index d158c310..663dd4ee 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -62,3 +62,85 @@ Prerequisites: * React components to a separate file. Add it to the `.gitignore` * to keep the folder clean. */ + +/* +The following code was initially generated by GTP-4, +then improved step by step +*/ + +const path = require("path"); +const join = path.join; +const { optimize } = require("svgo"); +const fs = require("fs-extra"); + +const svgDir = join(__dirname, "svg/originals"); +const tsxDir = join(__dirname, "svg"); +const templateFilePath = join(__dirname, "svg/_IconTemplate.tsx"); +const timestampFilePath = join(__dirname, "timestamp.txt"); + +fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { + if (err) { + throw err; + } + + // eslint-disable-next-line no-console + console.log("Last processed timestamp:", timestamp); + + fs.readdir(svgDir, (err, files) => { + if (err) { + throw err; + } + + files.forEach(file => { + const filePath = join(svgDir, file); + const fileStats = fs.statSync(filePath); + + if (fileStats.mtime > new Date(timestamp)) { + // eslint-disable-next-line no-console + console.log("Processing file:", file); + + const data = fs.readFileSync(filePath, "utf8"); + + // Check if the file is an SVG + if (!file.endsWith(".svg")) { + return; + } + + const result = optimize(data, { path: filePath }); + const tsxData = result.data + .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") + .replace(/fill="[^"]*"/g, 'fill="currentColor"') + .replace(/fill-rule/g, "fillRule") + .replace(/clip-rule/g, "clipRule") + .replace( + /<([a-z]+)([^>]*)\/>/g, + (match, p1, p2) => + `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2} />` + ) // convert self-closing tags to capital case + .replace( + /<([a-z]+)([^>]*)>/g, + (match, p1, p2) => + `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2}>` + ); // convert start tags to capital case + + const template = fs.readFileSync(templateFilePath, "utf8"); + const componentData = template + .replace("IconTemplate", file.replace(".svg", "")) + .replace(/\/\/.*\n/g, "") // remove lines starting with // + .replace(`{/* SVGContent */}`, tsxData); + + const tsxFilePath = join(tsxDir, file.replace(".svg", ".tsx")); + fs.writeFileSync(tsxFilePath, componentData); + + // eslint-disable-next-line no-console + console.log("Created .tsx file:", tsxFilePath); + } + }); + + const newTimestamp = new Date().toISOString(); + fs.writeFileSync(timestampFilePath, newTimestamp); + + // eslint-disable-next-line no-console + console.log("Updated timestamp:", newTimestamp); + }); +}); diff --git a/src/components/icons/generateNewTimestamp.js b/src/components/icons/generateNewTimestamp.js new file mode 100644 index 00000000..e2b17ec3 --- /dev/null +++ b/src/components/icons/generateNewTimestamp.js @@ -0,0 +1,6 @@ +import fs from "fs"; + +const timestampFilePath = "./timestamp.txt"; // Adjust the path as needed +const currentTimestamp = new Date().toISOString(); + +fs.writeFileSync(timestampFilePath, currentTimestamp); diff --git a/src/components/icons/svg/originals/IconFolder.svg b/src/components/icons/svg/originals/IconFolder.svg new file mode 100644 index 00000000..f7b70977 --- /dev/null +++ b/src/components/icons/svg/originals/IconFolder.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/svg/originals/IconReceiptOn.svg b/src/components/icons/svg/originals/IconReceiptOn.svg new file mode 100644 index 00000000..b47ef390 --- /dev/null +++ b/src/components/icons/svg/originals/IconReceiptOn.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/timestamp.txt b/src/components/icons/timestamp.txt new file mode 100644 index 00000000..fc4e6370 --- /dev/null +++ b/src/components/icons/timestamp.txt @@ -0,0 +1 @@ +2023-10-24T12:57:21.236Z \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5bb3fc95..c490d155 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3730,6 +3730,11 @@ resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -6296,6 +6301,22 @@ css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -6306,6 +6327,13 @@ cssesc@^3.0.0: resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + csstype@^3.0.2: version "3.1.2" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -8029,6 +8057,15 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -10594,6 +10631,16 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -13644,7 +13691,7 @@ socks@^2.7.1: ip "^2.0.0" smart-buffer "^4.2.0" -source-map-js@^1.0.2: +source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -14051,6 +14098,18 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + swc-loader@^0.2.3: version "0.2.3" resolved "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz#6792f1c2e4c9ae9bf9b933b3e010210e270c186d" From 6bb23496f6238014c59ff004d47e178fc79c217f Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Tue, 24 Oct 2023 16:30:56 +0200 Subject: [PATCH 03/16] Prettify the generated files --- src/components/icons/generateNewIcons.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index 663dd4ee..0698fbb0 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -71,6 +71,7 @@ then improved step by step const path = require("path"); const join = path.join; const { optimize } = require("svgo"); +const prettier = require("prettier"); const fs = require("fs-extra"); const svgDir = join(__dirname, "svg/originals"); @@ -130,7 +131,10 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { .replace(`{/* SVGContent */}`, tsxData); const tsxFilePath = join(tsxDir, file.replace(".svg", ".tsx")); - fs.writeFileSync(tsxFilePath, componentData); + fs.writeFileSync( + tsxFilePath, + prettier.format(componentData, { parser: "typescript" }) + ); // eslint-disable-next-line no-console console.log("Created .tsx file:", tsxFilePath); From 16607f00959820f0fa674868dad4a37fe94f9195 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Tue, 24 Oct 2023 17:42:41 +0200 Subject: [PATCH 04/16] Improve `generateNewIcons` script --- src/components/icons/generateNewIcons.js | 33 ++++++++++++------- src/components/icons/generateNewTimestamp.js | 4 +-- .../icons/svg/originals/IconFingerprint.svg | 3 ++ 3 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 src/components/icons/svg/originals/IconFingerprint.svg diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index 0698fbb0..e06ff53f 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -64,7 +64,7 @@ Prerequisites: */ /* -The following code was initially generated by GTP-4, +The following code was first generated by GTP-4, then improved step by step */ @@ -81,6 +81,8 @@ const timestampFilePath = join(__dirname, "timestamp.txt"); fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { if (err) { + // eslint-disable-next-line no-console + console.log("Timestamp file not found."); throw err; } @@ -96,10 +98,9 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { const filePath = join(svgDir, file); const fileStats = fs.statSync(filePath); + /* Only process files with a more recent creation + date later than the timestamp value */ if (fileStats.mtime > new Date(timestamp)) { - // eslint-disable-next-line no-console - console.log("Processing file:", file); - const data = fs.readFileSync(filePath, "utf8"); // Check if the file is an SVG @@ -110,19 +111,24 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { const result = optimize(data, { path: filePath }); const tsxData = result.data .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") + /* Replace hardcoded color value with `currentColor` */ .replace(/fill="[^"]*"/g, 'fill="currentColor"') - .replace(/fill-rule/g, "fillRule") - .replace(/clip-rule/g, "clipRule") + /* Convert self-closing tags to Capital Case, because + `react-native-svg` doesn't recognize them otherwise */ .replace( /<([a-z]+)([^>]*)\/>/g, (match, p1, p2) => `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2} />` - ) // convert self-closing tags to capital case + ) + /* Convert all the remaining tags to Capital Case */ .replace( /<([a-z]+)([^>]*)>/g, (match, p1, p2) => `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2}>` - ); // convert start tags to capital case + ) + /* Convert SVG props to compatible React props */ + .replace(/fill-rule/g, "fillRule") + .replace(/clip-rule/g, "clipRule"); const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template @@ -130,21 +136,26 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { .replace(/\/\/.*\n/g, "") // remove lines starting with // .replace(`{/* SVGContent */}`, tsxData); - const tsxFilePath = join(tsxDir, file.replace(".svg", ".tsx")); + const fileWithTsxExtension = file.replace(".svg", ".tsx"); + const tsxFilePath = join(tsxDir, fileWithTsxExtension); fs.writeFileSync( tsxFilePath, prettier.format(componentData, { parser: "typescript" }) ); // eslint-disable-next-line no-console - console.log("Created .tsx file:", tsxFilePath); + console.log(`${file} → ${fileWithTsxExtension}`); } }); const newTimestamp = new Date().toISOString(); fs.writeFileSync(timestampFilePath, newTimestamp); + const readableItalianTime = new Date().toLocaleString("it-IT", { + timeZone: "Europe/Rome" + }); + // eslint-disable-next-line no-console - console.log("Updated timestamp:", newTimestamp); + console.log("Updated timestamp:", readableItalianTime); }); }); diff --git a/src/components/icons/generateNewTimestamp.js b/src/components/icons/generateNewTimestamp.js index e2b17ec3..3ecaaa98 100644 --- a/src/components/icons/generateNewTimestamp.js +++ b/src/components/icons/generateNewTimestamp.js @@ -1,6 +1,6 @@ -import fs from "fs"; +const fs = require("fs-extra"); -const timestampFilePath = "./timestamp.txt"; // Adjust the path as needed +const timestampFilePath = "./timestamp.txt"; const currentTimestamp = new Date().toISOString(); fs.writeFileSync(timestampFilePath, currentTimestamp); diff --git a/src/components/icons/svg/originals/IconFingerprint.svg b/src/components/icons/svg/originals/IconFingerprint.svg new file mode 100644 index 00000000..a8995eaa --- /dev/null +++ b/src/components/icons/svg/originals/IconFingerprint.svg @@ -0,0 +1,3 @@ + + + From 9189205d6da2a42d7c1016528be221bcc9e1c622 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Wed, 25 Oct 2023 09:53:35 +0200 Subject: [PATCH 05/16] Improve console log output with readable timestamp --- src/components/icons/generateNewIcons.js | 29 ++++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index e06ff53f..f1103c4c 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -79,6 +79,14 @@ const tsxDir = join(__dirname, "svg"); const templateFilePath = join(__dirname, "svg/_IconTemplate.tsx"); const timestampFilePath = join(__dirname, "timestamp.txt"); +const timeConfigLang = "it-IT"; +const timeConfigObj = { + timeZone: "Europe/Rome" +}; + +const convertTimestampToReadableFormat = timestamp => + new Date(timestamp).toLocaleString(timeConfigLang, timeConfigObj); + fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { if (err) { // eslint-disable-next-line no-console @@ -87,7 +95,12 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { } // eslint-disable-next-line no-console - console.log("Last processed timestamp:", timestamp); + console.log( + "Last processed timestamp:", + convertTimestampToReadableFormat(timestamp) + ); + // eslint-disable-next-line no-console + console.log(`————————————————`); fs.readdir(svgDir, (err, files) => { if (err) { @@ -148,14 +161,16 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { } }); - const newTimestamp = new Date().toISOString(); - fs.writeFileSync(timestampFilePath, newTimestamp); + const newTimestamp = new Date(); + const convertedISOTimestamp = newTimestamp.toISOString(); + fs.writeFileSync(timestampFilePath, convertedISOTimestamp); - const readableItalianTime = new Date().toLocaleString("it-IT", { - timeZone: "Europe/Rome" - }); + const readableUpdatedTimestamp = + convertTimestampToReadableFormat(newTimestamp); // eslint-disable-next-line no-console - console.log("Updated timestamp:", readableItalianTime); + console.log(`————————————————`); + // eslint-disable-next-line no-console + console.log("Updated timestamp:", readableUpdatedTimestamp); }); }); From b687939a279bc3c6cdf5b8183948c4d1ed906609 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Wed, 25 Oct 2023 10:00:48 +0200 Subject: [PATCH 06/16] Disable some typescript errors at the top of the file --- src/components/icons/generateNewIcons.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index f1103c4c..a3398c8e 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -1,3 +1,7 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable no-console */ +/* eslint-disable @typescript-eslint/restrict-plus-operands */ + /** DRAFT for an AUTOMATIC process to generate new icon components (`Icon....tsx`) from the SVG files exported from Figma. @@ -64,8 +68,8 @@ Prerequisites: */ /* -The following code was first generated by GTP-4, -then improved step by step +The following code was first generated by GTP-4 starting +from the content above, then improved step by step */ const path = require("path"); @@ -89,17 +93,14 @@ const convertTimestampToReadableFormat = timestamp => fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { if (err) { - // eslint-disable-next-line no-console console.log("Timestamp file not found."); throw err; } - // eslint-disable-next-line no-console console.log( "Last processed timestamp:", convertTimestampToReadableFormat(timestamp) ); - // eslint-disable-next-line no-console console.log(`————————————————`); fs.readdir(svgDir, (err, files) => { @@ -156,7 +157,6 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { prettier.format(componentData, { parser: "typescript" }) ); - // eslint-disable-next-line no-console console.log(`${file} → ${fileWithTsxExtension}`); } }); @@ -168,9 +168,7 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { const readableUpdatedTimestamp = convertTimestampToReadableFormat(newTimestamp); - // eslint-disable-next-line no-console console.log(`————————————————`); - // eslint-disable-next-line no-console console.log("Updated timestamp:", readableUpdatedTimestamp); }); }); From 567d4a3cb8ec4e451f6e8b53c05d14294802a644 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Wed, 25 Oct 2023 10:04:14 +0200 Subject: [PATCH 07/16] Disable TS check in the `generateNewTimestamp` --- src/components/icons/generateNewTimestamp.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/icons/generateNewTimestamp.js b/src/components/icons/generateNewTimestamp.js index 3ecaaa98..edfc06b8 100644 --- a/src/components/icons/generateNewTimestamp.js +++ b/src/components/icons/generateNewTimestamp.js @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ const fs = require("fs-extra"); const timestampFilePath = "./timestamp.txt"; From c8f240254390ef71e0b748a556e1aa0793418a6b Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Wed, 25 Oct 2023 10:35:09 +0200 Subject: [PATCH 08/16] Delete useless variable declarations --- src/components/icons/generateNewIcons.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index a3398c8e..43941a2b 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -83,13 +83,10 @@ const tsxDir = join(__dirname, "svg"); const templateFilePath = join(__dirname, "svg/_IconTemplate.tsx"); const timestampFilePath = join(__dirname, "timestamp.txt"); -const timeConfigLang = "it-IT"; -const timeConfigObj = { - timeZone: "Europe/Rome" -}; - const convertTimestampToReadableFormat = timestamp => - new Date(timestamp).toLocaleString(timeConfigLang, timeConfigObj); + new Date(timestamp).toLocaleString("it-IT", { + timeZone: "Europe/Rome" + }); fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { if (err) { From 96abf754c4a3127adeeaf106e8a6cc0447f4afab Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Thu, 26 Oct 2023 09:34:02 +0200 Subject: [PATCH 09/16] Add comment to the `_IconTemplate.tsx` file --- src/components/icons/svg/_IconTemplate.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/icons/svg/_IconTemplate.tsx b/src/components/icons/svg/_IconTemplate.tsx index 37bfdf21..73daf347 100644 --- a/src/components/icons/svg/_IconTemplate.tsx +++ b/src/components/icons/svg/_IconTemplate.tsx @@ -4,6 +4,10 @@ import React from "react"; import { Svg, Path } from "react-native-svg"; import { SVGIconProps } from "../Icon"; +// The `generateNewIcons.js`s script uses this template to generate +// the new `Icon…` component. Don't edit this file to avoid +// adding breaking changes to the process. + export const IconTemplate = ({ size, style, ...props }: SVGIconProps) => ( {/* SVGContent */} From 43cb85ef36c2be6a2370f2a754d0add101276374 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Thu, 26 Oct 2023 11:19:25 +0200 Subject: [PATCH 10/16] Improve the script with correct SVG optimisation options, edit _IconTemplate --- src/components/icons/generateNewIcons.js | 16 ++++++++++++++-- src/components/icons/svg/_IconTemplate.tsx | 4 +++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index 43941a2b..e4b51a39 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -119,7 +119,19 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { return; } - const result = optimize(data, { path: filePath }); + // Using SVGO to optimize the SVG + const result = optimize(data, { + path: filePath, + plugins: [ + "removeDimensions", + "removeRasterImages", + "removeScriptElement", + "removeViewBox" + ] + }); + // Overwrite original SVG file with optimized code + fs.writeFileSync(filePath, result.data); + const tsxData = result.data .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") /* Replace hardcoded color value with `currentColor` */ @@ -143,7 +155,7 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template - .replace("IconTemplate", file.replace(".svg", "")) + .replace(/IconTemplate/g, file.replace(".svg", "")) .replace(/\/\/.*\n/g, "") // remove lines starting with // .replace(`{/* SVGContent */}`, tsxData); diff --git a/src/components/icons/svg/_IconTemplate.tsx b/src/components/icons/svg/_IconTemplate.tsx index 73daf347..b387db0b 100644 --- a/src/components/icons/svg/_IconTemplate.tsx +++ b/src/components/icons/svg/_IconTemplate.tsx @@ -8,8 +8,10 @@ import { SVGIconProps } from "../Icon"; // the new `Icon…` component. Don't edit this file to avoid // adding breaking changes to the process. -export const IconTemplate = ({ size, style, ...props }: SVGIconProps) => ( +const IconTemplate = ({ size, style, ...props }: SVGIconProps) => ( {/* SVGContent */} ); + +export default IconTemplate; From 5b5a5e23f0ede36c57299337393f5c48f18a2229 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Thu, 26 Oct 2023 17:23:30 +0200 Subject: [PATCH 11/16] Add the first draft of the new `generateNewPictograms` file --- src/components/icons/generateNewIcons.js | 2 +- .../pictograms/generateNewPictograms.js | 184 ++++++++++++++++++ .../pictograms/svg/_PictogramTemplate.tsx | 21 ++ .../svg/originals/PictogramBleedStar.svg | 19 ++ .../svg/originals/PictogramStar.svg | 1 + src/components/pictograms/timestamp.txt | 1 + 6 files changed, 227 insertions(+), 1 deletion(-) create mode 100644 src/components/pictograms/generateNewPictograms.js create mode 100644 src/components/pictograms/svg/_PictogramTemplate.tsx create mode 100644 src/components/pictograms/svg/originals/PictogramBleedStar.svg create mode 100644 src/components/pictograms/svg/originals/PictogramStar.svg create mode 100644 src/components/pictograms/timestamp.txt diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index e4b51a39..cb56768f 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -156,7 +156,7 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template .replace(/IconTemplate/g, file.replace(".svg", "")) - .replace(/\/\/.*\n/g, "") // remove lines starting with // + .replace(/\/\/.*\n/g, "") // Remove lines starting with // .replace(`{/* SVGContent */}`, tsxData); const fileWithTsxExtension = file.replace(".svg", ".tsx"); diff --git a/src/components/pictograms/generateNewPictograms.js b/src/components/pictograms/generateNewPictograms.js new file mode 100644 index 00000000..1f894a21 --- /dev/null +++ b/src/components/pictograms/generateNewPictograms.js @@ -0,0 +1,184 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable no-console */ +/* eslint-disable @typescript-eslint/restrict-plus-operands */ + +/** +DRAFT for an AUTOMATIC process to generate new pictogram components +(`Pictogram....tsx`) from the SVG files exported from Figma. + +Prerequisites: +- The pictogram must be exported from the 240 × 240 frame +- The pictogram must be saved with the final name + - To learn more about naming conventions, please read the local README +*/ + +// STEPS: + +/** + * 1. Only process the newly added files + * + * Suggested path: + * 1. Files that need to be processed must be in the `svg/originals` folder. + * 2. Add a new file with the timestamp of the last process run. + * The file must be committed along with others. + * 3. Only files added after that timestamp value will be processed. + * 4. After the process run, update the new file with the current timestamp. + */ + +/** + * 2. Optimize SVG files with SVGO package (https://github.com/svg/svgo) + * + * Suggested path: + * 1. Add `svgo` to the `package.json` to use it as an executable + * 2. Configure it with the following parameters: + * - removeDimensions + * - removeRasterImages + * - removeScriptElement + * - removeViewBox (disabled) + * 3. Overwrite the original files + */ + +/** + * 3. Create the relative React component (with .tsx) + * + * Suggested path: + * - For every new SVG file: + * 1. Copy all the code contained in the `` tag + * 2. Use the file `_PictogramTemplate.tsx` as component template + * - Replace `PictogramTemplate` with the original SVG name + * - Remove all the comments inserted in the component file + * 3. Replace the `{SVGContent}` placeholder with the code copied + * in the step 1, replacing all the tags with the appropriate + * React ones. E.g: `path` becomes `Path` and so on… + * 4. Replace all the color values, set in hexadecimal format, with the + * correct `colorValues…` chromatic value. + * E.g: fill="#CCCCCC" -> fill="colorValues.hands" + * 5. Save a new file in the `svg` folder with the same filename + * of the relative SVG file and extension `.tsx`. + * E.g: svg/originals/PictogramProfile.svg -> svg/PictogramProfile.tsx + */ + +/* +The following code was first generated by GTP-4 starting +from the content above, then improved step by step +*/ + +const path = require("path"); +const join = path.join; +const { optimize } = require("svgo"); +const prettier = require("prettier"); +const fs = require("fs-extra"); + +const svgDir = join(__dirname, "svg/originals"); +const tsxDir = join(__dirname, "svg"); +const templateFilePath = join(__dirname, "svg/_PictogramTemplate.tsx"); +const timestampFilePath = join(__dirname, "timestamp.txt"); + +const colorMapValues = { + "#0B3EE3": "colorValues.hands", + "#AAEEEF": "colorValues.main", + "#00C5CA": "colorValues.secondary" +}; + +const convertTimestampToReadableFormat = timestamp => + new Date(timestamp).toLocaleString("it-IT", { + timeZone: "Europe/Rome" + }); + +fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { + if (err) { + console.log("Timestamp file not found."); + throw err; + } + + console.log( + "Last processed timestamp:", + convertTimestampToReadableFormat(timestamp) + ); + console.log(`————————————————`); + + fs.readdir(svgDir, (err, files) => { + if (err) { + throw err; + } + + files.forEach(file => { + const filePath = join(svgDir, file); + const fileStats = fs.statSync(filePath); + + /* Only process files with a more recent creation + date later than the timestamp value */ + if (fileStats.mtime > new Date(timestamp)) { + const data = fs.readFileSync(filePath, "utf8"); + + // Check if the file is an SVG + if (!file.endsWith(".svg")) { + return; + } + + // Using SVGO to optimize the SVG + const result = optimize(data, { + path: filePath, + plugins: [ + "removeDimensions", + "removeRasterImages", + "removeScriptElement", + "removeViewBox" + ] + }); + // Overwrite original SVG file with optimized code + fs.writeFileSync(filePath, result.data); + + const tsxData = result.data + .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") + /* Replace hardcoded color value with the relative color value, + got from `colorMapValues` */ + .replace(/fill="[^"]*"/g, match => { + const colorKey = match.slice(6, -1); + return `fill="${colorMapValues[colorKey]}"`; + }) + // /* Convert self-closing tags to Capital Case, because + // `react-native-svg` doesn't recognize them otherwise */ + // .replace( + // /<([a-z]+)([^>]*)\/>/g, + // (match, p1, p2) => + // `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2} />` + // ) + /* Convert all the remaining tags to Capital Case */ + // .replace( + // /<([a-z]+)([^>]*)>/g, + // (match, p1, p2) => + // `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2}>` + // ) + /* Convert SVG props to compatible React props */ + .replace(/fill-rule/g, "fillRule") + .replace(/clip-rule/g, "clipRule"); + + const template = fs.readFileSync(templateFilePath, "utf8"); + const componentData = template + .replace(/IconTemplate/g, file.replace(".svg", "")) + .replace(/\/\/.*\n/g, "") // Remove lines starting with // + .replace(`{/* SVGContent */}`, tsxData); + + const fileWithTsxExtension = file.replace(".svg", ".tsx"); + const tsxFilePath = join(tsxDir, fileWithTsxExtension); + fs.writeFileSync( + tsxFilePath, + prettier.format(componentData, { parser: "typescript" }) + ); + + console.log(`${file} → ${fileWithTsxExtension}`); + } + }); + + const newTimestamp = new Date(); + const convertedISOTimestamp = newTimestamp.toISOString(); + fs.writeFileSync(timestampFilePath, convertedISOTimestamp); + + const readableUpdatedTimestamp = + convertTimestampToReadableFormat(newTimestamp); + + console.log(`————————————————`); + console.log("Updated timestamp:", readableUpdatedTimestamp); + }); +}); diff --git a/src/components/pictograms/svg/_PictogramTemplate.tsx b/src/components/pictograms/svg/_PictogramTemplate.tsx new file mode 100644 index 00000000..cb4a35f8 --- /dev/null +++ b/src/components/pictograms/svg/_PictogramTemplate.tsx @@ -0,0 +1,21 @@ +import React from "react"; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore (ignore Path unused component) +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +// The `generateNewPictograms.js`s script uses this template to generate +// the new `Pictogram…` component. Don't edit this file to avoid +// adding breaking changes to the process. + +const PictogramTemplate = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + {/* SVGContent */} + +); + +export default PictogramTemplate; diff --git a/src/components/pictograms/svg/originals/PictogramBleedStar.svg b/src/components/pictograms/svg/originals/PictogramBleedStar.svg new file mode 100644 index 00000000..fd926832 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedStar.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/components/pictograms/svg/originals/PictogramStar.svg b/src/components/pictograms/svg/originals/PictogramStar.svg new file mode 100644 index 00000000..d56e9ef6 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramStar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/timestamp.txt b/src/components/pictograms/timestamp.txt new file mode 100644 index 00000000..a31b3115 --- /dev/null +++ b/src/components/pictograms/timestamp.txt @@ -0,0 +1 @@ +2023-10-26T15:21:12.732Z \ No newline at end of file From 056c59e1dc092fdc832eb4bc1558e1df7c50d348 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Thu, 26 Oct 2023 17:26:41 +0200 Subject: [PATCH 12/16] Add correct `colorValues` --- src/components/pictograms/generateNewPictograms.js | 2 +- src/components/pictograms/timestamp.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/pictograms/generateNewPictograms.js b/src/components/pictograms/generateNewPictograms.js index 1f894a21..992d3fed 100644 --- a/src/components/pictograms/generateNewPictograms.js +++ b/src/components/pictograms/generateNewPictograms.js @@ -135,7 +135,7 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { got from `colorMapValues` */ .replace(/fill="[^"]*"/g, match => { const colorKey = match.slice(6, -1); - return `fill="${colorMapValues[colorKey]}"`; + return `fill={${colorMapValues[colorKey]}}`; }) // /* Convert self-closing tags to Capital Case, because // `react-native-svg` doesn't recognize them otherwise */ diff --git a/src/components/pictograms/timestamp.txt b/src/components/pictograms/timestamp.txt index a31b3115..fc4e6370 100644 --- a/src/components/pictograms/timestamp.txt +++ b/src/components/pictograms/timestamp.txt @@ -1 +1 @@ -2023-10-26T15:21:12.732Z \ No newline at end of file +2023-10-24T12:57:21.236Z \ No newline at end of file From e383b6e116449218020e15fd2ece8417196bd00d Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Fri, 27 Oct 2023 15:55:30 +0200 Subject: [PATCH 13/16] Improve the `generateNewPictograms` script using `svgr` --- example/src/pages/Pictograms.tsx | 1 - package.json | 3 + src/components/pictograms/Pictogram.tsx | 9 +- .../pictograms/generateNewPictograms.js | 62 +++--- .../pictograms/svg/PictogramBleedStar.tsx | 34 +++ .../pictograms/svg/PictogramStar.tsx | 30 +++ .../svg/originals/PictogramBleedStar.svg | 20 +- src/components/pictograms/timestamp.txt | 2 +- yarn.lock | 200 ++++++++++++++++-- 9 files changed, 293 insertions(+), 68 deletions(-) create mode 100644 src/components/pictograms/svg/PictogramBleedStar.tsx create mode 100644 src/components/pictograms/svg/PictogramStar.tsx diff --git a/example/src/pages/Pictograms.tsx b/example/src/pages/Pictograms.tsx index da49f7bd..9dad0a4c 100644 --- a/example/src/pages/Pictograms.tsx +++ b/example/src/pages/Pictograms.tsx @@ -108,7 +108,6 @@ export const Pictograms = () => { size="small" image={ diff --git a/package.json b/package.json index 643b861f..13259ee9 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,9 @@ "@storybook/react": "^7.4.0", "@storybook/react-webpack5": "^7.4.0", "@storybook/testing-library": "^0.2.0", + "@svgr/core": "^8.1.0", + "@svgr/plugin-jsx": "^8.1.0", + "@svgr/plugin-svgo": "^8.1.0", "@types/jest": "^28.1.2", "@types/lodash": "^4.14.157", "@types/react": "~17.0.38", diff --git a/src/components/pictograms/Pictogram.tsx b/src/components/pictograms/Pictogram.tsx index fe09d1e6..98c54516 100644 --- a/src/components/pictograms/Pictogram.tsx +++ b/src/components/pictograms/Pictogram.tsx @@ -79,6 +79,8 @@ import PictogramBleedCie from "./svg/PictogramBleedCie"; import PictogramBleedCameraRequest from "./svg/PictogramBleedCameraRequest"; import PictogramBleedCameraDenied from "./svg/PictogramBleedCameraDenied"; import PictogramBleedNotification from "./svg/PictogramBleedNotification"; +import PictogramStar from "./svg/PictogramStar"; +import PictogramBleedStar from "./svg/PictogramBleedStar"; export const IOPictograms = { // Start legacy pictograms // @@ -137,6 +139,7 @@ export const IOPictograms = { time: PictogramTime, passcode: PictogramPasscode, notification: PictogramNotification, + star: PictogramStar, // Start Objects Pictogram ibanCard: PictogramObjIbanCard, followMessage: PictogramObjFollowMessage, @@ -231,7 +234,8 @@ export type IOPictogramsBleed = Extract< | "cie" | "cameraRequest" | "cameraDenied" - | "notification", + | "notification" + | "star", IOPictograms >; @@ -247,7 +251,8 @@ export const IOPictogramsBleed: { cie: PictogramBleedCie, cameraRequest: PictogramBleedCameraRequest, cameraDenied: PictogramBleedCameraDenied, - notification: PictogramBleedNotification + notification: PictogramBleedNotification, + star: PictogramBleedStar }; export const PictogramBleed = ({ diff --git a/src/components/pictograms/generateNewPictograms.js b/src/components/pictograms/generateNewPictograms.js index 992d3fed..0808ede7 100644 --- a/src/components/pictograms/generateNewPictograms.js +++ b/src/components/pictograms/generateNewPictograms.js @@ -68,6 +68,7 @@ const join = path.join; const { optimize } = require("svgo"); const prettier = require("prettier"); const fs = require("fs-extra"); +const { transform } = require("@svgr/core"); const svgDir = join(__dirname, "svg/originals"); const tsxDir = join(__dirname, "svg"); @@ -75,9 +76,9 @@ const templateFilePath = join(__dirname, "svg/_PictogramTemplate.tsx"); const timestampFilePath = join(__dirname, "timestamp.txt"); const colorMapValues = { - "#0B3EE3": "colorValues.hands", - "#AAEEEF": "colorValues.main", - "#00C5CA": "colorValues.secondary" + "#0B3EE3": "{colorValues.hands}", + "#AAEEEF": "{colorValues.main}", + "#00C5CA": "{colorValues.secondary}" }; const convertTimestampToReadableFormat = timestamp => @@ -123,43 +124,44 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { "removeDimensions", "removeRasterImages", "removeScriptElement", - "removeViewBox" + "removeUselessDefs" ] }); // Overwrite original SVG file with optimized code fs.writeFileSync(filePath, result.data); - const tsxData = result.data - .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") - /* Replace hardcoded color value with the relative color value, - got from `colorMapValues` */ - .replace(/fill="[^"]*"/g, match => { - const colorKey = match.slice(6, -1); - return `fill={${colorMapValues[colorKey]}}`; - }) - // /* Convert self-closing tags to Capital Case, because - // `react-native-svg` doesn't recognize them otherwise */ - // .replace( - // /<([a-z]+)([^>]*)\/>/g, - // (match, p1, p2) => - // `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2} />` - // ) - /* Convert all the remaining tags to Capital Case */ - // .replace( - // /<([a-z]+)([^>]*)>/g, - // (match, p1, p2) => - // `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2}>` - // ) - /* Convert SVG props to compatible React props */ - .replace(/fill-rule/g, "fillRule") - .replace(/clip-rule/g, "clipRule"); + // Convert SVG to JSX using `svgr` + const jsxCode = transform.sync(result.data, { + // Optimize SVG code using SVGO + svgo: true, + svgoConfig: { + removeRasterImages: true, + removeScriptElement: true, + removeUselessDefs: true + }, + // Transform tags in Capital Case for React Native + native: true, + // Remove `width` and `height` attrs + dimensions: false, + /* Replace the hardcoded color value with one + obtained from `colorMapValues`. */ + replaceAttrValues: colorMapValues, + /* Prettify the result */ + plugins: ["@svgr/plugin-jsx"] + }); + + // Extract only the Path tags from the JSX code + const pathTagRegex = /]*\/>/g; + const pathTags = jsxCode.match(pathTagRegex); + const processedJsxCode = pathTags.join(""); const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template - .replace(/IconTemplate/g, file.replace(".svg", "")) + .replace(/PictogramTemplate/g, file.replace(".svg", "")) .replace(/\/\/.*\n/g, "") // Remove lines starting with // - .replace(`{/* SVGContent */}`, tsxData); + .replace(`{/* SVGContent */}`, processedJsxCode); + // Save the file with the same filename with `.tsx` extension const fileWithTsxExtension = file.replace(".svg", ".tsx"); const tsxFilePath = join(tsxDir, fileWithTsxExtension); fs.writeFileSync( diff --git a/src/components/pictograms/svg/PictogramBleedStar.tsx b/src/components/pictograms/svg/PictogramBleedStar.tsx new file mode 100644 index 00000000..2ae006b0 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedStar.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedStar = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + +); + +export default PictogramBleedStar; diff --git a/src/components/pictograms/svg/PictogramStar.tsx b/src/components/pictograms/svg/PictogramStar.tsx new file mode 100644 index 00000000..5312d634 --- /dev/null +++ b/src/components/pictograms/svg/PictogramStar.tsx @@ -0,0 +1,30 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramStar = ({ size, colorValues, ...props }: SVGPictogramProps) => ( + + + + + + + +); + +export default PictogramStar; diff --git a/src/components/pictograms/svg/originals/PictogramBleedStar.svg b/src/components/pictograms/svg/originals/PictogramBleedStar.svg index fd926832..a167984e 100644 --- a/src/components/pictograms/svg/originals/PictogramBleedStar.svg +++ b/src/components/pictograms/svg/originals/PictogramBleedStar.svg @@ -1,19 +1 @@ - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/components/pictograms/timestamp.txt b/src/components/pictograms/timestamp.txt index fc4e6370..170505ca 100644 --- a/src/components/pictograms/timestamp.txt +++ b/src/components/pictograms/timestamp.txt @@ -1 +1 @@ -2023-10-24T12:57:21.236Z \ No newline at end of file +2023-10-27T13:44:03.766Z \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index c490d155..699e9ee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,6 +63,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.21.3": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/eslint-parser@^7.18.2": version "7.22.11" resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz#cceb8c7989c241a16dd14e12a6cd725618f3f58b" @@ -117,6 +138,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.11" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz#4078686740459eeb4af3494a273ac09148dfb213" @@ -192,6 +224,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" @@ -210,6 +249,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -276,6 +326,11 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" @@ -299,6 +354,15 @@ "@babel/traverse" "^7.22.11" "@babel/types" "^7.22.11" +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": version "7.22.13" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16" @@ -1219,7 +1283,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.0", "@babel/traverse@^7.22.11", "@babel/traverse@^7.22.8", "@babel/traverse@^7.7.4": +"@babel/traverse@^7.1.6", "@babel/traverse@^7.20.0", "@babel/traverse@^7.22.11", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.7.4": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -1244,7 +1308,7 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" -"@babel/types@^7.22.15", "@babel/types@^7.23.0": +"@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== @@ -3620,6 +3684,98 @@ "@types/react" "^16.14.34" file-system-cache "2.3.0" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + "@swc/core-darwin-arm64@1.3.80": version "1.3.80" resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.80.tgz#18be1879ffc0a871a7397ccccf8a80278a794d60" @@ -6198,6 +6354,16 @@ cosmiconfig@^8.0.0: parse-json "^5.0.0" path-type "^4.0.0" +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + create-react-class@^15.7.0: version "15.7.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" @@ -6469,7 +6635,7 @@ deepmerge@^3.2.0: resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -6911,7 +7077,7 @@ entities@^2.0.0: resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0: +entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -8039,7 +8205,7 @@ fs-constants@^1.0.0: resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@11.1.1, fs-extra@^11.0.0, fs-extra@^11.1.0: +fs-extra@11.1.1, fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: version "11.1.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== @@ -8057,15 +8223,6 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -8778,7 +8935,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -13644,6 +13801,14 @@ smart-buffer@^4.2.0: resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -14098,6 +14263,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + svgo@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" From eb13285935079847680ab52e5bb821717dac188b Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Fri, 27 Oct 2023 16:57:22 +0200 Subject: [PATCH 14/16] Update `generateNewIcons` with `svgr`, add new icons --- src/components/icons/Icon.tsx | 6 +++ src/components/icons/generateNewIcons.js | 50 +++++++++++-------- src/components/icons/svg/IconFingerprint.tsx | 16 ++++++ src/components/icons/svg/IconFolder.tsx | 16 ++++++ src/components/icons/svg/IconInstitution.tsx | 4 +- src/components/icons/svg/IconReceiptOn.tsx | 16 ++++++ .../icons/svg/originals/IconFingerprint.svg | 4 +- .../icons/svg/originals/IconFolder.svg | 4 +- .../icons/svg/originals/IconInstitution.svg | 4 +- .../icons/svg/originals/IconReceiptOn.svg | 4 +- src/components/icons/timestamp.txt | 2 +- 11 files changed, 90 insertions(+), 36 deletions(-) create mode 100644 src/components/icons/svg/IconFingerprint.tsx create mode 100644 src/components/icons/svg/IconFolder.tsx create mode 100644 src/components/icons/svg/IconReceiptOn.tsx diff --git a/src/components/icons/Icon.tsx b/src/components/icons/Icon.tsx index 70746268..16e3ae67 100644 --- a/src/components/icons/Icon.tsx +++ b/src/components/icons/Icon.tsx @@ -160,6 +160,9 @@ import IconHealthCard from "./svg/IconHealthCard"; import IconDocPaymentCode from "./svg/IconDocPaymentCode"; import IconNotes from "./svg/IconNotes"; import IconEntityCode from "./svg/IconEntityCode"; +import IconFolder from "./svg/IconFolder"; +import IconReceiptOn from "./svg/IconReceiptOn"; +import IconFingerprint from "./svg/IconFingerprint"; export const IOIcons = { archive: IconArchive, @@ -206,6 +209,8 @@ export const IOIcons = { docPaymentCode: IconDocPaymentCode, docAttach: IconDocumentAttachment, docAttachPDF: IconDocumentAttachmentPDF, + folder: IconFolder, + receiptOn: IconReceiptOn, notes: IconNotes, attachment: IconAttachment, add: IconAdd, @@ -246,6 +251,7 @@ export const IOIcons = { starFilled: IconStarFilled, starEmpty: IconStarEmpty, switchOff: IconSwitchOff, + fingerprint: IconFingerprint, device: IconDevice, contactless: IconContactless, notification: IconNotification, diff --git a/src/components/icons/generateNewIcons.js b/src/components/icons/generateNewIcons.js index cb56768f..dffd18ef 100644 --- a/src/components/icons/generateNewIcons.js +++ b/src/components/icons/generateNewIcons.js @@ -77,6 +77,7 @@ const join = path.join; const { optimize } = require("svgo"); const prettier = require("prettier"); const fs = require("fs-extra"); +const { transform } = require("@svgr/core"); const svgDir = join(__dirname, "svg/originals"); const tsxDir = join(__dirname, "svg"); @@ -132,32 +133,39 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { // Overwrite original SVG file with optimized code fs.writeFileSync(filePath, result.data); - const tsxData = result.data - .replace(/]*>((.|[\n\r])*)<\/svg>/im, "$1") - /* Replace hardcoded color value with `currentColor` */ - .replace(/fill="[^"]*"/g, 'fill="currentColor"') - /* Convert self-closing tags to Capital Case, because - `react-native-svg` doesn't recognize them otherwise */ - .replace( - /<([a-z]+)([^>]*)\/>/g, - (match, p1, p2) => - `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2} />` - ) - /* Convert all the remaining tags to Capital Case */ - .replace( - /<([a-z]+)([^>]*)>/g, - (match, p1, p2) => - `<${p1.charAt(0).toUpperCase() + p1.slice(1)}${p2}>` - ) - /* Convert SVG props to compatible React props */ - .replace(/fill-rule/g, "fillRule") - .replace(/clip-rule/g, "clipRule"); + // Convert SVG to JSX using `svgr` + const jsxCode = transform.sync(result.data, { + // Optimize SVG code using SVGO + svgo: true, + svgoConfig: { + removeRasterImages: true, + removeScriptElement: true, + removeUselessDefs: true + }, + // Transform tags in Capital Case for React Native + native: true, + // Remove `width` and `height` attrs + dimensions: false, + /* Prettify the result */ + plugins: ["@svgr/plugin-jsx"] + }); + + /* Replace hardcoded color value with `currentColor` */ + const jsxCodeWithoutHardcodedColors = jsxCode.replace( + /fill="[^"]*"/g, + 'fill="currentColor"' + ); + + // Extract only the Path tags from the JSX code + const pathTagRegex = /]*\/>/g; + const pathTags = jsxCodeWithoutHardcodedColors.match(pathTagRegex); + const jsxCodeWithPathOnly = pathTags.join(""); const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template .replace(/IconTemplate/g, file.replace(".svg", "")) .replace(/\/\/.*\n/g, "") // Remove lines starting with // - .replace(`{/* SVGContent */}`, tsxData); + .replace(`{/* SVGContent */}`, jsxCodeWithPathOnly); const fileWithTsxExtension = file.replace(".svg", ".tsx"); const tsxFilePath = join(tsxDir, fileWithTsxExtension); diff --git a/src/components/icons/svg/IconFingerprint.tsx b/src/components/icons/svg/IconFingerprint.tsx new file mode 100644 index 00000000..5baec2b6 --- /dev/null +++ b/src/components/icons/svg/IconFingerprint.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGIconProps } from "../Icon"; + +const IconFingerprint = ({ size, style, ...props }: SVGIconProps) => ( + + + +); + +export default IconFingerprint; diff --git a/src/components/icons/svg/IconFolder.tsx b/src/components/icons/svg/IconFolder.tsx new file mode 100644 index 00000000..a1616f40 --- /dev/null +++ b/src/components/icons/svg/IconFolder.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGIconProps } from "../Icon"; + +const IconFolder = ({ size, style, ...props }: SVGIconProps) => ( + + + +); + +export default IconFolder; diff --git a/src/components/icons/svg/IconInstitution.tsx b/src/components/icons/svg/IconInstitution.tsx index d54bab59..c832fcb8 100644 --- a/src/components/icons/svg/IconInstitution.tsx +++ b/src/components/icons/svg/IconInstitution.tsx @@ -5,10 +5,10 @@ import { SVGIconProps } from "../Icon"; const IconInstitution = ({ size, style, ...props }: SVGIconProps) => ( ); diff --git a/src/components/icons/svg/IconReceiptOn.tsx b/src/components/icons/svg/IconReceiptOn.tsx new file mode 100644 index 00000000..ff9bfc0c --- /dev/null +++ b/src/components/icons/svg/IconReceiptOn.tsx @@ -0,0 +1,16 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGIconProps } from "../Icon"; + +const IconReceiptOn = ({ size, style, ...props }: SVGIconProps) => ( + + + +); + +export default IconReceiptOn; diff --git a/src/components/icons/svg/originals/IconFingerprint.svg b/src/components/icons/svg/originals/IconFingerprint.svg index a8995eaa..a4b50cf1 100644 --- a/src/components/icons/svg/originals/IconFingerprint.svg +++ b/src/components/icons/svg/originals/IconFingerprint.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/src/components/icons/svg/originals/IconFolder.svg b/src/components/icons/svg/originals/IconFolder.svg index f7b70977..e9127b7a 100644 --- a/src/components/icons/svg/originals/IconFolder.svg +++ b/src/components/icons/svg/originals/IconFolder.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/src/components/icons/svg/originals/IconInstitution.svg b/src/components/icons/svg/originals/IconInstitution.svg index 02656073..aa8860d6 100644 --- a/src/components/icons/svg/originals/IconInstitution.svg +++ b/src/components/icons/svg/originals/IconInstitution.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/src/components/icons/svg/originals/IconReceiptOn.svg b/src/components/icons/svg/originals/IconReceiptOn.svg index b47ef390..79363473 100644 --- a/src/components/icons/svg/originals/IconReceiptOn.svg +++ b/src/components/icons/svg/originals/IconReceiptOn.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/src/components/icons/timestamp.txt b/src/components/icons/timestamp.txt index fc4e6370..f6e65da9 100644 --- a/src/components/icons/timestamp.txt +++ b/src/components/icons/timestamp.txt @@ -1 +1 @@ -2023-10-24T12:57:21.236Z \ No newline at end of file +2023-10-27T14:50:30.520Z \ No newline at end of file From 09d6e894778aea91b5360fca531576b321ac60ae Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Fri, 27 Oct 2023 16:58:33 +0200 Subject: [PATCH 15/16] Update variable name to make it clearer --- src/components/pictograms/generateNewPictograms.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/pictograms/generateNewPictograms.js b/src/components/pictograms/generateNewPictograms.js index 0808ede7..e537c965 100644 --- a/src/components/pictograms/generateNewPictograms.js +++ b/src/components/pictograms/generateNewPictograms.js @@ -153,13 +153,13 @@ fs.readFile(timestampFilePath, "utf8", (err, timestamp) => { // Extract only the Path tags from the JSX code const pathTagRegex = /]*\/>/g; const pathTags = jsxCode.match(pathTagRegex); - const processedJsxCode = pathTags.join(""); + const jsxCodeWithPathOnly = pathTags.join(""); const template = fs.readFileSync(templateFilePath, "utf8"); const componentData = template .replace(/PictogramTemplate/g, file.replace(".svg", "")) .replace(/\/\/.*\n/g, "") // Remove lines starting with // - .replace(`{/* SVGContent */}`, processedJsxCode); + .replace(`{/* SVGContent */}`, jsxCodeWithPathOnly); // Save the file with the same filename with `.tsx` extension const fileWithTsxExtension = file.replace(".svg", ".tsx"); From 19a8b27aa4b72ef1f0e34bed9120e108364212d3 Mon Sep 17 00:00:00 2001 From: Damiano Plebani Date: Mon, 30 Oct 2023 15:00:50 +0100 Subject: [PATCH 16/16] Add new pictograms (default variants and bleed ones, if present) --- src/components/pictograms/Pictogram.tsx | 102 +++++++++++++++++- .../pictograms/svg/PictogramActivate.tsx | 54 ++++++++++ .../pictograms/svg/PictogramAttachment.tsx | 38 +++++++ .../svg/PictogramBleedAccessDenied.tsx | 62 +++++++++++ .../svg/PictogramBleedAttention.tsx | 50 +++++++++ .../pictograms/svg/PictogramBleedCardAdd.tsx | 50 +++++++++ .../svg/PictogramBleedCardFavourite.tsx | 46 ++++++++ .../svg/PictogramBleedCardIssue.tsx | 42 ++++++++ .../svg/PictogramBleedCardQuestion.tsx | 42 ++++++++ .../pictograms/svg/PictogramBleedDoc.tsx | 48 +++++++++ .../pictograms/svg/PictogramBleedEmpty.tsx | 58 ++++++++++ .../svg/PictogramBleedFatalError.tsx | 50 +++++++++ .../pictograms/svg/PictogramBleedFeature.tsx | 28 +++-- .../pictograms/svg/PictogramBleedFeedback.tsx | 22 +++- .../pictograms/svg/PictogramBleedIdea.tsx | 42 ++++++++ .../pictograms/svg/PictogramBleedIdentity.tsx | 54 ++++++++++ .../svg/PictogramBleedIdentityAdd.tsx | 58 ++++++++++ .../svg/PictogramBleedIdentityCheck.tsx | 58 ++++++++++ .../svg/PictogramBleedIdentityRefresh.tsx | 58 ++++++++++ .../pictograms/svg/PictogramBleedMessage.tsx | 54 ++++++++++ .../pictograms/svg/PictogramBleedPasscode.tsx | 50 +++++++++ .../pictograms/svg/PictogramBleedPending.tsx | 38 +++++++ .../pictograms/svg/PictogramBleedSearch.tsx | 50 +++++++++ .../svg/PictogramBleedStopSecurity.tsx | 66 ++++++++++++ .../pictograms/svg/PictogramBleedSuccess.tsx | 42 ++++++++ .../pictograms/svg/PictogramBleedTime.tsx | 58 ++++++++++ .../pictograms/svg/PictogramBleedTiming.tsx | 46 ++++++++ .../pictograms/svg/PictogramCardAdd.tsx | 50 +++++++++ .../pictograms/svg/PictogramCardFavourite.tsx | 46 ++++++++ .../pictograms/svg/PictogramCardIssue.tsx | 42 ++++++++ .../pictograms/svg/PictogramCardQuestion.tsx | 42 ++++++++ .../pictograms/svg/PictogramDoc.tsx | 38 +++++++ .../pictograms/svg/PictogramGenericError.tsx | 58 ++++++++++ .../pictograms/svg/PictogramIdea.tsx | 38 +++++++ .../pictograms/svg/PictogramMessage.tsx | 54 ++++++++++ .../pictograms/svg/PictogramMoneyCheck.tsx | 54 ++++++++++ .../svg/PictogramNFCScanAndroid.tsx | 66 ++++++++++++ .../pictograms/svg/PictogramNFCScaniOS.tsx | 66 ++++++++++++ .../pictograms/svg/PictogramPending.tsx | 38 +++++++ .../pictograms/svg/PictogramReactivate.tsx | 54 ++++++++++ .../pictograms/svg/PictogramSearchLens.tsx | 50 +++++++++ .../pictograms/svg/PictogramTiming.tsx | 46 ++++++++ .../svg/originals/PictogramActivate.svg | 1 + .../svg/originals/PictogramAttachment.svg | 1 + .../originals/PictogramBleedAccessDenied.svg | 1 + .../svg/originals/PictogramBleedAttention.svg | 1 + .../svg/originals/PictogramBleedCardAdd.svg | 1 + .../originals/PictogramBleedCardFavourite.svg | 1 + .../svg/originals/PictogramBleedCardIssue.svg | 1 + .../originals/PictogramBleedCardQuestion.svg | 1 + .../svg/originals/PictogramBleedDoc.svg | 1 + .../svg/originals/PictogramBleedEmpty.svg | 1 + .../originals/PictogramBleedFatalError.svg | 1 + .../svg/originals/PictogramBleedFeature.svg | 35 +----- .../svg/originals/PictogramBleedFeedback.svg | 23 +--- .../svg/originals/PictogramBleedIdea.svg | 1 + .../svg/originals/PictogramBleedIdentity.svg | 1 + .../originals/PictogramBleedIdentityAdd.svg | 1 + .../originals/PictogramBleedIdentityCheck.svg | 1 + .../PictogramBleedIdentityRefresh.svg | 1 + .../svg/originals/PictogramBleedMessage.svg | 1 + .../svg/originals/PictogramBleedPasscode.svg | 1 + .../svg/originals/PictogramBleedPending.svg | 1 + .../svg/originals/PictogramBleedSearch.svg | 1 + .../originals/PictogramBleedStopSecurity.svg | 1 + .../svg/originals/PictogramBleedSuccess.svg | 1 + .../svg/originals/PictogramBleedTime.svg | 1 + .../svg/originals/PictogramBleedTiming.svg | 1 + .../svg/originals/PictogramCardAdd.svg | 1 + .../svg/originals/PictogramCardFavourite.svg | 1 + .../svg/originals/PictogramCardIssue.svg | 1 + .../svg/originals/PictogramCardQuestion.svg | 1 + .../pictograms/svg/originals/PictogramDoc.svg | 1 + .../svg/originals/PictogramGenericError.svg | 1 + .../svg/originals/PictogramIdea.svg | 1 + .../svg/originals/PictogramMessage.svg | 1 + .../svg/originals/PictogramMoneyCheck.svg | 1 + .../svg/originals/PictogramNFCScanAndroid.svg | 1 + .../svg/originals/PictogramNFCScaniOS.svg | 1 + .../svg/originals/PictogramPending.svg | 1 + .../svg/originals/PictogramReactivate.svg | 1 + .../svg/originals/PictogramSearchLens.svg | 1 + .../svg/originals/PictogramTiming.svg | 1 + src/components/pictograms/timestamp.txt | 2 +- 84 files changed, 2135 insertions(+), 72 deletions(-) create mode 100644 src/components/pictograms/svg/PictogramActivate.tsx create mode 100644 src/components/pictograms/svg/PictogramAttachment.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedAccessDenied.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedAttention.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedCardAdd.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedCardFavourite.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedCardIssue.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedCardQuestion.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedDoc.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedEmpty.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedFatalError.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedIdea.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedIdentity.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedIdentityAdd.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedIdentityCheck.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedIdentityRefresh.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedMessage.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedPasscode.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedPending.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedSearch.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedStopSecurity.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedSuccess.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedTime.tsx create mode 100644 src/components/pictograms/svg/PictogramBleedTiming.tsx create mode 100644 src/components/pictograms/svg/PictogramCardAdd.tsx create mode 100644 src/components/pictograms/svg/PictogramCardFavourite.tsx create mode 100644 src/components/pictograms/svg/PictogramCardIssue.tsx create mode 100644 src/components/pictograms/svg/PictogramCardQuestion.tsx create mode 100644 src/components/pictograms/svg/PictogramDoc.tsx create mode 100644 src/components/pictograms/svg/PictogramGenericError.tsx create mode 100644 src/components/pictograms/svg/PictogramIdea.tsx create mode 100644 src/components/pictograms/svg/PictogramMessage.tsx create mode 100644 src/components/pictograms/svg/PictogramMoneyCheck.tsx create mode 100644 src/components/pictograms/svg/PictogramNFCScanAndroid.tsx create mode 100644 src/components/pictograms/svg/PictogramNFCScaniOS.tsx create mode 100644 src/components/pictograms/svg/PictogramPending.tsx create mode 100644 src/components/pictograms/svg/PictogramReactivate.tsx create mode 100644 src/components/pictograms/svg/PictogramSearchLens.tsx create mode 100644 src/components/pictograms/svg/PictogramTiming.tsx create mode 100644 src/components/pictograms/svg/originals/PictogramActivate.svg create mode 100644 src/components/pictograms/svg/originals/PictogramAttachment.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedAccessDenied.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedAttention.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedCardAdd.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedCardFavourite.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedCardIssue.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedCardQuestion.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedDoc.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedEmpty.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedFatalError.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedIdea.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedIdentity.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedIdentityAdd.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedIdentityCheck.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedIdentityRefresh.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedMessage.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedPasscode.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedPending.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedSearch.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedStopSecurity.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedSuccess.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedTime.svg create mode 100644 src/components/pictograms/svg/originals/PictogramBleedTiming.svg create mode 100644 src/components/pictograms/svg/originals/PictogramCardAdd.svg create mode 100644 src/components/pictograms/svg/originals/PictogramCardFavourite.svg create mode 100644 src/components/pictograms/svg/originals/PictogramCardIssue.svg create mode 100644 src/components/pictograms/svg/originals/PictogramCardQuestion.svg create mode 100644 src/components/pictograms/svg/originals/PictogramDoc.svg create mode 100644 src/components/pictograms/svg/originals/PictogramGenericError.svg create mode 100644 src/components/pictograms/svg/originals/PictogramIdea.svg create mode 100644 src/components/pictograms/svg/originals/PictogramMessage.svg create mode 100644 src/components/pictograms/svg/originals/PictogramMoneyCheck.svg create mode 100644 src/components/pictograms/svg/originals/PictogramNFCScanAndroid.svg create mode 100644 src/components/pictograms/svg/originals/PictogramNFCScaniOS.svg create mode 100644 src/components/pictograms/svg/originals/PictogramPending.svg create mode 100644 src/components/pictograms/svg/originals/PictogramReactivate.svg create mode 100644 src/components/pictograms/svg/originals/PictogramSearchLens.svg create mode 100644 src/components/pictograms/svg/originals/PictogramTiming.svg diff --git a/src/components/pictograms/Pictogram.tsx b/src/components/pictograms/Pictogram.tsx index 98c54516..3f72ab8e 100644 --- a/src/components/pictograms/Pictogram.tsx +++ b/src/components/pictograms/Pictogram.tsx @@ -81,6 +81,44 @@ import PictogramBleedCameraDenied from "./svg/PictogramBleedCameraDenied"; import PictogramBleedNotification from "./svg/PictogramBleedNotification"; import PictogramStar from "./svg/PictogramStar"; import PictogramBleedStar from "./svg/PictogramBleedStar"; +import PictogramBleedEmpty from "./svg/PictogramBleedEmpty"; +import PictogramBleedAttention from "./svg/PictogramBleedAttention"; +import PictogramBleedSuccess from "./svg/PictogramBleedSuccess"; +import PictogramBleedFatalError from "./svg/PictogramBleedFatalError"; +import PictogramBleedIdentity from "./svg/PictogramBleedIdentity"; +import PictogramBleedIdentityAdd from "./svg/PictogramBleedIdentityAdd"; +import PictogramBleedIdentityCheck from "./svg/PictogramBleedIdentityCheck"; +import PictogramBleedIdentityRefresh from "./svg/PictogramBleedIdentityRefresh"; +import PictogramBleedAccessDenied from "./svg/PictogramBleedAccessDenied"; +import PictogramBleedStopSecurity from "./svg/PictogramBleedStopSecurity"; +import PictogramBleedTime from "./svg/PictogramBleedTime"; +import PictogramBleedPasscode from "./svg/PictogramBleedPasscode"; +import PictogramTiming from "./svg/PictogramTiming"; +import PictogramBleedTiming from "./svg/PictogramBleedTiming"; +import PictogramCardIssue from "./svg/PictogramCardIssue"; +import PictogramCardQuestion from "./svg/PictogramCardQuestion"; +import PictogramCardFavourite from "./svg/PictogramCardFavourite"; +import PictogramCardAdd from "./svg/PictogramCardAdd"; +import PictogramBleedCardAdd from "./svg/PictogramBleedCardAdd"; +import PictogramBleedCardFavourite from "./svg/PictogramBleedCardFavourite"; +import PictogramBleedCardQuestion from "./svg/PictogramBleedCardQuestion"; +import PictogramBleedCardIssue from "./svg/PictogramBleedCardIssue"; +import PictogramSearchLens from "./svg/PictogramSearchLens"; +import PictogramBleedSearch from "./svg/PictogramBleedSearch"; +import PictogramBleedDoc from "./svg/PictogramBleedDoc"; +import PictogramDoc from "./svg/PictogramDoc"; +import PictogramPending from "./svg/PictogramPending"; +import PictogramBleedPending from "./svg/PictogramBleedPending"; +import PictogramMessage from "./svg/PictogramMessage"; +import PictogramBleedMessage from "./svg/PictogramBleedMessage"; +import PictogramIdea from "./svg/PictogramIdea"; +import PictogramBleedIdea from "./svg/PictogramBleedIdea"; +import PictogramMoneyCheck from "./svg/PictogramMoneyCheck"; +import PictogramReactivate from "./svg/PictogramReactivate"; +import PictogramActivate from "./svg/PictogramActivate"; +import PictogramNFCScanAndroid from "./svg/PictogramNFCScanAndroid"; +import PictogramNFCScaniOS from "./svg/PictogramNFCScaniOS"; +import PictogramAttachment from "./svg/PictogramAttachment"; export const IOPictograms = { // Start legacy pictograms // @@ -118,9 +156,11 @@ export const IOPictograms = { feature: PictogramFeature, charity: PictogramCharity, attention: PictogramAttention, + message: PictogramMessage, emptyArchive: PictogramEmptyArchive, umbrellaNew: PictogramUmbrellaNew, feedback: PictogramFeedback, + idea: PictogramIdea, cameraRequest: PictogramCameraRequest, cameraDenied: PictogramCameraDenied, success: PictogramSuccess, @@ -136,10 +176,24 @@ export const IOPictograms = { stopSecurity: PictogramStopSecurity, security: PictogramSecurity, cie: PictogramCie, + pending: PictogramPending, time: PictogramTime, + timing: PictogramTiming, + searchLens: PictogramSearchLens, passcode: PictogramPasscode, notification: PictogramNotification, star: PictogramStar, + doc: PictogramDoc, + cardAdd: PictogramCardAdd, + cardFavourite: PictogramCardFavourite, + cardQuestion: PictogramCardQuestion, + cardIssue: PictogramCardIssue, + moneyCheck: PictogramMoneyCheck, + reactivate: PictogramReactivate, + activate: PictogramActivate, + nfcScanAndroid: PictogramNFCScanAndroid, + nfcScaniOS: PictogramNFCScaniOS, + attachment: PictogramAttachment, // Start Objects Pictogram ibanCard: PictogramObjIbanCard, followMessage: PictogramObjFollowMessage, @@ -225,34 +279,78 @@ export const Pictogram = ({ */ export type IOPictogramsBleed = Extract< + | "empty" | "charity" + | "attention" + | "message" | "help" | "feedback" + | "idea" | "itWallet" | "security" | "feature" | "cie" + | "identity" + | "identityAdd" + | "identityCheck" + | "identityRefresh" | "cameraRequest" | "cameraDenied" + | "cardAdd" + | "cardFavourite" + | "cardQuestion" + | "cardIssue" + | "accessDenied" + | "stopSecurity" + | "time" + | "pending" + | "timing" + | "searchLens" + | "passcode" + | "success" + | "fatalError" | "notification" - | "star", + | "star" + | "doc", IOPictograms >; export const IOPictogramsBleed: { [key in IOPictogramsBleed]: ({ size }: SVGPictogramProps) => JSX.Element; } = { + empty: PictogramBleedEmpty, charity: PictogramBleedCharity, help: PictogramBleedHelp, + attention: PictogramBleedAttention, + message: PictogramBleedMessage, feedback: PictogramBleedFeedback, + idea: PictogramBleedIdea, itWallet: PictogramBleedITWallet, security: PictogramBleedSecurity, feature: PictogramBleedFeature, cie: PictogramBleedCie, + identity: PictogramBleedIdentity, + identityAdd: PictogramBleedIdentityAdd, + identityCheck: PictogramBleedIdentityCheck, + identityRefresh: PictogramBleedIdentityRefresh, cameraRequest: PictogramBleedCameraRequest, cameraDenied: PictogramBleedCameraDenied, + cardAdd: PictogramBleedCardAdd, + cardFavourite: PictogramBleedCardFavourite, + cardQuestion: PictogramBleedCardQuestion, + cardIssue: PictogramBleedCardIssue, + accessDenied: PictogramBleedAccessDenied, + stopSecurity: PictogramBleedStopSecurity, + time: PictogramBleedTime, + pending: PictogramBleedPending, + timing: PictogramBleedTiming, + searchLens: PictogramBleedSearch, + passcode: PictogramBleedPasscode, + success: PictogramBleedSuccess, + fatalError: PictogramBleedFatalError, notification: PictogramBleedNotification, - star: PictogramBleedStar + star: PictogramBleedStar, + doc: PictogramBleedDoc }; export const PictogramBleed = ({ diff --git a/src/components/pictograms/svg/PictogramActivate.tsx b/src/components/pictograms/svg/PictogramActivate.tsx new file mode 100644 index 00000000..37b73c5a --- /dev/null +++ b/src/components/pictograms/svg/PictogramActivate.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramActivate = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramActivate; diff --git a/src/components/pictograms/svg/PictogramAttachment.tsx b/src/components/pictograms/svg/PictogramAttachment.tsx new file mode 100644 index 00000000..eeba0fc4 --- /dev/null +++ b/src/components/pictograms/svg/PictogramAttachment.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramAttachment = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + +); + +export default PictogramAttachment; diff --git a/src/components/pictograms/svg/PictogramBleedAccessDenied.tsx b/src/components/pictograms/svg/PictogramBleedAccessDenied.tsx new file mode 100644 index 00000000..6b638042 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedAccessDenied.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedAccessDenied = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + + +); + +export default PictogramBleedAccessDenied; diff --git a/src/components/pictograms/svg/PictogramBleedAttention.tsx b/src/components/pictograms/svg/PictogramBleedAttention.tsx new file mode 100644 index 00000000..6e9ba3f9 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedAttention.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedAttention = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + +); + +export default PictogramBleedAttention; diff --git a/src/components/pictograms/svg/PictogramBleedCardAdd.tsx b/src/components/pictograms/svg/PictogramBleedCardAdd.tsx new file mode 100644 index 00000000..3aaed0c2 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedCardAdd.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedCardAdd = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramBleedCardAdd; diff --git a/src/components/pictograms/svg/PictogramBleedCardFavourite.tsx b/src/components/pictograms/svg/PictogramBleedCardFavourite.tsx new file mode 100644 index 00000000..b02bb75d --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedCardFavourite.tsx @@ -0,0 +1,46 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedCardFavourite = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramBleedCardFavourite; diff --git a/src/components/pictograms/svg/PictogramBleedCardIssue.tsx b/src/components/pictograms/svg/PictogramBleedCardIssue.tsx new file mode 100644 index 00000000..1e124a26 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedCardIssue.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedCardIssue = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramBleedCardIssue; diff --git a/src/components/pictograms/svg/PictogramBleedCardQuestion.tsx b/src/components/pictograms/svg/PictogramBleedCardQuestion.tsx new file mode 100644 index 00000000..e60628b5 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedCardQuestion.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedCardQuestion = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramBleedCardQuestion; diff --git a/src/components/pictograms/svg/PictogramBleedDoc.tsx b/src/components/pictograms/svg/PictogramBleedDoc.tsx new file mode 100644 index 00000000..a8ddb45d --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedDoc.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedDoc = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramBleedDoc; diff --git a/src/components/pictograms/svg/PictogramBleedEmpty.tsx b/src/components/pictograms/svg/PictogramBleedEmpty.tsx new file mode 100644 index 00000000..a7c8f8d0 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedEmpty.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedEmpty = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramBleedEmpty; diff --git a/src/components/pictograms/svg/PictogramBleedFatalError.tsx b/src/components/pictograms/svg/PictogramBleedFatalError.tsx new file mode 100644 index 00000000..919c3e87 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedFatalError.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedFatalError = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + +); + +export default PictogramBleedFatalError; diff --git a/src/components/pictograms/svg/PictogramBleedFeature.tsx b/src/components/pictograms/svg/PictogramBleedFeature.tsx index aae78e2d..518c99f9 100644 --- a/src/components/pictograms/svg/PictogramBleedFeature.tsx +++ b/src/components/pictograms/svg/PictogramBleedFeature.tsx @@ -9,35 +9,47 @@ const PictogramBleedFeature = ({ }: SVGPictogramProps) => ( + + diff --git a/src/components/pictograms/svg/PictogramBleedFeedback.tsx b/src/components/pictograms/svg/PictogramBleedFeedback.tsx index a7bc32dd..2e39b2ff 100644 --- a/src/components/pictograms/svg/PictogramBleedFeedback.tsx +++ b/src/components/pictograms/svg/PictogramBleedFeedback.tsx @@ -9,23 +9,35 @@ const PictogramBleedFeedback = ({ }: SVGPictogramProps) => ( + + + diff --git a/src/components/pictograms/svg/PictogramBleedIdea.tsx b/src/components/pictograms/svg/PictogramBleedIdea.tsx new file mode 100644 index 00000000..f58842bf --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedIdea.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedIdea = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramBleedIdea; diff --git a/src/components/pictograms/svg/PictogramBleedIdentity.tsx b/src/components/pictograms/svg/PictogramBleedIdentity.tsx new file mode 100644 index 00000000..56f24b4a --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedIdentity.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedIdentity = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramBleedIdentity; diff --git a/src/components/pictograms/svg/PictogramBleedIdentityAdd.tsx b/src/components/pictograms/svg/PictogramBleedIdentityAdd.tsx new file mode 100644 index 00000000..4cafbd42 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedIdentityAdd.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedIdentityAdd = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramBleedIdentityAdd; diff --git a/src/components/pictograms/svg/PictogramBleedIdentityCheck.tsx b/src/components/pictograms/svg/PictogramBleedIdentityCheck.tsx new file mode 100644 index 00000000..c9b8e533 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedIdentityCheck.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedIdentityCheck = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramBleedIdentityCheck; diff --git a/src/components/pictograms/svg/PictogramBleedIdentityRefresh.tsx b/src/components/pictograms/svg/PictogramBleedIdentityRefresh.tsx new file mode 100644 index 00000000..ed892317 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedIdentityRefresh.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedIdentityRefresh = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramBleedIdentityRefresh; diff --git a/src/components/pictograms/svg/PictogramBleedMessage.tsx b/src/components/pictograms/svg/PictogramBleedMessage.tsx new file mode 100644 index 00000000..49969b69 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedMessage.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedMessage = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramBleedMessage; diff --git a/src/components/pictograms/svg/PictogramBleedPasscode.tsx b/src/components/pictograms/svg/PictogramBleedPasscode.tsx new file mode 100644 index 00000000..6a05d3c7 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedPasscode.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedPasscode = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + +); + +export default PictogramBleedPasscode; diff --git a/src/components/pictograms/svg/PictogramBleedPending.tsx b/src/components/pictograms/svg/PictogramBleedPending.tsx new file mode 100644 index 00000000..7badf1b4 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedPending.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedPending = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + +); + +export default PictogramBleedPending; diff --git a/src/components/pictograms/svg/PictogramBleedSearch.tsx b/src/components/pictograms/svg/PictogramBleedSearch.tsx new file mode 100644 index 00000000..35b36b61 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedSearch.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedSearch = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + +); + +export default PictogramBleedSearch; diff --git a/src/components/pictograms/svg/PictogramBleedStopSecurity.tsx b/src/components/pictograms/svg/PictogramBleedStopSecurity.tsx new file mode 100644 index 00000000..b91f55b8 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedStopSecurity.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedStopSecurity = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + + + +); + +export default PictogramBleedStopSecurity; diff --git a/src/components/pictograms/svg/PictogramBleedSuccess.tsx b/src/components/pictograms/svg/PictogramBleedSuccess.tsx new file mode 100644 index 00000000..bb356d5f --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedSuccess.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedSuccess = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramBleedSuccess; diff --git a/src/components/pictograms/svg/PictogramBleedTime.tsx b/src/components/pictograms/svg/PictogramBleedTime.tsx new file mode 100644 index 00000000..54e41e69 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedTime.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedTime = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramBleedTime; diff --git a/src/components/pictograms/svg/PictogramBleedTiming.tsx b/src/components/pictograms/svg/PictogramBleedTiming.tsx new file mode 100644 index 00000000..509902c7 --- /dev/null +++ b/src/components/pictograms/svg/PictogramBleedTiming.tsx @@ -0,0 +1,46 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramBleedTiming = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramBleedTiming; diff --git a/src/components/pictograms/svg/PictogramCardAdd.tsx b/src/components/pictograms/svg/PictogramCardAdd.tsx new file mode 100644 index 00000000..acb5d460 --- /dev/null +++ b/src/components/pictograms/svg/PictogramCardAdd.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramCardAdd = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramCardAdd; diff --git a/src/components/pictograms/svg/PictogramCardFavourite.tsx b/src/components/pictograms/svg/PictogramCardFavourite.tsx new file mode 100644 index 00000000..b35dcfcf --- /dev/null +++ b/src/components/pictograms/svg/PictogramCardFavourite.tsx @@ -0,0 +1,46 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramCardFavourite = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramCardFavourite; diff --git a/src/components/pictograms/svg/PictogramCardIssue.tsx b/src/components/pictograms/svg/PictogramCardIssue.tsx new file mode 100644 index 00000000..ad799e6d --- /dev/null +++ b/src/components/pictograms/svg/PictogramCardIssue.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramCardIssue = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramCardIssue; diff --git a/src/components/pictograms/svg/PictogramCardQuestion.tsx b/src/components/pictograms/svg/PictogramCardQuestion.tsx new file mode 100644 index 00000000..d449db70 --- /dev/null +++ b/src/components/pictograms/svg/PictogramCardQuestion.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramCardQuestion = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramCardQuestion; diff --git a/src/components/pictograms/svg/PictogramDoc.tsx b/src/components/pictograms/svg/PictogramDoc.tsx new file mode 100644 index 00000000..0e4b3c31 --- /dev/null +++ b/src/components/pictograms/svg/PictogramDoc.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramDoc = ({ size, colorValues, ...props }: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramDoc; diff --git a/src/components/pictograms/svg/PictogramGenericError.tsx b/src/components/pictograms/svg/PictogramGenericError.tsx new file mode 100644 index 00000000..00e937b2 --- /dev/null +++ b/src/components/pictograms/svg/PictogramGenericError.tsx @@ -0,0 +1,58 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramGenericError = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + +); + +export default PictogramGenericError; diff --git a/src/components/pictograms/svg/PictogramIdea.tsx b/src/components/pictograms/svg/PictogramIdea.tsx new file mode 100644 index 00000000..c5cbedf1 --- /dev/null +++ b/src/components/pictograms/svg/PictogramIdea.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramIdea = ({ size, colorValues, ...props }: SVGPictogramProps) => ( + + + + + + + + + +); + +export default PictogramIdea; diff --git a/src/components/pictograms/svg/PictogramMessage.tsx b/src/components/pictograms/svg/PictogramMessage.tsx new file mode 100644 index 00000000..7e144583 --- /dev/null +++ b/src/components/pictograms/svg/PictogramMessage.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramMessage = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramMessage; diff --git a/src/components/pictograms/svg/PictogramMoneyCheck.tsx b/src/components/pictograms/svg/PictogramMoneyCheck.tsx new file mode 100644 index 00000000..f2030aa9 --- /dev/null +++ b/src/components/pictograms/svg/PictogramMoneyCheck.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramMoneyCheck = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramMoneyCheck; diff --git a/src/components/pictograms/svg/PictogramNFCScanAndroid.tsx b/src/components/pictograms/svg/PictogramNFCScanAndroid.tsx new file mode 100644 index 00000000..a390b48e --- /dev/null +++ b/src/components/pictograms/svg/PictogramNFCScanAndroid.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramNFCScanAndroid = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + + + +); + +export default PictogramNFCScanAndroid; diff --git a/src/components/pictograms/svg/PictogramNFCScaniOS.tsx b/src/components/pictograms/svg/PictogramNFCScaniOS.tsx new file mode 100644 index 00000000..4dc73d98 --- /dev/null +++ b/src/components/pictograms/svg/PictogramNFCScaniOS.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramNFCScaniOS = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + + + + +); + +export default PictogramNFCScaniOS; diff --git a/src/components/pictograms/svg/PictogramPending.tsx b/src/components/pictograms/svg/PictogramPending.tsx new file mode 100644 index 00000000..b3fa2169 --- /dev/null +++ b/src/components/pictograms/svg/PictogramPending.tsx @@ -0,0 +1,38 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramPending = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + +); + +export default PictogramPending; diff --git a/src/components/pictograms/svg/PictogramReactivate.tsx b/src/components/pictograms/svg/PictogramReactivate.tsx new file mode 100644 index 00000000..81dc92f6 --- /dev/null +++ b/src/components/pictograms/svg/PictogramReactivate.tsx @@ -0,0 +1,54 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramReactivate = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + + +); + +export default PictogramReactivate; diff --git a/src/components/pictograms/svg/PictogramSearchLens.tsx b/src/components/pictograms/svg/PictogramSearchLens.tsx new file mode 100644 index 00000000..470c1891 --- /dev/null +++ b/src/components/pictograms/svg/PictogramSearchLens.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramSearchLens = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + + +); + +export default PictogramSearchLens; diff --git a/src/components/pictograms/svg/PictogramTiming.tsx b/src/components/pictograms/svg/PictogramTiming.tsx new file mode 100644 index 00000000..61c7938c --- /dev/null +++ b/src/components/pictograms/svg/PictogramTiming.tsx @@ -0,0 +1,46 @@ +import React from "react"; +import { Svg, Path } from "react-native-svg"; +import { SVGPictogramProps } from "../Pictogram"; + +const PictogramTiming = ({ + size, + colorValues, + ...props +}: SVGPictogramProps) => ( + + + + + + + + + + +); + +export default PictogramTiming; diff --git a/src/components/pictograms/svg/originals/PictogramActivate.svg b/src/components/pictograms/svg/originals/PictogramActivate.svg new file mode 100644 index 00000000..8901bf03 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramActivate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramAttachment.svg b/src/components/pictograms/svg/originals/PictogramAttachment.svg new file mode 100644 index 00000000..83a46d6c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramAttachment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedAccessDenied.svg b/src/components/pictograms/svg/originals/PictogramBleedAccessDenied.svg new file mode 100644 index 00000000..31f6deb8 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedAccessDenied.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedAttention.svg b/src/components/pictograms/svg/originals/PictogramBleedAttention.svg new file mode 100644 index 00000000..8d4cfaf7 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedAttention.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedCardAdd.svg b/src/components/pictograms/svg/originals/PictogramBleedCardAdd.svg new file mode 100644 index 00000000..6ea183ab --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedCardAdd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedCardFavourite.svg b/src/components/pictograms/svg/originals/PictogramBleedCardFavourite.svg new file mode 100644 index 00000000..c61dbec9 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedCardFavourite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedCardIssue.svg b/src/components/pictograms/svg/originals/PictogramBleedCardIssue.svg new file mode 100644 index 00000000..c10bfd7c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedCardIssue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedCardQuestion.svg b/src/components/pictograms/svg/originals/PictogramBleedCardQuestion.svg new file mode 100644 index 00000000..7f489640 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedCardQuestion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedDoc.svg b/src/components/pictograms/svg/originals/PictogramBleedDoc.svg new file mode 100644 index 00000000..ba92eef1 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedDoc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedEmpty.svg b/src/components/pictograms/svg/originals/PictogramBleedEmpty.svg new file mode 100644 index 00000000..d6ec6547 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedEmpty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedFatalError.svg b/src/components/pictograms/svg/originals/PictogramBleedFatalError.svg new file mode 100644 index 00000000..74499032 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedFatalError.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedFeature.svg b/src/components/pictograms/svg/originals/PictogramBleedFeature.svg index fa14ca6e..61834e4c 100644 --- a/src/components/pictograms/svg/originals/PictogramBleedFeature.svg +++ b/src/components/pictograms/svg/originals/PictogramBleedFeature.svg @@ -1,34 +1 @@ - - - - - - - - - - + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedFeedback.svg b/src/components/pictograms/svg/originals/PictogramBleedFeedback.svg index 65684459..e85c46bc 100644 --- a/src/components/pictograms/svg/originals/PictogramBleedFeedback.svg +++ b/src/components/pictograms/svg/originals/PictogramBleedFeedback.svg @@ -1,22 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedIdea.svg b/src/components/pictograms/svg/originals/PictogramBleedIdea.svg new file mode 100644 index 00000000..691ce760 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedIdea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedIdentity.svg b/src/components/pictograms/svg/originals/PictogramBleedIdentity.svg new file mode 100644 index 00000000..2e6955df --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedIdentity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedIdentityAdd.svg b/src/components/pictograms/svg/originals/PictogramBleedIdentityAdd.svg new file mode 100644 index 00000000..f0ea476c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedIdentityAdd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedIdentityCheck.svg b/src/components/pictograms/svg/originals/PictogramBleedIdentityCheck.svg new file mode 100644 index 00000000..9ea9b129 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedIdentityCheck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedIdentityRefresh.svg b/src/components/pictograms/svg/originals/PictogramBleedIdentityRefresh.svg new file mode 100644 index 00000000..5bf8263c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedIdentityRefresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedMessage.svg b/src/components/pictograms/svg/originals/PictogramBleedMessage.svg new file mode 100644 index 00000000..be6deb8c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedMessage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedPasscode.svg b/src/components/pictograms/svg/originals/PictogramBleedPasscode.svg new file mode 100644 index 00000000..538832b4 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedPasscode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedPending.svg b/src/components/pictograms/svg/originals/PictogramBleedPending.svg new file mode 100644 index 00000000..a01885b6 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedPending.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedSearch.svg b/src/components/pictograms/svg/originals/PictogramBleedSearch.svg new file mode 100644 index 00000000..5bbc60b9 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedSearch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedStopSecurity.svg b/src/components/pictograms/svg/originals/PictogramBleedStopSecurity.svg new file mode 100644 index 00000000..8d97c8c5 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedStopSecurity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedSuccess.svg b/src/components/pictograms/svg/originals/PictogramBleedSuccess.svg new file mode 100644 index 00000000..64ce3acf --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedSuccess.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedTime.svg b/src/components/pictograms/svg/originals/PictogramBleedTime.svg new file mode 100644 index 00000000..ebd4a85f --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedTime.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramBleedTiming.svg b/src/components/pictograms/svg/originals/PictogramBleedTiming.svg new file mode 100644 index 00000000..717b12da --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramBleedTiming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramCardAdd.svg b/src/components/pictograms/svg/originals/PictogramCardAdd.svg new file mode 100644 index 00000000..c12935c4 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramCardAdd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramCardFavourite.svg b/src/components/pictograms/svg/originals/PictogramCardFavourite.svg new file mode 100644 index 00000000..11e3f6fc --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramCardFavourite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramCardIssue.svg b/src/components/pictograms/svg/originals/PictogramCardIssue.svg new file mode 100644 index 00000000..f6bea16c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramCardIssue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramCardQuestion.svg b/src/components/pictograms/svg/originals/PictogramCardQuestion.svg new file mode 100644 index 00000000..c46652b3 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramCardQuestion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramDoc.svg b/src/components/pictograms/svg/originals/PictogramDoc.svg new file mode 100644 index 00000000..3bd2870d --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramDoc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramGenericError.svg b/src/components/pictograms/svg/originals/PictogramGenericError.svg new file mode 100644 index 00000000..83cfe81b --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramGenericError.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramIdea.svg b/src/components/pictograms/svg/originals/PictogramIdea.svg new file mode 100644 index 00000000..25ddb236 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramIdea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramMessage.svg b/src/components/pictograms/svg/originals/PictogramMessage.svg new file mode 100644 index 00000000..3ddd2473 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramMessage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramMoneyCheck.svg b/src/components/pictograms/svg/originals/PictogramMoneyCheck.svg new file mode 100644 index 00000000..2e54cd6b --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramMoneyCheck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramNFCScanAndroid.svg b/src/components/pictograms/svg/originals/PictogramNFCScanAndroid.svg new file mode 100644 index 00000000..0a48a57c --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramNFCScanAndroid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramNFCScaniOS.svg b/src/components/pictograms/svg/originals/PictogramNFCScaniOS.svg new file mode 100644 index 00000000..f2d5d981 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramNFCScaniOS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramPending.svg b/src/components/pictograms/svg/originals/PictogramPending.svg new file mode 100644 index 00000000..fb1c6fb8 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramPending.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramReactivate.svg b/src/components/pictograms/svg/originals/PictogramReactivate.svg new file mode 100644 index 00000000..337c9bf3 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramReactivate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramSearchLens.svg b/src/components/pictograms/svg/originals/PictogramSearchLens.svg new file mode 100644 index 00000000..e02e8ef5 --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramSearchLens.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/svg/originals/PictogramTiming.svg b/src/components/pictograms/svg/originals/PictogramTiming.svg new file mode 100644 index 00000000..64fd9b0d --- /dev/null +++ b/src/components/pictograms/svg/originals/PictogramTiming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/pictograms/timestamp.txt b/src/components/pictograms/timestamp.txt index 170505ca..a1a9a925 100644 --- a/src/components/pictograms/timestamp.txt +++ b/src/components/pictograms/timestamp.txt @@ -1 +1 @@ -2023-10-27T13:44:03.766Z \ No newline at end of file +2023-10-30T13:28:58.366Z \ No newline at end of file