diff --git a/src/frontend/src/components/details/DetailsImage.tsx b/src/frontend/src/components/details/DetailsImage.tsx index 61b48ce20b..9e27accad9 100644 --- a/src/frontend/src/components/details/DetailsImage.tsx +++ b/src/frontend/src/components/details/DetailsImage.tsx @@ -358,8 +358,8 @@ export function DetailsImage(props: DetailImageProps) { <> {permissions.hasChangeRole(props.appRole) && diff --git a/src/frontend/src/components/forms/HostOptionsForm.tsx b/src/frontend/src/components/forms/HostOptionsForm.tsx index 16f082feb8..bc8c275baa 100644 --- a/src/frontend/src/components/forms/HostOptionsForm.tsx +++ b/src/frontend/src/components/forms/HostOptionsForm.tsx @@ -62,15 +62,15 @@ export function HostOptionsForm({ {fields.length > 0 ? ( - + Host - + Name ) : ( - + No one here... )} diff --git a/src/frontend/src/components/forms/InstanceOptions.tsx b/src/frontend/src/components/forms/InstanceOptions.tsx index 4074cee3cf..475cc30fd4 100644 --- a/src/frontend/src/components/forms/InstanceOptions.tsx +++ b/src/frontend/src/components/forms/InstanceOptions.tsx @@ -15,7 +15,7 @@ export function InstanceOptions({ setHostEdit }: { hostKey: string; - ChangeHost: (newHost: string) => void; + ChangeHost: (newHost: string | null) => void; setHostEdit: () => void; }) { const [HostListEdit, setHostListEdit] = useToggle([false, true] as const); diff --git a/src/frontend/src/components/forms/fields/RelatedModelField.tsx b/src/frontend/src/components/forms/fields/RelatedModelField.tsx index 19591c2ab6..4056194668 100644 --- a/src/frontend/src/components/forms/fields/RelatedModelField.tsx +++ b/src/frontend/src/components/forms/fields/RelatedModelField.tsx @@ -1,6 +1,6 @@ import { t } from '@lingui/macro'; import { Input, useMantineTheme } from '@mantine/core'; -import { useDebouncedValue } from '@mantine/hooks'; +import { useColorScheme, useDebouncedValue } from '@mantine/hooks'; import { useId } from '@mantine/hooks'; import { useQuery } from '@tanstack/react-query'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; @@ -12,6 +12,7 @@ import { import Select from 'react-select'; import { api } from '../../../App'; +import { vars } from '../../../theme'; import { RenderInstance } from '../../render/Instance'; import { ApiFormFieldType } from './ApiFormField'; @@ -218,29 +219,32 @@ export function RelatedModelField({ // Define color theme to pass to field based on Mantine theme const theme = useMantineTheme(); + const colorschema = vars.colors.primaryColors; + const [preferredColorScheme] = useColorScheme(); + const colors = useMemo(() => { let colors: any; - if (theme.colorScheme === 'dark') { + if (preferredColorScheme === 'dark') { colors = { - neutral0: theme.colors[theme.colorScheme][6], - neutral5: theme.colors[theme.colorScheme][4], - neutral10: theme.colors[theme.colorScheme][4], - neutral20: theme.colors[theme.colorScheme][4], - neutral30: theme.colors[theme.colorScheme][3], - neutral40: theme.colors[theme.colorScheme][2], - neutral50: theme.colors[theme.colorScheme][1], - neutral60: theme.colors[theme.colorScheme][0], - neutral70: theme.colors[theme.colorScheme][0], - neutral80: theme.colors[theme.colorScheme][0], - neutral90: theme.colors[theme.colorScheme][0], - primary: theme.colors[theme.primaryColor][7], - primary25: theme.colors[theme.primaryColor][6], - primary50: theme.colors[theme.primaryColor][5], - primary75: theme.colors[theme.primaryColor][4] + neutral0: colorschema[6], + neutral5: colorschema[4], + neutral10: colorschema[4], + neutral20: colorschema[4], + neutral30: colorschema[3], + neutral40: colorschema[2], + neutral50: colorschema[1], + neutral60: colorschema[0], + neutral70: colorschema[0], + neutral80: colorschema[0], + neutral90: colorschema[0], + primary: vars.colors.primaryColors[7], + primary25: vars.colors.primaryColors[6], + primary50: vars.colors.primaryColors[5], + primary75: vars.colors.primaryColors[4] }; } else { colors = { - neutral0: theme.white, + neutral0: vars.colors.white, neutral5: theme.fn.darken(theme.white, 0.05), neutral10: theme.fn.darken(theme.white, 0.1), neutral20: theme.fn.darken(theme.white, 0.2), @@ -251,10 +255,10 @@ export function RelatedModelField({ neutral70: theme.fn.darken(theme.white, 0.7), neutral80: theme.fn.darken(theme.white, 0.8), neutral90: theme.fn.darken(theme.white, 0.9), - primary: theme.colors[theme.primaryColor][7], - primary25: theme.colors[theme.primaryColor][4], - primary50: theme.colors[theme.primaryColor][5], - primary75: theme.colors[theme.primaryColor][6] + primary: vars.colors.primaryColors[7], + primary25: vars.colors.primaryColors[4], + primary50: vars.colors.primaryColors[5], + primary75: vars.colors.primaryColors[6] }; } return colors; diff --git a/src/frontend/src/components/images/ApiImage.tsx b/src/frontend/src/components/images/ApiImage.tsx index d8f457b427..7da466017c 100644 --- a/src/frontend/src/components/images/ApiImage.tsx +++ b/src/frontend/src/components/images/ApiImage.tsx @@ -67,10 +67,7 @@ export function ApiImage(props: ImageProps) { {image && image.length > 0 ? ( ) : ( - + )} ); diff --git a/src/frontend/src/components/items/DashboardItem.tsx b/src/frontend/src/components/items/DashboardItem.tsx index 880473d059..7f45aa6c91 100644 --- a/src/frontend/src/components/items/DashboardItem.tsx +++ b/src/frontend/src/components/items/DashboardItem.tsx @@ -18,7 +18,7 @@ export function StatisticItem({ }) { return ( - + {data.title} diff --git a/src/frontend/src/components/items/LanguageToggle.tsx b/src/frontend/src/components/items/LanguageToggle.tsx index 4c28415057..c228dc6cb8 100644 --- a/src/frontend/src/components/items/LanguageToggle.tsx +++ b/src/frontend/src/components/items/LanguageToggle.tsx @@ -9,7 +9,7 @@ export function LanguageToggle() { return ( diff --git a/src/frontend/src/components/items/ProgressBar.tsx b/src/frontend/src/components/items/ProgressBar.tsx index 837ab8cf3e..78e65fa045 100644 --- a/src/frontend/src/components/items/ProgressBar.tsx +++ b/src/frontend/src/components/items/ProgressBar.tsx @@ -24,7 +24,7 @@ export function ProgressBar(props: ProgressBarProps) { return ( {props.progressLabel && ( - + {props.value} / {props.maximum} )} diff --git a/src/frontend/src/components/nav/MainMenu.tsx b/src/frontend/src/components/nav/MainMenu.tsx index f4e3e30b8b..19b2b7e756 100644 --- a/src/frontend/src/components/nav/MainMenu.tsx +++ b/src/frontend/src/components/nav/MainMenu.tsx @@ -23,7 +23,7 @@ export function MainMenu() { - + {userState.username() ? ( userState.username() ) : ( diff --git a/src/frontend/src/components/nav/PageDetail.tsx b/src/frontend/src/components/nav/PageDetail.tsx index 5484e9b505..fba3551d02 100644 --- a/src/frontend/src/components/nav/PageDetail.tsx +++ b/src/frontend/src/components/nav/PageDetail.tsx @@ -46,7 +46,7 @@ export function PageDetail({ {imageUrl && ( - + )} {title && {title}} diff --git a/src/frontend/src/components/nav/PanelGroup.tsx b/src/frontend/src/components/nav/PanelGroup.tsx index 95b6ad7904..f8f1585fc1 100644 --- a/src/frontend/src/components/nav/PanelGroup.tsx +++ b/src/frontend/src/components/nav/PanelGroup.tsx @@ -72,7 +72,7 @@ function BasePanelGroup({ }, [setLastUsedPanel]); // Callback when the active panel changes - function handlePanelChange(panel: string) { + function handlePanelChange(panel: string | null) { if (activePanels.findIndex((p) => p.name === panel) === -1) { setLastUsedPanel(''); return navigate('../'); @@ -81,7 +81,7 @@ function BasePanelGroup({ navigate(`../${panel}`); // Optionally call external callback hook - if (onPanelChange) { + if (panel && onPanelChange) { onPanelChange(panel); } } @@ -111,7 +111,7 @@ function BasePanelGroup({ onChange={handlePanelChange} keepMounted={false} > - + {panels.map( (panel) => !panel.hidden && ( diff --git a/src/frontend/src/components/nav/PartCategoryTree.tsx b/src/frontend/src/components/nav/PartCategoryTree.tsx index d10966e6ff..f1ef938517 100644 --- a/src/frontend/src/components/nav/PartCategoryTree.tsx +++ b/src/frontend/src/components/nav/PartCategoryTree.tsx @@ -1,12 +1,6 @@ import { t } from '@lingui/macro'; -import { - Drawer, - Group, - LoadingOverlay, - Stack, - Text, - useMantineTheme -} from '@mantine/core'; +import { Drawer, Group, LoadingOverlay, Stack, Text } from '@mantine/core'; +import { useColorScheme } from '@mantine/hooks'; import { ReactTree, ThemeSettings } from '@naisutech/react-tree'; import { IconChevronDown, @@ -20,6 +14,7 @@ import { useNavigate } from 'react-router-dom'; import { api } from '../../App'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; import { apiUrl } from '../../states/ApiState'; +import { theme, vars } from '../../theme'; import { StylishText } from '../items/StylishText'; export function PartCategoryTree({ @@ -80,57 +75,57 @@ export function PartCategoryTree({ return open ? : ; } - const mantineTheme = useMantineTheme(); + const [prefferedColorScheme] = useColorScheme(); const themes: ThemeSettings = useMemo(() => { const currentTheme = - mantineTheme.colorScheme === 'dark' - ? mantineTheme.colorScheme - : mantineTheme.primaryColor; + prefferedColorScheme === 'dark' + ? vars.colors.defaultColor + : vars.colors.primaryColors; return { dark: { text: { - ...mantineTheme.fn.fontStyles() + ...vars.fontStyles() }, nodes: { height: '2.5rem', folder: { - selectedBgColor: mantineTheme.colors[currentTheme][4], - hoverBgColor: mantineTheme.colors[currentTheme][6] + selectedBgColor: currentTheme[4], + hoverBgColor: currentTheme[6] }, leaf: { - selectedBgColor: mantineTheme.colors[currentTheme][4], - hoverBgColor: mantineTheme.colors[currentTheme][6] + selectedBgColor: currentTheme[4], + hoverBgColor: currentTheme[6] }, icons: { - folderColor: mantineTheme.colors[currentTheme][3], - leafColor: mantineTheme.colors[currentTheme][3] + folderColor: currentTheme[3], + leafColor: currentTheme[3] } } }, light: { text: { - ...mantineTheme.fn.fontStyles() + ...theme.fn.fontStyles() }, nodes: { height: '2.5rem', folder: { - selectedBgColor: mantineTheme.colors[currentTheme][4], - hoverBgColor: mantineTheme.colors[currentTheme][2] + selectedBgColor: currentTheme[4], + hoverBgColor: currentTheme[2] }, leaf: { - selectedBgColor: mantineTheme.colors[currentTheme][4], - hoverBgColor: mantineTheme.colors[currentTheme][2] + selectedBgColor: currentTheme[4], + hoverBgColor: currentTheme[2] }, icons: { - folderColor: mantineTheme.colors[currentTheme][8], - leafColor: mantineTheme.colors[currentTheme][6] + folderColor: currentTheme[8], + leafColor: currentTheme[6] } } } }; - }, [mantineTheme]); + }, [theme]); return ( diff --git a/src/frontend/src/components/nav/StockLocationTree.tsx b/src/frontend/src/components/nav/StockLocationTree.tsx index a16a7e679d..bc7bf5e7ac 100644 --- a/src/frontend/src/components/nav/StockLocationTree.tsx +++ b/src/frontend/src/components/nav/StockLocationTree.tsx @@ -51,7 +51,7 @@ export function StockLocationTree({ function renderNode({ node }: { node: any }) { return ( { diff --git a/src/frontend/src/components/settings/SettingItem.tsx b/src/frontend/src/components/settings/SettingItem.tsx index afb446bf23..f87581841e 100644 --- a/src/frontend/src/components/settings/SettingItem.tsx +++ b/src/frontend/src/components/settings/SettingItem.tsx @@ -6,9 +6,9 @@ import { Space, Stack, Switch, - Text, - useMantineTheme + Text } from '@mantine/core'; +import { useColorScheme } from '@mantine/hooks'; import { showNotification } from '@mantine/notifications'; import { IconEdit } from '@tabler/icons-react'; import { useMemo } from 'react'; @@ -19,6 +19,7 @@ import { openModalApiForm } from '../../functions/forms'; import { apiUrl } from '../../states/ApiState'; import { SettingsStateProps } from '../../states/SettingsState'; import { Setting, SettingType } from '../../states/states'; +import { vars } from '../../theme'; import { ApiFormFieldType } from '../forms/fields/ApiFormField'; /** @@ -165,14 +166,14 @@ export function SettingItem({ shaded: boolean; onChange?: () => void; }) { - const theme = useMantineTheme(); + const [prefferedColorScheme] = useColorScheme(); const style: Record = { paddingLeft: '8px' }; if (shaded) { style['backgroundColor'] = - theme.colorScheme === 'light' - ? theme.colors.gray[1] - : theme.colors.gray[9]; + prefferedColorScheme === 'light' + ? vars.colors.gray[1] + : vars.colors.gray[9]; } return ( diff --git a/src/frontend/src/components/widgets/FeedbackWidget.tsx b/src/frontend/src/components/widgets/FeedbackWidget.tsx index e0065d3f59..617719e6b1 100644 --- a/src/frontend/src/components/widgets/FeedbackWidget.tsx +++ b/src/frontend/src/components/widgets/FeedbackWidget.tsx @@ -26,7 +26,7 @@ export default function FeedbackWidget() { component="a" href="https://github.com/inventree/InvenTree/discussions/5328" variant="outline" - leftIcon={} + leftSection={} > Provide Feedback diff --git a/src/frontend/src/pages/Auth/Login.tsx b/src/frontend/src/pages/Auth/Login.tsx index 12f2fcf2b5..28bfd21e71 100644 --- a/src/frontend/src/pages/Auth/Login.tsx +++ b/src/frontend/src/pages/Auth/Login.tsx @@ -70,7 +70,7 @@ export default function Login() { ) : ( <> - + {loginMode ? ( Welcome, log in below ) : ( diff --git a/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx b/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx index d927319fa5..89a3d4f208 100644 --- a/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx +++ b/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx @@ -168,7 +168,7 @@ function EmailContent({}: {}) { } + leftSection={} value={newEmailValue} onChange={(event) => setNewEmailValue(event.currentTarget.value)} /> diff --git a/src/frontend/src/tables/Search.tsx b/src/frontend/src/tables/Search.tsx index d3f3b9cd9c..33d6ac1fee 100644 --- a/src/frontend/src/tables/Search.tsx +++ b/src/frontend/src/tables/Search.tsx @@ -19,7 +19,7 @@ export function TableSearchInput({ return ( } + leftSection={} placeholder={t`Search`} onChange={(event) => setValue(event.target.value)} rightSection={ diff --git a/src/frontend/src/tables/TableHoverCard.tsx b/src/frontend/src/tables/TableHoverCard.tsx index 93961177d4..09df71ecee 100644 --- a/src/frontend/src/tables/TableHoverCard.tsx +++ b/src/frontend/src/tables/TableHoverCard.tsx @@ -38,7 +38,7 @@ export function TableHoverCard({ - {title} + {title} {extra} diff --git a/src/frontend/src/tables/part/PartTestTemplateTable.tsx b/src/frontend/src/tables/part/PartTestTemplateTable.tsx index 1b6d2a71e7..b1f4841651 100644 --- a/src/frontend/src/tables/part/PartTestTemplateTable.tsx +++ b/src/frontend/src/tables/part/PartTestTemplateTable.tsx @@ -37,7 +37,7 @@ export default function PartTestTemplateTable({ partId }: { partId: number }) { render: (record: any) => { return ( {record.test_name}