Skip to content

Commit be9adeb

Browse files
committed
refactor: update LogoSpinner alt text to use translation for loading state
* Replaced static "Loading" alt text with a translatable string using the `useTranslation` hook across multiple components. * This change enhances accessibility and supports localization for the loading indicator in various parts of the application.
1 parent 9612c3a commit be9adeb

12 files changed

Lines changed: 41 additions & 12 deletions

File tree

apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/issues/(detail)/[issueId]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export default function IssueDetailsPage({ loaderData }: Route.ComponentProps) {
6666

6767
return (
6868
<div className="flex size-full items-center justify-center">
69-
<LogoSpinner size="fluid" alt="Loading" />
69+
<LogoSpinner size="fluid" alt={t("common.loading")} />
7070
</div>
7171
);
7272
}

apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/pages/(detail)/[pageId]/page.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { observer } from "mobx-react";
99
import Link from "next/link";
1010
import useSWR from "swr";
1111
// plane types
12+
import { useTranslation } from "@plane/i18n";
1213
import { getButtonStyling } from "@plane/propel/button";
1314
import type { TSearchEntityRequestPayload, TWebhookConnectionQueryParams } from "@plane/types";
1415
import { EFileAssetType } from "@plane/types";
@@ -43,6 +44,8 @@ function PageDetailsPage({ params }: Route.ComponentProps) {
4344
// router
4445
const router = useAppRouter();
4546
const { workspaceSlug, projectId, pageId } = params;
47+
// translation
48+
const { t } = useTranslation();
4649
// store hooks
4750
const { createPage, fetchPageDetails } = usePageStore(storeType);
4851
const page = usePage({
@@ -154,7 +157,7 @@ function PageDetailsPage({ params }: Route.ComponentProps) {
154157
if ((!page || !id) && !pageDetailsError)
155158
return (
156159
<div className="grid size-full place-items-center">
157-
<LogoSpinner size="fluid" alt="Loading" />
160+
<LogoSpinner size="fluid" alt={t("common.loading")} />
158161
</div>
159162
);
160163

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/webhooks/[webhookId]/page.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { useState } from "react";
88
import { observer } from "mobx-react";
99
import useSWR from "swr";
1010
import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
11+
import { useTranslation } from "@plane/i18n";
1112
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
1213
import type { IWebhook } from "@plane/types";
1314
// ui
@@ -29,6 +30,8 @@ function WebhookDetailsPage({ params }: Route.ComponentProps) {
2930
const [deleteWebhookModal, setDeleteWebhookModal] = useState(false);
3031
// router
3132
const { workspaceSlug, webhookId } = params;
33+
// translation
34+
const { t } = useTranslation();
3235
// mobx store
3336
const { currentWebhook, fetchWebhookById, updateWebhook } = useWebhook();
3437
const { currentWorkspace } = useWorkspace();
@@ -90,7 +93,7 @@ function WebhookDetailsPage({ params }: Route.ComponentProps) {
9093
if (!currentWebhook)
9194
return (
9295
<div className="grid h-full w-full place-items-center p-4">
93-
<LogoSpinner size="fluid" alt="Loading" />
96+
<LogoSpinner size="fluid" alt={t("common.loading")} />
9497
</div>
9598
);
9699

apps/web/app/(all)/onboarding/page.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { LogoSpinner } from "@makeplane/propel/components/logo-spinner";
1212
import { OnboardingRoot } from "@/components/onboarding";
1313
// constants
1414
import { USER_WORKSPACES_LIST } from "@plane/constants";
15+
import { useTranslation } from "@plane/i18n";
1516
// helpers
1617
import { EPageTypes } from "@/helpers/authentication.helper";
1718
// hooks
@@ -28,6 +29,8 @@ function OnboardingPage() {
2829
// store hooks
2930
const { data: user } = useUser();
3031
const { fetchWorkspaces } = useWorkspace();
32+
// translation
33+
const { t } = useTranslation();
3134

3235
// fetching workspaces list
3336
useSWR(USER_WORKSPACES_LIST, () => {
@@ -53,7 +56,7 @@ function OnboardingPage() {
5356
<OnboardingRoot invitations={invitations ?? []} />
5457
) : (
5558
<div className="grid h-full w-full place-items-center">
56-
<LogoSpinner size="fluid" alt="Loading" />
59+
<LogoSpinner size="fluid" alt={t("common.loading")} />
5760
</div>
5861
)}
5962
</div>

apps/web/app/(all)/settings/profile/[profileTabId]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function ProfileSettingsPage(props: Route.ComponentProps) {
3434
if (!currentUser || !isAValidTab)
3535
return (
3636
<div className="grid size-full place-items-center px-4">
37-
<LogoSpinner size="fluid" alt="Loading" />
37+
<LogoSpinner size="fluid" alt={t("common.loading")} />
3838
</div>
3939
);
4040

apps/web/app/(all)/workspace-invitations/page.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { LogoSpinner } from "@makeplane/propel/components/logo-spinner";
2020
import { EmptySpace, EmptySpaceItem } from "@/components/ui/empty-space";
2121
// constants
2222
import { WORKSPACE_INVITATION } from "@plane/constants";
23+
import { useTranslation } from "@plane/i18n";
2324
// helpers
2425
import { EPageTypes } from "@/helpers/authentication.helper";
2526
// hooks
@@ -41,6 +42,8 @@ function WorkspaceInvitationPage() {
4142
const invitation_id = searchParams.get("invitation_id");
4243
const slug = searchParams.get("slug");
4344
const token = searchParams.get("token");
45+
// translation
46+
const { t } = useTranslation();
4447
// store hooks
4548
const { data: currentUser } = useUser();
4649

@@ -127,7 +130,7 @@ function WorkspaceInvitationPage() {
127130
)
128131
) : (
129132
<div className="flex h-full w-full items-center justify-center">
130-
<LogoSpinner size="fluid" alt="Loading" />
133+
<LogoSpinner size="fluid" alt={t("common.loading")} />
131134
</div>
132135
)}
133136
</div>

apps/web/core/components/account/auth-forms/auth-header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export const AuthHeader = observer(function AuthHeader(props: TAuthHeader) {
102102
if (isLoading)
103103
return (
104104
<div className="flex h-full w-full items-center justify-center">
105-
<LogoSpinner size="fluid" alt="Loading" />
105+
<LogoSpinner size="fluid" alt={t("common.loading")} />
106106
</div>
107107
);
108108

apps/web/core/components/onboarding/create-or-join-workspaces.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { useEffect, useState } from "react";
88
import { observer } from "mobx-react";
99
import { AlertOctagonOutline } from "@makeplane/propel/icons";
1010
// plane imports
11+
import { useTranslation } from "@plane/i18n";
1112
import type { IWorkspaceMemberInvitation, TOnboardingSteps } from "@plane/types";
1213
// components
1314
import { LogoSpinner } from "@makeplane/propel/components/logo-spinner";
@@ -35,6 +36,8 @@ export const CreateOrJoinWorkspaces = observer(function CreateOrJoinWorkspaces(p
3536
const { invitations, stepChange, finishOnboarding } = props;
3637
// states
3738
const [currentView, setCurrentView] = useState<ECreateOrJoinWorkspaceViews | null>(null);
39+
// translation
40+
const { t } = useTranslation();
3841
// store hooks
3942
const { data: user } = useUser();
4043
const { config } = useInstance();
@@ -87,7 +90,7 @@ export const CreateOrJoinWorkspaces = observer(function CreateOrJoinWorkspaces(p
8790
)
8891
) : (
8992
<div className="flex h-96 w-full items-center justify-center">
90-
<LogoSpinner size="fluid" alt="Loading" />
93+
<LogoSpinner size="fluid" alt={t("common.loading")} />
9194
</div>
9295
)}
9396
</div>

apps/web/core/components/workspace-notifications/root.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { observer } from "mobx-react";
99
import useSWR from "swr";
1010
// plane imports
1111
import { ENotificationLoader, ENotificationQueryParamType } from "@plane/constants";
12+
import { useTranslation } from "@plane/i18n";
1213
import { EmptyStateCompact } from "@plane/propel/empty-state";
1314
import { cn } from "@plane/utils";
1415
// components
@@ -27,6 +28,8 @@ type NotificationsRootProps = {
2728
};
2829

2930
export const NotificationsRoot = observer(function NotificationsRoot({ workspaceSlug }: NotificationsRootProps) {
31+
// translation
32+
const { t } = useTranslation();
3033
// hooks
3134
const { currentWorkspace } = useWorkspace();
3235
const {
@@ -94,7 +97,7 @@ export const NotificationsRoot = observer(function NotificationsRoot({ workspace
9497
<>
9598
{projectMemberInfoLoader ? (
9699
<div className="flex h-full w-full items-center justify-center">
97-
<LogoSpinner size="fluid" alt="Loading" />
100+
<LogoSpinner size="fluid" alt={t("common.loading")} />
98101
</div>
99102
) : (
100103
<InboxContentRoot

apps/web/core/layouts/auth-layout/workspace-wrapper.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import useSWR from "swr";
1212
// ui
1313
import { LogOutOutline } from "@makeplane/propel/icons";
1414
import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants";
15+
import { useTranslation } from "@plane/i18n";
1516
import { Button, getButtonStyling } from "@plane/propel/button";
1617
import { PlaneLogo } from "@plane/propel/icons";
1718
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
@@ -50,6 +51,8 @@ export const WorkspaceAuthWrapper = observer(function WorkspaceAuthWrapper(props
5051
const { children, isLoading: isParentLoading = false } = props;
5152
// router params
5253
const { workspaceSlug } = useParams();
54+
// translation
55+
const { t } = useTranslation();
5356
// store hooks
5457
const { signOut, data: currentUser } = useUser();
5558
const { fetchPartialProjects } = useProject();
@@ -144,7 +147,7 @@ export const WorkspaceAuthWrapper = observer(function WorkspaceAuthWrapper(props
144147
return (
145148
<div className="grid h-full place-items-center rounded-lg border border-subtle p-4">
146149
<div className="flex flex-col items-center gap-3 text-center">
147-
<LogoSpinner size="fluid" alt="Loading" />
150+
<LogoSpinner size="fluid" alt={t("common.loading")} />
148151
</div>
149152
</div>
150153
);

0 commit comments

Comments
 (0)