ywana-core8 0.2.19 → 0.2.21
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 +2833 -714
- package/dist/index.js +433 -111
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +433 -111
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +433 -111
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/desktop/Desktop.stories.jsx +424 -11
- package/src/desktop/{ApplicationMenu.css → LaunchPad.css} +82 -107
- package/src/desktop/{ApplicationMenu.js → LaunchPad.js} +30 -30
- package/src/desktop/WindowContext.js +2 -0
- package/src/desktop/WindowManager.js +54 -0
- package/src/desktop/{desktop-linux.css → desktop-gnome.css} +64 -46
- package/src/desktop/desktop-macintosh.css +330 -0
- package/src/desktop/desktop-macos.css +60 -18
- package/src/desktop/desktop-msx.css +337 -0
- package/src/desktop/desktop-nextstep.css +315 -0
- package/src/desktop/desktop-windows.css +39 -21
- package/src/desktop/desktop-windows98.css +284 -0
- package/src/desktop/desktop-windowsxp.css +294 -0
- package/src/desktop/desktop.css +428 -1
- package/src/desktop/desktop.js +393 -69
- package/src/desktop/index.js +2 -2
- package/src/html/Menu.stories.jsx +504 -0
- package/src/html/menu.css +85 -6
- package/src/html/menu.js +40 -16
package/src/desktop/desktop.css
CHANGED
@@ -45,7 +45,11 @@
|
|
45
45
|
}
|
46
46
|
|
47
47
|
.desktop-taskbar {
|
48
|
-
|
48
|
+
position: relative;
|
49
|
+
z-index: 10000; /* Above everything: workspace (1), windows (100-9999), overlays (9000-9999) */
|
50
|
+
background: rgba(0, 0, 0, 0.8); /* Default dark background */
|
51
|
+
backdrop-filter: blur(10px);
|
52
|
+
|
49
53
|
& .icon {
|
50
54
|
color: white;
|
51
55
|
& :hover {
|
@@ -53,6 +57,45 @@
|
|
53
57
|
background-color: rgba(255, 255, 255, 0.1);
|
54
58
|
}
|
55
59
|
}
|
60
|
+
|
61
|
+
/* Ensure menu inside taskbar appears above everything */
|
62
|
+
& .menu-icon > menu {
|
63
|
+
z-index: 10001; /* Above taskbar itself */
|
64
|
+
/* Dark theme for taskbar menus */
|
65
|
+
background-color: rgba(40, 40, 40, 0.98);
|
66
|
+
backdrop-filter: blur(10px);
|
67
|
+
border-color: rgba(255, 255, 255, 0.15);
|
68
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
|
69
|
+
}
|
70
|
+
|
71
|
+
/* Menu items styling for dark theme */
|
72
|
+
& .menu-icon > menu .menu-item > label {
|
73
|
+
color: rgba(255, 255, 255, 0.95);
|
74
|
+
}
|
75
|
+
|
76
|
+
& .menu-icon > menu .menu-item > .icon {
|
77
|
+
color: rgba(255, 255, 255, 0.85);
|
78
|
+
}
|
79
|
+
|
80
|
+
& .menu-icon > menu .menu-item > .meta {
|
81
|
+
color: rgba(255, 255, 255, 0.6);
|
82
|
+
}
|
83
|
+
|
84
|
+
/* Hover state for menu items */
|
85
|
+
& .menu-icon > menu li:hover {
|
86
|
+
background-color: rgba(255, 255, 255, 0.15);
|
87
|
+
}
|
88
|
+
|
89
|
+
/* Disabled items */
|
90
|
+
& .menu-icon > menu .menu-item.disabled > label,
|
91
|
+
& .menu-icon > menu .menu-item.disabled > .icon {
|
92
|
+
color: rgba(255, 255, 255, 0.3);
|
93
|
+
}
|
94
|
+
|
95
|
+
/* Separator */
|
96
|
+
& .menu-icon > menu .menu-separator {
|
97
|
+
border-top-color: rgba(255, 255, 255, 0.15);
|
98
|
+
}
|
56
99
|
}
|
57
100
|
|
58
101
|
|
@@ -73,15 +116,399 @@
|
|
73
116
|
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
74
117
|
}
|
75
118
|
|
119
|
+
/* ============================================
|
120
|
+
DESKTOP OVERLAY SYSTEM
|
121
|
+
Z-INDEX LAYERS:
|
122
|
+
- Workspace: 1
|
123
|
+
- Windows: 100-9999
|
124
|
+
- Desktop Overlays: 9000-9999
|
125
|
+
- Taskbar: 10000
|
126
|
+
- Taskbar Menus: 10001
|
127
|
+
============================================ */
|
128
|
+
|
129
|
+
/* Desktop Overlay Layer Container */
|
130
|
+
/* Note: Positioned within workspace-container to not cover taskbar */
|
131
|
+
.desktop-overlay-layer {
|
132
|
+
position: absolute;
|
133
|
+
top: 0;
|
134
|
+
left: 0;
|
135
|
+
right: 0;
|
136
|
+
bottom: 0;
|
137
|
+
pointer-events: none; /* Allow clicks through when no overlays */
|
138
|
+
z-index: 9000; /* Above windows (100-9999) but below taskbar (10000) */
|
139
|
+
}
|
140
|
+
|
141
|
+
/* Individual Desktop Overlay */
|
142
|
+
.desktop-overlay {
|
143
|
+
position: absolute;
|
144
|
+
top: 0;
|
145
|
+
left: 0;
|
146
|
+
right: 0;
|
147
|
+
bottom: 0;
|
148
|
+
pointer-events: auto;
|
149
|
+
display: flex;
|
150
|
+
}
|
151
|
+
|
152
|
+
/* Backdrop */
|
153
|
+
.desktop-overlay--backdrop {
|
154
|
+
background: rgba(0, 0, 0, 0.16);
|
155
|
+
}
|
156
|
+
|
157
|
+
/* Backdrop with blur */
|
158
|
+
.desktop-overlay--blur {
|
159
|
+
backdrop-filter: blur(1px);
|
160
|
+
}
|
161
|
+
|
162
|
+
/* Overlay content container */
|
163
|
+
.desktop-overlay__content {
|
164
|
+
position: relative;
|
165
|
+
max-width: 100%;
|
166
|
+
max-height: 100%;
|
167
|
+
}
|
168
|
+
|
169
|
+
/* ============================================
|
170
|
+
POSITION VARIANTS
|
171
|
+
============================================ */
|
172
|
+
|
173
|
+
.desktop-overlay--position-center {
|
174
|
+
align-items: center;
|
175
|
+
justify-content: center;
|
176
|
+
}
|
177
|
+
|
178
|
+
.desktop-overlay--position-top {
|
179
|
+
align-items: flex-start;
|
180
|
+
justify-content: center;
|
181
|
+
}
|
182
|
+
|
183
|
+
.desktop-overlay--position-bottom {
|
184
|
+
align-items: flex-end;
|
185
|
+
justify-content: center;
|
186
|
+
}
|
187
|
+
|
188
|
+
.desktop-overlay--position-left {
|
189
|
+
align-items: center;
|
190
|
+
justify-content: flex-start;
|
191
|
+
}
|
192
|
+
|
193
|
+
.desktop-overlay--position-right {
|
194
|
+
align-items: center;
|
195
|
+
justify-content: flex-end;
|
196
|
+
}
|
197
|
+
|
198
|
+
.desktop-overlay--position-top-left {
|
199
|
+
align-items: flex-start;
|
200
|
+
justify-content: flex-start;
|
201
|
+
}
|
202
|
+
|
203
|
+
.desktop-overlay--position-top-right {
|
204
|
+
align-items: flex-start;
|
205
|
+
justify-content: flex-end;
|
206
|
+
}
|
207
|
+
|
208
|
+
.desktop-overlay--position-bottom-left {
|
209
|
+
align-items: flex-end;
|
210
|
+
justify-content: flex-start;
|
211
|
+
}
|
212
|
+
|
213
|
+
.desktop-overlay--position-bottom-right {
|
214
|
+
align-items: flex-end;
|
215
|
+
justify-content: flex-end;
|
216
|
+
}
|
217
|
+
|
218
|
+
.desktop-overlay--position-custom {
|
219
|
+
align-items: flex-start;
|
220
|
+
justify-content: flex-start;
|
221
|
+
}
|
222
|
+
|
223
|
+
/* ============================================
|
224
|
+
SIZE VARIANTS
|
225
|
+
============================================ */
|
226
|
+
|
227
|
+
.desktop-overlay--size-auto .desktop-overlay__content {
|
228
|
+
width: auto;
|
229
|
+
height: auto;
|
230
|
+
}
|
231
|
+
|
232
|
+
.desktop-overlay--size-full .desktop-overlay__content {
|
233
|
+
width: 100%;
|
234
|
+
height: 100%;
|
235
|
+
}
|
236
|
+
|
237
|
+
.desktop-overlay--size-large .desktop-overlay__content {
|
238
|
+
width: 80%;
|
239
|
+
height: 80%;
|
240
|
+
max-width: 1200px;
|
241
|
+
max-height: 800px;
|
242
|
+
}
|
243
|
+
|
244
|
+
.desktop-overlay--size-medium .desktop-overlay__content {
|
245
|
+
width: 60%;
|
246
|
+
height: 60%;
|
247
|
+
max-width: 800px;
|
248
|
+
max-height: 600px;
|
249
|
+
}
|
250
|
+
|
251
|
+
.desktop-overlay--size-small .desktop-overlay__content {
|
252
|
+
width: 40%;
|
253
|
+
height: 40%;
|
254
|
+
max-width: 500px;
|
255
|
+
max-height: 400px;
|
256
|
+
}
|
257
|
+
|
258
|
+
.desktop-overlay--size-custom .desktop-overlay__content {
|
259
|
+
/* Custom size set via inline styles */
|
260
|
+
}
|
261
|
+
|
262
|
+
/* ============================================
|
263
|
+
ANIMATIONS - ENTER
|
264
|
+
============================================ */
|
265
|
+
|
266
|
+
/* Fade */
|
267
|
+
.desktop-overlay--enter-fade {
|
268
|
+
animation: desktopOverlayFadeIn var(--animation-duration, 300ms) ease-out;
|
269
|
+
}
|
270
|
+
|
271
|
+
@keyframes desktopOverlayFadeIn {
|
272
|
+
from {
|
273
|
+
opacity: 0;
|
274
|
+
}
|
275
|
+
to {
|
276
|
+
opacity: 1;
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
/* Slide Up */
|
281
|
+
.desktop-overlay--enter-slide-up .desktop-overlay__content {
|
282
|
+
animation: desktopOverlaySlideUp var(--animation-duration, 300ms) ease-out;
|
283
|
+
}
|
284
|
+
|
285
|
+
@keyframes desktopOverlaySlideUp {
|
286
|
+
from {
|
287
|
+
transform: translateY(100%);
|
288
|
+
opacity: 0;
|
289
|
+
}
|
290
|
+
to {
|
291
|
+
transform: translateY(0);
|
292
|
+
opacity: 1;
|
293
|
+
}
|
294
|
+
}
|
295
|
+
|
296
|
+
/* Slide Down */
|
297
|
+
.desktop-overlay--enter-slide-down .desktop-overlay__content {
|
298
|
+
animation: desktopOverlaySlideDown var(--animation-duration, 300ms) ease-out;
|
299
|
+
}
|
300
|
+
|
301
|
+
@keyframes desktopOverlaySlideDown {
|
302
|
+
from {
|
303
|
+
transform: translateY(-100%);
|
304
|
+
opacity: 0;
|
305
|
+
}
|
306
|
+
to {
|
307
|
+
transform: translateY(0);
|
308
|
+
opacity: 1;
|
309
|
+
}
|
310
|
+
}
|
311
|
+
|
312
|
+
/* Slide Left */
|
313
|
+
.desktop-overlay--enter-slide-left .desktop-overlay__content {
|
314
|
+
animation: desktopOverlaySlideLeft var(--animation-duration, 300ms) ease-out;
|
315
|
+
}
|
316
|
+
|
317
|
+
@keyframes desktopOverlaySlideLeft {
|
318
|
+
from {
|
319
|
+
transform: translateX(100%);
|
320
|
+
opacity: 0;
|
321
|
+
}
|
322
|
+
to {
|
323
|
+
transform: translateX(0);
|
324
|
+
opacity: 1;
|
325
|
+
}
|
326
|
+
}
|
327
|
+
|
328
|
+
/* Slide Right */
|
329
|
+
.desktop-overlay--enter-slide-right .desktop-overlay__content {
|
330
|
+
animation: desktopOverlaySlideRight var(--animation-duration, 300ms) ease-out;
|
331
|
+
}
|
332
|
+
|
333
|
+
@keyframes desktopOverlaySlideRight {
|
334
|
+
from {
|
335
|
+
transform: translateX(-100%);
|
336
|
+
opacity: 0;
|
337
|
+
}
|
338
|
+
to {
|
339
|
+
transform: translateX(0);
|
340
|
+
opacity: 1;
|
341
|
+
}
|
342
|
+
}
|
343
|
+
|
344
|
+
/* Scale */
|
345
|
+
.desktop-overlay--enter-scale .desktop-overlay__content {
|
346
|
+
animation: desktopOverlayScaleIn var(--animation-duration, 300ms) ease-out;
|
347
|
+
}
|
348
|
+
|
349
|
+
@keyframes desktopOverlayScaleIn {
|
350
|
+
from {
|
351
|
+
transform: scale(0.8);
|
352
|
+
opacity: 0;
|
353
|
+
}
|
354
|
+
to {
|
355
|
+
transform: scale(1);
|
356
|
+
opacity: 1;
|
357
|
+
}
|
358
|
+
}
|
359
|
+
|
360
|
+
/* None */
|
361
|
+
.desktop-overlay--enter-none {
|
362
|
+
/* No animation */
|
363
|
+
}
|
364
|
+
|
365
|
+
/* ============================================
|
366
|
+
ANIMATIONS - EXIT
|
367
|
+
============================================ */
|
368
|
+
|
369
|
+
/* Fade */
|
370
|
+
.desktop-overlay--exit-fade {
|
371
|
+
animation: desktopOverlayFadeOut var(--animation-duration, 300ms) ease-in;
|
372
|
+
}
|
373
|
+
|
374
|
+
@keyframes desktopOverlayFadeOut {
|
375
|
+
from {
|
376
|
+
opacity: 1;
|
377
|
+
}
|
378
|
+
to {
|
379
|
+
opacity: 0;
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
/* Slide Up */
|
384
|
+
.desktop-overlay--exit-slide-up .desktop-overlay__content {
|
385
|
+
animation: desktopOverlaySlideUpExit var(--animation-duration, 300ms) ease-in;
|
386
|
+
}
|
387
|
+
|
388
|
+
@keyframes desktopOverlaySlideUpExit {
|
389
|
+
from {
|
390
|
+
transform: translateY(0);
|
391
|
+
opacity: 1;
|
392
|
+
}
|
393
|
+
to {
|
394
|
+
transform: translateY(-100%);
|
395
|
+
opacity: 0;
|
396
|
+
}
|
397
|
+
}
|
398
|
+
|
399
|
+
/* Slide Down */
|
400
|
+
.desktop-overlay--exit-slide-down .desktop-overlay__content {
|
401
|
+
animation: desktopOverlaySlideDownExit var(--animation-duration, 300ms) ease-in;
|
402
|
+
}
|
403
|
+
|
404
|
+
@keyframes desktopOverlaySlideDownExit {
|
405
|
+
from {
|
406
|
+
transform: translateY(0);
|
407
|
+
opacity: 1;
|
408
|
+
}
|
409
|
+
to {
|
410
|
+
transform: translateY(100%);
|
411
|
+
opacity: 0;
|
412
|
+
}
|
413
|
+
}
|
414
|
+
|
415
|
+
/* Slide Left */
|
416
|
+
.desktop-overlay--exit-slide-left .desktop-overlay__content {
|
417
|
+
animation: desktopOverlaySlideLeftExit var(--animation-duration, 300ms) ease-in;
|
418
|
+
}
|
419
|
+
|
420
|
+
@keyframes desktopOverlaySlideLeftExit {
|
421
|
+
from {
|
422
|
+
transform: translateX(0);
|
423
|
+
opacity: 1;
|
424
|
+
}
|
425
|
+
to {
|
426
|
+
transform: translateX(-100%);
|
427
|
+
opacity: 0;
|
428
|
+
}
|
429
|
+
}
|
430
|
+
|
431
|
+
/* Slide Right */
|
432
|
+
.desktop-overlay--exit-slide-right .desktop-overlay__content {
|
433
|
+
animation: desktopOverlaySlideRightExit var(--animation-duration, 300ms) ease-in;
|
434
|
+
}
|
435
|
+
|
436
|
+
@keyframes desktopOverlaySlideRightExit {
|
437
|
+
from {
|
438
|
+
transform: translateX(0);
|
439
|
+
opacity: 1;
|
440
|
+
}
|
441
|
+
to {
|
442
|
+
transform: translateX(100%);
|
443
|
+
opacity: 0;
|
444
|
+
}
|
445
|
+
}
|
446
|
+
|
447
|
+
/* Scale */
|
448
|
+
.desktop-overlay--exit-scale .desktop-overlay__content {
|
449
|
+
animation: desktopOverlayScaleOut var(--animation-duration, 300ms) ease-in;
|
450
|
+
}
|
451
|
+
|
452
|
+
@keyframes desktopOverlayScaleOut {
|
453
|
+
from {
|
454
|
+
transform: scale(1);
|
455
|
+
opacity: 1;
|
456
|
+
}
|
457
|
+
to {
|
458
|
+
transform: scale(0.8);
|
459
|
+
opacity: 0;
|
460
|
+
}
|
461
|
+
}
|
462
|
+
|
463
|
+
/* None */
|
464
|
+
.desktop-overlay--exit-none {
|
465
|
+
/* No animation */
|
466
|
+
}
|
467
|
+
|
468
|
+
/* ============================================
|
469
|
+
LAUNCHPAD SPECIFIC OVERLAY
|
470
|
+
============================================ */
|
471
|
+
|
472
|
+
.desktop-overlay--launchpad {
|
473
|
+
align-items: flex-end;
|
474
|
+
justify-content: flex-start;
|
475
|
+
}
|
476
|
+
|
477
|
+
.desktop-overlay__content--launchpad {
|
478
|
+
padding: 0 0 0 15px;
|
479
|
+
}
|
480
|
+
|
76
481
|
/* Responsive design */
|
77
482
|
@media (max-width: 768px) {
|
78
483
|
.desktop {
|
79
484
|
font-size: 14px;
|
80
485
|
}
|
486
|
+
|
487
|
+
.desktop-overlay--size-large .desktop-overlay__content {
|
488
|
+
width: 90%;
|
489
|
+
height: 90%;
|
490
|
+
}
|
491
|
+
|
492
|
+
.desktop-overlay--size-medium .desktop-overlay__content {
|
493
|
+
width: 80%;
|
494
|
+
height: 80%;
|
495
|
+
}
|
496
|
+
|
497
|
+
.desktop-overlay--size-small .desktop-overlay__content {
|
498
|
+
width: 70%;
|
499
|
+
height: 70%;
|
500
|
+
}
|
81
501
|
}
|
82
502
|
|
83
503
|
@media (max-width: 480px) {
|
84
504
|
.desktop {
|
85
505
|
font-size: 12px;
|
86
506
|
}
|
507
|
+
|
508
|
+
.desktop-overlay--size-large .desktop-overlay__content,
|
509
|
+
.desktop-overlay--size-medium .desktop-overlay__content,
|
510
|
+
.desktop-overlay--size-small .desktop-overlay__content {
|
511
|
+
width: 95%;
|
512
|
+
height: 95%;
|
513
|
+
}
|
87
514
|
}
|