1
0
mirror of https://github.com/yldio/copilot.git synced 2025-01-23 09:20:12 +02:00
copilot/packages/ui-toolkit/src/breakpoints/index.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

import { css } from 'styled-components';
import remcalc from 'remcalc';
const bounds = {
small: {
upper: remcalc(768)
},
medium: {
upper: remcalc(1024),
lower: remcalc(769)
},
large: {
upper: remcalc(1200),
lower: remcalc(1025)
},
xlarge: {
lower: remcalc(1201)
}
};
const screens = {
// >= 768px
smallOnly: `only screen and (max-width: ${bounds.small.upper})`,
small: `only screen and (min-width: ${bounds.small.upper}})`,
// >= 1024px
mediumOnly: `only screen and (min-width: ${bounds.medium.lower})
and (max-width: ${bounds.medium.upper})`,
mediumDown: `only screen and (max-width: ${bounds.medium.upper})`,
medium: `only screen and (min-width: ${bounds.medium.lower})`,
// >= 1200px
largeOnly: `only screen and (min-width: ${bounds.large.lower})
and (max-width: ${bounds.large.upper})`,
largeDown: `only screen and (max-width: ${bounds.large.upper})`,
large: `only screen and (min-width: ${bounds.large.upper})`,
xlarge: `only screen and (min-width: ${bounds.xlarge.lower})
and (max-width: ${bounds.xlarge.upper})`,
xlargeUp: `only screen and (min-width: ${bounds.xlarge.lower})`
};
const breakpoint = label => (...args) => css`
@media ${screens[label]} {
${css(...args)}
}
`;
export const smallOnly = breakpoint('smallOnly');
export const small = breakpoint('small');
export const mediumOnly = breakpoint('mediumOnly');
export const mediumDown = breakpoint('mediumDown');
export const medium = breakpoint('medium');
export const largeOnly = breakpoint('largeOnly');
export const largeDown = breakpoint('largeDown');
export const large = breakpoint('large');
export const xlarge = breakpoint('xlarge');
export const xlargeUp = breakpoint('xlargeUp');
export default {
smallOnly,
small,
mediumOnly,
mediumDown,
medium,
largeOnly,
largeDown,
large,
xlarge,
xlargeUp
};