@@ -26,6 +26,7 @@ import {
2626} from '@/components/ui/select'
2727import { ToggleGroup , ToggleGroupItem } from '@/components/ui/toggle-group'
2828import type { BlendMode , ImageLayer } from '@/lib/image-editor'
29+ import { cn } from '@/lib/utils'
2930
3031interface LayerControlsProps {
3132 layer : ImageLayer
@@ -313,6 +314,7 @@ export function LayerControls({
313314 onValueChange = { handleHAlignChange }
314315 variant = 'outline'
315316 className = 'flex-1 gap-0'
317+ disabled = { visualCropEnabled }
316318 >
317319 < ToggleGroupItem
318320 value = 'left'
@@ -340,7 +342,7 @@ export function LayerControls({
340342 type = 'number'
341343 value = { hAlign === 'center' ? '' : xOffset }
342344 onChange = { ( e ) => handleXOffsetChange ( Number ( e . target . value ) || 0 ) }
343- disabled = { hAlign === 'center' }
345+ disabled = { hAlign === 'center' || visualCropEnabled }
344346 placeholder = '—'
345347 min = { 0 }
346348 step = { 1 }
@@ -361,6 +363,7 @@ export function LayerControls({
361363 onValueChange = { handleVAlignChange }
362364 variant = 'outline'
363365 className = 'flex-1 gap-0'
366+ disabled = { visualCropEnabled }
364367 >
365368 < ToggleGroupItem
366369 value = 'top'
@@ -388,7 +391,7 @@ export function LayerControls({
388391 type = 'number'
389392 value = { vAlign === 'center' ? '' : yOffset }
390393 onChange = { ( e ) => handleYOffsetChange ( Number ( e . target . value ) || 0 ) }
391- disabled = { vAlign === 'center' }
394+ disabled = { vAlign === 'center' || visualCropEnabled }
392395 placeholder = '—'
393396 min = { 0 }
394397 step = { 1 }
@@ -411,6 +414,7 @@ export function LayerControls({
411414 value = { currentWidth }
412415 onChange = { ( e ) => handleWidthChange ( e . target . value ) }
413416 onBlur = { ( e ) => handleWidthBlur ( e . target . value ) }
417+ disabled = { visualCropEnabled }
414418 min = '1'
415419 max = '10000'
416420 className = 'h-8'
@@ -422,6 +426,7 @@ export function LayerControls({
422426 variant = 'outline'
423427 size = 'sm'
424428 onClick = { ( ) => onAspectRatioLockChange ( ! aspectRatioLocked ) }
429+ disabled = { visualCropEnabled }
425430 className = 'h-8 w-8 p-0'
426431 title = {
427432 aspectRatioLocked
@@ -442,6 +447,7 @@ export function LayerControls({
442447 value = { currentHeight }
443448 onChange = { ( e ) => handleHeightChange ( e . target . value ) }
444449 onBlur = { ( e ) => handleHeightBlur ( e . target . value ) }
450+ disabled = { visualCropEnabled }
445451 min = '1'
446452 max = '10000'
447453 className = 'h-8'
@@ -459,12 +465,24 @@ export function LayerControls({
459465 step = { 1 }
460466 unit = '%'
461467 onChange = { handleAlphaChange }
468+ disabled = { visualCropEnabled }
462469 />
463470
464471 { /* Blend Mode Control */ }
465472 < div className = 'space-y-2' >
466- < Label className = 'text-sm font-medium' > { t ( 'imageEditor.layers.blendMode' ) } </ Label >
467- < Select value = { layer . blendMode } onValueChange = { handleBlendModeChange } >
473+ < Label
474+ className = { cn (
475+ 'text-sm font-medium' ,
476+ visualCropEnabled && 'text-muted-foreground opacity-50' ,
477+ ) }
478+ >
479+ { t ( 'imageEditor.layers.blendMode' ) }
480+ </ Label >
481+ < Select
482+ value = { layer . blendMode }
483+ onValueChange = { handleBlendModeChange }
484+ disabled = { visualCropEnabled }
485+ >
468486 < SelectTrigger >
469487 < SelectValue />
470488 </ SelectTrigger >
0 commit comments