diff --git a/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx b/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx
index d4ced55118..8c720608a1 100644
--- a/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx
+++ b/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx
@@ -17,9 +17,8 @@ const StyledText = styled.div`
text-overflow: ellipsis;
`;
-const StyledCloseButtonContainer = styled.div`
- color: ${themeCssVariables.grayScale.gray1};
- display: flex;
+const StyledInvertedIconButton = styled(IconButton)`
+ color: ${themeCssVariables.font.color.inverted} !important;
`;
const StyledContent = styled.div<{ hasCloseButton: boolean }>`
@@ -78,15 +77,13 @@ export const InformationBanner = ({
)}
{onClose && (
-
-
-
+
)}
)}
diff --git a/packages/twenty-front/src/modules/navigation/components/NavigationDrawerOtherSection.tsx b/packages/twenty-front/src/modules/navigation/components/NavigationDrawerOtherSection.tsx
index 3f0169fc51..6ed5ca9402 100644
--- a/packages/twenty-front/src/modules/navigation/components/NavigationDrawerOtherSection.tsx
+++ b/packages/twenty-front/src/modules/navigation/components/NavigationDrawerOtherSection.tsx
@@ -6,6 +6,7 @@ import { IconHelpCircle, IconSettings } from 'twenty-ui/display';
import { AnimatedExpandableContainer } from 'twenty-ui/layout';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
+import { useOpenSettingsMenu } from '@/navigation/hooks/useOpenSettings';
import { getDocumentationUrl } from '@/support/utils/getDocumentationUrl';
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
import { navigationDrawerExpandedMemorizedState } from '@/ui/navigation/states/navigationDrawerExpandedMemorizedState';
@@ -36,6 +37,8 @@ export const NavigationDrawerOtherSection = () => {
navigationMemorizedUrlState,
);
+ const { openSettingsMenu } = useOpenSettingsMenu();
+
const { toggleNavigationSection } = useNavigationSection('Other');
const isNavigationSectionOpen = useAtomFamilyStateValue(
isNavigationSectionOpenFamilyState,
@@ -46,6 +49,7 @@ export const NavigationDrawerOtherSection = () => {
setNavigationDrawerExpandedMemorized(isNavigationDrawerExpanded);
setIsNavigationDrawerExpanded(true);
setNavigationMemorizedUrl(location.pathname + location.search);
+ openSettingsMenu();
navigate(getSettingsPath(SettingsPath.ProfilePage));
};
diff --git a/packages/twenty-front/src/modules/object-record/components/MainContainerLayoutWithSidePanel.tsx b/packages/twenty-front/src/modules/object-record/components/MainContainerLayoutWithSidePanel.tsx
index 22724a092b..53427ad1f9 100644
--- a/packages/twenty-front/src/modules/object-record/components/MainContainerLayoutWithSidePanel.tsx
+++ b/packages/twenty-front/src/modules/object-record/components/MainContainerLayoutWithSidePanel.tsx
@@ -41,9 +41,11 @@ const StyledMainContainerLayoutForMobile = styled.div`
const StyledPageBodyForMobileContainer = styled.div`
display: flex;
- flex: 1;
+ flex: 1 1 0;
flex-direction: column;
min-height: 0;
+ min-width: 0;
+ width: 0;
> * {
padding-bottom: 0;
diff --git a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
index 13452ffdd5..f1c89a7daa 100644
--- a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
+++ b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx
@@ -28,6 +28,7 @@ const StyledTableHeaderRowContainer = styled.div`
`;
const TABLE_GRID = '1fr 1fr 100px 80px';
+const TABLE_GRID_MOBILE = '3fr 3fr 1fr 70px';
export const SettingsAdminApps = () => {
const [searchQuery, setSearchQuery] = useState('');
@@ -64,7 +65,10 @@ export const SettingsAdminApps = () => {
-
+
{t`Name`}
{t`Source`}
{t`Listed`}
@@ -81,9 +85,13 @@ export const SettingsAdminApps = () => {
)}
fullWidth
>
-
+
{registration.name}
-
+
{registration.sourcePackage ?? registration.sourceType}
diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx
index 28ffa956a5..fbcbdeeb4c 100644
--- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx
+++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRow.tsx
@@ -11,6 +11,7 @@ import {
SETTINGS_OBJECT_TABLE_ROW_GRID_TEMPLATE_COLUMNS,
StyledActionTableCell,
StyledNameTableCell,
+ StyledStickyFirstCell,
} from '@/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents';
import { TableCell } from '@/ui/layout/table/components/TableCell';
import { useIcons } from 'twenty-ui/display';
@@ -70,25 +71,27 @@ export const SettingsObjectMetadataItemTableRow = ({
key={objectMetadataItem.namePlural}
to={link}
>
-
- {isDefined(Icon) && (
-
- )}
-
-
- {objectMetadataItem.labelPlural}
-
- {!objectMetadataItem.isActive && (
- {t`Deactivated`}
+
+
+ {isDefined(Icon) && (
+
)}
-
-
+
+
+ {objectMetadataItem.labelPlural}
+
+ {!objectMetadataItem.isActive && (
+ {t`Deactivated`}
+ )}
+
+
+
diff --git a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents.tsx b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents.tsx
index cdbae5b0ea..56cb0acecf 100644
--- a/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents.tsx
+++ b/packages/twenty-front/src/modules/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents.tsx
@@ -1,11 +1,23 @@
import { TableCell } from '@/ui/layout/table/components/TableCell';
-import { themeCssVariables } from 'twenty-ui/theme-constants';
+import { styled } from '@linaria/react';
+import { MOBILE_VIEWPORT, themeCssVariables } from 'twenty-ui/theme-constants';
import React from 'react';
export const SETTINGS_OBJECT_TABLE_COLUMN_WIDTH = '98.7px';
export const SETTINGS_OBJECT_TABLE_ROW_GRID_TEMPLATE_COLUMNS = `180px ${SETTINGS_OBJECT_TABLE_COLUMN_WIDTH} ${SETTINGS_OBJECT_TABLE_COLUMN_WIDTH} ${SETTINGS_OBJECT_TABLE_COLUMN_WIDTH} 36px`;
+export const SETTINGS_OBJECT_TABLE_ROW_MOBILE_MIN_WIDTH = '520px';
+
+export const StyledStickyFirstCell = styled.div`
+ @media (max-width: ${MOBILE_VIEWPORT}px) {
+ background: ${themeCssVariables.background.primary};
+ left: 0;
+ position: sticky;
+ z-index: 1;
+ }
+`;
+
export const StyledNameTableCell = (
props: React.ComponentProps,
) => (
diff --git a/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableHeader.tsx b/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableHeader.tsx
index f7f7a6487c..7b7f0ee275 100644
--- a/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableHeader.tsx
+++ b/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableHeader.tsx
@@ -6,7 +6,10 @@ import { Trans } from '@lingui/react/macro';
export const SettingsRolesTableHeader = () => {
return (
-
+
Name
@@ -14,6 +17,7 @@ export const SettingsRolesTableHeader = () => {
Assigned to
+
);
diff --git a/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableRow.tsx b/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableRow.tsx
index 2263cb3b96..93d7ec4e18 100644
--- a/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableRow.tsx
+++ b/packages/twenty-front/src/modules/settings/roles/components/SettingsRolesTableRow.tsx
@@ -83,6 +83,7 @@ export const SettingsRolesTableRow = ({ role }: SettingsRolesTableRowProps) => {
diff --git a/packages/twenty-front/src/modules/ui/navigation/bread-crumb/components/MobileBreadcrumb.tsx b/packages/twenty-front/src/modules/ui/navigation/bread-crumb/components/MobileBreadcrumb.tsx
index f3ef082c24..e68e0eef8d 100644
--- a/packages/twenty-front/src/modules/ui/navigation/bread-crumb/components/MobileBreadcrumb.tsx
+++ b/packages/twenty-front/src/modules/ui/navigation/bread-crumb/components/MobileBreadcrumb.tsx
@@ -36,6 +36,7 @@ const StyledLinkContainer = styled.div`
const StyledText = styled.span`
color: inherit;
+ cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawer.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawer.tsx
index cdb1a51f11..20a10907ad 100644
--- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawer.tsx
+++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawer.tsx
@@ -129,7 +129,7 @@ export const NavigationDrawer = ({
isExpanded={isNavigationDrawerExpanded}
>
{isSettingsDrawer && title ? (
- !isMobile &&
+
) : (
)}
diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerBackButton.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerBackButton.tsx
index 69da653341..4fb9e3db6c 100644
--- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerBackButton.tsx
+++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerBackButton.tsx
@@ -1,5 +1,6 @@
import { styled } from '@linaria/react';
+import { currentMobileNavigationDrawerState } from '@/navigation/states/currentMobileNavigationDrawerState';
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
import { navigationDrawerExpandedMemorizedState } from '@/ui/navigation/states/navigationDrawerExpandedMemorizedState';
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
@@ -53,6 +54,9 @@ export const NavigationDrawerBackButton = ({
const setIsNavigationDrawerExpanded = useSetAtomState(
isNavigationDrawerExpandedState,
);
+ const setCurrentMobileNavigationDrawer = useSetAtomState(
+ currentMobileNavigationDrawerState,
+ );
const navigationDrawerExpandedMemorized = useAtomStateValue(
navigationDrawerExpandedMemorizedState,
);
@@ -70,9 +74,10 @@ export const NavigationDrawerBackButton = ({
- setIsNavigationDrawerExpanded(navigationDrawerExpandedMemorized)
- }
+ onClick={() => {
+ setIsNavigationDrawerExpanded(navigationDrawerExpandedMemorized);
+ setCurrentMobileNavigationDrawer('main');
+ }}
>
)}
-
-
- {GET_SETTINGS_OBJECT_TABLE_METADATA.fields.map(
- (settingsObjectsTableMetadataField) => (
-
- ),
- )}
-
-
- {filteredObjectSettingsItems.map((objectSettingsItem) => {
- const isActive = objectSettingsItem.objectMetadataItem.isActive;
-
- return (
-
-
+
+
+
+ {GET_SETTINGS_OBJECT_TABLE_METADATA.fields.map(
+ (settingsObjectsTableMetadataField, index) =>
+ index === 0 ? (
+
+
+
+ ) : (
+
-
- ) : (
-
- updateOneObjectMetadataItem({
- idToUpdate: objectSettingsItem.objectMetadataItem.id,
- updatePayload: { isActive: true },
- })
- }
- onDelete={() =>
- deleteOneObjectMetadataItem(
- objectSettingsItem.objectMetadataItem.id,
- )
- }
- />
- )
- }
- link={
- isActive
- ? getSettingsPath(SettingsPath.ObjectDetail, {
- objectNamePlural:
- objectSettingsItem.objectMetadataItem.namePlural,
- })
- : undefined
- }
- />
- );
- })}
-
+ ),
+ )}
+
+
+ {filteredObjectSettingsItems.map((objectSettingsItem) => {
+ const isActive = objectSettingsItem.objectMetadataItem.isActive;
+
+ return (
+
+
+
+ ) : (
+
+ updateOneObjectMetadataItem({
+ idToUpdate:
+ objectSettingsItem.objectMetadataItem.id,
+ updatePayload: { isActive: true },
+ })
+ }
+ onDelete={() =>
+ deleteOneObjectMetadataItem(
+ objectSettingsItem.objectMetadataItem.id,
+ )
+ }
+ />
+ )
+ }
+ link={
+ isActive
+ ? getSettingsPath(SettingsPath.ObjectDetail, {
+ objectNamePlural:
+ objectSettingsItem.objectMetadataItem.namePlural,
+ })
+ : undefined
+ }
+ />
+ );
+ })}
+
+
+
>
);
};
diff --git a/packages/twenty-ui/src/display/banner/components/Banner.tsx b/packages/twenty-ui/src/display/banner/components/Banner.tsx
index 240e19d672..28e1cba14c 100644
--- a/packages/twenty-ui/src/display/banner/components/Banner.tsx
+++ b/packages/twenty-ui/src/display/banner/components/Banner.tsx
@@ -10,7 +10,7 @@ const StyledBanner = styled.div<{ variant?: BannerVariant }>`
: themeCssVariables.color.blue};
display: flex;
gap: ${themeCssVariables.spacing[3]};
- height: 40px;
+ min-height: 40px;
justify-content: center;
padding: ${themeCssVariables.spacing[2]} ${themeCssVariables.spacing[3]};
width: 100%;