diff --git a/ui/components/HyperglassProvider.js b/ui/components/HyperglassProvider.js
new file mode 100644
index 0000000..f9a1117
--- /dev/null
+++ b/ui/components/HyperglassProvider.js
@@ -0,0 +1,31 @@
+import React, { createContext, useContext, useMemo } from "react";
+import dynamic from "next/dynamic";
+import { CSSReset, ThemeProvider } from "@chakra-ui/core";
+import { MediaProvider } from "~/components/MediaProvider";
+import { makeTheme, defaultTheme } from "~/theme";
+
+// Disable SSR for ColorModeProvider
+const ColorModeProvider = dynamic(
+ () => import("@chakra-ui/core").then(mod => mod.ColorModeProvider),
+ { ssr: false }
+);
+
+const HyperglassContext = createContext(null);
+
+export const HyperglassProvider = ({ config, children }) => {
+ const value = useMemo(() => config, [config]);
+ const userTheme = value && makeTheme(value.branding);
+ const theme = value ? userTheme : defaultTheme;
+ return (
+
+
+
+
+ {children}
+
+
+
+ );
+};
+
+export default () => useContext(HyperglassContext);
diff --git a/ui/components/MediaProvider.js b/ui/components/MediaProvider.js
new file mode 100644
index 0000000..6dc0c51
--- /dev/null
+++ b/ui/components/MediaProvider.js
@@ -0,0 +1,34 @@
+import React, { createContext, useContext, useMemo } from "react";
+import { useMediaLayout } from "use-media";
+
+const MediaContext = createContext(null);
+
+export const MediaProvider = ({ theme, children }) => {
+ const { sm, md, lg, xl } = theme.breakpoints;
+ const isSm = useMediaLayout({ maxWidth: md });
+ const isMd = useMediaLayout({ minWidth: md, maxWidth: lg });
+ const isLg = useMediaLayout({ minWidth: lg, maxWidth: xl });
+ const isXl = useMediaLayout({ minWidth: xl });
+ let mediaSize = false;
+ switch (true) {
+ case isSm:
+ mediaSize = "sm";
+ break;
+ case isMd:
+ mediaSize = "md";
+ break;
+ case isLg:
+ mediaSize = "lg";
+ break;
+ case isXl:
+ mediaSize = "xl";
+ break;
+ }
+ const value = useMemo(
+ () => ({ isSm: isSm, isMd: isMd, isLg: isLg, isXl: isXl, mediaSize: mediaSize }),
+ [isSm, isMd, isLg, isXl, mediaSize]
+ );
+ return {children};
+};
+
+export default () => useContext(MediaContext);
diff --git a/ui/pages/index.js b/ui/pages/index.js
index 5064cdd..fafd86a 100644
--- a/ui/pages/index.js
+++ b/ui/pages/index.js
@@ -1,39 +1,34 @@
import React from "react";
-import dynamic from "next/dynamic";
-import useAxios from "axios-hooks";
-import { CSSReset, ThemeProvider } from "@chakra-ui/core";
import Layout from "~/components/Layout";
-import PreConfig from "~/components/PreConfig";
-import { makeTheme, defaultTheme } from "~/theme";
-// Disable SSR for ColorModeProvider
-const ColorModeProvider = dynamic(
- () => import("@chakra-ui/core").then(mod => mod.ColorModeProvider),
- { ssr: false }
-);
+// const Index = () => {
+// // const [{ data, loading, error }, refetch] = useAxios({
+// // url: "/config",
+// // method: "get"
+// // });
+// // const data = undefined;
+// // const loading = false;
+// // const error = { message: "Shit broke" };
+// // const refetch = () => alert("refetched");
+// const userTheme = data && makeTheme(data.branding);
+// const theme = data ? userTheme : defaultTheme;
+// const Component = data ? : ;
+// return (
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+// );
+// };
-const Index = () => {
- const [{ data, loading, error }, refetch] = useAxios({
- url: "/config",
- method: "get"
- });
- // const data = undefined;
- // const loading = false;
- // const error = { message: "Shit broke" };
- // const refetch = () => alert("refetched");
- const userTheme = data && makeTheme(data.branding);
- return (
-
-
-
- {!data ? (
-
- ) : (
-
- )}
-
-
- );
-};
+// Index.displayName = "Hyperglass";
+
+const Index = () => ;
export default Index;