@primer/components
Version:
Primer react components
1,029 lines (1,028 loc) • 29.8 kB
TypeScript
import React from 'react';
import renderer from 'react-test-renderer';
import enzyme from 'enzyme';
declare type ComputedStyles = Record<string, string | Record<string, string>>;
export declare const COMPONENT_DISPLAY_NAME_REGEX: RegExp;
export declare function mount(component: React.ReactElement): enzyme.ReactWrapper<any, Readonly<{}>, React.Component<{}, {}, any>>;
declare global {
namespace jest {
interface Matchers<R> {
toImplementSxBehavior: () => boolean;
toSetExports: (exports: Record<string, string>) => boolean;
}
}
}
/**
* Render the component (a React.createElement() or JSX expression)
* into its intermediate object representation with 'type',
* 'props', and 'children' keys
*
* The returned object can be matched with expect().toEqual(), e.g.
*
* ```js
* expect(render(<Foo />)).toEqual(render(<div foo='bar' />))
* ```
*/
export declare function render(component: React.ReactElement, theme?: {
animation: {
easeOutCubic: string;
};
borderWidths: (string | number)[];
breakpoints: string[];
fonts: {
normal: any;
mono: any;
};
fontSizes: string[];
fontWeights: {
light: number;
normal: number;
semibold: number;
bold: number;
};
lineHeights: {
condensedUltra: number;
condensed: number;
default: number;
};
radii: string[];
sizes: {
small: string;
medium: string;
large: string;
xlarge: string;
};
space: string[];
colorSchemes: Record<"light" | "light_protanopia" | "dark" | "dark_dimmed" | "dark_high_contrast" | "dark_protanopia", Record<"colors" | "shadows", Partial<{
auto: {
black: string;
white: string;
gray: string[];
blue: string[];
green: string[];
yellow: string[];
orange: string[];
red: string[];
purple: string[];
pink: string[];
};
text: {
primary: string;
secondary: string;
tertiary: string;
placeholder: string;
disabled: string;
inverse: string;
link: string;
danger: string;
success: string;
warning: string;
white: string;
};
icon: {
primary: string;
secondary: string;
tertiary: string;
info: string;
danger: string;
success: string;
warning: string;
};
border: {
primary: string;
secondary: string;
tertiary: string;
overlay: string;
inverse: string;
info: string;
danger: string;
success: string;
warning: string;
default: string;
muted: string;
subtle: string;
};
bg: {
canvas: string;
canvasMobile: string;
canvasInverse: string;
canvasInset: string;
primary: string;
secondary: string;
tertiary: string;
overlay: string;
backdrop: string;
info: string;
infoInverse: string;
danger: string;
dangerInverse: string;
success: string;
successInverse: string;
warning: string;
warningInverse: string;
};
shadow: {
highlight: string;
inset: string;
small: string;
medium: string;
large: string;
extraLarge: string;
};
state: {
hover: {
primaryBg: string;
primaryBorder: string;
primaryText: string;
primaryIcon: string;
secondaryBg: string;
secondaryBorder: string;
};
selected: {
primaryBg: string;
primaryBorder: string;
primaryText: string;
primaryIcon: string;
};
focus: {
border: string;
shadow: string;
};
};
fade: {
fg10: string;
fg15: string;
fg30: string;
fg50: string;
fg70: string;
fg85: string;
black10: string;
black15: string;
black30: string;
black50: string;
black70: string;
black85: string;
white10: string;
white15: string;
white30: string;
white50: string;
white70: string;
white85: string;
};
alert: {
info: {
text: string;
icon: string;
bg: string;
border: string;
};
warn: {
text: string;
icon: string;
bg: string;
border: string;
};
error: {
text: string;
icon: string;
bg: string;
border: string;
};
success: {
text: string;
icon: string;
bg: string;
border: string;
};
};
autocomplete: {
shadow: string;
rowBorder: string;
};
blankslate: {
icon: string;
};
counter: {
text: string;
bg: string;
primary: {
text: string;
bg: string;
};
secondary: {
text: string;
bg: string;
};
};
box: {
blueBorder: string;
rowYellowBg: string;
rowBlueBg: string;
headerBlueBg: string;
headerBlueBorder: string;
borderInfo: string;
bgInfo: string;
borderWarning: string;
bgWarning: string;
};
branchName: {
text: string;
icon: string;
bg: string;
link: {
text: string;
icon: string;
bg: string;
};
};
markdown: {
codeBg: string;
frameBorder: string;
blockquoteBorder: string;
tableBorder: string;
tableTrBorder: string;
};
filterItem: {
barBg: string;
};
hiddenTextExpander: {
bg: string;
bgHover: string;
};
dragAndDrop: {
border: string;
};
uploadEnabled: {
border: string;
borderFocused: string;
};
previewableCommentForm: {
border: string;
};
verifiedBadge: {
text: string;
bg: string;
border: string;
};
socialCount: {
bg: string;
};
tooltip: {
text: string;
bg: string;
};
filesExplorerIcon: string;
hlAuthorBg: string;
hlAuthorBorder: string;
logoSubdued: string;
discussionBorder: string;
discussionBgSuccess: string;
actionsWorkflowTableStickyBg: string;
repoLanguageColorBorder: string;
codeSelectionBg: string;
highlight: {
text: string;
bg: string;
};
blob: {
lineHighlightBg: string;
lineHighlightBorder: string;
};
topicTag: {
text: string;
bg: string;
hoverBg: string;
activeBg: string;
border: string;
};
footerInvertocat: {
octicon: string;
octiconHover: string;
};
dropdown: {
shadow: string;
};
label: {
border: string;
primary: {
text: string;
border: string;
};
secondary: {
text: string;
border: string;
};
info: {
text: string;
border: string;
};
success: {
text: string;
border: string;
};
warning: {
text: string;
border: string;
};
danger: {
text: string;
border: string;
};
orange: {
text: string;
border: string;
};
};
input: {
bg: string;
contrastBg: string;
border: string;
shadow: string;
disabledBorder: string;
warningBorder: string;
errorBorder: string;
tooltip: {
success: {
text: string;
bg: string;
border: string;
};
warning: {
text: string;
bg: string;
border: string;
};
error: {
text: string;
bg: string;
border: string;
};
};
disabledBg: string;
};
toast: {
text: string;
bg: string;
border: string;
shadow: string;
icon: string;
iconBg: string;
iconBorder: string;
success: {
text: string;
border: string;
icon: string;
iconBg: string;
iconBorder: string;
};
warning: {
text: string;
border: string;
icon: string;
iconBg: string;
iconBorder: string;
};
danger: {
text: string;
border: string;
icon: string;
iconBg: string;
iconBorder: string;
};
loading: {
text: string;
border: string;
icon: string;
iconBg: string;
iconBorder: string;
};
};
timeline: {
text: string;
badgeSuccessBorder: string;
targetBadgeBorder: string;
targetBadgeShadow: string;
badgeBg: string;
};
diffstat: {
neutralBg: string;
neutralBorder: string;
deletionBorder: string;
additionBorder: string;
deletionBg: string;
additionBg: string;
};
diff: {
addition: {
text: string;
bg: string;
border: string;
};
deletion: {
text: string;
bg: string;
border: string;
};
change: {
text: string;
bg: string;
border: string;
};
};
mergeBox: {
successIconBg: string;
successIconText: string;
successIconBorder: string;
successIndicatorBg: string;
successIndicatorBorder: string;
mergedIconBg: string;
mergedIconText: string;
mergedIconBorder: string;
mergedBoxBorder: string;
neutralIconBg: string;
neutralIconText: string;
neutralIconBorder: string;
neutralIndicatorBg: string;
neutralIndicatorBorder: string;
warningIconBg: string;
warningIconText: string;
warningIconBorder: string;
warningBoxBorder: string;
warningMergeHighlight: string;
errorIconBg: string;
errorIconText: string;
errorIconBorder: string;
errorIndicatorBg: string;
errorIndicatorBorder: string;
};
underlinenav: {
border: string;
borderHover: string;
borderActive: string;
text: string;
textHover: string;
textActive: string;
icon: string;
iconHover: string;
iconActive: string;
counterText: string;
counterBg: string;
};
selectMenu: {
borderSecondary: string;
shadow: string;
backdropBg: string;
backdropBorder: string;
tapHighlight: string;
tapFocusBg: string;
};
sidenav: {
borderActive: string;
selectedBg: string;
};
menu: {
headingText: string;
borderActive: string;
bgActive: string;
};
project: {
cardBg: string;
headerBg: string;
sidebarBg: string;
gradientIn: string;
gradientOut: string;
};
prState: {
draft: {
text: string;
bg: string;
border: string;
};
open: {
text: string;
bg: string;
border: string;
};
merged: {
text: string;
bg: string;
border: string;
};
closed: {
text: string;
bg: string;
border: string;
};
};
diffBlob: {
numText: string;
numHoverText: string;
addition: {
numHoverText: string;
numText: string;
fg: string;
numBg: string;
lineBg: string;
wordBg: string;
};
deletion: {
numHoverText: string;
numText: string;
fg: string;
numBg: string;
lineBg: string;
wordBg: string;
};
hunk: {
text: string;
numBg: string;
lineBg: string;
};
emptyBlockBg: string;
selectedLineHighlightBg: string;
selectedLineHighlightBorder: string;
expander: {
hoverIcon: string;
hoverBg: string;
icon: string;
};
commentButton: {
icon: string;
bg: string;
gradientBg: string;
};
selectedLineHighlightMixBlendMode: string;
};
globalNav: {
logo: string;
bg: string;
text: string;
icon: string;
inputBg: string;
inputBorder: string;
inputIcon: string;
inputPlaceholder: string;
};
introShelf: {
gradientLeft: string;
gradientRight: string;
gradientIn: string;
gradientOut: string;
};
canvasDefaultTransparent: string;
marketingIcon: {
primary: string;
secondary: string;
};
searchKeyword: {
hl: string;
};
prettylights: {
syntax: {
comment: string;
constant: string;
entity: string;
storageModifierImport: string;
entityTag: string;
keyword: string;
string: string;
variable: string;
brackethighlighterUnmatched: string;
invalidIllegalText: string;
invalidIllegalBg: string;
carriageReturnText: string;
carriageReturnBg: string;
stringRegexp: string;
markupList: string;
markupHeading: string;
markupItalic: string;
markupBold: string;
markupDeletedText: string;
markupDeletedBg: string;
markupInsertedText: string;
markupInsertedBg: string;
markupChangedText: string;
markupChangedBg: string;
markupIgnoredText: string;
markupIgnoredBg: string;
metaDiffRange: string;
brackethighlighterAngle: string;
sublimelinterGutterMark: string;
constantOtherReferenceLink: string;
};
};
codemirror: {
text: string;
bg: string;
guttersBg: string;
guttermarkerText: string;
guttermarkerSubtleText: string;
linenumberText: string;
cursor: string;
selectionBg: string;
activelineBg: string;
matchingbracketText: string;
linesBg: string;
syntax: {
comment: string;
constant: string;
entity: string;
keyword: string;
storage: string;
string: string;
support: string;
variable: string;
};
};
checks: {
bg: string;
runBorderWidth: string;
containerBorderWidth: string;
textPrimary: string;
textSecondary: string;
textLink: string;
btnIcon: string;
btnHoverIcon: string;
btnHoverBg: string;
inputText: string;
inputPlaceholderText: string;
inputFocusText: string;
inputBg: string;
inputShadow: string;
donutError: string;
donutPending: string;
donutSuccess: string;
donutNeutral: string;
dropdownText: string;
dropdownBg: string;
dropdownBorder: string;
dropdownShadow: string;
dropdownHoverText: string;
dropdownHoverBg: string;
dropdownBtnHoverText: string;
dropdownBtnHoverBg: string;
scrollbarThumbBg: string;
headerLabelText: string;
headerLabelOpenText: string;
headerBorder: string;
headerIcon: string;
lineText: string;
lineNumText: string;
lineTimestampText: string;
lineHoverBg: string;
lineSelectedBg: string;
lineSelectedNumText: string;
lineDtFmText: string;
lineDtFmBg: string;
gateBg: string;
gateText: string;
gateWaitingText: string;
stepHeaderOpenBg: string;
stepErrorText: string;
stepWarningText: string;
loglineText: string;
loglineNumText: string;
loglineDebugText: string;
loglineErrorText: string;
loglineErrorNumText: string;
loglineErrorBg: string;
loglineWarningText: string;
loglineWarningNumText: string;
loglineWarningBg: string;
loglineCommandText: string;
loglineSectionText: string;
ansi: {
black: string;
blackBright: string;
white: string;
whiteBright: string;
gray: string;
red: string;
redBright: string;
green: string;
greenBright: string;
yellow: string;
yellowBright: string;
blue: string;
blueBright: string;
magenta: string;
magentaBright: string;
cyan: string;
cyanBright: string;
};
};
mktg: {
success: string;
info: string;
bgShadeGradient: {
top: string;
bottom: string;
};
btn: {
bg: {
top: string;
bottom: string;
};
bgOverlay: {
top: string;
bottom: string;
};
text: string;
primary: {
bg: {
top: string;
bottom: string;
};
bgOverlay: {
top: string;
bottom: string;
};
text: string;
};
enterprise: {
bg: {
top: string;
bottom: string;
};
bgOverlay: {
top: string;
bottom: string;
};
text: string;
};
outline: {
text: string;
border: string;
hover: {
text: string;
border: string;
};
focus: {
border: string;
borderInset: string;
};
};
dark: {
text: string;
border: string;
hover: {
text: string;
border: string;
};
focus: {
border: string;
borderInset: string;
};
};
};
};
avatar: {
bg: string;
border: string;
stackFade: string;
stackFadeMore: string;
childShadow: string;
};
overlay: {
shadow: string;
};
header: {
text: string;
bg: string;
logo: string;
};
headerSearch: {
bg: string;
border: string;
};
ansi: {
black: string;
blackBright: string;
white: string;
whiteBright: string;
gray: string;
red: string;
redBright: string;
green: string;
greenBright: string;
yellow: string;
yellowBright: string;
blue: string;
blueBright: string;
magenta: string;
magentaBright: string;
cyan: string;
cyanBright: string;
};
btn: {
text: string;
bg: string;
border: string;
shadow: string;
insetShadow: string;
hoverBg: string;
hoverBorder: string;
activeBg: string;
activeBorder: string;
selectedBg: string;
focusBg: string;
focusBorder: string;
focusShadow: string;
shadowActive: string;
shadowInputFocus: string;
counterBg: string;
primary: {
text: string;
bg: string;
border: string;
shadow: string;
insetShadow: string;
hoverBg: string;
hoverBorder: string;
selectedBg: string;
selectedShadow: string;
disabledText: string;
disabledBg: string;
disabledBorder: string;
focusBg: string;
focusBorder: string;
focusShadow: string;
icon: string;
counterBg: string;
};
outline: {
text: string;
hoverText: string;
hoverBg: string;
hoverBorder: string;
hoverShadow: string;
hoverInsetShadow: string;
hoverCounterBg: string;
selectedText: string;
selectedBg: string;
selectedBorder: string;
selectedShadow: string;
disabledText: string;
disabledBg: string;
disabledCounterBg: string;
focusBorder: string;
focusShadow: string;
counterBg: string;
};
danger: {
text: string;
hoverText: string;
hoverBg: string;
hoverBorder: string;
hoverShadow: string;
hoverInsetShadow: string;
hoverCounterBg: string;
selectedText: string;
selectedBg: string;
selectedBorder: string;
selectedShadow: string;
disabledText: string;
disabledBg: string;
disabledCounterBg: string;
focusBorder: string;
focusShadow: string;
counterBg: string;
icon: string;
hoverIcon: string;
};
};
fg: {
default: string;
muted: string;
subtle: string;
onEmphasis: string;
};
canvas: {
default: string;
overlay: string;
inset: string;
subtle: string;
};
neutral: {
emphasisPlus: string;
emphasis: string;
muted: string;
subtle: string;
};
accent: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
success: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
attention: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
severe: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
danger: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
done: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
sponsors: {
fg: string;
emphasis: string;
muted: string;
subtle: string;
};
primer: {
canvas: {
backdrop: string;
sticky: string;
};
border: {
active: string;
contrast: string;
};
shadow: {
highlight: string;
inset: string;
focus: string;
};
};
scale: {
black: string;
white: string;
gray: string[];
blue: string[];
green: string[];
yellow: string[];
orange: string[];
red: string[];
purple: string[];
pink: string[];
coral: string[];
};
}>>>;
}): renderer.ReactTestRendererJSON;
/**
* Render the component (a React.createElement() or JSX expression)
* using react-test-renderer and return the root node
* ```
*/
export declare function renderRoot(component: React.ReactElement): renderer.ReactTestInstance;
/**
* Get the HTML class names rendered by the component instance
* as an array.
*
* ```js
* expect(renderClasses(<div className='a b' />))
* .toEqual(['a', 'b'])
* ```
*/
export declare function renderClasses(component: React.ReactElement): string;
/**
* Returns true if a node renders with a single class.
*/
export declare function rendersClass(node: React.ReactElement, klass: string): boolean;
export declare function px(value: number | string): string;
export declare function percent(value: number | string): string;
export declare function renderStyles(node: React.ReactElement): ComputedStyles;
export declare function getComputedStyles(className: string): ComputedStyles;
/**
* This provides a layer of compatibility between the render() function from
* react-test-renderer and Enzyme's mount()
*/
export declare function getProps(node: React.ReactElement): any;
export declare function getClassName(node: React.ReactElement): any;
export declare function getClasses(node: React.ReactElement): any;
export declare function loadCSS(path: string): Promise<HTMLStyleElement>;
export declare function unloadCSS(path: string): true | undefined;
interface Options {
skipAs?: boolean;
skipSx?: boolean;
}
interface BehavesAsComponent {
Component: React.ComponentType<any>;
toRender?: () => React.ReactElement;
options?: Options;
}
export declare function behavesAsComponent({ Component, toRender, options }: BehavesAsComponent): void;
export declare function checkExports(path: string, exports: Record<any, any>): void;
export {};