@silexlabs/silex-dashboard 1.0.40 → 1.0.44

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 (83) hide show
  1. package/.gitmodules +2 -2
  2. package/11ty/eleventy.config.mjs +62 -0
  3. package/README.md +8 -2
  4. package/collections/connectors/en.md +70 -0
  5. package/collections/connectors/fr.md +72 -0
  6. package/collections/home/en.md +57 -0
  7. package/{pages/fr/index.md → collections/home/fr.md} +20 -21
  8. package/collections/languages/en.json +5 -0
  9. package/collections/languages/fr.json +5 -0
  10. package/collections/settings/en.json +127 -0
  11. package/collections/settings/fr.json +131 -0
  12. package/package.json +17 -8
  13. package/silex/client-config.js +24 -0
  14. package/{.silex.js → silex/server-config.js} +8 -16
  15. package/templates/connectors-en.11tydata.mjs +56 -0
  16. package/templates/connectors-en.html +440 -0
  17. package/templates/connectors-fr.11tydata.mjs +56 -0
  18. package/templates/connectors-fr.html +440 -0
  19. package/templates/css/connectors-61bd21c2345101e48cc530cacf3afc0156ce7e089fcef3a34f853a537f0c55f2.css +1 -0
  20. package/templates/css/websites-4b9b2b0a0a907b33eca109d50c2a3eee97f1955c742cef487110d21a0bbf8f50.css +1 -0
  21. package/templates/websites-en.11tydata.mjs +108 -0
  22. package/templates/websites-en.html +478 -0
  23. package/templates/websites-fr.11tydata.mjs +108 -0
  24. package/templates/websites-fr.html +478 -0
  25. package/tina/config.ts +258 -0
  26. package/tina/tina-lock.json +1 -0
  27. package/.eleventy.js +0 -11
  28. package/.silex-client.js +0 -22
  29. package/_data/languages.json +0 -7
  30. package/_includes/api-connectors.js.html +0 -96
  31. package/_includes/api-websites.js.html +0 -189
  32. package/_includes/connectors.html +0 -253
  33. package/_includes/websites.html +0 -548
  34. package/_silex/old/assets/alex-hoyau.jpg +0 -0
  35. package/_silex/old/assets/alex-small.jpg +0 -0
  36. package/_silex/old/assets/empty-projects.gif +0 -0
  37. package/_silex/old/assets/gitlab.svg +0 -13
  38. package/_silex/old/assets/picto-silex.png +0 -0
  39. package/_silex/old/assets/silex-icon-2018@200px.png +0 -0
  40. package/_silex/old/meta.json +0 -1
  41. package/_silex/old/website.json +0 -1
  42. package/_site/assets/alex-small.jpg +0 -0
  43. package/_site/assets/bg-purpel-silex.webp +0 -0
  44. package/_site/assets/bg-silex-purpel.webp +0 -0
  45. package/_site/assets/empty-projects-sos.gif +0 -0
  46. package/_site/assets/gitlab.svg +0 -13
  47. package/_site/assets/logo-silex.svg +0 -1
  48. package/_site/assets/picto-silex@3x.png +0 -0
  49. package/_site/assets/silex-dashboard.png +0 -0
  50. package/_site/assets/silex-icon-2018@200px.png +0 -0
  51. package/_site/css/connectors.css +0 -1
  52. package/_site/css/websites.css +0 -1
  53. package/_site/en/connectors/index.html +0 -376
  54. package/_site/en/index.html +0 -795
  55. package/_site/fr/connectors/index.html +0 -376
  56. package/_site/fr/index.html +0 -795
  57. package/assets/alex-small.jpg +0 -0
  58. package/assets/bg-purpel-silex.webp +0 -0
  59. package/assets/bg-silex-purpel.webp +0 -0
  60. package/assets/empty-projects-sos.gif +0 -0
  61. package/assets/favicon-32x32.png +0 -0
  62. package/assets/gitlab.svg +0 -13
  63. package/assets/logo-silex.svg +0 -1
  64. package/assets/picto-silex@3x.png +0 -0
  65. package/assets/silex-dashboard.png +0 -0
  66. package/assets/silex-icon-2018@200px.png +0 -0
  67. package/pages/connectors.css.liquid +0 -4
  68. package/pages/en/connectors.md +0 -4
  69. package/pages/en/en.json +0 -72
  70. package/pages/en/index.md +0 -28
  71. package/pages/fr/connectors.md +0 -5
  72. package/pages/fr/fr.json +0 -72
  73. package/pages/pages.11tydata.js +0 -5
  74. package/pages/websites.css.liquid +0 -4
  75. /package/{_data → 11ty/_data}/api-translations.json +0 -0
  76. /package/{_data → 11ty/_data}/site.js +0 -0
  77. /package/{_includes → 11ty/_includes}/alternate.liquid +0 -0
  78. /package/{_silex/old → templates}/assets/bg-purpel-silex.webp +0 -0
  79. /package/{_silex/old → templates}/assets/bg-silex-purpel.webp +0 -0
  80. /package/{_silex/old → templates}/assets/empty-projects-sos.gif +0 -0
  81. /package/{_site → templates}/assets/favicon-32x32.png +0 -0
  82. /package/{_silex/old → templates}/assets/logo-silex.svg +0 -0
  83. /package/{_silex/old → templates}/assets/picto-silex@3x.png +0 -0
@@ -1,795 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="">
3
- <head>
4
- <link rel="stylesheet" href="/css/websites.css" />
5
- <!-- font google -->
6
- <link rel="preconnect" href="https://fonts.gstatic.com" />
7
- <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;700&display=swap" rel="stylesheet">
8
-
9
- <link
10
- rel="alternate"
11
- hreflang="en"
12
- href="/en/" />
13
- <style>
14
- .before-js > * {
15
- visibility: hidden;
16
- opacity: 0;
17
- transition: opacity .5s ease;
18
- }
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*/
145
- </style>
146
- <script src="/js/vue.global.js"></script>
147
- <script src="/js/main.js"></script>
148
- <script type="module">
149
- const CONNECTORS_PATH = '/connectors/'
150
- window.addEventListener('load', function() {
151
- const { createApp } = Vue;
152
- const { api, constants, types } = silex;
153
- const {
154
- ConnectorType,
155
- } = types
156
- const {
157
- setServerUrl,
158
- getUser,
159
- logout,
160
- websiteDelete,
161
- websiteDuplicate,
162
- websiteList,
163
- websiteCreate,
164
- websiteMetaWrite,
165
- } = api
166
- function toSafeId(name) {
167
- return name.replace(/[/\\?%*:|"<>]/g, '_')
168
- }
169
-
170
- const App = {
171
- data() {
172
- return {
173
- websites: [],
174
- newWebsiteName: '',
175
- showCreationForm: false,
176
- error: null,
177
- message: null,
178
- loggedIn: false,
179
- loading: true,
180
- storage: null,
181
- user: null,
182
- showMenu: false,
183
- empty: false,
184
- }
185
- },
186
- mounted() {
187
- this.init()
188
- },
189
-
190
- methods: {
191
- async init() {
192
- try {
193
- // Init Silex server path
194
- // Go up one level because of the language prefix
195
- setServerUrl((window.location.origin + window.location.pathname.replace(/\/$/, '')).replace(/\/[^/]+$/, ''))
196
- // Start
197
- const user = await getUser({type: ConnectorType.STORAGE})
198
- if(user) {
199
- this.user = user
200
- this.loggedIn = true
201
- this.websites = await websiteList({connectorId: this.user.storage.connectorId})
202
- this.empty = this.websites.length === 0
203
- this.loading = false
204
- } else {
205
- this.openLogin()
206
- }
207
- } catch (error) {
208
- console.error(error)
209
- this.loading = false
210
- if(error.code === 401 || error.httpStatusCode === 401) {
211
- this.loggedIn = false
212
- this.openLogin()
213
- } else {
214
- this.error = `Erreur, impossible de démarrer le tableau de bord - ${error.message}`
215
- this.message = ''
216
- }
217
- }
218
- },
219
-
220
- openLogin(id, lang) {
221
- //throw new Error('debug')
222
- const path = `/fr${CONNECTORS_PATH}`
223
- console.log(window.location.pathname, window.location.path, path)
224
- if(window.location.pathname === path) return
225
- window.open(path, '_self')
226
- },
227
-
228
- openEditor(id, lang) {
229
- window.open(`/?id=${id}&lang=${lang}&connectorId=${this.user.storage.connectorId}`, '_self')
230
- },
231
-
232
- async logout() {
233
- await logout({
234
- type: ConnectorType.STORAGE,
235
- connectorId: this.user.storage.connectorId,
236
- })
237
- window.location.reload()
238
- },
239
-
240
- async createWebsite() {
241
- try {
242
- if (!this.newWebsiteName) throw new Error('Vous n\'avez pas donné de nom à votre site')
243
- this.loading = true
244
- const websiteId = toSafeId(this.newWebsiteName)
245
- const result = await websiteCreate({
246
- websiteId,
247
- data: {
248
- name: this.newWebsiteName,
249
- imageUrl: null,
250
- },
251
- connectorId: this.user.storage.connectorId
252
- })
253
- this.message = 'Le site a bien été créé'
254
- this.error = ''
255
- this.newWebsiteName = ''
256
- this.showCreationForm = false;
257
- this.websites = await websiteList({connectorId: this.user.storage.connectorId})
258
- this.empty = this.websites.length === 0
259
- this.loading = false
260
- return result
261
- } catch (error) {
262
- this.loading = false
263
- console.error(error)
264
- this.error = `Erreur, le site n\'a pas été créé - ${error.message}`
265
- this.message = ''
266
- }
267
- },
268
-
269
- async deleteWebsite(websiteId) {
270
- const ok = confirm('Etes vous sûr.e de vouloir supprimer définitivement ce site ?')
271
- if (!ok) return
272
- this.loading = true
273
- try {
274
- const result = await websiteDelete({websiteId, connectorId: this.user.storage.connectorId})
275
- this.message = 'Le site a bien été effacé'
276
- this.error = ''
277
- this.websites = await websiteList({connectorId: this.user.storage.connectorId})
278
- this.empty = this.websites.length === 0
279
- this.loading = false
280
- return result
281
- } catch (error) {
282
- this.loading = false
283
- this.error = `Erreur, le site n\'a pas été effacé - ${error.message}`
284
- this.message = ''
285
- }
286
- },
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 = 'Le site a bien été dupliqué'
295
- this.empty = this.websites.length === 0
296
- this.loading = false
297
- } catch (error) {
298
- this.loading = false
299
- this.error = `Erreur, le site n'a pas été dupliqué - ${error.message}`
300
- this.message = ''
301
- }
302
- },
303
-
304
- async renameWebsite(websiteId) {
305
- const website = this.websites.find(w => w.websiteId === websiteId)
306
- const name = prompt('Nouveau nom', website.name)
307
- if (!name) return
308
- this.loading = true
309
- try {
310
- const result = await websiteMetaWrite({websiteId, connectorId: this.user.storage.connectorId, data: { name }})
311
- this.message = 'Changement de nom effectué'
312
- this.error = ''
313
- this.websites = await websiteList({connectorId: this.user.storage.connectorId})
314
- this.empty = this.websites.length === 0
315
- this.loading = false
316
- return result
317
- } catch (error) {
318
- this.loading = false
319
- this.error = `Erreur, le nom n\'a pas été changé - ${error.message}`
320
- this.message = ''
321
- }
322
- },
323
- },
324
- };
325
-
326
- // Start vue app
327
- createApp(App).mount('.app');
328
-
329
- // Remove loading
330
- setTimeout(() => {
331
- document.querySelector('.before-js').classList.add('after-js')
332
- }, 100)
333
- })
334
- </script>
335
-
336
-
337
- <title>Dashboard Silex</title>
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=""/>
343
- </head>
344
- <body
345
- id="ik0i"
346
- class="body loading app before-js"
347
-
348
-
349
- ><HEADER
350
- id="igrg"
351
- class="menu-bar "
352
-
353
-
354
- ><A
355
- id="igvu43" href="/"
356
-
357
-
358
-
359
- ><img
360
- src="/assets/picto-silex@3x.png" id="iel80b-2"
361
- class="nav__logo "
362
-
363
-
364
- ></img></A><NAV
365
- id="i9jq"
366
- class="nav "
367
-
368
-
369
- ><A
370
- id="iels" href="/"
371
- class="nav__item uppercase active"
372
- target=""
373
-
374
- >Sites</A><A
375
- id="iels" href="http://docs.silex.me/"
376
- class="nav__item uppercase "
377
- target="_blank"
378
-
379
- >Docs</A><A
380
- id="iels" href="https://www.silex.me/"
381
- class="nav__item uppercase "
382
- target="_blank"
383
-
384
- >A propos</A><A
385
- id="iels" href="https://community.silex.me/"
386
- class="nav__item uppercase "
387
- target="_blank"
388
-
389
- >Communauté</A><A
390
- id="iels" href="https://mail-list.silexlabs.org/subscription/cemnfkaVrK?locale=fr-FR&source=silex-dashboard"
391
- class="nav__item uppercase "
392
- target="_blank"
393
-
394
- >News</A></NAV><div
395
- id="i2red7"
396
- class="lang h-space "
397
-
398
-
399
- ><A
400
- href="/en" id="iciz"
401
- class="lang__item nav__item uppercase "
402
- hreflang="en"
403
-
404
- >en</A><A
405
- href="/fr" id="iciz"
406
- class="lang__item nav__item uppercase active"
407
- hreflang="fr"
408
-
409
- >fr</A></div><div
410
- id="i24ew"
411
- class="user__wrapper pointer "
412
- v-if="user && !user.storage.disableLogout" @NOmouseover="showMenu = true" @NOmouseout="showMenu = false" @click="showMenu = !showMenu"
413
-
414
- ><div
415
- id="i5xsbd"
416
- class="user-icon__wrapper "
417
- v-if="user" v-show="!showMenu || user.storage.disableLogout"
418
-
419
- ><div
420
- id="i5wlbq"
421
- class="user-icon__image "
422
- v-if="user" v-show="!showMenu || user.storage.disableLogout" :style='`background: url("${user.picture}"); background-repeat: no-repeat; background-size: contain;`'
423
-
424
- ></div></div><div
425
- id="ic9eoa"
426
-
427
- v-show="showMenu && !user.storage.disableLogout"
428
-
429
- ><div
430
- id="iksw4d"
431
- class="button button--tertiary text-centered "
432
- @click="logout()"
433
-
434
- >Logout</div></div></div></HEADER><HEADER
435
- id="iy8ax3"
436
- class="bg-silex-purpel "
437
-
438
-
439
- ><div
440
- id="iisz8f"
441
- class="section-top text-centered text-white "
442
-
443
-
444
- ><H1
445
- id="ic31o"
446
- class="title-40 "
447
- v-if="!empty"
448
-
449
- >Bienvenue !</H1><P
450
- id="iyex8"
451
- class="subtitle-16 "
452
- v-if="!empty"
453
-
454
- >Plongez-vous dans un projet ou créez-en un nouveau</P><H1
455
- id="i4ybc"
456
- class="title-40 "
457
- v-if="empty"
458
-
459
- >Bienvenue !</H1><P
460
- id="iino6r"
461
- class="subtitle-16 "
462
- v-if="empty"
463
-
464
- >Créez votre premier projet, clickez sur le boutont "Créer un site"</P></div></HEADER><MAIN
465
- id="iz63r"
466
- class="padding-normal main-min-height website-max-width margin-80 "
467
-
468
-
469
- ><SECTION
470
- id="iqmx38"
471
-
472
- v-if="empty"
473
-
474
- ></SECTION><div
475
- id="ickx4"
476
- class="margin-20 "
477
- v-if="!empty"
478
-
479
- ><BUTTON
480
- id="ic92g"
481
- class="button button--primary rounded top-space-40 fx-scale-round "
482
- @click="showCreationForm = !showCreationForm" v-if="!showCreationForm"
483
-
484
- ><span
485
- id="igsxoc"
486
- class="icon-font "
487
-
488
-
489
- >+</span> <span
490
-
491
-
492
-
493
-
494
- >Créer un site</span></BUTTON><div
495
- id="i0ro3"
496
- class="button button--secondary rounded "
497
-
498
-
499
- >Import</div></div><div
500
- id="ihwwxz"
501
- class="box top-space-40 padding-30 box_transp "
502
- v-if="showCreationForm"
503
-
504
- ><H3
505
- id="i3gd1b"
506
- class="box__header text-centered "
507
-
508
-
509
- >Créer un nouveau site internet</H3><form
510
- method="get" id="i50acf"
511
- class="form "
512
- @submit.prevent="createWebsite"
513
-
514
- ><div
515
- id="igtg1t"
516
- class="v-space "
517
-
518
-
519
- ><label
520
- id="i1nmbc"
521
- class="v-space bold color-2B1B63-80 "
522
-
523
-
524
- >Nom du site</label><input
525
- type="text" id="ij5iwh" placeholder="Mon super projet"
526
- class="input full-width "
527
- v-model="newWebsiteName"
528
-
529
- ></input></div><div
530
- id="ie0xes"
531
-
532
-
533
-
534
- ><button
535
- type="submit" id="i021na"
536
- class="button rounded button--primary right-space-20 fx-scale-round "
537
-
538
-
539
- >Créer</button><button
540
- type="reset"
541
- class="button rounded button--secondary fx-scale-round "
542
- @click="showCreationForm = !showCreationForm"
543
-
544
- >Annuler</button></div></form></div><div
545
- id="if80m"
546
- class="margin-20 "
547
- v-if="!empty"
548
-
549
- ><SECTION
550
- id="idgvg"
551
- class="button-bar loaded__item "
552
- v-if="!loading" v-for="(website, index) in websites" :key="index"
553
-
554
- ><H3
555
- id="i69a7"
556
- class="right-space-40 color-2B1B63-80 uppercase pointer fx-flash full-width button-bar__title underline "
557
- v-text="website.name || website.id" @click="openEditor(website.websiteId, 'fr')"
558
-
559
- >My first website</H3><P
560
- id="i65hn"
561
- class="button-bar__item--secondary flex-no-shrink right-space-40 "
562
- v-text="'Mis à jour le ' + new Date(website.updatedAt).toLocaleDateString(undefined, { day: 'numeric', month: 'long', year: 'numeric' })"
563
-
564
- >Updated 1h ago by lexoyo</P><P
565
- id="i64qa"
566
- class="button-bar__item--secondary flex-no-shrink right-space-40 "
567
- v-text="'Créé le ' + new Date(website.createdAt).toLocaleDateString(undefined, { day: 'numeric', month: 'long', year: 'numeric' })"
568
-
569
- >Created 2023-02-16 by lexoyo</P><div
570
- id="i3b4tr"
571
- class="flex-no-shrink "
572
-
573
-
574
- ><BUTTON
575
- id="ifyf6p" title="Editer"
576
- class="button-bar__item--link pointer fx-scale fx-flash button-bar__item--icon "
577
- @click="openEditor(website.websiteId, 'fr')"
578
-
579
- ><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="#8873fe" d="M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z"/></svg></BUTTON><BUTTON
580
- id="ihf6ew" title="Renommer"
581
- class="button-bar__item--link pointer fx-scale fx-flash button-bar__item--icon "
582
- @click="renameWebsite(website.websiteId, 'fr')"
583
-
584
- ><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="#8873fe" d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"/></svg></BUTTON><BUTTON
585
- id="iol4h" title="Dupliquer"
586
- class="button-bar__item--link pointer fx-flash fx-scale button-bar__item--icon "
587
- @click="duplicateWebsite(website.websiteId, 'fr')"
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
-
591
- class="button-bar__item--link pointer fx-flash fx-scale "
592
- @click="deleteWebsite(website.websiteId)" title="Supprimer"
593
-
594
- >X</BUTTON></div></SECTION><SECTION
595
- id="i1fjn"
596
- class="button-bar loading__item skeleton-anim skeleton-wrapper "
597
- v-if="loading"
598
-
599
- ><H3
600
- id="iwu6a"
601
- class="skeleton-text skeleton right-space-40 "
602
-
603
-
604
- >My first websiteMy first websiteMy first websiteMy first</H3><P
605
- id="i26fn"
606
- class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
607
-
608
-
609
- >Updated 1h ago by lexoyo</P><P
610
- id="iywbk"
611
- class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
612
-
613
-
614
- >Created 2023-02-16 by lexoyo</P><div
615
- id="ixz6c"
616
- class="skeleton skeleton-button "
617
-
618
-
619
- >Edit</div></SECTION><SECTION
620
- id="iwxxo5"
621
- class="button-bar loading__item skeleton-anim skeleton-wrapper "
622
- v-if="loading"
623
-
624
- ><H3
625
- id="inmp3"
626
- class="skeleton-text skeleton right-space-40 "
627
-
628
-
629
- >My first websiteMy first websiteMy first websiteMy first</H3><P
630
- id="icjz8"
631
- class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
632
-
633
-
634
- >Updated 1h ago by lexoyo</P><P
635
- id="illbe"
636
- class="button-bar__item--secondary skeleton-text skeleton right-space-40 "
637
-
638
-
639
- >Created 2023-02-16 by lexoyo</P><div
640
- id="i9fx3l"
641
- class="skeleton skeleton-button "
642
-
643
-
644
- >Edit</div></SECTION><SECTION
645
- id="isld3r"
646
- class="button-bar loading__item skeleton-anim skeleton-wrapper "
647
- v-if="loading"
648
-
649
- ><H3
650
-
651
- class="button-bar_item button-bar__item--main skeleton-text skeleton right-space-40 "
652
-
653
-
654
- >My first websiteMy first websiteMy first websiteMy first</H3><P
655
-
656
- class="button-bar_item button-bar__item--secondary skeleton-text skeleton right-space-40 "
657
-
658
-
659
- >Updated 1h ago by lexoyo</P><P
660
-
661
- class="button-bar_item button-bar__item--secondary skeleton-text skeleton right-space-40 "
662
-
663
-
664
- >Created 2023-02-16 by lexoyo</P><div
665
- id="i8oes3"
666
- class="button-bar_item skeleton skeleton-button "
667
-
668
-
669
- >Edit</div></SECTION></div><div
670
- id="ipccl7"
671
-
672
-
673
-
674
- ><div
675
- id="i2fkm9"
676
- class="margin-20 empty-image "
677
- v-if="empty"
678
-
679
- ></div><div
680
- id="i5ydxo"
681
- class="box padding-50-30 box--centered "
682
- v-if="empty"
683
-
684
- ><P
685
- id="ikl1qu"
686
- class="text-centered title-26 "
687
-
688
-
689
- >C'est bien calme ici...</P><H3
690
- id="iwzrqi"
691
- class="text-centered title-26 "
692
-
693
-
694
- >Prêt.e à démarrer une nouvelle aventure?</H3><BUTTON
695
- id="i2x0l"
696
- class="button button--primary rounded top-space-40 fx-scale-round "
697
- @click="showCreationForm = !showCreationForm" v-if="!showCreationForm" v-if="empty"
698
-
699
- ><span
700
- id="ibsgw"
701
- class="icon-font "
702
-
703
-
704
- >+</span> <span
705
- id="itl2n8"
706
-
707
-
708
-
709
- >Créer un site</span></BUTTON></div></div><div
710
- id="i7ej6j"
711
- class="flex-between box-message text-white "
712
- v-if="error"
713
-
714
- ><H3
715
- id="iv0eyi"
716
- class="box-message-text "
717
- v-text="error"
718
-
719
- >Insert your text here</H3><div
720
- id="i4656n"
721
- class="pointer button-bar__item--link text-white "
722
- @click="error = null"
723
-
724
- >Fermer</div></div><div
725
- id="ilteie"
726
- class="flex-between box-message text-white "
727
- v-if="message"
728
-
729
- ><H3
730
- id="i2d31v"
731
- class="box-message-text "
732
- v-text="message"
733
-
734
- >Insert your text here</H3><div
735
- id="i2urco"
736
- class="rounded pointer button-bar__item--link text-white "
737
- @click="message = null"
738
-
739
- >Fermer</div></div></MAIN><FOOTER
740
- id="ilzpl"
741
- class="footer "
742
-
743
-
744
- ><div
745
- id="isucae"
746
- class="footer__column "
747
-
748
-
749
- ><A
750
- id="ipa5zg" href="http://docs.silex.me/"
751
- class="footer__item "
752
-
753
-
754
- >Documentation</A><A
755
- id="ipa5zg" href="https://www.silex.me/"
756
- class="footer__item "
757
-
758
-
759
- >À propos de Silex, site officiel</A><A
760
- id="ipa5zg" href="https://community.silex.me/"
761
- class="footer__item "
762
-
763
-
764
- >Forum communautaire</A><A
765
- id="ipa5zg" href="http://www.silexlabs.org/"
766
- class="footer__item "
767
-
768
-
769
- >Silex Labs - l'organisation à but non lucratif derrière Silex</A></div><div
770
- id="ie28kq"
771
- class="footer__column "
772
-
773
-
774
- ><A
775
- href="https://mail-list.silexlabs.org/subscription/cemnfkaVrK?locale=fr-FR&source=silex-dashboard" id="iahjww"
776
- class="footer__item "
777
-
778
-
779
- >Newsletter - tous les 3 mois</A><A
780
- href="https://www.meetup.com/Silex-Labs-Aperopensource/" id="iahjww"
781
- class="footer__item "
782
-
783
-
784
- >Meetups, événements, ateliers</A><A
785
- href="https://fosstodon.org/@silex" id="iahjww"
786
- class="footer__item "
787
-
788
-
789
- >Mastodon - suivez-nous sur le réseau social libre/gratuit</A><A
790
- href="https://www.youtube.com/user/Silexlabs/" id="iahjww"
791
- class="footer__item "
792
-
793
-
794
- >Youtube - tutoriels et plus</A></div></FOOTER></body>
795
- </html>