|
|
@@ -11,7 +11,7 @@ export const REPLENISHMENT_FIELD_LABEL_SX = (theme: Theme) => ({ |
|
|
theme.palette.mode === "dark" |
|
|
theme.palette.mode === "dark" |
|
|
? theme.palette.grey[100] |
|
|
? theme.palette.grey[100] |
|
|
: theme.palette.common.black, |
|
|
: theme.palette.common.black, |
|
|
fontWeight: 600, |
|
|
|
|
|
|
|
|
fontWeight: 700, |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
export const REPLENISHMENT_FIELD_ICON_SX = (theme: Theme) => ({ |
|
|
export const REPLENISHMENT_FIELD_ICON_SX = (theme: Theme) => ({ |
|
|
@@ -28,6 +28,7 @@ export const REPLENISHMENT_TEXTFIELD_SX = (theme: Theme) => |
|
|
borderRadius: 2, |
|
|
borderRadius: 2, |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
border: `1px solid ${theme.palette.divider}`, |
|
|
border: `1px solid ${theme.palette.divider}`, |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
}, |
|
|
}, |
|
|
"& .MuiFilledInput-root.Mui-focused": { |
|
|
"& .MuiFilledInput-root.Mui-focused": { |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
@@ -56,6 +57,7 @@ export const REPLENISHMENT_AUTOCOMPLETE_SX = (theme: Theme) => |
|
|
width: "100%", |
|
|
width: "100%", |
|
|
}, |
|
|
}, |
|
|
"& .MuiAutocomplete-inputRoot": { |
|
|
"& .MuiAutocomplete-inputRoot": { |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
paddingTop: `${REPLENISHMENT_FIELD_BODY_PY} !important`, |
|
|
paddingTop: `${REPLENISHMENT_FIELD_BODY_PY} !important`, |
|
|
paddingBottom: `${REPLENISHMENT_FIELD_BODY_PY} !important`, |
|
|
paddingBottom: `${REPLENISHMENT_FIELD_BODY_PY} !important`, |
|
|
paddingLeft: `${theme.spacing(REPLENISHMENT_FIELD_BODY_PX)} !important`, |
|
|
paddingLeft: `${theme.spacing(REPLENISHMENT_FIELD_BODY_PX)} !important`, |
|
|
@@ -75,6 +77,75 @@ export const REPLENISHMENT_FIELD_BODY_PY = "12px"; |
|
|
/** Horizontal padding aligned with MUI filled input (spacing 1.5 = 12px). */ |
|
|
/** Horizontal padding aligned with MUI filled input (spacing 1.5 = 12px). */ |
|
|
export const REPLENISHMENT_FIELD_BODY_PX = 1.5; |
|
|
export const REPLENISHMENT_FIELD_BODY_PX = 1.5; |
|
|
|
|
|
|
|
|
|
|
|
/** Fixed height for replenishment inputs, selects, and read-only value boxes. */ |
|
|
|
|
|
export const REPLENISHMENT_FIELD_CONTROL_HEIGHT = 44; |
|
|
|
|
|
|
|
|
|
|
|
export const REPLENISHMENT_FIELD_CONTROL_ROOT_SX = { |
|
|
|
|
|
height: REPLENISHMENT_FIELD_CONTROL_HEIGHT, |
|
|
|
|
|
minHeight: REPLENISHMENT_FIELD_CONTROL_HEIGHT, |
|
|
|
|
|
maxHeight: REPLENISHMENT_FIELD_CONTROL_HEIGHT, |
|
|
|
|
|
boxSizing: "border-box" as const, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/** Read-only value box — same outer height as {@link ReplenishmentTextField}. */ |
|
|
|
|
|
export const REPLENISHMENT_READONLY_VALUE_SX = (theme: Theme) => |
|
|
|
|
|
({ |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
|
|
|
borderRadius: 2, |
|
|
|
|
|
border: `1px solid ${theme.palette.divider}`, |
|
|
|
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
|
|
|
px: REPLENISHMENT_FIELD_BODY_PX, |
|
|
|
|
|
display: "flex", |
|
|
|
|
|
alignItems: "center", |
|
|
|
|
|
minWidth: 0, |
|
|
|
|
|
overflow: "hidden", |
|
|
|
|
|
}) as const; |
|
|
|
|
|
|
|
|
|
|
|
export function ReplenishmentReadonlyValue({ |
|
|
|
|
|
children, |
|
|
|
|
|
fontWeight, |
|
|
|
|
|
}: { |
|
|
|
|
|
children: React.ReactNode; |
|
|
|
|
|
fontWeight?: number; |
|
|
|
|
|
}) { |
|
|
|
|
|
return ( |
|
|
|
|
|
<Box sx={REPLENISHMENT_READONLY_VALUE_SX}> |
|
|
|
|
|
<Typography |
|
|
|
|
|
variant="body2" |
|
|
|
|
|
component="div" |
|
|
|
|
|
fontWeight={fontWeight} |
|
|
|
|
|
sx={{ |
|
|
|
|
|
overflow: "hidden", |
|
|
|
|
|
textOverflow: "ellipsis", |
|
|
|
|
|
whiteSpace: "nowrap", |
|
|
|
|
|
width: "100%", |
|
|
|
|
|
minWidth: 0, |
|
|
|
|
|
lineHeight: 1.43, |
|
|
|
|
|
}} |
|
|
|
|
|
> |
|
|
|
|
|
{children ?? "\u00A0"} |
|
|
|
|
|
</Typography> |
|
|
|
|
|
</Box> |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** Invisible label spacer so action buttons align with labelled fields. */ |
|
|
|
|
|
export function ReplenishmentFieldLabelSpacer() { |
|
|
|
|
|
return ( |
|
|
|
|
|
<Typography |
|
|
|
|
|
variant="body2" |
|
|
|
|
|
aria-hidden |
|
|
|
|
|
sx={{ |
|
|
|
|
|
visibility: "hidden", |
|
|
|
|
|
lineHeight: 1.35, |
|
|
|
|
|
userSelect: "none", |
|
|
|
|
|
}} |
|
|
|
|
|
> |
|
|
|
|
|
{"\u00A0"} |
|
|
|
|
|
</Typography> |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** Source DO summary header: same inset as textbox content area. */ |
|
|
/** Source DO summary header: same inset as textbox content area. */ |
|
|
export const REPLENISHMENT_SOURCE_HEADER_SX = (theme: Theme) => |
|
|
export const REPLENISHMENT_SOURCE_HEADER_SX = (theme: Theme) => |
|
|
({ |
|
|
({ |
|
|
@@ -89,7 +160,7 @@ export const REPLENISHMENT_SOURCE_HEADER_SX = (theme: Theme) => |
|
|
}) as const; |
|
|
}) as const; |
|
|
|
|
|
|
|
|
type ReplenishmentFieldLabelProps = { |
|
|
type ReplenishmentFieldLabelProps = { |
|
|
icon: ReactNode; |
|
|
|
|
|
|
|
|
icon?: ReactNode; |
|
|
title: string; |
|
|
title: string; |
|
|
required?: boolean; |
|
|
required?: boolean; |
|
|
sx?: SxProps<Theme>; |
|
|
sx?: SxProps<Theme>; |
|
|
@@ -102,14 +173,22 @@ export function ReplenishmentFieldLabel({ |
|
|
sx, |
|
|
sx, |
|
|
}: ReplenishmentFieldLabelProps) { |
|
|
}: ReplenishmentFieldLabelProps) { |
|
|
return ( |
|
|
return ( |
|
|
<Stack direction="row" spacing={1} alignItems="center" sx={sx}> |
|
|
|
|
|
{icon} |
|
|
|
|
|
<Typography variant="body2" sx={REPLENISHMENT_FIELD_LABEL_SX} component="span"> |
|
|
|
|
|
|
|
|
<Stack direction="row" spacing={icon ? 1 : 0} alignItems="center" sx={sx}> |
|
|
|
|
|
{icon ?? null} |
|
|
|
|
|
<Typography |
|
|
|
|
|
variant="body2" |
|
|
|
|
|
sx={(theme) => ({ |
|
|
|
|
|
...REPLENISHMENT_FIELD_LABEL_SX(theme), |
|
|
|
|
|
whiteSpace: "normal", |
|
|
|
|
|
lineHeight: 1.35, |
|
|
|
|
|
})} |
|
|
|
|
|
component="span" |
|
|
|
|
|
> |
|
|
{title} |
|
|
{title} |
|
|
{required ? ( |
|
|
{required ? ( |
|
|
<Typography component="span" color="error.main" aria-hidden="true"> |
|
|
|
|
|
|
|
|
<Box component="span" color="error.main" aria-hidden="true"> |
|
|
{" *"} |
|
|
{" *"} |
|
|
</Typography> |
|
|
|
|
|
|
|
|
</Box> |
|
|
) : null} |
|
|
) : null} |
|
|
</Typography> |
|
|
</Typography> |
|
|
</Stack> |
|
|
</Stack> |
|
|
@@ -163,10 +242,13 @@ export const REPLENISHMENT_FILLED_SELECT_SX = (theme: Theme) => |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
border: `1px solid ${theme.palette.divider}`, |
|
|
border: `1px solid ${theme.palette.divider}`, |
|
|
"&::before, &::after": { display: "none" }, |
|
|
"&::before, &::after": { display: "none" }, |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
}, |
|
|
}, |
|
|
"& .MuiSelect-select": { |
|
|
"& .MuiSelect-select": { |
|
|
paddingTop: REPLENISHMENT_FIELD_BODY_PY, |
|
|
paddingTop: REPLENISHMENT_FIELD_BODY_PY, |
|
|
paddingBottom: REPLENISHMENT_FIELD_BODY_PY, |
|
|
paddingBottom: REPLENISHMENT_FIELD_BODY_PY, |
|
|
|
|
|
display: "flex", |
|
|
|
|
|
alignItems: "center", |
|
|
}, |
|
|
}, |
|
|
}) as const; |
|
|
}) as const; |
|
|
|
|
|
|
|
|
@@ -242,17 +324,57 @@ export function ReplenishmentQtyWithUomField({ |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** Tracking dialog table — horizontal scroll, no fixed layout (avoids column text stacking). */ |
|
|
|
|
|
export const REPLENISHMENT_TRACKING_TABLE_SX = { |
|
|
|
|
|
width: "max-content", |
|
|
|
|
|
minWidth: "100%", |
|
|
|
|
|
"& .MuiTableCell-root": { |
|
|
|
|
|
typography: "body2", |
|
|
|
|
|
borderColor: "divider", |
|
|
|
|
|
py: 1, |
|
|
|
|
|
px: 1.25, |
|
|
|
|
|
whiteSpace: "nowrap", |
|
|
|
|
|
}, |
|
|
|
|
|
"& .MuiTableCell-root:first-of-type": { |
|
|
|
|
|
pl: 1.5, |
|
|
|
|
|
}, |
|
|
|
|
|
"& .MuiTableHead-root .MuiTableCell-root": { |
|
|
|
|
|
fontWeight: 600, |
|
|
|
|
|
color: "text.secondary", |
|
|
|
|
|
bgcolor: "action.hover", |
|
|
|
|
|
borderBottom: "1px solid", |
|
|
|
|
|
borderColor: "divider", |
|
|
|
|
|
}, |
|
|
|
|
|
"& .MuiTableBody-root .MuiTableRow-root:not(:last-of-type) .MuiTableCell-root": { |
|
|
|
|
|
borderBottom: "1px solid", |
|
|
|
|
|
borderColor: "divider", |
|
|
|
|
|
}, |
|
|
|
|
|
} as const; |
|
|
|
|
|
|
|
|
|
|
|
export const REPLENISHMENT_TRACKING_CELL_ELLIPSIS_SX = { |
|
|
|
|
|
maxWidth: 160, |
|
|
|
|
|
overflow: "hidden", |
|
|
|
|
|
textOverflow: "ellipsis", |
|
|
|
|
|
} as const; |
|
|
|
|
|
|
|
|
|
|
|
export const REPLENISHMENT_TRACKING_CELL_WRAP_SX = { |
|
|
|
|
|
minWidth: 120, |
|
|
|
|
|
maxWidth: 200, |
|
|
|
|
|
whiteSpace: "normal", |
|
|
|
|
|
wordBreak: "break-word", |
|
|
|
|
|
} as const; |
|
|
|
|
|
|
|
|
export const REPLENISHMENT_TABLE_SX = { |
|
|
export const REPLENISHMENT_TABLE_SX = { |
|
|
tableLayout: { md: "fixed" }, |
|
|
|
|
|
width: "100%", |
|
|
width: "100%", |
|
|
|
|
|
tableLayout: "fixed", |
|
|
"& .MuiTableCell-root": { |
|
|
"& .MuiTableCell-root": { |
|
|
typography: "body2", |
|
|
typography: "body2", |
|
|
borderColor: "divider", |
|
|
borderColor: "divider", |
|
|
py: 1.25, |
|
|
|
|
|
px: 2, |
|
|
|
|
|
|
|
|
py: 1, |
|
|
|
|
|
px: 1.25, |
|
|
}, |
|
|
}, |
|
|
"& .MuiTableCell-root:first-of-type": { |
|
|
"& .MuiTableCell-root:first-of-type": { |
|
|
pl: 3.5, |
|
|
|
|
|
|
|
|
pl: 1.5, |
|
|
}, |
|
|
}, |
|
|
"& .MuiTableHead-root .MuiTableCell-root": { |
|
|
"& .MuiTableHead-root .MuiTableCell-root": { |
|
|
fontWeight: 600, |
|
|
fontWeight: 600, |
|
|
@@ -378,10 +500,27 @@ export const REPLENISHMENT_TABLE_ACTION_CELL_INNER_SX = { |
|
|
width: "100%", |
|
|
width: "100%", |
|
|
} as const; |
|
|
} as const; |
|
|
|
|
|
|
|
|
|
|
|
/** In-table select — compact padding; truncate long selected labels. */ |
|
|
|
|
|
export const REPLENISHMENT_TABLE_INLINE_SELECT_SX = (theme: Theme) => |
|
|
|
|
|
({ |
|
|
|
|
|
...REPLENISHMENT_FILLED_SELECT_SX(theme), |
|
|
|
|
|
"& .MuiSelect-select": { |
|
|
|
|
|
paddingTop: "6px", |
|
|
|
|
|
paddingBottom: "6px", |
|
|
|
|
|
paddingLeft: theme.spacing(1), |
|
|
|
|
|
paddingRight: `${theme.spacing(3)} !important`, |
|
|
|
|
|
overflow: "hidden", |
|
|
|
|
|
textOverflow: "ellipsis", |
|
|
|
|
|
whiteSpace: "nowrap", |
|
|
|
|
|
}, |
|
|
|
|
|
}) as const; |
|
|
|
|
|
|
|
|
export const replenishmentSearchGridLabelSx = (col: number) => ({ |
|
|
export const replenishmentSearchGridLabelSx = (col: number) => ({ |
|
|
gridColumn: { xs: 1, lg: col }, |
|
|
gridColumn: { xs: 1, lg: col }, |
|
|
gridRow: { xs: "auto", lg: 1 }, |
|
|
gridRow: { xs: "auto", lg: 1 }, |
|
|
minWidth: 0, |
|
|
|
|
|
|
|
|
minWidth: "min-content", |
|
|
|
|
|
overflow: "hidden", |
|
|
|
|
|
textOverflow: "ellipsis", |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
export const replenishmentSearchGridInputSx = (col: number) => ({ |
|
|
export const replenishmentSearchGridInputSx = (col: number) => ({ |
|
|
@@ -395,66 +534,74 @@ export const replenishmentSearchGridInputSx = (col: number) => ({ |
|
|
}, |
|
|
}, |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
/** Shop input + lookup button share one row; button height follows the textbox. */ |
|
|
|
|
|
export const replenishmentSearchGridShopRowSx = { |
|
|
|
|
|
gridColumn: { xs: 1, lg: 3 }, |
|
|
|
|
|
|
|
|
/** Lookup / tracking buttons beside the three filter inputs (4th grid column on lg). */ |
|
|
|
|
|
export const replenishmentSearchGridActionsSx = { |
|
|
|
|
|
gridColumn: { xs: 1, lg: 4 }, |
|
|
gridRow: { xs: "auto", lg: 2 }, |
|
|
gridRow: { xs: "auto", lg: 2 }, |
|
|
minWidth: 0, |
|
|
|
|
|
display: "flex", |
|
|
display: "flex", |
|
|
|
|
|
justifyContent: { xs: "stretch", lg: "flex-start" }, |
|
|
alignItems: "stretch", |
|
|
alignItems: "stretch", |
|
|
gap: 1, |
|
|
|
|
|
"& .MuiTextField-root": { |
|
|
|
|
|
flex: 1, |
|
|
|
|
|
minWidth: 0, |
|
|
|
|
|
}, |
|
|
|
|
|
"& .MuiFormControl-root": { |
|
|
|
|
|
height: "100%", |
|
|
|
|
|
}, |
|
|
|
|
|
"& .MuiFilledInput-root": { |
|
|
|
|
|
height: "100%", |
|
|
|
|
|
boxSizing: "border-box", |
|
|
|
|
|
|
|
|
flexWrap: { xs: "wrap", lg: "nowrap" }, |
|
|
|
|
|
gap: 1.5, |
|
|
|
|
|
minWidth: 0, |
|
|
|
|
|
"& .MuiButton-root": { |
|
|
|
|
|
flex: { xs: 1, lg: "0 0 auto" }, |
|
|
|
|
|
alignSelf: "stretch", |
|
|
}, |
|
|
}, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
/** Match {@link ReplenishmentFieldLabel} typography on contained buttons. */ |
|
|
|
|
|
|
|
|
/** Match {@link ReplenishmentFieldLabel} typography on field-height buttons. */ |
|
|
export const REPLENISHMENT_LOOKUP_BUTTON_TEXT_SX = (theme: Theme) => ({ |
|
|
export const REPLENISHMENT_LOOKUP_BUTTON_TEXT_SX = (theme: Theme) => ({ |
|
|
fontSize: theme.typography.body2.fontSize, |
|
|
fontSize: theme.typography.body2.fontSize, |
|
|
fontWeight: 600, |
|
|
fontWeight: 600, |
|
|
lineHeight: 1, |
|
|
lineHeight: 1, |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
export const REPLENISHMENT_LOOKUP_BUTTON_SX = (theme: Theme) => ({ |
|
|
|
|
|
...REPLENISHMENT_LOOKUP_BUTTON_TEXT_SX(theme), |
|
|
|
|
|
alignSelf: "stretch", |
|
|
|
|
|
minHeight: "unset", |
|
|
|
|
|
height: "auto", |
|
|
|
|
|
py: 0, |
|
|
|
|
|
px: 1.5, |
|
|
|
|
|
borderRadius: 2, |
|
|
|
|
|
boxShadow: "none", |
|
|
|
|
|
textTransform: "none", |
|
|
|
|
|
whiteSpace: "nowrap", |
|
|
|
|
|
flexShrink: 0, |
|
|
|
|
|
minWidth: { xs: "auto", lg: 108 }, |
|
|
|
|
|
"& .MuiButton-startIcon": { |
|
|
|
|
|
margin: 0, |
|
|
|
|
|
marginRight: theme.spacing(0.75), |
|
|
|
|
|
"& > *:nth-of-type(1)": { |
|
|
|
|
|
fontSize: 20, |
|
|
|
|
|
|
|
|
/** Base button style — same 44px height as {@link ReplenishmentTextField}. */ |
|
|
|
|
|
export const REPLENISHMENT_FIELD_BUTTON_SX = (theme: Theme) => |
|
|
|
|
|
({ |
|
|
|
|
|
...REPLENISHMENT_LOOKUP_BUTTON_TEXT_SX(theme), |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
|
|
|
paddingTop: 0, |
|
|
|
|
|
paddingBottom: 0, |
|
|
|
|
|
px: REPLENISHMENT_FIELD_BODY_PX, |
|
|
|
|
|
borderRadius: 2, |
|
|
|
|
|
boxShadow: "none", |
|
|
|
|
|
textTransform: "none", |
|
|
|
|
|
whiteSpace: "nowrap", |
|
|
|
|
|
flexShrink: 0, |
|
|
|
|
|
"&.MuiButton-root": { |
|
|
|
|
|
...REPLENISHMENT_FIELD_CONTROL_ROOT_SX, |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
"& .MuiButton-startIcon": { |
|
|
|
|
|
margin: 0, |
|
|
|
|
|
marginRight: theme.spacing(0.75), |
|
|
|
|
|
"& > *:nth-of-type(1)": { |
|
|
|
|
|
fontSize: 18, |
|
|
|
|
|
}, |
|
|
|
|
|
}, |
|
|
|
|
|
}) as const; |
|
|
|
|
|
|
|
|
|
|
|
export const REPLENISHMENT_LOOKUP_BUTTON_SX = (theme: Theme) => |
|
|
|
|
|
({ |
|
|
|
|
|
...REPLENISHMENT_FIELD_BUTTON_SX(theme), |
|
|
|
|
|
alignSelf: "stretch", |
|
|
|
|
|
px: REPLENISHMENT_FIELD_BODY_PX, |
|
|
|
|
|
minWidth: { xs: "auto", lg: 108 }, |
|
|
|
|
|
}) as const; |
|
|
|
|
|
|
|
|
/** Outlined companion button (e.g. replenishment tracking) beside lookup. */ |
|
|
/** Outlined companion button (e.g. replenishment tracking) beside lookup. */ |
|
|
export const REPLENISHMENT_OUTLINED_ACTION_BUTTON_SX = (theme: Theme) => ({ |
|
|
|
|
|
...REPLENISHMENT_LOOKUP_BUTTON_SX(theme), |
|
|
|
|
|
minWidth: "auto", |
|
|
|
|
|
borderColor: theme.palette.divider, |
|
|
|
|
|
color: theme.palette.text.primary, |
|
|
|
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
|
|
|
"&:hover": { |
|
|
|
|
|
borderColor: theme.palette.primary.main, |
|
|
|
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.50", |
|
|
|
|
|
}, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
export const REPLENISHMENT_OUTLINED_ACTION_BUTTON_SX = (theme: Theme) => |
|
|
|
|
|
({ |
|
|
|
|
|
...REPLENISHMENT_FIELD_BUTTON_SX(theme), |
|
|
|
|
|
minWidth: "auto", |
|
|
|
|
|
px: REPLENISHMENT_FIELD_BODY_PX, |
|
|
|
|
|
borderColor: theme.palette.divider, |
|
|
|
|
|
color: theme.palette.text.primary, |
|
|
|
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.800" : "common.white", |
|
|
|
|
|
"&:hover": { |
|
|
|
|
|
borderColor: theme.palette.primary.main, |
|
|
|
|
|
bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.50", |
|
|
|
|
|
}, |
|
|
|
|
|
}) as const; |
|
|
|
|
|
|