@gnar-engine/cli 1.0.4 → 1.0.6

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 (153) hide show
  1. package/bootstrap/deploy.localdev.yml +44 -3
  2. package/bootstrap/secrets.localdev.yml +20 -5
  3. package/bootstrap/services/control/src/config.js +4 -0
  4. package/bootstrap/services/notification/Dockerfile +2 -2
  5. package/bootstrap/services/notification/package.json +14 -32
  6. package/bootstrap/services/notification/src/app.js +50 -48
  7. package/bootstrap/services/notification/src/commands/notification.handler.js +96 -0
  8. package/bootstrap/services/notification/src/config.js +55 -12
  9. package/bootstrap/services/notification/src/controllers/http.controller.js +87 -0
  10. package/bootstrap/services/notification/src/controllers/message.controller.js +39 -70
  11. package/bootstrap/services/notification/src/db/migrations/01-init.js +50 -0
  12. package/bootstrap/services/notification/src/db/migrations/02-notification-service-init.js +23 -0
  13. package/bootstrap/services/notification/src/policies/notification.policy.js +49 -0
  14. package/bootstrap/services/notification/src/schema/notification.schema.js +17 -0
  15. package/bootstrap/services/notification/src/services/notification.service.js +32 -0
  16. package/bootstrap/services/page/Dockerfile +23 -0
  17. package/bootstrap/services/page/package.json +16 -0
  18. package/bootstrap/services/page/src/app.js +50 -0
  19. package/bootstrap/services/page/src/commands/block.handler.js +94 -0
  20. package/bootstrap/services/page/src/commands/page.handler.js +167 -0
  21. package/bootstrap/services/page/src/config.js +62 -0
  22. package/bootstrap/services/page/src/controllers/block.http.controller.js +87 -0
  23. package/bootstrap/services/page/src/controllers/message.controller.js +51 -0
  24. package/bootstrap/services/page/src/controllers/page.http.controller.js +89 -0
  25. package/bootstrap/services/page/src/policies/block.policy.js +50 -0
  26. package/bootstrap/services/page/src/policies/page.policy.js +49 -0
  27. package/bootstrap/services/page/src/schema/page.schema.js +139 -0
  28. package/bootstrap/services/page/src/services/block.service.js +83 -0
  29. package/bootstrap/services/page/src/services/page.service.js +83 -0
  30. package/bootstrap/services/portal/Dockerfile +20 -0
  31. package/bootstrap/services/portal/README.md +73 -0
  32. package/bootstrap/services/portal/index.html +13 -0
  33. package/bootstrap/services/portal/nginx.conf +5 -0
  34. package/bootstrap/services/portal/package.json +33 -0
  35. package/bootstrap/services/portal/public/vite.svg +1 -0
  36. package/bootstrap/services/portal/react-router.config.js +7 -0
  37. package/bootstrap/services/portal/src/App.jsx +16 -0
  38. package/bootstrap/services/portal/src/assets/gnar-engine-white-logo.svg +9 -0
  39. package/bootstrap/services/portal/src/assets/icon-agent.svg +6 -0
  40. package/bootstrap/services/portal/src/assets/icon-cog.svg +4 -0
  41. package/bootstrap/services/portal/src/assets/icon-delete.svg +3 -0
  42. package/bootstrap/services/portal/src/assets/icon-home.svg +3 -0
  43. package/bootstrap/services/portal/src/assets/icon-padlock.svg +3 -0
  44. package/bootstrap/services/portal/src/assets/icon-page.svg +6 -0
  45. package/bootstrap/services/portal/src/assets/icon-reports.svg +3 -0
  46. package/bootstrap/services/portal/src/assets/icon-user.svg +3 -0
  47. package/bootstrap/services/portal/src/assets/icon-users.svg +3 -0
  48. package/bootstrap/services/portal/src/assets/login-green-rad-back-1.jpg +0 -0
  49. package/bootstrap/services/portal/src/assets/react.svg +1 -0
  50. package/bootstrap/services/portal/src/components/CrudList/CrudList.jsx +85 -0
  51. package/bootstrap/services/portal/src/components/CrudList/CrudList.less +59 -0
  52. package/bootstrap/services/portal/src/components/CustomSelect/CustomSelect.jsx +81 -0
  53. package/bootstrap/services/portal/src/components/LoginForm/LoginForm.jsx +58 -0
  54. package/bootstrap/services/portal/src/components/PageBlockSwitch/PageBlockSwitch.jsx +129 -0
  55. package/bootstrap/services/portal/src/components/Sidebar/Sidebar.jsx +33 -0
  56. package/bootstrap/services/portal/src/components/Sidebar/Sidebar.less +37 -0
  57. package/bootstrap/services/portal/src/components/Topbar/Topbar.jsx +19 -0
  58. package/bootstrap/services/portal/src/components/Topbar/Topbar.less +22 -0
  59. package/bootstrap/services/portal/src/components/UserInfo/UserInfo.jsx +33 -0
  60. package/bootstrap/services/portal/src/components/UserInfo/UserInfo.less +21 -0
  61. package/bootstrap/services/portal/src/css/style.css +711 -0
  62. package/bootstrap/services/portal/src/data/pages.data.js +10 -0
  63. package/bootstrap/services/portal/src/elements/CustomSelect/CustomSelect.jsx +65 -0
  64. package/bootstrap/services/portal/src/elements/CustomSelect/CustomSelect.less +102 -0
  65. package/bootstrap/services/portal/src/elements/ImageInput/ImageInput.jsx +115 -0
  66. package/bootstrap/services/portal/src/elements/ImageInput/ImageInput.less +43 -0
  67. package/bootstrap/services/portal/src/elements/ImageMultiInput/ImageMultiInput.jsx +124 -0
  68. package/bootstrap/services/portal/src/elements/ImageMultiInput/ImageMultiInput.less +0 -0
  69. package/bootstrap/services/portal/src/elements/Repeater/Repeater.jsx +52 -0
  70. package/bootstrap/services/portal/src/elements/Repeater/Repeater.less +70 -0
  71. package/bootstrap/services/portal/src/elements/RichTextInput/RichTextInput.jsx +18 -0
  72. package/bootstrap/services/portal/src/elements/RichTextInput/RichTextInput.less +37 -0
  73. package/bootstrap/services/portal/src/elements/SaveButton/SaveButton.jsx +45 -0
  74. package/bootstrap/services/portal/src/elements/SelectRepeater/SelectRepeater.jsx +63 -0
  75. package/bootstrap/services/portal/src/elements/SelectRepeater/SelectRepeater.less +23 -0
  76. package/bootstrap/services/portal/src/elements/TextInput/TextInput.jsx +17 -0
  77. package/bootstrap/services/portal/src/layouts/Card/Card.jsx +15 -0
  78. package/bootstrap/services/portal/src/layouts/PortalLayout/PortalLayout.jsx +29 -0
  79. package/bootstrap/services/portal/src/layouts/PortalLayout/PortalLayout.less +49 -0
  80. package/bootstrap/services/portal/src/main.jsx +51 -0
  81. package/bootstrap/services/portal/src/pages/BlockSinglePage/BlockSinglePage.jsx +277 -0
  82. package/bootstrap/services/portal/src/pages/BlocksPage/BlocksPage.jsx +23 -0
  83. package/bootstrap/services/portal/src/pages/DashboardPage/DashboardPage.jsx +11 -0
  84. package/bootstrap/services/portal/src/pages/DashboardPage/DashboardPage.less +0 -0
  85. package/bootstrap/services/portal/src/pages/LoginPage/LoginPage.jsx +21 -0
  86. package/bootstrap/services/portal/src/pages/LoginPage/LoginPage.less +51 -0
  87. package/bootstrap/services/portal/src/pages/PageSinglePage/PageSinglePage.jsx +338 -0
  88. package/bootstrap/services/portal/src/pages/PagesPage/PagesPage.jsx +23 -0
  89. package/bootstrap/services/portal/src/pages/UserSinglePage/UserSinglePage.jsx +9 -0
  90. package/bootstrap/services/portal/src/pages/UserSinglePage/UserSinglePage.less +0 -0
  91. package/bootstrap/services/portal/src/pages/UsersPage/UsersPage.jsx +25 -0
  92. package/bootstrap/services/portal/src/pages/UsersPage/UsersPage.less +0 -0
  93. package/bootstrap/services/portal/src/services/block.js +28 -0
  94. package/bootstrap/services/portal/src/services/client.js +70 -0
  95. package/bootstrap/services/portal/src/services/gravatar.js +14 -0
  96. package/bootstrap/services/portal/src/services/page.js +28 -0
  97. package/bootstrap/services/portal/src/services/storage.js +62 -0
  98. package/bootstrap/services/portal/src/services/user.js +41 -0
  99. package/bootstrap/services/portal/src/slices/authSlice.js +101 -0
  100. package/bootstrap/services/portal/src/store/configureStore.js +10 -0
  101. package/bootstrap/services/portal/src/style/cards.less +57 -0
  102. package/bootstrap/services/portal/src/style/global.less +204 -0
  103. package/bootstrap/services/portal/src/style/icons.less +21 -0
  104. package/bootstrap/services/portal/src/style/inputs.less +52 -0
  105. package/bootstrap/services/portal/src/style/main.less +28 -0
  106. package/bootstrap/services/portal/src/utils/utils.js +9 -0
  107. package/bootstrap/services/portal/vite.config.js +12 -0
  108. package/bootstrap/services/user/src/app.js +6 -1
  109. package/bootstrap/services/user/src/commands/user.handler.js +35 -21
  110. package/bootstrap/services/user/src/config.js +5 -1
  111. package/bootstrap/services/user/src/policies/user.policy.js +3 -1
  112. package/bootstrap/services/user/src/tests/commands/user.test.js +31 -0
  113. package/install-from-clone.sh +30 -0
  114. package/package.json +1 -1
  115. package/src/cli.js +2 -0
  116. package/src/config.js +8 -0
  117. package/src/dev/commands.js +11 -3
  118. package/src/dev/dev.service.js +164 -64
  119. package/src/helpers/helpers.js +24 -0
  120. package/src/profiles/command.js +41 -0
  121. package/src/profiles/profiles.client.js +23 -0
  122. package/src/provisioner/Dockerfile +27 -0
  123. package/src/provisioner/package.json +19 -0
  124. package/src/provisioner/src/app.js +56 -0
  125. package/src/provisioner/src/services/mongodb.js +58 -0
  126. package/src/provisioner/src/services/mysql.js +51 -0
  127. package/src/provisioner/src/services/secrets.js +84 -0
  128. package/src/scaffolder/commands.js +58 -2
  129. package/src/scaffolder/scaffolder.handler.js +164 -72
  130. package/templates/entity/src/commands/{{entityName}}.handler.js.hbs +94 -0
  131. package/templates/entity/src/controllers/{{entityName}}.http.controller.js.hbs +87 -0
  132. package/templates/entity/src/mysql.db/migrations/03-{{entityName}}-entity-init.js.hbs +23 -0
  133. package/templates/entity/src/policies/{{entityName}}.policy.js.hbs +49 -0
  134. package/templates/entity/src/schema/{{entityName}}.schema.js.hbs +17 -0
  135. package/templates/entity/src/services/mongodb.{{entityName}}.service.js.hbs +70 -0
  136. package/templates/entity/src/services/mysql.{{entityName}}.service.js.hbs +27 -0
  137. package/templates/service/src/app.js.hbs +12 -1
  138. package/templates/service/src/commands/{{serviceName}}.handler.js.hbs +1 -1
  139. package/templates/service/src/mongodb.config.js.hbs +5 -1
  140. package/templates/service/src/mysql.config.js.hbs +4 -0
  141. package/bootstrap/services/notification/Dockerfile.prod +0 -37
  142. package/bootstrap/services/notification/README.md +0 -3
  143. package/bootstrap/services/notification/src/commands/command-bus.js +0 -20
  144. package/bootstrap/services/notification/src/commands/handlers/control.handler.js +0 -18
  145. package/bootstrap/services/notification/src/commands/handlers/notification.handler.js +0 -157
  146. package/bootstrap/services/notification/src/services/logger.service.js +0 -16
  147. package/bootstrap/services/notification/src/services/ses.service.js +0 -23
  148. package/bootstrap/services/notification/src/templates/admin-order-recieved.hbs +0 -136
  149. package/bootstrap/services/notification/src/templates/admin-subscription-failed.hbs +0 -87
  150. package/bootstrap/services/notification/src/templates/customer-order-recieved.hbs +0 -132
  151. package/bootstrap/services/notification/src/templates/customer-subscription-failed.hbs +0 -77
  152. package/bootstrap/services/user/src/tests/user.test.js +0 -126
  153. /package/bootstrap/services/{notification/src/tests/notification.test.js → portal/src/components/CustomSelect/CustomSelect.less} +0 -0
@@ -0,0 +1,711 @@
1
+ /* vars */
2
+ /* Fonts */
3
+ html {
4
+ background: #242424;
5
+ }
6
+ body,
7
+ body * {
8
+ font-family: ubuntu, sans-serif !important;
9
+ color: #ffffff;
10
+ font-size: 14px;
11
+ }
12
+ /* Global styles */
13
+ h1 {
14
+ margin-top: 0px;
15
+ margin-bottom: 40px;
16
+ font-size: 18px;
17
+ font-weight: 400;
18
+ }
19
+ h2 {
20
+ font-size: 14px;
21
+ font-weight: 500;
22
+ }
23
+ body {
24
+ margin: 0px;
25
+ }
26
+ body,
27
+ body #root {
28
+ min-height: 100vh;
29
+ }
30
+ .separator {
31
+ display: inline-block;
32
+ margin-top: 20px;
33
+ margin-bottom: 20px;
34
+ height: 0px;
35
+ border-top: 1px solid #3C3C3C;
36
+ width: 100%;
37
+ }
38
+ .content-wrap {
39
+ display: flex;
40
+ justify-content: center;
41
+ }
42
+ .content {
43
+ width: 100%;
44
+ max-width: 1550px;
45
+ margin-left: auto;
46
+ margin-right: auto;
47
+ padding-left: 20px;
48
+ padding-right: 20px;
49
+ }
50
+ .instruction {
51
+ margin-top: 10px;
52
+ margin-bottom: 10px;
53
+ color: #D9D9D9;
54
+ }
55
+ .flex-row {
56
+ display: flex;
57
+ flex-direction: row;
58
+ justify-content: space-between;
59
+ gap: 20px;
60
+ }
61
+ .flex-row-end {
62
+ align-items: flex-end;
63
+ }
64
+ .form-cont {
65
+ width: 100%;
66
+ margin-bottom: 30px;
67
+ }
68
+ .full-width-select-cont,
69
+ .full-width-select-cont .custom-select {
70
+ min-width: 100%;
71
+ }
72
+ .flex-row-select-cont {
73
+ min-width: 100%;
74
+ display: flex;
75
+ flex-direction: row;
76
+ justify-content: space-between;
77
+ gap: 20px;
78
+ }
79
+ .flex-row-select-cont .custom-select {
80
+ width: 100%;
81
+ max-width: unset;
82
+ }
83
+ .flex-row-checkbox-cont {
84
+ min-width: 100%;
85
+ display: flex;
86
+ flex-direction: row;
87
+ justify-content: space-between;
88
+ gap: 20px;
89
+ }
90
+ .flex-row-checkbox-cont label {
91
+ display: inline-block;
92
+ }
93
+ .flex-row-buttons-cont {
94
+ display: flex;
95
+ flex-direction: row;
96
+ justify-content: flex-end;
97
+ gap: 20px;
98
+ }
99
+ .button.button-loading {
100
+ background: #3C3C3C !important;
101
+ cursor: not-allowed !important;
102
+ }
103
+ .button.button-loading:disabled {
104
+ cursor: not-allowed;
105
+ opacity: 0.5;
106
+ }
107
+ .text-link {
108
+ color: #D9D9D9;
109
+ cursor: pointer;
110
+ display: inline-block;
111
+ text-decoration: none;
112
+ font-size: 14px;
113
+ }
114
+ .text-link:hover {
115
+ opacity: 0.8;
116
+ }
117
+ .input {
118
+ font-size: 12px;
119
+ color: #2C2C2C;
120
+ }
121
+ .input input {
122
+ background: #242424 !important;
123
+ color: white;
124
+ padding: 10px;
125
+ padding-left: 48px;
126
+ border-radius: 20px;
127
+ font-size: 14px;
128
+ margin-top: 5px;
129
+ margin-bottom: 5px !important;
130
+ }
131
+ .input.icon {
132
+ background-size: 15px;
133
+ background-repeat: no-repeat;
134
+ background-position: 15px 15px;
135
+ }
136
+ .input.icon input {
137
+ padding-left: 50px;
138
+ }
139
+ .single-crud-page .top-bar {
140
+ margin-bottom: 20px;
141
+ }
142
+ .single-crud-page .bottom-bar {
143
+ margin-top: 20px;
144
+ margin-bottom: 20px;
145
+ justify-content: flex-end;
146
+ }
147
+ .error-messages {
148
+ display: flex;
149
+ flex-direction: row;
150
+ justify-content: flex-end;
151
+ }
152
+ .error-messages ul {
153
+ list-style: none;
154
+ margin: 0px;
155
+ }
156
+ .error-messages li,
157
+ .error-messages a,
158
+ .error-messages span,
159
+ .error-messages p {
160
+ color: #FF4D4F;
161
+ }
162
+ .button-group button {
163
+ margin-left: 15px;
164
+ }
165
+ input[type="text"],
166
+ input[type="password"],
167
+ input[type="email"],
168
+ textarea,
169
+ .custom-select .custom-select-input {
170
+ border: 1px solid #3C3C3C;
171
+ border-radius: 17px;
172
+ padding: 8px 10px;
173
+ font-size: 14px;
174
+ width: 100%;
175
+ box-sizing: border-box;
176
+ background: none;
177
+ margin-bottom: 25px;
178
+ transition: border-color 0.3s;
179
+ }
180
+ input[type="text"]::placeholder,
181
+ input[type="password"]::placeholder,
182
+ input[type="email"]::placeholder,
183
+ textarea::placeholder,
184
+ .custom-select .custom-select-input::placeholder {
185
+ color: #ffffff;
186
+ }
187
+ input[type="text"]:focus,
188
+ input[type="password"]:focus,
189
+ input[type="email"]:focus,
190
+ textarea:focus,
191
+ .custom-select .custom-select-input:focus {
192
+ outline: none;
193
+ border-color: #47DCA6;
194
+ }
195
+ button {
196
+ background: #47DCA6;
197
+ border: 1px solid #47DCA6;
198
+ border-radius: 17px;
199
+ color: #242424;
200
+ padding: 9px 19px;
201
+ min-width: 143px;
202
+ font-weight: 700;
203
+ transition: opacity 0.3s;
204
+ }
205
+ button[type="submit"] {
206
+ margin-top: 25px;
207
+ margin-bottom: 25px;
208
+ }
209
+ button:hover {
210
+ opacity: 0.8;
211
+ cursor: pointer;
212
+ }
213
+ button.secondary-btn {
214
+ background: #2C2C2C;
215
+ color: #ffffff;
216
+ border: 1px solid #3C3C3C;
217
+ }
218
+ .icon-dashboard {
219
+ background: url('../assets/icon-home.svg');
220
+ }
221
+ .icon-users {
222
+ background: url('../assets/icon-users.svg');
223
+ }
224
+ .icon-settings {
225
+ background: url('../assets/icon-settings.svg');
226
+ }
227
+ .icon-reports {
228
+ background: url('../assets/icon-reports.svg');
229
+ }
230
+ .icon-agent {
231
+ background: url('../assets/icon-agent.svg');
232
+ }
233
+ .icon-page {
234
+ background: url('../assets/icon-page.svg');
235
+ }
236
+ .icon-delete {
237
+ background: url('../assets/icon-delete.svg');
238
+ }
239
+ .card {
240
+ border: 1px solid #3C3C3C;
241
+ border-radius: 10px;
242
+ margin-bottom: 30px;
243
+ width: 100%;
244
+ }
245
+ .card .card-title {
246
+ background: #242424;
247
+ margin: 0px;
248
+ padding: 20px 40px;
249
+ font-size: 16px;
250
+ font-weight: 400;
251
+ border-top-left-radius: 10px;
252
+ border-top-right-radius: 10px;
253
+ overflow: hidden;
254
+ }
255
+ .card .card-content {
256
+ padding: 30px 40px;
257
+ }
258
+ .card .instruction {
259
+ color: #868686;
260
+ margin-bottom: 30px;
261
+ }
262
+ .card-columns {
263
+ display: flex;
264
+ flex-wrap: no-wrap;
265
+ gap: 50px;
266
+ }
267
+ .card-columns > .col-66 {
268
+ width: 66%;
269
+ }
270
+ .card-columns > .col-33 {
271
+ width: 33%;
272
+ }
273
+ .card-columns p {
274
+ margin-top: 0px;
275
+ }
276
+ .card input[type="text"],
277
+ .card input[type="password"],
278
+ .card input[type="email"],
279
+ .card textarea {
280
+ margin-top: 8px;
281
+ background: #242424;
282
+ }
283
+ .card input[type="text"]::placeholder,
284
+ .card input[type="password"]::placeholder,
285
+ .card input[type="email"]::placeholder,
286
+ .card textarea::placeholder {
287
+ color: #D9D9D9;
288
+ }
289
+ .portal-main {
290
+ background: #2C2C2C;
291
+ min-height: calc(100vh - 71px);
292
+ width: 100vw;
293
+ position: absolute;
294
+ top: 71px;
295
+ left: 0px;
296
+ border-top-left-radius: 15px;
297
+ border-top-right-radius: 15px;
298
+ overflow: hidden;
299
+ }
300
+ .portal-main .portal-main-inner {
301
+ position: relative;
302
+ width: 100%;
303
+ min-height: calc(100vh - 71px);
304
+ gap: 0px;
305
+ }
306
+ .portal-main .portal-page {
307
+ width: 100%;
308
+ padding: 45px 45px 70px 45px;
309
+ box-sizing: border-box;
310
+ position: relative;
311
+ }
312
+ .portal-main .portal-page .portal-page-header {
313
+ margin-bottom: 30px;
314
+ }
315
+ .portal-main .portal-page .portal-page-header .logo {
316
+ max-width: 200px;
317
+ }
318
+ .portal-main .portal-page .portal-page-footer {
319
+ display: flex;
320
+ flex-direction: row-reverse;
321
+ width: 100%;
322
+ position: absolute;
323
+ box-sizing: border-box;
324
+ bottom: 30px;
325
+ left: 0px;
326
+ padding: 0px 45px;
327
+ }
328
+ .portal-main .portal-page .portal-page-footer p,
329
+ .portal-main .portal-page .portal-page-footer span {
330
+ margin: 0px;
331
+ color: #868686;
332
+ }
333
+ .portal-sidebar {
334
+ background: #242424;
335
+ min-width: 264px;
336
+ min-height: 100%;
337
+ padding: 43px 32px;
338
+ box-sizing: border-box;
339
+ }
340
+ .portal-sidebar .inner ul {
341
+ padding: 0px;
342
+ }
343
+ .portal-sidebar .inner ul li {
344
+ list-style: none;
345
+ background-size: 28px 28px;
346
+ background-position: left center;
347
+ background-repeat: no-repeat;
348
+ }
349
+ .portal-sidebar .inner ul li a {
350
+ display: block;
351
+ text-decoration: none;
352
+ color: #868686;
353
+ padding-top: 7px;
354
+ padding-bottom: 7px;
355
+ padding-left: 50px;
356
+ font-size: 18px;
357
+ cursor: pointer;
358
+ }
359
+ .portal-sidebar .inner ul li:first-of-type a {
360
+ color: #ffffff;
361
+ }
362
+ .portal-topbar {
363
+ background: #47DCA6;
364
+ min-height: 100vh;
365
+ width: 100%;
366
+ }
367
+ .portal-topbar .content {
368
+ padding-left: 45px;
369
+ padding-right: 45px;
370
+ box-sizing: border-box;
371
+ }
372
+ .portal-topbar > .flex-row {
373
+ height: 71px;
374
+ align-items: center;
375
+ justify-content: flex-end;
376
+ }
377
+ .portal-topbar .agent-question {
378
+ width: 50%;
379
+ box-sizing: border-box;
380
+ }
381
+ .user-info {
382
+ position: absolute;
383
+ bottom: 30px;
384
+ }
385
+ .user-info .user-info-mini {
386
+ align-items: center;
387
+ }
388
+ .user-info .user-info-mini .email {
389
+ margin-top: auto;
390
+ margin-bottom: auto;
391
+ height: auto;
392
+ font-size: 18px;
393
+ }
394
+ .user-info .gravatar-image {
395
+ width: 35px;
396
+ border-radius: 20px;
397
+ }
398
+ .list-table table {
399
+ width: 100%;
400
+ border-collapse: collapse;
401
+ }
402
+ .list-table table thead th {
403
+ padding-top: 24px;
404
+ padding-bottom: 24px;
405
+ font-size: 16px;
406
+ font-weight: 400;
407
+ text-align: left;
408
+ border: none;
409
+ background: #242424;
410
+ overflow: hidden;
411
+ }
412
+ .list-table table thead th:first-child {
413
+ border-top-left-radius: 10px;
414
+ padding-left: 30px;
415
+ }
416
+ .list-table table thead th:last-child {
417
+ border-top-right-radius: 10px;
418
+ padding-right: 30px;
419
+ }
420
+ .list-table table tr td {
421
+ padding-top: 15px;
422
+ padding-bottom: 15px;
423
+ transition: color 0.2s;
424
+ }
425
+ .list-table table tr td:first-child {
426
+ padding-left: 30px;
427
+ }
428
+ .list-table table tr td:last-child {
429
+ padding-right: 30px;
430
+ }
431
+ .list-table table tr:nth-child(even) td {
432
+ background: #242424;
433
+ }
434
+ .list-table table tr:hover {
435
+ cursor: pointer;
436
+ }
437
+ .list-table table tr:hover td {
438
+ color: #47DCA6;
439
+ }
440
+ .repeater-row {
441
+ display: flex;
442
+ flex-direction: row;
443
+ flex-wrap: nowrap;
444
+ position: relative;
445
+ align-items: center;
446
+ gap: 20px;
447
+ }
448
+ .remove-repeater-row {
449
+ display: inline-block;
450
+ width: 30px;
451
+ height: 30px;
452
+ background-repeat: no-repeat;
453
+ background-position: center center;
454
+ margin-bottom: 10px;
455
+ opacity: 0.6;
456
+ }
457
+ .remove-repeater-row:hover {
458
+ cursor: pointer;
459
+ opacity: 1;
460
+ }
461
+ .repeater-row {
462
+ position: relative;
463
+ flex-wrap: wrap;
464
+ }
465
+ .repeater-row .nested-block .nested-block {
466
+ width: 100%;
467
+ margin-bottom: 0px;
468
+ position: relative;
469
+ }
470
+ .repeater-row .nested-block .nested-block .repeater {
471
+ box-sizing: border-box;
472
+ margin-bottom: 60px;
473
+ border-left: 1px solid #3C3C3C;
474
+ padding-left: 35px;
475
+ }
476
+ .repeater-row .nested-block .nested-block .repeater-row {
477
+ justify-content: flex-start;
478
+ }
479
+ .repeater-row .nested-block .nested-block .add-repeater-row {
480
+ position: absolute;
481
+ left: 0px;
482
+ bottom: 10px;
483
+ }
484
+ .repeater-row .nested-block .nested-block input[type="text"],
485
+ .repeater-row .nested-block .nested-block input[type="password"],
486
+ .repeater-row .nested-block .nested-block input[type="email"],
487
+ .repeater-row .nested-block .nested-block textarea,
488
+ .repeater-row .nested-block .nested-block .custom-select .custom-select-input {
489
+ margin-bottom: 0px;
490
+ }
491
+ .repeater-row .nested-block .remove-repeater-row {
492
+ top: 25px;
493
+ }
494
+ .repeater-row .remove-repeater-row {
495
+ position: absolute;
496
+ right: -35px;
497
+ }
498
+ .custom-select-cont {
499
+ display: inline-block;
500
+ }
501
+ .custom-select-cont label {
502
+ width: 100%;
503
+ }
504
+ .custom-select {
505
+ max-width: 215px;
506
+ min-width: 215px;
507
+ position: relative;
508
+ }
509
+ .custom-select .custom-select-input {
510
+ position: relative;
511
+ width: 100%;
512
+ padding: 6px 10px;
513
+ margin: 10px 0;
514
+ border: 1px solid #3C3C3C;
515
+ background: #242424;
516
+ border-radius: 25px;
517
+ box-sizing: border-box;
518
+ font-size: 15px;
519
+ color: #242424;
520
+ z-index: 3;
521
+ }
522
+ .custom-select .custom-select-input:hover {
523
+ cursor: pointer;
524
+ }
525
+ .custom-select .custom-select-input:after {
526
+ content: url('../assets/chevron.svg');
527
+ transition-duration: 0.1s;
528
+ position: absolute;
529
+ right: 8px;
530
+ top: 5px;
531
+ transform-origin: center;
532
+ height: 20px;
533
+ }
534
+ .custom-select .custom-select-options {
535
+ position: absolute;
536
+ width: 100%;
537
+ top: 10px;
538
+ left: 0px;
539
+ max-height: 200px;
540
+ height: 0px !important;
541
+ overflow: hidden;
542
+ background: #242424;
543
+ border: 1px solid #3C3C3C;
544
+ box-sizing: border-box;
545
+ border-radius: 15px;
546
+ z-index: 2;
547
+ transition-duration: 0.3s;
548
+ }
549
+ .custom-select .custom-select-options .custom-select-options-inner {
550
+ min-height: 200px;
551
+ max-height: 200px;
552
+ overflow-y: auto;
553
+ }
554
+ .custom-select .custom-select-options .custom-select-option:first-child {
555
+ margin-top: 30px;
556
+ }
557
+ .custom-select .custom-select-options .custom-select-option {
558
+ padding: 10px;
559
+ opacity: 0.8;
560
+ transition-duration: 0.1s;
561
+ color: #D9D9D9;
562
+ font-size: 15px;
563
+ }
564
+ .custom-select .custom-select-options .custom-select-option:hover {
565
+ opacity: 1;
566
+ cursor: pointer;
567
+ color: #47DCA6;
568
+ }
569
+ .custom-select.open {
570
+ z-index: 5;
571
+ }
572
+ .custom-select.open .custom-select-options {
573
+ height: 400px !important;
574
+ }
575
+ .custom-select.open .custom-select-input {
576
+ border: 1px solid #47DCA6;
577
+ }
578
+ .custom-select.open .custom-select-input:after {
579
+ transform: rotate(180deg);
580
+ }
581
+ .custom-select.closing {
582
+ z-index: 5;
583
+ }
584
+ .quill {
585
+ margin-top: 10px;
586
+ }
587
+ .quill .ql-toolbar {
588
+ border-color: #3C3C3C !important;
589
+ border-top-left-radius: 10px;
590
+ border-top-right-radius: 10px;
591
+ }
592
+ .quill .ql-toolbar button svg * {
593
+ stroke: #D9D9D9 !important;
594
+ }
595
+ .quill .ql-container {
596
+ border-color: #3C3C3C !important;
597
+ border-bottom-left-radius: 10px;
598
+ border-bottom-right-radius: 10px;
599
+ }
600
+ .quill .ql-editor {
601
+ min-height: 150px;
602
+ }
603
+ .quill button {
604
+ min-width: unset;
605
+ }
606
+ .quill .ql-picker .ql-picker-label {
607
+ border: none !important;
608
+ }
609
+ .quill .ql-picker-options {
610
+ background: #242424 !important;
611
+ border-color: #3C3C3C !important;
612
+ }
613
+ .ql-snow.ql-toolbar button:hover,
614
+ .ql-snow .ql-toolbar button:hover,
615
+ .ql-snow.ql-toolbar button:focus,
616
+ .ql-snow .ql-toolbar button:focus,
617
+ .ql-snow.ql-toolbar button.ql-active,
618
+ .ql-snow .ql-toolbar button.ql-active,
619
+ .ql-snow.ql-toolbar .ql-picker-label:hover,
620
+ .ql-snow .ql-toolbar .ql-picker-label:hover,
621
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active,
622
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active,
623
+ .ql-snow.ql-toolbar .ql-picker-item:hover,
624
+ .ql-snow .ql-toolbar .ql-picker-item:hover,
625
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected,
626
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected {
627
+ color: #47DCA6 !important;
628
+ }
629
+ .image-input {
630
+ position: relative;
631
+ }
632
+ .image-input > .flex-row {
633
+ margin-top: 10px;
634
+ flex-direction: row-reverse;
635
+ gap: 0px;
636
+ }
637
+ .image-input .upload-area {
638
+ border-color: #3C3C3C !important;
639
+ min-width: 190px;
640
+ margin-bottom: auto;
641
+ flex-grow: 2;
642
+ }
643
+ .image-input .preview-area .image-preview {
644
+ margin-right: 35px;
645
+ }
646
+ .image-input .preview-area .image-preview img {
647
+ max-width: 100%;
648
+ object-fit: contain;
649
+ }
650
+ .image-input .icon-delete {
651
+ min-width: 20px;
652
+ min-height: 20px;
653
+ display: inline-block;
654
+ background-size: contain;
655
+ background-repeat: no-repeat;
656
+ position: absolute;
657
+ right: -25px;
658
+ top: -3px;
659
+ opacity: 0.7;
660
+ }
661
+ .image-input .icon-delete:hover {
662
+ cursor: pointer;
663
+ opacity: 1;
664
+ }
665
+ .login-page {
666
+ width: 100%;
667
+ max-width: 100%;
668
+ height: 100vh;
669
+ gap: 0px;
670
+ }
671
+ .login-page .login-left-panel {
672
+ min-width: 50%;
673
+ background: url('../assets/login-green-rad-back-1.jpg');
674
+ background-size: cover;
675
+ background-position: center center;
676
+ display: flex;
677
+ align-items: center;
678
+ justify-content: center;
679
+ }
680
+ .login-page .login-right-panel {
681
+ min-width: 50%;
682
+ background: #242424;
683
+ padding: 135px;
684
+ box-sizing: border-box;
685
+ display: flex;
686
+ align-items: center;
687
+ justify-content: center;
688
+ }
689
+ .login-page .username,
690
+ .login-page .password {
691
+ padding-left: 50px;
692
+ position: relative;
693
+ background-repeat: no-repeat;
694
+ background-position: 12px center;
695
+ background-size: 18px 18px;
696
+ }
697
+ .login-page .username {
698
+ background-image: url('../assets/icon-user.svg');
699
+ }
700
+ .login-page .password {
701
+ background-image: url('../assets/icon-padlock.svg');
702
+ }
703
+ .login-page .login-form {
704
+ max-width: 450px;
705
+ }
706
+ .login-page .forgotten-password {
707
+ width: 100%;
708
+ }
709
+ #MagiCSS-bookmarklet span {
710
+ color: black !important;
711
+ }
@@ -0,0 +1,10 @@
1
+
2
+ export const fieldTypes = [
3
+ { name: 'Text', value: 'text' },
4
+ { name: 'Image', value: 'image' },
5
+ { name: 'Rich Text', value: 'richtext' },
6
+ { name: 'Checkbox', value: 'checkbox' },
7
+ { name: 'Date', value: 'date' },
8
+ { name: 'Block', value: 'block' },
9
+ { name: 'Repeater', value: 'repeater' }
10
+ ];