a tool for shared writing and social publishing
1"use client";
2import { useUIState } from "src/useUIState";
3import { Media } from "./Media";
4import { Toolbar } from "./Toolbar";
5import { useEntitySetContext } from "./EntitySetProvider";
6import { focusBlock } from "src/utils/focusBlock";
7import { hasBlockToolbar } from "app/[leaflet_id]/Footer";
8import { useEntity } from "src/replicache";
9
10export function DesktopPageFooter(props: { pageID: string }) {
11 let focusedEntity = useUIState((s) => s.focusedEntity);
12 let focusedBlockParentID =
13 focusedEntity?.entityType === "page"
14 ? focusedEntity.entityID
15 : focusedEntity?.parent;
16 let entity_set = useEntitySetContext();
17
18 let blockType = useEntity(focusedEntity?.entityID || null, "block/type")?.data
19 .value;
20
21 return (
22 <Media
23 mobile={false}
24 className="absolute bottom-[40px] w-full z-10 pointer-events-none"
25 >
26 {focusedEntity &&
27 focusedEntity.entityType === "block" &&
28 hasBlockToolbar(blockType) &&
29 entity_set.permissions.write &&
30 focusedBlockParentID === props.pageID && (
31 <div
32 className="pointer-events-auto w-fit mx-auto py-1 px-3 h-9 bg-bg-page border border-border rounded-full shadow-sm"
33 onMouseDown={(e) => {
34 if (e.currentTarget === e.target) e.preventDefault();
35 }}
36 >
37 <Toolbar
38 blockType={blockType}
39 pageID={focusedBlockParentID}
40 blockID={focusedEntity.entityID}
41 />
42 </div>
43 )}
44 </Media>
45 );
46}