a tool for shared writing and social publishing
at update/reader 46 lines 1.5 kB view raw
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}