mirror of
https://github.com/usememos/memos.git
synced 2024-12-26 23:22:47 +08:00
chore: rename navigator
This commit is contained in:
parent
7c5fdd1b06
commit
fe4ec0b156
16 changed files with 161 additions and 194 deletions
|
@ -55,9 +55,7 @@ VALUES
|
|||
'#TODO
|
||||
- [x] Take more photos about **🌄 sunset**;
|
||||
- [ ] Clean the classroom;
|
||||
- [ ] Watch *👦 The Boys*;
|
||||
(👆 click to toggle status)
|
||||
',
|
||||
- [ ] Watch *👦 The Boys*;',
|
||||
102,
|
||||
'PROTECTED'
|
||||
);
|
||||
|
|
|
@ -212,7 +212,7 @@ const Memo: React.FC<Props> = (props: Props) => {
|
|||
className={`group memo-wrapper ${"memos-" + memo.id} ${memo.pinned && props.showPinnedStyle ? "pinned" : ""}`}
|
||||
ref={memoContainerRef}
|
||||
>
|
||||
<div className="memo-top-wrapper">
|
||||
<div className="memo-top-wrapper mb-1">
|
||||
<div className="w-full max-w-[calc(100%-20px)] flex flex-row justify-start items-center mr-1">
|
||||
{props.showCreator && creator && (
|
||||
<>
|
||||
|
@ -303,7 +303,7 @@ const Memo: React.FC<Props> = (props: Props) => {
|
|||
</div>
|
||||
</div>
|
||||
{props.showParent && memo.parent && (
|
||||
<div className="w-auto max-w-full mt-1">
|
||||
<div className="w-auto max-w-full mb-1">
|
||||
<Link
|
||||
className="px-2 py-0.5 border rounded-full max-w-xs w-auto text-xs flex flex-row justify-start items-center flex-nowrap text-gray-600 dark:text-gray-400 dark:border-gray-500 hover:shadow hover:opacity-80"
|
||||
to={`/m/${memo.parent.id}`}
|
||||
|
|
|
@ -43,11 +43,11 @@ const Navigation = () => {
|
|||
title: t("common.home"),
|
||||
icon: <Icon.Home className="mr-3 w-6 h-auto opacity-70" />,
|
||||
};
|
||||
const dailyReviewNavLink: NavLinkItem = {
|
||||
id: "header-daily-review",
|
||||
path: "/review",
|
||||
title: t("daily-review.title"),
|
||||
icon: <Icon.Calendar className="mr-3 w-6 h-auto opacity-70" />,
|
||||
const timelineNavLink: NavLinkItem = {
|
||||
id: "header-timeline",
|
||||
path: "/timeline",
|
||||
title: t("timeline.title"),
|
||||
icon: <Icon.GanttChartSquare className="mr-3 w-6 h-auto opacity-70" />,
|
||||
};
|
||||
const resourcesNavLink: NavLinkItem = {
|
||||
id: "header-resources",
|
||||
|
@ -94,7 +94,7 @@ const Navigation = () => {
|
|||
};
|
||||
|
||||
const navLinks: NavLinkItem[] = user
|
||||
? [homeNavLink, dailyReviewNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink]
|
||||
? [homeNavLink, timelineNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink]
|
||||
: [exploreNavLink, signInNavLink];
|
||||
|
||||
return (
|
||||
|
|
|
@ -70,10 +70,6 @@
|
|||
"visibility": "الرؤية",
|
||||
"yourself": "نفسك"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "عفوًا، لا يوجد شيء.",
|
||||
"title": "المراجعة اليومية"
|
||||
},
|
||||
"editor": {
|
||||
"cancel-edit": "إلغاء التعديل",
|
||||
"cant-empty": "المحتوى لا يمكن أن يكون فارغ",
|
||||
|
|
|
@ -81,10 +81,6 @@
|
|||
"visibility": "Sichtbarkeit",
|
||||
"yourself": "Du selbst"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "Hoppla, da ist ja gar nichts.",
|
||||
"title": "Tagesbilanz"
|
||||
},
|
||||
"days": {
|
||||
"fri": "Fr",
|
||||
"mon": "Mo",
|
||||
|
|
|
@ -157,9 +157,8 @@
|
|||
"hide": "Hide",
|
||||
"save-all": "Save all"
|
||||
},
|
||||
"daily-review": {
|
||||
"title": "Daily Review",
|
||||
"no-memos": "Oops, there is nothing."
|
||||
"timeline": {
|
||||
"title": "Timeline"
|
||||
},
|
||||
"setting": {
|
||||
"my-account": "My Account",
|
||||
|
|
|
@ -85,10 +85,6 @@
|
|||
"visibility": "Visibilité",
|
||||
"yourself": "Vous-même"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "Oups, il n'y a rien.",
|
||||
"title": "Résumé journalier"
|
||||
},
|
||||
"days": {
|
||||
"fri": "Ve",
|
||||
"mon": "Lu",
|
||||
|
|
|
@ -123,10 +123,6 @@
|
|||
"tag-name": "LABEL_NAAM",
|
||||
"invalid-tag-name": "Onjuiste label naam"
|
||||
},
|
||||
"daily-review": {
|
||||
"title": "Dagelijks",
|
||||
"no-memos": "Oeps, er is niks."
|
||||
},
|
||||
"setting": {
|
||||
"my-account": "Mijn account",
|
||||
"preference": "Voorkeuren",
|
||||
|
|
|
@ -85,10 +85,6 @@
|
|||
"visibility": "Visibilidade",
|
||||
"yourself": "Você mesmo"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "Não há memos.",
|
||||
"title": "Resumo Diário"
|
||||
},
|
||||
"days": {
|
||||
"fri": "Sex",
|
||||
"mon": "Seg",
|
||||
|
|
|
@ -78,10 +78,6 @@
|
|||
"visibility": "Видимость",
|
||||
"yourself": "Вы"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "Записей нет.",
|
||||
"title": "По дням"
|
||||
},
|
||||
"days": {
|
||||
"fri": "Пт.",
|
||||
"mon": "Пон.",
|
||||
|
|
|
@ -82,9 +82,8 @@
|
|||
"yourself": "您自己",
|
||||
"inbox": "通知"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "哎呀,空无一物。",
|
||||
"title": "每日回顾"
|
||||
"timeline": {
|
||||
"title": "时间线"
|
||||
},
|
||||
"days": {
|
||||
"fri": "五",
|
||||
|
|
|
@ -82,9 +82,8 @@
|
|||
"visibility": "可見度",
|
||||
"yourself": "你自己"
|
||||
},
|
||||
"daily-review": {
|
||||
"no-memos": "可惜可惜,是日空空如也。",
|
||||
"title": "每日回顧"
|
||||
"timeline": {
|
||||
"title": "时间线"
|
||||
},
|
||||
"days": {
|
||||
"fri": "五",
|
||||
|
|
|
@ -104,94 +104,92 @@ const SignIn = () => {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="flex flex-row justify-center items-center w-full h-full dark:bg-zinc-800">
|
||||
<div className="w-80 max-w-full h-full min-h-screen py-4 flex flex-col justify-start items-center">
|
||||
<div className="w-full py-4 grow flex flex-col justify-center items-center">
|
||||
<div className="w-full flex flex-row justify-center items-center mb-6">
|
||||
<img className="h-14 w-auto rounded-full shadow" src={systemStatus.customizedProfile.logoUrl} alt="" />
|
||||
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p>
|
||||
</div>
|
||||
{!disablePasswordLogin && (
|
||||
<>
|
||||
<form className="w-full mt-2" onSubmit={handleFormSubmit}>
|
||||
<div className="flex flex-col justify-start items-start w-full gap-4">
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.username")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="lg"
|
||||
type="text"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.username")}
|
||||
value={username}
|
||||
onChange={handleUsernameInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.password")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="lg"
|
||||
type="password"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.password")}
|
||||
value={password}
|
||||
onChange={handlePasswordInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row justify-start items-center w-full mt-6">
|
||||
<Checkbox label={t("common.remember-me")} checked={remember} onChange={(e) => setRemember(e.target.checked)} />
|
||||
</div>
|
||||
<div className="flex flex-row justify-end items-center w-full mt-6">
|
||||
<Button
|
||||
<div className="pt-12 pb-8 w-80 max-w-full h-auto mx-auto flex flex-col justify-start items-center">
|
||||
<div className="w-full py-4 grow flex flex-col justify-center items-center">
|
||||
<div className="w-full flex flex-row justify-center items-center mb-6">
|
||||
<img className="h-14 w-auto rounded-full shadow" src={systemStatus.customizedProfile.logoUrl} alt="" />
|
||||
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p>
|
||||
</div>
|
||||
{!disablePasswordLogin && (
|
||||
<>
|
||||
<form className="w-full mt-2" onSubmit={handleFormSubmit}>
|
||||
<div className="flex flex-col justify-start items-start w-full gap-4">
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.username")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="md"
|
||||
type="submit"
|
||||
disabled={actionBtnLoadingState.isLoading}
|
||||
loading={actionBtnLoadingState.isLoading}
|
||||
onClick={handleSignInButtonClick}
|
||||
>
|
||||
{t("common.sign-in")}
|
||||
</Button>
|
||||
size="lg"
|
||||
type="text"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.username")}
|
||||
value={username}
|
||||
onChange={handleUsernameInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
{systemStatus.allowSignUp && (
|
||||
<p className="w-full mt-4 text-sm">
|
||||
<span className="dark:text-gray-500">{t("auth.sign-up-tip")}</span>
|
||||
<Link to="/auth/signup" className="cursor-pointer ml-2 text-blue-600 hover:underline">
|
||||
{t("common.sign-up")}
|
||||
</Link>
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{identityProviderList.length > 0 && (
|
||||
<>
|
||||
{!disablePasswordLogin && <Divider className="!my-4">{t("common.or")}</Divider>}
|
||||
<div className="w-full flex flex-col space-y-2">
|
||||
{identityProviderList.map((identityProvider) => (
|
||||
<Button
|
||||
key={identityProvider.id}
|
||||
variant="outlined"
|
||||
color="neutral"
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.password")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="md"
|
||||
onClick={() => handleSignInWithIdentityProvider(identityProvider)}
|
||||
>
|
||||
{t("common.sign-in-with", { provider: identityProvider.name })}
|
||||
</Button>
|
||||
))}
|
||||
size="lg"
|
||||
type="password"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.password")}
|
||||
value={password}
|
||||
onChange={handlePasswordInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div className="flex flex-row items-center justify-center w-full gap-2">
|
||||
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} />
|
||||
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} />
|
||||
</div>
|
||||
<div className="flex flex-row justify-start items-center w-full mt-6">
|
||||
<Checkbox label={t("common.remember-me")} checked={remember} onChange={(e) => setRemember(e.target.checked)} />
|
||||
</div>
|
||||
<div className="flex flex-row justify-end items-center w-full mt-6">
|
||||
<Button
|
||||
className="w-full"
|
||||
size="md"
|
||||
type="submit"
|
||||
disabled={actionBtnLoadingState.isLoading}
|
||||
loading={actionBtnLoadingState.isLoading}
|
||||
onClick={handleSignInButtonClick}
|
||||
>
|
||||
{t("common.sign-in")}
|
||||
</Button>
|
||||
</div>
|
||||
</form>
|
||||
{systemStatus.allowSignUp && (
|
||||
<p className="w-full mt-4 text-sm">
|
||||
<span className="dark:text-gray-500">{t("auth.sign-up-tip")}</span>
|
||||
<Link to="/auth/signup" className="cursor-pointer ml-2 text-blue-600 hover:underline">
|
||||
{t("common.sign-up")}
|
||||
</Link>
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{identityProviderList.length > 0 && (
|
||||
<>
|
||||
{!disablePasswordLogin && <Divider className="!my-4">{t("common.or")}</Divider>}
|
||||
<div className="w-full flex flex-col space-y-2">
|
||||
{identityProviderList.map((identityProvider) => (
|
||||
<Button
|
||||
key={identityProvider.id}
|
||||
variant="outlined"
|
||||
color="neutral"
|
||||
className="w-full"
|
||||
size="md"
|
||||
onClick={() => handleSignInWithIdentityProvider(identityProvider)}
|
||||
>
|
||||
{t("common.sign-in-with", { provider: identityProvider.name })}
|
||||
</Button>
|
||||
))}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div className="mt-4 flex flex-row items-center justify-center w-full gap-2">
|
||||
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} />
|
||||
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -70,68 +70,66 @@ const SignUp = () => {
|
|||
};
|
||||
|
||||
return (
|
||||
<div className="flex flex-row justify-center items-center w-full h-full dark:bg-zinc-800">
|
||||
<div className="w-80 max-w-full h-full min-h-screen py-4 flex flex-col justify-start items-center">
|
||||
<div className="w-full py-4 grow flex flex-col justify-center items-center">
|
||||
<div className="w-full flex flex-row justify-center items-center mb-6">
|
||||
<img className="h-14 w-auto rounded-full shadow" src={systemStatus.customizedProfile.logoUrl} alt="" />
|
||||
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p>
|
||||
</div>
|
||||
<p className="w-full text-2xl mt-2 dark:text-gray-500">{t("auth.create-your-account")}</p>
|
||||
<form className="w-full mt-2" onSubmit={handleFormSubmit}>
|
||||
<div className="flex flex-col justify-start items-start w-full gap-4">
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.username")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="lg"
|
||||
type="text"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.username")}
|
||||
value={username}
|
||||
onChange={handleUsernameInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.password")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="lg"
|
||||
type="password"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.password")}
|
||||
value={password}
|
||||
onChange={handlePasswordInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row justify-end items-center w-full mt-6">
|
||||
<Button
|
||||
<div className="pt-12 pb-8 w-80 max-w-full h-auto mx-auto flex flex-col justify-start items-center">
|
||||
<div className="w-full py-4 grow flex flex-col justify-center items-center">
|
||||
<div className="w-full flex flex-row justify-center items-center mb-6">
|
||||
<img className="h-14 w-auto rounded-full shadow" src={systemStatus.customizedProfile.logoUrl} alt="" />
|
||||
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p>
|
||||
</div>
|
||||
<p className="w-full text-2xl mt-2 dark:text-gray-500">{t("auth.create-your-account")}</p>
|
||||
<form className="w-full mt-2" onSubmit={handleFormSubmit}>
|
||||
<div className="flex flex-col justify-start items-start w-full gap-4">
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.username")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="md"
|
||||
type="submit"
|
||||
disabled={actionBtnLoadingState.isLoading}
|
||||
loading={actionBtnLoadingState.isLoading}
|
||||
onClick={handleSignUpButtonClick}
|
||||
>
|
||||
{t("common.sign-up")}
|
||||
</Button>
|
||||
size="lg"
|
||||
type="text"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.username")}
|
||||
value={username}
|
||||
onChange={handleUsernameInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
{!systemStatus.host && <p className="w-full mt-4 text-sm font-medium dark:text-gray-500">{t("auth.host-tip")}</p>}
|
||||
<p className="w-full mt-4 text-sm">
|
||||
<span className="dark:text-gray-500">{t("auth.sign-in-tip")}</span>
|
||||
<Link to="/auth" className="cursor-pointer ml-2 text-blue-600 hover:underline">
|
||||
{t("common.sign-in")}
|
||||
</Link>
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row items-center justify-center w-full gap-2">
|
||||
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} />
|
||||
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} />
|
||||
</div>
|
||||
<div className="w-full flex flex-col justify-start items-start gap-2">
|
||||
<span className="leading-8 text-gray-600">{t("common.password")}</span>
|
||||
<Input
|
||||
className="w-full"
|
||||
size="lg"
|
||||
type="password"
|
||||
readOnly={actionBtnLoadingState.isLoading}
|
||||
placeholder={t("common.password")}
|
||||
value={password}
|
||||
onChange={handlePasswordInputChanged}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row justify-end items-center w-full mt-6">
|
||||
<Button
|
||||
className="w-full"
|
||||
size="md"
|
||||
type="submit"
|
||||
disabled={actionBtnLoadingState.isLoading}
|
||||
loading={actionBtnLoadingState.isLoading}
|
||||
onClick={handleSignUpButtonClick}
|
||||
>
|
||||
{t("common.sign-up")}
|
||||
</Button>
|
||||
</div>
|
||||
</form>
|
||||
{!systemStatus.host && <p className="w-full mt-4 text-sm font-medium dark:text-gray-500">{t("auth.host-tip")}</p>}
|
||||
<p className="w-full mt-4 text-sm">
|
||||
<span className="dark:text-gray-500">{t("auth.sign-in-tip")}</span>
|
||||
<Link to="/auth" className="cursor-pointer ml-2 text-blue-600 hover:underline">
|
||||
{t("common.sign-in")}
|
||||
</Link>
|
||||
</p>
|
||||
</div>
|
||||
<div className="mt-4 flex flex-row items-center justify-center w-full gap-2">
|
||||
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} />
|
||||
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -18,7 +18,7 @@ import { useMemoStore } from "@/store/module";
|
|||
import { extractUsernameFromName } from "@/store/v1";
|
||||
import { useTranslate } from "@/utils/i18n";
|
||||
|
||||
const DailyReview = () => {
|
||||
const Timeline = () => {
|
||||
const t = useTranslate();
|
||||
const memoStore = useMemoStore();
|
||||
const currentUser = useCurrentUser();
|
||||
|
@ -128,7 +128,7 @@ const DailyReview = () => {
|
|||
|
||||
{selectedDateStamp === currentDateStamp && (
|
||||
<div className="w-full pl-0 sm:pl-12 sm:mt-4">
|
||||
<MemoEditor cacheKey="daily-review-editor" />
|
||||
<MemoEditor cacheKey="timeline-editor" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
@ -138,4 +138,4 @@ const DailyReview = () => {
|
|||
);
|
||||
};
|
||||
|
||||
export default DailyReview;
|
||||
export default Timeline;
|
|
@ -13,7 +13,7 @@ const Home = lazy(() => import("@/pages/Home"));
|
|||
const UserProfile = lazy(() => import("@/pages/UserProfile"));
|
||||
const MemoDetail = lazy(() => import("@/pages/MemoDetail"));
|
||||
const Archived = lazy(() => import("@/pages/Archived"));
|
||||
const DailyReview = lazy(() => import("@/pages/DailyReview"));
|
||||
const Timeline = lazy(() => import("@/pages/Timeline"));
|
||||
const Resources = lazy(() => import("@/pages/Resources"));
|
||||
const Inboxes = lazy(() => import("@/pages/Inboxes"));
|
||||
const Setting = lazy(() => import("@/pages/Setting"));
|
||||
|
@ -59,10 +59,10 @@ const router = createBrowserRouter([
|
|||
),
|
||||
},
|
||||
{
|
||||
path: "review",
|
||||
path: "timeline",
|
||||
element: (
|
||||
<AuthStatusProvider>
|
||||
<DailyReview />
|
||||
<Timeline />
|
||||
</AuthStatusProvider>
|
||||
),
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue