diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCard.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCard.tsx
index 34800ea34f..2168b40c8e 100644
--- a/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCard.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-card/components/RecordBoardCard.tsx
@@ -17,6 +17,7 @@ import { RecordBoardCardHeader } from '@/object-record/record-board/record-board
import { RECORD_BOARD_CARD_CLICK_OUTSIDE_ID } from '@/object-record/record-board/record-board-card/constants/RecordBoardCardClickOutsideId';
import { RecordBoardCardComponentInstanceContext } from '@/object-record/record-board/record-board-card/states/contexts/RecordBoardCardComponentInstanceContext';
import { RecordBoardComponentInstanceContext } from '@/object-record/record-board/states/contexts/RecordBoardComponentInstanceContext';
+import { RecordCard } from '@/object-record/record-card/components/RecordCard';
import { useOpenRecordFromIndexView } from '@/object-record/record-index/hooks/useOpenRecordFromIndexView';
import { useOpenDropdown } from '@/ui/layout/dropdown/hooks/useOpenDropdown';
import { useScrollWrapperHTMLElement } from '@/ui/utilities/scroll/hooks/useScrollWrapperHTMLElement';
@@ -31,66 +32,6 @@ import { InView, useInView } from 'react-intersection-observer';
import { AnimatedEaseInOut } from 'twenty-ui/utilities';
import { useDebouncedCallback } from 'use-debounce';
-const StyledBoardCard = styled.div<{
- isDragging?: boolean;
- isSecondaryDragged?: boolean;
- isPrimaryMultiDrag?: boolean;
-}>`
- background-color: ${({ theme }) => theme.background.secondary};
- border: 1px solid ${({ theme }) => theme.border.color.medium};
- border-radius: ${({ theme }) => theme.border.radius.sm};
- color: ${({ theme }) => theme.font.color.primary};
- cursor: pointer;
-
- ${({ isSecondaryDragged }) =>
- isSecondaryDragged &&
- `
- opacity: 0.3;
- `}
-
- &[data-selected='true'] {
- background-color: ${({ theme }) => theme.accent.quaternary};
- }
-
- &[data-focused='true'] {
- background-color: ${({ theme }) => theme.background.tertiary};
- }
-
- &[data-active='true'] {
- background-color: ${({ theme }) => theme.accent.quaternary};
- border: 1px solid ${({ theme }) => theme.adaptiveColors.blue3};
- }
-
- &:hover {
- border: 1px solid ${({ theme }) => theme.border.color.strong};
-
- &[data-active='true'] {
- border: 1px solid ${({ theme }) => theme.adaptiveColors.blue3};
- }
- }
-
- .checkbox-container {
- transition: all ease-in-out 160ms;
- opacity: 0;
- }
-
- &[data-selected='true'] .checkbox-container {
- opacity: 1;
- }
-
- &:hover .checkbox-container {
- opacity: 1;
- }
-
- .compact-icon-container {
- transition: all ease-in-out 160ms;
- opacity: 0;
- }
- &:hover .compact-icon-container {
- opacity: 1;
- }
-`;
-
const StyledCardContainer = styled.div<{ isPrimaryMultiDrag?: boolean }>`
position: relative;
${({ isPrimaryMultiDrag }) =>
@@ -243,7 +184,7 @@ export const RecordBoardCard = () => {
/>
))}
- {
>
-
+
diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyCard.tsx b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyCard.tsx
new file mode 100644
index 0000000000..1e9e5c7d1b
--- /dev/null
+++ b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyCard.tsx
@@ -0,0 +1,28 @@
+import { RecordCard } from '@/object-record/record-card/components/RecordCard';
+import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
+import styled from '@emotion/styled';
+import { useRecoilValue } from 'recoil';
+
+const StyledContainer = styled.div`
+ display: flex;
+`;
+
+const StyledRecordCard = styled(RecordCard)`
+ margin-bottom: ${({ theme }) => theme.spacing(1)};
+`;
+
+type RecordCalendarMonthBodyCardProps = {
+ recordId: string;
+};
+
+export const RecordCalendarMonthBodyCard = ({
+ recordId,
+}: RecordCalendarMonthBodyCardProps) => {
+ const record = useRecoilValue(recordStoreFamilyState(recordId));
+
+ return (
+
+ {record?.id}
+
+ );
+};
diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyDay.tsx b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyDay.tsx
index ec9526270f..4f71392e00 100644
--- a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyDay.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyDay.tsx
@@ -1,3 +1,4 @@
+import { RecordCalendarMonthBodyCard } from '@/object-record/record-calendar/month/components/RecordCalendarMonthBodyCard';
import { calendarDayRecordIdsComponentFamilySelector } from '@/object-record/record-calendar/states/selectors/calendarDayRecordsComponentFamilySelector';
import { useRecoilComponentFamilyValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyValue';
import styled from '@emotion/styled';
@@ -5,6 +6,20 @@ import styled from '@emotion/styled';
const StyledContainer = styled.div`
display: flex;
width: calc(100% / 7);
+ flex-direction: column;
+ min-height: 122px;
+`;
+
+const StyledDayHeader = styled.div`
+ display: flex;
+ width: 100%;
+ text-align: right;
+ justify-content: flex-end;
+`;
+
+const StyledCardsContainer = styled.div`
+ display: flex;
+ flex-direction: column;
`;
type RecordCalendarMonthBodyDayProps = {
@@ -21,7 +36,12 @@ export const RecordCalendarMonthBodyDay = ({
return (
- {day.getDate()}: {recordIds.length}
+ {day.getDate()}
+
+ {recordIds.slice(0, 5).map((recordId) => (
+
+ ))}
+
);
};
diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyWeek.tsx b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyWeek.tsx
index 5adb1f4c70..7f3ec210d9 100644
--- a/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyWeek.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-calendar/month/components/RecordCalendarMonthBodyWeek.tsx
@@ -5,7 +5,6 @@ import { eachDayOfInterval, endOfWeek } from 'date-fns';
const StyledContainer = styled.div`
display: flex;
- min-height: 122px;
`;
type RecordCalendarMonthBodyWeekProps = {
diff --git a/packages/twenty-front/src/modules/object-record/record-card/components/RecordCard.tsx b/packages/twenty-front/src/modules/object-record/record-card/components/RecordCard.tsx
new file mode 100644
index 0000000000..71731f199b
--- /dev/null
+++ b/packages/twenty-front/src/modules/object-record/record-card/components/RecordCard.tsx
@@ -0,0 +1,63 @@
+import styled from '@emotion/styled';
+
+const StyledBoardCard = styled.div<{
+ isDragging?: boolean;
+ isSecondaryDragged?: boolean;
+ isPrimaryMultiDrag?: boolean;
+}>`
+ background-color: ${({ theme }) => theme.background.secondary};
+ border: 1px solid ${({ theme }) => theme.border.color.medium};
+ border-radius: ${({ theme }) => theme.border.radius.sm};
+ color: ${({ theme }) => theme.font.color.primary};
+ cursor: pointer;
+
+ ${({ isSecondaryDragged }) =>
+ isSecondaryDragged &&
+ `
+ opacity: 0.3;
+ `}
+
+ &[data-selected='true'] {
+ background-color: ${({ theme }) => theme.accent.quaternary};
+ }
+
+ &[data-focused='true'] {
+ background-color: ${({ theme }) => theme.background.tertiary};
+ }
+
+ &[data-active='true'] {
+ background-color: ${({ theme }) => theme.accent.quaternary};
+ border: 1px solid ${({ theme }) => theme.adaptiveColors.blue3};
+ }
+
+ &:hover {
+ border: 1px solid ${({ theme }) => theme.border.color.strong};
+
+ &[data-active='true'] {
+ border: 1px solid ${({ theme }) => theme.adaptiveColors.blue3};
+ }
+ }
+
+ .checkbox-container {
+ transition: all ease-in-out 160ms;
+ opacity: 0;
+ }
+
+ &[data-selected='true'] .checkbox-container {
+ opacity: 1;
+ }
+
+ &:hover .checkbox-container {
+ opacity: 1;
+ }
+
+ .compact-icon-container {
+ transition: all ease-in-out 160ms;
+ opacity: 0;
+ }
+ &:hover .compact-icon-container {
+ opacity: 1;
+ }
+`;
+
+export { StyledBoardCard as RecordCard };