MCPcopy Index your code
hub / github.com/pinterest/gestalt

github.com/pinterest/gestalt @v177.0.13

Chat with this repo
repository ↗ · DeepWiki ↗ · release v177.0.13 ↗ · + Follow
3,183 symbols 8,351 edges 2,751 files 30 documented · 1% updated 3mo agov177.0.13 · 2026-01-07★ 4,364
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Gestalt · NPM Version License

Gestalt is Pinterest’s design system. Our system includes a React component library with comprehensive guidelines, best practices, tools, and resources to support designers and engineers delivering a high-quality product.

Visit the official Gestalt Documentation

Installation

The package can be installed via npm:

npm i gestalt --save
npm i gestalt-charts --save
npm i gestalt-datepicker --save

Or via yarn:

yarn add gestalt
yarn add gestalt-charts
yarn add gestalt-datepicker

Usage

Gestalt exports each component as ES6 modules and a single, precompiled CSS file:

import { Text } from 'gestalt';
import 'gestalt/dist/gestalt.css';
import 'gestalt/dist/gestalt-datepicker.css';

That syntax is Webpack specific (and will work with Create React App), but you can use Gestalt anywhere that supports ES6 module bundling and global CSS.

Development

Gestalt is a multi-project monorepo. The docs and components are all organized as separate packages that share similar tooling.

Install project dependencies and run tests:

yarn
yarn test

Build and watch Gestalt & run the docs server:

yarn start

Visit http://localhost:8888/ and click on a component to view the docs.

Codemods

When a release will cause breaking changes — in usage or in typing — we provide a codemod to ease the upgrade process. Codemods are organized by release in /packages/gestalt-codemods.

Codemod Usage

Clone the Gestalt repo locally if you haven't already. Run the relevant codemod(s) in the relevant directory of your repo (not the Gestalt repo): anywhere the component to be updated is used. Example usage for a codebase using TypeScript:

yarn codemod --parser=tsx -t={relative/path/to/codemod} relative/path/to/your/code.tsx

For a dry run to see what the changes will be, add the -d (dry run) and -p (print output) flags (pipe stdout to a file for easier inspection if you like).

Releasing

Every commit to master performs a release. As a reviewer, ensure the correct label is attached to every PR. Please follow semantic versioning.

  • patch release: documentation updates / spelling mistakes in code / internal scripts
  • minor release: add component / add component props / API change with codemod
  • major release: backwards incompatible API change without codemod

Example PR title: Avatar: Add outline prop

Typescript Support

Gestalt officiallty supports and maintains Typescript declarations files.

Issues

Gestalt is Pinterest's open-sourced design system. However, Gestalt's web component library is almost exclusively developed by a 5 engineer team within Pinterest, and our primary customers are Pinterest engineers who use Gestalt. The team’s priority is the needs of our internal Pinterest customers.

We do not have resources to work on features or issues requested only by external developers. We also handle a very large amount of internal support requests, so we do not have the resources to respond to external Github issues.

Pinterest is staying open source, as it's a great resource for the design and engineering community, but we don't provide support to external developers. If you need to get in touch, send us an email.

Troubleshooting

Take a look at our FAQ section if you run into any development problems.

Extension points exported contracts — how you extend this code

Indexable (Interface)
(no doc) [4 implementers]
packages/gestalt/src/zIndex.ts
Indexable (Interface)
(no doc) [2 implementers]
packages/gestalt-charts/src/ChartGraph.tsx
Indexable (Interface)
(no doc) [2 implementers]
packages/gestalt-datepicker/src/DatePicker.tsx
AvatarProps (Interface)
(no doc)
docs/examples/avatar/colorExample.tsx
Indexable (Interface)
(no doc) [2 implementers]
packages/gestalt/src/contexts/SideNavigationProvider.tsx
Indexable (Interface)
(no doc) [2 implementers]
packages/gestalt-charts/src/ChartGraph/TabularDataModal.tsx
TextFieldProps (Interface)
(no doc)
packages/gestalt-datepicker/src/DateField/VRInternalDateField.tsx
Cache (Interface)
(no doc) [1 implementers]
packages/gestalt/src/Masonry/Cache.ts

Core symbols most depended-on inside this repo

create
called by 355
packages/eslint-plugin-gestalt/src/prefer-list.ts
expectAccessiblePage
called by 174
playwright/accessibility/expectAccessiblePage.ts
myI18nTranslator
called by 93
docs/examples/defaultlabelprovider/translations.tsx
set
called by 81
packages/gestalt/src/Masonry/Cache.ts
docGen
called by 80
docs/docs-components/docgen.ts
get
called by 67
packages/gestalt/src/Masonry/Cache.ts
waitForRenderedItems
called by 57
playwright/masonry/utils/waitForRenderedItems.ts
getRandomColor
called by 49
docs/integration-test-helpers/masonry/items-utils/getRandomColor.ts

Shape

Function 3,047
Method 85
Class 34
Interface 15
Enum 2

Languages

TypeScript100%

Modules by API surface

packages/eslint-plugin-gestalt/src/helpers/eslintASTHelpers.ts29 symbols
packages/gestalt/src/Masonry/multiColumnLayout.ts17 symbols
packages/gestalt-codemods/generic-codemods/utils.ts17 symbols
scripts/releaseSteps.js14 symbols
packages/gestalt/src/Masonry/Graph.ts14 symbols
scripts/whitespace.js13 symbols
packages/gestalt/src/boxTransforms.ts13 symbols
packages/gestalt/src/Video.tsx12 symbols
packages/gestalt/src/Masonry/GraphNode.ts12 symbols
packages/gestalt/src/Masonry.tsx12 symbols
packages/gestalt/src/MasonryV2.tsx11 symbols
packages/gestalt/src/zIndex.ts10 symbols

Dependencies from manifests, versioned

@actions/core1.9.1 · 1×
@actions/github4.0.0 · 1×
@babel/core7.12.9 · 1×
@babel/eslint-parser7.17.0 · 1×
@babel/node7.23.9 · 1×
@babel/plugin-proposal-class-properties7.10.4 · 1×
@babel/plugin-transform-react-jsx7.12.7 · 1×
@babel/plugin-transform-react-jsx-self7.12.13 · 1×
@babel/preset-env7.11.5 · 1×
@babel/preset-react7.13.13 · 1×
@babel/preset-typescript7.24.1 · 1×

For agents

$ claude mcp add gestalt \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact