theme-ui#ThemeProvider TypeScript Examples
The following examples show how to use
theme-ui#ThemeProvider.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: test-utils.tsx From slice-machine with Apache License 2.0 | 7 votes |
function render(
ui: any,
{
preloadedState,
store = configureStore(preloadedState).store,
...renderOptions
}: RenderArgs = {}
) {
function Wrapper({ children }: { children: any }) {
return (
<ThemeProvider theme={theme}>
<BaseStyles>
<Provider store={store}>{children}</Provider>
</BaseStyles>
</ThemeProvider>
);
}
return rtlRender(ui, { wrapper: Wrapper, ...renderOptions });
}
Example #2
Source File: App.tsx From HappyIslandDesigner with MIT License | 6 votes |
//export interface AppProps { }
export function App(/*props: AppProps*/) {
return (
<ThemeProvider theme={theme}>
<main>
{/* <Flex
p={2}
color='color'
bg='background'
sx={{
alignItems: 'center'
}}>
<Text p={2}>Rebass</Text>
<Box mx='auto' />
</Flex> */}
<ModalMapSelect />
</main>
</ThemeProvider>
);
}
Example #3
Source File: providers.tsx From desktop with MIT License | 6 votes |
export function Providers({ children }: { children: ReactNode }): JSX.Element {
return (
<ConfigProvider>
<RunnerProvider>
<ThemeProvider theme={theme}>{children}</ThemeProvider>
</RunnerProvider>
</ConfigProvider>
)
}
Example #4
Source File: Layout.tsx From nextjs-shopify with MIT License | 5 votes |
InnerLayout: React.FC<{
themeName: string
colorOverrides?: {
text?: string
background?: string
primary?: string
secondary?: string
muted?: string
}
}> = ({ themeName, children, colorOverrides }) => {
const theme = {
...themesMap[themeName],
colors: {
...themesMap[themeName].colors,
...colorOverrides,
},
}
const { displaySidebar, closeSidebar } = useUI()
const { acceptedCookies, onAcceptCookies } = useAcceptCookies()
return (
<ThemeProvider theme={theme}>
<Navbar />
<div
sx={{
margin: `0 auto`,
px: 20,
maxWidth: 1920,
minWidth: '60vw',
minHeight: 800,
}}
>
<main>{children}</main>
</div>
<Sidebar
open={
displaySidebar ||
(builder.editingModel || Builder.previewingModel) ===
'cart-upsell-sidebar'
}
onClose={closeSidebar}
>
<CartSidebarView />
</Sidebar>
<NoSSR>
<FeatureBar
title="This site uses cookies to improve your experience. By clicking, you agree to our Privacy Policy."
hide={Builder.isEditing ? true : acceptedCookies}
action={
<Button onClick={() => onAcceptCookies()}>Accept cookies</Button>
}
/>
</NoSSR>
</ThemeProvider>
)
}
Example #5
Source File: ChatWidgetContainer.tsx From chat-widget with MIT License | 5 votes |
render() {
const {
isOpen,
isLoaded,
query,
config,
shouldDisplayNotifications,
isTransitioning,
} = this.state;
const {
customIconUrl,
hideOutsideWorkingHours = false,
children,
} = this.props;
const {primaryColor} = config;
if (!query) {
return null;
}
if (hideOutsideWorkingHours && config.isOutsideWorkingHours) {
return null;
}
const iframeUrl = this.getIframeUrl();
const isActive = (isOpen || shouldDisplayNotifications) && !isTransitioning;
const theme = getThemeConfig({primary: primaryColor});
const sandbox = [
// Allow scripts to load in iframe
'allow-scripts',
// Allow opening links from iframe
'allow-popups',
// Needed to access localStorage
'allow-same-origin',
// Allow form for message input
'allow-forms',
].join(' ');
return (
<ThemeProvider theme={theme}>
{children({
sandbox,
isLoaded,
isActive,
isOpen,
isTransitioning,
customIconUrl,
iframeUrl,
query,
shouldDisplayNotifications,
setIframeRef: this.setIframeRef,
onToggleOpen: this.handleToggleOpen,
})}
</ThemeProvider>
);
}
Example #6
Source File: Widget.tsx From chat-window with MIT License | 5 votes |
render() {
const {config = {}} = this.state;
if (Object.keys(config).length === 0) {
return null;
}
const {
token,
inbox,
accountId,
customerId,
greeting,
awayMessage,
companyName,
agentAvailableText,
agentUnavailableText,
title = 'Welcome!',
subtitle = 'How can we help you?',
newMessagePlaceholder = 'Start typing...',
emailInputPlaceholder = 'Enter your email',
newMessagesNotificationText = 'View new messages',
primaryColor = '1890ff',
baseUrl = 'https://app.papercups.io',
requireEmailUpfront = '0',
showAgentAvailability = '0',
disableAnalyticsTracking = '0',
closeable = '1',
debug = '0',
mobile = '0',
metadata = '{}',
version = '1.0.0',
ts,
} = config;
const theme = getThemeConfig({primary: primaryColor});
const customer = parseCustomerMetadata(metadata);
return (
<ThemeProvider theme={theme}>
<ChatWindow
accountId={token || accountId}
inboxId={inbox}
customerId={customerId}
title={title}
subtitle={subtitle}
greeting={greeting}
awayMessage={awayMessage}
companyName={companyName}
newMessagePlaceholder={newMessagePlaceholder}
emailInputPlaceholder={emailInputPlaceholder}
newMessagesNotificationText={newMessagesNotificationText}
agentAvailableText={agentAvailableText}
agentUnavailableText={agentUnavailableText}
showAgentAvailability={!!Number(showAgentAvailability)}
shouldRequireEmail={!!Number(requireEmailUpfront)}
isMobile={!!Number(mobile)}
isCloseable={!!Number(closeable)}
debug={!!Number(debug)}
disableAnalyticsTracking={!!Number(disableAnalyticsTracking)}
baseUrl={baseUrl}
customer={customer}
version={version}
ts={ts}
/>
</ThemeProvider>
);
}
Example #7
Source File: _app.tsx From slice-machine with Apache License 2.0 | 5 votes |
function MyApp({ Component, pageProps }: AppContext & AppInitialProps) {
const [serverState, setServerState] = useState<ServerState | null>(null);
const [smStore, setSMStore] = useState<{
store: Store;
persistor: Persistor;
} | null>(null);
useEffect(() => {
async function getInitialState() {
const { data: serverState } = await getState();
setServerState(serverState);
}
void getInitialState();
}, []);
useEffect(() => {
if (!serverState) {
return;
}
const normalizedCustomTypes = normalizeFrontendCustomTypes(
serverState.customTypes,
serverState.remoteCustomTypes
);
const { store, persistor } = configureStore({
environment: serverState.env,
availableCustomTypes: {
...normalizedCustomTypes,
},
slices: {
libraries: serverState.libraries,
remoteSlices: serverState.remoteSlices,
},
});
const state = store.getState();
const tracking = getIsTrackingAvailable(state);
const repoName = getRepoName(state);
Tracker.get().initialize(
process.env.NEXT_PUBLIC_SM_UI_SEGMENT_KEY ||
"Ng5oKJHCGpSWplZ9ymB7Pu7rm0sTDeiG",
repoName,
tracking
);
setSMStore({ store, persistor });
}, [serverState]);
return (
<>
<Head>
<title>SliceMachine</title>
</Head>
<ThemeProvider theme={theme}>
<BaseStyles>
<RemoveDarkMode>
{!smStore || !serverState ? (
<LoadingPage />
) : (
<Provider store={smStore.store}>
<ConnectedRouter>
<PersistGate loading={null} persistor={smStore.persistor}>
<SliceMachineApp>
<Component {...pageProps} />
</SliceMachineApp>
</PersistGate>
</ConnectedRouter>
</Provider>
)}
</RemoveDarkMode>
</BaseStyles>
</ThemeProvider>
</>
);
}
Example #8
Source File: index.tsx From nft-market with MIT License | 5 votes |
ReactDOM.render( <React.StrictMode> <ThemeProvider theme={theme}> <Root /> </ThemeProvider> </React.StrictMode>, document.getElementById('root') )