Skip to content
Data, new

Diff Viewer

A code review diff that morphs between split and unified on one spring: every line glides to its new place and width, numbers fold into a single gutter, padding fills fade.

$149 once · every Pro piece

Customize

Word-level marks inside changed lines, monochrome syntax (weight and grey, no hues), long unchanged runs folded behind “Show 24 lines”. Click or drag the gutter to select a range, Shift to extend; hovering a line shows a small comment button that opens an inline composer, and threads and replies open in place while the lines below glide down. Arrow keys walk the gutter, C comments.

Install

npx shadcn@latest add @obsyde/diff-viewer

Needs your licence key · Get Pro

Usage

Import it from where the CLI puts it, or copy the files below by hand.

import { DiffViewer } from '@/components/obsyde/ember/diff-viewer/DiffViewer';

export function Example() {
  return (
    <DiffViewer />
  );
}

Files

What you get with Pro: plain React, TypeScript and CSS, with no dependencies.

  • ember/diff-viewer/DiffViewer.tsxcomponent
  • ember/diff-viewer/diff-viewer.cssstyles
  • ember/diff-viewer/sample.tsmodule
  • ember/diff-viewer/diff.tsmodule
  • ember/diff-viewer/DiffViewerDemo.tsxdemo
  • ember/segmented/segmented.cssshared
  • ember/segmented/Segmented.tsxshared
  • ember/shared/ember.cssshared
  • ember/actions-kit/kit.tsshared
  • ember/shared/accent.tsshared
  • ember/shared/spring.tsshared
  • ember/display-kit/motion.tsshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
modeLayout'split' | 'unified''split'
contextContext linesnumber3
wordDiffWord highlightsbooleantrue
commentsReview threadbooleantrue
stateState'ready' | 'loading' | 'empty' | 'error''ready'