chore: tweak dark mode styles

pull/2704/head
Steven 1 year ago
parent c58851bc97
commit 73baeaa0ad

@ -23,7 +23,7 @@ const HomeSidebarDrawer = () => {
return ( return (
<> <>
<IconButton onClick={toggleDrawer(true)}> <IconButton onClick={toggleDrawer(true)}>
<Icon.Search className="w-5 h-auto dark:text-gray-200" /> <Icon.Search className="w-5 h-auto dark:text-gray-400" />
</IconButton> </IconButton>
<Drawer anchor="right" size="sm" open={open} onClose={toggleDrawer(false)}> <Drawer anchor="right" size="sm" open={open} onClose={toggleDrawer(false)}>
<div className="w-full px-1"> <div className="w-full px-1">

@ -64,7 +64,7 @@ const MemoCommentMessage = ({ inbox }: Props) => {
"shrink-0 mt-2 p-2 rounded-full border", "shrink-0 mt-2 p-2 rounded-full border",
inbox.status === Inbox_Status.UNREAD inbox.status === Inbox_Status.UNREAD
? "border-blue-600 text-blue-600 bg-blue-50 dark:bg-zinc-800" ? "border-blue-600 text-blue-600 bg-blue-50 dark:bg-zinc-800"
: "border-gray-400 text-gray-400 bg-gray-50 dark:bg-zinc-800" : "border-gray-500 text-gray-500 bg-gray-50 dark:bg-zinc-800"
)} )}
> >
<Tooltip title={"Comment"} placement="bottom"> <Tooltip title={"Comment"} placement="bottom">
@ -73,7 +73,7 @@ const MemoCommentMessage = ({ inbox }: Props) => {
</div> </div>
<div <div
className={classNames( className={classNames(
"border w-full p-3 px-4 rounded-lg flex flex-col justify-start items-start gap-2 dark:border-zinc-800 hover:bg-gray-100 dark:hover:bg-zinc-800", "border w-full p-3 px-4 rounded-lg flex flex-col justify-start items-start gap-2 dark:border-zinc-700 hover:bg-gray-100 dark:hover:bg-zinc-700",
inbox.status !== Inbox_Status.UNREAD && "opacity-60" inbox.status !== Inbox_Status.UNREAD && "opacity-60"
)} )}
> >

@ -63,7 +63,7 @@ const VersionUpdateMessage = ({ inbox }: Props) => {
"shrink-0 mt-2 p-2 rounded-full border", "shrink-0 mt-2 p-2 rounded-full border",
inbox.status === Inbox_Status.UNREAD inbox.status === Inbox_Status.UNREAD
? "border-blue-600 text-blue-600 bg-blue-50 dark:bg-zinc-800" ? "border-blue-600 text-blue-600 bg-blue-50 dark:bg-zinc-800"
: "border-gray-400 text-gray-400 bg-gray-50 dark:bg-zinc-800" : "border-gray-500 text-gray-500 bg-gray-50 dark:bg-zinc-800"
)} )}
> >
<Tooltip title={"Update"} placement="bottom"> <Tooltip title={"Update"} placement="bottom">
@ -72,7 +72,7 @@ const VersionUpdateMessage = ({ inbox }: Props) => {
</div> </div>
<div <div
className={classNames( className={classNames(
"border w-full p-3 px-4 rounded-lg flex flex-col justify-start items-start gap-2 dark:border-zinc-800 hover:bg-gray-100 dark:hover:bg-zinc-800", "border w-full p-3 px-4 rounded-lg flex flex-col justify-start items-start gap-2 dark:border-zinc-700 hover:bg-gray-100 dark:hover:bg-zinc-700",
inbox.status !== Inbox_Status.UNREAD && "opacity-60" inbox.status !== Inbox_Status.UNREAD && "opacity-60"
)} )}
> >

@ -11,7 +11,7 @@ interface Props {
const MobileHeader = (props: Props) => { const MobileHeader = (props: Props) => {
const { children } = props; const { children } = props;
const { sm } = useResponsiveWidth(); const { sm } = useResponsiveWidth();
const [titleText] = useState("MEMOS"); const [titleText] = useState("Memos");
const { y: offsetTop } = useWindowScroll(); const { y: offsetTop } = useWindowScroll();
return ( return (
@ -24,8 +24,8 @@ const MobileHeader = (props: Props) => {
<div className="flex flex-row justify-start items-center mr-2 shrink-0 overflow-hidden"> <div className="flex flex-row justify-start items-center mr-2 shrink-0 overflow-hidden">
{!sm && <NavigationDrawer />} {!sm && <NavigationDrawer />}
<span <span
className="font-bold text-lg leading-10 mr-1 text-ellipsis shrink-0 cursor-pointer overflow-hidden text-gray-700 dark:text-gray-200" className="font-bold text-lg leading-10 mr-1 text-ellipsis shrink-0 cursor-pointer overflow-hidden text-gray-700 dark:text-gray-300"
onClick={() => location.reload()} onDoubleClick={() => location.reload()}
> >
{titleText} {titleText}
</span> </span>

@ -55,6 +55,18 @@ const Navigation = () => {
title: t("common.resources"), title: t("common.resources"),
icon: <Icon.Paperclip className="mr-3 w-6 h-auto opacity-70" />, icon: <Icon.Paperclip className="mr-3 w-6 h-auto opacity-70" />,
}; };
const exploreNavLink: NavLinkItem = {
id: "header-explore",
path: "/explore",
title: t("common.explore"),
icon: <Icon.Globe2 className="mr-3 w-6 h-auto opacity-70" />,
};
const profileNavLink: NavLinkItem = {
id: "header-profile",
path: user ? `/u/${encodeURIComponent(user.username)}` : "",
title: t("common.profile"),
icon: <Icon.User2 className="mr-3 w-6 h-auto opacity-70" />,
};
const inboxNavLink: NavLinkItem = { const inboxNavLink: NavLinkItem = {
id: "header-inbox", id: "header-inbox",
path: "/inbox", path: "/inbox",
@ -68,12 +80,6 @@ const Navigation = () => {
</> </>
), ),
}; };
const exploreNavLink: NavLinkItem = {
id: "header-explore",
path: "/explore",
title: t("common.explore"),
icon: <Icon.Globe2 className="mr-3 w-6 h-auto opacity-70" />,
};
const archivedNavLink: NavLinkItem = { const archivedNavLink: NavLinkItem = {
id: "header-archived", id: "header-archived",
path: "/archived", path: "/archived",
@ -94,7 +100,7 @@ const Navigation = () => {
}; };
const navLinks: NavLinkItem[] = user const navLinks: NavLinkItem[] = user
? [homeNavLink, timelineNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink] ? [homeNavLink, timelineNavLink, resourcesNavLink, exploreNavLink, profileNavLink, inboxNavLink, archivedNavLink, settingNavLink]
: [exploreNavLink, signInNavLink]; : [exploreNavLink, signInNavLink];
return ( return (
@ -105,8 +111,8 @@ const Navigation = () => {
<NavLink <NavLink
className={({ isActive }) => className={({ isActive }) =>
classNames( classNames(
"w-full px-4 pr-5 py-2 rounded-2xl border flex flex-row items-center text-lg text-gray-800 dark:text-gray-300 hover:bg-white hover:border-gray-200 dark:hover:border-zinc-600 dark:hover:bg-zinc-700", "w-full px-4 pr-5 py-2 rounded-2xl border flex flex-row items-center text-lg text-gray-800 dark:text-gray-300 hover:bg-white hover:border-gray-200 dark:hover:border-zinc-700 dark:hover:bg-zinc-800",
isActive ? "bg-white drop-shadow-sm dark:bg-zinc-700 border-gray-200 dark:border-zinc-600" : "border-transparent" isActive ? "bg-white drop-shadow-sm dark:bg-zinc-800 border-gray-200 dark:border-zinc-700" : "border-transparent"
) )
} }
key={navLink.id} key={navLink.id}

@ -23,10 +23,10 @@ const NavigationDrawer = () => {
return ( return (
<> <>
<IconButton onClick={toggleDrawer(true)}> <IconButton onClick={toggleDrawer(true)}>
<Icon.Menu className="w-5 h-auto dark:text-gray-200" /> <Icon.Menu className="w-5 h-auto dark:text-gray-400" />
</IconButton> </IconButton>
<Drawer anchor="left" size="sm" open={open} onClose={toggleDrawer(false)}> <Drawer anchor="left" size="sm" open={open} onClose={toggleDrawer(false)}>
<div className="w-full h-full px-4 bg-zinc-100 dark:bg-zinc-800"> <div className="w-full h-full px-4">
<Navigation /> <Navigation />
</div> </div>
</Drawer> </Drawer>

@ -46,7 +46,7 @@ const PersonalStatistics = (props: Props) => {
</div> </div>
<div className="w-full flex justify-between items-center"> <div className="w-full flex justify-between items-center">
<div className="w-full flex justify-start items-center"> <div className="w-full flex justify-start items-center">
<Icon.PencilLine className="w-4 h-auto mr-1" /> <Icon.Library className="w-4 h-auto mr-1" />
<span className="block text-base sm:text-sm">Memos</span> <span className="block text-base sm:text-sm">Memos</span>
</div> </div>
{isRequesting ? <Icon.Loader className="animate-spin w-4 h-auto text-gray-400" /> : <span className="font-mono">{memoAmount}</span>} {isRequesting ? <Icon.Loader className="animate-spin w-4 h-auto text-gray-400" /> : <span className="font-mono">{memoAmount}</span>}

@ -140,8 +140,8 @@ const MemberSection = () => {
<div className="title-text">{t("setting.member-list")}</div> <div className="title-text">{t("setting.member-list")}</div>
</div> </div>
<div className="w-full overflow-x-auto"> <div className="w-full overflow-x-auto">
<div className="inline-block min-w-full align-middle"> <div className="inline-block min-w-full align-middle border rounded-lg dark:border-gray-500">
<table className="min-w-full divide-y divide-gray-300 dark:divide-gray-400"> <table className="min-w-full divide-y divide-gray-300 dark:divide-gray-500">
<thead> <thead>
<tr className="text-sm font-semibold text-left text-gray-900 dark:text-gray-300"> <tr className="text-sm font-semibold text-left text-gray-900 dark:text-gray-300">
<th scope="col" className="py-2 pl-4 pr-3"> <th scope="col" className="py-2 pl-4 pr-3">

@ -1,4 +1,4 @@
import { Divider, List, ListItem } from "@mui/joy"; import { Button, Divider, List, ListItem } from "@mui/joy";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { toast } from "react-hot-toast"; import { toast } from "react-hot-toast";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
@ -58,19 +58,14 @@ const SSOSection = () => {
return ( return (
<div className="section-container"> <div className="section-container">
<div className="mb-2 w-full flex flex-row justify-start items-center gap-1"> <div className="mb-2 w-full flex flex-row justify-between items-center gap-1">
<span className="font-mono text-sm text-gray-400">{t("setting.sso-section.sso-list")}</span> <div className="flex flex-row items-center gap-1">
<LearnMore url="https://usememos.com/docs/advanced-settings/keycloak" /> <span className="font-mono text-sm text-gray-400">{t("setting.sso-section.sso-list")}</span>
<button <LearnMore url="https://usememos.com/docs/advanced-settings/keycloak" />
className="btn-normal px-2 py-0 ml-1" </div>
onClick={() => showCreateIdentityProviderDialog(undefined, fetchIdentityProviderList)} <Button onClick={() => showCreateIdentityProviderDialog(undefined, fetchIdentityProviderList)}>{t("common.create")}</Button>
>
{t("common.create")}
</button>
</div> </div>
<Divider /> <Divider />
{identityProviderList.map((identityProvider) => ( {identityProviderList.map((identityProvider) => (
<div <div
key={identityProvider.id} key={identityProvider.id}

@ -1,4 +1,4 @@
import { Divider, IconButton, List, ListItem, Radio, RadioGroup } from "@mui/joy"; import { Button, Divider, IconButton, List, ListItem, Radio, RadioGroup } from "@mui/joy";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { toast } from "react-hot-toast"; import { toast } from "react-hot-toast";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
@ -88,9 +88,7 @@ const StorageSection = () => {
<span className="font-mono text-sm text-gray-400">{t("setting.storage-section.storage-services")}</span> <span className="font-mono text-sm text-gray-400">{t("setting.storage-section.storage-services")}</span>
<LearnMore url="https://usememos.com/docs/advanced-settings/cloudflare-r2" /> <LearnMore url="https://usememos.com/docs/advanced-settings/cloudflare-r2" />
</div> </div>
<button className="btn-normal px-2 py-0 ml-1" onClick={() => showCreateStorageServiceDialog(undefined, fetchStorageList)}> <Button onClick={() => showCreateStorageServiceDialog(undefined, fetchStorageList)}>{t("common.create")}</Button>
{t("common.create")}
</button>
</div> </div>
<div className="mt-2 w-full flex flex-col"> <div className="mt-2 w-full flex flex-col">
{storageList.map((storage) => ( {storageList.map((storage) => (

@ -65,8 +65,8 @@ const WebhookSection = () => {
</div> </div>
<div className="w-full mt-2 flow-root"> <div className="w-full mt-2 flow-root">
<div className="overflow-x-auto"> <div className="overflow-x-auto">
<div className="inline-block min-w-full border rounded-lg align-middle"> <div className="inline-block min-w-full border rounded-lg align-middle dark:border-gray-500">
<table className="min-w-full divide-y divide-gray-300 dark:divide-gray-400"> <table className="min-w-full divide-y divide-gray-300 dark:divide-gray-500">
<thead> <thead>
<tr> <tr>
<th scope="col" className="px-3 py-2 text-left text-sm font-semibold text-gray-900 dark:text-gray-400"> <th scope="col" className="px-3 py-2 text-left text-sm font-semibold text-gray-900 dark:text-gray-400">

@ -1,6 +1,5 @@
import * as api from "@/helpers/api"; import * as api from "@/helpers/api";
import useCurrentUser from "@/hooks/useCurrentUser"; import useCurrentUser from "@/hooks/useCurrentUser";
import useNavigateTo from "@/hooks/useNavigateTo";
import { useGlobalStore } from "@/store/module"; import { useGlobalStore } from "@/store/module";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
import showAboutSiteDialog from "./AboutSiteDialog"; import showAboutSiteDialog from "./AboutSiteDialog";
@ -10,30 +9,24 @@ import Dropdown from "./kit/Dropdown";
const UserBanner = () => { const UserBanner = () => {
const t = useTranslate(); const t = useTranslate();
const navigateTo = useNavigateTo();
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
const { systemStatus } = globalStore.state; const { systemStatus } = globalStore.state;
const user = useCurrentUser(); const user = useCurrentUser();
const title = user ? user.nickname || user.username : systemStatus.customizedProfile.name || "memos"; const title = user ? user.nickname || user.username : systemStatus.customizedProfile.name || "memos";
const handleMyAccountClick = () => {
navigateTo(`/u/${encodeURIComponent(user.username)}`);
};
const handleAboutBtnClick = () => { const handleAboutBtnClick = () => {
showAboutSiteDialog(); showAboutSiteDialog();
}; };
const handleSignOutBtnClick = async () => { const handleSignOutBtnClick = async () => {
await api.signout(); await api.signout();
localStorage.removeItem("userId");
window.location.href = "/auth"; window.location.href = "/auth";
}; };
return ( return (
<div className="relative w-full h-auto px-1 shrink-0"> <div className="relative w-full h-auto px-1 shrink-0">
<Dropdown <Dropdown
className="w-auto" className="w-auto inline-flex"
trigger={ trigger={
<div className="px-3 py-2 max-w-full flex flex-row justify-start items-center cursor-pointer rounded-2xl hover:shadow hover:bg-white dark:hover:bg-zinc-700"> <div className="px-3 py-2 max-w-full flex flex-row justify-start items-center cursor-pointer rounded-2xl hover:shadow hover:bg-white dark:hover:bg-zinc-700">
<UserAvatar className="shadow shrink-0 mr-2" avatarUrl={user?.avatarUrl} /> <UserAvatar className="shadow shrink-0 mr-2" avatarUrl={user?.avatarUrl} />
@ -44,23 +37,6 @@ const UserBanner = () => {
positionClassName="top-full mt-2" positionClassName="top-full mt-2"
actions={ actions={
<> <>
{user != undefined && (
<>
<button
className="w-full px-3 truncate text-left leading-10 cursor-pointer rounded flex flex-row justify-start items-center dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-zinc-800"
onClick={handleMyAccountClick}
>
<Icon.User className="w-5 h-auto mr-2 opacity-80" /> {t("common.profile")}
</button>
<a
className="w-full px-3 truncate text-left leading-10 cursor-pointer rounded flex flex-row justify-start items-center dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-zinc-800"
href={`/u/${user?.id}/rss.xml`}
target="_blank"
>
<Icon.Rss className="w-5 h-auto mr-2 opacity-80" /> RSS
</a>
</>
)}
<button <button
className="w-full px-3 truncate text-left leading-10 cursor-pointer rounded flex flex-row justify-start items-center dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-zinc-800" className="w-full px-3 truncate text-left leading-10 cursor-pointer rounded flex flex-row justify-start items-center dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-zinc-800"
onClick={handleAboutBtnClick} onClick={handleAboutBtnClick}

@ -11,7 +11,7 @@ function Root() {
<div className="w-full min-h-full"> <div className="w-full min-h-full">
<div className="w-full sm:pl-56 md:pl-64 mx-auto flex flex-row justify-center items-start"> <div className="w-full sm:pl-56 md:pl-64 mx-auto flex flex-row justify-center items-start">
{sm && ( {sm && (
<div className="hidden sm:block fixed top-0 left-0 w-56 md:w-64 px-4 border-r dark:border-zinc-800 h-full bg-zinc-50 dark:bg-zinc-800 dark:bg-opacity-60 transition-all hover:shadow-xl z-2"> <div className="hidden sm:block fixed top-0 left-0 w-56 md:w-64 px-4 border-r dark:border-zinc-800 h-full bg-zinc-50 dark:bg-zinc-800 dark:bg-opacity-40 transition-all hover:shadow-xl z-2">
<Navigation /> <Navigation />
</div> </div>
)} )}

@ -93,7 +93,12 @@ const UserProfile = () => {
<> <>
<div className="w-full flex flex-col justify-start items-center py-8"> <div className="w-full flex flex-col justify-start items-center py-8">
<UserAvatar className="!w-20 !h-20 mb-2 drop-shadow" avatarUrl={user?.avatarUrl} /> <UserAvatar className="!w-20 !h-20 mb-2 drop-shadow" avatarUrl={user?.avatarUrl} />
<p className="text-3xl text-black opacity-80 dark:text-gray-200">{user?.nickname}</p> <div className="w-full flex flex-row justify-center items-center">
<p className="text-3xl text-black leading-none opacity-80 dark:text-gray-200">{user?.nickname}</p>
<a className="ml-1 cursor-pointer text-gray-500" href={`/u/${user?.id}/rss.xml`} target="_blank">
<Icon.Rss className="w-5 h-auto opacity-60 mt-0.5" />
</a>
</div>
</div> </div>
{sortedMemos.map((memo) => ( {sortedMemos.map((memo) => (
<MemoView key={memo.id} memo={memo} showVisibility showPinnedStyle showParent /> <MemoView key={memo.id} memo={memo} showVisibility showPinnedStyle showParent />

Loading…
Cancel
Save