diff --git a/package-lock.json b/package-lock.json index ef46878..8f0e4c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,8 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@tanstack/react-table": "^8.20.5", + "@trivago/prettier-plugin-sort-imports": "^5.2.0", + "@types/luxon": "^3.4.2", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0", @@ -30,11 +32,14 @@ "clsx": "^2.1.1", "cmdk": "^1.0.0", "copy-to-clipboard": "^3.3.3", + "framer-motion": "^11.14.1", "i18next": "^24.0.2", "i18next-browser-languagedetector": "^8.0.0", "jotai-zustand": "^0.6.0", "lucide-react": "^0.454.0", + "luxon": "^3.5.0", "next-themes": "^0.3.0", + "prettier-plugin-tailwindcss": "^0.6.9", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hook-form": "^7.53.1", @@ -98,7 +103,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -154,7 +158,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.26.2", @@ -230,7 +233,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -240,7 +242,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -274,7 +275,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.26.0" @@ -334,7 +334,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.9", @@ -349,7 +348,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.9", @@ -368,7 +366,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -378,7 +375,6 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2372,6 +2368,40 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.0.tgz", + "integrity": "sha512-yEIJ7xMKYQwyNRjxSdi4Gs37iszikAjxfky+3hu9bn24u8eHLJNDMAoOTyowp8p6EpSl8IQMdkfBx+WnJTttsw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "javascript-natural-sort": "^0.7.1", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">18.12" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x", + "prettier-plugin-svelte": "3.x", + "svelte": "4.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "svelte": { + "optional": true + } + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2431,6 +2461,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/luxon": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "22.8.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", @@ -3701,7 +3737,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4197,6 +4232,33 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "11.14.4", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.14.4.tgz", + "integrity": "sha512-NQuzr9JbeJDMQmy0FFLhLzk9h1kAjVC1tGE/HY4ubF02B95EBm2lpA21LE3Od/OpXqXgp0zl5Hdqu25hliBRsA==", + "license": "MIT", + "dependencies": { + "motion-dom": "^11.14.3", + "motion-utils": "^11.14.3", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4543,6 +4605,12 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" + }, "node_modules/jiti": { "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", @@ -4606,7 +4674,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -4715,7 +4782,6 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { @@ -4756,6 +4822,15 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4800,11 +4875,22 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/motion-dom": { + "version": "11.14.3", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.14.3.tgz", + "integrity": "sha512-lW+D2wBy5vxLJi6aCP0xyxTxlTfiu+b+zcpVbGVFUxotwThqhdpPRSmX8xztAgtZMPMeU0WGVn/k1w4I+TbPqA==", + "license": "MIT" + }, + "node_modules/motion-utils": { + "version": "11.14.3", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.14.3.tgz", + "integrity": "sha512-Xg+8xnqIJTpr0L/cidfTTBFkvRw26ZtGGuIhA94J9PQ2p4mEa06Xx7QVYZH0BP+EpMSaDlu+q0I0mmvwADPsaQ==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/mz": { @@ -5386,7 +5472,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -5398,6 +5483,84 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", + "license": "MIT", + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig-melody": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig-melody": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/src/components/alert-rule.tsx b/src/components/alert-rule.tsx index 68e810f..640e649 100644 --- a/src/components/alert-rule.tsx +++ b/src/components/alert-rule.tsx @@ -93,18 +93,18 @@ export const AlertRuleCard: React.FC = ({ data, mutate }) => resolver: zodResolver(alertRuleFormSchema), defaultValues: data ? { - ...data, - rules_raw: JSON.stringify(data.rules), - } + ...data, + rules_raw: JSON.stringify(data.rules), + } : { - name: "", - rules_raw: "", - rules: [], - fail_trigger_tasks: [], - recover_trigger_tasks: [], - notification_group_id: 0, - trigger_mode: 0, - }, + name: "", + rules_raw: "", + rules: [], + fail_trigger_tasks: [], + recover_trigger_tasks: [], + notification_group_id: 0, + trigger_mode: 0, + }, resetOptions: { keepDefaultValues: false, }, @@ -205,7 +205,7 @@ export const AlertRuleCard: React.FC = ({ data, mutate }) => - {Object.entries(triggerModes(t)).map( + {Object.entries(triggerModes).map( ([k, v]) => ( {v} diff --git a/src/components/cron.tsx b/src/components/cron.tsx index 86b5e7a..d5a3845 100644 --- a/src/components/cron.tsx +++ b/src/components/cron.tsx @@ -67,13 +67,13 @@ export const CronCard: React.FC = ({ data, mutate }) => { defaultValues: data ? data : { - name: "", - task_type: 0, - scheduler: "", - servers: [], - cover: 0, - notification_group_id: 0, - }, + name: "", + task_type: 0, + scheduler: "", + servers: [], + cover: 0, + notification_group_id: 0, + }, resetOptions: { keepDefaultValues: false, }, @@ -143,7 +143,7 @@ export const CronCard: React.FC = ({ data, mutate }) => { - {Object.entries(cronTypes(t)).map(([k, v]) => ( + {Object.entries(cronTypes).map(([k, v]) => ( {v} @@ -199,7 +199,7 @@ export const CronCard: React.FC = ({ data, mutate }) => { - {Object.entries(cronCoverageTypes(t)).map( + {Object.entries(cronCoverageTypes).map( ([k, v]) => ( {v} diff --git a/src/components/service.tsx b/src/components/service.tsx index d4e4adb..08010ac 100644 --- a/src/components/service.tsx +++ b/src/components/service.tsx @@ -247,7 +247,7 @@ export const ServiceCard: React.FC = ({ data, mutate }) => { - {Object.entries(serviceCoverageTypes(t)).map( + {Object.entries(serviceCoverageTypes).map( ([k, v]) => ( {v} diff --git a/src/routes/alert-rule.tsx b/src/routes/alert-rule.tsx index be1011b..e385ed4 100644 --- a/src/routes/alert-rule.tsx +++ b/src/routes/alert-rule.tsx @@ -81,7 +81,7 @@ export default function AlertRulePage() { { header: t("TriggerMode"), accessorKey: "trigger Mode", - accessorFn: (row) => triggerModes(t)[row.trigger_mode] || "", + accessorFn: (row) => triggerModes[row.trigger_mode] || "", }, { header: t("Rules"), diff --git a/src/routes/cron.tsx b/src/routes/cron.tsx index 4dbe598..3b55820 100644 --- a/src/routes/cron.tsx +++ b/src/routes/cron.tsx @@ -74,7 +74,7 @@ export default function CronPage() { { header: t("Type"), accessorKey: "taskType", - accessorFn: (row) => cronTypes(t)[row.task_type] || "", + accessorFn: (row) => cronTypes[row.task_type] || "", }, { header: t("CronExpression"), diff --git a/src/routes/settings.tsx b/src/routes/settings.tsx index 784993c..a2cdd10 100644 --- a/src/routes/settings.tsx +++ b/src/routes/settings.tsx @@ -64,7 +64,7 @@ export default function SettingsPage() { }, [error]) useEffect(() => { - ;(async () => { + ; (async () => { try { const c = await getSettings() setConfig(c) @@ -78,20 +78,20 @@ export default function SettingsPage() { resolver: zodResolver(settingFormSchema), defaultValues: config ? { - ...config, - site_name: config.site_name || "", - user_template: - config.user_template || - Object.keys(config.frontend_templates.filter((t) => !t.is_admin) || {})[0] || - "user-dist", - } + ...config, + site_name: config.site_name || "", + user_template: + config.user_template || + Object.keys(config.frontend_templates.filter((t) => !t.is_admin) || {})[0] || + "user-dist", + } : { - ip_change_notification_group_id: 0, - cover: 1, - site_name: "", - language: "", - user_template: "user-dist", - }, + ip_change_notification_group_id: 0, + cover: 1, + site_name: "", + language: "", + user_template: "user-dist", + }, resetOptions: { keepDefaultValues: false, }, @@ -236,15 +236,15 @@ export default function SettingsPage() { {!config?.frontend_templates?.find( (t) => t.path === field.value, )?.is_official && ( -
-
- {t("CommunityThemeWarning")} +
+
+ {t("CommunityThemeWarning")} +
+
+ {t("CommunityThemeDescription")} +
-
- {t("CommunityThemeDescription")} -
-
- )} + )} )} /> @@ -383,7 +383,7 @@ export default function SettingsPage() { {Object.entries( - settingCoverageTypes(t), + settingCoverageTypes, ).map(([k, v]) => ( {v} diff --git a/src/routes/waf.tsx b/src/routes/waf.tsx index da69882..d8a6dc9 100644 --- a/src/routes/waf.tsx +++ b/src/routes/waf.tsx @@ -70,7 +70,7 @@ export default function WAFPage() { accessorKey: "lastBlockReason", accessorFn: (row) => row.last_block_reason, cell: ({ row }) => ( - {wafBlockReasons(t)[row.original.last_block_reason] || ""} + {wafBlockReasons[row.original.last_block_reason] || ""} ), }, { @@ -141,9 +141,9 @@ export default function WAFPage() { {header.isPlaceholder ? null : flexRender( - header.column.columnDef.header, - header.getContext(), - )} + header.column.columnDef.header, + header.getContext(), + )} ) })} diff --git a/src/types/alert-rule.ts b/src/types/alert-rule.ts index fde8293..3adb6e2 100644 --- a/src/types/alert-rule.ts +++ b/src/types/alert-rule.ts @@ -1,6 +1,6 @@ -import { TFunction } from "i18next" +import i18n from "@/lib/i18n" -export const triggerModes = (t: TFunction<"translation", undefined>) => ({ - 0: t("Always"), - 1: t("Once"), -}) +export const triggerModes: Record = { + 0: i18n.t("Always"), + 1: i18n.t("Once"), +} diff --git a/src/types/cron.ts b/src/types/cron.ts index 93bb836..03b7685 100644 --- a/src/types/cron.ts +++ b/src/types/cron.ts @@ -1,12 +1,12 @@ -import { TFunction } from "i18next" +import i18n from "@/lib/i18n" -export const cronTypes = (t: TFunction<"translation", undefined>) => ({ - 0: t("Scheduled"), - 1: t("Trigger"), -}) +export const cronTypes: Record = { + 0: i18n.t("Scheduled"), + 1: i18n.t("Trigger"), +} -export const cronCoverageTypes = (t: TFunction<"translation", undefined>) => ({ - 0: t("Coverages.Only"), - 1: t("Coverages.Excludes"), - 2: t("Coverages.Alarmed"), -}) +export const cronCoverageTypes: Record = { + 0: i18n.t("Coverages.Only"), + 1: i18n.t("Coverages.Excludes"), + 2: i18n.t("Coverages.Alarmed"), +} \ No newline at end of file diff --git a/src/types/service.ts b/src/types/service.ts index d0a65ee..8ce8db3 100644 --- a/src/types/service.ts +++ b/src/types/service.ts @@ -1,4 +1,4 @@ -import { TFunction } from "i18next" +import i18n from "@/lib/i18n" export const serviceTypes: Record = { 1: "HTTP GET", @@ -6,7 +6,7 @@ export const serviceTypes: Record = { 3: "TCPing", } -export const serviceCoverageTypes = (t: TFunction<"translation", undefined>) => ({ - 0: t("Coverages.Excludes"), - 1: t("Coverages.Only"), -}) +export const serviceCoverageTypes: Record = { + 0: i18n.t("Coverages.Excludes"), + 1: i18n.t("Coverages.Only"), +} \ No newline at end of file diff --git a/src/types/settings.ts b/src/types/settings.ts index 30fe2bd..51ae24e 100644 --- a/src/types/settings.ts +++ b/src/types/settings.ts @@ -1,9 +1,9 @@ -import { TFunction } from "i18next" +import i18n from "@/lib/i18n" -export const settingCoverageTypes = (t: TFunction<"translation", undefined>) => ({ - 1: t("Coverages.Excludes"), - 2: t("Coverages.Only"), -}) +export const settingCoverageTypes: Record = { + 1: i18n.t("Coverages.Excludes"), + 2: i18n.t("Coverages.Only"), +} export const nezhaLang: Record = { "zh-CN": "简体中文(中国大陆)", @@ -11,8 +11,8 @@ export const nezhaLang: Record = { "en-US": "English", } -export const wafBlockReasons = (t: TFunction<"translation", undefined>) => ({ - 1: t("LoginFailed"), - 2: t("BruteForceAttackingToken"), - 3: t("BruteForceAttackingAgentSecret"), -}) +export const wafBlockReasons: Record = { + 1: i18n.t("LoginFailed"), + 2: i18n.t("BruteForceAttackingToken"), + 3: i18n.t("BruteForceAttackingAgentSecret"), +}