2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-09 21:30:54 +00:00

update args

This commit is contained in:
Matthias Mair
2024-04-15 02:13:15 +02:00
parent b34ebd8557
commit bd60b01a88
74 changed files with 175 additions and 175 deletions

View File

@@ -41,7 +41,7 @@ export function ActionButton(props: ActionButtonProps) {
onClick={props.onClick ?? notYetImplemented} onClick={props.onClick ?? notYetImplemented}
variant={props.variant ?? 'light'} variant={props.variant ?? 'light'}
> >
<Group spacing="xs" noWrap={true}> <Group gap="xs" wrap="nowrap">
{props.icon} {props.icon}
</Group> </Group>
</ActionIcon> </ActionIcon>

View File

@@ -55,7 +55,7 @@ export function SplitButton({
const theme = useMantineTheme(); const theme = useMantineTheme();
return ( return (
<Group noWrap style={{ gap: 0 }}> <Group wrap="nowrap" style={{ gap: 0 }}>
<Button <Button
onClick={currentOption?.onClick} onClick={currentOption?.onClick}
disabled={loading ? false : currentOption?.disabled} disabled={loading ? false : currentOption?.disabled}

View File

@@ -399,7 +399,7 @@ export function DetailsTable({
}) { }) {
return ( return (
<Paper p="xs" withBorder radius="xs"> <Paper p="xs" withBorder radius="xs">
<Stack spacing="xs"> <Stack gap="xs">
{title && <StylishText size="lg">{title}</StylishText>} {title && <StylishText size="lg">{title}</StylishText>}
<Table striped> <Table striped>
<tbody> <tbody>

View File

@@ -174,7 +174,7 @@ function UploadModal({
> >
<Group <Group
position="center" position="center"
spacing="xl" gap="xl"
style={{ minHeight: rem(140), pointerEvents: 'none' }} style={{ minHeight: rem(140), pointerEvents: 'none' }}
> >
<Dropzone.Accept> <Dropzone.Accept>
@@ -252,7 +252,7 @@ function ImageActionButtons({
<> <>
{visible && ( {visible && (
<Group <Group
spacing="xs" gap="xs"
style={{ zIndex: 2, position: 'absolute', top: '10px', left: '10px' }} style={{ zIndex: 2, position: 'absolute', top: '10px', left: '10px' }}
> >
{actions.selectExisting && ( {actions.selectExisting && (

View File

@@ -246,7 +246,7 @@ export function TemplateEditor(props: TemplateEditorProps) {
</Tabs.Tab> </Tabs.Tab>
))} ))}
<Group position="right" style={{ flex: '1' }} noWrap> <Group justify="right" style={{ flex: '1' }} wrap="nowrap">
<SplitButton <SplitButton
loading={isPreviewLoading} loading={isPreviewLoading}
defaultSelected="preview_save" defaultSelected="preview_save"

View File

@@ -422,11 +422,11 @@ export function ApiForm({
<Paper mah={'65vh'} style={{ overflowY: 'auto' }}> <Paper mah={'65vh'} style={{ overflowY: 'auto' }}>
<div> <div>
{/* Form Fields */} {/* Form Fields */}
<Stack spacing="sm"> <Stack gap="sm">
{(!isValid || nonFieldErrors.length > 0) && ( {(!isValid || nonFieldErrors.length > 0) && (
<Alert radius="sm" color="red" title={t`Form Errors Exist`}> <Alert radius="sm" color="red" title={t`Form Errors Exist`}>
{nonFieldErrors.length > 0 && ( {nonFieldErrors.length > 0 && (
<Stack spacing="xs"> <Stack gap="xs">
{nonFieldErrors.map((message) => ( {nonFieldErrors.map((message) => (
<Text key={message}>{message}</Text> <Text key={message}>{message}</Text>
))} ))}
@@ -446,7 +446,7 @@ export function ApiForm({
</Alert> </Alert>
)} )}
<FormProvider {...form}> <FormProvider {...form}>
<Stack spacing="xs"> <Stack gap="xs">
{!optionsLoading && {!optionsLoading &&
Object.entries(props.fields ?? {}).map( Object.entries(props.fields ?? {}).map(
([fieldName, field]) => ( ([fieldName, field]) => (
@@ -468,7 +468,7 @@ export function ApiForm({
{/* Footer with Action Buttons */} {/* Footer with Action Buttons */}
<Divider /> <Divider />
<div> <div>
<Group position="right"> <Group justify="right">
{props.actions?.map((action, i) => ( {props.actions?.map((action, i) => (
<Button <Button
key={i} key={i}

View File

@@ -104,7 +104,7 @@ export function AuthenticationForm() {
) : null} ) : null}
<form onSubmit={classicForm.onSubmit(() => {})}> <form onSubmit={classicForm.onSubmit(() => {})}>
{classicLoginMode ? ( {classicLoginMode ? (
<Stack spacing={0}> <Stack gap={0}>
<TextInput <TextInput
required required
label={t`Username`} label={t`Username`}
@@ -118,7 +118,7 @@ export function AuthenticationForm() {
{...classicForm.getInputProps('password')} {...classicForm.getInputProps('password')}
/> />
{auth_settings?.password_forgotten_enabled === true && ( {auth_settings?.password_forgotten_enabled === true && (
<Group position="apart" mt="0"> <Group justify="apart" mt="0">
<Anchor <Anchor
component="button" component="button"
type="button" type="button"
@@ -143,7 +143,7 @@ export function AuthenticationForm() {
</Stack> </Stack>
)} )}
<Group position="apart" mt="xl"> <Group justify="apart" mt="xl">
<Anchor <Anchor
component="button" component="button"
type="button" type="button"
@@ -228,7 +228,7 @@ export function RegistrationForm() {
<> <>
{auth_settings?.registration_enabled && ( {auth_settings?.registration_enabled && (
<form onSubmit={registrationForm.onSubmit(() => {})}> <form onSubmit={registrationForm.onSubmit(() => {})}>
<Stack spacing={0}> <Stack gap={0}>
<TextInput <TextInput
required required
label={t`Username`} label={t`Username`}
@@ -256,7 +256,7 @@ export function RegistrationForm() {
/> />
</Stack> </Stack>
<Group position="apart" mt="xl"> <Group justify="apart" mt="xl">
<Button <Button
type="submit" type="submit"
disabled={isRegistering} disabled={isRegistering}

View File

@@ -20,7 +20,7 @@ export function NestedObjectField({
</Accordion.Control> </Accordion.Control>
<Accordion.Panel> <Accordion.Panel>
<Divider sx={{ marginTop: '-10px', marginBottom: '10px' }} /> <Divider sx={{ marginTop: '-10px', marginBottom: '10px' }} />
<Stack spacing="xs"> <Stack gap="xs">
{Object.entries(definition.children ?? {}).map( {Object.entries(definition.children ?? {}).map(
([childFieldName, field]) => ( ([childFieldName, field]) => (
<ApiFormField <ApiFormField

View File

@@ -25,7 +25,7 @@ export function Thumbnail({
const backup_image = '/static/img/blank_image.png'; const backup_image = '/static/img/blank_image.png';
return ( return (
<Group align={align ?? 'left'} spacing="xs" noWrap={true}> <Group align={align ?? 'left'} gap="xs" wrap="nowrap">
<ApiImage <ApiImage
src={src || backup_image} src={src || backup_image}
alt={alt} alt={alt}
@@ -59,7 +59,7 @@ export function ThumbnailHoverCard({
}) { }) {
const card = useMemo(() => { const card = useMemo(() => {
return ( return (
<Group position="left" spacing={10} noWrap={true}> <Group justify="left" gap={10} wrap="nowrap">
<Thumbnail src={src} alt={alt} size={size} /> <Thumbnail src={src} alt={alt} size={size} />
<Text>{text}</Text> <Text>{text}</Text>
</Group> </Group>

View File

@@ -59,7 +59,7 @@ export function AttachmentLink({
let text = external ? attachment : attachment.split('/').pop(); let text = external ? attachment : attachment.split('/').pop();
return ( return (
<Group position="left" spacing="sm"> <Group justify="left" gap="sm">
{external ? <IconLink /> : attachmentIcon(attachment)} {external ? <IconLink /> : attachmentIcon(attachment)}
<Anchor href={attachment} target="_blank" rel="noopener noreferrer"> <Anchor href={attachment} target="_blank" rel="noopener noreferrer">
{text} {text}

View File

@@ -5,7 +5,7 @@ export function ColorToggle() {
const { colorScheme, toggleColorScheme } = useMantineColorScheme(); const { colorScheme, toggleColorScheme } = useMantineColorScheme();
return ( return (
<Group position="center"> <Group justify="center">
<ActionIcon <ActionIcon
onClick={() => toggleColorScheme()} onClick={() => toggleColorScheme()}
size="lg" size="lg"

View File

@@ -19,13 +19,13 @@ export function StatisticItem({
return ( return (
<Paper withBorder p="xs" key={id} pos="relative"> <Paper withBorder p="xs" key={id} pos="relative">
<LoadingOverlay visible={isLoading} overlayBlur={2} /> <LoadingOverlay visible={isLoading} overlayBlur={2} />
<Group position="apart"> <Group justify="apart">
<Text size="xs" color="dimmed" className={classes.dashboardItemTitle}> <Text size="xs" color="dimmed" className={classes.dashboardItemTitle}>
{data.title} {data.title}
</Text> </Text>
</Group> </Group>
<Group align="flex-end" spacing="xs" mt={25}> <Group align="flex-end" gap="xs" mt={25}>
<Text className={classes.dashboardItemValue}>{data.value}</Text> <Text className={classes.dashboardItemValue}>{data.value}</Text>
</Group> </Group>
</Paper> </Paper>

View File

@@ -43,7 +43,7 @@ export function InfoItem({
} }
return ( return (
<Group position="apart"> <Group justify="apart">
<Text fz="sm" fw={700}> <Text fz="sm" fw={700}>
{name}: {name}:
</Text> </Text>

View File

@@ -22,7 +22,7 @@ export function ProgressBar(props: ProgressBarProps) {
}, [props]); }, [props]);
return ( return (
<Stack spacing={2} style={{ flexGrow: 1, minWidth: '100px' }}> <Stack gap={2} style={{ flexGrow: 1, minWidth: '100px' }}>
{props.progressLabel && ( {props.progressLabel && (
<Text align="center" size="xs"> <Text align="center" size="xs">
{props.value} / {props.maximum} {props.value} / {props.maximum}

View File

@@ -59,7 +59,7 @@ export function AboutInvenTreeModal({
<tr key={idx}> <tr key={idx}>
<td>{map.title}</td> <td>{map.title}</td>
<td> <td>
<Group position="apart" spacing="xs"> <Group justify="apart" gap="xs">
{alwaysLink ? ( {alwaysLink ? (
<Anchor href={data[map.ref]} target="_blank"> <Anchor href={data[map.ref]} target="_blank">
{data[map.ref]} {data[map.ref]}
@@ -177,7 +177,7 @@ export function AboutInvenTreeModal({
</tbody> </tbody>
</Table> </Table>
<Divider /> <Divider />
<Group position="apart"> <Group justify="apart">
<CopyButton <CopyButton
value={copyval} value={copyval}
label={<Trans>Copy version information</Trans>} label={<Trans>Copy version information</Trans>}

View File

@@ -18,14 +18,14 @@ import { apiUrl } from '../../states/ApiState';
export function LicenceView(entries: Readonly<any[]>) { export function LicenceView(entries: Readonly<any[]>) {
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Divider /> <Divider />
{entries?.length > 0 ? ( {entries?.length > 0 ? (
<Accordion variant="contained" defaultValue="-"> <Accordion variant="contained" defaultValue="-">
{entries?.map((entry: any, index: number) => ( {entries?.map((entry: any, index: number) => (
<Accordion.Item key={entry.name} value={`entry-${index}`}> <Accordion.Item key={entry.name} value={`entry-${index}`}>
<Accordion.Control> <Accordion.Control>
<Group position="apart" grow> <Group justify="apart" grow>
<Text>{entry.name}</Text> <Text>{entry.name}</Text>
<Text>{entry.license}</Text> <Text>{entry.license}</Text>
<Space /> <Space />
@@ -60,7 +60,7 @@ export function LicenseModal() {
const rspdata = !data ? [] : Object.keys(data ?? {}); const rspdata = !data ? [] : Object.keys(data ?? {});
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Divider /> <Divider />
<LoadingOverlay visible={isFetching} /> <LoadingOverlay visible={isFetching} />
{isFetching && ( {isFetching && (

View File

@@ -137,7 +137,7 @@ export function ServerInfoModal({
</tbody> </tbody>
</Table> </Table>
<Divider /> <Divider />
<Group position="right"> <Group justify="right">
<Button <Button
color="red" color="red"
onClick={() => { onClick={() => {

View File

@@ -42,7 +42,7 @@ export function BreadcrumbList({
return ( return (
<Paper p="3" radius="xs"> <Paper p="3" radius="xs">
<Group spacing="xs"> <Group gap="xs">
{navCallback && ( {navCallback && (
<ActionIcon key="nav-action" onClick={navCallback}> <ActionIcon key="nav-action" onClick={navCallback}>
<IconMenu2 /> <IconMenu2 />

View File

@@ -79,7 +79,7 @@ function DetailDrawerComponent({
</Group> </Group>
} }
> >
<Stack spacing={'xs'} className={classes.flex}> <Stack gap={'xs'} className={classes.flex}>
<Divider /> <Divider />
{content} {content}
</Stack> </Stack>

View File

@@ -88,7 +88,7 @@ export function Header() {
}} }}
/> />
<Container className={classes.layoutHeaderSection} size="100%"> <Container className={classes.layoutHeaderSection} size="100%">
<Group position="apart"> <Group justify="apart">
<Group> <Group>
<NavHoverMenu openDrawer={openNavDrawer} /> <NavHoverMenu openDrawer={openNavDrawer} />
<NavTabs /> <NavTabs />

View File

@@ -22,7 +22,7 @@ export function MainMenu() {
<Menu width={260} position="bottom-end"> <Menu width={260} position="bottom-end">
<Menu.Target> <Menu.Target>
<UnstyledButton className={classes.layoutHeaderUser}> <UnstyledButton className={classes.layoutHeaderUser}>
<Group spacing={7}> <Group gap={7}>
<Text weight={500} size="sm" sx={{ lineHeight: 1 }} mr={3}> <Text weight={500} size="sm" sx={{ lineHeight: 1 }} mr={3}>
{userState.username() ? ( {userState.username() ? (
userState.username() userState.username()

View File

@@ -56,7 +56,7 @@ export function NavHoverMenu({
</HoverCard.Target> </HoverCard.Target>
<HoverCard.Dropdown sx={{ overflow: 'hidden' }}> <HoverCard.Dropdown sx={{ overflow: 'hidden' }}>
<Group position="apart" px="md"> <Group justify="apart" px="md">
<ActionIcon <ActionIcon
onClick={openDrawer} onClick={openDrawer}
onMouseOver={openDrawer} onMouseOver={openDrawer}
@@ -64,7 +64,7 @@ export function NavHoverMenu({
> >
<IconLayoutSidebar /> <IconLayoutSidebar />
</ActionIcon> </ActionIcon>
<Group spacing={'xs'}> <Group gap={'xs'}>
{instanceName ? ( {instanceName ? (
instanceName instanceName
) : ( ) : (
@@ -89,7 +89,7 @@ export function NavHoverMenu({
/> />
<MenuLinks links={onlyItems} highlighted={true} /> <MenuLinks links={onlyItems} highlighted={true} />
<div className={classes.headerDropdownFooter}> <div className={classes.headerDropdownFooter}>
<Group position="apart"> <Group justify="apart">
<div> <div>
<Text fw={500} fz="sm"> <Text fw={500} fz="sm">
<Trans>Get started</Trans> <Trans>Get started</Trans>

View File

@@ -66,7 +66,7 @@ export function NotificationDrawer({
} }
}} }}
title={ title={
<Group position="apart" noWrap={true}> <Group justify="apart" wrap="nowrap">
<StylishText size="lg">{t`Notifications`}</StylishText> <StylishText size="lg">{t`Notifications`}</StylishText>
<ActionIcon <ActionIcon
onClick={() => { onClick={() => {
@@ -79,7 +79,7 @@ export function NotificationDrawer({
</Group> </Group>
} }
> >
<Stack spacing="xs"> <Stack gap="xs">
<Divider /> <Divider />
<LoadingOverlay visible={notificationQuery.isFetching} /> <LoadingOverlay visible={notificationQuery.isFetching} />
{(notificationQuery.data?.results?.length ?? 0) == 0 && ( {(notificationQuery.data?.results?.length ?? 0) == 0 && (
@@ -88,8 +88,8 @@ export function NotificationDrawer({
</Alert> </Alert>
)} )}
{notificationQuery.data?.results?.map((notification: any) => ( {notificationQuery.data?.results?.map((notification: any) => (
<Group position="apart" key={notification.pk}> <Group justify="apart" key={notification.pk}>
<Stack spacing="3"> <Stack gap="3">
{notification?.target?.link ? ( {notification?.target?.link ? (
<Text <Text
size="sm" size="sm"

View File

@@ -32,7 +32,7 @@ export function PageDetail({
actions?: ReactNode[]; actions?: ReactNode[];
}) { }) {
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
{breadcrumbs && breadcrumbs.length > 0 && ( {breadcrumbs && breadcrumbs.length > 0 && (
<Paper p="xs" radius="xs" shadow="xs"> <Paper p="xs" radius="xs" shadow="xs">
<BreadcrumbList <BreadcrumbList
@@ -42,13 +42,13 @@ export function PageDetail({
</Paper> </Paper>
)} )}
<Paper p="xs" radius="xs" shadow="xs"> <Paper p="xs" radius="xs" shadow="xs">
<Stack spacing="xs"> <Stack gap="xs">
<Group position="apart" noWrap={true}> <Group justify="apart" wrap="nowrap">
<Group position="left" noWrap={true}> <Group justify="left" wrap="nowrap">
{imageUrl && ( {imageUrl && (
<ApiImage src={imageUrl} radius="sm" height={64} width={64} /> <ApiImage src={imageUrl} radius="sm" height={64} width={64} />
)} )}
<Stack spacing="xs"> <Stack gap="xs">
{title && <StylishText size="lg">{title}</StylishText>} {title && <StylishText size="lg">{title}</StylishText>}
{subtitle && ( {subtitle && (
<Text size="md" truncate> <Text size="md" truncate>
@@ -59,12 +59,12 @@ export function PageDetail({
</Group> </Group>
<Space /> <Space />
{detail} {detail}
<Group position="right" spacing="xs" noWrap> <Group justify="right" gap="xs" wrap="nowrap">
{badges} {badges}
</Group> </Group>
<Space /> <Space />
{actions && ( {actions && (
<Group spacing={5} position="right"> <Group gap={5} justify="right">
{actions.map((action, idx) => ( {actions.map((action, idx) => (
<Fragment key={idx}>{action}</Fragment> <Fragment key={idx}>{action}</Fragment>
))} ))}

View File

@@ -161,7 +161,7 @@ function BasePanelGroup({
width: '100%' width: '100%'
}} }}
> >
<Stack spacing="md"> <Stack gap="md">
{panel.showHeadline !== false && ( {panel.showHeadline !== false && (
<> <>
<StylishText size="xl">{panel.label}</StylishText> <StylishText size="xl">{panel.label}</StylishText>

View File

@@ -61,7 +61,7 @@ export function PartCategoryTree({
<Group <Group
position="apart" position="apart"
key={node.id} key={node.id}
noWrap={true} wrap="nowrap"
onClick={() => { onClick={() => {
onClose(); onClose();
navigate(`/part/category/${node.id}`); navigate(`/part/category/${node.id}`);
@@ -148,13 +148,13 @@ export function PartCategoryTree({
} }
}} }}
title={ title={
<Group position="left" p="ms" spacing="md" noWrap={true}> <Group justify="left" p="ms" gap="md" wrap="nowrap">
<IconSitemap /> <IconSitemap />
<StylishText size="lg">{t`Part Categories`}</StylishText> <StylishText size="lg">{t`Part Categories`}</StylishText>
</Group> </Group>
} }
> >
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={treeQuery.isFetching} /> <LoadingOverlay visible={treeQuery.isFetching} />
<ReactTree <ReactTree
nodes={treeQuery.data ?? []} nodes={treeQuery.data ?? []}

View File

@@ -68,8 +68,8 @@ function QueryResultGroup({
return ( return (
<Paper shadow="sm" radius="xs" p="md" key={`paper-${query.model}`}> <Paper shadow="sm" radius="xs" p="md" key={`paper-${query.model}`}>
<Stack key={`stack-${query.model}`}> <Stack key={`stack-${query.model}`}>
<Group position="apart" noWrap={true}> <Group justify="apart" wrap="nowrap">
<Group position="left" spacing={5} noWrap={true}> <Group justify="left" gap={5} wrap="nowrap">
<Text size="lg">{model.label_multiple}</Text> <Text size="lg">{model.label_multiple}</Text>
<Text size="sm" italic> <Text size="sm" italic>
{' '} {' '}
@@ -331,7 +331,7 @@ export function SearchDrawer({
withCloseButton={false} withCloseButton={false}
styles={{ header: { width: '100%' }, title: { width: '100%' } }} styles={{ header: { width: '100%' }, title: { width: '100%' } }}
title={ title={
<Group position="apart" spacing={1} noWrap={true}> <Group justify="apart" gap={1} wrap="nowrap">
<TextInput <TextInput
placeholder={t`Enter search text`} placeholder={t`Enter search text`}
radius="xs" radius="xs"
@@ -392,7 +392,7 @@ export function SearchDrawer({
</Center> </Center>
)} )}
{!searchQuery.isFetching && !searchQuery.isError && ( {!searchQuery.isFetching && !searchQuery.isError && (
<Stack spacing="md"> <Stack gap="md">
{queryResults.map((query, idx) => ( {queryResults.map((query, idx) => (
<QueryResultGroup <QueryResultGroup
key={idx} key={idx}

View File

@@ -22,7 +22,7 @@ export function SettingsHeader({
switch_link?: string; switch_link?: string;
}) { }) {
return ( return (
<Stack spacing="0" ml={'sm'}> <Stack gap="0" ml={'sm'}>
<Group> <Group>
<Title order={3}>{title}</Title> <Title order={3}>{title}</Title>
{shorthand && <Text c="dimmed">({shorthand})</Text>} {shorthand && <Text c="dimmed">({shorthand})</Text>}

View File

@@ -53,7 +53,7 @@ export function StockLocationTree({
<Group <Group
position="apart" position="apart"
key={node.id} key={node.id}
noWrap={true} wrap="nowrap"
onClick={() => { onClick={() => {
onClose(); onClose();
navigate(`/stock/location/${node.id}`); navigate(`/stock/location/${node.id}`);
@@ -88,13 +88,13 @@ export function StockLocationTree({
} }
}} }}
title={ title={
<Group position="left" noWrap={true} spacing="md" p="md"> <Group justify="left" wrap="nowrap" gap="md" p="md">
<IconSitemap /> <IconSitemap />
<StylishText size="lg">{t`Stock Locations`}</StylishText> <StylishText size="lg">{t`Stock Locations`}</StylishText>
</Group> </Group>
} }
> >
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={treeQuery.isFetching} /> <LoadingOverlay visible={treeQuery.isFetching} />
<ReactTree <ReactTree
nodes={treeQuery.data ?? []} nodes={treeQuery.data ?? []}

View File

@@ -113,8 +113,8 @@ export function RenderInlineModel({
// TODO: Handle URL // TODO: Handle URL
return ( return (
<Group spacing="xs" position="apart" noWrap={true}> <Group gap="xs" justify="apart" wrap="nowrap">
<Group spacing="xs" position="left" noWrap={true}> <Group gap="xs" justify="left" wrap="nowrap">
{image && Thumbnail({ src: image, size: 18 })} {image && Thumbnail({ src: image, size: 18 })}
<Text size="sm">{primary}</Text> <Text size="sm">{primary}</Text>
{secondary && <Text size="xs">{secondary}</Text>} {secondary && <Text size="xs">{secondary}</Text>}

View File

@@ -137,7 +137,7 @@ function SettingValue({
); );
default: default:
return valueText ? ( return valueText ? (
<Group spacing="xs" position="right"> <Group gap="xs" justify="right">
<Space /> <Space />
<Button variant="subtle" onClick={onEditButton}> <Button variant="subtle" onClick={onEditButton}>
{valueText} {valueText}
@@ -177,8 +177,8 @@ export function SettingItem({
return ( return (
<Paper style={style}> <Paper style={style}>
<Group position="apart" p="3"> <Group justify="apart" p="3">
<Stack spacing="2" p="4px"> <Stack gap="2" p="4px">
<Text> <Text>
{setting.name} {setting.name}
{setting.required ? ' *' : ''} {setting.required ? ' *' : ''}

View File

@@ -35,7 +35,7 @@ export function SettingList({
return ( return (
<> <>
<Stack spacing="xs"> <Stack gap="xs">
{(keys || allKeys).map((key, i) => { {(keys || allKeys).map((key, i) => {
const setting = settingsState?.settings?.find( const setting = settingsState?.settings?.find(
(s: any) => s.key === key (s: any) => s.key === key

View File

@@ -134,7 +134,7 @@ function WidgetControlBar({
useHotkeys([['mod+E', () => editFnc()]]); useHotkeys([['mod+E', () => editFnc()]]);
return ( return (
<Group position="right"> <Group justify="right">
<Menu <Menu
shadow="md" shadow="md"
width={200} width={200}

View File

@@ -244,7 +244,7 @@ export function openModalApiForm(props: OpenApiFormProps) {
props.onClose ? props.onClose() : null; props.onClose ? props.onClose() : null;
}, },
children: ( children: (
<Stack spacing={'xs'}> <Stack gap={'xs'}>
<Divider /> <Divider />
<ApiForm id={modalId} props={props} optionsLoading={false} /> <ApiForm id={modalId} props={props} optionsLoading={false} />
</Stack> </Stack>

View File

@@ -62,7 +62,7 @@ export function useApiFormModal(props: ApiFormModalProps) {
closeOnClickOutside: formProps.closeOnClickOutside, closeOnClickOutside: formProps.closeOnClickOutside,
size: props.size ?? 'xl', size: props.size ?? 'xl',
children: ( children: (
<Stack spacing={'xs'}> <Stack gap={'xs'}>
<Divider /> <Divider />
<OptionsApiForm props={formProps} id={id} /> <OptionsApiForm props={formProps} id={id} />
</Stack> </Stack>

View File

@@ -22,7 +22,7 @@ export default function Logged_In() {
<Text size="lg"> <Text size="lg">
<Trans>Checking if you are already logged in</Trans> <Trans>Checking if you are already logged in</Trans>
</Text> </Text>
<Group position="center"> <Group justify="center">
<Loader /> <Loader />
</Group> </Group>
</Stack> </Stack>

View File

@@ -240,14 +240,14 @@ export default function Scan() {
if (uniqueObjectTypes.length === 0) { if (uniqueObjectTypes.length === 0) {
return ( return (
<Group spacing={0}> <Group gap={0}>
<IconQuestionMark color="orange" /> <IconQuestionMark color="orange" />
<Trans>Selected elements are not known</Trans> <Trans>Selected elements are not known</Trans>
</Group> </Group>
); );
} else if (uniqueObjectTypes.length > 1) { } else if (uniqueObjectTypes.length > 1) {
return ( return (
<Group spacing={0}> <Group gap={0}>
<IconAlertCircle color="orange" /> <IconAlertCircle color="orange" />
<Trans>Multiple object types selected</Trans> <Trans>Multiple object types selected</Trans>
</Group> </Group>
@@ -270,8 +270,8 @@ export default function Scan() {
// rendering // rendering
return ( return (
<> <>
<Group position="apart"> <Group justify="apart">
<Group position="left"> <Group justify="left">
<StylishText> <StylishText>
<Trans>Scan Page</Trans> <Trans>Scan Page</Trans>
</StylishText> </StylishText>
@@ -287,8 +287,8 @@ export default function Scan() {
<Grid maw={'100%'}> <Grid maw={'100%'}>
<Col span={4}> <Col span={4}>
<Stack> <Stack>
<Stack spacing="xs"> <Stack gap="xs">
<Group position="apart"> <Group justify="apart">
<TitleWithDoc <TitleWithDoc
order={3} order={3}
text={t`Select the input method you want to use to scan items.`} text={t`Select the input method you want to use to scan items.`}
@@ -306,7 +306,7 @@ export default function Scan() {
</Group> </Group>
{inp} {inp}
</Stack> </Stack>
<Stack spacing={0}> <Stack gap={0}>
<TitleWithDoc <TitleWithDoc
order={3} order={3}
text={t`Depending on the selected parts actions will be shown here. Not all barcode types are supported currently.`} text={t`Depending on the selected parts actions will be shown here. Not all barcode types are supported currently.`}
@@ -355,7 +355,7 @@ export default function Scan() {
</Stack> </Stack>
</Col> </Col>
<Col span={8}> <Col span={8}>
<Group position="apart"> <Group justify="apart">
<TitleWithDoc <TitleWithDoc
order={3} order={3}
text={t`History is locally kept in this browser.`} text={t`History is locally kept in this browser.`}
@@ -696,8 +696,8 @@ function InputImageBarcode({ action }: inputProps) {
}, [cameraValue]); }, [cameraValue]);
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Group spacing="xs"> <Group gap="xs">
<Select <Select
value={cameraValue} value={cameraValue}
onChange={setCameraValue} onChange={setCameraValue}

View File

@@ -35,7 +35,7 @@ export function AccountDetailPanel() {
</Group> </Group>
<Group> <Group>
{editing ? ( {editing ? (
<Stack spacing="xs"> <Stack gap="xs">
<TextInput <TextInput
label="first name" label="first name"
placeholder={t`First name`} placeholder={t`First name`}
@@ -46,14 +46,14 @@ export function AccountDetailPanel() {
placeholder={t`Last name`} placeholder={t`Last name`}
{...form.getInputProps('last_name')} {...form.getInputProps('last_name')}
/> />
<Group position="right" mt="md"> <Group justify="right" mt="md">
<Button type="submit"> <Button type="submit">
<Trans>Submit</Trans> <Trans>Submit</Trans>
</Button> </Button>
</Group> </Group>
</Stack> </Stack>
) : ( ) : (
<Stack spacing="0"> <Stack gap="0">
<Text> <Text>
<Trans>First name: </Trans> <Trans>First name: </Trans>
{form.values.first_name} {form.values.first_name}

View File

@@ -137,7 +137,7 @@ function EmailContent({}: {}) {
key={link.id} key={link.id}
value={String(link.id)} value={String(link.id)}
label={ label={
<Group position="apart"> <Group justify="apart">
{link.email} {link.email}
{link.primary && ( {link.primary && (
<Badge color="blue"> <Badge color="blue">
@@ -251,7 +251,7 @@ function SsoContent({ dataProvider }: { dataProvider: any | undefined }) {
variant="outline" variant="outline"
disabled={!provider.configured} disabled={!provider.configured}
> >
<Group position="apart"> <Group justify="apart">
{provider.display_name} {provider.display_name}
{provider.configured == false && <IconAlertCircle />} {provider.configured == false && <IconAlertCircle />}
</Group> </Group>
@@ -308,7 +308,7 @@ function SsoContent({ dataProvider }: { dataProvider: any | undefined }) {
{currentProviders === undefined ? ( {currentProviders === undefined ? (
<Trans>Loading</Trans> <Trans>Loading</Trans>
) : ( ) : (
<Stack spacing="xs"> <Stack gap="xs">
{currentProviders.map((provider: any) => ( {currentProviders.map((provider: any) => (
<ProviderButton key={provider.id} provider={provider} /> <ProviderButton key={provider.id} provider={provider} />
))} ))}

View File

@@ -97,7 +97,7 @@ export default function AdminCenter() {
label: t`Project Codes`, label: t`Project Codes`,
icon: <IconListDetails />, icon: <IconListDetails />,
content: ( content: (
<Stack spacing="xs"> <Stack gap="xs">
<GlobalSettingList keys={['PROJECT_CODES_ENABLED']} /> <GlobalSettingList keys={['PROJECT_CODES_ENABLED']} />
<Divider /> <Divider />
<ProjectCodeTable /> <ProjectCodeTable />
@@ -144,7 +144,7 @@ export default function AdminCenter() {
}, []); }, []);
const QuickAction = () => ( const QuickAction = () => (
<Stack spacing={'xs'} ml={'sm'}> <Stack gap={'xs'} ml={'sm'}>
<Title order={5}> <Title order={5}>
<Trans>Quick Actions</Trans> <Trans>Quick Actions</Trans>
</Title> </Title>
@@ -167,7 +167,7 @@ export default function AdminCenter() {
); );
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<SettingsHeader <SettingsHeader
title={t`Admin Center`} title={t`Admin Center`}
subtitle={t`Advanced Options`} subtitle={t`Advanced Options`}

View File

@@ -38,7 +38,7 @@ export default function MachineManagementPanel() {
<Space h="10px" /> <Space h="10px" />
<Stack spacing={'xs'}> <Stack gap={'xs'}>
<Title order={5}> <Title order={5}>
<Trans>Machine types</Trans> <Trans>Machine types</Trans>
</Title> </Title>
@@ -47,7 +47,7 @@ export default function MachineManagementPanel() {
<Space h="10px" /> <Space h="10px" />
<Stack spacing={'xs'}> <Stack gap={'xs'}>
<Group> <Group>
<Title order={5}> <Title order={5}>
<Trans>Machine Error Stack</Trans> <Trans>Machine Error Stack</Trans>

View File

@@ -8,7 +8,7 @@ import { UserTable } from '../../../../tables/settings/UserTable';
export default function UserManagementPanel() { export default function UserManagementPanel() {
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Title order={5}> <Title order={5}>
<Trans>Users</Trans> <Trans>Users</Trans>
</Title> </Title>
@@ -21,7 +21,7 @@ export default function UserManagementPanel() {
<Divider /> <Divider />
<Stack spacing={0}> <Stack gap={0}>
<Text> <Text>
<Trans>Settings</Trans> <Trans>Settings</Trans>
</Text> </Text>

View File

@@ -288,7 +288,7 @@ export default function SystemSettings() {
return ( return (
<> <>
<Stack spacing="xs"> <Stack gap="xs">
<SettingsHeader <SettingsHeader
title={t`System Settings`} title={t`System Settings`}
subtitle={server.instance || ''} subtitle={server.instance || ''}

View File

@@ -110,7 +110,7 @@ export default function UserSettings() {
return ( return (
<> <>
<Stack spacing="xs"> <Stack gap="xs">
<SettingsHeader <SettingsHeader
title={t`Account Settings`} title={t`Account Settings`}
subtitle={`${user?.first_name} ${user?.last_name}`} subtitle={`${user?.first_name} ${user?.last_name}`}

View File

@@ -349,7 +349,7 @@ export default function BuildDetail() {
return ( return (
<> <>
{editBuild.modal} {editBuild.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={build.reference} title={build.reference}

View File

@@ -296,7 +296,7 @@ export default function CompanyDetail(props: CompanyDetailProps) {
return ( return (
<> <>
{editCompany.modal} {editCompany.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`Company` + `: ${company.name}`} title={t`Company` + `: ${company.name}`}

View File

@@ -227,7 +227,7 @@ export default function ManufacturerPartDetail() {
return ( return (
<> <>
{editManufacturerPart.modal} {editManufacturerPart.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`ManufacturerPart`} title={t`ManufacturerPart`}

View File

@@ -272,7 +272,7 @@ export default function SupplierPartDetail() {
return ( return (
<> <>
{editSuppliertPart.modal} {editSuppliertPart.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`Supplier Part`} title={t`Supplier Part`}

View File

@@ -222,7 +222,7 @@ export default function CategoryDetail({}: {}) {
return ( return (
<> <>
{editCategory.modal} {editCategory.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PartCategoryTree <PartCategoryTree
opened={treeOpen} opened={treeOpen}

View File

@@ -452,7 +452,7 @@ export default function PartDetail() {
/> />
</Grid.Col> </Grid.Col>
<Grid.Col span={8}> <Grid.Col span={8}>
<Stack spacing="xs"> <Stack gap="xs">
<table> <table>
<PartIcons part={part} /> <PartIcons part={part} />
</table> </table>
@@ -752,7 +752,7 @@ export default function PartDetail() {
return ( return (
<> <>
{editPart.modal} {editPart.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PartCategoryTree <PartCategoryTree
opened={treeOpen} opened={treeOpen}

View File

@@ -313,7 +313,7 @@ export default function PurchaseOrderDetail() {
return ( return (
<> <>
{editPurchaseOrder.modal} {editPurchaseOrder.modal}
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`Purchase Order` + `: ${order.reference}`} title={t`Purchase Order` + `: ${order.reference}`}

View File

@@ -235,7 +235,7 @@ export default function ReturnOrderDetail() {
return ( return (
<> <>
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`Return Order` + `: ${order.reference}`} title={t`Return Order` + `: ${order.reference}`}

View File

@@ -259,7 +259,7 @@ export default function SalesOrderDetail() {
return ( return (
<> <>
<Stack spacing="xs"> <Stack gap="xs">
<LoadingOverlay visible={instanceQuery.isFetching} /> <LoadingOverlay visible={instanceQuery.isFetching} />
<PageDetail <PageDetail
title={t`Sales Order` + `: ${order.reference}`} title={t`Sales Order` + `: ${order.reference}`}

View File

@@ -41,12 +41,12 @@ function FilterItem({
return ( return (
<Paper p="sm" shadow="sm" radius="xs"> <Paper p="sm" shadow="sm" radius="xs">
<Group position="apart" key={flt.name}> <Group justify="apart" key={flt.name}>
<Stack spacing="xs"> <Stack gap="xs">
<Text size="sm">{flt.label}</Text> <Text size="sm">{flt.label}</Text>
<Text size="xs">{flt.description}</Text> <Text size="xs">{flt.description}</Text>
</Stack> </Stack>
<Group position="right"> <Group justify="right">
<Badge>{flt.displayValue ?? flt.value}</Badge> <Badge>{flt.displayValue ?? flt.value}</Badge>
<Tooltip label={t`Remove filter`} withinPortal={true}> <Tooltip label={t`Remove filter`} withinPortal={true}>
<CloseButton size="md" color="red" onClick={removeFilter} /> <CloseButton size="md" color="red" onClick={removeFilter} />
@@ -138,7 +138,7 @@ function FilterAddGroup({
); );
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Divider /> <Divider />
<Select <Select
data={filterOptions} data={filterOptions}
@@ -195,14 +195,14 @@ export function FilterSelectDrawer({
onClose={onClose} onClose={onClose}
title={<StylishText size="lg">{t`Table Filters`}</StylishText>} title={<StylishText size="lg">{t`Table Filters`}</StylishText>}
> >
<Stack spacing="xs"> <Stack gap="xs">
{hasFilters && {hasFilters &&
tableState.activeFilters?.map((f) => ( tableState.activeFilters?.map((f) => (
<FilterItem key={f.name} flt={f} tableState={tableState} /> <FilterItem key={f.name} flt={f} tableState={tableState} />
))} ))}
{hasFilters && <Divider />} {hasFilters && <Divider />}
{addFilter && ( {addFilter && (
<Stack spacing="xs"> <Stack gap="xs">
<FilterAddGroup <FilterAddGroup
tableState={tableState} tableState={tableState}
availableFilters={availableFilters} availableFilters={availableFilters}

View File

@@ -548,9 +548,9 @@ export function InvenTreeTable<T = any>({
onClose={() => setFiltersVisible(false)} onClose={() => setFiltersVisible(false)}
/> />
)} )}
<Stack spacing="sm"> <Stack gap="sm">
<Group position="apart"> <Group justify="apart">
<Group position="left" key="custom-actions" spacing={5}> <Group justify="left" key="custom-actions" gap={5}>
{tableProps.tableActions?.map((group, idx) => ( {tableProps.tableActions?.map((group, idx) => (
<Fragment key={idx}>{group}</Fragment> <Fragment key={idx}>{group}</Fragment>
))} ))}
@@ -583,7 +583,7 @@ export function InvenTreeTable<T = any>({
)} )}
</Group> </Group>
<Space /> <Space />
<Group position="right" spacing={5}> <Group justify="right" gap={5}>
{tableProps.enableSearch && ( {tableProps.enableSearch && (
<TableSearchInput <TableSearchInput
searchCallback={(term: string) => searchCallback={(term: string) =>

View File

@@ -29,14 +29,14 @@ export function TableHoverCard({
return ( return (
<HoverCard withinPortal={true}> <HoverCard withinPortal={true}>
<HoverCard.Target> <HoverCard.Target>
<Group spacing="xs" position="apart" noWrap={true}> <Group gap="xs" justify="apart" wrap="nowrap">
{value} {value}
<IconInfoCircle size="16" color="blue" /> <IconInfoCircle size="16" color="blue" />
</Group> </Group>
</HoverCard.Target> </HoverCard.Target>
<HoverCard.Dropdown> <HoverCard.Dropdown>
<Stack spacing="xs"> <Stack gap="xs">
<Group spacing="xs" position="left"> <Group gap="xs" justify="left">
<IconInfoCircle size="16" color="blue" /> <IconInfoCircle size="16" color="blue" />
<Text weight="bold">{title}</Text> <Text weight="bold">{title}</Text>
</Group> </Group>

View File

@@ -149,7 +149,7 @@ export function BomTable({
let text = let text =
available_stock <= 0 ? ( available_stock <= 0 ? (
<Text color="red" italic>{t`No stock`}</Text> <Text c="red" italic>{t`No stock`}</Text>
) : ( ) : (
available_stock available_stock
); );

View File

@@ -142,7 +142,7 @@ export default function BuildLineTable({ params = {} }: { params?: any }) {
ordering: 'unit_quantity', ordering: 'unit_quantity',
render: (record: any) => { render: (record: any) => {
return ( return (
<Group position="apart"> <Group justify="apart">
<Text>{record.bom_item_detail?.quantity}</Text> <Text>{record.bom_item_detail?.quantity}</Text>
{record?.part_detail?.units && ( {record?.part_detail?.units && (
<Text size="xs">[{record.part_detail.units}]</Text> <Text size="xs">[{record.part_detail.units}]</Text>
@@ -156,7 +156,7 @@ export default function BuildLineTable({ params = {} }: { params?: any }) {
sortable: true, sortable: true,
render: (record: any) => { render: (record: any) => {
return ( return (
<Group position="apart"> <Group justify="apart">
<Text>{record.quantity}</Text> <Text>{record.quantity}</Text>
{record?.part_detail?.units && ( {record?.part_detail?.units && (
<Text size="xs">[{record.part_detail.units}]</Text> <Text size="xs">[{record.part_detail.units}]</Text>

View File

@@ -39,7 +39,7 @@ export function CompanyTable({
sortable: true, sortable: true,
render: (record: any) => { render: (record: any) => {
return ( return (
<Group spacing="xs" noWrap={true}> <Group gap="xs" wrap="nowrap">
<Thumbnail <Thumbnail
src={record.thumbnail ?? record.image ?? ''} src={record.thumbnail ?? record.image ?? ''}
alt={record.name} alt={record.name}

View File

@@ -54,7 +54,7 @@ function attachmentTableColumns(): TableColumn[] {
render: function (record: any) { render: function (record: any) {
return ( return (
<Group position="apart"> <Group justify="apart">
<Text>{record.upload_date}</Text> <Text>{record.upload_date}</Text>
{record.user_detail && ( {record.user_detail && (
<Badge size="xs">{record.user_detail.username}</Badge> <Badge size="xs">{record.user_detail.username}</Badge>
@@ -227,7 +227,7 @@ export function AttachmentTable({
}, [allowEdit]); }, [allowEdit]);
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
{pk && pk > 0 && ( {pk && pk > 0 && (
<InvenTreeTable <InvenTreeTable
key="attachment-table" key="attachment-table"
@@ -248,7 +248,7 @@ export function AttachmentTable({
{allowEdit && validPk && ( {allowEdit && validPk && (
<Dropzone onDrop={uploadFiles} key="attachment-dropzone"> <Dropzone onDrop={uploadFiles} key="attachment-dropzone">
<Dropzone.Idle> <Dropzone.Idle>
<Group position="center"> <Group justify="center">
<IconFileUpload size={24} /> <IconFileUpload size={24} />
<Text size="sm">{t`Upload attachment`}</Text> <Text size="sm">{t`Upload attachment`}</Text>
</Group> </Group>

View File

@@ -206,8 +206,8 @@ function MachineDrawer({
); );
return ( return (
<Stack spacing="xs"> <Stack gap="xs">
<Group position="apart"> <Group justify="apart">
<Box></Box> <Box></Box>
<Group> <Group>
@@ -277,8 +277,8 @@ function MachineDrawer({
</Group> </Group>
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Group position="apart"> <Group justify="apart">
<Title order={4}> <Title order={4}>
<Trans>Machine information</Trans> <Trans>Machine information</Trans>
</Title> </Title>
@@ -286,10 +286,10 @@ function MachineDrawer({
<IconRefresh /> <IconRefresh />
</ActionIcon> </ActionIcon>
</Group> </Group>
<Stack pos="relative" spacing="xs"> <Stack pos="relative" gap="xs">
<LoadingOverlay visible={isFetching} overlayOpacity={0} /> <LoadingOverlay visible={isFetching} overlayOpacity={0} />
<InfoItem name={t`Machine Type`}> <InfoItem name={t`Machine Type`}>
<Group spacing="xs"> <Group gap="xs">
{machineType ? ( {machineType ? (
<DetailDrawerLink <DetailDrawerLink
to={`../type-${machine?.machine_type}`} to={`../type-${machine?.machine_type}`}
@@ -302,7 +302,7 @@ function MachineDrawer({
</Group> </Group>
</InfoItem> </InfoItem>
<InfoItem name={t`Machine Driver`}> <InfoItem name={t`Machine Driver`}>
<Group spacing="xs"> <Group gap="xs">
{machineDriver ? ( {machineDriver ? (
<DetailDrawerLink <DetailDrawerLink
to={`../driver-${machine?.driver}`} to={`../driver-${machine?.driver}`}
@@ -333,7 +333,7 @@ function MachineDrawer({
<Text fz="sm">{machine?.status_text}</Text> <Text fz="sm">{machine?.status_text}</Text>
</Flex> </Flex>
</InfoItem> </InfoItem>
<Group position="apart" spacing="xs"> <Group justify="apart" gap="xs">
<Text fz="sm" fw={700}> <Text fz="sm" fw={700}>
<Trans>Errors</Trans>: <Trans>Errors</Trans>:
</Text> </Text>
@@ -412,7 +412,7 @@ export function MachineListTable({
sortable: true, sortable: true,
render: function (record) { render: function (record) {
return ( return (
<Group position="left" noWrap> <Group justify="left" wrap="nowrap">
<MachineStatusIndicator machine={record} /> <MachineStatusIndicator machine={record} />
<Text>{record.name}</Text> <Text>{record.name}</Text>
{record.restart_required && ( {record.restart_required && (
@@ -432,7 +432,7 @@ export function MachineListTable({
(m) => m.slug === record.machine_type (m) => m.slug === record.machine_type
); );
return ( return (
<Group spacing="xs"> <Group gap="xs">
<Text> <Text>
{machineType ? machineType.name : record.machine_type} {machineType ? machineType.name : record.machine_type}
</Text> </Text>
@@ -447,7 +447,7 @@ export function MachineListTable({
render: (record) => { render: (record) => {
const driver = machineDrivers?.find((d) => d.slug === record.driver); const driver = machineDrivers?.find((d) => d.slug === record.driver);
return ( return (
<Group spacing="xs"> <Group gap="xs">
<Text>{driver ? driver.name : record.driver}</Text> <Text>{driver ? driver.name : record.driver}</Text>
{!record.is_driver_available && <UnavailableIndicator />} {!record.is_driver_available && <UnavailableIndicator />}
</Group> </Group>

View File

@@ -78,7 +78,7 @@ function MachineTypeDrawer({ machineTypeSlug }: { machineTypeSlug: string }) {
return ( return (
<Stack> <Stack>
<Group position="center"> <Group justify="center">
<Title order={4}> <Title order={4}>
{machineType ? machineType.name : machineTypeSlug} {machineType ? machineType.name : machineTypeSlug}
</Title> </Title>
@@ -91,8 +91,8 @@ function MachineTypeDrawer({ machineTypeSlug }: { machineTypeSlug: string }) {
)} )}
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Group position="apart"> <Group justify="apart">
<Title order={4}> <Title order={4}>
<Trans>Machine type information</Trans> <Trans>Machine type information</Trans>
</Title> </Title>
@@ -101,7 +101,7 @@ function MachineTypeDrawer({ machineTypeSlug }: { machineTypeSlug: string }) {
</ActionIcon> </ActionIcon>
</Group> </Group>
<Stack pos="relative" spacing="xs"> <Stack pos="relative" gap="xs">
<LoadingOverlay visible={isFetching} overlayOpacity={0} /> <LoadingOverlay visible={isFetching} overlayOpacity={0} />
<InfoItem name={t`Name`} value={machineType?.name} type="text" /> <InfoItem name={t`Name`} value={machineType?.name} type="text" />
<InfoItem name={t`Slug`} value={machineType?.slug} type="text" /> <InfoItem name={t`Slug`} value={machineType?.slug} type="text" />
@@ -138,7 +138,7 @@ function MachineTypeDrawer({ machineTypeSlug }: { machineTypeSlug: string }) {
</Card> </Card>
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Title order={4}> <Title order={4}>
<Trans>Available drivers</Trans> <Trans>Available drivers</Trans>
</Title> </Title>
@@ -182,7 +182,7 @@ function MachineDriverDrawer({
return ( return (
<Stack> <Stack>
<Group position="center"> <Group justify="center">
<Title order={4}> <Title order={4}>
{machineDriver ? machineDriver.name : machineDriverSlug} {machineDriver ? machineDriver.name : machineDriverSlug}
</Title> </Title>
@@ -195,8 +195,8 @@ function MachineDriverDrawer({
)} )}
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Group position="apart"> <Group justify="apart">
<Title order={4}> <Title order={4}>
<Trans>Machine driver information</Trans> <Trans>Machine driver information</Trans>
</Title> </Title>
@@ -205,7 +205,7 @@ function MachineDriverDrawer({
</ActionIcon> </ActionIcon>
</Group> </Group>
<Stack pos="relative" spacing="xs"> <Stack pos="relative" gap="xs">
<LoadingOverlay visible={isFetching} overlayOpacity={0} /> <LoadingOverlay visible={isFetching} overlayOpacity={0} />
<InfoItem name={t`Name`} value={machineDriver?.name} type="text" /> <InfoItem name={t`Name`} value={machineDriver?.name} type="text" />
<InfoItem name={t`Slug`} value={machineDriver?.slug} type="text" /> <InfoItem name={t`Slug`} value={machineDriver?.slug} type="text" />
@@ -250,7 +250,7 @@ function MachineDriverDrawer({
value={machineDriver?.is_builtin} value={machineDriver?.is_builtin}
type="boolean" type="boolean"
/> />
<Group position="apart" spacing="xs"> <Group justify="apart" gap="xs">
<Text fz="sm" fw={700}> <Text fz="sm" fw={700}>
<Trans>Errors</Trans>: <Trans>Errors</Trans>:
</Text> </Text>
@@ -276,7 +276,7 @@ function MachineDriverDrawer({
</Card> </Card>
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Title order={4}> <Title order={4}>
<Trans>Machines</Trans> <Trans>Machines</Trans>
</Title> </Title>

View File

@@ -67,7 +67,7 @@ function ParameterCell({
return ( return (
<div> <div>
<Group grow ref={ref} position="apart"> <Group grow ref={ref} justify="apart">
<Group grow style={{ flex: 1 }}> <Group grow style={{ flex: 1 }}>
<TableHoverCard <TableHoverCard
value={value ?? '-'} value={value ?? '-'}

View File

@@ -94,7 +94,7 @@ export default function PartCategoryTemplateTable({}: {}) {
} }
return ( return (
<Group position="apart" grow> <Group justify="apart" grow>
<Text>{record.default_value}</Text> <Text>{record.default_value}</Text>
{units && <Text size="xs">{units}</Text>} {units && <Text size="xs">{units}</Text>}
</Group> </Group>

View File

@@ -140,7 +140,7 @@ function partTableColumns(): TableColumn[] {
return ( return (
<TableHoverCard <TableHoverCard
value={ value={
<Group spacing="xs" position="left" noWrap> <Group gap="xs" justify="left" wrap="nowrap">
<Text color={color}>{text}</Text> <Text color={color}>{text}</Text>
{record.units && ( {record.units && (
<Text size="xs" color={color}> <Text size="xs" color={color}>

View File

@@ -38,7 +38,7 @@ export default function PartTestTemplateTable({ partId }: { partId: number }) {
return ( return (
<Text <Text
weight={record.required && 700} weight={record.required && 700}
color={record.enabled ? undefined : 'red'} c={record.enabled ? undefined : 'red'}
> >
{record.test_name} {record.test_name}
</Text> </Text>

View File

@@ -185,7 +185,7 @@ export function PartThumbTable({
<Divider /> <Divider />
<Paper p="sm"> <Paper p="sm">
<Group position="apart"> <Group justify="apart">
<TextInput <TextInput
placeholder={t`Search...`} placeholder={t`Search...`}
onChange={(event) => { onChange={(event) => {

View File

@@ -47,8 +47,8 @@ export function RelatedPartTable({ partId }: { partId: number }): ReactNode {
let part = getPart(record); let part = getPart(record);
return ( return (
<Group <Group
noWrap={true} wrap="nowrap"
position="left" justify="left"
onClick={() => { onClick={() => {
navigate(`/part/${part.pk}/`); navigate(`/part/${part.pk}/`);
}} }}

View File

@@ -119,11 +119,11 @@ export function PluginDrawer({
} }
return ( return (
<Stack spacing={'xs'}> <Stack gap={'xs'}>
<Group position="apart"> <Group justify="apart">
<Box></Box> <Box></Box>
<Group spacing={'xs'}> <Group gap={'xs'}>
{plugin && PluginIcon(plugin)} {plugin && PluginIcon(plugin)}
<Title order={4}> <Title order={4}>
{plugin?.meta?.human_name ?? plugin?.name ?? '-'} {plugin?.meta?.human_name ?? plugin?.name ?? '-'}
@@ -161,11 +161,11 @@ export function PluginDrawer({
<LoadingOverlay visible={isFetching} overlayOpacity={0} /> <LoadingOverlay visible={isFetching} overlayOpacity={0} />
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Title order={4}> <Title order={4}>
<Trans>Plugin information</Trans> <Trans>Plugin information</Trans>
</Title> </Title>
<Stack pos="relative" spacing="xs"> <Stack pos="relative" gap="xs">
<InfoItem type="text" name={t`Name`} value={plugin?.name} /> <InfoItem type="text" name={t`Name`} value={plugin?.name} />
<InfoItem <InfoItem
type="text" type="text"
@@ -193,11 +193,11 @@ export function PluginDrawer({
</Card> </Card>
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Title order={4}> <Title order={4}>
<Trans>Package information</Trans> <Trans>Package information</Trans>
</Title> </Title>
<Stack pos="relative" spacing="xs"> <Stack pos="relative" gap="xs">
{plugin?.is_package && ( {plugin?.is_package && (
<InfoItem <InfoItem
type="text" type="text"
@@ -226,7 +226,7 @@ export function PluginDrawer({
{plugin && plugin.active && ( {plugin && plugin.active && (
<Card withBorder> <Card withBorder>
<Stack spacing="md"> <Stack gap="md">
<Title order={4}> <Title order={4}>
<Trans>Plugin settings</Trans> <Trans>Plugin settings</Trans>
</Title> </Title>
@@ -290,7 +290,7 @@ export default function PluginListTable() {
// TODO: Add link to plugin detail page // TODO: Add link to plugin detail page
// TODO: Add custom badges // TODO: Add custom badges
return ( return (
<Group position="left"> <Group justify="left">
<PluginIcon {...record} /> <PluginIcon {...record} />
<Text>{record.name}</Text> <Text>{record.name}</Text>
</Group> </Group>
@@ -344,7 +344,7 @@ export default function PluginListTable() {
: t`Confirm plugin deactivation` : t`Confirm plugin deactivation`
} }
> >
<Stack spacing="xs"> <Stack gap="xs">
<Text> <Text>
{active {active
? t`The following plugin will be activated` ? t`The following plugin will be activated`
@@ -532,7 +532,7 @@ export default function PluginListTable() {
icon={<IconInfoCircle />} icon={<IconInfoCircle />}
title={t`Confirm plugin uninstall`} title={t`Confirm plugin uninstall`}
> >
<Stack spacing="xs"> <Stack gap="xs">
<Text>{t`The selected plugin will be uninstalled.`}</Text> <Text>{t`The selected plugin will be uninstalled.`}</Text>
<Text>{t`This action cannot be undone.`}</Text> <Text>{t`This action cannot be undone.`}</Text>
</Stack> </Stack>

View File

@@ -31,7 +31,7 @@ export default function ScheduledTasksTable() {
} }
return ( return (
<Group position="apart"> <Group justify="apart">
<Text>{record.last_run}</Text> <Text>{record.last_run}</Text>
{record.success ? ( {record.success ? (
<IconCircleCheck color="green" /> <IconCircleCheck color="green" />

View File

@@ -130,11 +130,11 @@ export function TemplateDrawer({
} }
return ( return (
<Stack spacing="xs" style={{ display: 'flex', flex: '1' }}> <Stack gap="xs" style={{ display: 'flex', flex: '1' }}>
{editTemplate.modal} {editTemplate.modal}
{deleteTemplate.modal} {deleteTemplate.modal}
<Group position="apart"> <Group justify="apart">
<Box></Box> <Box></Box>
<Group> <Group>

View File

@@ -178,7 +178,7 @@ function stockItemTableColumns(): TableColumn[] {
return ( return (
<TableHoverCard <TableHoverCard
value={ value={
<Group spacing="xs" position="left" noWrap={true}> <Group gap="xs" justify="left" wrap="nowrap">
<Text color={color}>{text}</Text> <Text color={color}>{text}</Text>
{part.units && ( {part.units && (
<Text size="xs" color={color}> <Text size="xs" color={color}>

View File

@@ -132,7 +132,7 @@ export default function StockItemTestResultTable({
record.stock_item != undefined && record.stock_item != itemId; record.stock_item != undefined && record.stock_item != itemId;
return ( return (
<Group position="apart"> <Group justify="apart">
<Text <Text
italic={installed} italic={installed}
fw={required && 700} fw={required && 700}
@@ -141,7 +141,7 @@ export default function StockItemTestResultTable({
{!record.templateId && '- '} {!record.templateId && '- '}
{record.test_name ?? record.template_detail?.test_name} {record.test_name ?? record.template_detail?.test_name}
</Text> </Text>
<Group position="right"> <Group justify="right">
{record.results && record.results.length > 1 && ( {record.results && record.results.length > 1 && (
<Tooltip label={t`Test Results`}> <Tooltip label={t`Test Results`}>
<Badge color="lightblue" variant="filled"> <Badge color="lightblue" variant="filled">
@@ -194,7 +194,7 @@ export default function StockItemTestResultTable({
title: t`Date`, title: t`Date`,
render: (record: any) => { render: (record: any) => {
return ( return (
<Group position="apart"> <Group justify="apart">
{renderDate(record.date)} {renderDate(record.date)}
{record.user_detail && ( {record.user_detail && (
<RenderUser instance={record.user_detail} /> <RenderUser instance={record.user_detail} />
@@ -214,7 +214,7 @@ export default function StockItemTestResultTable({
title: t`Started`, title: t`Started`,
render: (record: any) => { render: (record: any) => {
return ( return (
<Group position="apart"> <Group justify="apart">
{renderDate(record.started_datetime, { {renderDate(record.started_datetime, {
showTime: true, showTime: true,
showSeconds: true showSeconds: true
@@ -229,7 +229,7 @@ export default function StockItemTestResultTable({
title: t`Finished`, title: t`Finished`,
render: (record: any) => { render: (record: any) => {
return ( return (
<Group position="apart"> <Group justify="apart">
{renderDate(record.finished_datetime, { {renderDate(record.finished_datetime, {
showTime: true, showTime: true,
showSeconds: true showSeconds: true

View File

@@ -18,7 +18,7 @@ export default function MobileAppView() {
<Center h="100vh"> <Center h="100vh">
<Container> <Container>
<Stack> <Stack>
<Title color="red"> <Title c="red">
<Trans>Mobile viewport detected</Trans> <Trans>Mobile viewport detected</Trans>
</Title> </Title>
<Text> <Text>