a tool for shared writing and social publishing
0

Configure Feed

Select the types of activity you want to include in your feed.

bubble up notifactions, scroll very long pub lists

celine (May 5, 2026, 9:26 PM EDT) 98407dc8 b92bbcf0

+27 -6
-1
components/ActionBar/DesktopNavigation.tsx
··· 99 99 100 100 {onWriterPage && <PublicationButtons />} 101 101 102 - <div className="flex-1" /> 103 102 <WriterButton /> 104 103 <ReaderButton 105 104 subs={
+11 -1
components/ActionBar/MobileNavigation.tsx
··· 8 8 import { useSidebarStore } from "./Sidebar"; 9 9 import { SearchTiny } from "components/Icons/SearchTiny"; 10 10 import { useCardBorderHidden } from "components/Pages/useCardBorderHidden"; 11 + import { useIdentityData } from "components/IdentityProvider"; 11 12 12 13 export const MobileNavigation = (props: { 13 14 search?: React.ReactNode; ··· 142 143 143 144 const MobileSidebarTrigger = (props: { pageTitle: string }) => { 144 145 let setOpen = useSidebarStore((s) => s.setOpen); 146 + let { identity } = useIdentityData(); 147 + let unreads = identity?.notifications[0]?.count; 145 148 return ( 146 149 <button 147 150 className="flex gap-2 items-center text-secondary font-bold" 148 151 onClick={() => setOpen(true)} 149 152 > 150 - <MenuSmall /> 153 + <div className="relative"> 154 + <MenuSmall /> 155 + {unreads ? ( 156 + <div className="absolute left-1 -top-0.5 min-w-4 h-4 px-1 rounded-full bg-accent-1 text-accent-2 border border-bg-page text-[8px] leading-none font-bold flex items-center justify-center -translate-x-1/2"> 157 + {unreads < 100 ? unreads : "∞"} 158 + </div> 159 + ) : null} 160 + </div> 151 161 {props.pageTitle} 152 162 </button> 153 163 );
+12 -1
components/ActionBar/NavigationButtons.tsx
··· 106 106 <NotificationsReadSmall /> 107 107 ) 108 108 } 109 - label="Notifications" 109 + label={ 110 + unreads ? ( 111 + <span className="flex items-center justify-between gap-1.5"> 112 + Notifications 113 + <span className="min-w-6 h-fit px-1 py-0.5 rounded-full bg-accent-1 text-accent-2 text-sm leading-none font-bold flex items-center justify-center max-w-full truncate"> 114 + {unreads} 115 + </span> 116 + </span> 117 + ) : ( 118 + "Notifications" 119 + ) 120 + } 110 121 active={active} 111 122 className={unreads ? "text-accent-contrast! font-bold" : ""} 112 123 />
+4 -3
components/ActionBar/Publications.tsx
··· 57 57 58 58 return ( 59 59 <> 60 - <hr className="border-border-light my-2" /> 60 + <hr className="border-border-light mt-2" /> 61 61 62 62 <div 63 - className={`pubListWrapper w-full flex flex-col gap-1 sm:bg-transparent sm:border-0 ${props.className}`} 63 + className={`pubListWrapper w-full flex flex-col gap-1 -mt-1 sm:bg-transparent grow overflow-y-auto min-h-0 py-2 64 + ${props.className}`} 64 65 > 65 66 <div className="text-tertiary uppercase text-sm px-1">PUBLICATIONS</div> 66 67 {hasLooseleafs && ( ··· 80 81 <hr className="border-border-light border-dashed my-1" /> 81 82 </> 82 83 )} 83 - 84 84 {identity?.publications?.map((d) => { 85 85 return <PublicationOption {...d} key={d.uri} record={d.record} />; 86 86 })} 87 + 87 88 <SpeedyLink 88 89 href={"/lish/createPub"} 89 90 className={`pubListCreateNew no-underline!`}