solara 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/solara/lib/core/aliases/alias_generator.rb +231 -57
  3. data/solara/lib/core/aliases/{solara_terminal_setup.rb → terminal_setup.rb} +69 -34
  4. data/solara/lib/core/brands/brands_manager.rb +15 -0
  5. data/solara/lib/core/dashboard/brand/BrandDetailView.js +1 -0
  6. data/solara/lib/core/dashboard/brand/brand.html +131 -132
  7. data/solara/lib/core/dashboard/brand/source/BrandRemoteSource.js +4 -4
  8. data/solara/lib/core/dashboard/brands/brands.html +79 -79
  9. data/solara/lib/core/dashboard/component/AddFieldSheet.js +105 -142
  10. data/solara/lib/core/dashboard/component/AliasesBottomSheet.js +85 -79
  11. data/solara/lib/core/dashboard/component/BrandOptionsBottomSheet.js +68 -67
  12. data/solara/lib/core/dashboard/component/ConfirmationDialog.js +66 -64
  13. data/solara/lib/core/dashboard/component/MessageBottomSheet.js +48 -48
  14. data/solara/lib/core/dashboard/component/OnboardBrandBottomSheet.js +128 -125
  15. data/solara/lib/core/dashboard/dashboard_server.rb +1 -1
  16. data/solara/lib/core/dashboard/handler/brand_alisases_handler.rb +1 -1
  17. data/solara/lib/core/dashboard/handler/brand_configurations_manager.rb +2 -2
  18. data/solara/lib/core/dashboard/handler/brand_icon_handler.rb +1 -1
  19. data/solara/lib/core/doctor/doctor_manager.rb +15 -1
  20. data/solara/lib/core/scripts/file_path.rb +9 -1
  21. data/solara/lib/core/scripts/solara_status_manager.rb +4 -0
  22. data/solara/lib/core/solara_configurator.rb +1 -1
  23. data/solara/lib/solara/version.rb +1 -1
  24. data/solara/lib/solara.rb +4 -2
  25. metadata +4 -5
  26. data/solara/lib/core/aliases/alias_generator_manager.rb +0 -29
@@ -14,15 +14,16 @@
14
14
  --text-color: #333;
15
15
  --border-color: #E1E4E8;
16
16
  --delete-color: #dc3545;
17
- --field-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
17
+ --field-shadow: 0 1.4px 3.5px rgba(0, 0, 0, 0.1);
18
18
  }
19
19
  body {
20
20
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
21
21
  background-color: var(--background-color);
22
22
  color: var(--text-color);
23
- line-height: 1.6;
23
+ line-height: 1.4;
24
24
  margin: 0;
25
- padding-top: 110px;
25
+ padding-top: 77px;
26
+ font-size: 12.6px;
26
27
  }
27
28
  .container {
28
29
  display: table;
@@ -34,44 +35,45 @@
34
35
  }
35
36
  .column {
36
37
  display: table-cell;
37
- padding: 20px;
38
38
  vertical-align: top;
39
39
  }
40
40
  .left {
41
+ width: 10%;
41
42
  position: fixed;
42
- width: 20%;
43
43
  }
44
44
  .middle {
45
- width: 60%;
46
- background-color: #e0e0e0;
45
+ width: 75%;
47
46
  }
48
47
  .right {
48
+ width: 15%;
49
49
  position: fixed;
50
- width: 20%;
51
- max-height: 600px; /* Set a fixed height */
52
- overflow-y: auto; /* Enable vertical scrolling */
53
- padding: 10px; /* Optional: add padding */
50
+ max-height: 50%;
51
+ overflow-y: auto;
52
+ padding: 7px;
53
+ right: 0;
54
54
  }
55
- ul {
55
+ .index {
56
+ width: 90%;
56
57
  list-style-type: none;
57
58
  padding: 0;
59
+ margin: 0;
60
+ text-align: left;
58
61
  }
59
- li {
60
- margin-bottom: 10px;
61
- }
62
-
63
- .index {
64
- list-style-type: none; /* Remove default list styling */
65
- padding: 0; /* Remove padding */
66
- margin: 40px;
62
+ .index ul {
63
+ list-style-type: none;
64
+ padding: 0;
65
+ margin: 0;
67
66
  }
68
67
  .index li {
69
- padding: 8px; /* Add some padding to list items */
70
- border-bottom: 1px solid #eee; /* Optional: add a bottom border */
68
+ padding: 5.6px;
69
+ border-bottom: 1px solid #eee;
70
+ margin-bottom: 7px;
71
+ text-align: left;
71
72
  }
72
73
 
74
+
73
75
  .index li:last-child {
74
- border-bottom: none; /* Remove the border from the last item */
76
+ border-bottom: none;
75
77
  }
76
78
  .index a {
77
79
  color: #0066cc;
@@ -81,53 +83,52 @@
81
83
  text-decoration: underline;
82
84
  }
83
85
  .index-item {
84
- list-style: none; /* Remove default list styling */
85
- padding: 10px; /* Add some padding */
86
- margin: 5px 0; /* Space between items */
87
- background-color: white; /* Background color for contrast */
88
- border-radius: 5px; /* Rounded corners */
89
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); /* Shadow effect */
90
- transition: box-shadow 0.3s; /* Smooth transition for shadow */
86
+ list-style: none;
87
+ padding: 7px;
88
+ background-color: white;
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;
91
92
  }
92
93
 
93
94
  .index-item:hover {
94
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); /* Darker shadow on hover */
95
+ box-shadow: 0 2.8px 7px rgba(0, 0, 0, 0.3);
95
96
  }
96
97
  .sections {
97
- max-width: 1000px;
98
- margin: 0 auto;
99
- padding: 20px;
98
+ width: 90%;
99
+ padding: 14px;
100
100
  }
101
101
 
102
102
  h1 {
103
103
  margin: 0;
104
- font-size: 2.5em;
104
+ font-size: 1.75em;
105
105
  }
106
106
  .section {
107
107
  background-color: white;
108
- border-radius: 8px;
109
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
110
- margin-bottom: 30px;
111
- padding: 20px;
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
112
  }
113
113
  h2 {
114
114
  color: var(--primary-color);
115
- border-bottom: 2px solid var(--border-color);
116
- padding-bottom: 10px;
115
+ border-bottom: 1.4px solid var(--border-color);
116
+ padding-bottom: 7px;
117
117
  margin-top: 0;
118
+ font-size: 1.4em;
118
119
  }
119
120
  .input-group {
120
- margin-bottom: 25px;
121
+ margin-bottom: 17.5px;
121
122
  display: flex;
122
123
  align-items: center;
123
124
  background-color: white;
124
- border-radius: 8px;
125
+ border-radius: 5.6px;
125
126
  box-shadow: var(--field-shadow);
126
- padding: 10px;
127
+ padding: 7px;
127
128
  transition: box-shadow 0.3s ease;
128
129
  }
129
130
  .input-group:hover {
130
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
131
+ box-shadow: 0 2.8px 5.6px rgba(0, 0, 0, 0.15);
131
132
  }
132
133
  .input-wrapper {
133
134
  display: flex;
@@ -135,41 +136,41 @@
135
136
  flex-grow: 1;
136
137
  }
137
138
  .input-wrapper input[type="checkbox"] {
138
- margin-right: 10px;
139
+ margin-right: 7px;
139
140
  flex-grow: 0;
140
141
  }
141
142
  .checkbox-label {
142
143
  flex-grow: 1;
143
144
  }
144
145
  .input-wrapper label[for] {
145
- margin-right: 10px;
146
+ margin-right: 7px;
146
147
  }
147
148
  label {
148
149
  display: inline-block;
149
- margin-right: 10px;
150
+ margin-right: 7px;
150
151
  font-weight: bold;
151
- min-width: 250px;
152
+ min-width: 175px;
152
153
  flex-shrink: 0;
153
154
  }
154
155
  input, select {
155
156
  flex-grow: 1;
156
- padding: 10px;
157
- border: 1px solid var(--border-color);
158
- border-radius: 4px;
159
- font-size: 16px;
157
+ padding: 7px;
158
+ border: 0.7px solid var(--border-color);
159
+ border-radius: 2.8px;
160
+ font-size: 11.2px;
160
161
  }
161
162
  input[type="color"] {
162
- height: 50px;
163
- padding: 2px;
163
+ height: 35px;
164
+ padding: 1.4px;
164
165
  }
165
166
  button {
166
167
  background-color: var(--secondary-color);
167
168
  color: white;
168
- padding: 12px 20px;
169
+ padding: 8.4px 14px;
169
170
  border: none;
170
- border-radius: 4px;
171
+ border-radius: 2.8px;
171
172
  cursor: pointer;
172
- font-size: 18px;
173
+ font-size: 12.6px;
173
174
  transition: background-color 0.3s ease;
174
175
  }
175
176
  button:hover {
@@ -178,8 +179,8 @@
178
179
 
179
180
  .save-section-btn {
180
181
  background-color: #28a745;
181
- margin-top: 10px;
182
- margin-right: 10px;
182
+ margin-top: 7px;
183
+ margin-right: 7px;
183
184
  }
184
185
  .save-section-btn:hover {
185
186
  background-color: #218838;
@@ -187,17 +188,17 @@
187
188
  .button-group {
188
189
  display: flex;
189
190
  justify-content: flex-start;
190
- margin-top: 20px;
191
+ margin-top: 14px;
191
192
  }
192
193
  .delete-icon {
193
194
  color: var(--delete-color);
194
195
  cursor: pointer;
195
196
  font-weight: bold;
196
- font-size: 20px;
197
+ font-size: 14px;
197
198
  line-height: 1;
198
- padding: 10px 15px;
199
- margin-left: 10px;
200
- border-radius: 4px;
199
+ padding: 7px 10.5px;
200
+ margin-left: 7px;
201
+ border-radius: 2.8px;
201
202
  transition: background-color 0.3s ease;
202
203
  }
203
204
  .delete-icon:hover {
@@ -205,84 +206,83 @@
205
206
  background-color: var(--delete-color);
206
207
  }
207
208
  .section-title-container {
208
- margin-bottom: 1em;
209
+ margin-bottom: 0.7em;
209
210
  }
210
211
  .section-title-container h2 {
211
- margin-bottom: 0.2em;
212
+ margin-bottom: 0.14em;
212
213
  }
213
214
  .section-subtitle {
214
- font-size: 0.9em;
215
+ font-size: 1.0em;
215
216
  color: #666;
216
- margin-bottom: 32px;
217
+ margin-bottom: 22.4px;
217
218
  }
218
219
 
219
220
  @media (max-width: 768px) {
220
221
  .sections {
221
- padding: 10px;
222
+ padding: 7px;
222
223
  }
223
224
  .input-group {
224
225
  flex-direction: column;
225
226
  align-items: flex-start;
226
227
  }
227
228
  label {
228
- margin-bottom: 5px;
229
+ margin-bottom: 3.5px;
229
230
  }
230
231
  .input-wrapper {
231
232
  width: 100%;
232
233
  }
233
234
  }
234
235
 
235
-
236
236
  .array-input-container {
237
237
  display: flex;
238
238
  align-items: center;
239
- margin-bottom: 5px;
239
+ margin-bottom: 3.5px;
240
240
  width: 100%;
241
241
  }
242
242
 
243
243
  .array-input {
244
244
  flex-grow: 1;
245
- margin-right: 8px;
245
+ margin-right: 5.6px;
246
246
  }
247
247
 
248
248
  .add-array-item {
249
249
  background-color: #4CAF50;
250
250
  color: white;
251
251
  border: none;
252
- padding: 5px 10px;
253
- border-radius: 4px;
252
+ padding: 3.5px 7px;
253
+ border-radius: 2.8px;
254
254
  cursor: pointer;
255
255
  }
256
256
 
257
257
  .array-items-container {
258
- margin-top: 5px;
258
+ margin-top: 3.5px;
259
259
  width: 100%;
260
260
  }
261
261
 
262
262
  .array-item {
263
263
  display: flex;
264
264
  align-items: center;
265
- margin-bottom: 5px;
265
+ margin-bottom: 3.5px;
266
266
  }
267
267
 
268
268
  .array-item-input {
269
269
  flex-grow: 1;
270
- margin: 16px;
270
+ margin: 11.2px;
271
271
  }
272
272
 
273
273
  .delete-array-item {
274
274
  background-color: #f44336;
275
275
  color: white;
276
276
  border: none;
277
- padding: 2px 6px;
278
- border-radius: 4px;
277
+ padding: 1.4px 4.2px;
278
+ border-radius: 2.8px;
279
279
  cursor: pointer;
280
280
  }
281
281
  .logo {
282
- width: 75px;
283
- height: 75px;
284
- margin-right: 20px;
285
- filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.3));
282
+ width: 52.5px;
283
+ height: 52.5px;
284
+ margin-right: 14px;
285
+ filter: drop-shadow(2.1px 2.1px 2.1px rgba(0, 0, 0, 0.3));
286
286
  transition: transform 0.3s ease;
287
287
  }
288
288
  .logo:hover {
@@ -311,8 +311,8 @@
311
311
  background-color: var(--primary-color);
312
312
  color: white;
313
313
  text-align: center;
314
- padding: 10px 0;
315
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
314
+ padding: 7px 0;
315
+ box-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.1);
316
316
  display: flex;
317
317
  justify-content: center;
318
318
  align-items: center;
@@ -332,33 +332,33 @@
332
332
 
333
333
  h1 {
334
334
  margin: 0;
335
- font-size: 2.5em;
335
+ font-size: 1.75em;
336
336
  }
337
337
 
338
338
  .action-buttons {
339
- min-width: 250px;
339
+ width: 100%;
340
340
  background-color: var(--primary-color);
341
341
  color: white;
342
- margin: 10px;
343
- font-size: 18px;
342
+ margin: 7px;
343
+ font-size: 12.6px;
344
344
  transition: background-color 0.3s ease, opacity 0.3s ease;
345
345
  }
346
346
 
347
347
  .add-field-btn {
348
- min-width: 150px;
348
+ min-width: 105px;
349
349
  background-color: var(--primary-color);
350
350
  color: white;
351
- margin: 10px;
352
- font-size: 18px;
351
+ margin: 7px;
352
+ font-size: 12.6px;
353
353
  transition: background-color 0.3s ease, opacity 0.3s ease;
354
354
  }
355
355
 
356
356
  .apply-changes-button {
357
- min-width: 250px;
357
+ width: 100%;
358
358
  background-color: #ff4136;
359
359
  color: white;
360
- margin: 10px;
361
- font-size: 18px;
360
+ margin: 7px;
361
+ font-size: 12.6px;
362
362
  transition: background-color 0.3s ease, opacity 0.3s ease;
363
363
  }
364
364
 
@@ -376,19 +376,19 @@
376
376
 
377
377
  #error-button {
378
378
  position: fixed;
379
- bottom: 20px;
380
- right: 20px;
379
+ bottom: 14px;
380
+ right: 14px;
381
381
  background-color: #ff4136;
382
382
  color: white;
383
383
  border: none;
384
384
  border-radius: 50%;
385
- width: 60px;
386
- height: 60px;
387
- font-size: 24px;
385
+ width: 42px;
386
+ height: 42px;
387
+ font-size: 16.8px;
388
388
  cursor: pointer;
389
389
  justify-content: center;
390
390
  align-items: center;
391
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
391
+ box-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.2);
392
392
  transition: transform 0.2s;
393
393
  display: none;
394
394
  z-index: 1000;
@@ -400,14 +400,14 @@
400
400
 
401
401
  .count {
402
402
  position: absolute;
403
- top: -5px;
404
- right: -5px;
403
+ top: -3.5px;
404
+ right: -3.5px;
405
405
  background-color: #ffdc00;
406
406
  color: #111;
407
407
  border-radius: 50%;
408
- width: 24px;
409
- height: 24px;
410
- font-size: 14px;
408
+ width: 16.8px;
409
+ height: 16.8px;
410
+ font-size: 9.8px;
411
411
  font-weight: bold;
412
412
  display: flex;
413
413
  justify-content: center;
@@ -434,14 +434,13 @@
434
434
  transform: translate(-50%, -50%);
435
435
  text-align: center;
436
436
  background-color: white;
437
- padding: 40px;
438
- border-radius: 20px;
439
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
437
+ padding: 28px;
438
+ border-radius: 14px;
439
+ box-shadow: 0 2.8px 14px rgba(0, 0, 0, 0.1);
440
440
  z-index: 999;
441
441
  animation: fadeIn 0.5s ease-out;
442
442
  }
443
443
 
444
-
445
444
  @keyframes fadeIn {
446
445
  from {
447
446
  opacity: 0;
@@ -454,28 +453,28 @@
454
453
  }
455
454
 
456
455
  .add-brand-container img {
457
- width: 150px;
458
- height: 150px;
459
- margin-bottom: 20px;
456
+ width: 105px;
457
+ height: 105px;
458
+ margin-bottom: 14px;
460
459
  }
461
460
 
462
461
  .add-brand-container h2 {
463
- font-size: 18px;
462
+ font-size: 12.6px;
464
463
  color: #333;
465
- margin-bottom: 30px;
464
+ margin-bottom: 21px;
466
465
  animation: slideDown 0.5s ease-out 0.3s both;
467
466
  }
468
467
 
469
468
  .add-brand-container button {
470
469
  display: block;
471
- width: 200px;
472
- margin: 20px auto;
473
- padding: 15px;
474
- font-size: 18px;
470
+ width: 140px;
471
+ margin: 14px auto;
472
+ padding: 10.5px;
473
+ font-size: 12.6px;
475
474
  background-color: var(--primary-color);
476
475
  color: white;
477
476
  border: none;
478
- border-radius: 8px;
477
+ border-radius: 5.6px;
479
478
  cursor: pointer;
480
479
  transition: background-color 0.3s ease, transform 0.2s ease;
481
480
  opacity: 0;
@@ -488,9 +487,9 @@
488
487
  }
489
488
 
490
489
  .button-message {
491
- font-size: 18px;
490
+ font-size: 12.6px;
492
491
  color: #666;
493
- margin-bottom: 5px;
492
+ margin-bottom: 3.5px;
494
493
  opacity: 0;
495
494
  animation: fadeInMessage 0.5s ease-out forwards;
496
495
  }
@@ -498,7 +497,7 @@
498
497
  @keyframes slideDown {
499
498
  from {
500
499
  opacity: 0;
501
- transform: translateY(-20px);
500
+ transform: translateY(-14px);
502
501
  }
503
502
  to {
504
503
  opacity: 1;
@@ -539,18 +538,18 @@
539
538
  }
540
539
 
541
540
  .loading-overlay-logo {
542
- width: 150px;
543
- height: 150px;
544
- margin-right: 20px;
545
- filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.3));
541
+ width: 105px;
542
+ height: 105px;
543
+ margin-right: 14px;
544
+ filter: drop-shadow(2.1px 2.1px 2.1px rgba(0, 0, 0, 0.3));
546
545
  transition: transform 0.3s ease;
547
546
  }
548
547
  </style>
549
548
  </head>
550
549
  <body>
551
550
 
552
- <header id="header" class="header-container">
553
- <div class="header-content">
551
+ <header id="header" class="header-container">
552
+ <div class="header-content">
554
553
  <img class="logo" src="../solara.png" alt="Splash Image">
555
554
  <h1><span id="brandNametitle"></span></h1>
556
555
  </div>
@@ -566,9 +565,9 @@
566
565
 
567
566
  <div class="column left">
568
567
  <div>
568
+ <button id="applyChangesButton" class="apply-changes-button">Apply Changes</button>
569
569
  <button id="allBrandsButton" class="action-buttons">All Brands</button>
570
570
  <button id="switchButton" class="action-buttons">Switch</button>
571
- <button id="applyChangesButton" class="apply-changes-button">Apply Changes</button>
572
571
  <button id="exportBrandBtn" class="action-buttons">Export</button>
573
572
  </div>
574
573
  </div>
@@ -64,7 +64,7 @@ class BrandRemoteSource {
64
64
  },
65
65
  {
66
66
  "key": "android_config.json",
67
- "name": "Android Platform Configuration",
67
+ "name": "Android Configuration",
68
68
  "inputType": "text",
69
69
  "content": {
70
70
  "applicationId": "",
@@ -86,7 +86,7 @@ class BrandRemoteSource {
86
86
  },
87
87
  {
88
88
  "key": "ios_config.json",
89
- "name": "iOS Platform Configuration",
89
+ "name": "iOS Configuration",
90
90
  "inputType": "text",
91
91
  "content": {
92
92
  "PRODUCT_BUNDLE_IDENTIFIER": "",
@@ -185,7 +185,7 @@ class BrandRemoteSource {
185
185
  },
186
186
  {
187
187
  key: 'android_config.json',
188
- name: 'Android Platform Configuration',
188
+ name: 'Android Configuration',
189
189
  input_type: 'text'
190
190
  },
191
191
  {
@@ -195,7 +195,7 @@ class BrandRemoteSource {
195
195
  },
196
196
  {
197
197
  key: 'ios_config.json',
198
- name: 'iOS Platform Configuration',
198
+ name: 'iOS Configuration',
199
199
  input_type: 'text'
200
200
  },
201
201
  {