chore: rename navigator

This commit is contained in:
Steven 2023-12-19 00:13:22 +08:00
parent 7c5fdd1b06
commit fe4ec0b156
16 changed files with 161 additions and 194 deletions

View File

@ -55,9 +55,7 @@ VALUES
'#TODO '#TODO
- [x] Take more photos about **🌄 sunset**; - [x] Take more photos about **🌄 sunset**;
- [ ] Clean the classroom; - [ ] Clean the classroom;
- [ ] Watch *👦 The Boys*; - [ ] Watch *👦 The Boys*;',
(👆 click to toggle status)
',
102, 102,
'PROTECTED' 'PROTECTED'
); );

View File

@ -212,7 +212,7 @@ const Memo: React.FC<Props> = (props: Props) => {
className={`group memo-wrapper ${"memos-" + memo.id} ${memo.pinned && props.showPinnedStyle ? "pinned" : ""}`} className={`group memo-wrapper ${"memos-" + memo.id} ${memo.pinned && props.showPinnedStyle ? "pinned" : ""}`}
ref={memoContainerRef} 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"> <div className="w-full max-w-[calc(100%-20px)] flex flex-row justify-start items-center mr-1">
{props.showCreator && creator && ( {props.showCreator && creator && (
<> <>
@ -303,7 +303,7 @@ const Memo: React.FC<Props> = (props: Props) => {
</div> </div>
</div> </div>
{props.showParent && memo.parent && ( {props.showParent && memo.parent && (
<div className="w-auto max-w-full mt-1"> <div className="w-auto max-w-full mb-1">
<Link <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" 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}`} to={`/m/${memo.parent.id}`}

View File

@ -43,11 +43,11 @@ const Navigation = () => {
title: t("common.home"), title: t("common.home"),
icon: <Icon.Home className="mr-3 w-6 h-auto opacity-70" />, icon: <Icon.Home className="mr-3 w-6 h-auto opacity-70" />,
}; };
const dailyReviewNavLink: NavLinkItem = { const timelineNavLink: NavLinkItem = {
id: "header-daily-review", id: "header-timeline",
path: "/review", path: "/timeline",
title: t("daily-review.title"), title: t("timeline.title"),
icon: <Icon.Calendar className="mr-3 w-6 h-auto opacity-70" />, icon: <Icon.GanttChartSquare className="mr-3 w-6 h-auto opacity-70" />,
}; };
const resourcesNavLink: NavLinkItem = { const resourcesNavLink: NavLinkItem = {
id: "header-resources", id: "header-resources",
@ -94,7 +94,7 @@ const Navigation = () => {
}; };
const navLinks: NavLinkItem[] = user const navLinks: NavLinkItem[] = user
? [homeNavLink, dailyReviewNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink] ? [homeNavLink, timelineNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink]
: [exploreNavLink, signInNavLink]; : [exploreNavLink, signInNavLink];
return ( return (

View File

@ -70,10 +70,6 @@
"visibility": "الرؤية", "visibility": "الرؤية",
"yourself": "نفسك" "yourself": "نفسك"
}, },
"daily-review": {
"no-memos": "عفوًا، لا يوجد شيء.",
"title": "المراجعة اليومية"
},
"editor": { "editor": {
"cancel-edit": "إلغاء التعديل", "cancel-edit": "إلغاء التعديل",
"cant-empty": "المحتوى لا يمكن أن يكون فارغ", "cant-empty": "المحتوى لا يمكن أن يكون فارغ",

View File

@ -81,10 +81,6 @@
"visibility": "Sichtbarkeit", "visibility": "Sichtbarkeit",
"yourself": "Du selbst" "yourself": "Du selbst"
}, },
"daily-review": {
"no-memos": "Hoppla, da ist ja gar nichts.",
"title": "Tagesbilanz"
},
"days": { "days": {
"fri": "Fr", "fri": "Fr",
"mon": "Mo", "mon": "Mo",

View File

@ -157,9 +157,8 @@
"hide": "Hide", "hide": "Hide",
"save-all": "Save all" "save-all": "Save all"
}, },
"daily-review": { "timeline": {
"title": "Daily Review", "title": "Timeline"
"no-memos": "Oops, there is nothing."
}, },
"setting": { "setting": {
"my-account": "My Account", "my-account": "My Account",

View File

@ -85,10 +85,6 @@
"visibility": "Visibilité", "visibility": "Visibilité",
"yourself": "Vous-même" "yourself": "Vous-même"
}, },
"daily-review": {
"no-memos": "Oups, il n'y a rien.",
"title": "Résumé journalier"
},
"days": { "days": {
"fri": "Ve", "fri": "Ve",
"mon": "Lu", "mon": "Lu",

View File

@ -123,10 +123,6 @@
"tag-name": "LABEL_NAAM", "tag-name": "LABEL_NAAM",
"invalid-tag-name": "Onjuiste label naam" "invalid-tag-name": "Onjuiste label naam"
}, },
"daily-review": {
"title": "Dagelijks",
"no-memos": "Oeps, er is niks."
},
"setting": { "setting": {
"my-account": "Mijn account", "my-account": "Mijn account",
"preference": "Voorkeuren", "preference": "Voorkeuren",

View File

@ -85,10 +85,6 @@
"visibility": "Visibilidade", "visibility": "Visibilidade",
"yourself": "Você mesmo" "yourself": "Você mesmo"
}, },
"daily-review": {
"no-memos": "Não há memos.",
"title": "Resumo Diário"
},
"days": { "days": {
"fri": "Sex", "fri": "Sex",
"mon": "Seg", "mon": "Seg",

View File

@ -78,10 +78,6 @@
"visibility": "Видимость", "visibility": "Видимость",
"yourself": "Вы" "yourself": "Вы"
}, },
"daily-review": {
"no-memos": "Записей нет.",
"title": "По дням"
},
"days": { "days": {
"fri": "Пт.", "fri": "Пт.",
"mon": "Пон.", "mon": "Пон.",

View File

@ -82,9 +82,8 @@
"yourself": "您自己", "yourself": "您自己",
"inbox": "通知" "inbox": "通知"
}, },
"daily-review": { "timeline": {
"no-memos": "哎呀,空无一物。", "title": "时间线"
"title": "每日回顾"
}, },
"days": { "days": {
"fri": "五", "fri": "五",

View File

@ -82,9 +82,8 @@
"visibility": "可見度", "visibility": "可見度",
"yourself": "你自己" "yourself": "你自己"
}, },
"daily-review": { "timeline": {
"no-memos": "可惜可惜,是日空空如也。", "title": "时间线"
"title": "每日回顧"
}, },
"days": { "days": {
"fri": "五", "fri": "五",

View File

@ -104,94 +104,92 @@ const SignIn = () => {
}; };
return ( return (
<div className="flex flex-row justify-center items-center w-full h-full dark:bg-zinc-800"> <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-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 py-4 grow flex flex-col justify-center items-center"> <div className="w-full flex flex-row justify-center items-center mb-6">
<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="" />
<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>
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p> </div>
</div> {!disablePasswordLogin && (
{!disablePasswordLogin && ( <>
<> <form className="w-full mt-2" onSubmit={handleFormSubmit}>
<form className="w-full mt-2" onSubmit={handleFormSubmit}> <div className="flex flex-col justify-start items-start w-full gap-4">
<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">
<div className="w-full flex flex-col justify-start items-start gap-2"> <span className="leading-8 text-gray-600">{t("common.username")}</span>
<span className="leading-8 text-gray-600">{t("common.username")}</span> <Input
<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
className="w-full" className="w-full"
size="md" size="lg"
type="submit" type="text"
disabled={actionBtnLoadingState.isLoading} readOnly={actionBtnLoadingState.isLoading}
loading={actionBtnLoadingState.isLoading} placeholder={t("common.username")}
onClick={handleSignInButtonClick} value={username}
> onChange={handleUsernameInputChanged}
{t("common.sign-in")} required
</Button> />
</div> </div>
</form> <div className="w-full flex flex-col justify-start items-start gap-2">
{systemStatus.allowSignUp && ( <span className="leading-8 text-gray-600">{t("common.password")}</span>
<p className="w-full mt-4 text-sm"> <Input
<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" className="w-full"
size="md" size="lg"
onClick={() => handleSignInWithIdentityProvider(identityProvider)} type="password"
> readOnly={actionBtnLoadingState.isLoading}
{t("common.sign-in-with", { provider: identityProvider.name })} placeholder={t("common.password")}
</Button> value={password}
))} onChange={handlePasswordInputChanged}
required
/>
</div>
</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>
<div className="flex flex-row items-center justify-center w-full gap-2"> <div className="flex flex-row justify-end items-center w-full mt-6">
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} /> <Button
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} /> className="w-full"
</div> 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>
</div> </div>
); );

View File

@ -70,68 +70,66 @@ const SignUp = () => {
}; };
return ( return (
<div className="flex flex-row justify-center items-center w-full h-full dark:bg-zinc-800"> <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-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 py-4 grow flex flex-col justify-center items-center"> <div className="w-full flex flex-row justify-center items-center mb-6">
<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="" />
<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>
<p className="ml-2 text-5xl text-black opacity-80 dark:text-gray-200">{systemStatus.customizedProfile.name}</p> </div>
</div> <p className="w-full text-2xl mt-2 dark:text-gray-500">{t("auth.create-your-account")}</p>
<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}>
<form className="w-full mt-2" onSubmit={handleFormSubmit}> <div className="flex flex-col justify-start items-start w-full gap-4">
<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">
<div className="w-full flex flex-col justify-start items-start gap-2"> <span className="leading-8 text-gray-600">{t("common.username")}</span>
<span className="leading-8 text-gray-600">{t("common.username")}</span> <Input
<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
className="w-full" className="w-full"
size="md" size="lg"
type="submit" type="text"
disabled={actionBtnLoadingState.isLoading} readOnly={actionBtnLoadingState.isLoading}
loading={actionBtnLoadingState.isLoading} placeholder={t("common.username")}
onClick={handleSignUpButtonClick} value={username}
> onChange={handleUsernameInputChanged}
{t("common.sign-up")} required
</Button> />
</div> </div>
</form> <div className="w-full flex flex-col justify-start items-start gap-2">
{!systemStatus.host && <p className="w-full mt-4 text-sm font-medium dark:text-gray-500">{t("auth.host-tip")}</p>} <span className="leading-8 text-gray-600">{t("common.password")}</span>
<p className="w-full mt-4 text-sm"> <Input
<span className="dark:text-gray-500">{t("auth.sign-in-tip")}</span> className="w-full"
<Link to="/auth" className="cursor-pointer ml-2 text-blue-600 hover:underline"> size="lg"
{t("common.sign-in")} type="password"
</Link> readOnly={actionBtnLoadingState.isLoading}
</p> placeholder={t("common.password")}
</div> value={password}
<div className="flex flex-row items-center justify-center w-full gap-2"> onChange={handlePasswordInputChanged}
<LocaleSelect value={locale} onChange={handleLocaleSelectChange} /> required
<AppearanceSelect value={appearance} onChange={handleAppearanceSelectChange} /> />
</div> </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>
</div> </div>
); );

View File

@ -18,7 +18,7 @@ import { useMemoStore } from "@/store/module";
import { extractUsernameFromName } from "@/store/v1"; import { extractUsernameFromName } from "@/store/v1";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
const DailyReview = () => { const Timeline = () => {
const t = useTranslate(); const t = useTranslate();
const memoStore = useMemoStore(); const memoStore = useMemoStore();
const currentUser = useCurrentUser(); const currentUser = useCurrentUser();
@ -128,7 +128,7 @@ const DailyReview = () => {
{selectedDateStamp === currentDateStamp && ( {selectedDateStamp === currentDateStamp && (
<div className="w-full pl-0 sm:pl-12 sm:mt-4"> <div className="w-full pl-0 sm:pl-12 sm:mt-4">
<MemoEditor cacheKey="daily-review-editor" /> <MemoEditor cacheKey="timeline-editor" />
</div> </div>
)} )}
</div> </div>
@ -138,4 +138,4 @@ const DailyReview = () => {
); );
}; };
export default DailyReview; export default Timeline;

View File

@ -13,7 +13,7 @@ const Home = lazy(() => import("@/pages/Home"));
const UserProfile = lazy(() => import("@/pages/UserProfile")); const UserProfile = lazy(() => import("@/pages/UserProfile"));
const MemoDetail = lazy(() => import("@/pages/MemoDetail")); const MemoDetail = lazy(() => import("@/pages/MemoDetail"));
const Archived = lazy(() => import("@/pages/Archived")); 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 Resources = lazy(() => import("@/pages/Resources"));
const Inboxes = lazy(() => import("@/pages/Inboxes")); const Inboxes = lazy(() => import("@/pages/Inboxes"));
const Setting = lazy(() => import("@/pages/Setting")); const Setting = lazy(() => import("@/pages/Setting"));
@ -59,10 +59,10 @@ const router = createBrowserRouter([
), ),
}, },
{ {
path: "review", path: "timeline",
element: ( element: (
<AuthStatusProvider> <AuthStatusProvider>
<DailyReview /> <Timeline />
</AuthStatusProvider> </AuthStatusProvider>
), ),
}, },