@material-ui/core/styles#StylesProvider TypeScript Examples
The following examples show how to use
@material-ui/core/styles#StylesProvider.
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: App.tsx From planning-poker with MIT License | 6 votes |
function App() {
return (
<div className="LightTheme">
<ThemeProvider theme={theme} >
<StylesProvider injectFirst>
<CssBaseline />
<Router>
<Toolbar />
<Switch>
<Route path='/game/:id' component={GamePage} />
<Route path='/join/:id' component={HomePage} />
<Route exact path='/*' component={HomePage} />
</Switch>
</Router>
</StylesProvider>
</ThemeProvider>
</div>
);
}
Example #2
Source File: Root.tsx From app-stormkit-io with GNU General Public License v3.0 | 6 votes |
Root: React.FC<Props> = ({ Router }): React.ReactElement => ( <StylesProvider injectFirst> <Router> <RootContext.Provider> <Switch> {routes.map(route => ( <Route {...route} key={Array.isArray(route.path) ? route.path[0] : route.path} /> ))} </Switch> </RootContext.Provider> </Router> </StylesProvider> )
Example #3
Source File: preview.tsx From SQForm with MIT License | 5 votes |
withTheme = (storyFn: () => ThemeProviderProps['children']) => {
return (
<StylesProvider injectFirst>
<LocalizationProvider dateAdapter={MomentAdapter} locale={'en'}>
<MuiThemeProvider theme={muiTheme}>{storyFn()}</MuiThemeProvider>
</LocalizationProvider>
</StylesProvider>
);
}
Example #4
Source File: Main.tsx From clearflask with Apache License 2.0 | 4 votes |
render() {
const Router = (windowIso.isSsr ? StaticRouter : BrowserRouter) as React.ElementType;
// Redirect www to homepage
if (windowIso.location.hostname.startsWith('www.')) {
return (<RedirectIso to={windowIso.location.origin.replace(`www.`, '')} />);
}
const isSelfHost = detectEnv() === Environment.PRODUCTION_SELF_HOST;
const isParentDomain = windowIso.location.hostname === windowIso.parentDomain
|| (!isProd() && windowIso.location.hostname === 'localhost');
const showSite = isParentDomain && !isSelfHost;
const showProject = !showSite;
const showDashboard = isParentDomain || isSelfHost;
if (showSite || showDashboard) {
trackingImplicitConsent();
}
return (
<ErrorBoundary showDialog>
<React.StrictMode>
<I18nextProvider i18n={this.props.i18n}>
<StylesProvider injectFirst>
<MuiThemeProvider theme={this.theme}>
<MuiSnackbarProvider notistackRef={notistackRef}>
<CssBaseline />
<ServerErrorNotifier />
<CaptchaChallenger />
<RemoveSsrCss />
<CrowdInInlineEditing />
<div style={{
minHeight: windowIso.isSsr ? undefined : this.theme.vh(100),
display: 'flex',
flexDirection: 'column',
background: this.theme.palette.background.default,
}}>
<Router
{...(windowIso.isSsr ? {
location: this.props.ssrLocation,
context: this.props.ssrStaticRouterContext,
} : {})}
>
<ScrollAnchor scrollOnNavigate />
<Route path='/' render={routeProps => {
trackingBlock(() => {
ReactGA.set({ page: routeProps.location.pathname + routeProps.location.search });
ReactGA.pageview(routeProps.location.pathname + routeProps.location.search);
});
return null;
}} />
<Route render={routeProps => routeProps.location.pathname.startsWith('/embed-status') ? null : (
<EnvironmentNotifier key='env-notifier' />
)} />
<Switch>
{[
(
<Route key='api-docs' path='/api' render={props => (
<NoSsr>
<ApiDocs />
</NoSsr>
)} />
),
...(!isProd() ? [(
<Route key='mock-oauth-provider-bathtub' path='/bathtub/authorize' render={props => (
<Provider store={ServerAdmin.get().getStore()}>
<BathtubOauthProvider />
</Provider>
)} />
)] : []),
...(showDashboard ? [(
<Route key='dashboard' path="/dashboard/:path?/:subPath*" render={props => (
<Provider store={ServerAdmin.get().getStore()}>
<SentryIdentifyAccount />
<SetMaxAge val={0 /* If you want to cache, don't cache if auth is present in URL */} />
<NoSsr>
<Dashboard {...props} />
</NoSsr>
<IntercomWrapperMain suppressBind />
<HotjarWrapperMain />
</Provider>
)} />
), (
<Route key='invoice' path="/invoice/:invoiceId" render={props => (
<Provider store={ServerAdmin.get().getStore()}>
<SentryIdentifyAccount />
<SetMaxAge val={0} />
<Invoice invoiceId={props.match.params['invoiceId']} />
</Provider>
)} />
), (
<Route key='enter' exact path='/:type(login|signup|invitation|coupon)/:id([a-z0-9]*)?' render={props => (
<Provider store={ServerAdmin.get().getStore()}>
<SetMaxAge val={0} />
<SetTitle title={props.match.params['type'] === 'login'
? 'Login'
: (props.match.params['type'] === 'signup'
? 'Sign up'
: (props.match.params['type'] === 'invitation'
? 'Invitation'
: 'Coupon'))} />
<AccountEnterPage
type={props.match.params['type']}
invitationId={props.match.params['type'] === 'invitation' ? props.match.params['id'] : undefined}
couponId={props.match.params['type'] === 'coupon' ? props.match.params['id'] : undefined}
/>
</Provider>
)} />
)] : []),
...(showProject ? [(
<Route key='embed-status' path="/embed-status/post/:postId" render={props => (
<>
<SetMaxAge val={24 * 60 * 60} />
<PostStatus
{...props}
postId={props.match.params['postId'] || ''}
/>
</>
)} />
), (
<Route key='app' path='/' render={props => (
<>
<SetMaxAge val={60} />
<App slug={windowIso.location.hostname} {...props} />
</>
)} />
)] : []),
...(showSite ? [(
<Route key='site' path='/' render={props => (
<Provider store={ServerAdmin.get().getStore()}>
<SentryIdentifyAccount />
<SetMaxAge val={24 * 60 * 60} />
<Site {...props} />
<IntercomWrapperMain />
<HotjarWrapperMain />
</Provider>
)} />
)] : []),
]}
</Switch>
</Router>
</div>
</MuiSnackbarProvider>
</MuiThemeProvider>
</StylesProvider>
</I18nextProvider>
</React.StrictMode>
</ErrorBoundary>
);
}
Example #5
Source File: AppThemeProvider.tsx From clearflask with Apache License 2.0 | 4 votes |
render() {
var expressionGrayscale: number | undefined = undefined;
switch (this.props.config && this.props.config.style.palette.expressionColor) {
case Client.PaletteExpressionColorEnum.Gray:
expressionGrayscale = 100;
break;
case Client.PaletteExpressionColorEnum.Washed:
expressionGrayscale = 50;
break;
}
var breakpoints;
if (this.props.forceBreakpoint) {
breakpoints = {};
var bpSeen;
['xs', 'sm', 'md', 'lg', 'xl'].forEach(bp => {
breakpoints[bp] = !bpSeen ? 0 : 10000;
if (!bpSeen && bp === this.props.forceBreakpoint) {
bpSeen = true;
};
})
}
var theme: Theme | undefined;
if (this.props.config) {
theme = createMuiTheme({
disableTransitions: !this.props.config.style.animation.enableTransitions,
funding: this.props.config.style.palette.funding
|| this.props.config.style.palette.primary,
// Optional green color
// || ( this.props.config.style.palette.darkMode ? '#6ca869' : '#89c586' ),
isInsideContainer: !!this.props.isInsideContainer,
expressionGrayscale: expressionGrayscale,
explorerExpandTimeout: 500,
vh,
palette: {
type: this.props.config.style.palette.darkMode ? 'dark' : 'light',
primary: {
main: this.props.config.style.palette.primary
|| (this.props.config.style.palette.darkMode ? '#2dbaa1' : '#218774'),
},
secondary: {
main: this.props.config.style.palette.primary
|| (this.props.config.style.palette.darkMode ? '#2dbaa1' : '#218774'),
},
...(this.props.config.style.palette.text ? {
text: {
primary: this.props.config.style.palette.text,
}
} : {}),
background: {
...(this.props.config.style.palette.background ? { default: this.props.config.style.palette.background } : {}),
...(this.props.config.style.palette.backgroundPaper ? { paper: this.props.config.style.palette.backgroundPaper } : {}),
},
},
typography: {
// TODO sanitize input, currently you can inject custom css with "; inject: me"
/* If changed, change in index.html, Main.tsx */
fontFamily: this.props.config.style.typography.fontFamily || '"Inter", -apple-system-body, BlinkMacSystemFont, SFUI, HelveticaNeue, Helvetica, Arial, sans-serif',
fontSize: this.props.config.style.typography.fontSize || 14,
},
transitions: {
...(this.props.config.style.animation.enableTransitions ? {} : {
create: () => 'none',
duration: {
shortest: 0,
shorter: 0,
short: 0,
standard: 0,
complex: 0,
enteringScreen: 0,
leavingScreen: 0,
},
}),
},
breakpoints: {
...(breakpoints ? {
values: breakpoints,
} : {}),
},
props: {
...ComponentPropsOverrides,
MuiDialog: {
...(!windowIso.isSsr ? {
container: () => document.getElementById(this.props.appRootId)!,
} : {}),
...(this.props.isInsideContainer ? {
style: { position: 'absolute' },
BackdropProps: { style: { position: 'absolute' } },
} : {}),
},
MuiButtonBase: {
...(!this.props.config.style.animation.enableTransitions ? {
disableRipple: true,
} : {}),
},
},
})
} else {
theme = createMuiTheme();
}
return (
<StylesProvider injectFirst>
<MuiThemeProvider theme={theme}>
{!this.props.supressCssBaseline && (<CssBaseline />)}
<div style={{
height: '100%',
...(this.props.containerStyle?.(theme) || {}),
background: theme.palette.background.default,
color: theme.palette.text.primary,
}}>
{this.props.children}
</div>
</MuiThemeProvider>
</StylesProvider>
);
}
Example #6
Source File: App.tsx From SeeQR with MIT License | 4 votes |
App = () => {
const [queries, setQueries] = useState<AppState['queries']>({});
const [comparedQueries, setComparedQueries] = useState<AppState['queries']>(
{}
);
const [workingQuery, setWorkingQuery] = useState<AppState['workingQuery']>();
const [selectedView, setSelectedView] = useState<AppState['selectedView']>(
'dbView'
);
const [selectedDb, setSelectedDb] = useState<AppState['selectedDb']>('');
const [sidebarIsHidden, setSidebarHidden] = useState(false);
const [newFilePath, setFilePath] = useState<AppState['newFilePath']>('');
const [ERView, setERView] = useState(true);
/**
* Hook to create new Query from data
*/
const createNewQuery: CreateNewQuery = (query: QueryData) => {
// Only save query to saved queries if it contains all minimum information
if (query.label && query.db && query.sqlString && query.group) {
const newQueries = createQuery(queries, query);
setQueries(newQueries);
}
// we must set working query to newly created query otherwise query view won't update
setWorkingQuery(query);
};
// determine which view should be visible depending on selected view and
// prerequisites for each view
let shownView: AppState['selectedView'];
switch (selectedView) {
case 'compareView':
shownView = 'compareView';
break;
case 'dbView':
if (!selectedDb) {
shownView = 'quickStartView';
break;
}
shownView = 'dbView';
break;
case 'queryView':
if (!queries.selected && !selectedDb) {
shownView = 'quickStartView';
break;
}
shownView = 'queryView';
break;
case 'newSchemaView':
shownView = 'newSchemaView';
break;
case 'quickStartView':
default:
shownView = 'quickStartView';
}
return (
// Styled Components must be injected last in order to override Material UI style: https://material-ui.com/guides/interoperability/#controlling-priority-3
<StylesProvider injectFirst>
<MuiThemeProvider theme={MuiTheme}>
<Spinner />
<AppContainer>
<CssBaseline />
<GlobalStyle />
<Sidebar
{...{
queries,
setQueries,
comparedQueries,
setComparedQueries,
selectedView,
setSelectedView,
selectedDb,
setSelectedDb,
workingQuery,
setWorkingQuery,
setSidebarHidden,
sidebarIsHidden,
setFilePath,
newFilePath,
setERView
}}
/>
<Main $fullwidth={sidebarIsHidden}>
<CompareView
queries={comparedQueries}
show={shownView === 'compareView'}
/>
<DbView
selectedDb={selectedDb}
show={shownView === 'dbView'}
setERView={setERView}
ERView={ERView}
/>
<QueryView
query={workingQuery}
setQuery={setWorkingQuery}
selectedDb={selectedDb}
setSelectedDb={setSelectedDb}
createNewQuery={createNewQuery}
show={shownView === 'queryView'}
queries={queries}
/>
<QuickStartView show={shownView === 'quickStartView'} />
<NewSchemaView
query={workingQuery}
setQuery={setWorkingQuery}
selectedDb={selectedDb}
setSelectedDb={setSelectedDb}
createNewQuery={createNewQuery}
show={shownView === 'newSchemaView'}
/>
</Main>
<FeedbackModal />
</AppContainer>
</MuiThemeProvider>
</StylesProvider>
);
}