solara 0.2.2 → 0.2.4

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 (27) hide show
  1. checksums.yaml +4 -4
  2. data/bin/solara +2 -2
  3. data/solara/lib/core/aliases/alias_generator.rb +231 -57
  4. data/solara/lib/core/aliases/{solara_terminal_setup.rb → terminal_setup.rb} +69 -34
  5. data/solara/lib/core/brands/brands_manager.rb +15 -0
  6. data/solara/lib/core/dashboard/brand/BrandDetailView.js +1 -0
  7. data/solara/lib/core/dashboard/brand/brand.html +131 -132
  8. data/solara/lib/core/dashboard/brand/source/BrandRemoteSource.js +4 -4
  9. data/solara/lib/core/dashboard/brands/brands.html +79 -79
  10. data/solara/lib/core/dashboard/component/AddFieldSheet.js +105 -142
  11. data/solara/lib/core/dashboard/component/AliasesBottomSheet.js +85 -79
  12. data/solara/lib/core/dashboard/component/BrandOptionsBottomSheet.js +68 -67
  13. data/solara/lib/core/dashboard/component/ConfirmationDialog.js +66 -64
  14. data/solara/lib/core/dashboard/component/MessageBottomSheet.js +48 -48
  15. data/solara/lib/core/dashboard/component/OnboardBrandBottomSheet.js +128 -125
  16. data/solara/lib/core/dashboard/dashboard_server.rb +1 -1
  17. data/solara/lib/core/dashboard/handler/brand_alisases_handler.rb +1 -1
  18. data/solara/lib/core/dashboard/handler/brand_configurations_manager.rb +2 -2
  19. data/solara/lib/core/dashboard/handler/brand_icon_handler.rb +1 -1
  20. data/solara/lib/core/doctor/doctor_manager.rb +15 -1
  21. data/solara/lib/core/scripts/file_path.rb +9 -1
  22. data/solara/lib/core/scripts/solara_status_manager.rb +4 -0
  23. data/solara/lib/core/solara_configurator.rb +1 -1
  24. data/solara/lib/solara/version.rb +1 -1
  25. data/solara/lib/solara.rb +4 -2
  26. metadata +4 -5
  27. data/solara/lib/core/aliases/alias_generator_manager.rb +0 -29
@@ -13,7 +13,7 @@
13
13
  --text-color: #333;
14
14
  --border-color: #E1E4E8;
15
15
  --offboard-color: #dc3545;
16
- --field-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
16
+ --field-shadow: 0 1.4px 3.5px rgba(0, 0, 0, 0.1);
17
17
  }
18
18
  body {
19
19
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
@@ -21,49 +21,49 @@
21
21
  color: var(--text-color);
22
22
  line-height: 1.6;
23
23
  margin: 0;
24
- padding-top: 110px;
24
+ padding-top: 77px;
25
25
  }
26
26
  .container {
27
- max-width: 1000px;
27
+ max-width: 700px;
28
28
  margin: 0 auto;
29
- padding: 20px;
29
+ padding: 14px;
30
30
  }
31
31
 
32
32
  h1 {
33
33
  margin: 0;
34
- font-size: 2.5em;
34
+ font-size: 1.75em;
35
35
  }
36
36
  .brand-list {
37
- max-width: 700px;
37
+ max-width: 490px;
38
38
  margin: 0 auto;
39
39
  }
40
40
  .brand-item {
41
41
  background-color: #fff;
42
- border-radius: 12px;
43
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
44
- padding: 20px;
42
+ border-radius: 8.4px;
43
+ box-shadow: 0 2.8px 4.2px rgba(0, 0, 0, 0.1);
44
+ padding: 14px;
45
45
  display: flex;
46
46
  align-items: center;
47
47
  cursor: pointer;
48
48
  transition: transform 0.3s ease, box-shadow 0.3s ease;
49
- margin-bottom: 20px;
49
+ margin-bottom: 14px;
50
50
  position: relative;
51
51
  overflow: hidden;
52
52
  }
53
53
  .brand-item:hover {
54
- transform: translateY(-5px);
55
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
54
+ transform: translateY(-3.5px);
55
+ box-shadow: 0 4.2px 8.4px rgba(0, 0, 0, 0.15);
56
56
  }
57
57
  .brand-image {
58
- width: 80px;
59
- height: 80px;
58
+ width: 56px;
59
+ height: 56px;
60
60
  display: flex;
61
61
  justify-content: center;
62
62
  align-items: center;
63
- margin-right: 20px;
64
- border-radius: 12px;
63
+ margin-right: 14px;
64
+ border-radius: 8.4px;
65
65
  overflow: hidden;
66
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
66
+ box-shadow: 0 1.4px 3.5px rgba(0, 0, 0, 0.1);
67
67
  }
68
68
  .brand-image img {
69
69
  width: 100%;
@@ -74,13 +74,13 @@
74
74
  flex-grow: 1;
75
75
  }
76
76
  .brand-name {
77
- font-size: 20px;
77
+ font-size: 14px;
78
78
  font-weight: bold;
79
- margin-bottom: 5px;
79
+ margin-bottom: 3.5px;
80
80
  color: var(--primary-color);
81
81
  }
82
82
  .brand-key {
83
- font-size: 14px;
83
+ font-size: 9.8px;
84
84
  color: #7f8c8d;
85
85
  }
86
86
  .brand-actions {
@@ -91,63 +91,63 @@
91
91
  background-color: var(--primary-color);
92
92
  color: white;
93
93
  border: none;
94
- padding: 10px 20px;
95
- border-radius: 5px;
94
+ padding: 7px 14px;
95
+ border-radius: 3.5px;
96
96
  cursor: pointer;
97
- font-size: 16px;
97
+ font-size: 11.2px;
98
98
  transition: background-color 0.3s ease;
99
- margin-right: 15px;
100
- min-width: 130px;
99
+ margin-right: 10.5px;
100
+ min-width: 91px;
101
101
  }
102
102
  .switch-button:hover {
103
103
  background-color: #3a7bc8;
104
104
  }
105
105
  .overflow-menu {
106
106
  cursor: pointer;
107
- font-size: 20px;
107
+ font-size: 14px;
108
108
  color: #7f8c8d;
109
109
  transition: color 0.3s ease;
110
- padding: 10px;
111
- margin: -10px;
110
+ padding: 7px;
111
+ margin: -7px;
112
112
  }
113
113
  .overflow-menu:hover {
114
114
  color: var(--primary-color);
115
115
  }
116
116
 
117
117
  .current-brand, .brands-list {
118
- margin-bottom: 40px;
119
- max-width: 700px;
118
+ margin-bottom: 28px;
119
+ max-width: 490px;
120
120
  margin-left: auto;
121
121
  margin-right: auto;
122
122
  }
123
123
  .current-brand h2, .brands-list h2 {
124
- margin: 0 0 20px 0;
125
- font-size: 1.8em;
124
+ margin: 0 0 14px 0;
125
+ font-size: 1.26em;
126
126
  color: var(--primary-color);
127
127
  }
128
128
  .section-title {
129
- font-size: 1.5em;
129
+ font-size: 1.05em;
130
130
  color: var(--primary-color);
131
- margin-bottom: 20px;
131
+ margin-bottom: 14px;
132
132
  text-align: center;
133
133
  }
134
134
  .brands-list-header {
135
135
  display: flex;
136
136
  justify-content: space-between;
137
137
  align-items: center;
138
- margin-bottom: 20px;
139
- margin-right: 40px;
138
+ margin-bottom: 14px;
139
+ margin-right: 28px;
140
140
  }
141
141
  .onboard-brand-button {
142
142
  background-color: var(--primary-color);
143
143
  color: white;
144
144
  border: none;
145
- padding: 10px 20px;
146
- border-radius: 5px;
145
+ padding: 7px 14px;
146
+ border-radius: 3.5px;
147
147
  cursor: pointer;
148
- font-size: 16px;
148
+ font-size: 11.2px;
149
149
  transition: background-color 0.3s ease;
150
- min-width: 130px;
150
+ min-width: 91px;
151
151
  }
152
152
  .onboard-brand-button:hover {
153
153
  background-color: #3a7bc8;
@@ -155,7 +155,7 @@
155
155
  .onboard-brand-form {
156
156
  display: flex;
157
157
  flex-direction: column;
158
- gap: 15px;
158
+ gap: 10.5px;
159
159
  }
160
160
  .form-group {
161
161
  display: flex;
@@ -164,29 +164,29 @@
164
164
  .form-group label {
165
165
  display: flex;
166
166
  align-items: center;
167
- margin-bottom: 5px;
167
+ margin-bottom: 3.5px;
168
168
  font-weight: bold;
169
169
  }
170
170
  .form-group input {
171
- padding: 10px;
171
+ padding: 7px;
172
172
  border: 1px solid var(--border-color);
173
- border-radius: 5px;
174
- font-size: 16px;
173
+ border-radius: 3.5px;
174
+ font-size: 11.2px;
175
175
  }
176
176
  .question-icon {
177
- margin-left: 5px;
177
+ margin-left: 3.5px;
178
178
  cursor: pointer;
179
179
  color: var(--primary-color);
180
180
  }
181
181
  .logo {
182
- width: 75px;
183
- height: 75px;
184
- margin-right: 20px;
185
- filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.3));
182
+ width: 52.5px;
183
+ height: 52.5px;
184
+ margin-right: 14px;
185
+ filter: drop-shadow(2.1px 2.1px 2.1px rgba(0, 0, 0, 0.3));
186
186
  transition: transform 0.3s ease;
187
187
  }
188
188
  .logo:hover {
189
- transform: scale(1.1);
189
+ transform: scale(1.07);
190
190
  }
191
191
 
192
192
  .header-container {
@@ -199,8 +199,8 @@
199
199
  background-color: var(--primary-color);
200
200
  color: white;
201
201
  text-align: center;
202
- padding: 10px 0;
203
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
202
+ padding: 7px 0;
203
+ box-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.1);
204
204
  display: flex;
205
205
  justify-content: center;
206
206
  align-items: center;
@@ -218,75 +218,75 @@
218
218
  transform: translateY(-100%);
219
219
  }
220
220
  .logo {
221
- width: 50px;
222
- height: 50px;
223
- margin-right: 20px;
224
- filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.3));
221
+ width: 35px;
222
+ height: 35px;
223
+ margin-right: 14px;
224
+ filter: drop-shadow(2.1px 2.1px 2.1px rgba(0, 0, 0, 0.3));
225
225
  transition: transform 0.3s ease;
226
226
  }
227
227
  .logo:hover {
228
- transform: scale(1.1);
228
+ transform: scale(1.07);
229
229
  }
230
230
  h1 {
231
231
  margin: 0;
232
- font-size: 2.5em;
232
+ font-size: 1.75em;
233
233
  }
234
234
 
235
235
  .search-container {
236
- margin-top: 20px;
237
- margin-bottom: 20px;
236
+ margin-top: 14px;
237
+ margin-bottom: 14px;
238
238
  }
239
239
 
240
240
  #brandSearch {
241
- padding: 15px;
242
- margin-bottom: 15px;
241
+ padding: 10.5px;
242
+ margin-bottom: 10.5px;
243
243
  border: 1px solid var(--border-color);
244
- border-radius: 5px;
245
- font-size: 16px;
244
+ border-radius: 3.5px;
245
+ font-size: 11.2px;
246
246
  width: 100%;
247
- max-width: 670px;
247
+ max-width: 469px;
248
248
  }
249
249
 
250
250
  .brands-list-header {
251
251
  display: flex;
252
252
  justify-content: space-between;
253
253
  align-items: center;
254
- margin-bottom: 20px;
254
+ margin-bottom: 14px;
255
255
  }
256
256
 
257
257
  #error-button {
258
258
  position: fixed;
259
- bottom: 20px;
260
- right: 20px;
259
+ bottom: 14px;
260
+ right: 14px;
261
261
  background-color: #ff4136;
262
262
  color: white;
263
263
  border: none;
264
264
  border-radius: 50%;
265
- width: 60px;
266
- height: 60px;
267
- font-size: 24px;
265
+ width: 42px;
266
+ height: 42px;
267
+ font-size: 16.8px;
268
268
  cursor: pointer;
269
269
  justify-content: center;
270
270
  align-items: center;
271
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
271
+ box-shadow: 0 1.4px 7px rgba(0, 0, 0, 0.2);
272
272
  transition: transform 0.2s;
273
273
  display: none;
274
274
  }
275
275
 
276
276
  #error-button:hover {
277
- transform: scale(1.1);
277
+ transform: scale(1.07);
278
278
  }
279
279
 
280
280
  .count {
281
281
  position: absolute;
282
- top: -5px;
283
- right: -5px;
282
+ top: -3.5px;
283
+ right: -3.5px;
284
284
  background-color: #ffdc00;
285
285
  color: #111;
286
286
  border-radius: 50%;
287
- width: 24px;
288
- height: 24px;
289
- font-size: 14px;
287
+ width: 16.8px;
288
+ height: 16.8px;
289
+ font-size: 9.8px;
290
290
  font-weight: bold;
291
291
  display: flex;
292
292
  justify-content: center;
@@ -17,150 +17,113 @@ class AddFieldSheet extends HTMLElement {
17
17
 
18
18
  render() {
19
19
  this.shadowRoot.innerHTML = `
20
- <style>
21
- .bottom-sheet {
22
- position: fixed;
23
- bottom: -100%;
24
- left: 0;
25
- right: 0;
26
- background-color: white;
27
- padding: 30px;
28
- box-shadow: 0 -5px 20px rgba(0, 0, 0, 0.2);
29
- transition: bottom 0.3s ease-out;
30
- z-index: 1000;
31
- border-top-left-radius: 25px;
32
- border-top-right-radius: 25px;
33
- height: 60vh;
34
- max-height: 500px;
35
- overflow-y: auto;
36
- max-width: 600px;
37
- margin: 0 auto;
38
- }
39
- .bottom-sheet.show {
40
- bottom: 0;
41
- }
42
- .bottom-sheet h3 {
43
- color: var(--primary-color);
44
- margin-top: 0;
45
- margin-bottom: 20px;
46
- font-size: 24px;
47
- }
48
- .overlay {
49
- display: none;
50
- position: fixed;
51
- top: 0;
52
- left: 0;
53
- right: 0;
54
- bottom: 0;
55
- background: rgba(0, 0, 0, 0.5);
56
- z-index: 999;
57
- }
58
- .show {
59
- display: block;
60
- }
61
- .form-group {
62
- margin-bottom: 20px;
63
- }
64
- .form-group label {
65
- display: block;
66
- margin-bottom: 8px;
67
- font-weight: bold;
68
- }
69
- .form-group input {
70
- width: 100%;
71
- padding: 12px;
72
- border: 1px solid var(--border-color);
73
- border-radius: 4px;
74
- font-size: 16px;
75
- }
76
- .tooltip {
77
- position: relative;
78
- display: inline-block;
79
- margin-left: 5px;
80
- }
81
- .tooltip .tooltiptext {
82
- visibility: hidden;
83
- width: 200px;
84
- background-color: #555;
85
- color: #fff;
86
- text-align: center;
87
- border-radius: 6px;
88
- padding: 5px;
89
- position: absolute;
90
- z-index: 1;
91
- bottom: 125%;
92
- left: 50%;
93
- transform: translateX(-50%);
94
- opacity: 0;
95
- transition: opacity 0.3s;
96
- }
97
- .tooltip:hover .tooltiptext {
98
- visibility: visible;
99
- opacity: 1;
100
- }
101
- .add-field-button {
102
- width: 100%;
103
- padding: 15px;
104
- font-size: 18px;
105
- background-color: var(--primary-color);
106
- color: white;
107
- border: none;
108
- border-radius: 4px;
109
- cursor: pointer;
110
- transition: background-color 0.3s ease;
111
- }
112
- .add-field-button:hover {
113
- background-color: #3A7BC8;
114
- }
115
- .color-picker-container {
116
- display: none;
117
- margin-top: 10px;
118
- }
119
- #fieldValue[type="color"] {
120
- -webkit-appearance: none;
121
- border: none;
122
- width: 32px;
123
- height: 32px;
124
- cursor: pointer;
125
- }
126
- #fieldValue[type="color"]::-webkit-color-swatch-wrapper {
127
- padding: 0;
128
- }
129
- #fieldValue[type="color"]::-webkit-color-swatch {
130
- border: none;
131
- }
132
- #colorPicker {
133
- -webkit-appearance: none; /* Remove default styling */
134
- border: none; /* No border */
135
- width: 100%; /* Set a fixed width */
136
- height: 60px; /* Increase the height */
137
- cursor: pointer; /* Pointer cursor on hover */
138
- border-radius: 4px; /* Optional: Rounded corners */
139
- }
20
+ <style>
21
+ .bottom-sheet {
22
+ position: fixed;
23
+ bottom: -100%;
24
+ left: 0;
25
+ right: 0;
26
+ background-color: white;
27
+ padding: 21px;
28
+ box-shadow: 0 -3.5px 14px rgba(0, 0, 0, 0.2);
29
+ transition: bottom 0.3s ease-out;
30
+ z-index: 1000;
31
+ border-top-left-radius: 17.5px;
32
+ border-top-right-radius: 17.5px;
33
+ height: 42vh;
34
+ max-height: 350px;
35
+ overflow-y: auto;
36
+ max-width: 420px;
37
+ margin: 0 auto;
38
+ }
39
+ .bottom-sheet.show {
40
+ bottom: 0;
41
+ }
42
+ .bottom-sheet h3 {
43
+ color: var(--primary-color);
44
+ margin-top: 0;
45
+ margin-bottom: 14px;
46
+ font-size: 16.8px;
47
+ }
48
+ .overlay {
49
+ display: none;
50
+ position: fixed;
51
+ top: 0;
52
+ left: 0;
53
+ right: 0;
54
+ bottom: 0;
55
+ background: rgba(0, 0, 0, 0.5);
56
+ z-index: 999;
57
+ }
58
+ .show {
59
+ display: block;
60
+ }
61
+ .form-group {
62
+ margin-bottom: 14px;
63
+ }
64
+ .form-group label {
65
+ display: block;
66
+ margin-bottom: 5.6px;
67
+ font-weight: bold;
68
+ font-size: 11.2px;
69
+ }
70
+ .form-group input {
71
+ width: 100%;
72
+ padding: 8.4px;
73
+ border: 1px solid var(--border-color);
74
+ border-radius: 2.8px;
75
+ font-size: 11.2px;
76
+ }
77
+ .add-field-button {
78
+ width: 100%;
79
+ padding: 10.5px;
80
+ font-size: 12.6px;
81
+ background-color: var(--primary-color);
82
+ color: white;
83
+ border: none;
84
+ border-radius: 2.8px;
85
+ cursor: pointer;
86
+ transition: background-color 0.3s ease;
87
+ }
88
+ .add-field-button:hover {
89
+ background-color: #3A7BC8;
90
+ }
91
+ .color-picker-container {
92
+ display: none;
93
+ margin-top: 7px;
94
+ }
95
+ #colorPicker {
96
+ -webkit-appearance: none;
97
+ border: none;
98
+ width: 100%;
99
+ height: 42px;
100
+ cursor: pointer;
101
+ border-radius: 2.8px;
102
+ }
103
+ #colorPicker::-webkit-color-swatch {
104
+ border: none;
105
+ border-radius: 2.8px;
106
+ }
107
+ </style>
140
108
 
141
- #colorPicker::-webkit-color-swatch {
142
- border: none; /* No border on the color swatch */
143
- border-radius: 4px; /* Optional: Rounded corners */
144
- }
145
- </style>
146
- <div id="overlay" class="overlay"></div>
147
- <div class="bottom-sheet" id="addFieldSheet">
148
- <h3>Add New Field</h3>
149
- <form id="addFieldForm">
150
- <div class="form-group">
151
- <label for="fieldName">Field Name</label>
152
- <input type="text" id="fieldName" name="fieldName" required>
153
- </div>
154
- <div class="form-group">
155
- <label for="fieldValue">Field Value</label>
156
- <input type="text" id="fieldValue" name="fieldValue" required>
157
- <div class="color-picker-container">
158
- <input type="color" id="colorPicker" name="colorPicker">
159
- </div>
160
- </div>
161
- <button type="submit" class="add-field-button">Add Field</button>
162
- </form>
109
+ <div id="overlay" class="overlay"></div>
110
+ <div class="bottom-sheet" id="addFieldSheet">
111
+ <h3>Add New Field</h3>
112
+ <form id="addFieldForm">
113
+ <div class="form-group">
114
+ <label for="fieldName">Field Name</label>
115
+ <input type="text" id="fieldName" name="fieldName" required>
116
+ </div>
117
+ <div class="form-group">
118
+ <label for="fieldValue">Field Value</label>
119
+ <input type="text" id="fieldValue" name="fieldValue" required>
120
+ <div class="color-picker-container">
121
+ <input type="color" id="colorPicker" name="colorPicker">
163
122
  </div>
123
+ </div>
124
+ <button type="submit" class="add-field-button">Add Field</button>
125
+ </form>
126
+ </div>
164
127
  `;
165
128
  }
166
129