Skip to content
Zid partners
Developer programsAn overview of every way to build on ZidApp PartnersPublish your app in the Zid App MarketTheme PartnersLaunch your theme in the Zid Theme Market
App MarketApps available to Zid merchantsTheme MarketThemes ready to install
Support
Partner help centreHow-to guides and troubleshootingDeveloper docsAPIs, SDKs and integration guidesBook a meetingA business or technical support call
What's new
BlogGuides and updates for developersChangelogThe latest partner platform updatesSuggest a featureThe feedback and ideas board
Partner enablement
Partner Ads SoonVisibility packages on Zid’s channelsCustom themesThemes built for one merchantPartner communityConnect with developers building on Zid
Zid library
Zid reportsEverything you need to know about the marketDeveloper guidesOfficial references to build on
العربيةLog inJoin as a partner

Partner programs

Developer programsApp PartnersTheme Partners

Browse the market

App MarketTheme Market

Support & enablement

Partner help centreDeveloper docsBook a meetingBlogChangelogSuggest a featurePartner Ads SoonCustom themesPartner communityZid reportsDeveloper guides

Language

العربية
Log inJoin as a partner
Home/Blog/APIs & integration
APIs & integration

Zid MUI: build embedded-app screens that match the merchant dashboard

What Zid MUI is, how to install it with React or plain CSS, how its theme works, and which components to reach for when you build an embedded app.

Nov 11, 20265 min read

What Zid MUI is

Zid MUI is Zid's UI library. It's built on the MUI design system and follows Zid's brand guidelines, and it ships shared components, icons, hooks and theme utilities so products built for Zid look and behave consistently.

The docs recommend it for one case in particular: if you're building an embedded app that runs inside the Zid Merchant Dashboard, use one of the Zid MUI options so your screens stay consistent with Zid's design system. The docs list what you get:

  • A consistent Zid look and feel across partner integrations.
  • Pre-built components that follow Zid's brand guidelines.
  • Faster UI work, because common patterns are already built.
  • RTL support out of the box.

The package is @zidsa/zidmui on npm, under the MIT license. Every component is documented with live examples in the Zid MUI Storybook at ui.zid.sa.

React setup

The React stack is the full component library with MUI integration. Install it together with its peer dependencies:

pnpm add @zidsa/zidmui react react-dom use-debounce @mui/material @mui/lab @emotion/styled

At the time of writing, the current release (3.3.1) expects React 19.2, MUI 7 (@mui/material and @mui/lab) and use-debounce 10 as peers, so check your project's versions before you add it. Then wrap your app in MUI's ThemeProvider with the Zid theme. Each component, icon and hook has its own import path, so you only pull in what you use:

import { ThemeProvider, CssBaseline } from '@mui/material';
import { themeParcel } from '@zidsa/zidmui/theme/theme';

const App = ({ children }) => {
  return (
    <ThemeProvider theme={themeParcel}>
      <CssBaseline />
      {children}
    </ThemeProvider>
  );
}

// Each component, icon and hook has its own import path
import { AppButton } from '@zidsa/zidmui/components/app-button';
import { AppInputBase } from '@zidsa/zidmui/components/app-input-base';
import { IconSearchLine } from '@zidsa/zidmui/icons/system/search-line';
import { useToggle } from '@zidsa/zidmui/hooks/use-toggle';

How the theme works

themeParcel is a standard MUI theme, so everything inside the provider picks up Zid's palette, typography, shadows and component styles. Some details from the package itself:

  • Typography: the font stack starts with IBM Plex Sans Arabic, the same font the docs ask CSS-only projects to load.
  • Shape: a base border radius of 8px.
  • Dark mode: the package also exports themeParcelDark from @zidsa/zidmui/theme/theme.dark.
  • CSS tokens: the stylesheets define variables such as --zid-color-primary-600 and --zid-radius-md, with dark values under [data-theme="dark"].
Build on the theme instead of overriding it. The point of Zid MUI is that your app looks like the rest of the dashboard, and heavy custom styling works against that.

Components worth knowing

Most React components use an App prefix. The ones you'll likely use most in an embedded app:

  • Actions: AppButton, AppIconButton.
  • Forms: AppInputBase, AppInputBaseSearch, AppCheckbox, AppRadioGroup, AppInputRadioCard, AppSwitch, AppSwitchGroup.
  • Layout and content: AppCard, AppAccordion, AppTabs, AppListItem, AppTypography, and the StackRow and StackColumn helpers.
  • Feedback: AppAlert, AppStatus, AppEmptyState, AppDialog, AppTooltip, AppPagination.
  • Hooks: useToggle, useDebounceState, usePaginatedData, useCustomEventListener.

AppButton limits color and variant to the combinations the design system supports. For example, color="primary" only takes variant="contained", and color="secondary" takes text or outlined. Your editor's type checking will flag an unsupported pair.

Beyond components, the library ships icons grouped by category (system, arrows, business, finance and more), illustrations, and Zid, payment and delivery logos. Browse them in the Storybook before you draw your own.

No React? Use the CSS-only stack

For Vue, Angular, vanilla JS or any other stack, Zid MUI ships plain CSS with design tokens and component classes. Install the package:

pnpm add @zidsa/zidmui

In your stylesheet, @import '@zidsa/zidmui/styles/index.css'; loads everything. To load only what you need, import individual files instead, such as styles/colors.css, styles/typography.css, styles/components/button.css and styles/components/input.css. Then load IBM Plex Sans Arabic and use the component classes in your markup:

<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Arabic:wght@400;500;600;700&display=swap" rel="stylesheet">

<button class="zid-button zid-button--contained zid-button--primary zid-button--md">
  Submit
</button>

<div class="zid-input zid-input--md zid-input--error">
  <input type="text" class="zid-input__field" placeholder="Email" />
</div>
<span class="zid-input-helper zid-input-helper--error">Invalid email</span>

Fitting it into your embedded app

Zid MUI covers how your app looks. How it loads inside the dashboard is covered by the Embedded Apps guide, and both apply:

  • Zid loads your Application URL in an iframe and appends a language parameter, for example ?token=...&language=en. A good practice is to set your page's language and direction from it, so Arabic screens render right to left.
  • Every page served in the iframe still needs the CSP headers from the Embedded Apps guide, including frame-ancestors, or the dashboard blocks it.
  • Keep access_token and authorization on your server. The UI layer should never receive them.

Before you submit, open your app inside the dashboard on a development store and compare it with the native screens around it, in both Arabic and English.

Key takeaways

  • Zid MUI (@zidsa/zidmui) is the UI library the docs recommend for embedded apps, so your screens match the merchant dashboard.
  • React projects wrap the app in ThemeProvider with themeParcel. Other stacks import the CSS and use zid-* classes.
  • Check peer dependency versions first: the current release expects React 19.2 and MUI 7.
  • Use the language parameter Zid appends to your Application URL to render Arabic screens right to left.
  • Browse components, icons and logos in the Storybook at ui.zid.sa before you build your own.

Sources

  1. Zid MUI - Zid Docs
  2. Embedded Apps - Zid Docs
  3. Zid MUI Storybook
  4. @zidsa/zidmui package (npm registry)

Start building on Zid

Sign up in the partner portal, then build and test on a development store.

Create your account →

Contents

  1. What Zid MUI is
  2. React setup
  3. How the theme works
  4. Components worth knowing
  5. No React? Use the CSS-only stack
  6. Fitting it into your embedded app

Share

Start building

Related articles

→
APIs & integration

Storefront events on Zid: track views, carts and purchases from your app scripts

Which storefront events Zid exposes, what each payload contains, how to add tracking scripts through Custom Snippets, and the zidTracking helpers for theme developers.

6 min read
APIs & integration

Rate limits and errors on the Zid API: pace your requests, handle 429s and read error responses

How the 60-requests-per-minute limit works, how to back off on 429s, what error responses look like, and how pagination, caching and webhooks keep you under the limit.

6 min read
APIs & integration

The Zid ERP integration guide: what to build, in what order

A new 53-page partner guide: what an ERP, accounting or WMS integration needs from a Zid store — push vs pull, OAuth, money, returns and a go-live checklist.

5 min read
Zid Partners

Partner programs

Developer programsApp PartnersTheme PartnersCreate your account

Resources

BlogZid reportsDeveloper docsPartner help centerChangelogRequest a feature

Enablement

Partner Ads Soon

Browse the market

App MarketTheme Market

Terms & policies

Partner terms and conditionsPrivacy policy

Get in touch

Book a business callBook a technical support callPartners community
Zid — Al-Qudrah Al-Taqniyah for Technology and Communicationالعربية
Al-Qudrah Al-Taqniyah for Technology and Communication CompanyCR No. 1010365366VAT No. 300827827900003