@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
47 lines (44 loc) • 1.28 kB
JavaScript
"use client";
import * as React from "react";
import { ThemeProvider as StyledThemeProvider } from "styled-components";
import { tokensToCssVars } from "@kiwicom/orbit-design-tokens";
import QueryContextProvider from "./QueryContext/Provider";
import RandomIdProvider from "./RandomId/Provider";
// we need only palette tokens for whitelables
const getCssVarsForWL = theme => Object.keys(theme).reduce((acc, key) => {
if (key.startsWith("palette")) {
acc[key] = theme[key];
}
return acc;
}, {});
/**
*
* Use OrbitProvider with useId prop as follows to still use `react-uid`:
* ```jsx
<UIDReset>
<UIDFork>
<OrbitProvider theme={theme} useId={useUID}>
{children}
</OrbitProvider>
</UIDFork>
</UIDReset>
* ```
*
*/
const OrbitProvider = ({
theme,
children,
useId
}) => {
return /*#__PURE__*/React.createElement(RandomIdProvider, {
useId: useId
}, /*#__PURE__*/React.createElement("style", {
id: "orbit-theme-css-vars"
}, tokensToCssVars({
tokens: getCssVarsForWL(theme.orbit),
cssClass: ":root"
})), /*#__PURE__*/React.createElement(StyledThemeProvider, {
theme: theme
}, /*#__PURE__*/React.createElement(QueryContextProvider, null, children)));
};
export default OrbitProvider;