linguabot commited on
Commit
d7bf04c
·
verified ·
1 Parent(s): 2b8386a

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. client/src/components/Refinity.tsx +8 -13
client/src/components/Refinity.tsx CHANGED
@@ -367,7 +367,7 @@ const Refinity: React.FC = () => {
367
  </div>
368
  </div>
369
 
370
- <div className="relative overflow-hidden py-10" style={{ perspective: '1200px' }}>
371
  <div className="absolute left-2 top-1/2 -translate-y-1/2 z-10">
372
  <button onClick={()=> setFlowIndex((i)=> Math.max(i-1, 0))} className="px-2 py-1 rounded-2xl bg-white/50 ring-1 ring-white/50 backdrop-blur-md text-sm">‹</button>
373
  </div>
@@ -375,7 +375,7 @@ const Refinity: React.FC = () => {
375
  <button onClick={()=> setFlowIndex((i)=> Math.min(i+1, Math.max(taskVersions.length-1, 0)))} className="px-2 py-1 rounded-2xl bg-white/50 ring-1 ring-white/50 backdrop-blur-md text-sm">›</button>
376
  </div>
377
  <div
378
- className="flex items-center justify-center gap-10 px-16 transition-transform duration-300"
379
  onWheel={(e)=>{
380
  if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
381
  if (e.deltaX > 0) setFlowIndex(i => Math.min(i+1, Math.max(taskVersions.length-1,0)));
@@ -390,19 +390,18 @@ const Refinity: React.FC = () => {
390
  const offset = idx - focusedIndex;
391
  const abs = Math.abs(offset);
392
  const isCenter = abs === 0;
393
- const translateX = offset * 300; // spacing between cards (wider)
394
- const rotateY = -offset * 35; // gentler angle
395
- const translateZ = -abs * 120; // less depth to avoid squish
396
- const scale = isCenter ? 1.02 : 1.0; // minimal size change
397
  const opacity = isCenter ? 1 : Math.max(0.6, 1 - abs * 0.15);
398
  const zIndex = 100 - abs;
399
  const snippet = (v.content || '').slice(0, 180) + ((v.content || '').length > 180 ? '…' : '');
400
  return (
401
  <div
402
  key={v.id}
403
- className="transition-transform duration-300 cursor-pointer"
404
  style={{
405
- transform: `translateX(${translateX}px) translateZ(${translateZ}px) rotateY(${rotateY}deg) scale(${scale})`,
406
  opacity,
407
  zIndex,
408
  }}
@@ -412,11 +411,7 @@ const Refinity: React.FC = () => {
412
  <div className="text-gray-800 text-sm mb-2">Original: {v.originalAuthor}</div>
413
  <div className="text-gray-600 text-xs mb-3">Revised by: {v.revisedBy ? `${v.revisedBy} (v${v.versionNumber})` : `— (v${v.versionNumber})`}</div>
414
  <div className="text-gray-900 whitespace-pre-wrap break-words min-h-[100px]">{snippet}</div>
415
- {/* Reflection */}
416
- <div className="pointer-events-none absolute left-0 right-0 -bottom-20 h-16 opacity-35" style={{ transform: 'scaleY(-1)' }}>
417
- <div className="w-full h-full rounded-xl bg-white/10 ring-1 ring-inset ring-white/30" />
418
- <div className="absolute inset-0 bg-gradient-to-t from-white to-transparent" />
419
- </div>
420
  {isCenter && (
421
  <div className="mt-4 flex gap-3">
422
  <button onClick={()=>{ setPreviewVersionId(v.id); setStage('preview'); }} className="relative overflow-hidden inline-flex items-center justify-center gap-2 px-3 py-2 text-sm font-medium rounded-2xl text-black ring-1 ring-inset ring-white/50 backdrop-blur-md bg-white/30 active:translate-y-0.5 transition-all duration-200">
 
367
  </div>
368
  </div>
369
 
370
+ <div className="relative overflow-hidden py-10">
371
  <div className="absolute left-2 top-1/2 -translate-y-1/2 z-10">
372
  <button onClick={()=> setFlowIndex((i)=> Math.max(i-1, 0))} className="px-2 py-1 rounded-2xl bg-white/50 ring-1 ring-white/50 backdrop-blur-md text-sm">‹</button>
373
  </div>
 
375
  <button onClick={()=> setFlowIndex((i)=> Math.min(i+1, Math.max(taskVersions.length-1, 0)))} className="px-2 py-1 rounded-2xl bg-white/50 ring-1 ring-white/50 backdrop-blur-md text-sm">›</button>
376
  </div>
377
  <div
378
+ className="relative h-[360px] px-16"
379
  onWheel={(e)=>{
380
  if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
381
  if (e.deltaX > 0) setFlowIndex(i => Math.min(i+1, Math.max(taskVersions.length-1,0)));
 
390
  const offset = idx - focusedIndex;
391
  const abs = Math.abs(offset);
392
  const isCenter = abs === 0;
393
+ const delta = 580; // card width + gap
394
+ const translateX = offset * delta;
395
+ const scale = isCenter ? 1.02 : 1.0;
 
396
  const opacity = isCenter ? 1 : Math.max(0.6, 1 - abs * 0.15);
397
  const zIndex = 100 - abs;
398
  const snippet = (v.content || '').slice(0, 180) + ((v.content || '').length > 180 ? '…' : '');
399
  return (
400
  <div
401
  key={v.id}
402
+ className="transition-transform duration-300 cursor-pointer absolute top-0 left-1/2"
403
  style={{
404
+ transform: `translateX(${translateX - 260}px) translateX(-50%) scale(${scale})`,
405
  opacity,
406
  zIndex,
407
  }}
 
411
  <div className="text-gray-800 text-sm mb-2">Original: {v.originalAuthor}</div>
412
  <div className="text-gray-600 text-xs mb-3">Revised by: {v.revisedBy ? `${v.revisedBy} (v${v.versionNumber})` : `— (v${v.versionNumber})`}</div>
413
  <div className="text-gray-900 whitespace-pre-wrap break-words min-h-[100px]">{snippet}</div>
414
+ {/* No reflection to preserve clarity */}
 
 
 
 
415
  {isCenter && (
416
  <div className="mt-4 flex gap-3">
417
  <button onClick={()=>{ setPreviewVersionId(v.id); setStage('preview'); }} className="relative overflow-hidden inline-flex items-center justify-center gap-2 px-3 py-2 text-sm font-medium rounded-2xl text-black ring-1 ring-inset ring-white/50 backdrop-blur-md bg-white/30 active:translate-y-0.5 transition-all duration-200">