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')} - +