redoc/src/common-elements/fields-layout.ts
2018-07-17 12:15:22 +03:00

163 lines
3.6 KiB
TypeScript

import { transparentize } from 'polished';
import styled, { extensionsHook, withProps } from '../styled-components';
import { deprecatedCss } from './mixins';
export const PropertiesTableCaption = styled.caption`
text-align: right;
font-size: 0.9em;
font-weight: normal;
color: ${props => transparentize(0.6, props.theme.colors.text)};
`;
export const PropertyCell = styled.td`
border-left: 1px solid ${props => props.theme.schemaView.linesColor};
box-sizing: border-box;
position: relative;
padding: 10px 10px 10px 0;
tr:first-of-type > &,
tr.last > & {
border-left-width: 0;
background-position: top left;
background-repeat: no-repeat;
background-size: 1px 100%;
}
tr:first-of-type > & {
background-image: linear-gradient(
to bottom,
transparent 0%,
transparent 22px,
${props => props.theme.schemaView.linesColor} 22px,
${props => props.theme.schemaView.linesColor} 100%
);
}
tr.last > & {
background-image: linear-gradient(
to bottom,
${props => props.theme.schemaView.linesColor} 0%,
${props => props.theme.schemaView.linesColor} 22px,
transparent 22px,
transparent 100%
);
}
tr.last + tr > & {
border-left-color: transparent;
}
tr:only-child > & {
background: none;
border-left-color: transparent;
}
`;
export const PropertyCellWithInner = PropertyCell.extend`
padding: 0;
`;
export const PropertyNameCell = withProps<{ kind?: string }>(PropertyCell.extend)`
vertical-align: top;
line-height: 20px;
white-space: nowrap;
font-size: 0.929em;
font-family: ${props => props.theme.headingsFont.family};
&.deprecated {
${deprecatedCss};
}
${({ kind }) => (kind !== 'field' ? 'font-style: italic' : '')};
${extensionsHook('PropertyNameCell')};
`;
export const PropertyDetailsCell = styled.td`
border-bottom: 1px solid #9fb4be;
padding: 10px 0;
width: ${props => props.theme.schemaView.defaultDetailsWidth};
box-sizing: border-box;
tr.expanded & {
border-bottom: none;
}
`;
export const PropertyBullet = styled.span`
color: ${props => props.theme.schemaView.linesColor};
font-family: ${props => props.theme.code.fontFamily};
margin-right: 10px;
&::before {
content: '';
display: inline-block;
vertical-align: middle;
width: 10px;
height: 1px;
background: ${props => props.theme.schemaView.linesColor};
}
&::after {
content: '';
display: inline-block;
vertical-align: middle;
width: 1px;
background: ${props => props.theme.schemaView.linesColor};
height: 7px;
}
`;
export const InnerPropertiesWrap = styled.div`
padding: ${({ theme }) => theme.schemaView.nestingSpacing};
`;
export const PropertiesTable = styled.table`
border-collapse: separate;
border-radius: 3px;
font-size: ${props => props.theme.baseFont.size};
border-spacing: 0;
width: 100%;
> tr {
vertical-align: middle;
}
&
${InnerPropertiesWrap},
&
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap},
&
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap} {
margin: ${({ theme }) => theme.schemaView.nestingSpacing};
margin-right: 0;
background: #f0f0f0;
}
&
${InnerPropertiesWrap}
${InnerPropertiesWrap},
&
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap},
&
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap}
${InnerPropertiesWrap} {
background: #ffffff;
}
`;