@greensight/gds
Version:
Greensight Design System
33 lines (32 loc) • 1.24 kB
TypeScript
export type BreakpointItself = 'xxxxl' | 'xxxl' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs' | 'xxs' | 'xxxs';
type PartialRecord<K extends keyof any, T> = {
[P in K]?: T;
};
export type BreakpointMap = PartialRecord<BreakpointItself, any>;
type MediaKey = `@media (max-width: ${number}px)`;
type MediaKeyMin = `@media (min-width: ${number}px)`;
/**
* Creates a statically typed object representing media queries
* given a map of breakpoints from tokens
* @example
* // scripts/gds.ts
* import tokens from '../../../public/tokens.json';
* const { breakpoints } = tokens.layout;
* const MEDIA_QUERIES = createMediaQueries(breakpoints);
* // ...
* export {MEDIA_QUERIES };
* @example
* // components/Example/themes/basic/index.ts
* import { MEDIA_QUERIES } from '@scripts/gds';
* export const basicTheme: ExampleComponentTheme = {
* subComponent: {
* // statically typed
* [MEDIA_QUERIES.sm]: {
* width: '100%',
* }
* }
* }
* @param breakpoints breakpoints from tokens
*/
export declare const createMediaQueries: <T extends BreakpointMap>(breakpoints: T) => Record<keyof T extends string ? keyof T : never, MediaKey> & Record<`${keyof T extends string ? keyof T : never}Min`, MediaKeyMin>;
export {};