@crashbytes/react-version-compare
Version:
A React component for comparing strings and arrays with precise word-level and item-level highlighting of differences.
174 lines (148 loc) • 3.17 kB
CSS
/* Compare.css */
.compare-side-by-side {
display: flex;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,
'Open Sans', 'Helvetica Neue', sans-serif;
border: 1px solid #ddd;
border-radius: 6px;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.compare-inline {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,
'Open Sans', 'Helvetica Neue', sans-serif;
border: 1px solid #ddd;
border-radius: 6px;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
padding: 16px;
}
.compare-panel {
flex: 1;
display: flex;
flex-direction: column;
}
.compare-panel:first-child {
border-right: 1px solid #ddd;
}
.compare-header {
padding: 12px 16px;
background-color: #f6f8fa;
border-bottom: 1px solid #ddd;
font-weight: 600;
font-size: 14px;
color: #24292e;
}
.original-header {
background-color: #ffeef0;
color: #d73a49;
}
.modified-header {
background-color: #e6ffec;
color: #28a745;
}
.compare-content {
padding: 16px;
line-height: 1.5;
min-height: 100px;
flex: 1;
}
.original-content {
background-color: #fefefe;
}
.modified-content {
background-color: #fefefe;
}
/* String diff styling */
.diff-removed {
background-color: #ffeef0;
color: #d73a49;
text-decoration: line-through;
padding: 2px 4px;
border-radius: 3px;
margin: 0 1px;
}
.diff-added {
background-color: #e6ffec;
color: #28a745;
padding: 2px 4px;
border-radius: 3px;
margin: 0 1px;
}
.diff-unchanged {
/* No special styling for unchanged text */
}
/* Array diff styling */
.diff-removed-line {
background-color: #ffeef0;
color: #d73a49;
padding: 4px 8px;
margin: 2px 0;
border-radius: 3px;
border-left: 3px solid #d73a49;
}
.diff-added-line {
background-color: #e6ffec;
color: #28a745;
padding: 4px 8px;
margin: 2px 0;
border-radius: 3px;
border-left: 3px solid #28a745;
}
.diff-unchanged-line {
padding: 4px 8px;
margin: 2px 0;
color: #24292e;
}
.compare-error {
padding: 16px;
background-color: #ffeef0;
border: 1px solid #d73a49;
border-radius: 6px;
color: #d73a49;
font-weight: 500;
}
/* Contentful document comparison styles */
.diff-structure-type {
font-weight: bold;
color: #4a5568;
font-size: 0.875rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.diff-structure-level {
color: #718096;
font-size: 0.75rem;
margin-left: 0.25rem;
}
.diff-structure-content {
margin-left: 0.5rem;
}
.diff-removed-line .diff-structure-type {
color: #c53030;
}
.diff-added-line .diff-structure-type {
color: #38a169;
}
.diff-unchanged-line .diff-structure-type {
color: #4a5568;
}
/* Enhanced styles for Contentful content */
.compare-content .diff-structure-type {
display: inline-block;
min-width: 80px;
}
.compare-content .diff-structure-level {
display: inline-block;
min-width: 20px;
}
/* Responsive design */
@media (max-width: 768px) {
.compare-side-by-side {
flex-direction: column;
}
.compare-panel:first-child {
border-right: none;
border-bottom: 1px solid #ddd;
}
}