diff --git a/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCard.js b/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCard.js
index cf0eea8a..ceb9782a 100644
--- a/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCard.js
+++ b/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCard.js
@@ -2,7 +2,9 @@ import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import styled from 'react-emotion';
-import { colors, borders, lengths } from 'netlify-cms-ui-default';
+import { colors, borders, lengths, shadows, effects } from 'netlify-cms-ui-default';
+
+const IMAGE_HEIGHT = 160;
const Card = styled.div`
width: ${props => props.width};
@@ -20,10 +22,17 @@ const Card = styled.div`
}
`;
+const CardImageWrapper = styled.div`
+ height: ${IMAGE_HEIGHT + 2}px;
+ ${effects.checkerboard};
+ ${shadows.inset};
+ border-bottom: solid ${lengths.borderWidth} ${colors.textFieldBorder};
+`;
+
const CardImage = styled.img`
width: 100%;
- height: 160px;
- object-fit: cover;
+ height: ${IMAGE_HEIGHT}px;
+ object-fit: contain;
border-radius: 2px 2px 0 0;
`;
@@ -57,7 +66,9 @@ class MediaLibraryCard extends React.Component {
tabIndex="-1"
isPrivate={isPrivate}
>
-
{url ? : {type}}
+
+ {url ? : {type}}
+
{text}
);
diff --git a/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js b/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
index 9d7d5da1..64a76d07 100644
--- a/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
+++ b/packages/netlify-cms-core/src/components/MediaLibrary/MediaLibraryCardGrid.js
@@ -8,6 +8,7 @@ import { colors } from 'netlify-cms-ui-default';
const CardGridContainer = styled.div`
overflow-y: auto;
+ overflow-x: hidden;
`;
const CardGrid = styled.div`
diff --git a/packages/netlify-cms-ui-default/src/index.js b/packages/netlify-cms-ui-default/src/index.js
index 9241df14..627995c1 100644
--- a/packages/netlify-cms-ui-default/src/index.js
+++ b/packages/netlify-cms-ui-default/src/index.js
@@ -16,5 +16,6 @@ export {
shadows,
borders,
transitions,
+ effects,
reactSelectStyles,
} from './styles';
diff --git a/packages/netlify-cms-ui-default/src/styles.js b/packages/netlify-cms-ui-default/src/styles.js
index 343c3f49..d7468498 100644
--- a/packages/netlify-cms-ui-default/src/styles.js
+++ b/packages/netlify-cms-ui-default/src/styles.js
@@ -10,6 +10,7 @@ export {
shadows,
borders,
transitions,
+ effects,
reactSelectStyles,
};
@@ -89,6 +90,8 @@ const colors = {
errorBackground: colorsRaw.redLight,
textFieldBorder: '#dfdfe3',
controlLabel: '#7a8291',
+ checkerboardLight: '#f2f2f2',
+ checkerboardDark: '#e6e6e6',
};
const lengths = {
@@ -122,6 +125,33 @@ const shadows = {
dropDeep: css`
box-shadow: 0 4px 12px 0 rgba(68, 74, 87, 0.15), 0 1px 3px 0 rgba(68, 74, 87, 0.25);
`,
+ inset: css`
+ box-shadow: inset 0 0 4px rgba(68, 74, 87, 0.3);
+ `,
+};
+
+const effects = {
+ checkerboard: css`
+ background-color: ${colors.checkerboardLight};
+ background-size: 16px 16px;
+ background-position: 0 0, 8px 8px;
+ background-image: linear-gradient(
+ 45deg,
+ ${colors.checkerboardDark} 25%,
+ transparent 25%,
+ transparent 75%,
+ ${colors.checkerboardDark} 75%,
+ ${colors.checkerboardDark}
+ ),
+ linear-gradient(
+ 45deg,
+ ${colors.checkerboardDark} 25%,
+ transparent 25%,
+ transparent 75%,
+ ${colors.checkerboardDark} 75%,
+ ${colors.checkerboardDark}
+ );
+ `,
};
const badge = css`
diff --git a/packages/netlify-cms-widget-file/src/withFileControl.js b/packages/netlify-cms-widget-file/src/withFileControl.js
index 5777d428..e9ed7949 100644
--- a/packages/netlify-cms-widget-file/src/withFileControl.js
+++ b/packages/netlify-cms-widget-file/src/withFileControl.js
@@ -6,7 +6,7 @@ import { Map, List } from 'immutable';
import { once } from 'lodash';
import uuid from 'uuid/v4';
import { oneLine } from 'common-tags';
-import { lengths, components, buttons } from 'netlify-cms-ui-default';
+import { lengths, components, buttons, borders, effects, shadows } from 'netlify-cms-ui-default';
const MAX_DISPLAY_LENGTH = 50;
@@ -16,13 +16,16 @@ const ImageWrapper = styled.div`
height: 100px;
margin-right: 20px;
margin-bottom: 20px;
+ border: ${borders.textField};
+ border-radius: ${lengths.borderRadius};
+ ${effects.checkerboard};
+ ${shadows.inset};
`;
const Image = styled.img`
width: 100%;
height: 100%;
- object-fit: cover;
- border-radius: ${lengths.borderRadius};
+ object-fit: contain;
`;
const MultiImageWrapper = styled.div`