// File: src/pages/userGuide/UserMenuPub1.jsx // Notes: // - No new libraries. // - Fixes: target="_blank", rel="noopener noreferrer" // - Adds aria-label for icon-only download links (WCAG 2.4.4 / 1.1.1 friendly) // - Fixes invalid HTML: no

wrapping // - Adds /, scope, and React keys import { Grid, Typography, Stack } from "@mui/material"; import { useState, useEffect, lazy } from "react"; import Loadable from "components/Loadable"; import { useIntl, FormattedMessage } from "react-intl"; import usePageTitle from "components/usePageTitle"; import DownloadIcon from "@mui/icons-material/Download"; import titleBackgroundImg from "assets/images/dashboard/gazette-bar.png"; const LoadingComponent = Loadable(lazy(() => import("pages/extra-pages/LoadingComponent"))); const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, width: "auto", height: "auto", backgroundSize: "contain", backgroundRepeat: "no-repeat", backgroundColor: "#0c489e", backgroundPosition: "right", }; const tableStyle = { fontFamily: "arial, sans-serif", borderCollapse: "collapse", width: "100%", }; const cellStyle = { border: "1px solid #dddddd", textAlign: "left", padding: "8px", }; const UserMenuPub1 = () => { const intl = useIntl(); const { locale } = intl; const [onReady, setOnReady] = useState(false); // Localized document title/meta for /userGuidePub usePageTitle("userGuide"); useEffect(() => { setOnReady(true); }, [locale]); const pnspsurl = `https://${window.location.hostname}`; const pickByLocale = (en, zhHK, zhCN) => (locale === "zh-HK" ? zhHK : locale === "en" ? en : zhCN); // If you already created downloadPdfAria in i18n, keep it. // Example en: "Download {guide} PDF ({userType})" const buildAria = (guideId, userTypeId) => { const guideTitle = intl.formatMessage({ id: guideId }); const userType = intl.formatMessage({ id: userTypeId }); return intl.formatMessage( { id: "downloadPdfAria", defaultMessage: "Download {guide} PDF ({userType})" }, { guide: guideTitle, userType } ); }; const rows = [ { id: "userGuide1", org: { en: `${pnspsurl}/user-guide-pub-1/eng/01 - Create account - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/01c - Create account - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/01sc - Create account - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/01 - Create account - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/01c - Create account - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/01sc - Create account - p 1.pdf`, }, }, { id: "userGuide2", org: { en: `${pnspsurl}/user-guide-pub-1/eng/02 - Login - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/02c - Login - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/02sc - Login - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/02 - Login - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/02c - Login - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/02sc - Login - p 1.pdf`, }, }, { id: "userGuide3", // UPDATED TO v2 org: { en: `${pnspsurl}/user-guide-pub-1/eng/03 - Application for publishing a Public Notice in the Gazette - c 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/03c - Application for publishing a Public Notice in the Gazette - c 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/03sc - Application for publishing a Public Notice in the Gazette - c 2.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/03 - Application for publishing a Public Notice in the Gazette - p 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/03c - Application for publishing a Public Notice in the Gazette - p 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/03sc - Application for publishing a Public Notice in the Gazette - p 2.pdf`, }, }, { id: "userGuide4", org: { en: `${pnspsurl}/user-guide-pub-1/eng/04 - Proofreading reply (with correction) - c 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/04c - Proofreading reply (with correction) - c 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/04sc - Proofreading reply (with correction) - c 2.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/04 - Proofreading reply (with correction) - p 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/04c - Proofreading reply (with correction) - p 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/04sc - Proofreading reply (with correction) - p 2.pdf`, }, }, { id: "userGuide5", org: { en: `${pnspsurl}/user-guide-pub-1/eng/05 - Proofreading reply (pass for printing) - c 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/05c - Proofreading reply (pass for printing) - c 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/05sc - Proofreading reply (pass for printing) - c 2.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/05 - Proofreading reply (pass for printing) - p 2.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/05c - Proofreading reply (pass for printing) - p 2.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/05sc - Proofreading reply (pass for printing) - p 2.pdf`, }, }, { id: "userGuide6", org: { en: `${pnspsurl}/user-guide-pub-1/eng/06 - Cancellation of application for publishing a Public Notice in the Gazette - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/06c - Cancellation of application for publishing a Public Notice in the Gazette - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/06sc - Cancellation of application for publishing a Public Notice in the Gazette - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/06 - Cancellation of application for publishing a Public Notice in the Gazette - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/06c - Cancellation of application for publishing a Public Notice in the Gazette - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/06sc - Cancellation of application for publishing a Public Notice in the Gazette - p 1.pdf`, }, }, { id: "userGuide7", org: { en: `${pnspsurl}/user-guide-pub-1/eng/07 - Forgot password - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/07c - Forgot password - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/07sc - Forgot password - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/07 - Forgot password - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/07c - Forgot password - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/07sc - Forgot password - p 1.pdf`, }, }, { id: "userGuide8", org: { en: `${pnspsurl}/user-guide-pub-1/eng/08 - Change password - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/08c - Change password - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/08sc - Change password - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/08 - Change password - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/08c - Change password - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/08sc - Change password - p 1.pdf`, }, }, { id: "userGuide9", org: { en: `${pnspsurl}/user-guide-pub-1/eng/09 - Language of email notification - c 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/09c - Language of email notification - c 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/09sc - Language of email notification - c 1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/09 - Language of email notification - p 1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/09c - Language of email notification - p 1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/09sc - Language of email notification - p 1.pdf`, }, }, { id: "userGuidePub10", org: { en: `${pnspsurl}/user-guide-pub-1/eng/10-Payment-c1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/10c-Payment-c1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/10sc-Payment-c1.pdf`, }, ind: { en: `${pnspsurl}/user-guide-pub-1/eng/10-Payment-p1.pdf`, zhHK: `${pnspsurl}/user-guide-pub-1/cht/10c-Payment-p1.pdf`, zhCN: `${pnspsurl}/user-guide-pub-1/chs/10sc-Payment-p1.pdf`, }, }, ]; const renderDownloadLink = (href, ariaLabel) => ( ); if (!onReady) { return ( ); } return (
{rows.map((r) => { const orgHref = pickByLocale(r.org.en, r.org.zhHK, r.org.zhCN); const indHref = pickByLocale(r.ind.en, r.ind.zhHK, r.ind.zhCN); const guideTitle = intl.formatMessage({ id: r.id }); return ( ); })}
{guideTitle} {renderDownloadLink(orgHref, buildAria(r.id, "forOrgUser"))} {renderDownloadLink(indHref, buildAria(r.id, "forIndUser"))}

); }; export default UserMenuPub1;