@silexlabs/silex-dashboard 1.0.37 → 1.0.39

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.
@@ -1 +1 @@
1
- * { box-sizing: border-box; } body {margin: 0;}.nav__item{margin:0px 10px 0px 10px;font-size:0.8rem;padding:24px 0px 24px 0px;color:#4a4a4a;}.body{font-family:"Ubuntu", sans-serif;background-color:#f0f0f0;color:#2b1b63;}.menu-bar{display:flex;align-items:center;justify-content:space-between;background-color:#ffffff;height:94px;padding:0px 100px 0px 100px;width:100%;}.padding-normal{padding:0px 24px 0px 24px;}#i9jq{display:flex;}.nav{width:100%;margin:0px 20px 0px 20px;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{font-size:0.8rem;padding:10px 20px 10px 20px;display:inline-block;border:2px solid #8873fe;transition:all 0.18s ease-out;font-weight:700;line-height:1.2rem;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{margin:20px 0px 20px 0px;display:flex;padding:30px 30px 30px 30px;align-items:center;justify-content:space-between;border-radius:4px 4px 4px 4px;background-color:#ffffff;}#ibsgw{position:relative;top:3px;}.button-bar.button-bar--full-width{justify-content:space-between;align-items:center;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{font-weight:400;color:#8873fe;border:2px solid #8873fe;}.rounded{border-radius:4px 4px 4px 4px;}.footer{display:flex;margin:50px 0px 0px 0px;background-color:#ffffff;align-items:center;justify-content:space-evenly;padding:30px 30px 60px 30px;}.skeleton-text.skeleton{background-color:#dddddd;color:transparent;opacity:0.31;border-radius:5px 5px 5px 5px;}.skeleton.skeleton-button{color:transparent;opacity:0.31;background-color:#dddddd;border-radius:5px 5px 5px 5px;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{padding:10px 0px 10px 0px;border-radius:5px 5px 5px 5px;}#i1nmbc{flex-shrink:0;}.input{padding:10px 10px 10px 10px;background-color:transparent;border:2px solid #8873fe;margin:10px 0px 10px 0px;border-radius:4px 4px 4px 4px;}.full-width{width:100%;}.v-space{margin:10px 0px 10px 0px;}.box{border-radius:4px 4px 4px 4px;background-color:#ffffff;}.box__header{margin:0px 0px 0px 0px;padding:10px 0px 10px 0px;font-weight:700;font-size:1.625rem;color:rgba(43,27,99,0.5);}.box.flex-between{align-items:center;}.flex-between{display:flex;align-items:center;justify-content:space-between;}.h-space{margin:0px 10px 0px 0px;}.button--tertiary{background-color:transparent;font-weight:400;}.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{width:100%;height:100%;}.user__wrapper{border:1px solid white;display:flex;flex-direction:column;justify-content:center;align-items:center;}.right-space-20{margin:0px 20px 0px 0px;}#iksw4d{padding:10px;}.button:hover{color:#8873fe;border:2px solid #8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}.user-icon__wrapper{border:1px solid #f0f0f0;background-color:#f0f0f0;border-radius:50% 50% 50% 50%;width:40px;height:40px;padding:5px 5px 5px 5px;}.title-40{margin:0 0 10px 0;font-size:2.5rem;font-weight:700;}.bg-silex-purpel{background-repeat:repeat-y;background-position:center top;background-attachment:scroll;background-size:contain;background-image:url(/assets/bg-purpel-silex.webp);}.section-top{max-width:1200px;padding:40px 30px 40px 30px;height:226px;display:flex;flex-direction:column;justify-content:center;margin:0px auto 0px auto;}.text-centered{text-align:center;}.box-message{background-color:rgba(43,27,99,0.3);border-radius:4px 4px 4px 4px;padding:20px 30px 20px 30px;margin:10px 0px 10px 0px;}.text-white{color:#ffffff;}.bold{font-weight:800;}.button-bar__item--link{background-color:transparent;border:0px solid black;font-size:0.8rem;color:#8873fe;}.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{min-height:500px;background-image:url(/assets/empty-projects-sos.gif);background-repeat:no-repeat;background-position:center center;background-attachment:scroll;background-size:contain;}.padding-50-30{padding:50px 30px 50px 30px;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.button.button--tertiary{border:2px solid transparent;background-color:rgba(221,221,221,0.5);}.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{border:2px solid #8873fe;color:#8873fe;background-color:white;}.box-message-text{margin:0px 0 0 0;font-weight:300;}.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;}#iahjww{padding:10px;}#ie28kq{min-height:100px;}.footer__item{padding:10px 10px 10px 10px;}#igsxoc{position:relative;top:3px;}.box--centered{display:flex;flex-direction:column;align-items:center;}.button-bar__title:hover{color:#8873fe;}
1
+ * { box-sizing: border-box; } body {margin: 0;}.nav__item{margin:0px 10px 0px 10px;font-size:0.8rem;padding:24px 0px 24px 0px;color:#4a4a4a;}.body{font-family:"Ubuntu", sans-serif;background-color:#f0f0f0;color:#2b1b63;}.menu-bar{display:flex;align-items:center;justify-content:space-between;background-color:#ffffff;height:94px;padding:0px 100px 0px 100px;width:100%;}.padding-normal{padding:0px 24px 0px 24px;}#i9jq{display:flex;}.nav{width:100%;margin:0px 20px 0px 20px;}.subtitle-16{font-size:1rem;margin:0px 0px 20px 0px;}.subtitle-16.color--light{color:#636363;font-weight:700;}.button{font-size:0.8rem;padding:10px 20px 10px 20px;display:inline-block;border:2px solid #8873fe;transition:all 0.18s ease-out;font-weight:700;line-height:1.2rem;}.button.button--primary{background-color:#8873fe;color:white;}.button-bar{margin:20px 0px 20px 0px;display:flex;padding:30px 30px 30px 30px;align-items:center;justify-content:space-between;border-radius:4px 4px 4px 4px;background-color:#ffffff;}#ibsgw{position:relative;top:3px;}.button-bar.button-bar--full-width{justify-content:space-between;align-items:center;}.button-bar_item.button-bar__item--secondary{font-size:0.8rem;}.button.button--secondary{font-weight:400;color:#8873fe;border:2px solid #8873fe;}.rounded{border-radius:4px 4px 4px 4px;}.footer{display:flex;margin:50px 0px 0px 0px;background-color:#ffffff;align-items:center;justify-content:space-evenly;padding:30px 30px 60px 30px;}.skeleton-text.skeleton{background-color:#dddddd;color:transparent;opacity:0.31;border-radius:5px 5px 5px 5px;}.skeleton.skeleton-button{color:transparent;opacity:0.31;background-color:#dddddd;border-radius:5px 5px 5px 5px;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{padding:10px 0px 10px 0px;border-radius:5px 5px 5px 5px;}#i1nmbc{flex-shrink:0;}.input{padding:10px 10px 10px 10px;background-color:transparent;border:2px solid #8873fe;margin:10px 0px 10px 0px;border-radius:4px 4px 4px 4px;}.full-width{width:100%;}.v-space{margin:10px 0px 10px 0px;}.box{border-radius:4px 4px 4px 4px;background-color:#ffffff;}.box__header{margin:0px 0px 0px 0px;padding:10px 0px 10px 0px;font-weight:700;font-size:1.625rem;color:rgba(43,27,99,0.5);}.box.flex-between{align-items:center;}.flex-between{display:flex;align-items:center;justify-content:space-between;}.h-space{margin:0px 10px 0px 0px;}.button--tertiary{background-color:transparent;font-weight:400;}.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{width:100%;height:100%;}.user__wrapper{border:1px solid white;display:flex;flex-direction:column;justify-content:center;align-items:center;}.right-space-20{margin:0px 20px 0px 0px;}#iksw4d{padding:10px;}.button:hover{color:#8873fe;border:2px solid #8873fe;}.button.button--secondary:hover{background-color:white;border:2px solid rgba(136,115,254,0.5);}.user-icon__wrapper{border:1px solid #f0f0f0;background-color:#f0f0f0;border-radius:50% 50% 50% 50%;width:40px;height:40px;padding:5px 5px 5px 5px;}.title-40{margin:0 0 10px 0;font-size:2.5rem;font-weight:700;}.bg-silex-purpel{background-repeat:repeat-y;background-position:center top;background-attachment:scroll;background-size:contain;background-image:url(../assets/bg-purpel-silex.webp);}.section-top{max-width:1200px;padding:40px 30px 40px 30px;height:226px;display:flex;flex-direction:column;justify-content:center;margin:0px auto 0px auto;}.text-centered{text-align:center;}.box-message{background-color:rgba(43,27,99,0.3);border-radius:4px 4px 4px 4px;padding:20px 30px 20px 30px;margin:10px 0px 10px 0px;}.text-white{color:#ffffff;}.bold{font-weight:800;}.button-bar__item--link{background-color:transparent;border:0px solid black;font-size:0.8rem;color:#8873fe;}.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{min-height:500px;background-image:url(../assets/empty-projects-sos.gif);background-repeat:no-repeat;background-position:center center;background-attachment:scroll;background-size:contain;}.padding-50-30{padding:50px 30px 50px 30px;}.box.box_transp{background-color:rgba(255,255,255,0.5);}.button.button--tertiary{border:2px solid transparent;background-color:rgba(221,221,221,0.5);}.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{border:2px solid #8873fe;color:#8873fe;background-color:white;}.box-message-text{margin:0px 0 0 0;font-weight:300;}.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;}#iahjww{padding:10px;}#ie28kq{min-height:100px;}.footer__item{padding:10px 10px 10px 10px;}#igsxoc{position:relative;top:3px;}.box--centered{display:flex;flex-direction:column;align-items:center;}.button-bar__title:hover{color:#8873fe;}.button-bar__item--icon{margin:0px 0 0 0;padding:5px 5px 5px 5px;}
@@ -6,131 +6,142 @@
6
6
  <link rel="preconnect" href="https://fonts.gstatic.com" />
7
7
  <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
8
8
 
9
-
10
9
  <link
11
10
  rel="alternate"
12
11
  hreflang="fr"
13
12
  href="/fr/connectors" />
14
-
15
13
  <style>
16
- .before-js > * {
17
- visibility: hidden;
18
- opacity: 0;
19
- transition: opacity .5s ease;
20
- }
21
- .after-js > * {
22
- visibility: visible;
23
- opacity: 1;
24
- }
25
- .before-js:before {
26
- content: 'Loading';
27
- position: absolute;
28
- top: 49%;
29
- left: 49%;
30
- }
31
- .after-js:before {
32
- content: none;
33
- }
34
-
35
- /*BTNS*/
36
- .button, .pointer { cursor: pointer!important}
37
- .button{min-width:110px;}
38
- /*BTNS*/
39
- a {
40
- text-decoration: none;
41
- color:#8873FE;}
42
- a:hover { text-decoration: underline; }
43
- .uppercase {text-transform: uppercase;}
44
- .underline:hover{
45
- text-decoration: underline;
46
- text-decoration-thickness: from-font;
47
- text-underline-position: under;}
48
-
49
- /*footer position*/
50
- .main-min-height {min-height: calc(100vh - 560px);}
51
- /*footer position*/
52
-
53
- /*label*/
54
- ::placeholder {color: #8873FE;}
55
- input:focus {
56
- border: 2px solid ##9977FE;
57
- background-color:#ffffff;}
58
- :focus { outline: none;}
59
- /*label*/
60
- .skeleton-anim:after {
61
- width: 100%;
62
- height: 100%;
63
- position: absolute;
64
- top: 0;
65
- left: 0;
66
- content: "";
67
- background:
68
- linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
69
- linear-gradient(transparent, transparent),
70
- radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
71
- linear-gradient(transparent, transparent);
72
- background-repeat: no-repeat;
73
- background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
74
- background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
75
- animation: loading 1.5s infinite;
76
- }
77
-
78
- @keyframes loading {
79
- to {
80
- background-position: 200% 0, 0 0, 0 190px, 50px 195px;
14
+ .before-js > * {
15
+ visibility: hidden;
16
+ opacity: 0;
17
+ transition: opacity .5s ease;
81
18
  }
82
- }
83
- /*FX ANIMATIONS*/
84
- /*scale-round-inside_pour-BTN*/
85
- .fx-scale-round {
86
- position:relative;
87
- z-index: 10;
88
- overflow: hidden;
89
- }
90
- .fx-scale-round::after {
91
- content: "";
92
- background: #ffffff;
93
- position: absolute;
94
- z-index: -1;
95
- border-radius: 50%;
96
- left: -50%;
97
- right: -50%;
98
- top: -100%;
99
- bottom: -100%;
100
- transform: scale(0, 0);
101
- transform-origin: center bottom;
102
- transition: all 0.3s ease-out;
103
-
104
- }
105
- .fx-scale-round:hover {
106
- transform-origin: center bottom;
107
- transform: scale(1.1);
108
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
109
- }
110
- .fx-scale-round:hover::after {
111
- transform: scale(1, 1);
112
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
113
- }
114
- /*scale-round-inside_pour-BTN*/
115
- /*scale*/
116
- .fx-scale:hover {
117
- transform-origin: center bottom;
118
- transform: scale(1.1);
119
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
120
- }
121
- /*flash*/
122
- .fx-flash:hover {
123
- animation: flash-in .5s ;
124
- }
125
-
126
- /*flash-in animation*/
127
- @keyframes flash-in{
128
- 0% {opacity:0;}
129
- 100% {opacity:1;}
130
- }
131
- /*flash-in animation*/
132
-
133
- /*FX ANIMATIONS*/
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
+ .after-js:before {
30
+ content: none;
31
+ }
32
+ /*BTNS*/
33
+ .button, .pointer {
34
+ cursor: pointer!important}
35
+ .button{
36
+ min-width:110px;
37
+ }
38
+ /*BTNS*/
39
+ a {
40
+ text-decoration: none;
41
+ color:#8873FE;
42
+ }
43
+ a:hover {
44
+ text-decoration: underline;
45
+ }
46
+ .uppercase {
47
+ text-transform: uppercase;
48
+ }
49
+ .underline:hover{
50
+ text-decoration: underline;
51
+ text-decoration-thickness: from-font;
52
+ text-underline-position: under;
53
+ }
54
+ /*footer position*/
55
+ .main-min-height {
56
+ min-height: calc(100vh - 560px);
57
+ }
58
+ /*footer position*/
59
+ /*label*/
60
+ ::placeholder {
61
+ color: #8873FE;
62
+ }
63
+ input:focus {
64
+ border: 2px solid ##9977FE;
65
+ background-color:#ffffff;
66
+ }
67
+ :focus {
68
+ outline: none;
69
+ }
70
+ /*label*/
71
+ .skeleton-anim:after {
72
+ width: 100%;
73
+ height: 100%;
74
+ position: absolute;
75
+ top: 0;
76
+ left: 0;
77
+ content: "";
78
+ background:
79
+ linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
80
+ linear-gradient(transparent, transparent),
81
+ radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
82
+ linear-gradient(transparent, transparent);
83
+ background-repeat: no-repeat;
84
+ background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
85
+ background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
86
+ animation: loading 1.5s infinite;
87
+ }
88
+ @keyframes loading {
89
+ to {
90
+ background-position: 200% 0, 0 0, 0 190px, 50px 195px;
91
+ }
92
+ }
93
+ /*FX ANIMATIONS*/
94
+ /*scale-round-inside_pour-BTN*/
95
+ .fx-scale-round {
96
+ position:relative;
97
+ z-index: 10;
98
+ overflow: hidden;
99
+ }
100
+ .fx-scale-round::after {
101
+ content: "";
102
+ background: #ffffff;
103
+ position: absolute;
104
+ z-index: -1;
105
+ border-radius: 50%;
106
+ left: -50%;
107
+ right: -50%;
108
+ top: -100%;
109
+ bottom: -100%;
110
+ transform: scale(0, 0);
111
+ transform-origin: center bottom;
112
+ transition: all 0.3s ease-out;
113
+ }
114
+ .fx-scale-round:hover {
115
+ transform-origin: center bottom;
116
+ transform: scale(1.1);
117
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
118
+ }
119
+ .fx-scale-round:hover::after {
120
+ transform: scale(1, 1);
121
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
122
+ }
123
+ /*scale-round-inside_pour-BTN*/
124
+ /*scale*/
125
+ .fx-scale: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
+ /*flash*/
131
+ .fx-flash:hover {
132
+ animation: flash-in .5s ;
133
+ }
134
+ /*flash-in animation*/
135
+ @keyframes flash-in{
136
+ 0% {
137
+ opacity:0;
138
+ }
139
+ 100% {
140
+ opacity:1;
141
+ }
142
+ }
143
+ /*flash-in animation*/
144
+ /*FX ANIMATIONS*/
134
145
  </style>
135
146
  <script src="/js/vue.global.js"></script>
136
147
  <script src="/js/main.js"></script>
@@ -230,11 +241,11 @@ window.addEventListener('load', function() {
230
241
  </script>
231
242
 
232
243
  <title></title>
233
- <link rel="icon" href="" />
234
- <meta property="description" content=""/>
235
- <meta property="og:title" content=""/>
236
- <meta property="og:description" content=""/>
237
- <meta property="og:image" content=""/>
244
+ <link rel="icon" href="/assets/favicon-32x32.png" />
245
+ <meta name="description" property="description" content=""/>
246
+ <meta name="og:title" property="og:title" content=""/>
247
+ <meta name="og:description" property="og:description" content=""/>
248
+ <meta name="og:image" property="og:image" content=""/>
238
249
  </head>
239
250
  <body
240
251
  id="i2hcfw"
@@ -6,131 +6,142 @@
6
6
  <link rel="preconnect" href="https://fonts.gstatic.com" />
7
7
  <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
8
8
 
9
-
10
9
  <link
11
10
  rel="alternate"
12
11
  hreflang="fr"
13
12
  href="/fr/" />
14
-
15
13
  <style>
16
- .before-js > * {
17
- visibility: hidden;
18
- opacity: 0;
19
- transition: opacity .5s ease;
20
- }
21
- .after-js > * {
22
- visibility: visible;
23
- opacity: 1;
24
- }
25
- .before-js:before {
26
- content: 'Loading';
27
- position: absolute;
28
- top: 49%;
29
- left: 49%;
30
- }
31
- .after-js:before {
32
- content: none;
33
- }
34
-
35
- /*BTNS*/
36
- .button, .pointer { cursor: pointer!important}
37
- .button{min-width:110px;}
38
- /*BTNS*/
39
- a {
40
- text-decoration: none;
41
- color:#8873FE;}
42
- a:hover { text-decoration: underline; }
43
- .uppercase {text-transform: uppercase;}
44
- .underline:hover{
45
- text-decoration: underline;
46
- text-decoration-thickness: from-font;
47
- text-underline-position: under;}
48
-
49
- /*footer position*/
50
- .main-min-height {min-height: calc(100vh - 560px);}
51
- /*footer position*/
52
-
53
- /*label*/
54
- ::placeholder {color: #8873FE;}
55
- input:focus {
56
- border: 2px solid ##9977FE;
57
- background-color:#ffffff;}
58
- :focus { outline: none;}
59
- /*label*/
60
- .skeleton-anim:after {
61
- width: 100%;
62
- height: 100%;
63
- position: absolute;
64
- top: 0;
65
- left: 0;
66
- content: "";
67
- background:
68
- linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
69
- linear-gradient(transparent, transparent),
70
- radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
71
- linear-gradient(transparent, transparent);
72
- background-repeat: no-repeat;
73
- background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
74
- background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
75
- animation: loading 1.5s infinite;
76
- }
77
-
78
- @keyframes loading {
79
- to {
80
- background-position: 200% 0, 0 0, 0 190px, 50px 195px;
14
+ .before-js > * {
15
+ visibility: hidden;
16
+ opacity: 0;
17
+ transition: opacity .5s ease;
81
18
  }
82
- }
83
- /*FX ANIMATIONS*/
84
- /*scale-round-inside_pour-BTN*/
85
- .fx-scale-round {
86
- position:relative;
87
- z-index: 10;
88
- overflow: hidden;
89
- }
90
- .fx-scale-round::after {
91
- content: "";
92
- background: #ffffff;
93
- position: absolute;
94
- z-index: -1;
95
- border-radius: 50%;
96
- left: -50%;
97
- right: -50%;
98
- top: -100%;
99
- bottom: -100%;
100
- transform: scale(0, 0);
101
- transform-origin: center bottom;
102
- transition: all 0.3s ease-out;
103
-
104
- }
105
- .fx-scale-round:hover {
106
- transform-origin: center bottom;
107
- transform: scale(1.1);
108
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
109
- }
110
- .fx-scale-round:hover::after {
111
- transform: scale(1, 1);
112
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
113
- }
114
- /*scale-round-inside_pour-BTN*/
115
- /*scale*/
116
- .fx-scale:hover {
117
- transform-origin: center bottom;
118
- transform: scale(1.1);
119
- transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
120
- }
121
- /*flash*/
122
- .fx-flash:hover {
123
- animation: flash-in .5s ;
124
- }
125
-
126
- /*flash-in animation*/
127
- @keyframes flash-in{
128
- 0% {opacity:0;}
129
- 100% {opacity:1;}
130
- }
131
- /*flash-in animation*/
132
-
133
- /*FX ANIMATIONS*/
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
+ .after-js:before {
30
+ content: none;
31
+ }
32
+ /*BTNS*/
33
+ .button, .pointer {
34
+ cursor: pointer!important}
35
+ .button{
36
+ min-width:110px;
37
+ }
38
+ /*BTNS*/
39
+ a {
40
+ text-decoration: none;
41
+ color:#8873FE;
42
+ }
43
+ a:hover {
44
+ text-decoration: underline;
45
+ }
46
+ .uppercase {
47
+ text-transform: uppercase;
48
+ }
49
+ .underline:hover{
50
+ text-decoration: underline;
51
+ text-decoration-thickness: from-font;
52
+ text-underline-position: under;
53
+ }
54
+ /*footer position*/
55
+ .main-min-height {
56
+ min-height: calc(100vh - 560px);
57
+ }
58
+ /*footer position*/
59
+ /*label*/
60
+ ::placeholder {
61
+ color: #8873FE;
62
+ }
63
+ input:focus {
64
+ border: 2px solid ##9977FE;
65
+ background-color:#ffffff;
66
+ }
67
+ :focus {
68
+ outline: none;
69
+ }
70
+ /*label*/
71
+ .skeleton-anim:after {
72
+ width: 100%;
73
+ height: 100%;
74
+ position: absolute;
75
+ top: 0;
76
+ left: 0;
77
+ content: "";
78
+ background:
79
+ linear-gradient(0.25turn, transparent, rgba(255,255,255,.75), transparent),
80
+ linear-gradient(transparent, transparent),
81
+ radial-gradient(38px circle at 19px 19px, transparent 50%, transparent 51%),
82
+ linear-gradient(transparent, transparent);
83
+ background-repeat: no-repeat;
84
+ background-size: 315px 250px, 315px 180px, 100px 100px, 225px 30px;
85
+ background-position: -315px 0, 0 0, 0px 190px, 50px 195px;
86
+ animation: loading 1.5s infinite;
87
+ }
88
+ @keyframes loading {
89
+ to {
90
+ background-position: 200% 0, 0 0, 0 190px, 50px 195px;
91
+ }
92
+ }
93
+ /*FX ANIMATIONS*/
94
+ /*scale-round-inside_pour-BTN*/
95
+ .fx-scale-round {
96
+ position:relative;
97
+ z-index: 10;
98
+ overflow: hidden;
99
+ }
100
+ .fx-scale-round::after {
101
+ content: "";
102
+ background: #ffffff;
103
+ position: absolute;
104
+ z-index: -1;
105
+ border-radius: 50%;
106
+ left: -50%;
107
+ right: -50%;
108
+ top: -100%;
109
+ bottom: -100%;
110
+ transform: scale(0, 0);
111
+ transform-origin: center bottom;
112
+ transition: all 0.3s ease-out;
113
+ }
114
+ .fx-scale-round:hover {
115
+ transform-origin: center bottom;
116
+ transform: scale(1.1);
117
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
118
+ }
119
+ .fx-scale-round:hover::after {
120
+ transform: scale(1, 1);
121
+ transition: transform 0.2s cubic-bezier(0, -0.530, 0.405, 2.8);
122
+ }
123
+ /*scale-round-inside_pour-BTN*/
124
+ /*scale*/
125
+ .fx-scale: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
+ /*flash*/
131
+ .fx-flash:hover {
132
+ animation: flash-in .5s ;
133
+ }
134
+ /*flash-in animation*/
135
+ @keyframes flash-in{
136
+ 0% {
137
+ opacity:0;
138
+ }
139
+ 100% {
140
+ opacity:1;
141
+ }
142
+ }
143
+ /*flash-in animation*/
144
+ /*FX ANIMATIONS*/
134
145
  </style>
135
146
  <script src="/js/vue.global.js"></script>
136
147
  <script src="/js/main.js"></script>
@@ -147,10 +158,14 @@ window.addEventListener('load', function() {
147
158
  getUser,
148
159
  logout,
149
160
  websiteDelete,
161
+ websiteDuplicate,
150
162
  websiteList,
151
163
  websiteCreate,
152
164
  websiteMetaWrite,
153
165
  } = api
166
+ function toSafeId(name) {
167
+ return name.replace(/[/\\?%*:|"<>]/g, '_')
168
+ }
154
169
 
155
170
  const App = {
156
171
  data() {
@@ -226,7 +241,7 @@ window.addEventListener('load', function() {
226
241
  try {
227
242
  if (!this.newWebsiteName) throw new Error('You need to provide a website name')
228
243
  this.loading = true
229
- const websiteId = this.newWebsiteName.replace(/[/\\?%*:|"<>]/g, '_')
244
+ const websiteId = toSafeId(this.newWebsiteName)
230
245
  const result = await websiteCreate({
231
246
  websiteId,
232
247
  data: {
@@ -270,6 +285,22 @@ window.addEventListener('load', function() {
270
285
  }
271
286
  },
272
287
 
288
+ async duplicateWebsite(websiteId) {
289
+ this.loading = true
290
+ try {
291
+ await websiteDuplicate({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
292
+ this.error = ''
293
+ this.websites = await websiteList({connectorId: this.user.storage.connectorId})
294
+ this.message = 'Website duplicated successfully'
295
+ this.empty = this.websites.length === 0
296
+ this.loading = false
297
+ } catch (error) {
298
+ this.loading = false
299
+ this.error = `Failed to duplicate website - ${error.message}`
300
+ this.message = ''
301
+ }
302
+ },
303
+
273
304
  async renameWebsite(websiteId) {
274
305
  const website = this.websites.find(w => w.websiteId === websiteId)
275
306
  const name = prompt('New name for this website', website.name)
@@ -304,11 +335,11 @@ window.addEventListener('load', function() {
304
335
 
305
336
 
306
337
  <title>Silex Dashboard</title>
307
- <link rel="icon" href="" />
308
- <meta property="description" content=""/>
309
- <meta property="og:title" content=""/>
310
- <meta property="og:description" content=""/>
311
- <meta property="og:image" content=""/>
338
+ <link rel="icon" href="/assets/favicon-32x32.png" />
339
+ <meta name="description" property="description" content=""/>
340
+ <meta name="og:title" property="og:title" content=""/>
341
+ <meta name="og:description" property="og:description" content=""/>
342
+ <meta name="og:image" property="og:image" content=""/>
312
343
  </head>
313
344
  <body
314
345
  id="ik0i"
@@ -551,7 +582,12 @@ window.addEventListener('load', function() {
551
582
  @click="renameWebsite(website.websiteId, 'en')"
552
583
 
553
584
  >Rename</BUTTON><BUTTON
554
- id="iol4h"
585
+ id="iol4h" title="Duplicate"
586
+ class="button-bar__item--link pointer fx-flash fx-scale button-bar__item--icon "
587
+ @click="duplicateWebsite(website.websiteId, 'en')"
588
+
589
+ ><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><path fill="#8873fe" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg></BUTTON><BUTTON
590
+
555
591
  class="button-bar__item--link pointer fx-flash fx-scale "
556
592
  @click="deleteWebsite(website.websiteId)" title="Delete"
557
593