@silexlabs/silex-dashboard 1.5.0-canary.1 → 1.5.0-canary.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/DASHBOARD-ARCHITECTURE.md +1410 -0
  2. package/_site/css/connectors-e4ae24975f4df2e2bea5121337282d8f2201bb86dc8c041c9ef43c0c2d7a32a7.css +1 -0
  3. package/_site/css/fork-506e7c805e636be6225c35a11f5804b72cf41d7a6355aa64a5d7ddb7d66ea314.css +1 -0
  4. package/_site/css/fork-923d814802e46c2d0db0f71c5c488c616ca0016f340d8dae66b263ba7f1143bc.css +1 -0
  5. package/_site/css/index-38d10542f641eb789c11b589b95d0e6363e71978479fa5cddbec3da65774560c.css +1 -0
  6. package/_site/en/connectors/index.html +51 -26
  7. package/_site/en/fork/index.html +371 -0
  8. package/_site/en/index.html +30 -28
  9. package/_site/fr/connectors/index.html +52 -27
  10. package/_site/fr/fork/index.html +372 -0
  11. package/_site/fr/index.html +31 -29
  12. package/collections/fork/en.md +17 -0
  13. package/collections/fork/fr.md +17 -0
  14. package/package.json +2 -2
  15. package/silex/websites/default/meta.json +4 -0
  16. package/silex/websites/default/website.json +6 -0
  17. package/templates/connectors-en.html +66 -41
  18. package/templates/connectors-fr.html +66 -41
  19. package/templates/css/connectors-e4ae24975f4df2e2bea5121337282d8f2201bb86dc8c041c9ef43c0c2d7a32a7.css +1 -0
  20. package/templates/css/fork-506e7c805e636be6225c35a11f5804b72cf41d7a6355aa64a5d7ddb7d66ea314.css +1 -0
  21. package/templates/css/fork-923d814802e46c2d0db0f71c5c488c616ca0016f340d8dae66b263ba7f1143bc.css +1 -0
  22. package/templates/css/index-38d10542f641eb789c11b589b95d0e6363e71978479fa5cddbec3da65774560c.css +1 -0
  23. package/templates/fork-en.11tydata.mjs +117 -0
  24. package/templates/fork-en.html +412 -0
  25. package/templates/fork-fr.11tydata.mjs +117 -0
  26. package/templates/fork-fr.html +412 -0
  27. package/templates/{websites-en.11tydata.mjs → index-en.11tydata.mjs} +32 -32
  28. package/templates/{websites-en.html → index-en.html} +91 -89
  29. package/templates/{websites-fr.11tydata.mjs → index-fr.11tydata.mjs} +32 -32
  30. package/templates/{websites-fr.html → index-fr.html} +91 -89
  31. package/tina/config.ts +76 -0
  32. package/tina/tina-lock.json +1 -1
  33. package/_site/connectors/index.html +0 -278
  34. package/_site/css/connectors-1350f25629f7addac6970f5297f8aef050ba1c207b28c8a0e4a7b113246d69dc.css +0 -1
  35. package/_site/css/connectors-152b01dfacf0586ce2f3fb0ddbbf5a5bbcd181a48b4b20b275f837786b2889cd.css +0 -1
  36. package/_site/css/connectors-306649a254eff69e10db2fa5368e173e88e24449db25d65b7117ebfd5dbbcd31.css +0 -1
  37. package/_site/css/connectors-66fe82f10a7a257f59212e18bb384b019ffb12192fa3f748951da7d4428733b4.css +0 -1
  38. package/_site/css/connectors-748797d88cc32c0787052966e54e4f794629b8460d24f2aadac83c13899574fb.css +0 -1
  39. package/_site/css/connectors-87cf0f4b873d104a845dcafd5d80d4f8d482f8cea15f2412cd9655071dcb9ea8.css +0 -1
  40. package/_site/css/connectors-885e03b1611113e2363f7a86fba9aee867130a14836b3cc9c4714265708c1704.css +0 -1
  41. package/_site/css/connectors-9d0c9569a2ce8afaa4a30a0534b3d0597c761c7e0e5280dcbc966dc2b709e98e.css +0 -1
  42. package/_site/css/connectors-a8ae93c40b7c738a4514e47046a029afdcf74bb28a7724287e1350afac4fa60f.css +0 -1
  43. package/_site/css/connectors-c1d5f4c520a9a86d99b7201d30a8fe25a5779b7b2373b73262868f446fe3f855.css +0 -1
  44. package/_site/css/connectors-febcafaf261c0f23ca11fc13809f259c74dbdd50b6a47506ba295fdb99d1b4a4.css +0 -1
  45. package/_site/css/websites-19b822a8683767833f7656ff2df318ba13bed49f33d9bfc946ff619cf986b449.css +0 -1
  46. package/_site/css/websites-4b9b2b0a0a907b33eca109d50c2a3eee97f1955c742cef487110d21a0bbf8f50.css +0 -1
  47. package/_site/css/websites-7843a323acc9c4921d373250c5f647854910ea0913530659823fbe29844ee6b5.css +0 -1
  48. package/_site/css/websites-931c1ae713658c5aca51e25f5c43a79611c9a762dc38b989cc99ad4dbd4eda8e.css +0 -1
  49. package/_site/css/websites-c678e6ed7f508aa4b0e9218070d7235ed56f0eaea49350b30b849f4ef176cfb0.css +0 -1
  50. package/_site/css/websites-e6d63d0512032a2909a7f648cecfad311842ecba7bd03f94afc8639998e606f0.css +0 -1
  51. package/_site/websites/index.html +0 -360
  52. package/templates/connectors.html +0 -278
  53. package/templates/css/connectors-1350f25629f7addac6970f5297f8aef050ba1c207b28c8a0e4a7b113246d69dc.css +0 -1
  54. package/templates/css/connectors-152b01dfacf0586ce2f3fb0ddbbf5a5bbcd181a48b4b20b275f837786b2889cd.css +0 -1
  55. package/templates/css/connectors-306649a254eff69e10db2fa5368e173e88e24449db25d65b7117ebfd5dbbcd31.css +0 -1
  56. package/templates/css/connectors-66fe82f10a7a257f59212e18bb384b019ffb12192fa3f748951da7d4428733b4.css +0 -1
  57. package/templates/css/connectors-748797d88cc32c0787052966e54e4f794629b8460d24f2aadac83c13899574fb.css +0 -1
  58. package/templates/css/connectors-87cf0f4b873d104a845dcafd5d80d4f8d482f8cea15f2412cd9655071dcb9ea8.css +0 -1
  59. package/templates/css/connectors-885e03b1611113e2363f7a86fba9aee867130a14836b3cc9c4714265708c1704.css +0 -1
  60. package/templates/css/connectors-9d0c9569a2ce8afaa4a30a0534b3d0597c761c7e0e5280dcbc966dc2b709e98e.css +0 -1
  61. package/templates/css/connectors-a8ae93c40b7c738a4514e47046a029afdcf74bb28a7724287e1350afac4fa60f.css +0 -1
  62. package/templates/css/connectors-c1d5f4c520a9a86d99b7201d30a8fe25a5779b7b2373b73262868f446fe3f855.css +0 -1
  63. package/templates/css/connectors-febcafaf261c0f23ca11fc13809f259c74dbdd50b6a47506ba295fdb99d1b4a4.css +0 -1
  64. package/templates/css/websites-19b822a8683767833f7656ff2df318ba13bed49f33d9bfc946ff619cf986b449.css +0 -1
  65. package/templates/css/websites-4b9b2b0a0a907b33eca109d50c2a3eee97f1955c742cef487110d21a0bbf8f50.css +0 -1
  66. package/templates/css/websites-7843a323acc9c4921d373250c5f647854910ea0913530659823fbe29844ee6b5.css +0 -1
  67. package/templates/css/websites-931c1ae713658c5aca51e25f5c43a79611c9a762dc38b989cc99ad4dbd4eda8e.css +0 -1
  68. package/templates/css/websites-c678e6ed7f508aa4b0e9218070d7235ed56f0eaea49350b30b849f4ef176cfb0.css +0 -1
  69. package/templates/css/websites-e6d63d0512032a2909a7f648cecfad311842ecba7bd03f94afc8639998e606f0.css +0 -1
  70. package/templates/websites.html +0 -360
@@ -0,0 +1 @@
1
+ * { box-sizing: border-box; } body {margin: 0;}.body{background-color:#f0f0f0;color:#2b1b63;font-family:"Ubuntu", sans-serif;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{border:2px solid #8873fe;display:inline-block;font-size:0.8rem;font-weight:700;line-height:1.2rem;padding:10px 20px 10px 20px;transition:all 0.18s ease-out;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{align-items:center;background-color:#ffffff;border-radius:4px 4px 4px 4px;display:flex;justify-content:space-between;margin:20px 0px 20px 0px;padding:30px 30px 30px 30px;}.button-bar.button-bar--full-width{align-items:center;justify-content:space-between;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{border:2px solid #8873fe;color:#8873fe;font-weight:400;}.footer{background-color:#ffffff;display:flex;justify-content:space-evenly;margin:50px 0px 0px 0px;padding:30px 30px 60px 30px;}.full-width{width:100%;}.box{background-color:#ffffff;border-radius:4px 4px 4px 4px;}.box.flex-between{align-items:center;}.button--tertiary{background-color:transparent;font-weight:400;}.button:hover{border:2px solid #8873fe;color:#8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}#imgx81{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100vh;}#in62y2{justify-content:center;}.big-button{background-color:#ffffff;border-radius:5px 5px 5px 5px;font-size:15px;font-weight:700;margin:10px 10px 10px 10px;padding:15px 30px 15px 30px;}#i9msnk{display:inline;padding:10px;}#i6akll{display:inline;padding:10px;}#ixzhcr{display:none;padding:10px;position:absolute;}.bg-silex-purpel{background-attachment:scroll;background-image:url("/assets/../assets/bg-purpel-silex.webp");background-position:center top;background-repeat:repeat-y;background-size:contain;}.text-centered{text-align:center;}.text-white{color:#ffffff;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.top-space-20{margin:20px 0 0 0;}.button.button--tertiary{background-color:rgba(221,221,221,0.5);border:2px solid transparent;}.box_login{max-width:450px;padding:60px 40px 60px 40px;width:100%;}.button-bar__item--link.text-white{color:#ffffff;}.button.big-button{border:2px solid transparent;}.button.button--tertiary:hover{background-color:white;border:2px solid #8873fe;color:#8873fe;}.button-bar__item__icon{background-attachment:scroll;background-image:none;background-position:center center;background-repeat:no-repeat;background-size:contain;float:left;height:30px;margin:5px 5px 5px 5px;width:30px;}.button-bar__item--secondary{font-size:0.8rem;}.footer__column{display:flex;flex-direction:column;flex-grow:1;text-align:center;}.footer__item{padding:10px 10px 10px 10px;}.connector__card{align-items:center;border:1px solid;border-radius:5px 5px 5px 5px;color:black;display:flex;justify-content:center;margin:10px auto 10px auto;max-width:100%;padding:4px 0px 4px 0px;transition:all 0.25s ease;}#i3cney{display:none;justify-content:center;width:100%;}.connector__description{padding:5px 15px 5px 15px;}#ior0hl{color:black;}#igp4xl{display:inline-block;justify-content:center;width:100%;}#isqe61{display:inline-block;}.margin-top{margin:80px 0px 30px 0px;}.margin-30{margin:30px 0px 30px 0px;}.connector__card:link{border:1px solid;color:black;text-decoration:none;}.connector__card:hover{background-color:#8873fe;color:white;}#iqc1xf{display:none;}#it2175{font-size:1rem;margin:15px 0px 0px 0px;}#i8w75b{cursor:pointer;font-size:0.95rem;font-weight:600;margin:10px 0px 10px 0px;}#ijflxq{font-size:0.85rem;margin:30px 0px 0px 0px;text-align:left;}#iprzeh{min-height:100px;}#ibi9qh{display:inline-block;}.rgpd-checks{align-items:center;display:flex;padding:10px 0px 10px 0px;}.rgpd-checks__check{height:20px;margin:0px 10px 0px 0px;width:20px;}#ihn6fj{margin:20px 0px 0px 0px;}#errorDiv{color:#ff557a;font-weight:800;}
@@ -0,0 +1 @@
1
+ * { box-sizing: border-box; } body {margin: 0;}.nav__item{color:#4a4a4a;font-size:0.8rem;margin:0px 10px 0px 10px;padding:24px 0px 24px 0px;}.body{background-color:#f0f0f0;color:#2b1b63;font-family:"Ubuntu", sans-serif;}.menu-bar{align-items:center;background-color:#ffffff;display:flex;height:94px;justify-content:space-between;padding:0px 100px 0px 100px;width:100%;}.padding-normal{padding:0px 24px 0px 24px;}.nav{margin:0px 20px 0px 20px;width:100%;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{border:2px solid #8873fe;display:inline-block;font-size:0.8rem;font-weight:700;line-height:1.2rem;padding:10px 20px 10px 20px;transition:all 0.18s ease-out;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{align-items:center;background-color:#ffffff;border-radius:4px 4px 4px 4px;display:flex;justify-content:space-between;margin:20px 0px 20px 0px;padding:30px 30px 30px 30px;}.button-bar.button-bar--full-width{align-items:center;justify-content:space-between;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{border:2px solid #8873fe;color:#8873fe;font-weight:400;}.rounded{border-radius:4px 4px 4px 4px;}.footer{background-color:#ffffff;display:flex;justify-content:space-evenly;margin:50px 0px 0px 0px;padding:30px 30px 60px 30px;}.skeleton-text.skeleton{background-color:#dddddd;border-radius:5px 5px 5px 5px;color:transparent;opacity:0.31;}.skeleton.skeleton-button{background-color:#dddddd;border-radius:5px 5px 5px 5px;color:transparent;opacity:0.31;width:140px;}.skeleton-anim{position:relative;}.nav__item.active{color:black;}.margin-20{margin:20px 0px 20px 0px;}.loading__item.loaded-true{display:none;}.flex-no-shrink{flex-shrink:0;}.form{border-radius:5px 5px 5px 5px;padding:10px 0px 10px 0px;}.input{background-color:transparent;border:2px solid #8873fe;border-radius:4px 4px 4px 4px;margin:10px 0px 10px 0px;padding:10px 10px 10px 10px;}.full-width{width:100%;}.v-space{margin:10px 0px 10px 0px;}.box{background-color:#ffffff;border-radius:4px 4px 4px 4px;}.box__header{color:rgba(43,27,99,0.5);font-size:1.625rem;font-weight:700;margin:0px 0px 0px 0px;padding:10px 0px 10px 0px;}.box.flex-between{align-items:center;}.flex-between{align-items:center;display:flex;justify-content:space-between;}.icon-font{font-size:1.5rem;line-height:1px;margin:0px 2px 0px 2px;}.lang__item{margin:0px 5px 0px 5px;}.top-space-40{margin:40px 0 0 0;}.nav__logo{height:50px;}.user-icon__image{height:100%;width:100%;}.user__wrapper{align-items:center;border:1px solid white;display:flex;flex-direction:column;justify-content:center;margin:0 0 0 20px;}.right-space-20{margin:0px 20px 0px 0px;}.button:hover{border:2px solid #8873fe;color:#8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}.user-icon__wrapper{background-color:#f0f0f0;border:1px solid #f0f0f0;border-radius:50% 50% 50% 50%;height:40px;overflow:hidden hidden;width:40px;}.title-40{font-size:2.5rem;font-weight:700;margin:0 0 10px 0;}.bg-silex-purpel{background-attachment:scroll;background-image:url("/assets/../assets/bg-purpel-silex.webp");background-position:center top;background-repeat:repeat-y;background-size:contain;}.section-top{display:flex;flex-direction:column;height:226px;justify-content:center;margin:0px auto 0px auto;max-width:1200px;padding:40px 30px 40px 30px;}.text-centered{text-align:center;}.box-message{background-color:rgba(43,27,99,0.3);border-radius:4px 4px 4px 4px;margin:10px 0px 10px 0px;padding:20px 30px 20px 30px;}.text-white{color:#ffffff;}.bold{font-weight:800;}.button-bar__item--link{background-color:transparent;border:0px solid black;color:#8873fe;font-size:0.8rem;}.padding-30{padding:30px 30px 30px 30px;}.right-space-40{margin:0 40px 0 0;}.title-26{font-size:1.625rem;margin:10px 0px 10px 0px;}.empty-image{background-attachment:scroll;background-image:url("/assets/../assets/empty-projects-sos.gif");background-position:center center;background-repeat:no-repeat;background-size:contain;min-height:500px;}.padding-50-30{padding:50px 30px 50px 30px;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.button.button--tertiary{background-color:rgba(221,221,221,0.5);border:2px solid transparent;}.button-bar__item--link.text-white{color:#ffffff;}.button.big-button{border:2px solid transparent;}.color-2B1B63-80{color:rgba(43,27,99,0.8);}.button.button--tertiary:hover{background-color:white;border:2px solid #8873fe;color:#8873fe;}.box-message-text{font-weight:300;margin:0px 0 0 0;}.website-max-width{max-width:1200px;}.margin-80{margin:80px auto 80px auto;}.button-bar__item--secondary{font-size:0.8rem;}.skeleton{line-height:1.1rem;}.footer__column{display:flex;flex-direction:column;flex-grow:1;text-align:center;}.footer__item{padding:10px 10px 10px 10px;}.box--centered{align-items:center;display:flex;flex-direction:column;}.button-bar__title:hover{color:#8873fe;}.button-bar__item--icon{margin:0px 0 0 0;padding:5px 5px 5px 5px;}.nav__item:hover{color:#8873fe;text-decoration:none;}.nav_item--active:first-child{color:#8873fe;}
@@ -0,0 +1 @@
1
+ * { box-sizing: border-box; } body {margin: 0;}.nav__item{color:#4a4a4a;font-size:0.8rem;margin:0px 10px 0px 10px;padding:24px 0px 24px 0px;}.body{background-color:#f0f0f0;color:#2b1b63;font-family:"Ubuntu", sans-serif;}.menu-bar{align-items:center;background-color:#ffffff;display:flex;height:94px;justify-content:space-between;padding:0px 100px 0px 100px;width:100%;}.padding-normal{padding:0px 24px 0px 24px;}.nav{margin:0px 20px 0px 20px;width:100%;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.rounded{border-radius:4px 4px 4px 4px;}.footer{background-color:#ffffff;display:flex;justify-content:space-evenly;margin:50px 0px 0px 0px;padding:30px 30px 60px 30px;}.nav__item.active{color:black;}.box.flex-between{align-items:center;}.flex-between{align-items:center;display:flex;justify-content:space-between;}.lang__item{margin:0px 5px 0px 5px;}.nav__logo{height:50px;}.user-icon__image{height:100%;width:100%;}.user__wrapper{align-items:center;border:1px solid white;display:flex;flex-direction:column;justify-content:center;margin:0 0 0 20px;}.user-icon__wrapper{background-color:#f0f0f0;border:1px solid #f0f0f0;border-radius:50% 50% 50% 50%;height:40px;overflow:hidden hidden;width:40px;}.title-40{font-size:2.5rem;font-weight:700;margin:0 0 10px 0;}.bg-silex-purpel{background-attachment:scroll;background-image:url("/assets/../assets/bg-purpel-silex.webp");background-position:center top;background-repeat:repeat-y;background-size:contain;}.section-top{display:flex;flex-direction:column;height:226px;justify-content:center;margin:0px auto 0px auto;max-width:1200px;padding:40px 30px 40px 30px;}.text-centered{text-align:center;}.box-message{background-color:rgba(43,27,99,0.3);border-radius:4px 4px 4px 4px;margin:10px 0px 10px 0px;padding:20px 30px 20px 30px;}.text-white{color:#ffffff;}.button-bar__item--link{background-color:transparent;border:0px solid black;color:#8873fe;font-size:0.8rem;}.button-bar__item--link.text-white{color:#ffffff;}.box-message-text{font-weight:300;margin:0px 0 0 0;}.website-max-width{max-width:1200px;}.margin-80{margin:80px auto 80px auto;}.footer__column{display:flex;flex-direction:column;flex-grow:1;text-align:center;}.footer__item{padding:10px 10px 10px 10px;}.nav__item:hover{color:#8873fe;text-decoration:none;}.nav_item--active:first-child{color:#8873fe;}
@@ -0,0 +1 @@
1
+ * { box-sizing: border-box; } body {margin: 0;}.nav__item{color:#4a4a4a;font-size:0.8rem;margin:0px 10px 0px 10px;padding:24px 0px 24px 0px;}.body{background-color:#f0f0f0;color:#2b1b63;font-family:"Ubuntu", sans-serif;}.menu-bar{align-items:center;background-color:#ffffff;display:flex;height:94px;justify-content:space-between;padding:0px 100px 0px 100px;width:100%;}.padding-normal{padding:0px 24px 0px 24px;}#i9jq{display:flex;}.nav{margin:0px 20px 0px 20px;width:100%;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{border:2px solid #8873fe;display:inline-block;font-size:0.8rem;font-weight:700;line-height:1.2rem;padding:10px 20px 10px 20px;transition:all 0.18s ease-out;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{align-items:center;background-color:#ffffff;border-radius:4px 4px 4px 4px;display:flex;justify-content:space-between;margin:20px 0px 20px 0px;padding:30px 30px 30px 30px;}#ibsgw{position:relative;top:3px;}.button-bar.button-bar--full-width{align-items:center;justify-content:space-between;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{border:2px solid #8873fe;color:#8873fe;font-weight:400;}.rounded{border-radius:4px 4px 4px 4px;}.footer{background-color:#ffffff;display:flex;justify-content:space-evenly;margin:50px 0px 0px 0px;padding:30px 30px 60px 30px;}.skeleton-text.skeleton{background-color:#dddddd;border-radius:5px 5px 5px 5px;color:transparent;opacity:0.31;}.skeleton.skeleton-button{background-color:#dddddd;border-radius:5px 5px 5px 5px;color:transparent;opacity:0.31;width:140px;}.skeleton-anim{position:relative;}.nav__item.active{color:black;}.margin-20{margin:20px 0px 20px 0px;}#i0ro3{display:none;}.loading__item.loaded-true{display:none;}.flex-no-shrink{flex-shrink:0;}.form{border-radius:5px 5px 5px 5px;padding:10px 0px 10px 0px;}#i1nmbc{flex-shrink:0;}.input{background-color:transparent;border:2px solid #8873fe;border-radius:4px 4px 4px 4px;margin:10px 0px 10px 0px;padding:10px 10px 10px 10px;}.full-width{width:100%;}.v-space{margin:10px 0px 10px 0px;}.box{background-color:#ffffff;border-radius:4px 4px 4px 4px;}.box__header{color:rgba(43,27,99,0.5);font-size:1.625rem;font-weight:700;margin:0px 0px 0px 0px;padding:10px 0px 10px 0px;}.box.flex-between{align-items:center;}.flex-between{align-items:center;display:flex;justify-content:space-between;}.icon-font{font-size:1.5rem;line-height:1px;margin:0px 2px 0px 2px;}.lang__item{margin:0px 5px 0px 5px;}.top-space-40{margin:40px 0 0 0;}.nav__logo{height:50px;}.user-icon__image{height:100%;width:100%;}.user__wrapper{align-items:center;border:1px solid white;display:flex;flex-direction:column;justify-content:center;margin:0 0 0 20px;}.right-space-20{margin:0px 20px 0px 0px;}.button:hover{border:2px solid #8873fe;color:#8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}.user-icon__wrapper{background-color:#f0f0f0;border:1px solid #f0f0f0;border-radius:50% 50% 50% 50%;height:40px;overflow:hidden hidden;width:40px;}.title-40{font-size:2.5rem;font-weight:700;margin:0 0 10px 0;}.bg-silex-purpel{background-attachment:scroll;background-image:url("/assets/../assets/bg-purpel-silex.webp");background-position:center top;background-repeat:repeat-y;background-size:contain;}.section-top{display:flex;flex-direction:column;height:226px;justify-content:center;margin:0px auto 0px auto;max-width:1200px;padding:40px 30px 40px 30px;}.text-centered{text-align:center;}.box-message{background-color:rgba(43,27,99,0.3);border-radius:4px 4px 4px 4px;margin:10px 0px 10px 0px;padding:20px 30px 20px 30px;}.text-white{color:#ffffff;}.bold{font-weight:800;}.button-bar__item--link{background-color:transparent;border:0px solid black;color:#8873fe;font-size:0.8rem;}.padding-30{padding:30px 30px 30px 30px;}.right-space-40{margin:0 40px 0 0;}.title-26{font-size:1.625rem;margin:10px 0px 10px 0px;}.empty-image{background-attachment:scroll;background-image:url("/assets/../assets/empty-projects-sos.gif");background-position:center center;background-repeat:no-repeat;background-size:contain;min-height:500px;}.padding-50-30{padding:50px 30px 50px 30px;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.button.button--tertiary{background-color:rgba(221,221,221,0.5);border:2px solid transparent;}.button-bar__item--link.text-white{color:#ffffff;}.button.big-button{border:2px solid transparent;}.color-2B1B63-80{color:rgba(43,27,99,0.8);}.button.button--tertiary:hover{background-color:white;border:2px solid #8873fe;color:#8873fe;}.box-message-text{font-weight:300;margin:0px 0 0 0;}.website-max-width{max-width:1200px;}.margin-80{margin:80px auto 80px auto;}.button-bar__item--secondary{font-size:0.8rem;}.skeleton{line-height:1.1rem;}#isucae{min-height:100px;}.footer__column{display:flex;flex-direction:column;flex-grow:1;text-align:center;}.footer__item{padding:10px 10px 10px 10px;}#igsxoc{position:relative;top:3px;}.box--centered{align-items:center;display:flex;flex-direction:column;}.button-bar__title:hover{color:#8873fe;}.button-bar__item--icon{margin:0px 0 0 0;padding:5px 5px 5px 5px;}.nav__item:hover{color:#8873fe;text-decoration:none;}.nav_item--active:first-child{color:#8873fe;}#igv1rf{padding:10px;}
@@ -2,7 +2,9 @@
2
2
  <html lang="">
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
- <link rel="stylesheet" href="/css/connectors-c1d5f4c520a9a86d99b7201d30a8fe25a5779b7b2373b73262868f446fe3f855.css" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="generator" content="Silex v3.6.0-canary.1">
7
+ <link rel="stylesheet" href="/css/connectors-e4ae24975f4df2e2bea5121337282d8f2201bb86dc8c041c9ef43c0c2d7a32a7.css" />
6
8
  <!-- font google -->
7
9
  <link rel="preconnect" href="https://fonts.gstatic.com" />
8
10
  <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
@@ -176,6 +178,9 @@ function toSafeId(name) {
176
178
  return name.replace(/[/\\?%*:|"<>]/g, '_')
177
179
  }
178
180
 
181
+ const params = new URLSearchParams(window.location.search)
182
+ const redirect = params.get('redirect')
183
+
179
184
  const App = {
180
185
  data() {
181
186
  return {
@@ -221,11 +226,31 @@ const App = {
221
226
  },
222
227
 
223
228
  getHref(connector) {
224
- if(connector.isLoggedIn) return '/'
225
- if(connector.oauthUrl) return connector.oauthUrl
226
- return '/api/connector/login/?type=STORAGE&connectorId=' + connector.connectorId
229
+ const params = new URLSearchParams(window.location.search)
230
+ const redirect = params.get('redirect')
231
+
232
+ if (connector.isLoggedIn) {
233
+ return redirect || '/'
234
+ }
235
+
236
+ if (!connector.oauthUrl) {
237
+ return '/api/connector/login/?type=STORAGE&connectorId=' + connector.connectorId
238
+ }
239
+
240
+ if (!redirect) return connector.oauthUrl
241
+
242
+ const url = new URL(connector.oauthUrl)
243
+ const state = url.searchParams.get('state')
244
+
245
+ url.searchParams.set(
246
+ 'state',
247
+ JSON.stringify({ state, redirect })
248
+ )
249
+
250
+ return url.toString()
227
251
  },
228
252
 
253
+
229
254
  getConnectorStyle(connector) {
230
255
  return {
231
256
  backgroundImage: `url(${connector.icon})`,
@@ -331,30 +356,30 @@ setTimeout(() => {
331
356
  <title>Silex Dashboard</title>
332
357
  <link rel="icon" href="/assets/favicon-32x32.png" />
333
358
  <meta name="og:title" property="og:title" content="Silex Dashboard"/>
334
- <link href="https://fonts.googleapis.com" rel="preconnect" ><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin ><link href="https://fonts.googleapis.com/css?family=Ubuntu&display=swap" rel="stylesheet" ></head>
335
- <body id="i2hcfw" class="body app before-js"><A id="ixzhcr" href="/" class="button button-bar__item--secondary">< Back</A><div id="imawg3" class="bg-silex-purpel"><div id="imgx81" style="min-height:100vh;display:flex;justify-content:center;align-items:center;flex-direction:column;" class=""><div id="iikf0s" class="box box_login"><div id="ie0dxn" class="text-centered"><img id="ior0hl" src="/assets/logo-silex.svg"/><p id="it2175" style="margin:15px 0px 0px 0px;font-size:1rem;" class="subtitle-16">Please login to continue</p></div><h3 id="iqc1xf" style="display:none;" class="margin-top">Recommended and free</h3><div id="in62y2"><div id="isqe61" class="full-width margin-30" v-for="(connector, index) in connectors.slice(0, 1)"><a id="i44y9w" href="https://" class="connector__card" :href="getHref(connector)" data-remove-href="true"><div id="io3lid" class="button-bar__item__icon" :style="getConnectorStyle(connector)"></div><div id="i87asw" class="connector__description" v-text="connector.displayName">Login with <span href="" id="i0tt68">Name</span><br/></div></a></div><div id="i9fpn7" class="rgpd-checks"><input type="checkbox" id="feedback-check" name="feedback-check" checked class="rgpd-checks__check" v-on:change="(event) => setRgpd('feedback', event.target.checked)" v-model="rgpdFeedback"></input><label id="iv7hwn" for="feedback-check" class="">Allow contact for debugging and feedback</label></div><div id="iahvhn" class="rgpd-checks"><input type="checkbox" name="nl-check" id="nl-check" checked class="rgpd-checks__check" v-on:change="(event) => setRgpd('nl', event.target.checked)" v-model="rgpdNL"></input><label for="nl-check" id="isjk6j" class="">Subscribe to our newsletter</label></div><div id="errorDiv"></div></div><DETAILS id="ihn6fj"><summary id="i8w75b" class="margin-30">Advanced users</summary><div id="ibi9qh" class="full-width" v-for="(connector, index) in connectors.slice(1)"><a href="https://" class="connector__card" :href="getHref(connector)" data-remove-href="true"><div class="button-bar__item__icon" :style="getConnectorStyle(connector)"></div><div class="connector__description" v-text="connector.displayName">Login with <span href="">Name</span><br/></div></a></div></DETAILS><div id="i3cney" class="button-bar"><a id="iacshy" class="button big-button connector__card" v-if="!loading" :key="index" :style="{ backgroundColor: connector.background, color: connector.color }" v-for="(connector, index) in connectors" v-on-click="openLogin(connector)"><div id="iiwn36"><div class="button-bar__item__icon" :style="`background: url('${connector.icon}'); background-repeat: no-repeat; background-size: contain;`"></div><div id="if4gvb" class="" v-text="connector.displayName">Name<br/></div></div><div id="isndui">This connector is about blablabla<br/></div></a></div><div id="ijflxq" style="font-size:0.85rem;text-align:left;margin:30px 0px 0px 0px;" class="text-centered">Do you need help? Check <a href="https://docs.silex.me/en/user/login" target="_blank">the documentation</a>. <br><br> By logging in, you agree to the <a href="https://docs.silex.me/en/terms" target="_blank">terms of use</a> and the <a href="https://docs.silex.me/en/security" target="_blank">privacy policy</a>.</div></div><div id="i9msnk" style="padding:10px;display:inline;" class="text-white top-space-20" v-if="error" v-text="message" :test="message">Insert your text here</div><div id="i6akll" style="padding:10px;display:inline;" class="button button--tertiary text-centered" v-if="error" v-on:click="logout()">Logout</div></div></div><FOOTER class="footer">
359
+ <link href="https://fonts.googleapis.com" rel="preconnect" ><link href="https://fonts.googleapis.com/css2" rel="preconnect" crossorigin ><link href="https://fonts.googleapis.com/css2?family=Ubuntu&display=swap" rel="stylesheet" ></head>
360
+ <body id="i2hcfw" class="body app before-js"><A href="/" id="ixzhcr" class="button button-bar__item--secondary">< Back</A><div id="imawg3" class="bg-silex-purpel"><div id="imgx81" style="min-height:100vh;display:flex;justify-content:center;align-items:center;flex-direction:column;" class=""><div id="iikf0s" class="box box_login"><div id="ie0dxn" class="text-centered"><img id="ior0hl" src="/assets/logo-silex.svg"/><p id="it2175" style="margin:15px 0px 0px 0px;font-size:1rem;" class="subtitle-16">Please login to continue</p></div><h3 id="iqc1xf" style="display:none;" class="margin-top">Recommended and free</h3><div id="in62y2"><div id="isqe61" class="full-width margin-30" v-for="(connector, index) in connectors.slice(0, 1)"><a href="https://" id="i44y9w" class="connector__card" :href="getHref(connector)" data-remove-href="true"><div id="io3lid" class="button-bar__item__icon" :style="getConnectorStyle(connector)"></div><div id="i87asw" class="connector__description" v-text="connector.displayName">Login with <span href="" id="i0tt68">Name</span><br id="i1zf1p"/></div></a></div><div id="i9fpn7" class="rgpd-checks"><input type="checkbox" checked id="feedback-check" name="feedback-check" class="rgpd-checks__check" v-on:change="(event) => setRgpd('feedback', event.target.checked)" v-model="rgpdFeedback"></input><label for="feedback-check" id="iv7hwn" class="">Allow contact for debugging and feedback</label></div><div id="iahvhn" class="rgpd-checks"><input type="checkbox" checked id="nl-check" name="nl-check" class="rgpd-checks__check" v-on:change="(event) => setRgpd('nl', event.target.checked)" v-model="rgpdNL"></input><label for="nl-check" id="isjk6j" class="">Subscribe to our newsletter</label></div><div id="errorDiv"></div></div><DETAILS id="ihn6fj"><summary id="i8w75b" class="margin-30">Advanced users</summary><div id="ibi9qh" class="full-width" v-for="(connector, index) in connectors.slice(1)"><a href="https://" id="i5p9p5" class="connector__card" :href="getHref(connector)" data-remove-href="true"><div id="ibphi6" class="button-bar__item__icon" :style="getConnectorStyle(connector)"></div><div id="iaoqw4" class="connector__description" v-text="connector.displayName">Login with <span href="" id="iz6g2i">Name</span><br id="ihgk46"/></div></a></div></DETAILS><div id="i3cney" class="button-bar"><a id="iacshy" class="button big-button connector__card" v-if="!loading" :key="index" :style="{ backgroundColor: connector.background, color: connector.color }" v-for="(connector, index) in connectors" v-on-click="openLogin(connector)"><div id="iiwn36"><div id="iiau0s" class="button-bar__item__icon" :style="`background: url('${connector.icon}'); background-repeat: no-repeat; background-size: contain;`"></div><div id="if4gvb" class="" v-text="connector.displayName">Name<br id="iimwvw"/></div></div><div id="isndui">This connector is about blablabla<br id="igsu87"/></div></a></div><div id="ijflxq" style="font-size:0.85rem;text-align:left;margin:30px 0px 0px 0px;" class="text-centered">Do you need help? Check <a href="https://docs.silex.me/en/user/login" target="_blank">the documentation</a>. <br><br> By logging in, you agree to the <a href="https://docs.silex.me/en/terms" target="_blank">terms of use</a> and the <a href="https://docs.silex.me/en/security" target="_blank">privacy policy</a>.</div></div><div id="i9msnk" style="padding:10px;display:inline;" class="text-white top-space-20" v-if="error" v-text="message" :test="message">Insert your text here</div><div id="i6akll" style="padding:10px;display:inline;" class="button button--tertiary text-centered" v-if="error" v-on:click="logout()">Logout</div></div></div><FOOTER id="i6qv1n" class="footer">
336
361
 
337
- <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" class="footer__item">Social & community</h3>
362
+ <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" id="ik1iir" class="footer__item">Social & community</h3>
338
363
 
339
- <a href="https://www.silex.me/" class="footer__item" target="_blank">About Silex, official website</a>
340
- <a href="mailto:contact+silex-dashboard-footer@silex.me" class="footer__item" target="">Email the team</a>
341
- <a href="https://short.silex.me/sponsors" class="footer__item" target="_blank">Sponsors</a>
342
- <a href="https://short.silex.me/donate" class="footer__item" target="">Donate</a>
343
- <a href="https://short.silex.me/community" class="footer__item" target="_blank">Community forum</a>
344
- <a href="https://news.silex.me/forms/nfrm_weLJnLY5" class="footer__item" target="_blank">Newsletter</a>
345
- <a href="https://events.silex.me/" class="footer__item" target="_blank">Meetups/ Events</a>
346
- <a href="https://short.silex.me/mastodon" class="footer__item" target="_blank">Mastodon</a>
347
- <a href="https://short.silex.me/lemmy" class="footer__item" target="_blank">Lemmy</a></div>
348
- <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" class="footer__item">Resources</h3>
364
+ <a href="https://www.silex.me/" id="is59uo" class="footer__item" target="_blank">About Silex, official website</a>
365
+ <a href="mailto:contact+silex-dashboard-footer@silex.me" id="is59uo" class="footer__item" target="">Email the team</a>
366
+ <a href="https://short.silex.me/sponsors" id="is59uo" class="footer__item" target="_blank">Sponsors</a>
367
+ <a href="https://short.silex.me/donate" id="is59uo" class="footer__item" target="">Donate</a>
368
+ <a href="https://short.silex.me/community" id="is59uo" class="footer__item" target="_blank">Community forum</a>
369
+ <a href="https://news.silex.me/forms/nfrm_weLJnLY5" id="is59uo" class="footer__item" target="_blank">Newsletter</a>
370
+ <a href="https://events.silex.me/" id="is59uo" class="footer__item" target="_blank">Meetups/ Events</a>
371
+ <a href="https://short.silex.me/mastodon" id="is59uo" class="footer__item" target="_blank">Mastodon</a>
372
+ <a href="https://short.silex.me/lemmy" id="is59uo" class="footer__item" target="_blank">Lemmy</a></div>
373
+ <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" id="ik1iir" class="footer__item">Resources</h3>
349
374
 
350
- <a href="https://short.silex.me/code" class="footer__item" target="_blank">Source code</a>
351
- <a href="http://docs.silex.me/" class="footer__item" target="_blank">Documentation</a>
352
- <a href="https://video.silex.me/my-library/video-playlists" class="footer__item" target="_blank">Videos</a>
353
- <a href="https://short.silex.me/roadmap" class="footer__item" target="_blank">Roadmap</a>
354
- <a href="https://short.silex.me/contribute" class="footer__item" target="_blank">Contribute</a></div>
355
- <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" class="footer__item">Articles and reviews</h3>
375
+ <a href="https://short.silex.me/code" id="is59uo" class="footer__item" target="_blank">Source code</a>
376
+ <a href="http://docs.silex.me/" id="is59uo" class="footer__item" target="_blank">Documentation</a>
377
+ <a href="https://video.silex.me/my-library/video-playlists" id="is59uo" class="footer__item" target="_blank">Videos</a>
378
+ <a href="https://short.silex.me/roadmap" id="is59uo" class="footer__item" target="_blank">Roadmap</a>
379
+ <a href="https://short.silex.me/contribute" id="is59uo" class="footer__item" target="_blank">Contribute</a></div>
380
+ <div id="iprzeh" style="min-height:100px;" class="footer__column"><h3 href="" id="ik1iir" class="footer__item">Articles and reviews</h3>
356
381
 
357
- <a href="https://short.silex.me/alternatives" class="footer__item" target="_blank">Silex alternatives</a>
358
- <a href="https://short.silex.me/reviews" class="footer__item" target="_blank">Silex reviews</a>
359
- <a href="https://short.silex.me/press" class="footer__item" target="_blank">Silex in the press</a></div></FOOTER></body>
382
+ <a href="https://short.silex.me/alternatives" id="is59uo" class="footer__item" target="_blank">Silex alternatives</a>
383
+ <a href="https://short.silex.me/reviews" id="is59uo" class="footer__item" target="_blank">Silex reviews</a>
384
+ <a href="https://short.silex.me/press" id="is59uo" class="footer__item" target="_blank">Silex in the press</a></div></FOOTER></body>
360
385
  </html>
@@ -0,0 +1,371 @@
1
+ <!DOCTYPE html>
2
+ <html lang="">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="generator" content="Silex v3.6.0-canary.1">
7
+ <link rel="stylesheet" href="/css/fork-923d814802e46c2d0db0f71c5c488c616ca0016f340d8dae66b263ba7f1143bc.css" />
8
+ <!-- font google -->
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" />
10
+ <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
11
+
12
+ <style>
13
+ .before-js > * {
14
+ visibility: hidden;
15
+ opacity: 0;
16
+ transition: opacity .5s ease;
17
+ }
18
+ .before-js[data-gjs-type] > *, /* This is only inside the editor, .before-js needs to be on the body */
19
+ .after-js > * {
20
+ visibility: visible;
21
+ opacity: 1;
22
+ }
23
+ .before-js:before {
24
+ content: 'Loading';
25
+ position: absolute;
26
+ top: 49%;
27
+ left: 49%;
28
+ }
29
+ .before-js[data-gjs-type]:before, /* This is only inside the editor, .before-js needs to be on the body */
30
+ .after-js:before {
31
+ content: none;
32
+ }
33
+ /*BTNS*/
34
+ .button, .pointer {
35
+ cursor: pointer!important}
36
+ .button{
37
+ min-width:110px;
38
+ }
39
+ details {
40
+ max-height: 2em;
41
+ display: block;
42
+ overflow: hidden;
43
+ transition: max-height .75s ease;
44
+ }
45
+ details[open] {
46
+ max-height: 40em;
47
+ }
48
+
49
+ /*BTNS*/
50
+ a {
51
+ text-decoration: none;
52
+ color:#8873FE;
53
+ }
54
+ a:hover {
55
+ text-decoration: underline;
56
+ }
57
+ .uppercase {
58
+ text-transform: uppercase;
59
+ }
60
+ .underline:hover{
61
+ text-decoration: underline;
62
+ text-decoration-thickness: from-font;
63
+ text-underline-position: under;
64
+ }
65
+ /*footer position*/
66
+ .main-min-height {
67
+ min-height: calc(100vh - 560px);
68
+ }
69
+ /*footer position*/
70
+ /*label*/
71
+ ::placeholder {
72
+ color: #8873FE;
73
+ }
74
+ input:focus {
75
+ border: 2px solid #9977FE;
76
+ background-color:#ffffff;
77
+ }
78
+ :focus {
79
+ outline: none;
80
+ }
81
+ /*label*/
82
+ .skeleton-anim:after {
83
+ width: 100%;
84
+ height: 100%;
85
+ position: absolute;
86
+ top: 0;
87
+ left: 0;
88
+ content: "";
89
+ background:
90
+ linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
91
+ linear-gradient(transparent, transparent),
92
+ radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
93
+ linear-gradient(transparent, transparent);
94
+ background-repeat: no-repeat;
95
+ background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
96
+ background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
97
+ animation: loading 1.5s infinite;
98
+ }
99
+ @keyframes loading {
100
+ to {
101
+ background-position: 200% 0, 0 0, 0 190px, 50px 195px;
102
+ }
103
+ }
104
+ /*FX ANIMATIONS*/
105
+ /*scale-round-inside_pour-BTN*/
106
+ .fx-scale-round {
107
+ position:relative;
108
+ z-index: 10;
109
+ overflow: hidden;
110
+ }
111
+ .fx-scale-round::after {
112
+ content: "";
113
+ background: #ffffff;
114
+ position: absolute;
115
+ z-index: -1;
116
+ border-radius: 50%;
117
+ left: -50%;
118
+ right: -50%;
119
+ top: -100%;
120
+ bottom: -100%;
121
+ transform: scale(0, 0);
122
+ transform-origin: center bottom;
123
+ transition: all 0.3s ease-out;
124
+ }
125
+ .fx-scale-round:hover {
126
+ transform-origin: center bottom;
127
+ transform: scale(1.1);
128
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
129
+ }
130
+ .fx-scale-round:hover::after {
131
+ transform: scale(1, 1);
132
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
133
+ }
134
+ /*scale-round-inside_pour-BTN*/
135
+ /*scale*/
136
+ .fx-scale:hover {
137
+ transform-origin: center bottom;
138
+ transform: scale(1.1);
139
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
140
+ }
141
+ /*flash*/
142
+ .fx-flash:hover {
143
+ animation: flash-in .25s ;
144
+ }
145
+ /*flash-in animation*/
146
+ @keyframes flash-in{
147
+ 0% {
148
+ opacity:.25;
149
+ }
150
+ 100% {
151
+ opacity:1;
152
+ }
153
+ }
154
+ /*flash-in animation*/
155
+ /*FX ANIMATIONS*/
156
+ </style>
157
+ <script src="/js/vue.global.prod.js"></script>
158
+ <script src="/js/main.js"></script>
159
+ <script type="module">
160
+ const params = new URLSearchParams(window.location.search)
161
+ const CONNECTORS_PATH = '/connectors/'
162
+ const GITLAB_REPO = params.get('gitlabUrl')
163
+ const REDIRECT_PATH = `/fork/?gitlabUrl=${ GITLAB_REPO }`
164
+
165
+ window.addEventListener('load', () => {
166
+ const { createApp } = Vue
167
+ const { api, types } = silex
168
+ const { ConnectorType } = types
169
+ const { setServerUrl, getUser, logout } = api
170
+
171
+ const App = {
172
+ data() {
173
+ return {
174
+ loading: true,
175
+ loggedIn: false,
176
+ user: null,
177
+
178
+ message: '',
179
+ error: '',
180
+ }
181
+ },
182
+
183
+ async mounted() {
184
+ await this.init()
185
+ await this.initForkFromUrl()
186
+ },
187
+
188
+ methods: {
189
+ async init() {
190
+ try {
191
+ setServerUrl(window.location.origin)
192
+
193
+ const user = await getUser({ type: ConnectorType.STORAGE })
194
+ if (!user) {
195
+ this.openLogin()
196
+ return
197
+ }
198
+
199
+ user.picture = decodeURIComponent(user.picture).replace(/'/g, "\\'")
200
+ this.user = user
201
+ this.loggedIn = true
202
+ this.loading = false
203
+ } catch (error) {
204
+ this.loading = false
205
+ if (error.code === 401 || error.httpStatusCode === 401) {
206
+ this.openLogin()
207
+ } else {
208
+ this.updateStatus(error.message)
209
+ }
210
+ }
211
+ },
212
+
213
+ async initForkFromUrl() {
214
+ if (!GITLAB_REPO || !this.loggedIn) return
215
+
216
+ await this.forkWebsite(GITLAB_REPO)
217
+ },
218
+
219
+ async forkWebsite(gitlabUrl) {
220
+ try {
221
+ this.showLoading()
222
+ this.updateStatus('Cloning repository...')
223
+
224
+ const response = await fetch('/api/website/fork', {
225
+ method: 'POST',
226
+ headers: { 'Content-Type': 'application/json' },
227
+ body: JSON.stringify({ gitlabUrl }),
228
+ })
229
+
230
+ if (response.status === 401) {
231
+ this.openLogin()
232
+ return
233
+ }
234
+ if (!response.ok) {
235
+ let message = ''
236
+ try {
237
+ const body = await response.text()
238
+ message = JSON.parse(body).message
239
+ } catch (e) {}
240
+
241
+ console.error('ERROR:', {response, message})
242
+ throw new Error(
243
+ message
244
+ ? `${message}\n\n(Error ${response.status})`
245
+ : `API ${response.status} ${response.statusText}`
246
+ )
247
+ }
248
+ const data = await response.json()
249
+ const websiteId = data.websiteId || data.id
250
+
251
+ this.updateStatus('Project ready')
252
+ this.showSuccess()
253
+
254
+ setTimeout(() => {
255
+ this.openEditor(websiteId)
256
+ }, 1500)
257
+ } catch (error) {
258
+ this.updateStatus(error.message || 'Fork failed')
259
+ }
260
+ },
261
+
262
+ updateStatus(message) {
263
+ this.message = message.replace(/\n/g, '<br>')
264
+ //const el = document.querySelector('.fork-status-title')
265
+ //if (el) el.textContent = message
266
+ //console.log('updateStatus', {message, el})
267
+ },
268
+
269
+ showLoading() {
270
+ document.querySelector('.fork-loading')?.style.setProperty('display', 'block')
271
+ document.querySelector('.fork-success')?.style.setProperty('display', 'none')
272
+ document.querySelector('.fork-error')?.style.setProperty('display', 'none')
273
+ },
274
+
275
+ showSuccess() {
276
+ document.querySelector('.fork-loading')?.style.setProperty('display', 'none')
277
+ document.querySelector('.fork-success')?.style.setProperty('display', 'block')
278
+ },
279
+
280
+ showError(message) {
281
+ throw new Error('Useless method, pls remove')
282
+ this.error = message
283
+ document.querySelector('.fork-loading')?.style.setProperty('display', 'none')
284
+ document.querySelector('.fork-error')?.style.setProperty('display', 'block')
285
+
286
+ const msg = document.querySelector('.error-message')
287
+ if (msg) msg.textContent = message
288
+
289
+ const backBtn = document.querySelector('.error-back-btn')
290
+ if (backBtn) {
291
+ backBtn.onclick = () => this.openLogin()
292
+ }
293
+ console.log({message, msg, backBtn})
294
+ },
295
+
296
+ openEditor(id) {
297
+ const params = new URLSearchParams(window.location.search)
298
+ const lang = params.get('lang') || 'en'
299
+ window.location.href =
300
+ `/?id=${id}&lang=${lang}&connectorId=${this.user.storage.connectorId}&forked=${GITLAB_REPO}`
301
+ },
302
+
303
+ openLogin() {
304
+ const path = `/en${CONNECTORS_PATH}?redirect=/en${REDIRECT_PATH}`
305
+ if (window.location.pathname !== path) {
306
+ window.location.href = path
307
+ }
308
+ },
309
+
310
+ async logout() {
311
+ await logout({
312
+ type: ConnectorType.STORAGE,
313
+ connectorId: this.user.storage.connectorId,
314
+ })
315
+ window.location.reload()
316
+ },
317
+ },
318
+ }
319
+
320
+ document
321
+ .querySelectorAll('[v-text], [v-html]')
322
+ .forEach(el => (el.innerText = ''))
323
+
324
+ const app = createApp(App)
325
+ app.mount('.app')
326
+
327
+ setTimeout(() => {
328
+ document.querySelector('.before-js')?.classList.add('after-js')
329
+ }, 100)
330
+ })
331
+ </script>
332
+
333
+ <title></title>
334
+ <link rel="icon" href="/assets/favicon-32x32.png" />
335
+ <meta name="og:title" property="og:title" content="Silex Dashboard"/>
336
+ <link href="https://fonts.googleapis.com" rel="preconnect" ><link href="https://fonts.googleapis.com/css2" rel="preconnect" crossorigin ><link href="https://fonts.googleapis.com/css2?family=Ubuntu&display=swap" rel="stylesheet" ></head>
337
+
338
+ <body id="ik0i-2" class="body loading app before-js"><HEADER id="igrg-2" class="menu-bar"><A href="/" id="igvu43-2"><img id="iel80b-2-2-2" src="/assets/picto-silex@3x.png" class="nav__logo"/></A><NAV id="i9jq-2" class="nav">
339
+
340
+ <a href="/" id="iels-2" class="nav__item uppercase fx-flash nav_item--active" target="">My Sites</a>
341
+ <a href="http://docs.silex.me/" id="iels-2" class="nav__item uppercase fx-flash nav_item--active" target="_blank">Docs</a>
342
+ <a href="https://short.silex.me/community_en/" id="iels-2" class="nav__item uppercase fx-flash nav_item--active" target="_blank">Forum</a>
343
+ <a href="https://short.silex.me/chat" id="iels-2" class="nav__item uppercase fx-flash nav_item--active" target="_blank">Chat</a></NAV>
344
+
345
+ <div id="i2red7-2" class="lang"><a href="/en" id="iciz-2" class="lang__item nav__item uppercase">EN</a></div>
346
+ <div id="i2red7-2" class="lang"><a href="/fr" id="iciz-2" class="lang__item nav__item uppercase">FR</a></div><div id="i24ew-2" class="user__wrapper pointer" v-if="user" v-on:click="showMenu = !showMenu"><div id="i5xsbd-2" class="user-icon__wrapper" v-if="user" v-show="!showMenu || user.storage.disableLogout"><div id="i5wlbq-2" class="user-icon__image" v-if="user" v-show="!showMenu || user.storage.disableLogout" :style="{ backgroundImage: `url('${user?.picture}')`, backgroundRepeat: 'no-repeat', backgroundSize: 'contain', }"></div></div><div id="ic9eoa-2" class="" v-show="showMenu && !user.storage.disableLogout" v-on:click="logout"><div id="igv1rf-2" class="nav__item">Logout</div></div></div></HEADER><HEADER id="iy8ax3-2" class="bg-silex-purpel"><div id="iisz8f-2" class="section-top text-centered text-white"><h1 id="ic31o-2" class="title-40" v-if="!empty">Forking Project...</h1><p id="iyex8-2" class="subtitle-16" v-if="!empty">Please wait while we create your fork</p></div></HEADER><MAIN id="iz63r-2" class="padding-normal main-min-height website-max-width margin-80"><div id="i7ej6j-2" class="flex-between box-message text-white" v-if="error"><h3 id="iv0eyi-2" class="box-message-text" v-html="error">Insert your text here</h3><div id="i4656n-2" class="pointer button-bar__item--link text-white" v-on:click="error = null"></div></div><div id="ilteie-2" class="flex-between box-message text-white" v-if="message"><h3 id="i2d31v-2" class="box-message-text" v-html="message">Insert your text here</h3><div id="i2urco-2" class="rounded pointer button-bar__item--link text-white" v-on:click="message = null"></div></div></MAIN><FOOTER id="ilzpl-2" class="footer">
347
+
348
+ <div id="isucae-2" style="min-height:100px;" class="footer__column"><h3 href="" id="ipa5zg-2" class="footer__item">Social & community</h3>
349
+
350
+ <a href="https://www.silex.me/" id="i0cyhf" class="footer__item" target="_blank">About Silex, official website</a>
351
+ <a href="mailto:contact+silex-dashboard-footer@silex.me" id="i0cyhf" class="footer__item" target="">Email the team</a>
352
+ <a href="https://short.silex.me/sponsors" id="i0cyhf" class="footer__item" target="_blank">Sponsors</a>
353
+ <a href="https://short.silex.me/donate" id="i0cyhf" class="footer__item" target="">Donate</a>
354
+ <a href="https://short.silex.me/community" id="i0cyhf" class="footer__item" target="_blank">Community forum</a>
355
+ <a href="https://news.silex.me/forms/nfrm_weLJnLY5" id="i0cyhf" class="footer__item" target="_blank">Newsletter</a>
356
+ <a href="https://events.silex.me/" id="i0cyhf" class="footer__item" target="_blank">Meetups/ Events</a>
357
+ <a href="https://short.silex.me/mastodon" id="i0cyhf" class="footer__item" target="_blank">Mastodon</a>
358
+ <a href="https://short.silex.me/lemmy" id="i0cyhf" class="footer__item" target="_blank">Lemmy</a></div>
359
+ <div id="isucae-2" style="min-height:100px;" class="footer__column"><h3 href="" id="ipa5zg-2" class="footer__item">Resources</h3>
360
+
361
+ <a href="https://short.silex.me/code" id="i0cyhf" class="footer__item" target="_blank">Source code</a>
362
+ <a href="http://docs.silex.me/" id="i0cyhf" class="footer__item" target="_blank">Documentation</a>
363
+ <a href="https://video.silex.me/my-library/video-playlists" id="i0cyhf" class="footer__item" target="_blank">Videos</a>
364
+ <a href="https://short.silex.me/roadmap" id="i0cyhf" class="footer__item" target="_blank">Roadmap</a>
365
+ <a href="https://short.silex.me/contribute" id="i0cyhf" class="footer__item" target="_blank">Contribute</a></div>
366
+ <div id="isucae-2" style="min-height:100px;" class="footer__column"><h3 href="" id="ipa5zg-2" class="footer__item">Articles and reviews</h3>
367
+
368
+ <a href="https://short.silex.me/alternatives" id="i0cyhf" class="footer__item" target="_blank">Silex alternatives</a>
369
+ <a href="https://short.silex.me/reviews" id="i0cyhf" class="footer__item" target="_blank">Silex reviews</a>
370
+ <a href="https://short.silex.me/press" id="i0cyhf" class="footer__item" target="_blank">Silex in the press</a></div></FOOTER></body>
371
+ </html>