ywana-core8 0.2.8 → 0.2.9
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.
- package/dist/index.css +292 -56
- package/dist/index.js +215 -114
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +215 -114
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +215 -114
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/desktop/AppManager.js +179 -115
- package/src/desktop/ApplicationMenu.css +292 -53
- package/src/desktop/ApplicationMenu.js +55 -15
- package/src/desktop/Desktop.stories.jsx +148 -584
- package/src/desktop/desktop-windows.css +0 -3
- package/src/desktop/desktop.js +43 -23
- package/src/desktop.backup/desktop.css +0 -6
- package/src/desktop.backup/desktop.js +0 -13
- package/src/desktop.backup/window.css +0 -58
- package/src/desktop.backup/window.js +0 -27
@@ -10,10 +10,11 @@
|
|
10
10
|
backdrop-filter: blur(8px);
|
11
11
|
z-index: 10000; /* Always above all windows */
|
12
12
|
display: flex;
|
13
|
-
align-items:
|
14
|
-
justify-content:
|
13
|
+
align-items: flex-end;
|
14
|
+
justify-content: flex-start;
|
15
15
|
animation: fadeIn 0.2s ease-out;
|
16
16
|
pointer-events: auto; /* Ensure menu is clickable */
|
17
|
+
padding: 0 0 0px 15px; /* Espacio para el taskbar y margen izquierdo */
|
17
18
|
}
|
18
19
|
|
19
20
|
@keyframes fadeIn {
|
@@ -27,12 +28,12 @@
|
|
27
28
|
|
28
29
|
.application-menu {
|
29
30
|
background: #ffffff;
|
30
|
-
border-radius: 12px;
|
31
|
-
box-shadow: 0
|
32
|
-
width:
|
31
|
+
border-radius: 12px 12px 0 0;
|
32
|
+
box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.3);
|
33
|
+
width: 30rem;
|
33
34
|
max-width: 1000px;
|
34
|
-
height:
|
35
|
-
max-height: 100
|
35
|
+
height: 80vh; /* Altura fija relativa al viewport */
|
36
|
+
max-height: calc(100% - 80px); /* Espacio para taskbar */
|
36
37
|
display: grid;
|
37
38
|
grid-template-rows: auto auto 1fr;
|
38
39
|
grid-template-areas:
|
@@ -45,11 +46,11 @@
|
|
45
46
|
|
46
47
|
@keyframes slideIn {
|
47
48
|
from {
|
48
|
-
transform:
|
49
|
+
transform: translateY(20px);
|
49
50
|
opacity: 0;
|
50
51
|
}
|
51
52
|
to {
|
52
|
-
transform:
|
53
|
+
transform: translateY(0);
|
53
54
|
opacity: 1;
|
54
55
|
}
|
55
56
|
}
|
@@ -59,10 +60,17 @@
|
|
59
60
|
grid-area: header;
|
60
61
|
display: flex;
|
61
62
|
align-items: center;
|
62
|
-
justify-content:
|
63
|
-
padding:
|
63
|
+
justify-content: flex-end;
|
64
|
+
padding: 8px 16px;
|
64
65
|
border-bottom: 1px solid #e0e0e0;
|
65
66
|
background: #f8f9fa;
|
67
|
+
min-height: 40px;
|
68
|
+
}
|
69
|
+
|
70
|
+
.application-menu__header-controls {
|
71
|
+
display: flex;
|
72
|
+
align-items: center;
|
73
|
+
gap: 6px;
|
66
74
|
}
|
67
75
|
|
68
76
|
.application-menu__header h2 {
|
@@ -72,15 +80,48 @@
|
|
72
80
|
font-weight: 600;
|
73
81
|
}
|
74
82
|
|
83
|
+
.application-menu__view-toggle {
|
84
|
+
background: none;
|
85
|
+
border: 1px solid #ddd;
|
86
|
+
font-size: 14px;
|
87
|
+
cursor: pointer;
|
88
|
+
color: #666;
|
89
|
+
padding: 6px 10px;
|
90
|
+
border-radius: 4px;
|
91
|
+
transition: all 0.2s ease;
|
92
|
+
min-width: 32px;
|
93
|
+
height: 32px;
|
94
|
+
display: flex;
|
95
|
+
align-items: center;
|
96
|
+
justify-content: center;
|
97
|
+
}
|
98
|
+
|
99
|
+
.application-menu__view-toggle:hover {
|
100
|
+
background: #e9ecef;
|
101
|
+
color: #333;
|
102
|
+
border-color: #ccc;
|
103
|
+
}
|
104
|
+
|
105
|
+
.application-menu__view-toggle.active {
|
106
|
+
background: #1976d2;
|
107
|
+
color: white;
|
108
|
+
border-color: #1976d2;
|
109
|
+
}
|
110
|
+
|
75
111
|
.application-menu__close {
|
76
112
|
background: none;
|
77
113
|
border: none;
|
78
|
-
font-size:
|
114
|
+
font-size: 20px;
|
79
115
|
color: #666;
|
80
116
|
cursor: pointer;
|
81
|
-
padding:
|
117
|
+
padding: 6px 8px;
|
82
118
|
border-radius: 4px;
|
83
119
|
transition: all 0.2s ease;
|
120
|
+
min-width: 32px;
|
121
|
+
height: 32px;
|
122
|
+
display: flex;
|
123
|
+
align-items: center;
|
124
|
+
justify-content: center;
|
84
125
|
}
|
85
126
|
|
86
127
|
.application-menu__close:hover {
|
@@ -91,34 +132,123 @@
|
|
91
132
|
/* Search */
|
92
133
|
.application-menu__search {
|
93
134
|
grid-area: search;
|
94
|
-
padding:
|
135
|
+
padding: 12px 20px;
|
95
136
|
border-bottom: 1px solid #e0e0e0;
|
96
137
|
}
|
97
138
|
|
98
139
|
.application-menu__search-input {
|
99
140
|
width: 100%;
|
100
|
-
padding:
|
101
|
-
border:
|
102
|
-
border-radius:
|
103
|
-
font-size:
|
141
|
+
padding: 10px 14px;
|
142
|
+
border: 1px solid #ddd;
|
143
|
+
border-radius: 6px;
|
144
|
+
font-size: 14px;
|
104
145
|
outline: none;
|
105
146
|
transition: border-color 0.2s ease;
|
106
147
|
}
|
107
148
|
|
108
149
|
.application-menu__search-input:focus {
|
109
150
|
border-color: #1976d2;
|
151
|
+
box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.1);
|
152
|
+
}
|
153
|
+
|
154
|
+
/* Condensed Mode */
|
155
|
+
.application-menu--condensed .application-menu__header {
|
156
|
+
padding: 6px 12px;
|
157
|
+
min-height: 32px;
|
158
|
+
}
|
159
|
+
|
160
|
+
.application-menu--condensed .application-menu__search {
|
161
|
+
padding: 8px 16px;
|
162
|
+
}
|
163
|
+
|
164
|
+
.application-menu--condensed .application-menu__search-input {
|
165
|
+
padding: 8px 12px;
|
166
|
+
font-size: 13px;
|
167
|
+
}
|
168
|
+
|
169
|
+
.application-menu--condensed .application-menu__content {
|
170
|
+
padding: 12px 16px;
|
171
|
+
}
|
172
|
+
|
173
|
+
.application-menu--condensed .application-menu__categories {
|
174
|
+
padding: 4px;
|
175
|
+
}
|
176
|
+
|
177
|
+
.application-menu--condensed .application-menu__category {
|
178
|
+
width: 36px;
|
179
|
+
height: 36px;
|
180
|
+
padding: 6px;
|
181
|
+
margin: 1px;
|
182
|
+
}
|
183
|
+
|
184
|
+
.application-menu--condensed .category-icon {
|
185
|
+
font-size: 16px;
|
186
|
+
}
|
187
|
+
|
188
|
+
.application-menu--condensed .application-menu__category-section {
|
189
|
+
margin-bottom: 20px;
|
190
|
+
}
|
191
|
+
|
192
|
+
.application-menu--condensed .category-title {
|
193
|
+
font-size: 14px;
|
194
|
+
margin-bottom: 8px;
|
195
|
+
}
|
196
|
+
|
197
|
+
.application-menu--condensed .application-menu__apps-grid {
|
198
|
+
gap: 8px;
|
199
|
+
grid-template-columns: repeat(auto-fill, minmax(75px, 1fr));
|
200
|
+
}
|
201
|
+
|
202
|
+
.application-menu--condensed .application-menu__app--grid {
|
203
|
+
padding: 8px 6px;
|
204
|
+
}
|
205
|
+
|
206
|
+
.application-menu--condensed .application-menu__app--grid .app-icon {
|
207
|
+
font-size: 28px;
|
208
|
+
margin-bottom: 4px;
|
209
|
+
}
|
210
|
+
|
211
|
+
.application-menu--condensed .application-menu__app--grid .app-name {
|
212
|
+
font-size: 11px;
|
213
|
+
}
|
214
|
+
|
215
|
+
.application-menu--condensed .application-menu__apps-list {
|
216
|
+
gap: 1px;
|
217
|
+
}
|
218
|
+
|
219
|
+
.application-menu--condensed .application-menu__app--list {
|
220
|
+
padding: 6px 12px;
|
221
|
+
gap: 10px;
|
222
|
+
}
|
223
|
+
|
224
|
+
.application-menu--condensed .application-menu__app--list .app-icon {
|
225
|
+
font-size: 22px;
|
226
|
+
min-width: 22px;
|
227
|
+
}
|
228
|
+
|
229
|
+
.application-menu--condensed .application-menu__app--list .app-name {
|
230
|
+
font-size: 12px;
|
231
|
+
margin-bottom: 1px;
|
232
|
+
}
|
233
|
+
|
234
|
+
.application-menu--condensed .application-menu__app--list .app-description {
|
235
|
+
font-size: 10px;
|
110
236
|
}
|
111
237
|
|
112
238
|
/* Main Grid Layout */
|
113
239
|
.application-menu__main {
|
114
240
|
grid-area: main;
|
115
241
|
display: grid;
|
116
|
-
grid-template-columns:
|
242
|
+
grid-template-columns: 60px 1fr;
|
117
243
|
grid-template-areas: "sidebar content";
|
118
244
|
height: 100%;
|
119
245
|
overflow: hidden;
|
120
246
|
}
|
121
247
|
|
248
|
+
.application-menu--condensed .application-menu__main {
|
249
|
+
grid-template-columns: 48px 1fr;
|
250
|
+
}
|
251
|
+
|
122
252
|
/* Sidebar */
|
123
253
|
.application-menu__sidebar {
|
124
254
|
grid-area: sidebar;
|
@@ -132,7 +262,7 @@
|
|
132
262
|
/* Categories */
|
133
263
|
.application-menu__categories {
|
134
264
|
flex: 1;
|
135
|
-
padding:
|
265
|
+
padding: 8px;
|
136
266
|
overflow-y: auto;
|
137
267
|
scrollbar-width: thin;
|
138
268
|
scrollbar-color: #ccc transparent;
|
@@ -158,18 +288,20 @@
|
|
158
288
|
.application-menu__category {
|
159
289
|
display: flex;
|
160
290
|
align-items: center;
|
161
|
-
|
162
|
-
padding:
|
163
|
-
margin: 2px
|
291
|
+
justify-content: center;
|
292
|
+
padding: 8px;
|
293
|
+
margin: 2px;
|
164
294
|
background: transparent;
|
165
295
|
border: none;
|
166
|
-
border-radius:
|
296
|
+
border-radius: 6px;
|
167
297
|
cursor: pointer;
|
168
|
-
font-size:
|
169
|
-
text-align:
|
170
|
-
transition: all 0.
|
171
|
-
color: #
|
172
|
-
width:
|
298
|
+
font-size: 13px;
|
299
|
+
text-align: center;
|
300
|
+
transition: all 0.15s ease;
|
301
|
+
color: #555;
|
302
|
+
width: 44px;
|
303
|
+
height: 44px;
|
304
|
+
position: relative;
|
173
305
|
}
|
174
306
|
|
175
307
|
.application-menu__category:hover {
|
@@ -178,27 +310,25 @@
|
|
178
310
|
}
|
179
311
|
|
180
312
|
.application-menu__category.active {
|
181
|
-
background: #
|
182
|
-
color:
|
313
|
+
background: #e3f2fd;
|
314
|
+
color: #1976d2;
|
315
|
+
font-weight: 500;
|
183
316
|
}
|
184
317
|
|
185
318
|
.category-icon {
|
186
|
-
font-size:
|
187
|
-
min-width:
|
319
|
+
font-size: 20px;
|
320
|
+
min-width: 20px;
|
188
321
|
}
|
189
322
|
|
190
323
|
.category-name {
|
191
|
-
|
192
|
-
white-space: nowrap;
|
193
|
-
overflow: hidden;
|
194
|
-
text-overflow: ellipsis;
|
324
|
+
display: none;
|
195
325
|
}
|
196
326
|
|
197
327
|
/* Content */
|
198
328
|
.application-menu__content {
|
199
329
|
grid-area: content;
|
200
330
|
overflow-y: auto;
|
201
|
-
padding: 24px;
|
331
|
+
padding: 20px 24px;
|
202
332
|
scrollbar-width: thin;
|
203
333
|
scrollbar-color: #ccc transparent;
|
204
334
|
}
|
@@ -223,9 +353,9 @@
|
|
223
353
|
|
224
354
|
.application-menu__search-results h3,
|
225
355
|
.category-title {
|
226
|
-
margin: 0 0
|
356
|
+
margin: 0 0 12px 0;
|
227
357
|
color: #333;
|
228
|
-
font-size:
|
358
|
+
font-size: 15px;
|
229
359
|
font-weight: 600;
|
230
360
|
}
|
231
361
|
|
@@ -240,19 +370,126 @@
|
|
240
370
|
/* Apps Grid */
|
241
371
|
.application-menu__apps-grid {
|
242
372
|
display: grid;
|
243
|
-
grid-template-columns: repeat(auto-fill, minmax(
|
244
|
-
gap:
|
373
|
+
grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
|
374
|
+
gap: 12px;
|
375
|
+
max-width: 100%;
|
376
|
+
}
|
377
|
+
|
378
|
+
.application-menu__app--grid {
|
379
|
+
display: flex;
|
380
|
+
flex-direction: column;
|
381
|
+
align-items: center;
|
382
|
+
padding: 12px 8px;
|
383
|
+
border-radius: 8px;
|
384
|
+
cursor: pointer;
|
385
|
+
transition: all 0.15s ease;
|
386
|
+
text-align: center;
|
387
|
+
background: #ffffff;
|
388
|
+
border: 1px solid transparent;
|
389
|
+
}
|
390
|
+
|
391
|
+
.application-menu__app--grid:hover {
|
392
|
+
background: #f8f9fa;
|
393
|
+
border-color: #e0e0e0;
|
394
|
+
transform: translateY(-1px);
|
395
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
396
|
+
}
|
397
|
+
|
398
|
+
.application-menu__app--grid .app-icon {
|
399
|
+
font-size: 36px;
|
400
|
+
margin-bottom: 6px;
|
401
|
+
line-height: 1;
|
402
|
+
}
|
403
|
+
|
404
|
+
.application-menu__app--grid .app-name {
|
405
|
+
font-size: 12px;
|
406
|
+
font-weight: 500;
|
407
|
+
color: #333;
|
408
|
+
line-height: 1.2;
|
409
|
+
word-break: break-word;
|
410
|
+
max-width: 100%;
|
411
|
+
}
|
412
|
+
|
413
|
+
/* Apps List */
|
414
|
+
.application-menu__apps-list {
|
415
|
+
display: flex;
|
416
|
+
flex-direction: column;
|
417
|
+
gap: 2px;
|
245
418
|
max-width: 100%;
|
246
419
|
}
|
247
420
|
|
421
|
+
.application-menu__app--list {
|
422
|
+
display: flex;
|
423
|
+
align-items: center;
|
424
|
+
padding: 10px 16px;
|
425
|
+
border-radius: 6px;
|
426
|
+
cursor: pointer;
|
427
|
+
transition: all 0.15s ease;
|
428
|
+
background: transparent;
|
429
|
+
border: none;
|
430
|
+
gap: 14px;
|
431
|
+
margin-bottom: 2px;
|
432
|
+
}
|
433
|
+
|
434
|
+
.application-menu__app--list:hover {
|
435
|
+
background: #f0f7ff;
|
436
|
+
color: #1976d2;
|
437
|
+
}
|
438
|
+
|
439
|
+
.application-menu__app--list .app-icon {
|
440
|
+
font-size: 28px;
|
441
|
+
min-width: 28px;
|
442
|
+
line-height: 1;
|
443
|
+
display: flex;
|
444
|
+
align-items: center;
|
445
|
+
justify-content: center;
|
446
|
+
}
|
447
|
+
|
448
|
+
.application-menu__app--list .app-info {
|
449
|
+
flex: 1;
|
450
|
+
text-align: left;
|
451
|
+
min-width: 0;
|
452
|
+
}
|
453
|
+
|
454
|
+
.application-menu__app--list .app-name {
|
455
|
+
font-size: 14px;
|
456
|
+
font-weight: 500;
|
457
|
+
color: #333;
|
458
|
+
line-height: 1.4;
|
459
|
+
margin-bottom: 3px;
|
460
|
+
white-space: nowrap;
|
461
|
+
overflow: hidden;
|
462
|
+
text-overflow: ellipsis;
|
463
|
+
}
|
464
|
+
|
465
|
+
.application-menu__app--list .app-description {
|
466
|
+
font-size: 12px;
|
467
|
+
color: #666;
|
468
|
+
line-height: 1.3;
|
469
|
+
opacity: 0.9;
|
470
|
+
white-space: nowrap;
|
471
|
+
overflow: hidden;
|
472
|
+
text-overflow: ellipsis;
|
473
|
+
}
|
474
|
+
|
475
|
+
.application-menu__app--list:hover .app-name {
|
476
|
+
color: #1976d2;
|
477
|
+
}
|
478
|
+
|
479
|
+
.application-menu__app--list:hover .app-description {
|
480
|
+
color: #1565c0;
|
481
|
+
opacity: 1;
|
482
|
+
}
|
483
|
+
|
484
|
+
/* Legacy support for old class names */
|
248
485
|
.application-menu__app {
|
249
486
|
display: flex;
|
250
487
|
flex-direction: column;
|
251
488
|
align-items: center;
|
252
|
-
padding:
|
253
|
-
border-radius:
|
489
|
+
padding: 12px 8px;
|
490
|
+
border-radius: 8px;
|
254
491
|
cursor: pointer;
|
255
|
-
transition: all 0.
|
492
|
+
transition: all 0.15s ease;
|
256
493
|
text-align: center;
|
257
494
|
background: #ffffff;
|
258
495
|
border: 1px solid transparent;
|
@@ -261,22 +498,23 @@
|
|
261
498
|
.application-menu__app:hover {
|
262
499
|
background: #f8f9fa;
|
263
500
|
border-color: #e0e0e0;
|
264
|
-
transform: translateY(-
|
265
|
-
box-shadow: 0
|
501
|
+
transform: translateY(-1px);
|
502
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
266
503
|
}
|
267
504
|
|
268
505
|
.app-icon {
|
269
|
-
font-size:
|
270
|
-
margin-bottom:
|
506
|
+
font-size: 36px;
|
507
|
+
margin-bottom: 6px;
|
271
508
|
line-height: 1;
|
272
509
|
}
|
273
510
|
|
274
511
|
.app-name {
|
275
|
-
font-size:
|
512
|
+
font-size: 12px;
|
276
513
|
font-weight: 500;
|
277
514
|
color: #333;
|
278
515
|
line-height: 1.2;
|
279
516
|
word-break: break-word;
|
517
|
+
max-width: 100%;
|
280
518
|
}
|
281
519
|
|
282
520
|
/* No Results */
|
@@ -307,16 +545,17 @@
|
|
307
545
|
}
|
308
546
|
|
309
547
|
.application-menu__main {
|
310
|
-
grid-template-columns:
|
548
|
+
grid-template-columns: 50px 1fr;
|
311
549
|
}
|
312
550
|
|
313
551
|
.application-menu__category {
|
314
|
-
padding:
|
552
|
+
padding: 8px;
|
315
553
|
font-size: 13px;
|
554
|
+
height: 40px;
|
316
555
|
}
|
317
556
|
|
318
557
|
.category-icon {
|
319
|
-
font-size:
|
558
|
+
font-size: 18px;
|
320
559
|
}
|
321
560
|
|
322
561
|
.application-menu__apps-grid {
|
@@ -13,6 +13,8 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
13
13
|
const [selectedCategory, setSelectedCategory] = useState('all')
|
14
14
|
const [apps, setApps] = useState([])
|
15
15
|
const [categories, setCategories] = useState([])
|
16
|
+
const [viewMode, setViewMode] = useState('list') // 'grid' or 'list'
|
17
|
+
const [isCondensed, setIsCondensed] = useState(true) // 'normal' or 'condensed'
|
16
18
|
const searchInputRef = useRef(null)
|
17
19
|
const { createWindow } = useWindows()
|
18
20
|
|
@@ -109,17 +111,39 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
109
111
|
|
110
112
|
return (
|
111
113
|
<div className="application-menu-overlay" onClick={onClose}>
|
112
|
-
<div className=
|
114
|
+
<div className={`application-menu ${isCondensed ? 'application-menu--condensed' : ''}`} onClick={(e) => e.stopPropagation()}>
|
113
115
|
{/* Header */}
|
114
116
|
<div className="application-menu__header">
|
115
|
-
<
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
117
|
+
<div className="application-menu__header-controls">
|
118
|
+
<button
|
119
|
+
className={`application-menu__view-toggle ${isCondensed ? 'active' : ''}`}
|
120
|
+
onClick={() => setIsCondensed(!isCondensed)}
|
121
|
+
title={isCondensed ? "Normal view" : "Condensed view"}
|
122
|
+
>
|
123
|
+
⚏
|
124
|
+
</button>
|
125
|
+
<button
|
126
|
+
className={`application-menu__view-toggle ${viewMode === 'grid' ? 'active' : ''}`}
|
127
|
+
onClick={() => setViewMode('grid')}
|
128
|
+
title="Grid view"
|
129
|
+
>
|
130
|
+
⊞
|
131
|
+
</button>
|
132
|
+
<button
|
133
|
+
className={`application-menu__view-toggle ${viewMode === 'list' ? 'active' : ''}`}
|
134
|
+
onClick={() => setViewMode('list')}
|
135
|
+
title="List view"
|
136
|
+
>
|
137
|
+
☰
|
138
|
+
</button>
|
139
|
+
<button
|
140
|
+
className="application-menu__close"
|
141
|
+
onClick={onClose}
|
142
|
+
title="Close menu"
|
143
|
+
>
|
144
|
+
×
|
145
|
+
</button>
|
146
|
+
</div>
|
123
147
|
</div>
|
124
148
|
|
125
149
|
{/* Search */}
|
@@ -142,6 +166,7 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
142
166
|
<button
|
143
167
|
className={`application-menu__category ${selectedCategory === 'all' ? 'active' : ''}`}
|
144
168
|
onClick={() => handleCategorySelect('all')}
|
169
|
+
title="All Apps"
|
145
170
|
>
|
146
171
|
<span className="category-icon">📱</span>
|
147
172
|
<span className="category-name">All Apps</span>
|
@@ -151,6 +176,7 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
151
176
|
key={category.id}
|
152
177
|
className={`application-menu__category ${selectedCategory === category.id ? 'active' : ''}`}
|
153
178
|
onClick={() => handleCategorySelect(category.id)}
|
179
|
+
title={category.name}
|
154
180
|
>
|
155
181
|
<span className="category-icon">{category.icon}</span>
|
156
182
|
<span className="category-name">{category.name}</span>
|
@@ -164,16 +190,23 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
164
190
|
{searchTerm && (
|
165
191
|
<div className="application-menu__search-results">
|
166
192
|
<h3>Search Results ({filteredApps.length})</h3>
|
167
|
-
<div className=
|
193
|
+
<div className={`application-menu__apps-${viewMode}`}>
|
168
194
|
{filteredApps.map(app => (
|
169
195
|
<div
|
170
196
|
key={app.id}
|
171
|
-
className=
|
197
|
+
className={`application-menu__app--${viewMode}`}
|
172
198
|
onClick={() => handleLaunchApp(app)}
|
173
199
|
title={app.description}
|
174
200
|
>
|
175
201
|
<div className="app-icon">{app.icon}</div>
|
176
|
-
|
202
|
+
{viewMode === 'list' ? (
|
203
|
+
<div className="app-info">
|
204
|
+
<div className="app-name">{app.name}</div>
|
205
|
+
<div className="app-description">{app.description}</div>
|
206
|
+
</div>
|
207
|
+
) : (
|
208
|
+
<div className="app-name">{app.name}</div>
|
209
|
+
)}
|
177
210
|
</div>
|
178
211
|
))}
|
179
212
|
</div>
|
@@ -185,16 +218,23 @@ export const ApplicationMenu = ({ isOpen, onClose }) => {
|
|
185
218
|
{Object.entries(groupedApps).map(([categoryName, categoryApps]) => (
|
186
219
|
<div key={categoryName} className="application-menu__category-section">
|
187
220
|
<h3 className="category-title">{categoryName}</h3>
|
188
|
-
<div className=
|
221
|
+
<div className={`application-menu__apps-${viewMode}`}>
|
189
222
|
{categoryApps.map(app => (
|
190
223
|
<div
|
191
224
|
key={app.id}
|
192
|
-
className=
|
225
|
+
className={`application-menu__app--${viewMode}`}
|
193
226
|
onClick={() => handleLaunchApp(app)}
|
194
227
|
title={app.description}
|
195
228
|
>
|
196
229
|
<div className="app-icon">{app.icon}</div>
|
197
|
-
|
230
|
+
{viewMode === 'list' ? (
|
231
|
+
<div className="app-info">
|
232
|
+
<div className="app-name">{app.name}</div>
|
233
|
+
<div className="app-description">{app.description}</div>
|
234
|
+
</div>
|
235
|
+
) : (
|
236
|
+
<div className="app-name">{app.name}</div>
|
237
|
+
)}
|
198
238
|
</div>
|
199
239
|
))}
|
200
240
|
</div>
|