{"_id":"@ariana-germany/keycloakify-mui","_rev":"13-29c4029bb48ba11bc8258d801c0348aa","name":"@ariana-germany/keycloakify-mui","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.1","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"yarn clean && tsc && yarn grant-exec-perms && yarn copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.1","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-WW6s1GtuEvgyf1dxXAA7WuhJWTXLdv6deWUiMqiTPxAwLS/bRst9al84v3WTskt5QgFaA6Gxb0jsR5jx/tZSyw==","shasum":"7d643e6570f84f4c1fe09466334bb574f9f47d52","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.1.tgz","fileCount":75,"unpackedSize":1700498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlSFaCRA9TVsSAnZWagAAX+8P/Rwxc2zmf/y2SB7GR8Un\ntyF2grC4ng0Gs/TvMGxXnkScTs+m/nDvhpWLWey5t0EDH0CLEs3BxMP6gGwo\nRbcNCaMlaKGl0yZ5dHpB7X0Njq2RDFOTBnVvhT16uy79kEzL4tQa6W9SjAIe\nZXXrBRbfHMPV+e0CkWAULtJNxX23UOY8m/a9yj4HPSPMO9v44XrB9g5rlFyj\ngEt3CMxn3VJkdAMjYvT3RWIDBLZ+J7Q20Pvl/17qwwxTMZEbjkW5uTpwpIXI\nxRmdUKtVU/pua/NTi/CuqsFtWVTZB9zF1efV8WYQtXIsGRYuIUrNrsf5ZGIU\nz6o804+yvOrn2zz5YSM/WhVSaV+42jGIa1VR4lg5XDpZtx5zPgkqmXoJIMUI\n9hTSmSOZ/Mcw0GfdtX0Tnk21fr7LmyUGGhRIc7XY8Gen55WL4kYnvaKMKixM\n4NxJkWiHctUdTG67ivPQR0kufHGJJLwnAII/aegajQELgKiT0ZBJZQIgQ5Xg\nJHFPpOciQMRnm63QnpqWbVbSO6GWkg9BIiP38Z5mPRqTDbHTw2S3NzUxwhrs\nwcdya0JNFbmF+1oYHpxrKdPeKK58i5M/c+LXu8IXQJS09Zts/23biIs0BxJw\nXoeMC0d0gFvIGaqspFGavcpSABDYG4RsR96dIZSnXC2Ps8wlEjpCgWziBMQH\n+26h\r\n=LkHX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+rEkkr9whB3bqm3m2TicJSOovajbCaXPAEhmAR/OrTAiAXqltg03tkKt1WYNfYVaWEVuW9j8HA+1XVjtxyWMM7GQ=="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.1_1637163354539_0.18541742596972077"},"_hasShrinkwrap":false},"0.0.2":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.2","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.2","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-3Jwl2PyugAd9A9i5FPA0k+/hd7hzq4HnJQokUSskcpL6T3Ybrm6gF2RZvx4xEtxc/zHlrA5+1I0gdN0mZpxN4w==","shasum":"8f13d621fb165adf0881b3463d99767435ace73a","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.2.tgz","fileCount":283,"unpackedSize":4884695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlSPRCRA9TVsSAnZWagAAO7YP/0S3v//rMlcKYLvAIi2W\nlJcu4LyqvmUEzq/ytq5kMQWNIL+ffMU9HWaw1ohsyQzIC0jmZ5f3/JVi2a13\n6vjpI1S6q+Ses9JgRkoUZLUZHURvBl690FO/Nd226UqSLXuqb6yEaRb8dBqg\nXKQ7ScfkSHjx3dRH4/U1Jw5tlPImx1t80yNw3ahPrFZvpkxRu68yVP4FMKOc\neWsXzWH0rmtBDyUS7Up9NP4hc3ok3kagL2ho23BYlDrwr6qahXBCPGR02OOa\n+KED/0adL2muvWCGVAvzuaWBd5atXKQJSxXxsZkNXJpw7hcgFO1fawtYvx5X\nny4Y21VsJZQzNYJfRQtEsNgB1UC/IxiHXL29qwmC53S3mLDYD2Wae+Y5YsMs\n6pZ7drJ3RSJTkHNr+pVz43eqRq/gtT0ar1BGCIzjqLluB6MJq7S6Vieb8oGA\n0sxynhyoM4dD93kNN61+2FE4sobukuTdcMGX772kCLyT2cuiG9QgUNCuKLRk\ns1tJKbZ3NS/WIJARjY9iQpsTV5ToGl9uCnHjAZizJ02/HSPCU/Hd14tJPXBu\nhQ4mpMlrog8yoLMEpfzLm1T+tADmyDPpbg+mKt38hPaC66GdeHggf5m8R9Yx\nxVdje5R2FdUtBqorm1rTL/fB+xwRXPA72bpdhDSVPeP8crfChW11jNNGE8Fi\nDtQJ\r\n=S3QA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuVFK+vwuHmwVr/ujSoC3LOAFY9g0BGgTi4biRTQjBDAiEA3b3GtOUzd98AyyfLAuZ1miTFKYCD6NsAMiJde/p/1tk="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.2_1637163985569_0.8554166507570486"},"_hasShrinkwrap":false},"0.0.3":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.3","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.3","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-7lrHrA0P30EbPwlxsDm+E5ieeGnIPe/98FKHqnIzSLdoANr7eqNxztJpHg6sm26pZ0zmD8ZnSS8tG9n4wHsEQw==","shasum":"de1f565fcc67ea5fdb3e7e3c5550a2dad1802c66","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.3.tgz","fileCount":283,"unpackedSize":4884705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlTwjCRA9TVsSAnZWagAAjZkP/1Rsy0mMIiqS5/KnO6P+\nMHM4ry8aeFzuAZ5EuGpaTqsob2fa0krzlPTa47xUvcpeyPgPow65KwS74TJU\niHbOdAeNtIwisCP4f36ICEGPI6gk1PRFX6e7SWZyRQQKr9pK1gMPa+B5eq4g\nZHVmE25qpJeCoy9TMZ5X9hOtSar41MAr/+jOMQh5ol8JCwurSJ5OexBz/ydg\np0Z7cok0/tQgod7cr4AOLfY2frIfqkhpSC9dfu3seoIoUR1QhOi1PM3QnoBR\nkfSRDlSrjKn1VqCm/NbZTuIbhhzbBUJRn0e9rPMHr0Yh4GSj/mJBdm2rI7jB\n+8O9N8Yp6J6VH+0te10LiqUOjSILQLFYaSHS8Rbwr9NKn2Y/l1GdbANFxLAI\nyyOETied1c4b7jxBz6/gfbS75rSgsAg9Pgrm8dEhee/MOm4jBzlr9IXp7mnf\nVFBapKwpKOBPwx/K550F8ER8l5y0UF3mWZ4cYQWz78QmUWa4CQbmYHl3W4Oo\nPh42aaQrbqUsK8KmiY67Pfw3HYSIsWFEYYF26y26fL+HFgfClz2Z82eJrHUL\nkF4goQlZHziQq1a/SifctZYrNCrnVXRawcFARX35KRaRymqyTyoiIeglmDvQ\nm2S3d6bdqRB9h68OZFBGi4laV+FvE+M8JvAkCxTUpcwUbVpeFZ0AURiB/ti7\nisb4\r\n=1HEd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPWYKxeiVRVyn1g6Njo3HC2OknRl0X1t1UM6wG6RSOUAiA7JOZ+hcbMyYGY1Pb5fDbj2KUQLFuXep0YOtYcYyZJPg=="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.3_1637170211013_0.030543482752256157"},"_hasShrinkwrap":false},"0.0.4":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.4","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.4","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-P0j2/7DTZgMaJmLtdc0mJ+rUnch5LhAfPjSCzGJ6ajpXqNLMO608PvSFWQy/mqxiDT+rTDHFW3T+BjkG+1su9A==","shasum":"008b7ee9af1431ab0dbc6657e1b36a1343ccd21d","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.4.tgz","fileCount":283,"unpackedSize":4884007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlVnPCRA9TVsSAnZWagAA7wkP/20zN+dYUHCSAumy+hOy\nMRMJurhBI8xD1jOoCcZBDuNRdFQkwNIuZe1yl1qCgiEKltao4VBPpsjyqA8W\nYIHvtgE4BhG3gcxGIs3Wn0TdSF16M4mZfNblMv8lCjtGvtKvPEtxdX/wsltv\nvaB+Km+vK5rrY6czVOCorRatp79nECfozdpVlIjyiZEu4z9DY+ZQzUvcA0MS\nN6SjbQi/FumQirzM/2N+obN6Q0fONt7aUsaRnrPBVX5MyVT9gzOFdq+wb1uS\nfaCNYWdN9EUXSxRn+Bs9HrMwToByPFdE2bLDOSSkTT3oVyveWZ7+qCc88oiL\nJmnD2SuNIZekA0eUI3TFMocMKOFJERL3P+JxS4dkK2FBjSxd/YnB9AxIiP3m\n5yTkPEb3hglsDgbkT6Tu5JNyLLDugpQShkucmnjtNHJT+20ABiFCklmEesXN\n9QCYFGQv7fQN5HVLowvjWk2x3PnnzXnyKW+Um8BvLn+JMNo773lH2C1xFs59\ns+MtvBt/lNu+9ef9SuCR8vLh/8zN4bsIqq1LJ4vssO8naDhkLUfqWQQ8xdfO\nRc4dFmvqXS98IydqgdHQ7xGcF4olVOJzinCvabj8EbcztLMsjLBEhGWsZ2B3\nKe4TnDk80Db3TYIZV5NGe1VJ5Y92AyqVBp6DoTlX8iRVSGM5Ac89UmTRS0MC\nP6Sf\r\n=bN7Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgpvF4nknSYEv2RTeJxbx4m68GmB2Y74T5LPOUYMHoNgIhAN9SF6oxoZoB0Xd8pSQ+sqNaZa2383eR+6sxGIkw2VA5"}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.4_1637177807723_0.3278371811335854"},"_hasShrinkwrap":false},"0.0.5":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.5","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.5","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-Aa0rGqe20au4ZG68yw8enFnn+XXw1wcEHQSy0kgCG8l929RiEBcQ1LZQg9iZUwyBqFOMG+27Til5O+8i19EQrQ==","shasum":"7ebaa0aeb3ec7cb55d4761509777ebb55f79965b","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.5.tgz","fileCount":283,"unpackedSize":4884087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlVweCRA9TVsSAnZWagAAoWoQAKRtg/n8hWNVQPYOkC+a\nYxLVjjZv/HaDP7GGQVJV2veQtP+iuKo1pU8dT+eSpM0ukPQnycCRmlimUiw2\nj+mdW2wD7yaFAgvUbWns56QABE12KFuGSBhhcz4DdEiXsIknl4NcRH29v4l2\njdQzjj2XeIm/dty0iCvHD/3Eo2AikKy6X+lBFfOXgPfCezBMSMWwofJfuCMO\nN2O8OjA7gLWry0l0bpYz1/EXiIsAxY9dM+XZAGK91ZQgcwrWEqKgEjk+NW39\nDvn+l69jW6Z7qu0IiGUmeOvz3rCgy3fIlnqaJniUwYGL/UtrUe8GeaXRSCE0\nnmty7oW2jPRHZU50kb8OlIu34yv7UdXpEuXoPZjs+MN5KhZ2e2YbhZW/9kHD\nlyCD3rpzzOnscSN/u29gajOLFq1kKMwC5JBZkU5BFLGY64W3h8FtSrRIlLoE\nUe9gOpY4yT1kFQjLdXjSrZRTmQ+PvNBZFo658jbI73riPV9N+VEMvJbt2Kap\nGeYwNUCeEuDuk+XMx3sFLpYIEpXhLLXgjynHKiNHeoqmas6S+RTrwu3XglWn\nEqXVeihA+pOddcM9nxHD8X/392cT4TiY0X+QYlJDiiY4RREwFbqdNE2prDEF\nTrfThD8vohyaahPUEWqv1T5zdilph3c6qLG1z2XdcTxkFZ1dm7Qkmf9EoHdK\njeuU\r\n=1QMf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPj7a64eJ1GHQPQzimyy14ICZarxCYOAiF3l3nOXQaRgIgDUQFugwlVWgxGI1349hYpPsresQqb32TM/0y8s53bcY="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.5_1637178397675_0.7217277788000653"},"_hasShrinkwrap":false},"0.0.6":{"name":"@ariana-germany/keycloakify-mui","version":"0.0.6","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.0.6","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-8/pCcg7keYKiqiS7QopnRrlXQwi/XfYqspzSQdSD2wA8J9FJ/HrkLcIvKjadSXJOblI/kqla86mZ6kAF3A/hBA==","shasum":"650be927c924640c98f92ceec77f2310383b2830","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.0.6.tgz","fileCount":283,"unpackedSize":4883324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlV0qCRA9TVsSAnZWagAAFrEQAJiUeXR2qLQKKD5NjGo3\nTRthIsyRle3/FmBtj/IV8ZbwpnRqkJ6jNHOLZkhVUCftb+Q5TG/RUWQLQ2O9\nc2EAplT+lV5GZnO1tLuWGdQk8oK9CpyxwR/fMZhNa1WqtI3OUL1Z7iEKUIe0\nqIQBWxcxVuOMt6CE1bUGXw6hEfoDOGbWAQzZKAv/aoJ3quB1vRz+pzQRpFVt\nMOzcTDx0rOJz3uI4T2X7MWF5oeYJp2uLY3FxzYG8Zcrdz06TLGbinVTvOMxQ\nqyw62A7ak3N5t8165uaDKf0ALwi7/eo7Ic+sZFYf+PVb6mO42JJBts8gaAuu\nJV0yiGdYiCZLjdVofgeLOXJGDAoQsXQQpy4r2m6mZGbpRpDSe7fJqaOhPu7A\nmrkIYKWbi/xxxHtDKjFbUS/KMYBeakFPSPtSkiot6KwH8sMjRA5TrTgW2n8A\nNOsQF6l9fnmMzIg3zKnMNfCvZFRTtCKVAhuXaPC8ENtM3uPrBd4mp0wC5QYA\nVrFyMIdD+psdIglwdedl+yfgUrxfa0mNfudKUVnHUcUNAdfZ/MoQNmTIzU1/\n/YCui6Qqc0DWmjM/m3hVCIrHxFxxphaPRagtkeSbDmfL4De6okKmr3hLksYd\nQ+saeFwAp+Z6+DzYVbrypWjnYsR2o1F9z8pWZblT0wrSLHtTiXJw6HICqtMP\nwfZj\r\n=C1K7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZC9f0I0OAO43Q3D9liPJnGAIdyRFZ6P5DlrYBoWfolgIhAOGb9/ZJ28jVj1oRYGWFLHIKuWdMDt107pJwPkQjx87L"}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.0.6_1637178665665_0.8374234712442445"},"_hasShrinkwrap":false},"0.1.0":{"name":"@ariana-germany/keycloakify-mui","version":"0.1.0","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"d2354fefd813fded9a813abbdb42925a3a385847","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.1.0","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-4lGCFIc1TrdL1yts04JGU0pQykRJNubepD6V5vP0SwiBW3aKRewr7fUgSyipKYah4Deyj0wWhwxu7rSAOzhKmA==","shasum":"4d1625f28e833e8f442d62fc9ea4f03988baa363","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.1.0.tgz","fileCount":283,"unpackedSize":4883324,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx3U3hVWQP4hheDVSwPsl6XZzHsuuKQQgGwsnTbc0qxQIgYThOdpE+ctNgNTM483oB9bwe7xP3gWHR0ypvbz91iM8="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.1.0_1637178744532_0.8379748110647152"},"_hasShrinkwrap":false},"0.1.1":{"name":"@ariana-germany/keycloakify-mui","version":"0.1.1","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/lodash":"^4.14.177","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/icons-material":"^5.1.1","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","detect-browser":"^5.2.1","evt":"2.0.0-beta.38","lodash":"^4.17.21","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"f7060b14024deb5eafb239e62b80142a736a4438","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.1.1","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-69y5xrKonzmQIpcvOrQS/Ih52JuFqnUh29WPvBH1hDhksTNzQ8dlj9wg2lkYfiWrqg6Ixy3xXlS5IWPXDUBuWg==","shasum":"888aa7ee0c9cddb13a7cfaf9cacee884cd60d560","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.1.1.tgz","fileCount":296,"unpackedSize":4984555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlk9MCRA9TVsSAnZWagAALTYP/1V7/VekVZdvAGZJ4oMi\n+BrFP+pLZ+AqIxou9b7YaN5pP6zqNVtLvqmya4Zsy697hsoQkRvLk7G8+WMZ\nWSTOR8HdroozOXOaglL7TombaZBAUYvW1LkuJ2nweZv7Z6aHlW9Uq1SgUrIy\npg4/tJdM+ORwU2WSUo95VrDhHMtC7OPEg43kpFOdu0Fra5/YnLDPJzM87F1/\nOZFulXZcpAToQAbFWDP82vfB16P2535ftBPD2g8oiHs6/yp3pWwl+dJkKKeC\nVuDrtrONcRbGMavVT1BZPvYEYf8sd2RO1uT0N0nF9gO+ruMjkbQ5R4UXn0os\nYOxljBMOlkprleKZQeCScOqW5OB8oSMO0LBAKpzLK/Aqvew/1GVE7xSlIjar\nU4xhv86tS1CPmN4o/EXtOj6pvvbPk4xE74VPVAgFELgb0MTzPr3h5zlk7J/f\nxuS5H0jVWrrFP3RpcfbLM+7n/I1EBpc3H4jhn6EVFQguUV2XpZXSE6eJzHvZ\nZUNlKpR8mzw6dMbl+nQUDZl2BuKzxpyPX9w0T1gDLeSNGLw+KGsnNlS8UL+C\nX8AG41ReKOFRVpXRN/vytTu/T7x/QgZFo4Q2ua1VlR4ceYJX0hiqH7uqr1q8\nrB+oFPZGQox7RPuao/xwnpjVqcBMGMvo+u5HRAvnX9tjqBp91cQKPNYbmU2l\nA/As\r\n=M7lM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVUHnnqNUcNHoM2aWfF7h/jz/022tXT50F4VneU3JVcQIhAN2WoGX/bPzihjXi1dRWxRBsE53MTL1g7Mq6t2RQglp1"}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.1.1_1637240652299_0.2329504456083178"},"_hasShrinkwrap":false},"0.1.2":{"name":"@ariana-germany/keycloakify-mui","version":"0.1.2","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/lodash":"^4.14.177","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/icons-material":"^5.1.1","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","detect-browser":"^5.2.1","evt":"2.0.0-beta.38","lodash":"^4.17.21","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"f7060b14024deb5eafb239e62b80142a736a4438","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.1.2","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-QV011AF1nPEsc4IfjkUza8YD1ysJC/ms7jBT7uVy5vpjHOcHTiY2nou7TaJ3CkHX8spf9daIBy0yWuzRmw2siw==","shasum":"36bbf0a4be4fa43b5eedbcb312e1cf18167a04ff","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.1.2.tgz","fileCount":304,"unpackedSize":4991805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhllJTCRA9TVsSAnZWagAAgGUP/2nOUqXRBzHb4s2NrvXy\nblAOCceX15h7ST1FmiyWXefxptyzOqFkpEmzUBodz5CbiYt5Re/8Nf1b0GYg\nzhfhTbnKhJlGukUY1bbunshdVIg5z35irw9FrAW1H8YY0XfdZzurw4KkpDgv\nYoUkUbBNH89Lwv0GWdIbKu3gnuJjCFjx4dk7LIoEiDU1kuh/HFWxyWmrjHL7\nAJf4mlU/IVJ1ymdrGKwK0xfIIajAwaeyFhblL9jYEYU1XSfkV+AYOWKUCdfT\nB495jzdRluPxcJq+etGhsrnRxHP1u0PtB5quGeUiQV/M53SotoPlqXrn5WRu\nAHVxPVzGhVg2SnbJbF/KgJFDB6QUaSWNxL6PQCOX79PfGBpZPiYQ5ChdfXQ8\nQpcJ8caS6HyoYf5zcYfF6zX6GnhUe7IWPuR9bT5VnXzfxthHh4EV/Iaz8r/m\nBVKgMtL+yHHgBM4wGWLUOIcA+1kQwwz5DmKbqUZ6DoUpeXbz3HqIBEQB9bjC\njTt+pr6BL9BtVd52Hbqq2XvdECC+yguNXr7EeVoONr2NVCm9ZWQfVSw1b8vk\nJ2sNbT1JSMf5Ph2wJ9P7EIEcGBlNNBV83U0ZvOsM39U40XcsMXd8CmUAy4S/\nx3qjqbsMjiSD1R6dyz3urM+pr0ms+pItPtm/SqLdgtRAuaNZoQblbswXwbr1\ne3Zq\r\n=LwvN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzUHe8zFzFBRs4movVrEqon+TlhJXuAF1NlqeMeYcrSgIhAMb1O/6ZZxYrNrdWLuagnq5/GpR9dhfgN19eqP7EFvRu"}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.1.2_1637241427609_0.7173393375164445"},"_hasShrinkwrap":false},"0.1.3":{"name":"@ariana-germany/keycloakify-mui","version":"0.1.3","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/lodash":"^4.14.177","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/icons-material":"^5.1.1","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","detect-browser":"^5.2.1","evt":"2.0.0-beta.38","lodash":"^4.17.21","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"f7060b14024deb5eafb239e62b80142a736a4438","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.1.3","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-/2Bbyo++lYWZ22EZuxWjEOzw6+08SwzvD55MQrMfOn9EpBf3hxNdSX/hpDhGpXZn+I2VCTQvFWD+bhHGYRiXcg==","shasum":"fcaa2d8640be958c9ace30efea87e1ad6630fd6d","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.1.3.tgz","fileCount":304,"unpackedSize":4991805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhllogCRA9TVsSAnZWagAAuJ0P/2R1g15CIgPYXaOwkPdl\n/JDsnwvpi3zqIJxv7QTPzyCmCpuv+rdXqTb8TrxVzknH1rPsGJpdWU/jAnWr\nfo8GTySmComXS9miaYmXWNyO4n/dGFhzwcx3FotPcwjfcBAwF3D76QKyIjtU\nsaaE9v6LqvOLq5hscJwxL90czpzwF6nTb6IoaQmsYTw5LNFydRmRnamXR3W9\nUXWrgHNbYfkcbfz9xiNYHY97sSjpEnDldw8IGvw/PqYrwh5gFbbXYYbsMLcv\nrMsHF4bjY0HUril8Zk3wG/5ThkDvFVcjVVQfggITnulLMoErfkZTLwP8zdY0\ntyEO1trS+gRKIAM7WtmfTdnJGYNAQcyN/U9Pey0TwGgibvFB7hHky7FnVQp/\nxjOWQOTkdkr6/cVp+9PCMPqTZZvn1M2GxWqYWtCfWVRcV70brHef+crHyI8C\nnWWUEEHpGbMeODmUof/DacOKG73mTFs1bv5arf611DmYE4FFd5Zut1W673dV\nwvwlBPnYcmV9hDxqGLd/N/3OwTkIWC50qfHVoMu5Jx16wHQvIYCmboZp4hqU\nVqMnH42pX3OhGbvUWvmCwq1V6eEJX6E284ipGR21WjAzhBq5wAv8EOiZWk0T\nsb+2lT6rzENT4kudDbASl1kfA6OmTuGG6K6MwcTxIfWORh6xqq+FAYNNEYY9\nrMnU\r\n=bxRk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbfgE5HW904QKqeQUdiuBHwwZYvZ7pS5pwFe/zY9Nh7AiEAqPhRkmDddmDAvcVeV41dysc+ozO9fbdReW2lc9yuETw="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.1.3_1637243424403_0.056323116512770444"},"_hasShrinkwrap":false},"0.2.1":{"name":"@ariana-germany/keycloakify-mui","version":"0.2.1","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","release-it":"^14.11.7","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"89db02b1c72959d8455e603047b2531dce2e99d9","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@0.2.1","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-ffnDyG6hWfpVThjOMkImB9B0fMQXUqfxgakU4yNdeSTA+sypXknDyRJ13x9S5Jrk7KJCn7Ctha6pxYP9i4lmAg==","shasum":"8c4de5e84b5794e4be06391c312e999f1d363aac","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-0.2.1.tgz","fileCount":75,"unpackedSize":1699799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlrFfCRA9TVsSAnZWagAAyUEP/26lNpkZ+1U+W/45tKQD\nv0f9UFQbQ6qqnxnRdekjE7RiD8UEa7p47J33vKaaYPumjaJPMYurW3SgoQC1\n7NYkx6qdgnHF5ODBg/OV+oYrjYveZ5F7g2D7XseKgWP9Wm0QlzK3EFVMkBJz\nMxzpApeylgKgkklYNDOgb+BkWjiMHl6YJO3y5ePQffbwVo3Z6LrV6d9qlkkc\nlfsZ4trqSbcg+nr5g21mCvPhIi+Md+oHakFMkh6WscQhCFB2DxOABaNoI+4N\n+ILa2LmiRU0agC6DvR0zEmq68nT9sirShv5QeJinwzC8ycfFbNC+kIQYqrXc\nrl66i6ZxQ0dUsmNaF7oRmNnxFP7rDXzVRazUOmri10aWmS1HDtURwS7AN6as\nuhUH9+UMKoLPKm2OqWqoDP4KecrB+Wnt+kCFheFuDbSw/Cz2TavFjYegi5xj\nT0iUt2sw1aUALgLAku7V/XGg91ipkGFN9cH0zSmjYaKkTlwWOtJ8W2HsU6Ac\ntyjwCoD6pDNEsWL2I6D6tEnuPj8WKZG8Etz0WGlF6CQkijo0KYT8tiQsRJF5\nTWnu2Pnk8hMFbAW5hM6Rw/eijOEpHZfOpX7INp1YT9GGs6pQwqfFNsZbNsPw\nUjyc2flLAX7R2omph8vRM87AldZcvWZjG9ZJja/of4VgtU2sMsIC8LJ5Xij+\nLq53\r\n=u66N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUWISdn0o+e6swVZKSqY8de4gMTLlbSCqjtrY/kgP9ugIgK6wy1UgGt1lBnYuuLBxLLSzpv0lZE29GE8XOlmhM/tg="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_0.2.1_1637265758960_0.02322946550830296"},"_hasShrinkwrap":false},"1.0.0":{"name":"@ariana-germany/keycloakify-mui","version":"1.0.0","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","release-it":"^14.11.7","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"89db02b1c72959d8455e603047b2531dce2e99d9","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@1.0.0","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-FV9a5jwIUqpHSpA31ae4Bch6IC8uDm/HV+BqzF5qeWlcLTD5vJOGzrAI2MTAw9f8Ifl34Ypb4xMDvV+YuS0x4w==","shasum":"39b1c60b1360a49ab31f190a90e9b5993d09c621","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-1.0.0.tgz","fileCount":75,"unpackedSize":1699799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlrGACRA9TVsSAnZWagAAFnAP/3lEHz7p7sFmfr68rf90\n+jNLoZLsF3JRmZu/vpZK7lr2wcTtEIVCFeJNIesBYw9RFWX64d96yzMQCCNZ\n8Zt+7PB43BiTcvyxCjAdTcWx5OZb2DXfgd7MekakMz4Bjjk9Chlnr4E/py6p\n++/rnXWBsF387PvpLoyOsSrMjR2Cm9y1DtROOXKzvSELX1wFJ/44bpcUFMnO\njpdmp3Yw2Fb6EFHv4BtROBVqCmBYgjn3tCduT22Jc3lUtfghQLOQ7QvYyG1/\nyPoN4LCct7KRoTJJ7lRKTDnN9S+2F/Xj2Skyga6IXhAEKtyYXk1JbtGs5QTF\nz/Q9QqpH0KEJger2/4vU6qfYGySLPrRD3MMmQh29xnXVc1QT5BypdFqUaDqP\nR/RclUgoQwFCVj/TIJpy4ldSlSWzJI95HgxH6Qm1/e0Ix8bPtE8BjrCD2lgx\nqMSCXlPr/6iWBJ9eGZAkKBe7hmWTX/EUzCcjj2N4LKtu2875SqDAOI4dkjtI\neO5fk1P1R+8OqGPxPgxiwhdgOXLERdeYxNcQrzAdRYigIcURZXLfe//FqlUB\nABTB5CeQYd8M0el3CV4HlmENFnyrUnbGB6sX0Cxwe++2RnIxs1h4YKKMn1zE\nfk78NZxtojgLQ8spzFex+vPI+n9kdxvQ7vZEtxvhuf6RuzgIeOCHOqiJVRgy\nOZLx\r\n=kjZm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIBzprYLQWMcr8Zt3UNyZ5hUP9uTrr6OJ5gra0VywBPQIhAJV0L9yLRNdM2aMXPn3Xo5JYnmxhqLL9FQD1x+AWF4C6"}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_1.0.0_1637265791780_0.4780698101249803"},"_hasShrinkwrap":false},"1.0.1":{"name":"@ariana-germany/keycloakify-mui","version":"1.0.1","description":"Keycloak theme generator for Reacts app","repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","scripts":{"clean":"rimraf dist/","build":"rimraf dist/ && tsc && npm run grant-exec-perms && npm run copy-files","grant-exec-perms":"node dist/bin/tools/grant-exec-perms.js","test":"node dist/test/bin/main && node dist/test/lib","copy-files":"copyfiles -u 1 src/**/*.ftl src/**/*.xml src/**/*.js dist/","generate-messages":"node dist/bin/generate-i18n-messages.js","link_in_test_app":"node dist/bin/link_in_test_app.js","_format":"prettier '**/*.{ts,tsx,json,md}'","format":"yarn _format --write","format:check":"yarn _format --list-different"},"bin":{"build-keycloak-theme":"dist/bin/build-keycloak-theme/index.js","download-builtin-keycloak-theme":"dist/bin/download-builtin-keycloak-theme.js"},"lint-staged":{"*.{ts,tsx,json,md}":["prettier --write"]},"husky":{"hooks":{"pre-commit":"lint-staged -v"}},"author":{"name":"u/garronej"},"license":"MIT","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"homepage":"https://github.com/ariana-germany/keycloakify","peerDependencies":{"@emotion/react":"^11.4.1","powerhooks":"^0.10.0","react":"^16.8.0 || ^17.0.0","tss-react":"^1.1.0"},"devDependencies":{"@emotion/react":"^11.6.0","@types/node":"^10.0.0","@types/react":"^17.0.0","copyfiles":"^2.4.1","husky":"^4.3.8","lint-staged":"^11.0.0","powerhooks":"^0.11.0","prettier":"^2.3.0","properties-parser":"^0.3.1","react":"^17.0.1","release-it":"^14.11.7","rimraf":"^3.0.2","tss-react":"^1.1.0","typescript":"^4.2.3"},"dependencies":{"@emotion/styled":"^11.6.0","@mui/material":"^5.1.1","@mui/system":"^5.1.1","cheerio":"^1.0.0-rc.5","evt":"2.0.0-beta.38","minimal-polyfills":"^2.2.1","path-browserify":"^1.0.1","react-markdown":"^5.0.3","scripting-tools":"^0.19.13","tsafe":"^0.8.1"},"gitHead":"de2f160c5285b1358a801273d7ef1eb656b2bf62","bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"_id":"@ariana-germany/keycloakify-mui@1.0.1","_nodeVersion":"14.17.1","_npmVersion":"7.20.6","dist":{"integrity":"sha512-FWAoT1h1kQTq2tI2jEBlm7zF7tj4IcJJJs8k6vaTHNoIYUWus2oDhpVf+BHfkSBrgiHeoxVNoBOwCmvzPCInSg==","shasum":"3c8e521576742c8ee4c5b3bbf295caf173c025b8","tarball":"https://registry.npmjs.org/@ariana-germany/keycloakify-mui/-/keycloakify-mui-1.0.1.tgz","fileCount":283,"unpackedSize":4883359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlrQYCRA9TVsSAnZWagAAWtIP/3N9B0SAREMgBxL5eMS7\nlddX6y118BM14R3NfVCK61LXWsaN2G+mQcnO15W3CrHIeH8cOaVw+mbSRxwW\nA6MsTj/xmPhrSbMh4pjyf5VCxGLMpQcbfo3wPt15bS3Rth8XzVXPMuxjXU4e\nQkrA2Z83Zz3OP/iKUFHaTj/Y5V+Dt19fYjZgiAuCXyOpZrLfsLJMroO7lWsx\nPps0kjo9MWr0GoFYPNVwm44tfqJvZLKl/pGSQ3ONz7hpEtY2mLbRGEEN8hVT\niu/M/jiwc96w2Mp7sHNQkigoZMUiynLfECiJ0tO3IrQdVEvPMnbsQvchQxPp\nVV7ixa5z7zuYRG36VlykEdsfihgt1ZN5AXeSBltApPnhh9/THk6hrgO+RgsO\nN/ZhxTa1LNNyt8CLMnKnMKVEdjvvvp2Ob7n9lkcRvPPhIEfYnG4nbT4bP/1U\n7SfF7mVSQ5mLNo0iQqWWHrj1sQJgrb6v3dgXYYbHsAwLnD3mELzn1fKDoWGA\nsmWMUtt6uYhCcP3I/dd8ktuZ9qOzzMb56y+qas9x5VXY/0sj/8r3CwVviI6p\n//SU8axNLksFP/9TU6LRSprzevgRaLMIfN5+pSmR869cvPyX47GkYyOvpmUg\nnkWYHab/ONskHqMsYRJ/eZ3tO+16/PSCNQP3Qvvz07zIIa69a7YKEaA75321\nUAFr\r\n=voB2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0/h9DLUOpVpXlhQ26kyHqxQSKs+QVc43N/zeFzQiQ/QIgE+P1RCNEfkbGEHbclLpf3WyAdvrSycBFSlaMFugBAAY="}]},"_npmUser":{"name":"sh.fard","email":"shayandavarifard@yahoo.com"},"directories":{},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloakify-mui_1.0.1_1637266456718_0.9560504916614547"},"_hasShrinkwrap":false}},"time":{"created":"2021-11-17T15:35:54.465Z","0.0.1":"2021-11-17T15:35:54.712Z","modified":"2022-04-04T15:24:56.731Z","0.0.2":"2021-11-17T15:46:25.788Z","0.0.3":"2021-11-17T17:30:11.247Z","0.0.4":"2021-11-17T19:36:47.902Z","0.0.5":"2021-11-17T19:46:38.008Z","0.0.6":"2021-11-17T19:51:06.361Z","0.1.0":"2021-11-17T19:52:24.810Z","0.1.1":"2021-11-18T13:04:12.550Z","0.1.2":"2021-11-18T13:17:07.905Z","0.1.3":"2021-11-18T13:50:24.615Z","0.2.1":"2021-11-18T20:02:39.148Z","1.0.0":"2021-11-18T20:03:12.099Z","1.0.1":"2021-11-18T20:14:16.959Z"},"maintainers":[{"name":"sh.fard","email":"shayandavarifard@yahoo.com"}],"description":"Keycloak theme generator for Reacts app","homepage":"https://github.com/ariana-germany/keycloakify","keywords":["bluehats","keycloak","react","theme","FreeMarker","ftl","login","register"],"repository":{"type":"git","url":"git://github.com/ariana-germany/keycloakify.git"},"author":{"name":"u/garronej"},"bugs":{"url":"https://github.com/ariana-germany/keycloakify/issues"},"license":"MIT","readme":"<p align=\"center\">\n    <img src=\"https://user-images.githubusercontent.com/6702424/109387840-eba11f80-7903-11eb-9050-db1dad883f78.png\">  \n</p>\n<p align=\"center\">\n    <i>🔏  Create Keycloak themes using React 🔏</i>\n    <br>\n    <br>\n    <img src=\"https://github.com/garronej/keycloakify/workflows/ci/badge.svg?branch=develop\">\n    <img src=\"https://img.shields.io/bundlephobia/minzip/keycloakify\">\n    <img src=\"https://img.shields.io/npm/dw/keycloakify\">\n    <img src=\"https://img.shields.io/npm/l/keycloakify\">\n    <img src=\"https://camo.githubusercontent.com/0f9fcc0ac1b8617ad4989364f60f78b2d6b32985ad6a508f215f14d8f897b8d3/68747470733a2f2f62616467656e2e6e65742f62616467652f547970655363726970742f7374726963742532302546302539462539322541412f626c7565\">\n    <a href=\"https://github.com/thomasdarimont/awesome-keycloak\">\n        <img src=\"https://awesome.re/mentioned-badge.svg\"/>\n    </a>\n</p>\n\n<p align=\"center\">\n    <i>Ultimately this build tool generates a Keycloak theme</i>\n    <img src=\"https://user-images.githubusercontent.com/6702424/110260457-a1c3d380-7fac-11eb-853a-80459b65626b.png\">\n</p>\n\n**NEW in v4**\n\n-   Out of the box [frontend form validation](#user-profile-and-frontend-form-validation) 🥳\n-   Improvements (and breaking changes in `import { useKcMessage } from \"keycloakify\"`.\n\n# Motivations\n\nKeycloak provides [theme support](https://www.keycloak.org/docs/latest/server_development/#_themes) for web pages. This allows customizing the look and feel of end-user facing pages so they can be integrated with your applications.\nIt involves, however, a lot of raw JS/CSS/[FTL]() hacking, and bundling the theme is not exactly straightforward.\n\nBeyond that, if you use Keycloak for a specific app you want your login page to be tightly integrated with it.\nIdeally, you don't want the user to notice when he is being redirected away.\n\nTrying to reproduce the look and feel of a specific app in another stack is not an easy task not to mention\nthe cheer amount of maintenance that it involves.\n\n<p align=\"center\">\n    <i>Without keycloakify, users suffers from a harsh context switch, no fronted form pre-validation</i><br>\n    <img src=\"https://user-images.githubusercontent.com/6702424/134997335-a28b4a57-0884-47ec-9341-a0e49f835c4d.gif\">\n</p>\n\nWouldn't it be great if we could just design the login and register pages as if they were part of our app?  \nHere is `keycloakify` for you 🍸\n\n<p align=\"center\">\n    <i> <a href=\"https://datalab.sspcloud.fr\">With keycloakify:</a> </i> \n    <br>\n    <img src=\"https://user-images.githubusercontent.com/6702424/114332075-c5e37900-9b45-11eb-910b-48a05b3d90d9.gif\">\n</p>\n\n**TL;DR**: [Here](https://github.com/garronej/keycloakify-demo-app) is a Hello World React project with Keycloakify set up.\n\nIf you already have a Keycloak custom theme, it can be easily ported to Keycloakify.\n\n---\n\n-   [Motivations](#motivations)\n-   [Requirements](#requirements)\n    -   [My framework doesn’t seem to be supported, what can I do?](#my-framework-doesnt-seem-to-be-supported-what-can-i-do)\n-   [How to use](#how-to-use)\n    -   [Setting up the build tool](#setting-up-the-build-tool)\n        -   [Changing just the look of the default Keycloak theme](#changing-just-the-look-of-the-default-keycloak-theme)\n        -   [Advanced pages configuration](#advanced-pages-configuration)\n        -   [Hot reload](#hot-reload)\n    -   [Enable loading in a blink of an eye of login pages ⚡ (--external-assets)](#enable-loading-in-a-blink-of-an-eye-of-login-pages----external-assets)\n-   [User profile and frontend form validation](#user-profile-and-frontend-form-validation)\n-   [Support for Terms and conditions](#support-for-terms-and-conditions)\n-   [Some pages still have the default theme. Why?](#some-pages-still-have-the-default-theme-why)\n-   [GitHub Actions](#github-actions)\n-   [Limitations](#limitations)\n    -   [`process.env.PUBLIC_URL` not supported.](#processenvpublic_url-not-supported)\n    -   [`@font-face` importing fonts from the `src/` dir](#font-face-importing-fonts-from-thesrc-dir)\n        -   [Example of setup that **won't** work](#example-of-setup-that-wont-work)\n        -   [Possible workarounds](#possible-workarounds)\n-   [Implement context persistence (optional)](#implement-context-persistence-optional)\n-   [Kickstart video](#kickstart-video)\n-   [About the errors related to `objectToJson` in Keycloak logs.](#about-the-errors-related-to-objecttojson-in-keycloak-logs)\n-   [Adding custom message (to `i18n/useKcMessage.tsx`)](#adding-custom-message-to-i18nusekcmessagetsx)\n-   [Email domain whitelist](#email-domain-whitelist)\n-   [Changelog highlights](#changelog-highlights)\n    -   [v4](#v4)\n    -   [v3](#v3)\n    -   [v2.5](#v25)\n    -   [v2](#v2)\n\n# Requirements\n\nTested with the following Keycloak versions:\n\n-   [11.0.3](https://hub.docker.com/layers/jboss/keycloak/11.0.3/images/sha256-4438f1e51c1369371cb807dffa526e1208086b3ebb9cab009830a178de949782?context=explore)\n-   [12.0.4](https://hub.docker.com/layers/jboss/keycloak/12.0.4/images/sha256-67e0c88e69bd0c7aef972c40bdeb558a974013a28b3668ca790ed63a04d70584?context=explore)\n-   [15.0.2](https://hub.docker.com/layers/jboss/keycloak/15.0.2/images/sha256-d8ed1ee5df42a178c341f924377da75db49eab08ea9f058ff39a8ed7ee05ec93?context=explore)\n\nThis tool will be maintained to stay compatible with Keycloak v11 and up, however, the default pages you will get\n(before you customize it) will always be the ones of Keycloak v11.\n\nThis tool assumes you are bundling your app with Webpack (tested with 4.44.2) .\nIt assumes there is a `build/` directory at the root of your react project directory containing a `index.html` file\nand a `build/static/` directory generated by webpack.\nFor more information see [this issue](https://github.com/InseeFrLab/keycloakify/issues/5#issuecomment-832296432)\n\n**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 4.0.3)\n\n-   `mvn` ([Maven](https://maven.apache.org/)), `rm`, `mkdir`, `curl`, `unzip` are assumed to be available.\n-   `docker` must be up and running when running `yarn keycloak`.\n\nOn Windows you'll have to use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10).\n\n## My framework doesn’t seem to be supported, what can I do?\n\nCurrently Keycloakify is only compatible with `create-react-app` apps.\nIt doesn’t mean that you can't use Keycloakify if you are using Next.js, Express or any other\nframework that involves SSR but your Keycloak theme will need to be a standalone project.  \nFind specific instructions about how to get started [**here**](https://github.com/garronej/keycloakify-demo-app#keycloak-theme-only).\n\nTo share your styles between your main app and your login pages you will need to externalize your design system by making it a\nseparate module. Checkout [ts_ci](https://github.com/garronej/ts_ci), it can help with that.\n\n# How to use\n\n## Setting up the build tool\n\n```bash\nyarn add keycloakify @emotion/react tss-react powerhooks\n```\n\n[`package.json`](https://github.com/garronej/keycloakify-demo-app/blob/main/package.json)\n\n```json\n\"scripts\": {\n    \"keycloak\": \"yarn build && build-keycloak-theme\",\n}\n```\n\n```bash\nyarn keycloak # generates keycloak-theme.jar\n```\n\nOn the console will be printed all the instructions about how to load the generated theme in Keycloak\n\n### Changing just the look of the default Keycloak theme\n\nThe first approach is to only customize the style of the default Keycloak login by providing\nyour own class names.\n\nIf you have created a new React project specifically to create a Keycloak theme and nothing else then\nyour index should look something like:\n\n`src/index.tsx`\n\n```tsx\nimport { App } from \"./<wherever>/App\";\nimport {\n  KcApp,\n  defaultKcProps,\n  getKcContext\n} from \"keycloakify\";\nimport { css } from \"tss-react/@emotion/css\";\n\nconst { kcContext } = getKcContext();\n\nconst myClassName = css({ \"color\": \"red\" });\n\nreactDom.render(\n        <KcApp\n            kcContext={kcContext}\n            {...{\n                ...defaultKcProps,\n                \"kcHeaderWrapperClass\": myClassName\n            }}\n        />\n    document.getElementById(\"root\")\n);\n```\n\nIf you share a unique project for your app and the Keycloak theme, your index should look\nmore like this:\n\n`src/index.tsx`\n\n```tsx\nimport { App } from \"./<wherever>/App\";\nimport { KcApp, defaultKcProps, getKcContext } from \"keycloakify\";\nimport { css } from \"tss-react/@emotion/css\";\n\nconst { kcContext } = getKcContext();\n\nconst myClassName = css({ \"color\": \"red\" });\n\nreactDom.render(\n    // Unless the app is currently being served by Keycloak\n    // kcContext is undefined.\n    kcContext !== undefined ? (\n        <KcApp\n            kcContext={kcContext}\n            {...{\n                ...defaultKcProps,\n                \"kcHeaderWrapperClass\": myClassName,\n            }}\n        />\n    ) : (\n        <App />\n    ), // Your actual app\n    document.getElementById(\"root\"),\n);\n```\n\n<p align=\"center\">\n    <i>result:</i></br>\n    <img src=\"https://user-images.githubusercontent.com/6702424/114326299-6892fc00-9b34-11eb-8d75-85696e55458f.png\">\n</p>\n\nExample of a customization using only CSS: [here](https://github.com/InseeFrLab/onyxia-ui/blob/012639d62327a9a56be80c46e32c32c9497b82db/src/app/components/KcApp.tsx)\n(the [index.tsx](https://github.com/InseeFrLab/onyxia-ui/blob/012639d62327a9a56be80c46e32c32c9497b82db/src/app/index.tsx#L89-L94) )\nand the result you can expect:\n\n<p align=\"center\">\n    <i> <a href=\"https://datalab.sspcloud.fr\">Customization using only CSS:</a> </i> \n    <br>\n    <img src=\"https://github.com/InseeFrLab/keycloakify/releases/download/v0.3.8/keycloakify_after.gif\">\n</p>\n\n### Advanced pages configuration\n\nIf you want to go beyond only customizing the CSS you can re-implement some of the\npages or even add new ones.\n\nIf you want to go this way checkout the demo setup provided [here](https://github.com/garronej/keycloakify-demo-app/tree/look_and_feel).\nIf you prefer a real life example you can checkout [onyxia-web's source](https://github.com/InseeFrLab/onyxia-web/tree/main/src/app/components/KcApp).\nThe web app is in production [here](https://datalab.sspcloud.fr).\n\nMain takeaways are:\n\n-   You must declare your custom pages in the package.json. [example](https://github.com/garronej/keycloakify-demo-app/blob/4eb2a9f63e9823e653b2d439495bda55e5ecc134/package.json#L17-L22)\n-   (TS only) You must declare theses page in the type argument of the getter\n    function for the `kcContext` in order to have the correct typings. [example](https://github.com/garronej/keycloakify-demo-app/blob/4eb2a9f63e9823e653b2d439495bda55e5ecc134/src/KcApp/kcContext.ts#L16-L21)\n-   (TS only) If you use Keycloak plugins that defines non standard `.ftl` values\n    (Like for example [this plugin](https://github.com/micedre/keycloak-mail-whitelisting)\n    that define `authorizedMailDomains` in `register.ftl`) you should\n    declare theses value to get the type. [example](https://github.com/garronej/keycloakify-demo-app/blob/4eb2a9f63e9823e653b2d439495bda55e5ecc134/src/KcApp/kcContext.ts#L6-L13)\n-   You should provide sample data for all the non standard value if you want to be able\n    to debug the page outside of keycloak. [example](https://github.com/garronej/keycloakify-demo-app/blob/4eb2a9f63e9823e653b2d439495bda55e5ecc134/src/KcApp/kcContext.ts#L28-L43)\n\nWARNING: If you chose to go this way use:\n\n```json\n\"dependencies\": {\n    \"keycloakify\": \"~X.Y.Z\"\n}\n```\n\nin your `package.json` instead of `^X.Y.Z`. A minor update of Keycloakify might break your app.\n\n### Hot reload\n\nRebuild the theme each time you make a change to see the result is not practical.\nIf you want to test your login screens outside of Keycloak you can mock a given `kcContext`:\n\n```tsx\nimport {\n    KcApp,\n    defaultKcProps,\n    getKcContext\n} from \"keycloakify\";\n\nconst { kcContext } = getKcContext({\n    \"mockPageId\": \"login.ftl\"\n});\n\nreactDom.render(\n        <KcApp\n            kcContext={kcContextMocks.kcLoginContext}\n            {...defaultKcProps}\n        />\n    document.getElementById(\"root\")\n);\n```\n\nThen `yarn start`, you will see your login page.\n\nCheckout [this concrete example](https://github.com/garronej/keycloakify-demo-app/blob/main/src/index.tsx)\n\n## Enable loading in a blink of an eye of login pages ⚡ (--external-assets)\n\nBy default the theme generated is standalone. Meaning that when your users\nreach the login pages all scripts, images and stylesheet are downloaded from the Keycloak server.  \nIf you are specifically building a theme to integrate with an app or a website that allows users\nto first browse unauthenticated before logging in, you will get a significant\nperformance boost if you jump through those hoops:\n\n-   Provide the url of your app in the `homepage` field of package.json. [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/package.json#L2)\n-   Build the theme using `npx build-keycloak-theme --external-assets` [ex](https://github.com/garronej/keycloakify-demo-app/blob/7847cc70ef374ab26a6cc7953461cf25603e9a6d/.github/workflows/ci.yaml#L21)\n-   Enable [long-term assets caching](https://create-react-app.dev/docs/production-build/#static-file-caching) on the server hosting your app.\n-   Make sure not to build your app and the keycloak theme separately\n    and remember to update the Keycloak theme every time you update your app.\n-   Be mindful that if your app is down your login pages are down as well.\n\nCheckout a complete setup [here](https://github.com/garronej/keycloakify-demo-app#about-keycloakify)\n\n# User profile and frontend form validation\n\n<p align=\"center\">\n    <a href=\"https://github.com/InseeFrLab/keycloakify/releases/download/v0.0.1/keycloakify_fontend_validation.mp4\">\n        <img src=\"https://user-images.githubusercontent.com/6702424/138880146-6fef3280-c4a5-46d2-bbb3-8b9598c057a5.gif\">\n    </a>\n</p>\n\nNOTE: In reality the regexp used in this gif doesn't work server side, the regexp pattern should be `^[^@]@gmail\\.com$` 😬.\n\nUser Profile is a Keycloak feature that enables to\n[define, from the admin console](https://user-images.githubusercontent.com/6702424/136872461-1f5b64ef-d2ef-4c6b-bb8d-07d4729552b3.png),\nwhat information you want to collect on your users in the register page and to validate inputs\n[**on the frontend**, in realtime](https://github.com/InseeFrLab/keycloakify/blob/6dca6a93d8cfe634ee4d8574ad0c091641220092/src/lib/getKcContext/KcContextBase.ts#L225-L261)!\n\nNOTE: User profile is only available in Keycloak 15 and it's a beta feature that\n[needs to be enabled when launching keycloak](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/bin/build-keycloak-theme/build-keycloak-theme.ts#L116-L117)\nand [enabled in the console](https://user-images.githubusercontent.com/6702424/136874428-b071d614-c7f7-440d-9b2e-670faadc0871.png).\n\nKeycloakify, in [`register-user-profile.ftl`](https://github.com/InseeFrLab/keycloakify/blob/main/src/lib/components/RegisterUserProfile.tsx),\nprovides frontend validation out of the box.\n\nFor implementing your own `register-user-profile.ftl` page, you can use [`import { useFormValidationSlice } from \"keycloakify\";`](https://github.com/InseeFrLab/keycloakify/blob/main/src/lib/useFormValidationSlice.tsx).  \nFind usage example [`here`](https://github.com/InseeFrLab/keycloakify/blob/d3a07edfcb3739e30032dc96fc2a55944dfc3387/src/lib/components/RegisterUserProfile.tsx#L79-L112).\n\nAs for right now [it's not possible to define a pattern for the password](https://keycloak.discourse.group/t/make-password-policies-available-to-freemarker/11632)\nfrom the admin console. You can however pass validators for it to the `useFormValidationSlice` function.\n\n# Support for Terms and conditions\n\n[Many organizations have a requirement that when a new user logs in for the first time, they need to agree to the terms and conditions of the website.](https://www.keycloak.org/docs/4.8/server_admin/#terms-and-conditions).\n\nFirst you need to enable the required action on the Keycloak server admin console:  \n![image](https://user-images.githubusercontent.com/6702424/114280501-dad2e600-9a39-11eb-9c39-a225572dd38a.png)\n\nThen to load your own therms of services using [like this](https://github.com/garronej/keycloakify-demo-app/blob/8168c928a66605f2464f9bd28a4dc85fb0a231f9/src/index.tsx#L42-L66).\n\n# Some pages still have the default theme. Why?\n\nThis project only support out of the box the most common user facing pages of Keycloak login.  \n[Here](https://user-images.githubusercontent.com/6702424/116787906-227fe700-aaa7-11eb-92ee-22e7673717c2.png) is the complete list of pages (you get them after running `yarn test`)\nand [here](https://github.com/InseeFrLab/keycloakify/tree/main/src/lib/components) are the pages currently implemented by this module.  \nIf you need to customize pages that are not supported yet or if you need to implement some non standard `.ftl` pages please refer to [Advanced pages configuration](#advanced-pages-configuration).\n\n# GitHub Actions\n\n![image](https://user-images.githubusercontent.com/6702424/114286938-47aea600-9a63-11eb-936e-17159e8826e8.png)\n\n[Here is a demo repo](https://github.com/garronej/keycloakify-demo-app) to show how to automate\nthe building and publishing of the theme (the .jar file).\n\n# Limitations\n\n## `process.env.PUBLIC_URL` not supported.\n\nYou won't be able to [import things from your public directory **in your JavaScript code**](https://create-react-app.dev/docs/using-the-public-folder/#adding-assets-outside-of-the-module-system).\n(This isn't recommended anyway).\n\n## `@font-face` importing fonts from the `src/` dir\n\nIf you are building the theme with [--external-assets](#enable-loading-in-a-blink-of-a-eye-of-login-pages-)\nthis limitation doesn't apply, you can import fonts however you see fit.\n\n### Example of setup that **won't** work\n\n-   We have a `fonts/` directory in `src/`\n-   We import the font like this [`src: url(\"/fonts/my-font.woff2\") format(\"woff2\");`](https://github.com/garronej/keycloakify-demo-app/blob/07d54a3012ef354ee12b1374c6f7ad1cb125d56b/src/fonts.scss#L4) in a `.scss` a file.\n\n### Possible workarounds\n\n-   Use [`--external-assets`](#enable-loading-in-a-blink-of-a-eye-of-login-pages-).\n-   If it is possible, use Google Fonts or any other font provider.\n-   If you want to host your font recommended approach is to move your fonts into the `public`\n    directory and to place your `@font-face` statements in the `public/index.html`.  \n    Example [here](https://github.com/InseeFrLab/onyxia-ui/blob/0e3a04610cfe872ca71dad59e05ced8f785dee4b/public/index.html#L6-L51).\n-   You can also [use non relative url](https://github.com/garronej/keycloakify-demo-app/blob/2de8a9eb6f5de9c94f9cd3991faad0377e63268c/src/fonts.scss#L16) but don't forget [`Access-Control-Allow-Origin`](https://github.com/garronej/keycloakify-demo-app/blob/2de8a9eb6f5de9c94f9cd3991faad0377e63268c/nginx.conf#L17-L19).\n\n# Implement context persistence (optional)\n\nIf, before logging in, a user has selected a specific language\nyou don't want it to be reset to default when the user gets redirected to\nthe login or register pages.\n\nSame goes for the dark mode, you don't want, if the user had it enabled\nto show the login page with light themes.\n\nThe problem is that you are probably using `localStorage` to persist theses values across\nreload but, as the Keycloak pages are not served on the same domain that the rest of your\napp you won't be able to carry over states using `localStorage`.\n\nThe only reliable solution is to inject parameters into the URL before\nredirecting to Keycloak. We integrate with\n[`keycloak-js`](https://github.com/keycloak/keycloak-documentation/blob/master/securing_apps/topics/oidc/javascript-adapter.adoc),\nby providing you a way to tell `keycloak-js` that you would like to inject\nsome search parameters before redirecting.\n\nThe method also works with [`@react-keycloak/web`](https://www.npmjs.com/package/@react-keycloak/web) (use the `initOptions`).\n\nYou can implement your own mechanism to pass the states in the URL and\nrestore it on the other side but we recommend using `powerhooks/useGlobalState`\nfrom the library [`powerhooks`](https://www.powerhooks.dev) that provide an elegant\nway to handle states such as `isDarkModeEnabled` or `selectedLanguage`.\n\nLet's modify [the example](https://github.com/keycloak/keycloak-documentation/blob/master/securing_apps/topics/oidc/javascript-adapter.adoc) from the official `keycloak-js` documentation to\nenables the states of `useGlobalStates` to be injected in the URL before redirecting.  \nNote that the states are automatically restored on the other side by `powerhooks`\n\n```typescript\nimport keycloak_js from \"keycloak-js\";\nimport { injectGlobalStatesInSearchParams } from \"powerhooks/useGlobalState\";\nimport { createKeycloakAdapter } from \"keycloakify\";\n\n//...\n\nconst keycloakInstance = keycloak_js({\n    \"url\": \"http://keycloak-server/auth\",\n    \"realm\": \"myrealm\",\n    \"clientId\": \"myapp\",\n});\n\nkeycloakInstance.init({\n    \"onLoad\": \"check-sso\",\n    \"silentCheckSsoRedirectUri\": window.location.origin + \"/silent-check-sso.html\",\n    \"adapter\": createKeycloakAdapter({\n        \"transformUrlBeforeRedirect\": injectGlobalStatesInSearchParams,\n        keycloakInstance,\n    }),\n});\n\n//...\n```\n\nIf you really want to go the extra miles and avoid having the white\nflash of the blank html before the js bundle have been evaluated\n[here is a snippet](https://github.com/InseeFrLab/onyxia-ui/blob/a77eb502870cfe6878edd0d956c646d28746d053/public/index.html#L5-L54) that you can place in your `public/index.html` if you are using `powerhooks/useGlobalState`.\n\n# Kickstart video\n\n_NOTE: keycloak-react-theming was renamed keycloakify since this video was recorded_\n[![kickstart_video](https://user-images.githubusercontent.com/6702424/108877866-f146ee80-75ff-11eb-8120-003b3c5f6dd8.png)](https://youtu.be/xTz0Rj7i2v8)\n\n# About the errors related to `objectToJson` in Keycloak logs.\n\nThe logs of your keycloak server will always show this kind of errors every time a client request a page:\n\n```log\nFTL stack trace (\"~\" means nesting-related):\n        - Failed at: #local value = object[key]  [in template \"login.ftl\" in macro \"objectToJson_please_ignore_errors\" at line 70, column 21]\n        - Reached through: @compress  [in template \"login.ftl\" in macro \"objectToJson_please_ignore_errors\" at line 36, column 5]\n        - Reached through: @objectToJson_please_ignore_errors object=value depth=(dep...  [in template \"login.ftl\" in macro \"objectToJson_please_ignore_errors\" at line 81, column 27]\n        - Reached through: @compress  [in template \"login.ftl\" in macro \"objectToJson_please_ignore_errors\" at line 36, column 5]\n        - Reached through: @objectToJson_please_ignore_errors object=(.data_model) de...  [in template \"login.ftl\" at line 163, column 43]\n```\n\nTheses are expected to show up in the log.\nUnfortunately, there is nothing I know of that can be done to avoid them or even mute them.\nThey can be, however, safely ignored.\n\nTo [converts the `.ftl` values into a JavaScript object](https://github.com/InseeFrLab/keycloakify/blob/main/src/bin/build-keycloak-theme/generateFtl/common.ftl)\nwithout making assumptions on the `.data_model` we have to do things that throws.  \nIt's all-right because every statement that can fail is inside an `<#attempt><#recorver>` block but it results in errors being printed to the logs.\n\n# Adding custom message (to `i18n/useKcMessage.tsx`)\n\nYou can reproduce [this approach](https://github.com/garronej/keycloakify-demo-app/blob/main/src/kcMessagesExtension.ts)\n( don't forget to [evaluate the code](https://github.com/garronej/keycloakify-demo-app/blob/0a6d349dba89a5702f98ba48bca6c76ac7265e1f/src/index.tsx#L15) ).  \nThis approach is a bit hacky as it doesn't provide type safety but it works.\n\n# Email domain whitelist\n\nNOTE: This have been kind of deprecated by [user attribute](#user-profile-and-frontend-form-validation) you could\nuse a pattern [like this one](https://github.com/InseeFrLab/onyxia-web/blob/f1206e0329b3b8d401ca7bffa95ca9c213cb190a/src/app/components/KcApp/kcContext.ts#L106) to whitelist email domains.\n\nIf you want to restrict the emails domain that can register, you can use [this plugin](https://github.com/micedre/keycloak-mail-whitelisting)\nand `kcRegisterContext[\"authorizedMailDomains\"]` to validate on.\n\n# Changelog highlights\n\n## v4\n\n-   Out of the box [frontend form validation](#user-profile-and-frontend-form-validation) 🥳\n-   Improvements (and breaking changes in `import { useKcMessage } from \"keycloakify\"`.\n\n## v3\n\nNo breaking changes except that `@emotion/react`, [`tss-react`](https://www.npmjs.com/package/tss-react) and [`powerhooks`](https://www.npmjs.com/package/powerhooks) are now `peerDependencies` instead of being just dependencies.  \nIt's important to avoid problem when using `keycloakify` alongside [`mui`](https://mui.com) and\n[when passing params from the app to the login page](https://github.com/InseeFrLab/keycloakify#implement-context-persistence-optional).\n\n## v2.5\n\n-   Feature [Use advanced message](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/lib/i18n/useKcMessage.tsx#L53-L66)\n    and [`messagesPerFields`](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/lib/getKcContext/KcContextBase.ts#L70-L75) (implementation [here](https://github.com/InseeFrLab/keycloakify/blob/59f106bf9e210b63b190826da2bf5f75fc8b7644/src/bin/build-keycloak-theme/generateFtl/common.ftl#L130-L189))\n-   Test container now uses Keycloak version `15.0.2`.\n\n## v2\n\n-   It's now possible to implement custom `.ftl` pages.\n-   Support for Keycloak plugins that introduce non standard ftl values.\n    (Like for example [this plugin](https://github.com/micedre/keycloak-mail-whitelisting) that define `authorizedMailDomains` in `register.ftl`).\n","readmeFilename":"README.md"}