--- Title: Interface Components Section: Guides Order: 2 --- N1 uses [React](https://facebook.github.io/react/) to create a fast, responsive UI. Packages that want to extend the N1 interface should use React. Using React's [JSX](https://facebook.github.io/react/jsx-in-depth.html) syntax is optional, but both [JSX](https://facebook.github.io/react/jsx-in-depth.html) and [CJSX](https://github.com/jsdf/coffee-react) (CoffeeScript) are available. For a quick introduction to React, take a look at Facebook's [Getting Started with React](http://facebook.github.io/react/docs/getting-started.html). #### React Components N1 provides a set of core React components you can use in your packages. Many of the standard components listen for key events, include considerations for different platforms, and have extensive CSS. Wrapping standard components makes it easy to build rich interfaces that are consistent with the rest of the N1 platform. To use a standard component, require it from `nylas-component-kit` and use it in your component's `render` method.

Keep in mind that React's Component model is based on composition rather than inheritance. On other platforms, you might subclass {Popover} to create your own custom Popover. In React, you should wrap the standard Popover component in your own component, which provides the Popover with props and children to customize its behavior.

Here's a quick look at standard components you can require from `nylas-component-kit`: - **{Menu}**: Allows you to display a list of items consistent with the rest of the N1 user experience. - **{Spinner}**: Displays an indeterminate progress indicator centered within it's container. - **{Popover}**: Component for creating menus and popovers that appear in response to a click and stay open until the user clicks outside them. - **{Flexbox}**: Component for creating a Flexbox layout. - **{RetinaImg}**: Replacement for standard `` tags which automatically resolves the best version of the image for the user's display and can apply many image transforms. - **{ListTabular}**: Component for creating a list of items backed by a paginating ModelView. - **{MultiselectList}**: Component for creating a list that supports multi-selection. (Internally wraps ListTabular) - **{MultiselectActionBar}**: Component for creating a contextual toolbar that is activated when the user makes a selection on a ModelView. - **{ResizableRegion}**: Component that renders it's children inside a resizable region with a draggable handle. - **{TokenizingTextField}**: Wraps a standard `` and takes function props for tokenizing input values and displaying autocompletion suggestions. - **{EventedIFrame}**: Replacement for the standard `