solara 0.4.0 → 0.5.0
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.
- checksums.yaml +4 -4
- data/solara/lib/.DS_Store +0 -0
- data/solara/lib/core/.DS_Store +0 -0
- data/solara/lib/core/brands/brand_switcher.rb +58 -1
- data/solara/lib/core/dashboard/brand/BrandDetail.js +34 -2
- data/solara/lib/core/dashboard/brand/BrandDetailController.js +23 -233
- data/solara/lib/core/dashboard/brand/BrandDetailModel.js +13 -5
- data/solara/lib/core/dashboard/brand/BrandDetailView.js +16 -200
- data/solara/lib/core/dashboard/brand/SectionsFormManager.js +232 -0
- data/solara/lib/core/dashboard/brand/brand.html +187 -177
- data/solara/lib/core/dashboard/brand/source/BrandLocalSource.js +2 -5
- data/solara/lib/core/dashboard/brand/source/BrandRemoteSource.js +36 -133
- data/solara/lib/core/dashboard/brands/Brands.js +31 -0
- data/solara/lib/core/dashboard/brands/BrandsController.js +0 -5
- data/solara/lib/core/dashboard/brands/BrandsView.js +2 -2
- data/solara/lib/core/dashboard/brands/brands.html +71 -52
- data/solara/lib/core/dashboard/component/AliasesBottomSheet.js +6 -6
- data/solara/lib/core/dashboard/component/BrandOptionsBottomSheet.js +4 -4
- data/solara/lib/core/dashboard/component/ConfirmationDialog.js +15 -10
- data/solara/lib/core/dashboard/component/EditJsonSheet.js +160 -0
- data/solara/lib/core/dashboard/component/MessageBottomSheet.js +5 -5
- data/solara/lib/core/dashboard/component/OnboardBrandBottomSheet.js +5 -3
- data/solara/lib/core/dashboard/handler/base_handler.rb +1 -0
- data/solara/lib/core/dashboard/handler/edit_section_handler.rb +1 -5
- data/solara/lib/core/doctor/schema/brand_configurations.json +0 -8
- data/solara/lib/core/doctor/schema/platform/global/resources_manifest.json +30 -0
- data/solara/lib/core/doctor/schema/platform/json_manifest.json +57 -0
- data/solara/lib/core/doctor/validator/template/android_template_validation_config.yml +35 -1
- data/solara/lib/core/doctor/validator/template/flutter_template_validation_config.yml +30 -1
- data/solara/lib/core/doctor/validator/template/ios_template_validation_config.yml +35 -1
- data/solara/lib/core/doctor/validator/template/template_validator.rb +9 -9
- data/solara/lib/core/scripts/brand_config_manager.rb +1 -1
- data/solara/lib/core/scripts/brand_configurations_manager.rb +41 -0
- data/solara/lib/core/scripts/code_generator.rb +342 -118
- data/solara/lib/core/scripts/file_path.rb +21 -1
- data/solara/lib/core/scripts/gitignore_manager.rb +11 -3
- data/solara/lib/core/scripts/json_manifest_processor.rb +95 -0
- data/solara/lib/core/scripts/platform/ios/infoplist_string_catalog_manager.rb +11 -1
- data/solara/lib/core/scripts/resource_manifest_processor.rb +151 -0
- data/solara/lib/core/scripts/solara_status_manager.rb +1 -1
- data/solara/lib/core/scripts/theme_generator.rb +21 -242
- data/solara/lib/core/solara_configurator.rb +1 -1
- data/solara/lib/core/template/brands/global/resources_manifest.json +10 -0
- data/solara/lib/core/template/brands/json/Json-Manifest.md +61 -0
- data/solara/lib/core/template/brands/json/json_manifest.json +18 -0
- data/solara/lib/core/template/brands/shared/theme.json +213 -29
- data/solara/lib/core/template/config/android_template_config.json +50 -0
- data/solara/lib/core/template/config/flutter_template_config.json +35 -0
- data/solara/lib/core/template/config/ios_template_config.json +50 -0
- data/solara/lib/core/template/configurations.json +46 -0
- data/solara/lib/core/template/project_template_generator.rb +2 -0
- data/solara/lib/solara/version.rb +1 -1
- data/solara/lib/solara.rb +19 -0
- metadata +13 -4
- data/solara/lib/core/dashboard/component/AddFieldSheet.js +0 -175
- data/solara/lib/core/dashboard/handler/brand_configurations_manager.rb +0 -73
@@ -15,7 +15,34 @@
|
|
15
15
|
--border-color: #E1E4E8;
|
16
16
|
--delete-color: #dc3545;
|
17
17
|
--field-shadow: 0 1.4px 3.5px rgba(0, 0, 0, 0.1);
|
18
|
+
|
19
|
+
--card-item-bg: rgba(255, 255, 255, 0.05);
|
20
|
+
--card-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
|
21
|
+
--section-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.1);
|
22
|
+
--delete-btn-color: #ff6b6b;
|
23
|
+
--delete-btn-hover: #ff4757;
|
24
|
+
--add-property-btn-color: #5ecd73;
|
25
|
+
--logo-shadow-color: rgba(255, 255, 255, 0.2);
|
26
|
+
--hover: rgba(0, 123, 255, 0.5);
|
27
|
+
}
|
28
|
+
|
29
|
+
body.dark-mode {
|
30
|
+
--primary-color: #2C3E50;
|
31
|
+
--secondary-color: #34495E;
|
32
|
+
--background-color: #1A1A1A;
|
33
|
+
--text-color: #F5F5F5;
|
34
|
+
--border-color: #4A4A4A;
|
35
|
+
--delete-color: #E74C3C;
|
36
|
+
--field-shadow: 0 1.4px 3.5px rgba(255, 255, 255, 0.1);
|
37
|
+
--card-item-bg: rgba(255, 255, 255, 0.1);
|
38
|
+
--card-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
|
39
|
+
--section-shadow: 0 4px 6px rgba(255, 255, 255, 0.1);
|
40
|
+
--delete-btn-color: #ff8f8f;
|
41
|
+
--delete-btn-hover: #ff6b6b;
|
42
|
+
--add-property-btn-color: #7eed8e;
|
43
|
+
--hover: rgba(255, 255, 255, 0.2);
|
18
44
|
}
|
45
|
+
|
19
46
|
body {
|
20
47
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
21
48
|
background-color: var(--background-color);
|
@@ -24,7 +51,23 @@
|
|
24
51
|
margin: 0;
|
25
52
|
padding-top: 77px;
|
26
53
|
font-size: 12.6px;
|
54
|
+
transition: background-color 0.3s, color 0.3s;
|
55
|
+
}
|
56
|
+
|
57
|
+
.mode-toggle {
|
58
|
+
background: none;
|
59
|
+
border: none;
|
60
|
+
color: white;
|
61
|
+
font-size: 1.5em;
|
62
|
+
cursor: pointer;
|
63
|
+
margin-left: 15px;
|
64
|
+
transition: color 0.3s;
|
65
|
+
}
|
66
|
+
|
67
|
+
.mode-toggle:hover {
|
68
|
+
color: var(--hover);
|
27
69
|
}
|
70
|
+
|
28
71
|
.container {
|
29
72
|
display: table;
|
30
73
|
width: 100%;
|
@@ -66,17 +109,15 @@
|
|
66
109
|
}
|
67
110
|
.index li {
|
68
111
|
padding: 5.6px;
|
69
|
-
border-bottom: 1px solid #eee;
|
70
112
|
margin-bottom: 7px;
|
71
113
|
text-align: left;
|
72
114
|
}
|
73
115
|
|
74
|
-
|
75
116
|
.index li:last-child {
|
76
117
|
border-bottom: none;
|
77
118
|
}
|
78
119
|
.index a {
|
79
|
-
color:
|
120
|
+
color: var(--text-color);
|
80
121
|
text-decoration: none;
|
81
122
|
}
|
82
123
|
.index a:hover {
|
@@ -85,67 +126,30 @@
|
|
85
126
|
.index-item {
|
86
127
|
list-style: none;
|
87
128
|
padding: 7px;
|
88
|
-
|
89
|
-
border-radius: 3.5px;
|
90
|
-
box-shadow: 0 1.4px 3.5px rgba(0, 0, 0, 0.2);
|
91
|
-
transition: box-shadow 0.3s;
|
129
|
+
font-size: 14px;
|
92
130
|
}
|
93
131
|
|
94
132
|
.index-item:hover {
|
95
|
-
|
96
|
-
}
|
97
|
-
.sections {
|
98
|
-
width: 90%;
|
99
|
-
padding: 14px;
|
133
|
+
background-color: var(--hover);
|
100
134
|
}
|
101
135
|
|
102
136
|
h1 {
|
103
137
|
margin: 0;
|
104
138
|
font-size: 1.75em;
|
105
139
|
}
|
106
|
-
|
107
|
-
background-color: white;
|
108
|
-
border-radius: 5.6px;
|
109
|
-
box-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.1);
|
110
|
-
margin-bottom: 21px;
|
111
|
-
padding: 14px;
|
112
|
-
}
|
140
|
+
|
113
141
|
h2 {
|
114
|
-
color: var(--
|
142
|
+
color: var(--text-color);
|
115
143
|
border-bottom: 1.4px solid var(--border-color);
|
116
144
|
padding-bottom: 7px;
|
117
145
|
margin-top: 0;
|
118
146
|
font-size: 1.4em;
|
119
147
|
}
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
display: flex;
|
124
|
-
align-items: center;
|
125
|
-
background-color: white;
|
126
|
-
border-radius: 5.6px;
|
127
|
-
box-shadow: var(--field-shadow);
|
128
|
-
padding: 7px;
|
129
|
-
transition: box-shadow 0.3s ease;
|
130
|
-
}
|
131
|
-
.input-group:hover {
|
132
|
-
box-shadow: 0 2.8px 5.6px rgba(0, 0, 0, 0.15);
|
133
|
-
}
|
134
|
-
.input-wrapper {
|
135
|
-
display: flex;
|
136
|
-
align-items: center;
|
137
|
-
flex-grow: 1;
|
138
|
-
}
|
139
|
-
.input-wrapper input[type="checkbox"] {
|
140
|
-
margin-right: 7px;
|
141
|
-
flex-grow: 0;
|
142
|
-
}
|
143
|
-
.checkbox-label {
|
144
|
-
flex-grow: 1;
|
145
|
-
}
|
146
|
-
.input-wrapper label[for] {
|
147
|
-
margin-right: 7px;
|
148
|
+
|
149
|
+
h3 {
|
150
|
+
color: var(--primary-color);
|
148
151
|
}
|
152
|
+
|
149
153
|
label {
|
150
154
|
display: inline-block;
|
151
155
|
margin-right: 7px;
|
@@ -154,12 +158,11 @@
|
|
154
158
|
flex-shrink: 0;
|
155
159
|
}
|
156
160
|
input, select {
|
157
|
-
|
158
|
-
|
159
|
-
border:
|
160
|
-
border-radius: 2.8px;
|
161
|
-
font-size: 11.2px;
|
161
|
+
background-color: var(--background-color);
|
162
|
+
color: var(--text-color);
|
163
|
+
border: 1px solid var(--border-color);
|
162
164
|
}
|
165
|
+
|
163
166
|
input[type="color"] {
|
164
167
|
height: 35px;
|
165
168
|
padding: 1.4px;
|
@@ -175,59 +178,7 @@
|
|
175
178
|
transition: background-color 0.3s ease;
|
176
179
|
}
|
177
180
|
button:hover {
|
178
|
-
background-color:
|
179
|
-
}
|
180
|
-
|
181
|
-
.delete-icon {
|
182
|
-
color: var(--delete-color);
|
183
|
-
cursor: pointer;
|
184
|
-
font-weight: bold;
|
185
|
-
font-size: 14px;
|
186
|
-
line-height: 1;
|
187
|
-
padding: 7px 10.5px;
|
188
|
-
margin-left: 7px;
|
189
|
-
border-radius: 2.8px;
|
190
|
-
transition: background-color 0.3s ease;
|
191
|
-
}
|
192
|
-
.delete-icon:hover {
|
193
|
-
color: #fff;
|
194
|
-
background-color: var(--delete-color);
|
195
|
-
}
|
196
|
-
.section-title-container {
|
197
|
-
margin-bottom: 0.7em;
|
198
|
-
}
|
199
|
-
.section-title-container h2 {
|
200
|
-
margin-bottom: 0.14em;
|
201
|
-
}
|
202
|
-
.section-subtitle {
|
203
|
-
font-size: 1.0em;
|
204
|
-
color: #666;
|
205
|
-
margin-bottom: 22.4px;
|
206
|
-
}
|
207
|
-
|
208
|
-
@media (max-width: 768px) {
|
209
|
-
.sections {
|
210
|
-
padding: 7px;
|
211
|
-
}
|
212
|
-
.input-group {
|
213
|
-
flex-direction: column;
|
214
|
-
align-items: flex-start;
|
215
|
-
}
|
216
|
-
label {
|
217
|
-
margin-bottom: 3.5px;
|
218
|
-
}
|
219
|
-
.input-wrapper {
|
220
|
-
width: 100%;
|
221
|
-
}
|
222
|
-
}
|
223
|
-
|
224
|
-
.add-array-item {
|
225
|
-
background-color: #4CAF50;
|
226
|
-
color: white;
|
227
|
-
border: none;
|
228
|
-
padding: 3.5px 7px;
|
229
|
-
border-radius: 2.8px;
|
230
|
-
cursor: pointer;
|
181
|
+
background-color: var(--hover);
|
231
182
|
}
|
232
183
|
|
233
184
|
.logo {
|
@@ -242,6 +193,7 @@
|
|
242
193
|
}
|
243
194
|
|
244
195
|
.header-container {
|
196
|
+
width: 100%;
|
245
197
|
display: flex;
|
246
198
|
align-items: center;
|
247
199
|
justify-content: center;
|
@@ -258,7 +210,6 @@
|
|
258
210
|
align-items: center;
|
259
211
|
justify-content: center;
|
260
212
|
}
|
261
|
-
|
262
213
|
header {
|
263
214
|
background-color: var(--primary-color);
|
264
215
|
color: white;
|
@@ -282,11 +233,6 @@
|
|
282
233
|
transform: translateY(-100%);
|
283
234
|
}
|
284
235
|
|
285
|
-
h1 {
|
286
|
-
margin: 0;
|
287
|
-
font-size: 1.75em;
|
288
|
-
}
|
289
|
-
|
290
236
|
.action-buttons {
|
291
237
|
width: 100%;
|
292
238
|
background-color: var(--primary-color);
|
@@ -296,36 +242,14 @@
|
|
296
242
|
transition: background-color 0.3s ease, opacity 0.3s ease;
|
297
243
|
}
|
298
244
|
|
299
|
-
.add-field-btn {
|
300
|
-
min-width: 105px;
|
301
|
-
background-color: var(--primary-color);
|
302
|
-
color: white;
|
303
|
-
margin: 7px;
|
304
|
-
font-size: 12.6px;
|
305
|
-
transition: background-color 0.3s ease, opacity 0.3s ease;
|
306
|
-
}
|
307
|
-
|
308
|
-
.apply-changes-button {
|
309
|
-
width: 100%;
|
310
|
-
background-color: #ff4136;
|
311
|
-
color: white;
|
312
|
-
margin: 7px;
|
313
|
-
font-size: 12.6px;
|
314
|
-
transition: background-color 0.3s ease, opacity 0.3s ease;
|
315
|
-
}
|
316
|
-
|
317
245
|
.action-buttons button:hover {
|
318
|
-
|
246
|
+
color: var(--hover);
|
319
247
|
}
|
320
248
|
|
321
249
|
#switchButton {
|
322
250
|
display: none;
|
323
251
|
}
|
324
252
|
|
325
|
-
#applyChangesButton {
|
326
|
-
display: none;
|
327
|
-
}
|
328
|
-
|
329
253
|
#error-button {
|
330
254
|
position: fixed;
|
331
255
|
bottom: 14px;
|
@@ -385,7 +309,8 @@
|
|
385
309
|
left: 50%;
|
386
310
|
transform: translate(-50%, -50%);
|
387
311
|
text-align: center;
|
388
|
-
background-color:
|
312
|
+
background-color: var(--background-color);
|
313
|
+
color: var(--text-color);
|
389
314
|
padding: 28px;
|
390
315
|
border-radius: 14px;
|
391
316
|
box-shadow: 0 2.8px 14px rgba(0, 0, 0, 0.1);
|
@@ -412,7 +337,7 @@
|
|
412
337
|
|
413
338
|
.add-brand-container h2 {
|
414
339
|
font-size: 12.6px;
|
415
|
-
color:
|
340
|
+
color: var(--text-color);
|
416
341
|
margin-bottom: 21px;
|
417
342
|
animation: slideDown 0.5s ease-out 0.3s both;
|
418
343
|
}
|
@@ -434,13 +359,12 @@
|
|
434
359
|
}
|
435
360
|
|
436
361
|
.add-brand-container button:hover {
|
437
|
-
background-color: #3A7BC8;
|
438
362
|
transform: scale(1.05);
|
439
363
|
}
|
440
364
|
|
441
365
|
.button-message {
|
442
366
|
font-size: 12.6px;
|
443
|
-
color:
|
367
|
+
color: var(--text-color);
|
444
368
|
margin-bottom: 3.5px;
|
445
369
|
opacity: 0;
|
446
370
|
animation: fadeInMessage 0.5s ease-out forwards;
|
@@ -482,7 +406,7 @@
|
|
482
406
|
left: 0;
|
483
407
|
width: 100%;
|
484
408
|
height: 100%;
|
485
|
-
background-color:
|
409
|
+
background-color: var(--background-color);
|
486
410
|
display: flex;
|
487
411
|
align-items: center;
|
488
412
|
justify-content: center;
|
@@ -493,69 +417,155 @@
|
|
493
417
|
width: 105px;
|
494
418
|
height: 105px;
|
495
419
|
margin-right: 14px;
|
496
|
-
filter: drop-shadow(2.1px 2.1px 2.1px
|
420
|
+
filter: drop-shadow(2.1px 2.1px 2.1px var(--logo-shadow-color));
|
497
421
|
transition: transform 0.3s ease;
|
498
422
|
}
|
499
423
|
|
500
|
-
.
|
501
|
-
|
502
|
-
|
503
|
-
|
424
|
+
.sections {
|
425
|
+
width: 90%;
|
426
|
+
padding: 14px;
|
427
|
+
}
|
428
|
+
.section {
|
429
|
+
background-color: var(--background-color);
|
430
|
+
border-radius: 5.6px;
|
431
|
+
box-shadow: var(--section-shadow);
|
432
|
+
margin-bottom: 21px;
|
433
|
+
padding: 14px;
|
434
|
+
}
|
435
|
+
.section-title {
|
436
|
+
color: var(--text-color);
|
437
|
+
}
|
438
|
+
.section-title-container {
|
439
|
+
margin-bottom: 0.7em;
|
440
|
+
}
|
441
|
+
.section-title-container h2 {
|
442
|
+
margin-bottom: 0.14em;
|
443
|
+
}
|
444
|
+
|
445
|
+
@media (max-width: 768px) {
|
446
|
+
.sections {
|
447
|
+
padding: 7px;
|
448
|
+
}
|
449
|
+
label {
|
450
|
+
margin-bottom: 3.5px;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
.card {
|
454
|
+
background-color: var(--background-color);
|
455
|
+
color: var(--text-color);
|
504
456
|
}
|
505
|
-
.
|
457
|
+
.card-header {
|
458
|
+
display: flex;
|
459
|
+
align-items: center;
|
506
460
|
font-weight: bold;
|
507
|
-
flex-shrink: 0;
|
508
|
-
color: black;
|
509
|
-
font-size: 16px;
|
510
461
|
margin-bottom: 10px;
|
511
462
|
}
|
512
|
-
|
513
|
-
|
514
|
-
border-left: 2px solid #ff9800; /* Orange border */
|
515
|
-
padding: 10px;
|
463
|
+
.card-content {
|
464
|
+
margin-left: 15px;
|
516
465
|
}
|
517
|
-
|
518
|
-
|
519
|
-
|
466
|
+
.card-item {
|
467
|
+
padding-top: 5px;
|
468
|
+
padding-bottom: 5px;
|
469
|
+
padding-left: 10px;
|
470
|
+
padding-right: 5px;
|
471
|
+
margin-bottom: 20px;
|
472
|
+
display: flex;
|
473
|
+
flex-direction: column;
|
474
|
+
align-items: flex-start;
|
475
|
+
background: var(--card-item-bg);
|
476
|
+
border-radius: 10px;
|
477
|
+
box-shadow: var(--card-shadow);
|
520
478
|
}
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
479
|
+
.card-item:hover {
|
480
|
+
transform: translateY(-1.5px);
|
481
|
+
}
|
482
|
+
.card-key {
|
483
|
+
min-width: 20%;
|
484
|
+
font-weight: bold;
|
485
|
+
cursor: pointer;
|
486
|
+
text-align: left;
|
525
487
|
display: flex;
|
488
|
+
justify-content: flex-start;
|
489
|
+
padding-right: 10px;
|
490
|
+
font-size: 14px;
|
491
|
+
margin-bottom: 5px;
|
492
|
+
margin-right: 10px;
|
493
|
+
hyphens: auto;
|
494
|
+
word-break: break-word;
|
495
|
+
}
|
496
|
+
.card-value-container {
|
497
|
+
display: flex;
|
498
|
+
flex-direction: row;
|
526
499
|
align-items: center;
|
527
|
-
|
528
|
-
border-radius: 5.6px;
|
529
|
-
box-shadow: var(--field-shadow);
|
530
|
-
padding: 7px;
|
531
|
-
transition: box-shadow 0.3s ease;
|
500
|
+
width: 100%;
|
532
501
|
}
|
533
|
-
.
|
534
|
-
|
502
|
+
.card-value {
|
503
|
+
flex: 1 1 80%;
|
504
|
+
width: 100%;
|
505
|
+
display: flex;
|
506
|
+
min-height: 25px;
|
507
|
+
border: 1px solid var(--border-color);
|
508
|
+
border-radius: 3px;
|
509
|
+
margin-bottom: 5px;
|
510
|
+
resize: vertical;
|
511
|
+
flex-direction: column;
|
512
|
+
padding-top: 15px;
|
513
|
+
padding-left: 10px;
|
514
|
+
padding-right: 10px;
|
515
|
+
background-color: var(--background-color);
|
516
|
+
color: var(--text-color);
|
517
|
+
}
|
518
|
+
.card-actions {
|
519
|
+
display: flex;
|
520
|
+
align-items: center;
|
521
|
+
justify-content: flex-start;
|
522
|
+
}
|
523
|
+
.delete-btn {
|
524
|
+
background-color: transparent;
|
525
|
+
color: var(--delete-btn-color);
|
526
|
+
border: none;
|
527
|
+
cursor: pointer;
|
528
|
+
font-size: 16px;
|
529
|
+
margin-left: 5px;
|
530
|
+
}
|
531
|
+
.delete-btn:hover {
|
532
|
+
color: var(--delete-btn-hover);
|
533
|
+
}
|
534
|
+
.add-property-btn {
|
535
|
+
background: none;
|
536
|
+
border: none;
|
537
|
+
color: var(--add-property-btn-color);
|
538
|
+
cursor: pointer;
|
539
|
+
font-size: 16px;
|
535
540
|
}
|
536
|
-
|
537
541
|
</style>
|
538
542
|
</head>
|
539
|
-
<body>
|
543
|
+
<body class="dark-mode">
|
540
544
|
|
541
545
|
<header id="header" class="header-container">
|
542
546
|
<div class="header-content">
|
543
547
|
<img class="logo" src="../solara.png" alt="Splash Image">
|
544
548
|
<h1><span id="brandNametitle"></span></h1>
|
549
|
+
<button id="modeToggle" class="mode-toggle" aria-label="Toggle dark/light mode">
|
550
|
+
<i class="fas fa-sun"></i>
|
551
|
+
</button>
|
545
552
|
</div>
|
546
|
-
|
547
553
|
</header>
|
548
554
|
|
549
555
|
<div class="loading-overlay" id="loadingOverlay">
|
550
556
|
<img class="loading-overlay-logo" src="../solara.png" alt="Loading Logo">
|
551
557
|
</div>
|
552
558
|
|
559
|
+
<div id="toast" style=" display: none; position: fixed; top: 10%; left: 50%; transform: translate(-50%, 10%); background-color: #4CAF50; color: white; padding: 16px; border-radius: 5px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);">
|
560
|
+
<!-- Message will be set dynamically -->
|
561
|
+
</div>
|
562
|
+
|
553
563
|
<div class="container">
|
554
564
|
<div class="row">
|
555
565
|
|
556
566
|
<div class="column left">
|
557
567
|
<div>
|
558
|
-
<button id="
|
568
|
+
<button id="syncBrandButton" class="action-buttons">Sync</button>
|
559
569
|
<button id="allBrandsButton" class="action-buttons">All Brands</button>
|
560
570
|
<button id="switchButton" class="action-buttons">Switch</button>
|
561
571
|
<button id="exportBrandBtn" class="action-buttons">Export</button>
|
@@ -581,11 +591,11 @@
|
|
581
591
|
<img src="../solara.png" alt="Solara Logo">
|
582
592
|
<h2>Solara simplifies the management of your brand configurations, allowing you to access and update them anytime, anywhere.</h2>
|
583
593
|
<div class="button-message">You can select a JSON file containing brand configurations that were exported using Solara.</div>
|
584
|
-
<button id="uploadJsonBtn" style="
|
585
|
-
<div class="button-message" style="
|
586
|
-
<button id="uploadBrandBtn" style="
|
587
|
-
<div class="button-message" style="
|
588
|
-
<button id="newBrandBtn" style="
|
594
|
+
<button id="uploadJsonBtn" style=" animation-delay: 0.5s;">Upload JSON</button>
|
595
|
+
<div class="button-message" style=" animation-delay: 0.7s;">Alternatively, upload from a folder that includes the brand's JSON files.</div>
|
596
|
+
<button id="uploadBrandBtn" style=" animation-delay: 0.9s;">Upload Folder</button>
|
597
|
+
<div class="button-message" style=" animation-delay: 1.1s;">You also have the option to create new brand configurations.</div>
|
598
|
+
<button id="newBrandBtn" style=" animation-delay: 1.3s;">New Brand</button>
|
589
599
|
</div>
|
590
600
|
|
591
601
|
</div>
|
@@ -601,7 +611,7 @@
|
|
601
611
|
|
602
612
|
<onboard-bottom-sheet id="onboardBottomSheet"></onboard-bottom-sheet>
|
603
613
|
|
604
|
-
<
|
614
|
+
<edit-json-sheet id="editJsonSheet"></edit-json-sheet>
|
605
615
|
|
606
616
|
<message-bottom-sheet id="messageBottomSheet"></message-bottom-sheet>
|
607
617
|
|
@@ -15,7 +15,6 @@ class BrandLocalSource {
|
|
15
15
|
}
|
16
16
|
|
17
17
|
const url = `/brand/details?brand_key=${encodeURIComponent(brandKey)}`;
|
18
|
-
console.log('Fetching configurations from:', url);
|
19
18
|
|
20
19
|
const response = await fetch(url);
|
21
20
|
const result = await response.json();
|
@@ -44,13 +43,13 @@ class BrandLocalSource {
|
|
44
43
|
}
|
45
44
|
}
|
46
45
|
|
47
|
-
async saveSection(
|
46
|
+
async saveSection(key, configuration, brandKey) {
|
48
47
|
if (this.savingInProgress) return;
|
49
48
|
this.savingInProgress = true;
|
50
49
|
|
51
50
|
const dataToSend = {
|
52
51
|
brand_key: brandKey,
|
53
|
-
key:
|
52
|
+
key: key,
|
54
53
|
data: configuration
|
55
54
|
};
|
56
55
|
|
@@ -69,7 +68,6 @@ class BrandLocalSource {
|
|
69
68
|
throw new Error(result.error);
|
70
69
|
}
|
71
70
|
|
72
|
-
console.log(`${sectionItem.name} configuration saved successfully!`);
|
73
71
|
return true;
|
74
72
|
} catch (error) {
|
75
73
|
console.error('Error saving configuration:', error);
|
@@ -95,7 +93,6 @@ class BrandLocalSource {
|
|
95
93
|
throw new Error(result.error);
|
96
94
|
}
|
97
95
|
|
98
|
-
console.log('Switch to brand result:', result);
|
99
96
|
return true;
|
100
97
|
} catch (error) {
|
101
98
|
console.error('Error switching to brand:', error);
|