diff --git a/packages/twenty-emails/package.json b/packages/twenty-emails/package.json
index 8e0785846bce..36af44f3da6e 100644
--- a/packages/twenty-emails/package.json
+++ b/packages/twenty-emails/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-emails",
- "version": "0.24.0",
+ "version": "0.24.2",
"description": "",
"author": "",
"private": true,
diff --git a/packages/twenty-front/package.json b/packages/twenty-front/package.json
index ed72dc01963c..434934ed719d 100644
--- a/packages/twenty-front/package.json
+++ b/packages/twenty-front/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-front",
- "version": "0.24.0",
+ "version": "0.24.2",
"private": true,
"type": "module",
"scripts": {
diff --git a/packages/twenty-front/src/modules/activities/tasks/components/TaskGroups.tsx b/packages/twenty-front/src/modules/activities/tasks/components/TaskGroups.tsx
index 4503fd9913b3..a6e4999773bc 100644
--- a/packages/twenty-front/src/modules/activities/tasks/components/TaskGroups.tsx
+++ b/packages/twenty-front/src/modules/activities/tasks/components/TaskGroups.tsx
@@ -91,22 +91,24 @@ export const TaskGroups = ({
);
}
+ const sortedTasksByStatus = Object.entries(
+ groupBy(tasks, ({ status }) => status),
+ ).toSorted(([statusA], [statusB]) => statusB.localeCompare(statusA));
+
return (
- {Object.entries(groupBy(tasks, ({ status }) => status)).map(
- ([status, tasksByStatus]: [string, Task[]]) => (
-
- )
- }
- />
- ),
- )}
+ {sortedTasksByStatus.map(([status, tasksByStatus]: [string, Task[]]) => (
+
+ )
+ }
+ />
+ ))}
);
};
diff --git a/packages/twenty-front/src/modules/activities/tasks/components/TaskRow.tsx b/packages/twenty-front/src/modules/activities/tasks/components/TaskRow.tsx
index 798bb077d797..52c1731db039 100644
--- a/packages/twenty-front/src/modules/activities/tasks/components/TaskRow.tsx
+++ b/packages/twenty-front/src/modules/activities/tasks/components/TaskRow.tsx
@@ -36,6 +36,8 @@ const StyledTaskBody = styled.div`
max-width: 100%;
flex: 1;
overflow: hidden;
+
+ padding-bottom: ${({ theme }) => theme.spacing(0.25)};
`;
const StyledTaskTitle = styled.div<{
@@ -44,10 +46,13 @@ const StyledTaskTitle = styled.div<{
color: ${({ theme }) => theme.font.color.primary};
font-weight: ${({ theme }) => theme.font.weight.medium};
padding: 0 ${({ theme }) => theme.spacing(2)};
+ padding-bottom: ${({ theme }) => theme.spacing(0.25)};
text-decoration: ${({ completed }) => (completed ? 'line-through' : 'none')};
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
+
+ align-items: center;
`;
const StyledDueDate = styled.div<{
@@ -71,8 +76,10 @@ const StyledPlaceholder = styled.div`
`;
const StyledLeftSideContainer = styled.div`
+ align-items: center;
display: flex;
flex: 1;
+
overflow: hidden;
`;
diff --git a/packages/twenty-front/src/modules/activities/timelineActivities/components/EventRow.tsx b/packages/twenty-front/src/modules/activities/timelineActivities/components/EventRow.tsx
index 902a7b728db1..d920ec38f0b9 100644
--- a/packages/twenty-front/src/modules/activities/timelineActivities/components/EventRow.tsx
+++ b/packages/twenty-front/src/modules/activities/timelineActivities/components/EventRow.tsx
@@ -14,6 +14,7 @@ import { beautifyPastDateRelativeToNow } from '~/utils/date-utils';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
const StyledTimelineItemContainer = styled.div`
+ color: ${({ theme }) => theme.font.color.primary};
display: flex;
gap: ${({ theme }) => theme.spacing(4)};
height: 'auto';
diff --git a/packages/twenty-front/src/modules/settings/components/SettingsPageContainer.tsx b/packages/twenty-front/src/modules/settings/components/SettingsPageContainer.tsx
index 2fc661c7a756..d33f1493d775 100644
--- a/packages/twenty-front/src/modules/settings/components/SettingsPageContainer.tsx
+++ b/packages/twenty-front/src/modules/settings/components/SettingsPageContainer.tsx
@@ -1,11 +1,9 @@
-import styled from '@emotion/styled';
-import { ReactNode } from 'react';
-
import { OBJECT_SETTINGS_WIDTH } from '@/settings/data-model/constants/ObjectSettings';
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
-import { isDefined } from '~/utils/isDefined';
-
import { ScrollWrapper } from '@/ui/utilities/scroll/components/ScrollWrapper';
+import styled from '@emotion/styled';
+import { ReactNode } from 'react';
+import { isDefined } from '~/utils/isDefined';
const StyledSettingsPageContainer = styled.div<{ width?: number }>`
display: flex;
@@ -24,17 +22,12 @@ const StyledSettingsPageContainer = styled.div<{ width?: number }>`
}};
`;
-const StyledScrollWrapper = styled(ScrollWrapper)`
- background-color: ${({ theme }) => theme.background.secondary};
- border-radius: ${({ theme }) => theme.border.radius.md};
-`;
-
export const SettingsPageContainer = ({
children,
}: {
children: ReactNode;
}) => (
-
+
{children}
-
+
);
diff --git a/packages/twenty-front/src/modules/ui/navigation/link/components/UndecoratedLink.tsx b/packages/twenty-front/src/modules/ui/navigation/link/components/UndecoratedLink.tsx
index c5c6e2ed15e8..09cae367bacf 100644
--- a/packages/twenty-front/src/modules/ui/navigation/link/components/UndecoratedLink.tsx
+++ b/packages/twenty-front/src/modules/ui/navigation/link/components/UndecoratedLink.tsx
@@ -1,8 +1,15 @@
import styled from '@emotion/styled';
import React from 'react';
-import { Link } from 'react-router-dom';
+import { Link, LinkProps } from 'react-router-dom';
-const StyledUndecoratedLink = styled(Link)<{ fullWidth: boolean }>`
+type StyledLinkProps = LinkProps & {
+ fullWidth?: boolean;
+};
+
+const StyledUndecoratedLink = styled(
+ // eslint-disable-next-line react/jsx-props-no-spreading
+ ({ fullWidth: _, ...props }: StyledLinkProps) => ,
+)`
text-decoration: none;
width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')};
`;
diff --git a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerCreateOrEditContent.tsx b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerCreateOrEditContent.tsx
index 8a1dc16e26be..a5402ea20fd4 100644
--- a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerCreateOrEditContent.tsx
+++ b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerCreateOrEditContent.tsx
@@ -79,6 +79,8 @@ export const ViewPickerCreateOrEditContent = () => {
const { handleCreate, handleUpdate } = useViewPickerPersistView();
+ const { availableFieldsForKanban } = useGetAvailableFieldsForKanban();
+
useScopedHotkeys(
Key.Enter,
async () => {
@@ -86,6 +88,12 @@ export const ViewPickerCreateOrEditContent = () => {
return;
}
if (viewPickerMode === 'create') {
+ if (
+ viewPickerType === ViewType.Kanban &&
+ availableFieldsForKanban.length === 0
+ ) {
+ return;
+ }
await handleCreate();
}
if (viewPickerMode === 'edit') {
@@ -100,8 +108,6 @@ export const ViewPickerCreateOrEditContent = () => {
setViewPickerSelectedIcon(iconKey);
};
- const { availableFieldsForKanban } = useGetAvailableFieldsForKanban();
-
const handleClose = async () => {
if (viewPickerMode === 'edit') {
await handleUpdate();
diff --git a/packages/twenty-server/package.json b/packages/twenty-server/package.json
index 0b91d978cd6e..3d42d5e782d6 100644
--- a/packages/twenty-server/package.json
+++ b/packages/twenty-server/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-server",
- "version": "0.24.0",
+ "version": "0.24.2",
"description": "",
"author": "",
"private": true,
diff --git a/packages/twenty-ui/package.json b/packages/twenty-ui/package.json
index b22ff8b7ca2a..132d5b99edaf 100644
--- a/packages/twenty-ui/package.json
+++ b/packages/twenty-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-ui",
- "version": "0.24.0",
+ "version": "0.24.2",
"type": "module",
"main": "./src/index.ts",
"exports": {
diff --git a/packages/twenty-website/package.json b/packages/twenty-website/package.json
index 0eb6260beb6a..3219867baf33 100644
--- a/packages/twenty-website/package.json
+++ b/packages/twenty-website/package.json
@@ -1,6 +1,6 @@
{
"name": "twenty-website",
- "version": "0.24.0",
+ "version": "0.24.2",
"private": true,
"scripts": {
"nx": "NX_DEFAULT_PROJECT=twenty-website node ../../node_modules/nx/bin/nx.js",