UNPKG

9.6 kBMarkdownView Raw
1# [Polaris React](https://polaris.shopify.com/)
2
3[![npm version](https://img.shields.io/npm/v/@shopify/polaris.svg?style=flat)](https://www.npmjs.com/package/@shopify/polaris) [![CircleCI build status](https://circleci.com/gh/Shopify/polaris-react.svg?style=shield&circle-token=c8498f3af1d113fe3974c8881c4ce32ef09423c2)](https://circleci.com/gh/Shopify/polaris-react) [![codecov](https://codecov.io/gh/Shopify/polaris-react/branch/master/graph/badge.svg?token=IKyeKcpRs1)](https://codecov.io/gh/Shopify/polaris-react) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Shopify/polaris-react/blob/master/.github/CONTRIBUTING.md#your-first-pull-request)
4
5Polaris React is a component library designed to help developers create the best experience for merchants who use Shopify. Visit the [Polaris style guide](https://polaris.shopify.com) to learn more.
6
7## App development
8
9For more information about creating apps for the Shopify App Store, take a look at the [app development documentation](https://developers.shopify.com/app-development).
10
11## Using the React components
12
13While we do offer a CSS-only version, **we strongly recommend using the React versions of our components**. It’s the version that we use at Shopify. It allows for rich, complex components like Tabs and Popovers, and will not have as many breaking changes as the CSS-only version.
14
15### Installation
16
17Run the following command using [npm](https://www.npmjs.com/):
18
19```bash
20npm install @shopify/polaris --save
21```
22
23If you prefer [Yarn](https://yarnpkg.com/en/), use the following command instead:
24
25```bash
26yarn add @shopify/polaris
27```
28
29### Usage
30
311. Import the CSS directly into your project if your asset packager supports it:
32
33```js
34import '@shopify/polaris/styles.css';
35```
36
37Otherwise include the CSS in your HTML. We suggest copying the styles file into your own project, but you may also use it directly:
38
39```html
40<link
41 rel="stylesheet"
42 href="https://unpkg.com/@shopify/polaris@4.8.0/styles.min.css"
43/>
44```
45
462. Include the translations and any of the provided components in your project:
47
48```js
49import enTranslations from '@shopify/polaris/locales/en.json';
50import {AppProvider, Page, Card, Button} from '@shopify/polaris';
51```
52
533. Tell React to render the element in the DOM:
54
55```js
56ReactDOM.render(
57 <AppProvider i18n={enTranslations}>
58 <Page title="Example app">
59 <Card sectioned>
60 <Button onClick={() => alert('Button clicked!')}>Example button</Button>
61 </Card>
62 </Page>
63 </AppProvider>,
64 document.querySelector('#app'),
65);
66```
67
68### Building an embedded app
69
70We provide React wrappers around the Shopify App Bridge (formerly known as the EASDK). You don’t need to go through the initialization of the Shopify App Bridge as described in the docs. Instead, [configure the connection to the Shopify admin through the app provider component](https://github.com/Shopify/polaris-react/blob/master/documentation/Embedded%20apps.md).
71
72If you need help using Shopify App Bridge, the Embedded App SDK, or the POS App SDK, please visit our [API & SDK forum](https://community.shopify.com/c/Shopify-APIs-SDKs/bd-p/shopify-apis-and-technology). It is the best place to discuss the libraries, get support, notify us about bugs, or request features.
73
74## Using the CSS components
75
76If React doesn’t make sense for your application, you can use a CSS-only version of our components. This includes all the styles you need for every component in the library, but you’ll be responsible for writing the correct markup and updating classes and DOM attributes in response to user events.
77
78### Usage
79
801. Include the CSS in your HTML. We suggest copying the styles file into your own project, but you may also use it directly:
81
82```html
83<link
84 rel="stylesheet"
85 href="https://unpkg.com/@shopify/polaris@4.8.0/styles.min.css"
86/>
87```
88
892. Include the markup and associated classes in your HTML document:
90
91```html
92<button class="Polaris-Button">Example button</button>
93```
94
95## Examples
96
97We have created example applications to document some of the ways you could include Polaris in one of your own applications. Each of these examples includes further documentation on how to install dependencies and run the app:
98
99- [create-react-app example](https://github.com/Shopify/polaris-react/tree/master/examples/create-react-app)
100- [create-react-app with TypeScript and react-testing example](https://github.com/Shopify/polaris-react/tree/master/examples/create-react-app-ts-react-testing)
101- [Webpack example](https://github.com/Shopify/polaris-react/tree/master/examples/webpack)
102- [CSS-only example](https://github.com/Shopify/polaris-react/tree/master/examples/cdn-styles)
103- [next.js example](https://github.com/Shopify/polaris-react/tree/master/examples/next.js)
104
105## Development
106
107We use Storybook to create a simple, hot-reloading playground for development on these components. You can edit the `playground/Playground.tsx` file to import the components you are working on, and run `yarn dev` in order to start the development server. Please do not commit your work on the playground so that it remains pristine for other developers to work on.
108
109### Testing on mobile or a virtual machine
110
111To test the changes on a mobile or virtual machine, you will need to open the source of the iFrame, to do this:
112
1131. Run `yarn dev`
1141. Make sure your virtual machine and mobile device are on the same network
1151. Open http://YOUR_IP_ADDRESS:ASSIGNED_PORT/iframe.html?selectedKind=Playground&selectedStory=Playground in your mobile device or virtual machine
116
117### Testing in a consuming project
118
1191. In your terminal, run `yarn run build-consumer PROJECT_DIRECTORY` from the polaris-react repo
120
121`PROJECT_DIRECTORY` is where the build will be copied, which must be a sibling of the `polaris-react` directory.
122
123```sh
124# Example
125yarn run build-consumer polaris-styleguide
126```
127
1282. In your terminal, open a second tab and run `yarn run dev` from the `polaris-styleguide` repository
129
130In the example above, the build is copied to `polaris-styleguide/node_modules/@shopify/polaris`. And in this case, a rebuild of `polaris-styleguide` is required after copying the `polaris-react` build, but may not be the case for all consuming projects.
131
132```sh
133# Example
134cd ../polaris-styleguide/
135yarn run build:development
136```
137
138Also, when running `yarn install`, copied builds will be overwritten and will require running `yarn run build-consumer PROJECT_DIRECTORY` again.
139
140### Visual regression testing
141
142[Percy](https://percy.io/) runs for every pull request. Percy is a tool that compares screenshots for every single component we have in the library.
143
144Percy is not always 100% accurate. Since it uses screenshot comparison, even browser sub-pixel rendering differences can cause Percy to ask for user confirmation of whether a change was intended or not. In cases like that, use your best judgement to determine whether you need to address it or not. This is why the choice to approve something or not is always manual. While everyone can view changes, only members of the Shopify team an approve changes.
145
146#### Manual visual regression testing
147
148To start a server for manually viewing the visual regression testing examples, run `yarn run dev`.
149
150## Learning resources
151
152If you’re new to React, we recommend you start with the [official React Getting Started documentation](https://facebook.github.io/react/docs/hello-world.html). As you read through the topics we suggest you follow along using their [React Hello World CodePen example](http://codepen.io/gaearon/pen/ZpvBNJ?editors=0010).
153
154Additional resources:
155
156- Online training courses at [reacttraining.com](http://reacttraining.com), [buildwithreact.com](http://buildwithreact.com), and [reactforbeginners.com](http://reactforbeginners.com).
157- The community resources in [Awesome React](https://github.com/enaqx/awesome-react).
158- As questions and find answers in the various [React support communities](https://facebook.github.io/react/community/support.html).
159
160## Methodology
161
162We set out to make our components easy to use. Each of our components has a well-documented (and fully typed) public interface with strong, consistently-applied conventions. This way, developers don’t need to worry about the underlying implementation. Instead, they can focus on creating amazing merchant experiences.
163
164We ensure that our components are made for everyone. They meet accessibility standards and are responsive to any screen or device. We also put a lot of effort into optimizing the performance of the components, so everyone can build inclusive experiences that work.
165
166We make our components flexible enough to meet diverse needs. They present the information you pass in and give you smart callbacks when something has changed, but they don’t enforce any structure beyond that. No matter what type of experience you’re creating, you can use components as the building blocks of your product or feature.
167
168## Contributing
169
170Pull requests are welcome. See the [contribution guidelines](https://github.com/Shopify/polaris-react/blob/master/.github/CONTRIBUTING.md) for more information.
171
172## Licenses
173
174- Source code is under a [custom license](https://github.com/Shopify/polaris-react/blob/master/LICENSE.md) based on MIT. The license restricts Polaris usage to applications that integrate or interoperate with Shopify software or services, with additional restrictions for external, stand-alone applications.
175- All icons and images are licensed under the [Polaris Design Guidelines License Agreement](https://polaris.shopify.com/legal/license)