Package Exports
- @procore/core-react
- @procore/core-react/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json
- @procore/core-react/dist/_typedoc/Avatar/Avatar.types.json
- @procore/core-react/dist/_typedoc/AvatarStack/AvatarStack.types.json
- @procore/core-react/dist/_typedoc/Badge/Badge.types.json
- @procore/core-react/dist/_typedoc/Banner/Banner.types.json
- @procore/core-react/dist/_typedoc/Box/Box.types.json
- @procore/core-react/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json
- @procore/core-react/dist/_typedoc/Button/Button.types.json
- @procore/core-react/dist/_typedoc/Calendar/Calendar.json
- @procore/core-react/dist/_typedoc/Calendar/Calendar.types.json
- @procore/core-react/dist/_typedoc/Card/Card.types.json
- @procore/core-react/dist/_typedoc/Checkbox/Checkbox.types.json
- @procore/core-react/dist/_typedoc/ContactItem/ContactItem.types.json
- @procore/core-react/dist/_typedoc/DateInput/DateInput.types.json
- @procore/core-react/dist/_typedoc/DateSelect/DateSelect.types.json
- @procore/core-react/dist/_typedoc/DetailPage/DetailPage.types.json
- @procore/core-react/dist/_typedoc/DetailPageTemplate/DetailPageTemplate.types.json
- @procore/core-react/dist/_typedoc/Dropdown/Dropdown.types.json
- @procore/core-react/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json
- @procore/core-react/dist/_typedoc/Dropzone/Dropzone.types.json
- @procore/core-react/dist/_typedoc/EmptyState/EmptyState.types.json
- @procore/core-react/dist/_typedoc/FileList/FileList.types.json
- @procore/core-react/dist/_typedoc/FileSelect/FileSelect.json
- @procore/core-react/dist/_typedoc/FileSelect/FileSelect.types.json
- @procore/core-react/dist/_typedoc/FileSelect/GridSource/GridSource.types.json
- @procore/core-react/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json
- @procore/core-react/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json
- @procore/core-react/dist/_typedoc/Flex/Flex.types.json
- @procore/core-react/dist/_typedoc/FlexList/FlexList.types.json
- @procore/core-react/dist/_typedoc/Form/Form.types.json
- @procore/core-react/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json
- @procore/core-react/dist/_typedoc/Grid/Grid.types.json
- @procore/core-react/dist/_typedoc/GroupSelect/GroupSelect.types.json
- @procore/core-react/dist/_typedoc/Input/Input.types.json
- @procore/core-react/dist/_typedoc/Link/Link.types.json
- @procore/core-react/dist/_typedoc/ListPage/ListPage.json
- @procore/core-react/dist/_typedoc/ListPage/ListPage.types.json
- @procore/core-react/dist/_typedoc/Menu/Menu.types.json
- @procore/core-react/dist/_typedoc/MenuImperative/MenuImperative.types.json
- @procore/core-react/dist/_typedoc/Modal/Modal.types.json
- @procore/core-react/dist/_typedoc/MultiSelect/MultiSelect.types.json
- @procore/core-react/dist/_typedoc/NextTile/NextTile.types.json
- @procore/core-react/dist/_typedoc/Notation/Notation.json
- @procore/core-react/dist/_typedoc/Notation/Notation.types.json
- @procore/core-react/dist/_typedoc/NumberInput/NumberInput.types.json
- @procore/core-react/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json
- @procore/core-react/dist/_typedoc/PageLayout/PageLayout.json
- @procore/core-react/dist/_typedoc/PageLayout/PageLayout.types.json
- @procore/core-react/dist/_typedoc/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.types.json
- @procore/core-react/dist/_typedoc/Pagination/Pagination.types.json
- @procore/core-react/dist/_typedoc/Panel/Panel.types.json
- @procore/core-react/dist/_typedoc/Pill/Pill.types.json
- @procore/core-react/dist/_typedoc/PillSelect/PillSelect.types.json
- @procore/core-react/dist/_typedoc/Popover/Popover.types.json
- @procore/core-react/dist/_typedoc/ProgressBar/ProgressBar.types.json
- @procore/core-react/dist/_typedoc/RadioButton/RadioButton.types.json
- @procore/core-react/dist/_typedoc/Required/Required.types.json
- @procore/core-react/dist/_typedoc/Search/Search.types.json
- @procore/core-react/dist/_typedoc/Section/Section.types.json
- @procore/core-react/dist/_typedoc/SegmentedController/SegmentedController.types.json
- @procore/core-react/dist/_typedoc/Select/Select.types.json
- @procore/core-react/dist/_typedoc/SettingsPage/SettingsPage.types.json
- @procore/core-react/dist/_typedoc/SettingsPageTemplate/SettingsPageTemplate.types.json
- @procore/core-react/dist/_typedoc/Slider/Slider.types.json
- @procore/core-react/dist/_typedoc/Spinner/Spinner.types.json
- @procore/core-react/dist/_typedoc/SplitViewCard/SplitViewCard.types.json
- @procore/core-react/dist/_typedoc/Switch/Switch.types.json
- @procore/core-react/dist/_typedoc/Table/Table.types.json
- @procore/core-react/dist/_typedoc/Tabs/Tabs.types.json
- @procore/core-react/dist/_typedoc/Tearsheet/Tearsheet.types.json
- @procore/core-react/dist/_typedoc/TextArea/TextArea.types.json
- @procore/core-react/dist/_typedoc/TextEditor/TextEditor.types.json
- @procore/core-react/dist/_typedoc/TextEditor/TextEditorDocs.types.json
- @procore/core-react/dist/_typedoc/TextEditor/TextEditorProvider.types.json
- @procore/core-react/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json
- @procore/core-react/dist/_typedoc/TextEditorOutput/TextEditorOutputDocs.types.json
- @procore/core-react/dist/_typedoc/Thumbnail/Thumbnail.types.json
- @procore/core-react/dist/_typedoc/TieredDropdown/TieredDropdown.types.json
- @procore/core-react/dist/_typedoc/TieredSelect/TieredSelect.types.json
- @procore/core-react/dist/_typedoc/Tile/Tile.types.json
- @procore/core-react/dist/_typedoc/Title/Title.types.json
- @procore/core-react/dist/_typedoc/Toast/Toast.types.json
- @procore/core-react/dist/_typedoc/ToggleButton/ToggleButton.types.json
- @procore/core-react/dist/_typedoc/Token/Token.types.json
- @procore/core-react/dist/_typedoc/ToolHeader/ToolHeader.json
- @procore/core-react/dist/_typedoc/ToolHeader/ToolHeader.types.json
- @procore/core-react/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json
- @procore/core-react/dist/_typedoc/ToolLandingPageTemplate/ToolLandingPageTemplate.types.json
- @procore/core-react/dist/_typedoc/Tooltip/Tooltip.types.json
- @procore/core-react/dist/_typedoc/Tree/Tree.types.json
- @procore/core-react/dist/_typedoc/Typeahead/Typeahead.types.json
- @procore/core-react/dist/_typedoc/Typography/Typography.types.json
- @procore/core-react/dist/_typedoc/_utils/types.json
- @procore/core-react/dist/_typedoc/deprecations.json
- @procore/core-react/jestConfig
Readme
CORE React

A set of React components implementing the design system spec.
Requirements
Node 16+ YARN 4+
Usage
Install
Install @procore/core-react from NPM.
yarn add @procore/core-reactInstall the peer dependencies.
yarn add styled-components @procore/globalization-toolkit react-beautiful-dnd react react-domInstall the optional peer dependencies if necessary.
yarn add formikStyles
Core React's styled components handle all style inclusion except for two cases:
- Border box and all elements
*,
::after,
::before {
box-sizing: border-box;
}- Font Family
font-family: Inter, 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans SC',
'Noto Sans TC', Arial, sans-serif;Imports
Named imports support tree shaking and types.
import { Button, ButtonProps } from '@procore/core-react'
import { Cog } from '@procore/core-icons'
export function ButtonCustom(props: ButtonProps) {
return <Button {...props} icon={<Cog />} />
}Developing
To get started, type the following from the project root directory:
yarnAll commands below will be ran in the package directory:
cd packages/core-reactWe use Storybook to develop. Stories are broken into two categories, Demos for interactions and Coverage for displaying variants.
yarn storybookAdditional testing includes Visual Regression Testing (VRT) that is ran in CI, which compares pixel snapshots of Storybook Coverage stories.
Building
yarn buildTesting
Testing currently consists of Jest snapshots and React Testing Library tests.
yarn testJest Configuration
To ensure your Jest tests work seamlessly with @procore/core-react, we provide a configuration wrapper that you can easily use in your Jest setup.
Using Jest config file
jest.config.js
const { coreReactJestConfig } = require('@procore/core-react/jestConfig');
module.exports = coreReactJestConfig({
// Your existing Jest config
});Using Hammer
hammer.config.js
import { coreReactJestConfig } from '@procore/core-react/jestConfig';
export default {
testJest: (defaultConfig) => coreReactJestConfig({
...defaultConfig,
// Your existing Jest config
})
};Using Core Scripts
procore.config.js
const { coreReactJestConfig } = require('@procore/core-react/jestConfig');
module.exports = () => ({
jestOverride: (defaultConfig) => coreReactJestConfig({
...defaultConfig,
// Your existing Jest config
}),
});Contributing and Styleguide
Bug reports and pull requests are welcome on GitHub at https://github.com/procore/core. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
In lieu of a formal styleguide, we use husky to create a precommit hook, which executes lint-staged to automatically format any git staged files using prettier.
License
The package is available under the Procore Developers License
About Procore

Procore - building the software that builds the world.
Learn more about the #1 most widely used construction management software at procore.com