diff --git a/frontend/app/components/workspace/calendar/lab/CrmCalendarZoomCanvasLab.vue b/frontend/app/components/workspace/calendar/lab/CrmCalendarZoomCanvasLab.vue index 330474b..92e944d 100644 --- a/frontend/app/components/workspace/calendar/lab/CrmCalendarZoomCanvasLab.vue +++ b/frontend/app/components/workspace/calendar/lab/CrmCalendarZoomCanvasLab.vue @@ -1,5 +1,5 @@ @@ -524,21 +497,19 @@ onBeforeUnmount(() => {
- -
+ +
+ > + {{ rect.label }} +
- +
+ {{ flyLabel }} +
+ + +
@@ -629,34 +612,62 @@ onBeforeUnmount(() => { overflow: hidden; } -.canvas-lab-scene { +.canvas-grid-layer { position: absolute; - width: 1400px; - height: 900px; - will-change: transform; + inset: 0; } -/* Outline rects — just borders, no content */ -.canvas-outline-rect { +.canvas-cell { position: absolute; border-radius: 12px; - border: 1px solid color-mix(in oklab, var(--color-base-content) 22%, transparent); - background: color-mix(in oklab, var(--color-base-200) 40%, transparent); - transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease; + border: 1px solid color-mix(in oklab, var(--color-base-content) 20%, transparent); + background: color-mix(in oklab, var(--color-base-200) 50%, transparent); + transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; } -.canvas-outline-rect:hover { - border-color: color-mix(in oklab, var(--color-primary) 60%, transparent); - box-shadow: 0 0 0 2px color-mix(in oklab, var(--color-primary) 24%, transparent) inset; +.canvas-cell:hover { + border-color: color-mix(in oklab, var(--color-primary) 55%, transparent); + box-shadow: 0 0 0 2px color-mix(in oklab, var(--color-primary) 20%, transparent) inset; } -.canvas-outline-prime { - transform: scale(1.04); +.canvas-cell-prime { + transform: scale(1.03); border-color: color-mix(in oklab, var(--color-primary) 80%, transparent); - box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-primary) 40%, transparent) inset; + box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-primary) 36%, transparent) inset; +} + +.canvas-cell-label { + font-size: 0.82rem; + font-weight: 600; + color: color-mix(in oklab, var(--color-base-content) 60%, transparent); + pointer-events: none; + user-select: none; +} + +.canvas-fly-rect { + position: absolute; + border-radius: 12px; + border: 2px solid color-mix(in oklab, var(--color-primary) 70%, transparent); + background: color-mix(in oklab, var(--color-base-200) 60%, transparent); + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + pointer-events: none; + will-change: left, top, width, height; +} + +.canvas-fly-label { + font-size: 1rem; + font-weight: 700; + color: color-mix(in oklab, var(--color-base-content) 70%, transparent); + user-select: none; } -/* Content overlay — always native scale */ .canvas-content-layer { position: absolute; inset: 0; @@ -664,13 +675,11 @@ onBeforeUnmount(() => { align-items: center; justify-content: center; padding: 24px; - opacity: 0; - transition: opacity 180ms ease; pointer-events: none; + z-index: 5; } .canvas-content-visible { - opacity: 1; pointer-events: auto; } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a2b6f77..ee7d867 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -30,6 +30,7 @@ "daisyui": "^5.5.18", "graphql": "^16.12.0", "graphql-tag": "^2.12.6", + "gsap": "^3.14.2", "ioredis": "^5.7.0", "langfuse": "^3.38.6", "langsmith": "^0.5.4", @@ -15131,6 +15132,12 @@ } } }, + "node_modules/gsap": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.14.2.tgz", + "integrity": "sha512-P8/mMxVLU7o4+55+1TCnQrPmgjPKnwkzkXOK1asnR9Jg2lna4tEY5qBJjMmAaOBDDZWtlRjBXjLa0w53G/uBLA==", + "license": "Standard 'no charge' license: https://gsap.com/standard-license." + }, "node_modules/guid-typescript": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", diff --git a/frontend/package.json b/frontend/package.json index 2dde739..dd6cfa3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,6 +42,7 @@ "daisyui": "^5.5.18", "graphql": "^16.12.0", "graphql-tag": "^2.12.6", + "gsap": "^3.14.2", "ioredis": "^5.7.0", "langfuse": "^3.38.6", "langsmith": "^0.5.4",