From 25344a873835024967f029fb76837cbab4cc897d Mon Sep 17 00:00:00 2001 From: Mohammad Sajad Pourajam Date: Thu, 19 Feb 2026 17:41:37 +0330 Subject: [PATCH] Implement internationalization for account settings and search components. Added translation support for various UI elements, including billing, notifications, and user dropdowns. Refactored search suggestions and no result messages to utilize localized text. Enhanced user experience by ensuring all relevant components display text based on selected language. --- messages/fa.json | 224 ++++++++- .../(guest-only)/login/page.tsx | 11 +- .../layout/shared/ThemeColorDropdown.tsx | 23 +- src/components/layout/shared/UserDropdown.tsx | 7 +- .../shared/search/DefaultSuggestions.tsx | 98 ++-- .../layout/shared/search/NoResult.tsx | 26 +- src/components/layout/shared/search/index.tsx | 63 +-- src/configs/primaryColorConfig.ts | 12 + src/data/searchData.ts | 446 +++++++++--------- .../billing-plans/Address.tsx | 40 +- .../billing-plans/CurrentPlan.tsx | 37 +- .../account-settings/notifications/index.tsx | 25 +- .../security/ChangePasswordCard.tsx | 24 +- .../security/CreateApiKey.tsx | 25 +- 14 files changed, 646 insertions(+), 415 deletions(-) diff --git a/messages/fa.json b/messages/fa.json index 715e69c..861eac2 100644 --- a/messages/fa.json +++ b/messages/fa.json @@ -6,6 +6,8 @@ "close": "بستن" }, "login": { + "title": "ورود", + "description": "ورود به حساب کاربری", "welcome": "خوش آمدید به {templateName}! 👋🏻", "phoneStep": "شماره موبایل خود را برای دریافت کد OTP وارد کنید", "otpStep": "کد OTP ارسال شده به موبایل خود را وارد کنید", @@ -211,6 +213,226 @@ "confirmDelete": "لطفاً تایید کنید که می‌خواهید حساب را حذف کنید", "saveChanges": "ذخیره تغییرات", "saving": "در حال ذخیره...", - "reset": "بازنشانی" + "reset": "بازنشانی", + "security": { + "changePassword": "تغییر رمز عبور", + "currentPassword": "رمز عبور فعلی", + "newPassword": "رمز عبور جدید", + "confirmNewPassword": "تأیید رمز عبور جدید", + "passwordRequirements": "الزامات رمز عبور", + "passwordReq1": "حداقل ۸ کاراکتر - هر چه بیشتر بهتر", + "passwordReq2": "حداقل یک حرف کوچک و یک حرف بزرگ", + "passwordReq3": "حداقل یک عدد، نماد یا کاراکتر فاصله", + "createApiKey": "ایجاد کلید API", + "apiKeyType": "نوع کلید API را انتخاب کنید", + "apiKeyName": "نام کلید API", + "createKey": "ایجاد کلید", + "fullControl": "کنترل کامل", + "modify": "تغییر", + "readExecute": "خواندن و اجرا", + "listFolderContents": "فهرست محتویات پوشه", + "readOnly": "فقط خواندن", + "readWrite": "خواندن و نوشتن" + }, + "billing": { + "currentPlan": "پلن فعلی", + "yourPlanBasic": "پلن فعلی شما پایه است", + "simpleStart": "شروع ساده برای همه", + "activeUntil": "فعال تا {date}", + "subscriptionExpiry": "اعلان انقضای اشتراک ارسال می‌شود", + "perMonth": "{amount} در ماه", + "popular": "محبوب", + "standardPlan": "پلن استاندارد برای کسب‌وکارهای کوچک و متوسط", + "attention": "توجه شما را می‌خواهیم!", + "planRequiresUpdate": "پلن شما نیاز به بروزرسانی دارد", + "days": "روزها", + "daysProgress": "{current} از {total} روز", + "daysRemaining": "{count} روز تا بروزرسانی پلن باقی مانده", + "upgradePlan": "ارتقای پلن", + "cancelSubscription": "لغو اشتراک", + "billingAddress": "آدرس صورتحساب", + "companyName": "نام شرکت", + "billingEmail": "ایمیل صورتحساب", + "taxId": "شناسه مالیاتی", + "vatNumber": "شماره ارزش افزوده", + "mobileNumber": "شماره موبایل", + "country": "کشور", + "selectCountry": "انتخاب کشور", + "australia": "استرالیا", + "canada": "کانادا", + "france": "فرانسه", + "unitedKingdom": "بریتانیا", + "unitedStates": "آمریکا", + "state": "ایالت", + "zipCode": "کد پستی", + "discard": "انصراف" + }, + "notifications": { + "recentDevices": "دستگاه‌های اخیر", + "permissionRequest": "برای نمایش اعلان‌ها به مجوز مرورگر نیاز داریم", + "requestPermission": "درخواست مجوز", + "type": "نوع", + "whenToSend": "چه زمانی اعلان ارسال شود؟", + "onlyWhenOnline": "فقط وقتی آنلاین هستم", + "anytime": "هر زمان", + "discard": "انصراف" + } + }, + "search": { + "placeholder": "جستجو ⌘K", + "toNavigate": "برای ناوبری", + "toOpen": "برای باز کردن", + "toClose": "برای بستن", + "noResult": "نتیجه‌ای برای «{searchValue}» یافت نشد", + "trySearching": "جستجو برای", + "popularSearches": "جستجوهای پرطرفدار", + "sections": { + "dashboards": "داشبوردها", + "frontPages": "صفحات فرانت", + "apps": "اپلیکیشن‌ها", + "pages": "صفحات", + "formsAndCharts": "فرم‌ها و چارت‌ها", + "formsAndTables": "فرم‌ها و جداول", + "charts": "چارت‌ها", + "others": "سایر", + "foundation": "پایه", + "components": "کامپوننت‌ها" + }, + "items": { + "analyticsDashboard": "داشبورد تحلیل", + "ecommerceDashboard": "داشبورد فروشگاه", + "academyDashboard": "داشبورد آکادمی", + "logisticsDashboard": "داشبورد لجستیک", + "landingFront": "صفحه اصلی فرانت", + "pricingFront": "قیمت‌گذاری فرانت", + "paymentFront": "پرداخت فرانت", + "checkoutFront": "تسویه فرانت", + "helpCenterFront": "مرکز راهنمایی فرانت", + "ecommerceDashboardApp": "فروشگاه - داشبورد", + "ecommerceProductList": "فروشگاه - فهرست محصولات", + "ecommerceAddProduct": "فروشگاه - افزودن محصول", + "ecommerceProductCategory": "فروشگاه - دسته‌بندی محصولات", + "ecommerceOrderList": "فروشگاه - فهرست سفارشات", + "ecommerceOrderDetails": "فروشگاه - جزئیات سفارش", + "ecommerceCustomerList": "فروشگاه - فهرست مشتریان", + "ecommerceCustomerDetails": "فروشگاه - جزئیات مشتری", + "ecommerceManageReviews": "فروشگاه - مدیریت نظرات", + "ecommerceReferrals": "فروشگاه - معرفی‌ها", + "ecommerceSettings": "فروشگاه - تنظیمات", + "academyDashboardApp": "آکادمی - داشبورد", + "academyMyCourses": "آکادمی - دوره‌های من", + "academyCourseDetails": "آکادمی - جزئیات دوره", + "logisticsDashboardApp": "لجستیک - داشبورد", + "logisticsFleet": "لجستیک - ناوگان", + "email": "ایمیل", + "chat": "چت", + "calendar": "تقویم", + "kanban": "کانبان", + "todo": "وظایف", + "invoiceList": "فهرست فاکتور", + "invoicePreview": "پیش‌نمایش فاکتور", + "invoiceAdd": "افزودن فاکتور", + "invoiceEdit": "ویرایش فاکتور", + "userList": "فهرست کاربران", + "userView": "مشاهده کاربر", + "roles": "نقش‌ها", + "rolesPermissions": "نقش‌ها و دسترسی‌ها", + "permissions": "دسترسی‌ها", + "userProfile": "پروفایل کاربر", + "formLayouts": "چیدمان فرم", + "formValidation": "اعتبارسنجی فرم", + "formWizard": "ویزارد فرم", + "apexCharts": "چارت Apex", + "analytics": "تحلیل‌ها", + "todo": "وظایف", + "accountSettings": "تنظیمات حساب", + "faq": "سوالات متداول", + "pricing": "قیمت‌گذاری", + "comingSoon": "به زودی", + "underMaintenance": "در حال تعمیر", + "pageNotFound404": "صفحه یافت نشد - 404", + "notAuthorized401": "غیرمجاز - 401", + "loginV1": "ورود نسخه 1", + "loginV2": "ورود نسخه 2", + "registerV1": "ثبت نام نسخه 1", + "registerV2": "ثبت نام نسخه 2", + "registerMultiSteps": "ثبت نام چند مرحله‌ای", + "forgotPasswordV1": "فراموشی رمز نسخه 1", + "forgotPasswordV2": "فراموشی رمز نسخه 2", + "resetPasswordV1": "بازنشانی رمز نسخه 1", + "resetPasswordV2": "بازنشانی رمز نسخه 2", + "verifyEmailV1": "تایید ایمیل نسخه 1", + "verifyEmailV2": "تایید ایمیل نسخه 2", + "twoStepsV1": "دو مرحله‌ای نسخه 1", + "twoStepsV2": "دو مرحله‌ای نسخه 2", + "wizardCheckout": "ویزارد تسویه", + "propertyListing": "فهرست املاک", + "createDeal": "ایجاد معامله", + "dialogExamples": "مثال‌های دیالوگ", + "basic": "پایه", + "advanced": "پیشرفته", + "statistics": "آمار", + "charts": "چارت‌ها", + "actions": "عملیات", + "reactTable": "جدول React", + "recharts": "Recharts", + "menuExamples": "مثال‌های منو", + "typography": "تایپوگرافی", + "colors": "رنگ‌ها", + "shadows": "سایه‌ها", + "icons": "آیکون‌ها", + "accordion": "آکاردئون", + "alerts": "هشدارها", + "avatars": "آواتارها", + "badges": "نشان‌ها", + "buttons": "دکمه‌ها", + "buttonGroup": "گروه دکمه", + "chips": "تراشه‌ها", + "dialogs": "دیالوگ‌ها", + "list": "فهرست", + "menu": "منو", + "pagination": "صفحه‌بندی", + "progress": "پیشرفت", + "ratings": "امتیازات", + "snackbar": "اسنک بار", + "swiper": "اسلایدر", + "tabs": "تب‌ها", + "timeline": "خط زمانی", + "toasts": "اعلان‌ها", + "moreComponents": "کامپوننت‌های بیشتر", + "textField": "فیلد متن", + "select": "انتخاب", + "checkbox": "چک‌باکس", + "radio": "رادیو", + "customInputs": "ورودی‌های سفارشی", + "textarea": "ناحیه متن", + "autocomplete": "خودتکمیل", + "dateTimePickers": "انتخابگر تاریخ و زمان", + "switch": "سوئیچ", + "fileUploader": "آپلود فایل", + "editor": "ویرایشگر", + "slider": "اسلایدر", + "muiTables": "جداول MUI" + } + }, + "theme": { + "colorPalette": "پالت رنگ", + "previewMode": "حالت پیش‌نمایش", + "light": "روشن", + "dark": "تاریک", + "lightMode": "حالت روشن", + "darkMode": "حالت تاریک", + "main": "اصلی", + "palettes": { + "purple": "پالت بنفش", + "teal": "پالت فیروزه‌ای", + "orange": "پالت نارنجی", + "pink": "پالت صورتی", + "blue": "پالت آبی" + } + }, + "userDropdown": { + "myProfile": "پروفایل من", + "logout": "خروج" } } diff --git a/src/app/(blank-layout-pages)/(guest-only)/login/page.tsx b/src/app/(blank-layout-pages)/(guest-only)/login/page.tsx index 68331f0..c6c2372 100644 --- a/src/app/(blank-layout-pages)/(guest-only)/login/page.tsx +++ b/src/app/(blank-layout-pages)/(guest-only)/login/page.tsx @@ -1,5 +1,6 @@ // Next Imports import type { Metadata } from 'next' +import { getTranslations } from 'next-intl/server' // Component Imports import Login from '@views/Login' @@ -7,9 +8,13 @@ import Login from '@views/Login' // Server Action Imports import { getServerMode } from '@core/utils/serverHelpers' -export const metadata: Metadata = { - title: 'Login', - description: 'Login to your account' +export async function generateMetadata(): Promise { + const t = await getTranslations('login') + + return { + title: t('title'), + description: t('description') + } } const LoginPage = async () => { diff --git a/src/components/layout/shared/ThemeColorDropdown.tsx b/src/components/layout/shared/ThemeColorDropdown.tsx index 1ab7f65..07f8fe7 100644 --- a/src/components/layout/shared/ThemeColorDropdown.tsx +++ b/src/components/layout/shared/ThemeColorDropdown.tsx @@ -2,6 +2,7 @@ // React Imports import { useRef, useState, useMemo } from 'react' +import { useTranslations } from 'next-intl' // MUI Imports import Tooltip from '@mui/material/Tooltip' @@ -26,6 +27,8 @@ import { useSettings } from '@core/hooks/useSettings' import type { SystemMode } from '@core/types' const ThemeColorDropdown = () => { + const t = useTranslations('theme') + // States const [open, setOpen] = useState(false) const [tooltipOpen, setTooltipOpen] = useState(false) @@ -84,7 +87,7 @@ const ThemeColorDropdown = () => { return ( <> setTooltipOpen(true)} onClose={() => setTooltipOpen(false)} open={open ? false : tooltipOpen ? true : false} @@ -112,7 +115,7 @@ const ThemeColorDropdown = () => { {/* Mode Preview Selection */} - Preview Mode + {t('previewMode')} { sx={{ minHeight: 'auto', py: 1 }} > - Light + {t('light')} { sx={{ minHeight: 'auto', py: 1 }} > - Dark + {t('dark')} @@ -153,7 +156,7 @@ const ThemeColorDropdown = () => { @@ -161,28 +164,28 @@ const ThemeColorDropdown = () => { - {palette.name} + {t(`palettes.${palette.paletteKey}`)} diff --git a/src/components/layout/shared/UserDropdown.tsx b/src/components/layout/shared/UserDropdown.tsx index d623d75..2f2a333 100644 --- a/src/components/layout/shared/UserDropdown.tsx +++ b/src/components/layout/shared/UserDropdown.tsx @@ -6,6 +6,7 @@ import type { MouseEvent } from 'react' // Next Imports import { useRouter } from 'next/navigation' +import { useTranslations } from 'next-intl' // MUI Imports import { styled } from '@mui/material/styles' @@ -38,6 +39,8 @@ const BadgeContentSpan = styled('span')({ }) const UserDropdown = () => { + const t = useTranslations('userDropdown') + // States const [open, setOpen] = useState(false) @@ -127,7 +130,7 @@ const UserDropdown = () => { handleDropdownClose(e, '/pages/account-settings')}> - My Profile + {t('myProfile')}
diff --git a/src/components/layout/shared/search/DefaultSuggestions.tsx b/src/components/layout/shared/search/DefaultSuggestions.tsx index 2aec2ca..b331dd7 100644 --- a/src/components/layout/shared/search/DefaultSuggestions.tsx +++ b/src/components/layout/shared/search/DefaultSuggestions.tsx @@ -1,13 +1,16 @@ +'use client' + // Next Imports import Link from 'next/link' +import { useTranslations } from 'next-intl' // Third-party Imports import classnames from 'classnames' type DefaultSuggestionsType = { - sectionLabel: string + sectionLabelKey: string items: { - label: string + labelKey: string href: string icon?: string }[] @@ -15,89 +18,40 @@ type DefaultSuggestionsType = { const defaultSuggestions: DefaultSuggestionsType[] = [ { - sectionLabel: 'Popular Searches', + sectionLabelKey: 'popularSearches', items: [ - { - label: 'Analytics', - href: '/dashboards/analytics', - icon: 'tabler-trending-up' - }, - - { - label: 'eCommerce', - href: '/dashboards/ecommerce', - icon: 'tabler-shopping-cart' - }, - { - label: 'User List', - href: '/apps/user/list', - icon: 'tabler-file-description' - } + { labelKey: 'analytics', href: '/dashboards/analytics', icon: 'tabler-trending-up' }, + { labelKey: 'ecommerceDashboard', href: '/dashboards/ecommerce', icon: 'tabler-shopping-cart' }, + { labelKey: 'userList', href: '/apps/user/list', icon: 'tabler-file-description' } ] }, { - sectionLabel: 'Apps', + sectionLabelKey: 'apps', items: [ - { - label: 'Calendar', - href: '/apps/calendar', - icon: 'tabler-calendar' - }, - { - label: 'Invoice List', - href: '/apps/invoice/list', - icon: 'tabler-file-info' - }, - { - label: 'User List', - href: '/apps/user/list', - icon: 'tabler-file-invoice' - }, - { - label: 'Roles & Permissions', - href: '/apps/roles', - icon: 'tabler-lock' - } + { labelKey: 'calendar', href: '/apps/calendar', icon: 'tabler-calendar' }, + { labelKey: 'invoiceList', href: '/apps/invoice/list', icon: 'tabler-file-info' }, + { labelKey: 'userList', href: '/apps/user/list', icon: 'tabler-file-invoice' }, + { labelKey: 'rolesPermissions', href: '/apps/roles', icon: 'tabler-lock' } ] }, { - sectionLabel: 'Pages', - items: [ - { - label: 'User Profile', - href: '/pages/user-profile', - icon: 'tabler-user' - } - ] + sectionLabelKey: 'pages', + items: [{ labelKey: 'userProfile', href: '/pages/user-profile', icon: 'tabler-user' }] }, { - sectionLabel: 'Forms & Charts', + sectionLabelKey: 'formsAndCharts', items: [ - { - label: 'Form Layouts', - href: '/forms/form-layouts', - icon: 'tabler-layout' - }, - { - label: 'Form Validation', - href: '/forms/form-validation', - icon: 'tabler-checkup-list' - }, - { - label: 'Form Wizard', - href: '/forms/form-wizard', - icon: 'tabler-git-merge' - }, - { - label: 'Apex Charts', - href: '/charts/apex-charts', - icon: 'tabler-chart-ppf' - } + { labelKey: 'formLayouts', href: '/forms/form-layouts', icon: 'tabler-layout' }, + { labelKey: 'formValidation', href: '/forms/form-validation', icon: 'tabler-checkup-list' }, + { labelKey: 'formWizard', href: '/forms/form-wizard', icon: 'tabler-git-merge' }, + { labelKey: 'apexCharts', href: '/charts/apex-charts', icon: 'tabler-chart-ppf' } ] } ] const DefaultSuggestions = ({ setOpen }: { setOpen: (value: boolean) => void }) => { + const t = useTranslations('search') + return (
{defaultSuggestions.map((section, index) => ( @@ -106,7 +60,9 @@ const DefaultSuggestions = ({ setOpen }: { setOpen: (value: boolean) => void }) className='flex flex-col justify-center overflow-x-hidden gap-4 basis-full sm:basis-[calc((100%-3rem)/2)]' >

- {section.sectionLabel} + {section.sectionLabelKey === 'popularSearches' + ? t('popularSearches') + : t(`sections.${section.sectionLabelKey}`)}

    {section.items.map((item, i) => ( @@ -117,7 +73,7 @@ const DefaultSuggestions = ({ setOpen }: { setOpen: (value: boolean) => void }) onClick={() => setOpen(false)} > {item.icon && } -

    {item.label}

    +

    {t(`items.${item.labelKey}`)}

    ))} diff --git a/src/components/layout/shared/search/NoResult.tsx b/src/components/layout/shared/search/NoResult.tsx index 92a396b..ef9990d 100644 --- a/src/components/layout/shared/search/NoResult.tsx +++ b/src/components/layout/shared/search/NoResult.tsx @@ -1,36 +1,32 @@ +'use client' + // Next Imports import Link from 'next/link' +import { useTranslations } from 'next-intl' // Third-party Imports import classnames from 'classnames' type NoResultData = { - label: string + labelKey: string href: string icon: string } const noResultData: NoResultData[] = [ - { - label: 'Analytics', - href: '/dashboards/analytics', - icon: 'tabler-chart-pie-2' - }, - { - label: 'User Profile', - href: '/pages/user-profile', - icon: 'tabler-user' - }, - + { labelKey: 'analytics', href: '/dashboards/analytics', icon: 'tabler-chart-pie-2' }, + { labelKey: 'userProfile', href: '/pages/user-profile', icon: 'tabler-user' } ] const NoResult = ({ searchValue, setOpen }: { searchValue: string; setOpen: (value: boolean) => void }) => { + const t = useTranslations('search') + return (
    -

    {`No result for "${searchValue}"`}

    -

    Try searching for

    +

    {t('noResult', { searchValue })}

    +

    {t('trySearching')}

      {noResultData.map((item, index) => (
    • @@ -40,7 +36,7 @@ const NoResult = ({ searchValue, setOpen }: { searchValue: string; setOpen: (val onClick={() => setOpen(false)} > -

      {item.label}

      +

      {t(`items.${item.labelKey}`)}

    • ))} diff --git a/src/components/layout/shared/search/index.tsx b/src/components/layout/shared/search/index.tsx index 66fa1e1..28e89eb 100644 --- a/src/components/layout/shared/search/index.tsx +++ b/src/components/layout/shared/search/index.tsx @@ -1,11 +1,12 @@ 'use client' // React Imports -import { useEffect, useState } from 'react' +import { useEffect, useMemo, useState } from 'react' import type { ReactNode } from 'react' // Next Imports import { useRouter, usePathname } from 'next/navigation' +import { useTranslations } from 'next-intl' // MUI Imports import IconButton from '@mui/material/IconButton' @@ -52,28 +53,6 @@ type SearchItemProps = { onSelect?: () => void } -// Transform the data to group items by their sections -const transformedData = data.reduce((acc: Section[], item) => { - const existingSection = acc.find(section => section.title === item.section) - - const newItem = { - id: item.id, - name: item.name, - url: item.url, - excludeLang: item.excludeLang, - icon: item.icon, - shortcut: item.shortcut - } - - if (existingSection) { - existingSection.items.push(newItem) - } else { - acc.push({ title: item.section, items: [newItem] }) - } - - return acc -}, []) - // SearchItem Component for introduce the shortcut keys const SearchItem = ({ children, shortcut, value, currentPath, url, onSelect = () => {} }: SearchItemProps) => { return ( @@ -108,6 +87,8 @@ const getFilteredResults = (sections: Section[]) => { // Footer component for the search menu const CommandFooter = () => { + const t = useTranslations('search') + return (
      @@ -117,23 +98,25 @@ const CommandFooter = () => { - to navigate + {t('toNavigate')}
      - to open + {t('toOpen')}
      esc - to close + {t('toClose')}
      ) } const NavSearch = () => { + const t = useTranslations('search') + // States const [open, setOpen] = useState(false) const [searchValue, setSearchValue] = useState('') @@ -144,6 +127,32 @@ const NavSearch = () => { const { settings } = useSettings() const { isBreakpointReached } = useVerticalNav() + // Transform the data to group items by their sections (with translations) + const transformedData = useMemo(() => { + return data.reduce((acc: Section[], item) => { + const sectionTitle = t(`sections.${item.sectionKey}`) + const itemName = t(`items.${item.nameKey}`) + const existingSection = acc.find(section => section.title === sectionTitle) + + const newItem: Item = { + id: item.id, + name: itemName, + url: item.url, + excludeLang: item.excludeLang, + icon: item.icon, + shortcut: item.shortcut + } + + if (existingSection) { + existingSection.items.push(newItem) + } else { + acc.push({ title: sectionTitle, items: [newItem] }) + } + + return acc + }, []) + }, [t]) + // When an item is selected from the search results const onSearchItemSelect = (item: Item) => { item.url.startsWith('http') @@ -214,7 +223,7 @@ const NavSearch = () => { setOpen(true)}> -
      Search ⌘K
      +
      {t('placeholder')}
    )} diff --git a/src/configs/primaryColorConfig.ts b/src/configs/primaryColorConfig.ts index 54fb5bc..e809b24 100644 --- a/src/configs/primaryColorConfig.ts +++ b/src/configs/primaryColorConfig.ts @@ -6,7 +6,9 @@ export type ColorPalette = { export type PrimaryColorConfig = { id: string + paletteKey: string name: string + main?: string light: ColorPalette dark: ColorPalette } @@ -15,7 +17,9 @@ export type PrimaryColorConfig = { const primaryColorConfig: PrimaryColorConfig[] = [ { id: 'palette-1', + paletteKey: 'purple', name: 'Purple Palette', + main: '#7367F0', light: { main: '#7367F0', light: '#8F85F3', @@ -29,7 +33,9 @@ const primaryColorConfig: PrimaryColorConfig[] = [ }, { id: 'palette-2', + paletteKey: 'teal', name: 'Teal Palette', + main: '#0D9394', light: { main: '#0D9394', light: '#4EB0B1', @@ -43,7 +49,9 @@ const primaryColorConfig: PrimaryColorConfig[] = [ }, { id: 'palette-3', + paletteKey: 'orange', name: 'Orange Palette', + main: '#FFAB1D', light: { main: '#FFAB1D', light: '#FFC25A', @@ -57,7 +65,9 @@ const primaryColorConfig: PrimaryColorConfig[] = [ }, { id: 'palette-4', + paletteKey: 'pink', name: 'Pink Palette', + main: '#EB3D63', light: { main: '#EB3D63', light: '#F0718D', @@ -71,7 +81,9 @@ const primaryColorConfig: PrimaryColorConfig[] = [ }, { id: 'palette-5', + paletteKey: 'blue', name: 'Blue Palette', + main: '#2092EC', light: { main: '#2092EC', light: '#5CAFF1', diff --git a/src/data/searchData.ts b/src/data/searchData.ts index e4a2bc8..3f0e089 100644 --- a/src/data/searchData.ts +++ b/src/data/searchData.ts @@ -1,10 +1,10 @@ -type SearchData = { +export type SearchData = { id: string - name: string + nameKey: string url: string excludeLang?: boolean icon: string - section: string + sectionKey: string shortcut?: string } @@ -12,778 +12,778 @@ const data: SearchData[] = [ { id: '2', - name: 'Analytics Dashboard', + nameKey: 'analyticsDashboard', url: '/dashboards/analytics', icon: 'tabler-trending-up', - section: 'Dashboards' + sectionKey: 'dashboards' }, { id: '3', - name: 'eCommerce Dashboard', + nameKey: 'ecommerceDashboard', url: '/dashboards/ecommerce', icon: 'tabler-shopping-cart', - section: 'Dashboards' + sectionKey: 'dashboards' }, { id: '4', - name: 'Academy Dashboard', + nameKey: 'academyDashboard', url: '/dashboards/academy', icon: 'tabler-school', - section: 'Dashboards' + sectionKey: 'dashboards' }, { id: '5', - name: 'Logistics Dashboard', + nameKey: 'logisticsDashboard', url: '/dashboards/logistics', icon: 'tabler-truck', - section: 'Dashboards' + sectionKey: 'dashboards' }, { id: '6', - name: 'Landing Front', + nameKey: 'landingFront', url: '/front-pages/landing-page', excludeLang: true, icon: 'tabler-file-description', - section: 'Front Pages' + sectionKey: 'frontPages' }, { id: '7', - name: 'Pricing Front', + nameKey: 'pricingFront', url: '/front-pages/pricing', excludeLang: true, icon: 'tabler-file-description', - section: 'Front Pages' + sectionKey: 'frontPages' }, { id: '8', - name: 'Payment Front', + nameKey: 'paymentFront', url: '/front-pages/payment', excludeLang: true, icon: 'tabler-file-description', - section: 'Front Pages' + sectionKey: 'frontPages' }, { id: '9', - name: 'Checkout Front', + nameKey: 'checkoutFront', url: '/front-pages/checkout', excludeLang: true, icon: 'tabler-file-description', - section: 'Front Pages' + sectionKey: 'frontPages' }, { id: '10', - name: 'Help Center Front', + nameKey: 'helpCenterFront', url: '/front-pages/help-center', excludeLang: true, icon: 'tabler-file-description', - section: 'Front Pages' + sectionKey: 'frontPages' }, { id: '11', - name: 'eCommerce - Dashboard', + nameKey: 'ecommerceDashboardApp', url: '/apps/ecommerce/dashboard', icon: 'tabler-shopping-cart', - section: 'Apps' + sectionKey: 'apps' }, { id: '12', - name: 'eCommerce - Product List', + nameKey: 'ecommerceProductList', url: '/apps/ecommerce/products/list', icon: 'tabler-list', - section: 'Apps' + sectionKey: 'apps' }, { id: '13', - name: 'eCommerce - Add New Product', + nameKey: 'ecommerceAddProduct', url: '/apps/ecommerce/products/add', icon: 'tabler-circle-plus', - section: 'Apps' + sectionKey: 'apps' }, { id: '14', - name: 'eCommerce - Product Category', + nameKey: 'ecommerceProductCategory', url: '/apps/ecommerce/products/category', icon: 'tabler-list-details', - section: 'Apps' + sectionKey: 'apps' }, { id: '15', - name: 'eCommerce - Order List', + nameKey: 'ecommerceOrderList', url: '/apps/ecommerce/orders/list', icon: 'tabler-list', - section: 'Apps' + sectionKey: 'apps' }, { id: '16', - name: 'eCommerce - Order Details', + nameKey: 'ecommerceOrderDetails', url: '/apps/ecommerce/orders/details/5434', icon: 'tabler-list-check', - section: 'Apps' + sectionKey: 'apps' }, { id: '17', - name: 'eCommerce - Customer List', + nameKey: 'ecommerceCustomerList', url: '/apps/ecommerce/customers/list', icon: 'tabler-user', - section: 'Apps' + sectionKey: 'apps' }, { id: '18', - name: 'eCommerce - Customer Details', + nameKey: 'ecommerceCustomerDetails', url: '/apps/ecommerce/customers/details/879861', icon: 'tabler-list', - section: 'Apps' + sectionKey: 'apps' }, { id: '19', - name: 'eCommerce - Manage Reviews', + nameKey: 'ecommerceManageReviews', url: '/apps/ecommerce/manage-reviews', icon: 'tabler-quote', - section: 'Apps' + sectionKey: 'apps' }, { id: '20', - name: 'eCommerce - Referrals', + nameKey: 'ecommerceReferrals', url: '/apps/ecommerce/referrals', icon: 'tabler-users-group', - section: 'Apps' + sectionKey: 'apps' }, { id: '21', - name: 'eCommerce - Settings', + nameKey: 'ecommerceSettings', url: '/apps/ecommerce/settings', icon: 'tabler-settings-automation', - section: 'Apps' + sectionKey: 'apps' }, { id: '22', - name: 'Academy - Dashboard', + nameKey: 'academyDashboardApp', url: '/apps/academy/dashboard', icon: 'tabler-book', - section: 'Apps' + sectionKey: 'apps' }, { id: '23', - name: 'Academy - My Courses', + nameKey: 'academyMyCourses', url: '/apps/academy/my-courses', icon: 'tabler-list', - section: 'Apps' + sectionKey: 'apps' }, { id: '24', - name: 'Academy - Course Details', + nameKey: 'academyCourseDetails', url: '/apps/academy/course-details', icon: 'tabler-list', - section: 'Apps' + sectionKey: 'apps' }, { id: '25', - name: 'Logistics - Dashboard', + nameKey: 'logisticsDashboardApp', url: '/apps/logistics/dashboard', icon: 'tabler-truck', - section: 'Apps' + sectionKey: 'apps' }, { id: '26', - name: 'Logistics - Fleet', + nameKey: 'logisticsFleet', url: '/apps/logistics/fleet', icon: 'tabler-car', - section: 'Apps' + sectionKey: 'apps' }, { id: '27', - name: 'Email', + nameKey: 'email', url: '/apps/email', icon: 'tabler-mail', - section: 'Apps' + sectionKey: 'apps' }, { id: '28', - name: 'Chat', + nameKey: 'chat', url: '/apps/chat', icon: 'tabler-message-circle-2', - section: 'Apps' + sectionKey: 'apps' }, { id: '29', - name: 'Calendar', + nameKey: 'calendar', url: '/apps/calendar', icon: 'tabler-calendar', - section: 'Apps' + sectionKey: 'apps' }, { id: '30', - name: 'Kanban', + nameKey: 'kanban', url: '/apps/kanban', icon: 'tabler-copy', - section: 'Apps' + sectionKey: 'apps' }, { id: '31', - name: 'Invoice List', + nameKey: 'invoiceList', url: '/apps/invoice/list', icon: 'tabler-file-description', - section: 'Apps' + sectionKey: 'apps' }, { id: '32', - name: 'Invoice Preview', + nameKey: 'invoicePreview', url: '/apps/invoice/preview/4987', icon: 'tabler-file-info', - section: 'Apps' + sectionKey: 'apps' }, { id: '33', - name: 'Invoice Edit', + nameKey: 'invoiceEdit', url: '/apps/invoice/edit/4987', icon: 'tabler-file-pencil', - section: 'Apps' + sectionKey: 'apps' }, { id: '34', - name: 'Invoice Add', + nameKey: 'invoiceAdd', url: '/apps/invoice/add', icon: 'tabler-file-plus', - section: 'Apps' + sectionKey: 'apps' }, { id: '35', - name: 'User List', + nameKey: 'userList', url: '/apps/user/list', icon: 'tabler-user', - section: 'Apps' + sectionKey: 'apps' }, { id: '36', - name: 'User View', + nameKey: 'userView', url: '/apps/user/view', icon: 'tabler-file-text', - section: 'Apps' + sectionKey: 'apps' }, { id: '37', - name: 'Roles', + nameKey: 'roles', url: '/apps/roles', icon: 'tabler-user-shield', - section: 'Apps' + sectionKey: 'apps' }, { id: '38', - name: 'Permissions', + nameKey: 'permissions', url: '/apps/permissions', icon: 'tabler-lock', - section: 'Apps' + sectionKey: 'apps' }, { id: '39', - name: 'User Profile', + nameKey: 'userProfile', url: '/pages/user-profile', icon: 'tabler-user-circle', - section: 'Pages' + sectionKey: 'pages' }, { id: '40', - name: 'Account Settings', + nameKey: 'accountSettings', url: '/pages/account-settings', icon: 'tabler-settings', - section: 'Pages' + sectionKey: 'pages' }, { id: '41', - name: 'FAQ', + nameKey: 'faq', url: '/pages/faq', icon: 'tabler-help-circle', - section: 'Pages' + sectionKey: 'pages' }, { id: '42', - name: 'Pricing', + nameKey: 'pricing', url: '/pages/pricing', icon: 'tabler-currency-dollar', - section: 'Pages' + sectionKey: 'pages' }, { id: '43', - name: 'Coming Soon', + nameKey: 'comingSoon', url: '/pages/misc/coming-soon', icon: 'tabler-clock-hour-3', - section: 'Pages' + sectionKey: 'pages' }, { id: '44', - name: 'Under Maintenance', + nameKey: 'underMaintenance', url: '/pages/misc/under-maintenance', icon: 'tabler-settings-cog', - section: 'Pages' + sectionKey: 'pages' }, { id: '45', - name: 'Page Not Found - 404', + nameKey: 'pageNotFound404', url: '/pages/misc/404-not-found', icon: 'tabler-info-circle', - section: 'Pages' + sectionKey: 'pages' }, { id: '46', - name: 'Not Authorized - 401', + nameKey: 'notAuthorized401', url: '/pages/misc/401-not-authorized', icon: 'tabler-user-cancel', - section: 'Pages' + sectionKey: 'pages' }, { id: '47', - name: 'Login V1', + nameKey: 'loginV1', url: '/pages/auth/login-v1', icon: 'tabler-login-2', - section: 'Pages' + sectionKey: 'pages' }, { id: '48', - name: 'Login V2', + nameKey: 'loginV2', url: '/pages/auth/login-v2', icon: 'tabler-login-2', - section: 'Pages' + sectionKey: 'pages' }, { id: '49', - name: 'Register V1', + nameKey: 'registerV1', url: '/pages/auth/register-v1', icon: 'tabler-user-plus', - section: 'Pages' + sectionKey: 'pages' }, { id: '50', - name: 'Register V2', + nameKey: 'registerV2', url: '/pages/auth/register-v2', icon: 'tabler-user-plus', - section: 'Pages' + sectionKey: 'pages' }, { id: '51', - name: 'Register Multi-Steps', + nameKey: 'registerMultiSteps', url: '/pages/auth/register-multi-steps', icon: 'tabler-user-plus', - section: 'Pages' + sectionKey: 'pages' }, { id: '52', - name: 'Forgot Password V1', + nameKey: 'forgotPasswordV1', url: '/pages/auth/forgot-password-v1', icon: 'tabler-lock-check', - section: 'Pages' + sectionKey: 'pages' }, { id: '53', - name: 'Forgot Password V2', + nameKey: 'forgotPasswordV2', url: '/pages/auth/forgot-password-v2', icon: 'tabler-lock-check', - section: 'Pages' + sectionKey: 'pages' }, { id: '54', - name: 'Reset Password V1', + nameKey: 'resetPasswordV1', url: '/pages/auth/reset-password-v1', icon: 'tabler-refresh', - section: 'Pages' + sectionKey: 'pages' }, { id: '55', - name: 'Reset Password V2', + nameKey: 'resetPasswordV2', url: '/pages/auth/reset-password-v2', icon: 'tabler-refresh', - section: 'Pages' + sectionKey: 'pages' }, { id: '56', - name: 'Verify Email V1', + nameKey: 'verifyEmailV1', url: '/pages/auth/verify-email-v1', icon: 'tabler-mail-check', - section: 'Pages' + sectionKey: 'pages' }, { id: '57', - name: 'Verify Email V2', + nameKey: 'verifyEmailV2', url: '/pages/auth/verify-email-v2', icon: 'tabler-mail-check', - section: 'Pages' + sectionKey: 'pages' }, { id: '58', - name: 'Two Steps V1', + nameKey: 'twoStepsV1', url: '/pages/auth/two-steps-v1', icon: 'tabler-devices', - section: 'Pages' + sectionKey: 'pages' }, { id: '59', - name: 'Two Steps V2', + nameKey: 'twoStepsV2', url: '/pages/auth/two-steps-v2', icon: 'tabler-devices', - section: 'Pages' + sectionKey: 'pages' }, { id: '60', - name: 'Wizard - Checkout', + nameKey: 'wizardCheckout', url: '/pages/wizard-examples/checkout', icon: 'tabler-shopping-cart-check', - section: 'Pages' + sectionKey: 'pages' }, { id: '61', - name: 'Wizard - Property Listing', + nameKey: 'propertyListing', url: '/pages/wizard-examples/property-listing', icon: 'tabler-building', - section: 'Pages' + sectionKey: 'pages' }, { id: '62', - name: 'Wizard - Create Deal', + nameKey: 'createDeal', url: '/pages/wizard-examples/create-deal', icon: 'tabler-gift', - section: 'Pages' + sectionKey: 'pages' }, { id: '63', - name: 'Dialog Examples', + nameKey: 'dialogExamples', url: '/pages/dialog-examples', icon: 'tabler-device-desktop', - section: 'Pages' + sectionKey: 'pages' }, { id: '64', - name: 'Widget - Basic', + nameKey: 'basic', url: '/pages/widget-examples/basic', icon: 'tabler-square', - section: 'Pages' + sectionKey: 'pages' }, { id: '65', - name: 'Widget - Advanced', + nameKey: 'advanced', url: '/pages/widget-examples/advanced', icon: 'tabler-file-spreadsheet', - section: 'Pages' + sectionKey: 'pages' }, { id: '66', - name: 'Widget - Statistics', + nameKey: 'statistics', url: '/pages/widget-examples/statistics', icon: 'tabler-align-box-bottom-center', - section: 'Pages' + sectionKey: 'pages' }, { id: '67', - name: 'Widget - Charts', + nameKey: 'charts', url: '/pages/widget-examples/charts', icon: 'tabler-chart-histogram', - section: 'Pages' + sectionKey: 'pages' }, { id: '68', - name: 'Widget - Actions', + nameKey: 'actions', url: '/pages/widget-examples/actions', icon: 'tabler-square-plus', - section: 'Pages' + sectionKey: 'pages' }, { id: '69', - name: 'Form Layouts', + nameKey: 'formLayouts', url: '/forms/form-layouts', icon: 'tabler-layout', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '70', - name: 'Form Validation', + nameKey: 'formValidation', url: '/forms/form-validation', icon: 'tabler-checkup-list', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '71', - name: 'Form Wizard', + nameKey: 'formWizard', url: '/forms/form-wizard', icon: 'tabler-git-merge', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '72', - name: 'React Table', + nameKey: 'reactTable', url: '/react-table', icon: 'tabler-table', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '73', - name: 'Apex Charts', + nameKey: 'apexCharts', url: '/charts/apex-charts', icon: 'tabler-chart-ppf', - section: 'Charts' + sectionKey: 'charts' }, { id: '74', - name: 'Recharts', + nameKey: 'recharts', url: '/charts/recharts', icon: 'tabler-chart-sankey', - section: 'Charts' + sectionKey: 'charts' }, { id: '75', - name: 'Menu Examples', + nameKey: 'menuExamples', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/menu-examples/overview`, icon: 'tabler-playlist-add', - section: 'Others' + sectionKey: 'others' }, { id: '76', - name: 'Typography', + nameKey: 'typography', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/foundation/typography`, icon: 'tabler-typography', - section: 'Foundation' + sectionKey: 'foundation' }, { id: '77', - name: 'Colors', + nameKey: 'colors', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/foundation/colors`, icon: 'tabler-palette', - section: 'Foundation' + sectionKey: 'foundation' }, { id: '78', - name: 'Shadows', + nameKey: 'shadows', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/foundation/shadows`, icon: 'tabler-shadow', - section: 'Foundation' + sectionKey: 'foundation' }, { id: '79', - name: 'Icons', + nameKey: 'icons', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/foundation/icons`, icon: 'tabler-icons', - section: 'Foundation' + sectionKey: 'foundation' }, { id: '80', - name: 'Accordion', + nameKey: 'accordion', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/accordion`, icon: 'tabler-fold', - section: 'Components' + sectionKey: 'components' }, { id: '81', - name: 'Alerts', + nameKey: 'alerts', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/alerts`, icon: 'tabler-alert-triangle', - section: 'Components' + sectionKey: 'components' }, { id: '82', - name: 'Avatars', + nameKey: 'avatars', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/avatars`, icon: 'tabler-user-square', - section: 'Components' + sectionKey: 'components' }, { id: '83', - name: 'Badges', + nameKey: 'badges', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/badges`, icon: 'tabler-notification', - section: 'Components' + sectionKey: 'components' }, { id: '84', - name: 'Buttons', + nameKey: 'buttons', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/buttons`, icon: 'tabler-download', - section: 'Components' + sectionKey: 'components' }, { id: '85', - name: 'Button Group', + nameKey: 'buttonGroup', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/button-group`, icon: 'tabler-copy', - section: 'Components' + sectionKey: 'components' }, { id: '86', - name: 'Chips', + nameKey: 'chips', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/chips`, icon: 'tabler-oval-vertical', - section: 'Components' + sectionKey: 'components' }, { id: '87', - name: 'Dialogs', + nameKey: 'dialogs', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/dialogs`, icon: 'tabler-device-desktop', - section: 'Components' + sectionKey: 'components' }, { id: '88', - name: 'List', + nameKey: 'list', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/list`, icon: 'tabler-list', - section: 'Components' + sectionKey: 'components' }, { id: '89', - name: 'Menu', + nameKey: 'menu', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/menu`, icon: 'tabler-menu-2', - section: 'Components' + sectionKey: 'components' }, { id: '90', - name: 'Pagination', + nameKey: 'pagination', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/pagination`, icon: 'tabler-chevron-right-pipe', - section: 'Components' + sectionKey: 'components' }, { id: '91', - name: 'Progress', + nameKey: 'progress', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/progress`, icon: 'tabler-progress', - section: 'Components' + sectionKey: 'components' }, { id: '92', - name: 'Ratings', + nameKey: 'ratings', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/ratings`, icon: 'tabler-star', - section: 'Components' + sectionKey: 'components' }, { id: '93', - name: 'Snackbar', + nameKey: 'snackbar', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/snackbar`, icon: 'tabler-message-dots', - section: 'Components' + sectionKey: 'components' }, { id: '94', - name: 'Swiper', + nameKey: 'swiper', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/swiper`, icon: 'tabler-cards', - section: 'Components' + sectionKey: 'components' }, { id: '95', - name: 'Tabs', + nameKey: 'tabs', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/tabs`, icon: 'tabler-layout-navbar', - section: 'Components' + sectionKey: 'components' }, { id: '96', - name: 'Timeline', + nameKey: 'timeline', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/timeline`, icon: 'tabler-timeline', - section: 'Components' + sectionKey: 'components' }, { id: '97', - name: 'Toasts', + nameKey: 'toasts', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/toasts`, icon: 'tabler-bell', - section: 'Components' + sectionKey: 'components' }, { id: '98', - name: 'More Components', + nameKey: 'moreComponents', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/components/more`, icon: 'tabler-table-plus', - section: 'Components' + sectionKey: 'components' }, { id: '99', - name: 'Text Field', + nameKey: 'textField', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/text-field`, icon: 'tabler-forms', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '100', - name: 'Select', + nameKey: 'select', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/select`, icon: 'tabler-list-details', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '101', - name: 'Checkbox', + nameKey: 'checkbox', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/checkbox`, icon: 'tabler-checkbox', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '102', - name: 'Radio', + nameKey: 'radio', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/radio`, icon: 'tabler-circle-dot', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '103', - name: 'Custom Inputs', + nameKey: 'customInputs', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/custom-inputs`, icon: 'tabler-list-details', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '104', - name: 'Textarea', + nameKey: 'textarea', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/textarea`, icon: 'tabler-rectangle', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '105', - name: 'Autocomplete', + nameKey: 'autocomplete', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/autocomplete`, icon: 'tabler-list-check', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '106', - name: 'Date & Time Pickers', + nameKey: 'dateTimePickers', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/pickers`, icon: 'tabler-calendar-month', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '107', - name: 'Switch', + nameKey: 'switch', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/switch`, icon: 'tabler-toggle-left', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '108', - name: 'File Uploader', + nameKey: 'fileUploader', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/file-uploader`, icon: 'tabler-file-upload', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '109', - name: 'Editor', + nameKey: 'editor', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/editor`, icon: 'tabler-device-ipad-horizontal-plus', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '110', - name: 'Slider', + nameKey: 'slider', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/form-elements/slider`, icon: 'tabler-line', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' }, { id: '111', - name: 'MUI Tables', + nameKey: 'muiTables', url: `${process.env.NEXT_PUBLIC_DOCS_URL}/docs/user-interface/mui-table`, icon: 'tabler-layout-board-split', - section: 'Forms & Tables' + sectionKey: 'formsAndTables' } ] diff --git a/src/views/pages/account-settings/billing-plans/Address.tsx b/src/views/pages/account-settings/billing-plans/Address.tsx index abae6de..dfc5405 100644 --- a/src/views/pages/account-settings/billing-plans/Address.tsx +++ b/src/views/pages/account-settings/billing-plans/Address.tsx @@ -2,6 +2,7 @@ // React Imports import { useState } from 'react' +import { useTranslations } from 'next-intl' // MUI Imports import Grid from '@mui/material/Grid2' @@ -16,32 +17,35 @@ import InputAdornment from '@mui/material/InputAdornment' import CustomTextField from '@core/components/mui/TextField' const Address = () => { + const t = useTranslations('accountSettings') + const tBilling = useTranslations('accountSettings.billing') + // States const [state, setState] = useState('') return ( - +
    - + - + - + - + { /> - setState(e.target.value)}> - Select Country - Australia - Canada - France - United Kingdom - United States + setState(e.target.value)}> + {tBilling('selectCountry')} + {tBilling('australia')} + {tBilling('canada')} + {tBilling('france')} + {tBilling('unitedKingdom')} + {tBilling('unitedStates')} - + - + - + - + diff --git a/src/views/pages/account-settings/billing-plans/CurrentPlan.tsx b/src/views/pages/account-settings/billing-plans/CurrentPlan.tsx index 0c737b6..77e8a88 100644 --- a/src/views/pages/account-settings/billing-plans/CurrentPlan.tsx +++ b/src/views/pages/account-settings/billing-plans/CurrentPlan.tsx @@ -1,3 +1,7 @@ +'use client' + +import { useTranslations } from 'next-intl' + // MUI Imports import Card from '@mui/material/Card' import CardHeader from '@mui/material/CardHeader' @@ -21,6 +25,9 @@ import UpgradePlan from '@components/dialogs/upgrade-plan' import OpenDialogOnElementClick from '@components/dialogs/OpenDialogOnElementClick' const CurrentPlan = ({ data }: { data?: PricingPlanType[] }) => { + const t = useTranslations('accountSettings') + const tBilling = useTranslations('accountSettings.billing') + const buttonProps = (children: string, color: ThemeColor, variant: ButtonProps['variant']): ButtonProps => ({ children, variant, @@ -29,60 +36,60 @@ const CurrentPlan = ({ data }: { data?: PricingPlanType[] }) => { return ( - +
    - Your Current Plan is Basic + {tBilling('yourPlanBasic')} - A simple start for everyone + {tBilling('simpleStart')}
    - Active until Dec 09, 2021 + {tBilling('activeUntil', { date: 'Dec 09, 2021' })} - We will send you a notification upon Subscription expiration + {tBilling('subscriptionExpiry')}
    - $199 Per Month + {tBilling('perMonth', { amount: '$199' })} - +
    - Standard plan for small to medium businesses + {tBilling('standardPlan')}
    - We need your attention! - Your plan requires update + {tBilling('attention')} + {tBilling('planRequiresUpdate')}
    - Days + {tBilling('days')} - 12 of 30 Days + {tBilling('daysProgress', { current: '12', total: '30' })}
    - 18 days remaining until your plan requires update + {tBilling('daysRemaining', { count: '18' })}
    diff --git a/src/views/pages/account-settings/notifications/index.tsx b/src/views/pages/account-settings/notifications/index.tsx index 56b7e31..7e78d48 100644 --- a/src/views/pages/account-settings/notifications/index.tsx +++ b/src/views/pages/account-settings/notifications/index.tsx @@ -1,5 +1,7 @@ 'use client' +import { useTranslations } from 'next-intl' + // MUI Imports import Card from '@mui/material/Card' import CardHeader from '@mui/material/CardHeader' @@ -54,14 +56,17 @@ const tableData: TableDataType[] = [ ] const Notifications = () => { + const t = useTranslations('accountSettings') + const tNotif = useTranslations('accountSettings.notifications') + return ( - We need permission from your browser to show notifications. - Request Permission + {tNotif('permissionRequest')} + {tNotif('requestPermission')} } /> @@ -70,8 +75,8 @@ const Notifications = () => { - - + + @@ -97,20 +102,20 @@ const Notifications = () => {
    TypeEmail{tNotif('type')}{t('email')} Browser App
    - When should we send you notifications? + {tNotif('whenToSend')} - Only when I'm online - Anytime + {tNotif('onlyWhenOnline')} + {tNotif('anytime')} diff --git a/src/views/pages/account-settings/security/ChangePasswordCard.tsx b/src/views/pages/account-settings/security/ChangePasswordCard.tsx index cd4166c..a9aa250 100644 --- a/src/views/pages/account-settings/security/ChangePasswordCard.tsx +++ b/src/views/pages/account-settings/security/ChangePasswordCard.tsx @@ -2,6 +2,7 @@ // React Imports import { useState } from 'react' +import { useTranslations } from 'next-intl' // MUI Imports import Card from '@mui/material/Card' @@ -17,6 +18,9 @@ import Button from '@mui/material/Button' import CustomTextField from '@core/components/mui/TextField' const ChangePasswordCard = () => { + const t = useTranslations('accountSettings') + const tSecurity = useTranslations('accountSettings.security') + // States const [isCurrentPasswordShown, setIsCurrentPasswordShown] = useState(false) const [isConfirmPasswordShown, setIsConfirmPasswordShown] = useState(false) @@ -28,14 +32,14 @@ const ChangePasswordCard = () => { return ( - + { { { /> - Password Requirements: + {tSecurity('passwordRequirements')}
    - Minimum 8 characters long - the more, the better + {tSecurity('passwordReq1')}
    - At least one lowercase & one uppercase character + {tSecurity('passwordReq2')}
    - At least one number, symbol, or whitespace character + {tSecurity('passwordReq3')}
    - +
    diff --git a/src/views/pages/account-settings/security/CreateApiKey.tsx b/src/views/pages/account-settings/security/CreateApiKey.tsx index dea991f..a1b422f 100644 --- a/src/views/pages/account-settings/security/CreateApiKey.tsx +++ b/src/views/pages/account-settings/security/CreateApiKey.tsx @@ -1,5 +1,7 @@ 'use client' +import { useTranslations } from 'next-intl' + // MUI Imports import Card from '@mui/material/Card' import CardHeader from '@mui/material/CardHeader' @@ -12,24 +14,27 @@ import MenuItem from '@mui/material/MenuItem' import CustomTextField from '@core/components/mui/TextField' const CreateApiKey = () => { + const t = useTranslations('accountSettings') + const tSecurity = useTranslations('accountSettings.security') + return ( - + - - Full Control - Modify - Read & Execute - List Folder Contents - Read Only - Read & Write + + {tSecurity('fullControl')} + {tSecurity('modify')} + {tSecurity('readExecute')} + {tSecurity('listFolderContents')} + {tSecurity('readOnly')} + {tSecurity('readWrite')} - +