diff --git a/gui/rpk-gui/public/locales/DE/common.json b/gui/rpk-gui/public/locales/deDE/common.json similarity index 100% rename from gui/rpk-gui/public/locales/DE/common.json rename to gui/rpk-gui/public/locales/deDE/common.json diff --git a/gui/rpk-gui/public/locales/EN/common.json b/gui/rpk-gui/public/locales/enUS/common.json similarity index 100% rename from gui/rpk-gui/public/locales/EN/common.json rename to gui/rpk-gui/public/locales/enUS/common.json diff --git a/gui/rpk-gui/public/locales/FR/common.json b/gui/rpk-gui/public/locales/frFR/common.json similarity index 100% rename from gui/rpk-gui/public/locales/FR/common.json rename to gui/rpk-gui/public/locales/frFR/common.json diff --git a/gui/rpk-gui/src/App.tsx b/gui/rpk-gui/src/App.tsx index 27ec401..f406fd1 100644 --- a/gui/rpk-gui/src/App.tsx +++ b/gui/rpk-gui/src/App.tsx @@ -5,7 +5,6 @@ import { RefineSnackbarProvider, useNotificationProvider } from "@refinedev/mui" import CssBaseline from "@mui/material/CssBaseline"; import GlobalStyles from "@mui/material/GlobalStyles"; -import { ThemeProvider } from "@mui/material/styles"; import HistoryEduIcon from '@mui/icons-material/HistoryEdu'; import routerBindings, { CatchAllNavigate, @@ -22,9 +21,9 @@ import { ForgotPassword } from "./components/auth/ForgotPassword"; import { UpdatePassword } from "./components/auth/UpdatePassword"; import { Header } from "./components"; +import { I18nTheme } from "./components/I18nTheme"; import { HubRoutes } from "./pages/hub"; import { FirmRoutes } from "./pages/firm"; -import rpcTheme from "./theme"; function App() { const { t, i18n } = useTranslation(); @@ -37,43 +36,43 @@ function App() { return ( - - - - - - - }, - syncWithLocation: true, - warnWhenUnsavedChanges: true, - useNewQueryKeys: true, - disableTelemetry: true, - reactQuery: { - clientConfig: { - defaultOptions: { - queries: { - retry: (failureCount, error) => { - // @ts-ignore - if (error.statusCode >= 400 && error.statusCode <= 499) { - return false - } - return failureCount < 4 - }, - } + + + + + + }, + syncWithLocation: true, + warnWhenUnsavedChanges: true, + useNewQueryKeys: true, + disableTelemetry: true, + reactQuery: { + clientConfig: { + defaultOptions: { + queries: { + retry: (failureCount, error) => { + // @ts-ignore + if (error.statusCode >= 400 && error.statusCode <= 499) { + return false + } + return failureCount < 4 + }, } } } - }} - > + } + }} + > + - - - - + + + + ); } diff --git a/gui/rpk-gui/src/components/I18nTheme.tsx b/gui/rpk-gui/src/components/I18nTheme.tsx new file mode 100644 index 0000000..c72a983 --- /dev/null +++ b/gui/rpk-gui/src/components/I18nTheme.tsx @@ -0,0 +1,20 @@ +import React, { PropsWithChildren } from "react"; +import { useTranslation } from "@refinedev/core"; +import { useTheme } from "@mui/material"; +import * as locales from '@mui/material/locale'; +import { createTheme, ThemeProvider } from "@mui/material/styles"; + +type SupportedLocales = keyof typeof locales; + +export const I18nTheme: React.FC = ({ children }: PropsWithChildren) => { + const { getLocale } = useTranslation(); + const theme = useTheme() + + const themeWithLocale = createTheme(theme, locales[getLocale() as SupportedLocales]) + + return ( + + { children } + + ); +} diff --git a/gui/rpk-gui/src/i18n.tsx b/gui/rpk-gui/src/i18n.tsx index 327204e..fd74295 100644 --- a/gui/rpk-gui/src/i18n.tsx +++ b/gui/rpk-gui/src/i18n.tsx @@ -8,14 +8,14 @@ i18n .use(detector) .use(initReactI18next) .init({ - supportedLngs: ["EN", "FR"], + supportedLngs: ["enUS", "frFR"], backend: { loadPath: "/locales/{{lng}}/{{ns}}.json", // "http/locales/{{lng}}/{{ns}}.json" }, //saveMissing: true, ns: ["common"], defaultNS: "common", - fallbackLng: ["EN", "FR"], + fallbackLng: ["enUS", "frFR"], }); export default i18n; diff --git a/gui/rpk-gui/src/pages/firm/base-page/List.tsx b/gui/rpk-gui/src/pages/firm/base-page/List.tsx index 70a4937..665f004 100644 --- a/gui/rpk-gui/src/pages/firm/base-page/List.tsx +++ b/gui/rpk-gui/src/pages/firm/base-page/List.tsx @@ -1,11 +1,11 @@ import { UiSchema } from "@rjsf/utils"; +import { useTranslation } from "@refinedev/core"; import { List as RefineList, useDataGrid } from "@refinedev/mui"; import { DataGrid, GridColDef, GridValidRowModel } from "@mui/x-data-grid"; import { Link, useNavigate } from "react-router" import React, { useContext } from "react"; import { Button } from "@mui/material"; import { FirmContext } from "../../../contexts/FirmContext"; -import { useTranslation } from "@refinedev/core"; type ListProps = { resource: string, @@ -20,7 +20,9 @@ const List = (props: ListProps) => { const { currentFirm } = useContext(FirmContext); const resourceBasePath = `firm/${currentFirm.instance}/${currentFirm.firm}` - const { dataGridProps } = useDataGrid({resource: `${resourceBasePath}/${resource}`}); + const { dataGridProps } = useDataGrid({ + resource: `${resourceBasePath}/${resource}`, + }); const navigate = useNavigate(); const cols = React.useMemo[]>( @@ -40,7 +42,9 @@ const List = (props: ListProps) => { + onRowClick={handleRowClick} + pageSizeOptions={[10, 15, 20, 50, 100]} + /> ) }