JSPM

@saleor/macaw-ui

1.1.20
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4721
  • Score
    100M100P100Q143563F
  • License CC-BY-4.0

Saleor's UI component library

Package Exports

    Readme

    MacawUI logo

    npm package npm download Bundle Size

    MacawUI

    Official React UI components kit for Saleor — an open-source GraphQL-first and Next.js ready e-commerce platform. You can find most of the elements used in the creation of Saleor's dashboard interface and use it to create Saleor Apps. Have a great time working on your projects and empowering your users. If you have any questions, feel free to let us know on GitHub Discussions.

    Installation

    npm i @saleor/macaw-ui

    Usage

    You need to import the styles into your app. You can do it in your main entry point, for example index.tsx`:

    import "@saleor/macaw-ui/style";

    Next, you need to add the ThemeProvider to your app. It will provide the theme to the components:

    import { ThemeProvider } from "@saleor/macaw-ui";
    
    const App = () => (
      <ThemeProvider>
        <App />
      </ThemeProvider>
    );

    Usage with Next.js

    If you need to render styles on the server we recommend that you use getCSSVariables helper to get the CSS variables that can be injected in _document.tsx:

    import { getCSSVariables } from "@saleor/macaw-ui";
    import Document, { Head, Html, Main, NextScript } from "next/document";
    
    const css = getCSSVariables("defaultLight"); // or "defaultDark"
    
    export default class AppDocument extends Document {
      render() {
        return (
          <Html style={css}>
            <Head />
            <body>
              <Main />
              <NextScript />
            </body>
          </Html>
        );
      }
    }

    Usage with form libraries

    React Hook Form

    You need to wrap the MacawUI component with Controller. For example:

    import { Input } from "@saleor/macaw-ui";
    
    <Controller
      control={control}
      name="name-input"
      render={({ field }) => <Input {...field} />}
    />;

    Usage with Sentry

    Add following configuration to Sentry.Integrations.Breadcrumbs:

    {
      dom: {
        serializeAttribute: ["macaw-ui-component"];
      }
    }

    Right now sentry will display MacawUI components names in breadcrumbs.

    Development

    To begin, you need to install dependencies:

    pnpm install

    Then, you can run the Storybook:

    pnpm dev

    You can run build in watch mode (useful for real-time development with e.g Dashboard):

    pnpm watch

    When you finish woking, you can add new changeset

    pnpm change:add

    Useful tooling

    License

    Distributed under the Creative Common Attribution 4.0 International License https://creativecommons.org/licenses/by/4.0/

    Thanks

    Chromatic

    Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.