diff --git a/package-lock.json b/package-lock.json index 37af3d2f..54e04062 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1716,6 +1716,485 @@ "win32" ] }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/cli": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/cli/-/cli-8.1.0.tgz", + "integrity": "sha512-SnlaLspB610XFXvs3PmhzViHErsXp0yIy4ERyZlHDlO1ro2iYtHMWYk2mztdLD/lBjiA4ZXe4RePON3qU/Tc4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-prettier": "8.1.0", + "@svgr/plugin-svgo": "8.1.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "dashify": "^2.0.0", + "glob": "^8.0.3", + "snake-case": "^3.0.4" + }, + "bin": { + "svgr": "bin/svgr" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-prettier": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-prettier/-/plugin-prettier-8.1.0.tgz", + "integrity": "sha512-o4/uFI8G64tAjBZ4E7gJfH+VP7Qi3T0+M4WnIsP91iFnGPqs5WvPDkpZALXPiyWEtzfYs1Rmwy1Zdfu8qoZuKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "deepmerge": "^4.3.1", + "prettier": "^2.8.7" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@svgr/plugin-svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@svgr/plugin-svgo/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@svgr/plugin-svgo/node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -1940,6 +2419,13 @@ "dev": true, "license": "MIT" }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2038,6 +2524,29 @@ "node": ">=8" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -2183,6 +2692,33 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2387,6 +2923,16 @@ "dev": true, "license": "MIT" }, + "node_modules/dashify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dashify/-/dashify-2.0.0.tgz", + "integrity": "sha512-hpA5C/YrPjucXypHPPc0oJ1l9Hf6wWbiOL7Ik42cxnsUOhWiCB/fylKbKqqJalW9FgkNQCw16YO8uW9Hs0Iy1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -2489,6 +3035,17 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2520,6 +3077,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/esbuild": { "version": "0.25.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", @@ -2791,6 +3358,33 @@ "node": ">=8" } }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/import-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", @@ -2823,6 +3417,13 @@ "dev": true, "license": "ISC" }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -2935,6 +3536,19 @@ "dev": true, "license": "MIT" }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -2948,6 +3562,13 @@ "node": ">=6" } }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3305,6 +3926,16 @@ "loose-envify": "cli.js" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3437,6 +4068,17 @@ "node": "^20.0.0 || >=22.0.0" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", @@ -3546,6 +4188,38 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -3587,6 +4261,16 @@ "dev": true, "license": "ISC" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -4287,6 +4971,22 @@ "dev": true, "license": "MIT" }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/promise.series": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", @@ -4593,6 +5293,17 @@ "node": ">=8" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4839,6 +5550,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" + }, "node_modules/svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -5986,6 +6704,10 @@ "@rollup/plugin-commonjs": "^25.0.0", "@rollup/plugin-node-resolve": "^15.0.0", "@rollup/plugin-typescript": "^11.0.0", + "@svgr/babel-plugin-add-jsx-attribute": "^8.0.0", + "@svgr/cli": "^8.0.0", + "@svgr/plugin-jsx": "^8.0.0", + "@svgr/plugin-prettier": "^8.0.0", "@types/react": "^18.0.0", "react": "^18.0.0", "rollup": "^4.0.0", diff --git a/packages/core/icons/assets/pause.svg b/packages/core/icons/assets/pause.svg index 556da453..5b43be3d 100644 --- a/packages/core/icons/assets/pause.svg +++ b/packages/core/icons/assets/pause.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/packages/core/icons/assets/play.svg b/packages/core/icons/assets/play.svg index 696ed356..88502546 100644 --- a/packages/core/icons/assets/play.svg +++ b/packages/core/icons/assets/play.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/packages/core/icons/assets/volume-high.svg b/packages/core/icons/assets/volume-high.svg index 4f5580be..06364e6e 100644 --- a/packages/core/icons/assets/volume-high.svg +++ b/packages/core/icons/assets/volume-high.svg @@ -1,3 +1,3 @@ \ No newline at end of file diff --git a/packages/core/icons/assets/volume-low.svg b/packages/core/icons/assets/volume-low.svg index 09a48710..7f0645a0 100644 --- a/packages/core/icons/assets/volume-low.svg +++ b/packages/core/icons/assets/volume-low.svg @@ -1,3 +1,3 @@ \ No newline at end of file diff --git a/packages/core/icons/assets/volume-off.svg b/packages/core/icons/assets/volume-off.svg index d71057e7..a06fc876 100644 --- a/packages/core/icons/assets/volume-off.svg +++ b/packages/core/icons/assets/volume-off.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/packages/react/react-icons/.gitignore b/packages/react/react-icons/.gitignore new file mode 100644 index 00000000..f8285e0e --- /dev/null +++ b/packages/react/react-icons/.gitignore @@ -0,0 +1,17 @@ +# Generated files - do not commit +src/generated-icons/ + +# Build outputs +dist/ +*.tsbuildinfo + +# Dependencies +node_modules/ + +# IDE +.vscode/ +.idea/ + +# OS +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/packages/react/react-icons/README.md b/packages/react/react-icons/README.md new file mode 100644 index 00000000..b227def9 --- /dev/null +++ b/packages/react/react-icons/README.md @@ -0,0 +1,133 @@ +# @vjs-10/react-icons + +React-specific icon components derived from `@vjs-10/icons`. + +## Overview + +This package provides React components for media player icons that are automatically generated from SVG files. All icon components are built using [SVGR](https://react-svgr.com/) to transform SVG assets into optimized React components. + +## 🔄 Auto-Generated Components + +**Important:** The React components in this package are automatically generated. Do not edit them directly. + +### Generated Files Location +``` +src/generated-icons/ +├── index.ts # Auto-generated exports (DO NOT EDIT) +├── Play.tsx # Auto-generated component (DO NOT EDIT) +├── Pause.tsx # Auto-generated component (DO NOT EDIT) +├── VolumeHigh.tsx # Auto-generated component (DO NOT EDIT) +├── VolumeLow.tsx # Auto-generated component (DO NOT EDIT) +└── VolumeOff.tsx # Auto-generated component (DO NOT EDIT) +``` + +### Source of Truth +All icons originate from SVG files located in: +``` +packages/core/icons/assets/ +├── play.svg +├── pause.svg +├── volume-high.svg +├── volume-low.svg +└── volume-off.svg +``` + +## Usage + +```tsx +import { PlayIcon, PauseIcon, VolumeHighIcon } from '@vjs-10/react-icons'; + +function MediaControls() { + return ( +
+ + + +
+ ); +} +``` + +### IconProps Interface + +All generated icon components accept the following props: + +```tsx +interface IconProps extends SVGAttributes { + children?: never; + color?: string; +} +``` + +- **`color`**: Sets the icon color (default: `'currentColor'`) +- **All SVG attributes**: `width`, `height`, `className`, `onClick`, etc. +- **No children**: Icon components don't accept children + +## 🔧 Development Workflow + +### Adding New Icons + +1. **Add SVG file** to `packages/core/icons/assets/filename.svg` +2. **Regenerate components**: Run `npm run generate` in this package +3. **New component** will be available as `FilenameIcon` + +### Modifying Existing Icons + +1. **Edit SVG file** in `packages/core/icons/assets/` +2. **Regenerate components**: Run `npm run generate` in this package +3. **Component updates automatically** + +### Build Process + +```bash +# Generate React components from SVG files +npm run generate + +# Build the package (includes generation step) +npm run build + +# Clean generated files and dist +npm run clean +``` + +## 📦 Package Scripts + +- **`generate`**: Transform SVG files into React components using SVGR +- **`build`**: Generate components + build distribution files +- **`clean`**: Remove generated components and build artifacts + +## 🏗️ Architecture + +This package follows the monorepo's dependency hierarchy: +- **Depends on**: `@vjs-10/icons` (for shared SVG assets) +- **Peer dependency**: `react` (>=16.8.0) +- **Build tool**: SVGR for SVG-to-React transformation + +## 🚫 What NOT to Edit + +- `src/generated-icons/` - All files are auto-generated +- Generated components have `@generated` JSDoc tags +- Generated files include clear "DO NOT EDIT" warnings + +## ✅ What You CAN Edit + +- `src/types.d.ts` - TypeScript interface definitions +- `src/index.ts` - Main export file (if needed) +- `svgr.config.js` - SVGR configuration +- `package.json` - Package configuration +- This `README.md` + +## 🎯 Icon Naming Convention + +SVG filename → React component name: +- `play.svg` → `PlayIcon` +- `volume-high.svg` → `VolumeHighIcon` +- `my-custom-icon.svg` → `MyCustomIconIcon` + +## 🔍 Technical Details + +- **Generator**: [SVGR](https://react-svgr.com/) v8 +- **Output**: TypeScript React components +- **Optimization**: Automatic SVG optimization via SVGO +- **Styling**: Uses `currentColor` for easy theming +- **Size**: Icons default to `1em` width/height for text alignment \ No newline at end of file diff --git a/packages/react/react-icons/package.json b/packages/react/react-icons/package.json index e9d62c39..b1dbdfe9 100644 --- a/packages/react/react-icons/package.json +++ b/packages/react/react-icons/package.json @@ -16,9 +16,10 @@ "dist" ], "scripts": { - "build": "rollup -c && tsc --project tsconfig.build.json", + "generate": "svgr --config-file svgr.config.js --out-dir src/generated-icons ../../core/icons/assets", + "build": "npm run generate && rollup -c && tsc --project tsconfig.build.json", "test": "echo \"No tests yet\"", - "clean": "rm -rf dist" + "clean": "rm -rf dist src/generated-icons" }, "keywords": [ "icons", @@ -42,7 +43,11 @@ "tslib": "^2.6.0", "typescript": "^5.3.0", "@types/react": "^18.0.0", - "react": "^18.0.0" + "react": "^18.0.0", + "@svgr/cli": "^8.0.0", + "@svgr/plugin-jsx": "^8.0.0", + "@svgr/plugin-prettier": "^8.0.0", + "@svgr/babel-plugin-add-jsx-attribute": "^8.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/react/react-icons/src/icons/PauseIcon.tsx b/packages/react/react-icons/src/icons/PauseIcon.tsx deleted file mode 100644 index 03a28bf5..00000000 --- a/packages/react/react-icons/src/icons/PauseIcon.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import * as React from 'react'; -import type { IconProps } from './types'; -export const PauseIcon = ({ color = 'currentColor', ...props }: IconProps) => ( - -); -export default PauseIcon; diff --git a/packages/react/react-icons/src/icons/PlayIcon.tsx b/packages/react/react-icons/src/icons/PlayIcon.tsx deleted file mode 100644 index 98ba30e5..00000000 --- a/packages/react/react-icons/src/icons/PlayIcon.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import * as React from 'react'; -import type { IconProps } from './types'; -export const PlayIcon = ({ color = 'currentColor', ...props }: IconProps) => ( - -); -export default PlayIcon; diff --git a/packages/react/react-icons/src/icons/VolumeHighIcon.tsx b/packages/react/react-icons/src/icons/VolumeHighIcon.tsx deleted file mode 100644 index 83ac77b8..00000000 --- a/packages/react/react-icons/src/icons/VolumeHighIcon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import type { IconProps } from './types'; -export const VolumeHighIcon = ({ - color = 'currentColor', - ...props -}: IconProps) => ( - -); -export default VolumeHighIcon; diff --git a/packages/react/react-icons/src/icons/VolumeLowIcon.tsx b/packages/react/react-icons/src/icons/VolumeLowIcon.tsx deleted file mode 100644 index fd31deee..00000000 --- a/packages/react/react-icons/src/icons/VolumeLowIcon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import type { IconProps } from './types'; -export const VolumeLowIcon = ({ - color = 'currentColor', - ...props -}: IconProps) => ( - -); -export default VolumeLowIcon; diff --git a/packages/react/react-icons/src/icons/VolumeOffIcon.tsx b/packages/react/react-icons/src/icons/VolumeOffIcon.tsx deleted file mode 100644 index 838abb18..00000000 --- a/packages/react/react-icons/src/icons/VolumeOffIcon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from 'react'; -import type { IconProps } from './types'; -export const VolumeOffIcon = ({ - color = 'currentColor', - ...props -}: IconProps) => ( - -); -export default VolumeOffIcon; diff --git a/packages/react/react-icons/src/index.ts b/packages/react/react-icons/src/index.ts index f9a42b91..2dc642d7 100644 --- a/packages/react/react-icons/src/index.ts +++ b/packages/react/react-icons/src/index.ts @@ -1,5 +1,2 @@ -export * from './icons/PlayIcon'; -export * from './icons/PauseIcon'; -export * from './icons/VolumeHighIcon'; -export * from './icons/VolumeLowIcon'; -export * from './icons/VolumeOffIcon'; \ No newline at end of file +export * from './generated-icons'; +export type { IconProps } from './types'; \ No newline at end of file diff --git a/packages/react/react-icons/src/icons/types.d.ts b/packages/react/react-icons/src/types.d.ts similarity index 98% rename from packages/react/react-icons/src/icons/types.d.ts rename to packages/react/react-icons/src/types.d.ts index db754f22..1626a516 100644 --- a/packages/react/react-icons/src/icons/types.d.ts +++ b/packages/react/react-icons/src/types.d.ts @@ -3,4 +3,4 @@ import type { SVGAttributes } from "react"; export interface IconProps extends SVGAttributes { children?: never; color?: string; -} +} \ No newline at end of file diff --git a/packages/react/react-icons/svgr.config.js b/packages/react/react-icons/svgr.config.js new file mode 100644 index 00000000..ac92d05a --- /dev/null +++ b/packages/react/react-icons/svgr.config.js @@ -0,0 +1,73 @@ +const path = require('path') + +module.exports = { + plugins: ['@svgr/plugin-jsx', '@svgr/plugin-prettier'], + typescript: true, + jsxRuntime: 'automatic', + icon: true, + expandProps: 'end', + svgProps: { + 'aria-hidden': 'true' + }, + replaceAttrValues: { + '#000': '{color}', + '#fff': '{color}', + 'black': '{color}', + 'white': '{color}', + 'currentColor': '{color}' + }, + template: (variables, { tpl }) => { + return tpl` +/** + * @fileoverview Auto-generated React component from SVG + * + * This file is automatically generated by SVGR from SVG files located in: + * packages/core/icons/assets/ + * + * DO NOT EDIT THIS FILE DIRECTLY. + * + * To modify this icon: + * 1. Edit the corresponding SVG file in packages/core/icons/assets/ + * 2. Run \`npm run generate\` in this package to regenerate components + * + * @generated + */ +import * as React from 'react'; +import type { IconProps } from '../types'; + +${variables.interfaces}; + +const ${variables.componentName} = ({ color = 'currentColor', ...props }: IconProps) => ( + ${variables.jsx} +); + +${variables.exports}; +` + }, + indexTemplate: (filePaths) => { + const exportEntries = filePaths.map(({ path: filePath }) => { + const basename = path.basename(filePath, path.extname(filePath)) + const componentName = /^\d/.test(basename) ? `Svg${basename}` : basename + const iconName = `${componentName}Icon` + return `export { default as ${iconName} } from './${basename}';` + }) + + const header = `/** + * @fileoverview Auto-generated index file for React icon components + * + * This file is automatically generated by SVGR from SVG files located in: + * packages/core/icons/assets/ + * + * DO NOT EDIT THIS FILE DIRECTLY. + * + * To modify icons or add new ones: + * 1. Add/edit SVG files in packages/core/icons/assets/ + * 2. Run \`npm run generate\` in this package to regenerate components + * + * @generated + */ +` + + return header + exportEntries.join('\n') + '\n' + } +} \ No newline at end of file