@dickpy/dsh-imagegen 1.5.9 → 1.5.10
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/lib/client.js +1319 -804
- package/lib/client.js.map +1 -1
- package/lib/index.js +1 -1
- package/package.json +82 -82
- package/src/client/CanvasBackgrounds.tsx +1 -19
- package/src/client/CanvasWorkspace.tsx +141 -53
- package/src/client/GooeyNav.module.css +224 -0
- package/src/client/GooeyNav.tsx +185 -0
- package/src/client/ImageGenPanel.tsx +203 -100
- package/src/client/canvas-workspace.module.css +63 -24
- package/src/client/locales.ts +1578 -1542
- package/src/client/panel.module.css +86 -11
- package/src/client/surface-theme.ts +20 -0
- package/src/protocol.ts +583 -580
|
@@ -449,43 +449,79 @@
|
|
|
449
449
|
|
|
450
450
|
/* --------------------------------------------------- bottom dock */
|
|
451
451
|
|
|
452
|
-
.dock
|
|
452
|
+
/* reactbits.dev "Dock" port: dark pill panel; a spring engine (see the dock
|
|
453
|
+
* effect in CanvasWorkspace) scales each tile by pointer distance so items
|
|
454
|
+
* part apart like the macOS dock, and the outer wrapper breathes taller on
|
|
455
|
+
* hover to make room for the floating labels. */
|
|
456
|
+
.dockOuter {
|
|
453
457
|
position: absolute;
|
|
454
|
-
left:
|
|
458
|
+
left: 0;
|
|
459
|
+
right: 0;
|
|
455
460
|
bottom: 14px;
|
|
456
|
-
transform: translateX(-50%);
|
|
457
461
|
z-index: 30;
|
|
458
462
|
display: flex;
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
+
justify-content: center;
|
|
464
|
+
align-items: flex-end;
|
|
465
|
+
height: 42px;
|
|
466
|
+
pointer-events: none;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.dock {
|
|
470
|
+
pointer-events: auto;
|
|
471
|
+
position: relative;
|
|
472
|
+
display: flex;
|
|
473
|
+
align-items: flex-end;
|
|
474
|
+
gap: 6px;
|
|
475
|
+
padding: 0 7px 7px;
|
|
476
|
+
border-radius: 15px;
|
|
463
477
|
border: 1px solid var(--dsw-alias-border-l1);
|
|
464
478
|
background: color-mix(in srgb, var(--dsw-alias-bg-layer-1) 92%, transparent);
|
|
465
|
-
box-shadow: 0 10px 30px rgb(15 23 42 / 14%);
|
|
466
479
|
backdrop-filter: blur(10px);
|
|
480
|
+
box-shadow: 0 14px 34px rgb(15 23 42 / 16%);
|
|
467
481
|
}
|
|
468
482
|
|
|
469
|
-
|
|
470
|
-
* falloff into --dock-scale / --dock-lift, so the hovered icon swells and lifts
|
|
471
|
-
* while neighbours rise and fall like a zipper as the pointer slides across. */
|
|
472
|
-
.dock .iconButton {
|
|
483
|
+
.dockItem {
|
|
473
484
|
position: relative;
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
485
|
+
display: inline-flex;
|
|
486
|
+
align-items: center;
|
|
487
|
+
justify-content: center;
|
|
488
|
+
width: 34px;
|
|
489
|
+
height: 34px;
|
|
490
|
+
border-radius: 10px;
|
|
491
|
+
cursor: pointer;
|
|
480
492
|
}
|
|
481
493
|
|
|
482
|
-
.
|
|
483
|
-
|
|
484
|
-
|
|
494
|
+
.dockItem:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
495
|
+
|
|
496
|
+
.dockItem::after {
|
|
497
|
+
content: attr(data-label);
|
|
498
|
+
position: absolute;
|
|
499
|
+
top: -26px;
|
|
500
|
+
left: 50%;
|
|
501
|
+
transform: translateX(-50%);
|
|
502
|
+
padding: 2px 8px;
|
|
503
|
+
border-radius: 6px;
|
|
504
|
+
border: 1px solid var(--dsw-alias-border-l1);
|
|
505
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
506
|
+
color: var(--dsw-alias-label-primary);
|
|
507
|
+
font-size: 11px;
|
|
508
|
+
line-height: 16px;
|
|
509
|
+
white-space: nowrap;
|
|
510
|
+
opacity: 0;
|
|
511
|
+
transition: opacity 0.15s ease;
|
|
512
|
+
pointer-events: none;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.dockItem:hover::after { opacity: 1; }
|
|
516
|
+
|
|
517
|
+
.dock .iconButton {
|
|
518
|
+
width: 100%;
|
|
519
|
+
height: 100%;
|
|
520
|
+
border-radius: 10px;
|
|
485
521
|
}
|
|
486
522
|
|
|
487
|
-
.dock .iconButton:not(:disabled):
|
|
488
|
-
|
|
523
|
+
.dock .iconButton:not(:disabled):hover {
|
|
524
|
+
background: transparent;
|
|
489
525
|
}
|
|
490
526
|
|
|
491
527
|
.dock .iconButton[data-active] {
|
|
@@ -495,10 +531,13 @@
|
|
|
495
531
|
|
|
496
532
|
.dock .iconButton[data-active]:hover { background: var(--dsw-alias-label-primary); color: var(--dsw-alias-bg-layer-1); }
|
|
497
533
|
|
|
534
|
+
.dock .iconButton:disabled { opacity: 0.3; cursor: not-allowed; }
|
|
535
|
+
.dock .iconButton:disabled:hover { background: transparent; color: var(--dsw-alias-label-secondary); }
|
|
536
|
+
|
|
498
537
|
.dockDivider {
|
|
538
|
+
align-self: center;
|
|
499
539
|
width: 1px;
|
|
500
540
|
height: 18px;
|
|
501
|
-
margin: 0 4px;
|
|
502
541
|
background: var(--dsw-alias-border-l1);
|
|
503
542
|
}
|
|
504
543
|
|