feat: enhance canvas functionality with scissors mode and node template updates

- Implemented visual feedback and cursor changes for scissors mode in dark and light themes, improving user interaction during edge manipulation.
- Updated node template picker to include new keywords for AI image generation, enhancing searchability.
- Renamed and categorized node types for clarity, including updates to asset and prompt nodes.
- Added support for video nodes and adjusted related components for improved media handling on the canvas.
This commit is contained in:
Matthias
2026-03-28 21:11:52 +01:00
parent 02f36fdc7b
commit cbfa14a40b
18 changed files with 1329 additions and 24 deletions

View File

@@ -203,12 +203,54 @@
stroke: rgba(189, 195, 199, 0.35);
}
/* Scherenmodus: Scheren-Cursor (Teal, Fallback crosshair) */
.react-flow.canvas-scissors-mode .react-flow__pane,
.react-flow.canvas-scissors-mode .react-flow__edge-interaction {
cursor:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230d9488' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='6' r='3'/%3E%3Ccircle cx='6' cy='18' r='3'/%3E%3Cpath d='M20 4 8.12 15.88M14.47 14.48 20 20M8.12 8.12 12 12'/%3E%3C/svg%3E")
12 12,
crosshair;
/*
* Scherenmodus: Lucide „scissors-line-dashed“, 90° gegen Uhrzeigersinn (in SVG).
* Dunkles Flow: helle Outline + heller Glow · helles Flow: dunkle Outline + dunkler Glow.
*/
.react-flow.dark.canvas-scissors-mode .react-flow__pane,
.react-flow.dark.canvas-scissors-mode .react-flow__edge-interaction {
cursor: url("/cursors/scissors-cursor-dark-canvas.svg") 12 12, crosshair;
}
.react-flow:not(.dark).canvas-scissors-mode .react-flow__pane,
.react-flow:not(.dark).canvas-scissors-mode .react-flow__edge-interaction {
cursor: url("/cursors/scissors-cursor-light-canvas.svg") 12 12, crosshair;
}
/* Scherenmodus: Hover auf Verbindung = Aufleuchten (Farben wie Scheren-Cursor) */
.react-flow.dark.canvas-scissors-mode .react-flow__edge:not(.temp) .react-flow__edge-path {
transition:
stroke 0.12s ease,
filter 0.12s ease;
}
.react-flow.dark.canvas-scissors-mode
.react-flow__edge:not(.temp):hover
.react-flow__edge-path {
stroke: #ffffff !important;
filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.9))
drop-shadow(0 0 10px rgba(255, 255, 255, 0.5));
}
.react-flow:not(.dark).canvas-scissors-mode
.react-flow__edge:not(.temp)
.react-flow__edge-path {
transition:
stroke 0.12s ease,
filter 0.12s ease;
}
.react-flow:not(.dark).canvas-scissors-mode
.react-flow__edge:not(.temp):hover
.react-flow__edge-path {
stroke: #27272a !important;
filter: drop-shadow(0 0 2px rgba(39, 39, 42, 0.75))
drop-shadow(0 0 9px rgba(39, 39, 42, 0.4));
}
@media (prefers-reduced-motion: reduce) {
.react-flow.canvas-scissors-mode .react-flow__edge:not(.temp) .react-flow__edge-path {
transition: none;
}
}
}