diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx
index b9c0ce36552..9973b2e83dc 100644
--- a/.storybook/preview.tsx
+++ b/.storybook/preview.tsx
@@ -1,6 +1,6 @@
import React from "react";
import "metabase/css/index.css";
-import { ThemeProvider } from "../frontend/src/metabase/ui";
+import { ThemeProvider } from "metabase/ui";
export const parameters = {
actions: { argTypesRegex: "^on[A-Z].*" },
diff --git a/babel.config.json b/babel.config.json
index fc34cd01766..bb53a8413a3 100644
--- a/babel.config.json
+++ b/babel.config.json
@@ -4,7 +4,7 @@
"@babel/preset-env",
[
"@babel/preset-react",
- { "runtime": "automatic", "importSource": "@emotion/react" }
+ { "runtime": "automatic" }
],
"@babel/preset-typescript"
],
diff --git a/frontend/src/metabase/auth/components/Login/Login.styled.tsx b/frontend/src/metabase/auth/components/Login/Login.styled.tsx
deleted file mode 100644
index d2b89d77ddd..00000000000
--- a/frontend/src/metabase/auth/components/Login/Login.styled.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import styled from "@emotion/styled";
-import { color } from "metabase/lib/colors";
-
-export const LoginTitle = styled.div`
- color: ${color("text-dark")};
- font-size: 1.25rem;
- font-weight: 700;
- line-height: 1.5rem;
- text-align: center;
-`;
-
-export const LoginPanel = styled.div`
- margin-top: 2.5rem;
-`;
-
-export const ActionList = styled.div`
- margin-top: 3.5rem;
-`;
-
-export const ActionListItem = styled.div`
- margin-top: 2rem;
- text-align: center;
-`;
diff --git a/frontend/src/metabase/auth/components/Login/Login.tsx b/frontend/src/metabase/auth/components/Login/Login.tsx
index fe6ab2c71a3..6480beb5fb2 100644
--- a/frontend/src/metabase/auth/components/Login/Login.tsx
+++ b/frontend/src/metabase/auth/components/Login/Login.tsx
@@ -1,15 +1,10 @@
import { t } from "ttag";
import { Location } from "history";
+import { Box } from "metabase/ui";
import { useSelector } from "metabase/lib/redux";
import { AuthProvider } from "metabase/plugins/types";
import { AuthLayout } from "../AuthLayout";
import { getAuthProviders } from "../../selectors";
-import {
- ActionList,
- ActionListItem,
- LoginPanel,
- LoginTitle,
-} from "./Login.styled";
interface LoginQueryString {
redirect?: string;
@@ -31,20 +26,22 @@ export const Login = ({ params, location }: LoginProps): JSX.Element => {
return (
- {t`Sign in to Metabase`}
+
+ {t`Sign in to Metabase`}
+
{selection && selection.Panel && (
-
+
-
+
)}
{!selection && (
-
+
{providers.map(provider => (
-
+
-
+
))}
-
+
)}
);
diff --git a/frontend/src/metabase/ui/components/index.ts b/frontend/src/metabase/ui/components/index.ts
new file mode 100644
index 00000000000..b260565c34d
--- /dev/null
+++ b/frontend/src/metabase/ui/components/index.ts
@@ -0,0 +1,4 @@
+export * from "./inputs";
+export * from "./layout";
+export * from "./theme";
+export * from "./typography";
diff --git a/frontend/src/metabase/ui/components/inputs/Radio/index.tsx b/frontend/src/metabase/ui/components/inputs/Radio/index.ts
similarity index 100%
rename from frontend/src/metabase/ui/components/inputs/Radio/index.tsx
rename to frontend/src/metabase/ui/components/inputs/Radio/index.ts
diff --git a/frontend/src/metabase/ui/components/inputs/index.ts b/frontend/src/metabase/ui/components/inputs/index.ts
new file mode 100644
index 00000000000..5c21d15638c
--- /dev/null
+++ b/frontend/src/metabase/ui/components/inputs/index.ts
@@ -0,0 +1 @@
+export * from "./Radio";
diff --git a/frontend/src/metabase/ui/components/layout/Box/index.ts b/frontend/src/metabase/ui/components/layout/Box/index.ts
new file mode 100644
index 00000000000..c853c19fd88
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Box/index.ts
@@ -0,0 +1 @@
+export { Box } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/Center/index.ts b/frontend/src/metabase/ui/components/layout/Center/index.ts
new file mode 100644
index 00000000000..14708a573aa
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Center/index.ts
@@ -0,0 +1 @@
+export { Center } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/Flex/index.ts b/frontend/src/metabase/ui/components/layout/Flex/index.ts
new file mode 100644
index 00000000000..c4267249569
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Flex/index.ts
@@ -0,0 +1 @@
+export { Flex } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/Grid/index.ts b/frontend/src/metabase/ui/components/layout/Grid/index.ts
new file mode 100644
index 00000000000..f7e4fc87824
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Grid/index.ts
@@ -0,0 +1 @@
+export { Grid } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/Group/index.ts b/frontend/src/metabase/ui/components/layout/Group/index.ts
new file mode 100644
index 00000000000..5afbec73cab
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Group/index.ts
@@ -0,0 +1 @@
+export { Group } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/Stack/index.ts b/frontend/src/metabase/ui/components/layout/Stack/index.ts
new file mode 100644
index 00000000000..46a0b9bcbe1
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/Stack/index.ts
@@ -0,0 +1 @@
+export { Stack } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/layout/index.ts b/frontend/src/metabase/ui/components/layout/index.ts
new file mode 100644
index 00000000000..b84189f7c5e
--- /dev/null
+++ b/frontend/src/metabase/ui/components/layout/index.ts
@@ -0,0 +1,6 @@
+export * from "./Box";
+export * from "./Center";
+export * from "./Flex";
+export * from "./Grid";
+export * from "./Group";
+export * from "./Stack";
diff --git a/frontend/src/metabase/ui/components/ThemeProvider.tsx b/frontend/src/metabase/ui/components/theme/ThemeProvider/ThemeProvider.tsx
similarity index 87%
rename from frontend/src/metabase/ui/components/ThemeProvider.tsx
rename to frontend/src/metabase/ui/components/theme/ThemeProvider/ThemeProvider.tsx
index db13a932d11..c4d3c662f31 100644
--- a/frontend/src/metabase/ui/components/ThemeProvider.tsx
+++ b/frontend/src/metabase/ui/components/theme/ThemeProvider/ThemeProvider.tsx
@@ -1,6 +1,6 @@
import { ReactNode } from "react";
import { MantineProvider } from "@mantine/core";
-import { theme } from "metabase/ui";
+import { theme } from "../../../theme";
interface ThemeProviderProps {
children: ReactNode;
diff --git a/frontend/src/metabase/ui/components/theme/ThemeProvider/index.ts b/frontend/src/metabase/ui/components/theme/ThemeProvider/index.ts
new file mode 100644
index 00000000000..d380ec38ce4
--- /dev/null
+++ b/frontend/src/metabase/ui/components/theme/ThemeProvider/index.ts
@@ -0,0 +1 @@
+export * from "./ThemeProvider";
diff --git a/frontend/src/metabase/ui/components/theme/index.ts b/frontend/src/metabase/ui/components/theme/index.ts
new file mode 100644
index 00000000000..d380ec38ce4
--- /dev/null
+++ b/frontend/src/metabase/ui/components/theme/index.ts
@@ -0,0 +1 @@
+export * from "./ThemeProvider";
diff --git a/frontend/src/metabase/ui/components/typography/Text/index.ts b/frontend/src/metabase/ui/components/typography/Text/index.ts
new file mode 100644
index 00000000000..fcc9c26ae57
--- /dev/null
+++ b/frontend/src/metabase/ui/components/typography/Text/index.ts
@@ -0,0 +1 @@
+export { Text } from "@mantine/core";
diff --git a/frontend/src/metabase/ui/components/typography/index.ts b/frontend/src/metabase/ui/components/typography/index.ts
new file mode 100644
index 00000000000..22e10b67503
--- /dev/null
+++ b/frontend/src/metabase/ui/components/typography/index.ts
@@ -0,0 +1 @@
+export * from "./Text";
diff --git a/frontend/src/metabase/ui/index.ts b/frontend/src/metabase/ui/index.ts
index 1f9aca5c6f9..40b494c5f87 100644
--- a/frontend/src/metabase/ui/index.ts
+++ b/frontend/src/metabase/ui/index.ts
@@ -1,8 +1 @@
-export { ThemeProvider } from "metabase/ui/components/ThemeProvider";
-export { theme } from "metabase/ui/theme";
-
-// General helpers
-export { Group } from "@mantine/core";
-
-// Inputs
-export { Radio } from "metabase/ui/components/inputs/Radio";
+export * from "./components";
diff --git a/frontend/test/__support__/ui.tsx b/frontend/test/__support__/ui.tsx
index a84a0484877..96b447e7756 100644
--- a/frontend/test/__support__/ui.tsx
+++ b/frontend/test/__support__/ui.tsx
@@ -7,10 +7,10 @@ import { Router } from "react-router";
import { routerReducer, routerMiddleware } from "react-router-redux";
import type { Store, Reducer } from "@reduxjs/toolkit";
import { Provider } from "react-redux";
-import { ThemeProvider } from "@emotion/react";
import { DragDropContextProvider } from "react-dnd";
import HTML5Backend from "react-dnd-html5-backend";
import type { MatcherFunction } from "@testing-library/dom";
+import { ThemeProvider } from "metabase/ui";
import type { State } from "metabase-types/store";
@@ -116,7 +116,7 @@ function Wrapper({
return (
-
+
{children}