diff --git a/js/app/bun.lock b/js/app/bun.lock index f0a144d8e..7879fb30b 100644 --- a/js/app/bun.lock +++ b/js/app/bun.lock @@ -1,6 +1,5 @@ { "lockfileVersion": 1, - "configVersion": 0, "workspaces": { "": { "name": "@coparse/monorepo", diff --git a/js/app/packages/app/component/split-layout/components/SplitContainer.tsx b/js/app/packages/app/component/split-layout/components/SplitContainer.tsx index 5bac62286..3ab6603bf 100644 --- a/js/app/packages/app/component/split-layout/components/SplitContainer.tsx +++ b/js/app/packages/app/component/split-layout/components/SplitContainer.tsx @@ -107,7 +107,7 @@ export function SplitContainer(
-
{props.children}
+
{props.children}
diff --git a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx index 40a98276e..46ff92447 100644 --- a/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx +++ b/js/app/packages/macro-entity/src/components/EntityWithEverything.tsx @@ -502,16 +502,55 @@ export function EntityWithEverything( const isSearch = () => isSearchEntity(props.entity); return ( -
+
{/* sometimes senderName and senderEmail are the same */}
+ {/* Icon inline with sender in narrow mode */} + {/* Sender Name */} -
+
{displayedNames() ?? props.entity.senderName ?? props.entity.senderEmail?.split('@')[0]} @@ -529,27 +568,46 @@ export function EntityWithEverything(
{/* Subject */} {/**/} -
-
- - - {(name) => ( - - )} +
+
+
+ + + + + {(name) => ( + + )} + +
+ {/* Body snippet - inline in wide mode */} +
+ {props.entity.snippet} +
+ {/* Timestamp inline with subject in narrow mode */} + + {(date) => { + const formattedDate = createFormattedDate(date()); + return ( + + ); + }}
- {/* Body */} -
+ {/* Body snippet - below subject in narrow mode */} +
@@ -579,55 +637,117 @@ export function EntityWithEverything( }; return ( -
- - - - {(name) => ( - - )} +
+ +
+ {/* Icon inline with title in narrow mode */} + + + + {(name) => ( + + )} + + + {/* Timestamp inline with title in narrow mode */} + + {(date) => { + const formattedDate = createFormattedDate(date()); + return ( + + ); + }} - +
-
+
{/**/} - + {userNameFromSender()} + + {(lastMessage) => ( +
+ {/* TODO (seamus): Channels endpoint does not return any information about attachments. If we have an empty message, assume it's attachments.*/} + + Attached items + + } + > + {(content) => ( + + )} + +
+ )} +
- - {(lastMessage) => ( -
- {/* TODO (seamus): Channels endpoint does not return any information about attachments. If we have an empty message, assume it's attachments.*/} - - Attached items - - } - > - {(content) => ( - - )} - -
- )} -
@@ -703,7 +823,7 @@ export function EntityWithEverything(
{ if (blocksNavigation(e)) return; props.onClick?.(props.entity, e); @@ -735,7 +855,7 @@ export function EntityWithEverything( >
-
+
@@ -762,38 +882,72 @@ export function EntityWithEverything( {/* Left Column Indicator(s) */} {/* Icon and name - top left on mobile, first item on desktop */}
-
- - } + {/* Icon/Checkbox container - in narrow mode, shows icon by default, checkbox on hover */} + {/* For emails, icon is inline with sender, so hide this container in narrow mode */} +
+ {/* Checkbox for narrow mode - shown on hover or when checked, hidden at larger widths */} + + {/* Icon - hidden on hover in narrow mode when not checked */} +
+ + } + > + + +
{/* Date and user - top right on mobile, end on desktop */}
-
+
0}>
@@ -817,14 +971,14 @@ export function EntityWithEverything( {(date) => { const formattedDate = createFormattedDate(date()); return ( - + {formattedDate()} ); }} -
+
{/* Content Hits from Search */} 0}> -
+
{(data, index, count) => ( -
+
{(notification) => (