From edb5521c0102360a74fc79e0521b0d6acd6722c0 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Fri, 27 Jun 2025 12:31:37 +0800 Subject: [PATCH] i18n --- package-lock.json | 820 +++++++++++++++++- src/app/(main)/dashboard/page.tsx | 1 + src/app/(main)/do/page.tsx | 16 +- src/app/(main)/inventory/page.tsx | 10 +- src/app/(main)/layout.tsx | 2 + src/app/(main)/material/page.tsx | 1 - src/app/(main)/pickOrder/page.tsx | 9 +- src/app/(main)/po/edit/page.tsx | 3 + src/app/(main)/po/page.tsx | 13 +- src/app/(main)/production/page.tsx | 14 +- src/app/(main)/projects/create/page.tsx | 7 +- src/app/(main)/projects/page.tsx | 11 +- .../(main)/scheduling/detail/edit/page.tsx | 17 +- src/app/(main)/scheduling/detail/page.tsx | 21 +- src/app/(main)/scheduling/rough/edit/page.tsx | 2 +- src/app/(main)/scheduling/rough/page.tsx | 12 +- src/app/(main)/settings/user/edit/page.tsx | 13 +- src/app/api/do/index.tsx | 6 +- src/app/api/mail/actions.ts | 7 +- src/app/api/mail/index.ts | 7 +- src/app/api/pdf/actions.ts | 6 +- src/app/api/pickOrder/index.ts | 6 +- src/app/api/po/actions.ts | 6 +- src/app/api/po/index.ts | 6 +- src/app/api/projects/actions.ts | 6 +- src/app/api/qc/actions.ts | 6 +- src/app/api/qc/index.ts | 6 +- src/app/api/qrcode/index.ts | 6 +- src/app/api/settings/item/index.ts | 7 +- .../api/settings/m18ImportTesting/actions.ts | 6 +- src/app/api/settings/qcCheck/actions.ts | 6 +- src/app/api/settings/qcItem/actions.ts | 10 +- src/app/api/settings/qcItem/index.ts | 7 +- src/app/api/settings/uom/index.ts | 6 +- src/app/api/user/actions.ts | 6 +- src/app/layout.tsx | 6 +- src/components/CreateClaim/ClaimInputGrid.tsx | 2 +- src/components/CreateItem/CreateItem.tsx | 2 +- src/components/CreateItem/QcDetails.tsx | 16 +- .../DetailScheduleSearchView.tsx | 5 +- .../DetailScheduleDetail/ViewByBomDetails.tsx | 14 +- .../DetailScheduleDetail/ViewByFGDetails.tsx | 30 +- src/components/DoSearch/DoSearch.tsx | 2 +- src/components/EditUser/UserDetail.tsx | 2 +- .../M18ImportTesting/M18ImportPo.tsx | 2 +- .../NavigationContent/NavigationContent.tsx | 2 +- .../PickOrderSearch/PickOrderSearch.tsx | 4 +- .../RoughSchedule/RoughSchedileSearchView.tsx | 2 +- .../RoughScheudleDetailView.tsx | 4 +- .../RoughScheduleDetail/ViewByBomDetails.tsx | 25 +- .../RoughScheduleDetail/ViewByFGDetails.tsx | 26 +- .../RoughScheduleSetting.tsx | 16 +- .../SearchResults/EditableSearchResults.tsx | 7 +- src/i18n/en/{projects.json => items.json} | 0 src/i18n/en/project.json | 6 + src/i18n/zh/common.json | 46 +- src/i18n/zh/detailScheduling.json | 20 + src/i18n/zh/do.json | 15 + src/i18n/zh/items.json | 35 + src/i18n/zh/pickOrder.json | 111 +++ src/i18n/zh/project.json | 8 + src/i18n/zh/projects.json | 1 - src/i18n/zh/purchaseOrder.json | 2 + src/i18n/zh/schedule.json | 88 +- src/i18n/zh/settings.json | 14 + src/i18n/zh/translation.json | 4 + src/i18n/zh/user.json | 10 +- src/middleware.ts | 3 +- 68 files changed, 1422 insertions(+), 196 deletions(-) rename src/i18n/en/{projects.json => items.json} (100%) create mode 100644 src/i18n/en/project.json create mode 100644 src/i18n/zh/detailScheduling.json create mode 100644 src/i18n/zh/do.json create mode 100644 src/i18n/zh/items.json create mode 100644 src/i18n/zh/pickOrder.json create mode 100644 src/i18n/zh/project.json delete mode 100644 src/i18n/zh/projects.json create mode 100644 src/i18n/zh/settings.json create mode 100644 src/i18n/zh/translation.json diff --git a/package-lock.json b/package-lock.json index 9a61910..1a206eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,24 @@ "@mui/material-nextjs": "^5.15.0", "@mui/x-data-grid": "^6.18.7", "@mui/x-date-pickers": "^6.18.7", - "@tiptap/react": "^2.12.0", + "@tiptap/core": "^2.14.0", + "@tiptap/extension-color": "^2.14.0", + "@tiptap/extension-document": "^2.14.0", + "@tiptap/extension-gapcursor": "^2.14.0", + "@tiptap/extension-highlight": "^2.14.0", + "@tiptap/extension-list-item": "^2.14.0", + "@tiptap/extension-paragraph": "^2.14.0", + "@tiptap/extension-table": "^2.14.0", + "@tiptap/extension-table-cell": "^2.14.0", + "@tiptap/extension-table-header": "^2.14.0", + "@tiptap/extension-table-row": "^2.14.0", + "@tiptap/extension-text": "^2.14.0", + "@tiptap/extension-text-align": "^2.14.0", + "@tiptap/extension-text-style": "^2.14.0", + "@tiptap/extension-underline": "^2.14.0", + "@tiptap/pm": "^2.14.0", + "@tiptap/react": "^2.14.0", + "@tiptap/starter-kit": "^2.14.0", "@unly/universal-language-detector": "^2.0.3", "apexcharts": "^3.45.2", "axios": "^1.9.0", @@ -27,6 +44,7 @@ "i18next": "^23.7.11", "i18next-resources-to-backend": "^1.2.0", "lodash": "^4.17.21", + "mui-color-input": "^7.0.0", "next": "14.0.4", "next-auth": "^4.24.5", "next-pwa": "^5.6.0", @@ -1729,6 +1747,15 @@ "node": ">=6.9.0" } }, + "node_modules/@ctrl/tinycolor": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", + "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", @@ -2862,6 +2889,12 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -2972,10 +3005,50 @@ "tslib": "^2.4.0" } }, + "node_modules/@tiptap/core": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.22.3.tgz", + "integrity": "sha512-czyBPXZG/ZFyObZEF1kyusGf58Ai3X8TnaxlUUn3gqLLWPy0idXZg85NETCidzi/gAxWxL9j6Pcy+zwS4pbZYQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.22.3.tgz", + "integrity": "sha512-HvTXvqeGaANg0owk0Xxkgyc4lJMO5CZES2Lc3JJp8u5kV+HZIwd78eJ7fbKBMtkpKb4zOk4xQsHQ/TuhghJaeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.22.3.tgz", + "integrity": "sha512-J3GxKwijD42eqCwU1SS7PK5aSgnp0wgQDetLz9izAD0RQBrKj5WZA13GnPoTTlzLU4qwjcPRV+6mvF+llH6b6A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.13.0.tgz", - "integrity": "sha512-y2PRg7YT8Km1e4+xEvXcKTPfEu/i44eKNjbsKojgs70kuONdhFmhWIXCeGEVAwPH8ZPH+JPam5kcW2vsihoayg==", + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.22.3.tgz", + "integrity": "sha512-8iQLNrRf3iBPKqI3dQnfvMxMfgp6y9TAbO803LihvzbIGqBaX264ES7fHtoyFIIeVjy2xFruVsTZCZofWTupGg==", + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -2988,10 +3061,92 @@ "@tiptap/pm": "^2.7.0" } }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.22.3.tgz", + "integrity": "sha512-SYvLIxqmuV0kTj4/3ZFlnZ1fr9Y233qX00BKuIpGnczeFsWQmzBJo8vGm3d1IlKPCQN+jTRtDdDE1aSum8Kv2w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.22.3.tgz", + "integrity": "sha512-s+W6jHezq+n9cC40xZ3hZF6cGGSl+fBELik1b2x8+cb0WoIlqmcdWin1dgeMNrWlRZUw1aD2DNwy/PdXI5vn2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.22.3.tgz", + "integrity": "sha512-twPCBpb/ygNixlSBAXgvfo+t56Ucpb8lvPDiZn+cH8OjmmO0ayBoSfSrjKWgaEWGPcXBrFAfsBRbYHyoHj7pXg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-color": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.22.3.tgz", + "integrity": "sha512-4GewNUnDE16cte85kG0qhMGS1NQUQ1HRObVRGP47RlrSc/6x++DOfkqYbSJ0btyfWHGBahC3QQfyQ3eCdryUxg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/extension-text-style": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.22.3.tgz", + "integrity": "sha512-7MnILbhRZRyROlMUgyntzRZ/EZlqNB8fO761RNjJxR2WMb49R4yc04fz7/+f/QH/hwxoS13bKfsNUDAsDxA5Aw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.22.3.tgz", + "integrity": "sha512-yQxSfTWjdUQS+bh6KiNLR9KIMsn1SElzycQe4XE+0eoaetapGtKqxfwkTbbQdNgQOU5wQG1KOda221mnPvkpAA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, "node_modules/@tiptap/extension-floating-menu": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.13.0.tgz", - "integrity": "sha512-gF14Nu61QUWWJDxOxzB679uK0W/rWcU7FTn1ll2zGt3NW2P2HheLo6qL1U5Wwxo3YwXloM8KLofdWi6vMN5RQQ==", + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.22.3.tgz", + "integrity": "sha512-GeJRRdulxpwsshxzBkpOf/xJkLD2fa+49o+3FqRCmrm7AioC8oUcZZmzuzjLj5a3ZNGKPuJ9xxDkYWUjH4tE1g==", + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" }, @@ -3004,13 +3159,295 @@ "@tiptap/pm": "^2.7.0" } }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.22.3.tgz", + "integrity": "sha512-6Q8TLL4PVGcZLn27eQazCC+be8LP8uzuz5Z5e4TpIeswPAju49cerQOdEGNFKkuYv/FelWIhXNtkWFMf4eSmyw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.22.3.tgz", + "integrity": "sha512-tbEji/V4Za3UhxYwB36amYhyonwe5j66iYTNRWzgjNixjrcGDbWk6cfaF9jMAgPgIDBmmtQLJY+moKskwgpnZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.22.3.tgz", + "integrity": "sha512-+MexJD+kXtNwMDbNTFa7jCFipx1DqAdT+n9GgInqebAN9bK+CWjC+SskzZNRqeMrQ0Er7QTsi6YC09M+74sevA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-highlight": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.22.3.tgz", + "integrity": "sha512-cdPSeQ3QcThhJdzkjK9a1871uPQjwmOf0WzTGW33lJyJDQHypWIRNUus56c3pGA7BgV9P59QW7Fm8rDnM8XkbA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.22.3.tgz", + "integrity": "sha512-F9sC45zPw7vbjKrwSKuSLZ0ODyc/X3bGPeCa6HYLEHKfgqsdt2v2fQLvxjpmlwO2ZMrnkBkg76KDxHfVyrZ2zQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.22.3.tgz", + "integrity": "sha512-3GvY798p9pCXUBbCebIdSmi1q80l7VZz/B6NN4uUMQ9iwxWopd8yaZ0O7xx2hM2UBzPEtY3M4FAhhpYUTXNFgQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.22.3.tgz", + "integrity": "sha512-W/rQDo7qFL7MfwfaYEcdtbk862fOmBv30qIEwVdqElBye7BFJYKtRuWBzNbG2BwKanjwMbVc/tBXF5W1sqfT7Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.22.3.tgz", + "integrity": "sha512-B7Fze+eM1sYbGOZtDDAwAivnj1ow2wN5RqaQPC1la3wdTK4Wgp7bdzGjvUbrN6gp3zMFCEWlqP2toc/mRAHCtA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.22.3.tgz", + "integrity": "sha512-pHGkuZhV/uAAHI9vzk/lpAkbdpMT4wUR1FI17/GE3zNrogfzx0VopCQrXq4+sQVsLUW4I6Cj6VeBjm9wB6qlIw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.22.3.tgz", + "integrity": "sha512-TYvgS7CweNFo/xVxsKWSt0wnm46Y8OtsfDSjnLbSC4Pj4ZNa6PU3zpvDTW+UxYakr+8zIPvI2WgLBkyTHq6oQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.22.3.tgz", + "integrity": "sha512-I+s2Csw2cTHae2vFJiojnHK+NnQjDr6441mSlAd+e7kEly1kjZ4g7J+JMj02ajNQhr/ob8/hb5r6EdIyv2xtoA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.22.3.tgz", + "integrity": "sha512-lYTuDo/3lJsC6g85b5OCfrKi8yID82PnZlngZo4quVHusE/YuXOwXYD4qt3xEOoqdgFoPQl0b7Ck9C5Qyb8AUg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-cell": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.22.3.tgz", + "integrity": "sha512-Yj6/bd4QpKoQpNTi/eNnWpT+VMfTBB7SfCPjlMvTK1MFVr60fmbUjJHrjt2WAfTW2JmkQlLsP8UXjR+Bda+uTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-header": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.22.3.tgz", + "integrity": "sha512-bLq/lufV95fp9gXMjOKMuuhpAa2+t0vi8dz4Zxwnrr1dsvkk4TyiKWRyuI3OV+TCNzZ3hZqOlEStS+Ie6lB/Lg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-row": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.22.3.tgz", + "integrity": "sha512-PQbrDIyGOHrsN3RmB+J75UJ10lGW7I4PqY+E2HUtx5HvFOEVPlBbcFELMfjy7dOPbKiM+v6KUSbybXW8h745mg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.22.3.tgz", + "integrity": "sha512-07cymWkPTfq6nuum88Yf90YYArbowed8nNiu0Tw3jCvwpzf9J9TDaovT+LAKuSKtrOsnNpFB/9IqUwFxZepOGw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-align": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.22.3.tgz", + "integrity": "sha512-UZ8803BOrHLHSNFfooqgkm2AQsaK/7eE1deQGSazxft89KksAv1kZkEKFypOE8yw85Bg2NHH2Lp6n4tyz2n6/g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.22.3.tgz", + "integrity": "sha512-M3FLOUPcO8fR+rM97mR2gQ54KFkdlAUQtEPKQpO1f312gtcVdBNxgq0WgqTnBY7thWLyqQSKiAsL6y88+JddSA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.22.3.tgz", + "integrity": "sha512-floLjh1UbQ2pKgdwfw7qCAJ5VojvH1uqj7xW2RCv79aWYUuJCPD6UBpaBOt/jv7gXDJJ9EeV3m2Hga49CXBrEQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.22.3.tgz", + "integrity": "sha512-uWPeIScnpQVCYdTnL140XgcvbT1qH288CstMJ6S0Y11lC5PclPK9CxfAipsqgWWrIK7yatxKUVCg6TzfG9zpmA==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.23.0", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.37.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, "node_modules/@tiptap/react": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.13.0.tgz", - "integrity": "sha512-HxA9M2PdzOszIvv5NG2MNcp7bk+bGUB+sJsUcT7X5fDRSoSn94aBKQ677BONHCV6YHHSY3wLxOtuiNXnO3kkDQ==", + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.22.3.tgz", + "integrity": "sha512-Te6e6/carhUAavcJgxC03rffLAZz1or4cjnRDFNF8G4vPOqkNgQd368N47wTMjwh5mQTdMUUI3ToZIpc45Q7Tw==", + "license": "MIT", "dependencies": { - "@tiptap/extension-bubble-menu": "^2.13.0", - "@tiptap/extension-floating-menu": "^2.13.0", + "@tiptap/extension-bubble-menu": "^2.22.3", + "@tiptap/extension-floating-menu": "^2.22.3", "@types/use-sync-external-store": "^0.0.6", "fast-deep-equal": "^3", "use-sync-external-store": "^1" @@ -3026,6 +3463,39 @@ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/@tiptap/starter-kit": { + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.22.3.tgz", + "integrity": "sha512-GkvheaR2ORnHJ9g9R6xIT38w2uppGja/iAIrXLZ9vY1QuR+0cya/ZZ5vKU6r9C2PeyBs3aKYxRD1/j3HDhuGXw==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "^2.22.3", + "@tiptap/extension-blockquote": "^2.22.3", + "@tiptap/extension-bold": "^2.22.3", + "@tiptap/extension-bullet-list": "^2.22.3", + "@tiptap/extension-code": "^2.22.3", + "@tiptap/extension-code-block": "^2.22.3", + "@tiptap/extension-document": "^2.22.3", + "@tiptap/extension-dropcursor": "^2.22.3", + "@tiptap/extension-gapcursor": "^2.22.3", + "@tiptap/extension-hard-break": "^2.22.3", + "@tiptap/extension-heading": "^2.22.3", + "@tiptap/extension-history": "^2.22.3", + "@tiptap/extension-horizontal-rule": "^2.22.3", + "@tiptap/extension-italic": "^2.22.3", + "@tiptap/extension-list-item": "^2.22.3", + "@tiptap/extension-ordered-list": "^2.22.3", + "@tiptap/extension-paragraph": "^2.22.3", + "@tiptap/extension-strike": "^2.22.3", + "@tiptap/extension-text": "^2.22.3", + "@tiptap/extension-text-style": "^2.22.3", + "@tiptap/pm": "^2.22.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -3055,12 +3525,34 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, "node_modules/@types/lodash": { "version": "4.14.202", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", "dev": true }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -3514,8 +4006,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { "version": "5.3.0", @@ -4259,6 +4750,12 @@ "node": ">=10" } }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -4585,6 +5082,18 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6828,6 +7337,15 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", @@ -6950,6 +7468,23 @@ "semver": "bin/semver.js" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -6958,6 +7493,12 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", @@ -7045,6 +7586,28 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/mui-color-input": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mui-color-input/-/mui-color-input-7.0.0.tgz", + "integrity": "sha512-b9pHCCoRjD9CDTaw2b5S+UbBhJjAsB1NzdEqjF/9NzRFD0lD8zrlMxMwvI/NqsHkNxj2PteIFh/mzo2gBqnG9g==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.1.0" + }, + "peerDependencies": { + "@emotion/react": "^11.13.0", + "@emotion/styled": "^11.13.0", + "@mui/material": "^7.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -7396,6 +7959,12 @@ "node": ">= 0.8.0" } }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7900,6 +8469,201 @@ "react-is": "^16.13.1" } }, + "node_modules/prosemirror-changeset": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", + "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz", + "integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", + "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", + "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.1.tgz", + "integrity": "sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.7.1.tgz", + "integrity": "sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.25.0", + "prosemirror-state": "^1.4.3", + "prosemirror-transform": "^1.10.3", + "prosemirror-view": "^1.39.1" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.4.tgz", + "integrity": "sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.40.0.tgz", + "integrity": "sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -7913,6 +8677,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qrcode.react": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", @@ -8431,6 +9204,12 @@ "node": ">=8" } }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9425,6 +10204,7 @@ "version": "6.3.7", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.0" } @@ -9605,6 +10385,12 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -9768,6 +10554,12 @@ "node": ">=0.10.0" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", diff --git a/src/app/(main)/dashboard/page.tsx b/src/app/(main)/dashboard/page.tsx index 9d40019..84c79ad 100644 --- a/src/app/(main)/dashboard/page.tsx +++ b/src/app/(main)/dashboard/page.tsx @@ -5,6 +5,7 @@ import { getServerI18n } from "@/i18n"; import DashboardPage from "@/components/DashboardPage"; import { SearchParams } from "@/app/utils/fetchUtil"; + export const metadata: Metadata = { title: "Dashboard", }; diff --git a/src/app/(main)/do/page.tsx b/src/app/(main)/do/page.tsx index d58862d..9b69e37 100644 --- a/src/app/(main)/do/page.tsx +++ b/src/app/(main)/do/page.tsx @@ -1,6 +1,9 @@ -import DoSearch from "@/components/DoSearch"; -import { getServerI18n } from "@/i18n" +// import DoSearch from "@/components/DoSearch"; +// import { getServerI18n } from "@/i18n" +import DoSearch from "../../../components/DoSearch"; +import { getServerI18n } from "../../../i18n" import { Stack, Typography } from "@mui/material"; +import { I18nProvider } from "@/i18n"; import { Metadata } from "next"; import { Suspense } from "react"; @@ -20,9 +23,12 @@ const DeliveryOrder: React.FC = async () => { rowGap={2} > - }> - - + + + }> + + + ) } diff --git a/src/app/(main)/inventory/page.tsx b/src/app/(main)/inventory/page.tsx index 046d56a..4ee9428 100644 --- a/src/app/(main)/inventory/page.tsx +++ b/src/app/(main)/inventory/page.tsx @@ -1,6 +1,10 @@ -import { preloadInventory } from "@/app/api/inventory"; -import InventorySearch from "@/components/InventorySearch"; -import { I18nProvider, getServerI18n } from "@/i18n"; +// import { preloadInventory } from "@/app/api/inventory"; +// import InventorySearch from "@/components/InventorySearch"; +// import { I18nProvider, getServerI18n } from "@/i18n"; + +import { preloadInventory } from "../../../app/api/inventory"; +import InventorySearch from "../../../components/InventorySearch"; +import { I18nProvider, getServerI18n } from "../../../i18n"; import { Stack, Typography } from "@mui/material"; import { Metadata } from "next"; import { Suspense } from "react"; diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 5ad2aeb..61c8ec1 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,3 +1,4 @@ + import AppBar from "@/components/AppBar"; import { AuthOptions, getServerSession } from "next-auth"; import { authOptions, SessionWithTokens } from "@/config/authConfig"; @@ -14,6 +15,7 @@ import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionP import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider"; import { I18nProvider } from "@/i18n"; + export default async function MainLayout({ children, }: { diff --git a/src/app/(main)/material/page.tsx b/src/app/(main)/material/page.tsx index c6a847c..20ad0b9 100644 --- a/src/app/(main)/material/page.tsx +++ b/src/app/(main)/material/page.tsx @@ -1,4 +1,3 @@ - import { SearchParams } from "@/app/utils/fetchUtil"; import { getServerI18n } from "@/i18n"; import Add from "@mui/icons-material/Add"; diff --git a/src/app/(main)/pickOrder/page.tsx b/src/app/(main)/pickOrder/page.tsx index 740f99a..20f3f10 100644 --- a/src/app/(main)/pickOrder/page.tsx +++ b/src/app/(main)/pickOrder/page.tsx @@ -1,6 +1,7 @@ import { PreloadPickOrder } from "@/app/api/pickOrder"; import PickOrderSearch from "@/components/PickOrderSearch"; import { getServerI18n } from "@/i18n"; +import { I18nProvider } from "@/i18n"; import { Stack, Typography } from "@mui/material"; import { Metadata } from "next"; import { Suspense } from "react"; @@ -26,9 +27,11 @@ const PickOrder: React.FC = async () => { {t("Pick Order")} - }> - - + + }> + + + ) } diff --git a/src/app/(main)/po/edit/page.tsx b/src/app/(main)/po/edit/page.tsx index 95cd6e3..9a2c637 100644 --- a/src/app/(main)/po/edit/page.tsx +++ b/src/app/(main)/po/edit/page.tsx @@ -3,6 +3,9 @@ import { TypeEnum } from "@/app/utils/typeEnum"; import CreateProductMaterial from "@/components/CreateItem"; import PoDetail from "@/components/PoDetail"; import { I18nProvider, getServerI18n } from "@/i18n"; + + + import { Typography } from "@mui/material"; import isString from "lodash/isString"; import { notFound } from "next/navigation"; diff --git a/src/app/(main)/po/page.tsx b/src/app/(main)/po/page.tsx index e538e16..f031c40 100644 --- a/src/app/(main)/po/page.tsx +++ b/src/app/(main)/po/page.tsx @@ -1,7 +1,12 @@ -import { preloadClaims } from "@/app/api/claims"; -import ClaimSearch from "@/components/ClaimSearch"; -import PoSearch from "@/components/PoSearch"; -import { getServerI18n, I18nProvider } from "@/i18n"; +//import { preloadClaims } from "@/app/api/claims"; +// import ClaimSearch from "@/components/ClaimSearch"; +// import PoSearch from "@/components/PoSearch"; +// import { getServerI18n, I18nProvider } from "@/i18n"; + +import { preloadClaims } from "../../../app/api/claims"; +import ClaimSearch from "../../../components/ClaimSearch"; +import PoSearch from "../../../components/PoSearch"; +import { getServerI18n, I18nProvider } from "../../../i18n"; import Add from "@mui/icons-material/Add"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; diff --git a/src/app/(main)/production/page.tsx b/src/app/(main)/production/page.tsx index 59093d2..f391be0 100644 --- a/src/app/(main)/production/page.tsx +++ b/src/app/(main)/production/page.tsx @@ -1,7 +1,13 @@ -import { preloadClaims } from "@/app/api/claims"; -import ClaimSearch from "@/components/ClaimSearch"; -import ProductionProcess from "@/components/ProductionProcess"; -import { getServerI18n } from "@/i18n"; +// import { preloadClaims } from "@/app/api/claims"; +// import ClaimSearch from "@/components/ClaimSearch"; +// import ProductionProcess from "@/components/ProductionProcess"; +//import { getServerI18n } from "@/i18n"; + +import { preloadClaims } from "../../../app/api/claims"; +import ClaimSearch from "../../../components/ClaimSearch"; +import ProductionProcess from "../../../components/ProductionProcess"; +import { getServerI18n } from "../../../i18n"; + import Add from "@mui/icons-material/Add"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; diff --git a/src/app/(main)/projects/create/page.tsx b/src/app/(main)/projects/create/page.tsx index 60ab586..3af4630 100644 --- a/src/app/(main)/projects/create/page.tsx +++ b/src/app/(main)/projects/create/page.tsx @@ -1,5 +1,8 @@ -import CreateProject from "@/components/CreateProject"; -import { I18nProvider, getServerI18n } from "@/i18n"; +// import CreateProject from "@/components/CreateProject"; +// import { I18nProvider, getServerI18n } from "@/i18n"; +import CreateProject from "../../../../components/CreateProject"; +import { I18nProvider, getServerI18n } from "../../../../i18n"; + import Typography from "@mui/material/Typography"; import { Metadata } from "next"; diff --git a/src/app/(main)/projects/page.tsx b/src/app/(main)/projects/page.tsx index 1fe1800..7a7ba3a 100644 --- a/src/app/(main)/projects/page.tsx +++ b/src/app/(main)/projects/page.tsx @@ -1,6 +1,11 @@ -import { preloadProjects } from "@/app/api/projects"; -import ProjectSearch from "@/components/ProjectSearch"; -import { getServerI18n } from "@/i18n"; +// import { preloadProjects } from "@/app/api/projects"; +// import ProjectSearch from "@/components/ProjectSearch"; +// import { getServerI18n } from "@/i18n"; + +import { preloadProjects } from "../../../app/api/projects"; +import ProjectSearch from "../../../components/ProjectSearch"; +import { getServerI18n } from "../../../i18n"; + import Add from "@mui/icons-material/Add"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; diff --git a/src/app/(main)/scheduling/detail/edit/page.tsx b/src/app/(main)/scheduling/detail/edit/page.tsx index d596030..f27ba0f 100644 --- a/src/app/(main)/scheduling/detail/edit/page.tsx +++ b/src/app/(main)/scheduling/detail/edit/page.tsx @@ -1,12 +1,17 @@ import { Metadata } from "next"; -import { getServerI18n, I18nProvider } from "@/i18n"; +// import { getServerI18n, I18nProvider } from "@/i18n"; +import { getServerI18n, I18nProvider } from "../../../../../i18n"; import Typography from "@mui/material/Typography"; -import { fetchQcItemDetails, preloadQcItem } from "@/app/api/settings/qcItem"; -import QcItemSave from "@/components/QcItemSave"; +// import { fetchQcItemDetails, preloadQcItem } from "@/app/api/settings/qcItem"; +// import QcItemSave from "@/components/QcItemSave"; +import { fetchQcItemDetails, preloadQcItem } from "../../../../../app/api/settings/qcItem"; +import QcItemSave from "../../../../../components/QcItemSave"; import { isArray } from "lodash"; import { notFound } from "next/navigation"; -import { ServerFetchError } from "@/app/utils/fetchUtil"; -import DetailScheduleDetail from "@/components/DetailScheduleDetail"; +// import { ServerFetchError } from "@/app/utils/fetchUtil"; +// import DetailScheduleDetail from "@/components/DetailScheduleDetail"; +import { ServerFetchError } from "../../../../../app/utils/fetchUtil"; +import DetailScheduleDetail from "../../../../../components/DetailScheduleDetail"; export const metadata: Metadata = { title: "Qc Item", @@ -38,7 +43,7 @@ const DetailScheduling: React.FC = async ({ searchParams }) => { {t("FG Production Schedule")} - + ; diff --git a/src/app/(main)/scheduling/detail/page.tsx b/src/app/(main)/scheduling/detail/page.tsx index 3116e8a..e09bca2 100644 --- a/src/app/(main)/scheduling/detail/page.tsx +++ b/src/app/(main)/scheduling/detail/page.tsx @@ -1,6 +1,11 @@ -import { TypeEnum } from "@/app/utils/typeEnum"; -import DetailSchedule from "@/components/DetailSchedule"; -import { getServerI18n } from "@/i18n"; +// import { TypeEnum } from "@/app/utils/typeEnum"; +// import DetailSchedule from "@/components/DetailSchedule"; +// import { getServerI18n } from "@/i18n"; + +import { TypeEnum } from "../../../../app/utils/typeEnum"; +import DetailSchedule from "../../../../components/DetailSchedule"; +import { getServerI18n } from "../../../../i18n"; +import { I18nProvider } from "@/i18n"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; import { Metadata } from "next"; @@ -12,7 +17,7 @@ export const metadata: Metadata = { const DetailScheduling: React.FC = async () => { const project = TypeEnum.PRODUCT - const { t } = await getServerI18n(project); + const { t } = await getServerI18n("detailScheduling"); // preloadClaims(); return ( @@ -27,9 +32,11 @@ const DetailScheduling: React.FC = async () => { {t("Detail Scheduling")} - }> - - + + }> + + + ); }; diff --git a/src/app/(main)/scheduling/rough/edit/page.tsx b/src/app/(main)/scheduling/rough/edit/page.tsx index efaff8f..bf03ef9 100644 --- a/src/app/(main)/scheduling/rough/edit/page.tsx +++ b/src/app/(main)/scheduling/rough/edit/page.tsx @@ -39,7 +39,7 @@ const roughSchedulingDetail: React.FC = async () => { {t("Create product")} */} - + }> diff --git a/src/app/(main)/scheduling/rough/page.tsx b/src/app/(main)/scheduling/rough/page.tsx index dbefd57..7158396 100644 --- a/src/app/(main)/scheduling/rough/page.tsx +++ b/src/app/(main)/scheduling/rough/page.tsx @@ -1,6 +1,9 @@ -import { TypeEnum } from "@/app/utils/typeEnum"; -import RoughSchedule from "@/components/RoughSchedule"; -import { getServerI18n, I18nProvider } from "@/i18n"; +// import { TypeEnum } from "@/app/utils/typeEnum"; +// import RoughSchedule from "@/components/RoughSchedule"; +// import { getServerI18n, I18nProvider } from "@/i18n"; +import { TypeEnum } from "../../../../app/utils/typeEnum"; +import RoughSchedule from "../../../../components/RoughSchedule"; +import { getServerI18n, I18nProvider } from "../../../../i18n"; import Add from "@mui/icons-material/Add"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; @@ -29,6 +32,7 @@ const roughScheduling: React.FC = async () => { {t("Demand Forecast")} + {/* */} - + }> diff --git a/src/app/(main)/settings/user/edit/page.tsx b/src/app/(main)/settings/user/edit/page.tsx index b45dc04..e489f72 100644 --- a/src/app/(main)/settings/user/edit/page.tsx +++ b/src/app/(main)/settings/user/edit/page.tsx @@ -1,11 +1,16 @@ import { Edit } from "@mui/icons-material"; import { Metadata } from "next"; -import { I18nProvider, getServerI18n } from "@/i18n"; -import EditUser from "@/components/EditUser"; +// import { I18nProvider, getServerI18n } from "@/i18n"; +// import EditUser from "@/components/EditUser"; + +import { I18nProvider, getServerI18n } from "../../../../../i18n"; +import EditUser from "../../../../../components/EditUser"; import { Typography } from "@mui/material"; import { Suspense } from "react"; -import { preloadUser } from "@/app/api/user"; -import { searchParamsProps } from "@/app/utils/fetchUtil"; +// import { preloadUser } from "@/app/api/user"; +// import { searchParamsProps } from "@/app/utils/fetchUtil"; +import { preloadUser } from "../../../../../app/api/user"; +import { searchParamsProps } from "../../../../../app/utils/fetchUtil"; const User: React.FC = async ({ searchParams }) => { const { t } = await getServerI18n("user"); diff --git a/src/app/api/do/index.tsx b/src/app/api/do/index.tsx index 624558c..7834c3f 100644 --- a/src/app/api/do/index.tsx +++ b/src/app/api/do/index.tsx @@ -1,5 +1,7 @@ -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; import { cache } from "react"; export interface DoResult { diff --git a/src/app/api/mail/actions.ts b/src/app/api/mail/actions.ts index eb0460c..bd5cca4 100644 --- a/src/app/api/mail/actions.ts +++ b/src/app/api/mail/actions.ts @@ -1,7 +1,10 @@ "use server"; -import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson, serverFetchWithNoContent } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; + import { MailSetting, MailTemplate } from "."; export interface MailSave { diff --git a/src/app/api/mail/index.ts b/src/app/api/mail/index.ts index 97fc42e..91ff5e2 100644 --- a/src/app/api/mail/index.ts +++ b/src/app/api/mail/index.ts @@ -1,5 +1,8 @@ -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; + import { cache } from "react"; import "server-only"; diff --git a/src/app/api/pdf/actions.ts b/src/app/api/pdf/actions.ts index 6b2bb05..e57c03c 100644 --- a/src/app/api/pdf/actions.ts +++ b/src/app/api/pdf/actions.ts @@ -1,7 +1,9 @@ "use server"; -import { serverFetchBlob } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchBlob } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchBlob } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; export interface FileResponse { diff --git a/src/app/api/pickOrder/index.ts b/src/app/api/pickOrder/index.ts index 6958b98..a128fc5 100644 --- a/src/app/api/pickOrder/index.ts +++ b/src/app/api/pickOrder/index.ts @@ -1,6 +1,8 @@ import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; import { cache } from "react"; interface PickOrderItemInfo { diff --git a/src/app/api/po/actions.ts b/src/app/api/po/actions.ts index fbc48a6..d30135a 100644 --- a/src/app/api/po/actions.ts +++ b/src/app/api/po/actions.ts @@ -1,10 +1,12 @@ "use server"; -import { BASE_API_URL } from "@/config/api"; +// import { BASE_API_URL } from "@/config/api"; +import { BASE_API_URL } from "../../../config/api"; // import { ServerFetchError, serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; import { revalidateTag } from "next/cache"; import { cache } from "react"; import { PoResult, StockInLine } from "."; -import { serverFetchJson } from "@/app/utils/fetchUtil"; +//import { serverFetchJson } from "@/app/utils/fetchUtil"; +import { serverFetchJson } from "../../utils/fetchUtil"; import { QcItemResult } from "../settings/qcItem"; import { RecordsRes } from "../utils"; // import { BASE_API_URL } from "@/config/api"; diff --git a/src/app/api/po/index.ts b/src/app/api/po/index.ts index 6cb64fa..84ee091 100644 --- a/src/app/api/po/index.ts +++ b/src/app/api/po/index.ts @@ -1,7 +1,9 @@ import { cache } from "react"; import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; import { Uom } from "../settings/uom"; import { RecordsRes } from "../utils"; diff --git a/src/app/api/projects/actions.ts b/src/app/api/projects/actions.ts index ef39406..1e6c216 100644 --- a/src/app/api/projects/actions.ts +++ b/src/app/api/projects/actions.ts @@ -1,7 +1,9 @@ "use server"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; import { Task, TaskGroup } from "../tasks"; export interface CreateProjectInputs { diff --git a/src/app/api/qc/actions.ts b/src/app/api/qc/actions.ts index 08bb4c1..66fce32 100644 --- a/src/app/api/qc/actions.ts +++ b/src/app/api/qc/actions.ts @@ -1,8 +1,10 @@ "use server"; -import { BASE_API_URL } from "@/config/api"; +//import { BASE_API_URL } from "@/config/api"; +import { BASE_API_URL } from "../../../config/api"; import { revalidateTag } from "next/cache"; import { cache } from "react"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; +//import { serverFetchJson } from "@/app/utils/fetchUtil"; +import { serverFetchJson } from "../../utils/fetchUtil"; import { QcItemWithChecks } from "."; export interface QcResult { diff --git a/src/app/api/qc/index.ts b/src/app/api/qc/index.ts index fd20cfd..44bf8cb 100644 --- a/src/app/api/qc/index.ts +++ b/src/app/api/qc/index.ts @@ -1,7 +1,9 @@ import { cache } from "react"; import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; export interface QcItemWithChecks { id: number; diff --git a/src/app/api/qrcode/index.ts b/src/app/api/qrcode/index.ts index 04ce08f..5079cf9 100644 --- a/src/app/api/qrcode/index.ts +++ b/src/app/api/qrcode/index.ts @@ -1,7 +1,9 @@ import { cache } from "react"; import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; export interface QrCodeInfo { stockInLineId?: number; diff --git a/src/app/api/settings/item/index.ts b/src/app/api/settings/item/index.ts index 57caa39..b9893a5 100644 --- a/src/app/api/settings/item/index.ts +++ b/src/app/api/settings/item/index.ts @@ -1,7 +1,10 @@ import { cache } from "react"; import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../../config/api"; + // import { TypeInputs, UomInputs, WeightUnitInputs } from "./actions"; export type ItemQc = { diff --git a/src/app/api/settings/m18ImportTesting/actions.ts b/src/app/api/settings/m18ImportTesting/actions.ts index 97de637..27b6448 100644 --- a/src/app/api/settings/m18ImportTesting/actions.ts +++ b/src/app/api/settings/m18ImportTesting/actions.ts @@ -1,7 +1,9 @@ "use server"; -import { serverFetchWithNoContent } from '@/app/utils/fetchUtil'; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchWithNoContent } from '@/app/utils/fetchUtil'; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchWithNoContent } from "../../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../../config/api"; export interface M18ImportPoForm { modifiedDateFrom: string, diff --git a/src/app/api/settings/qcCheck/actions.ts b/src/app/api/settings/qcCheck/actions.ts index 98133ef..90aa38f 100644 --- a/src/app/api/settings/qcCheck/actions.ts +++ b/src/app/api/settings/qcCheck/actions.ts @@ -1,7 +1,9 @@ "use server"; -import { ServerFetchError, serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; +// import { ServerFetchError, serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; +import { serverFetchJson } from "../../../utils/fetchUtil"; import { revalidateTag } from "next/cache"; -import { BASE_API_URL } from "@/config/api"; +//import { BASE_API_URL } from "@/config/api"; +import { BASE_API_URL } from "../../../../config/api"; import { CreateItemResponse } from "../../utils"; import { ItemQc } from "../item"; diff --git a/src/app/api/settings/qcItem/actions.ts b/src/app/api/settings/qcItem/actions.ts index 1c63a19..63b1ce9 100644 --- a/src/app/api/settings/qcItem/actions.ts +++ b/src/app/api/settings/qcItem/actions.ts @@ -1,9 +1,13 @@ "use server" -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../../config/api"; + import { revalidatePath, revalidateTag } from "next/cache"; -import { QcItemResult } from '@/app/api/settings/qcItem'; +//import { QcItemResult } from '@/app/api/settings/qcItem'; +import { QcItemResult } from '../../../api/settings/qcItem'; export interface SaveQcItemInputs { id?: number; diff --git a/src/app/api/settings/qcItem/index.ts b/src/app/api/settings/qcItem/index.ts index 75f2277..d6e0783 100644 --- a/src/app/api/settings/qcItem/index.ts +++ b/src/app/api/settings/qcItem/index.ts @@ -1,5 +1,8 @@ -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../../config/api"; + import { cache } from "react"; import "server-only"; import { SaveQcItemInputs } from "./actions"; diff --git a/src/app/api/settings/uom/index.ts b/src/app/api/settings/uom/index.ts index 685b012..7f6e81c 100644 --- a/src/app/api/settings/uom/index.ts +++ b/src/app/api/settings/uom/index.ts @@ -1,7 +1,9 @@ import { cache } from "react"; import "server-only"; -import { serverFetchJson } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson } from "../../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../../config/api"; export interface Uom { id: number diff --git a/src/app/api/user/actions.ts b/src/app/api/user/actions.ts index 759bef5..9562e53 100644 --- a/src/app/api/user/actions.ts +++ b/src/app/api/user/actions.ts @@ -1,7 +1,9 @@ "use server"; -import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; -import { BASE_API_URL } from "@/config/api"; +// import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; +// import { BASE_API_URL } from "@/config/api"; +import { serverFetchJson, serverFetchWithNoContent } from "../../utils/fetchUtil"; +import { BASE_API_URL } from "../../../config/api"; import { revalidateTag } from "next/cache"; import { UserDetail, UserResult } from "."; import { cache } from "react"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 222a275..dde610b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,8 @@ import type { Metadata } from "next"; -import { detectLanguage } from "@/i18n"; -import ThemeRegistry from "@/theme/ThemeRegistry"; +// import { detectLanguage } from "@/i18n"; +// import ThemeRegistry from "@/theme/ThemeRegistry"; +import { detectLanguage } from "../i18n"; +import ThemeRegistry from "../theme/ThemeRegistry"; export const metadata: Metadata = { title: "FPSMS", diff --git a/src/components/CreateClaim/ClaimInputGrid.tsx b/src/components/CreateClaim/ClaimInputGrid.tsx index 1231001..7ea37fb 100644 --- a/src/components/CreateClaim/ClaimInputGrid.tsx +++ b/src/components/CreateClaim/ClaimInputGrid.tsx @@ -260,7 +260,7 @@ const ClaimInputGrid: React.FC = ({ ...props }) => { { field: "actions", type: "actions", - headerName: "Actions", + headerName: t("Actions"), width: 100, cellClassName: "actions", getActions: ({ id }) => { diff --git a/src/components/CreateItem/CreateItem.tsx b/src/components/CreateItem/CreateItem.tsx index ff8d1ea..9525dda 100644 --- a/src/components/CreateItem/CreateItem.tsx +++ b/src/components/CreateItem/CreateItem.tsx @@ -43,7 +43,7 @@ const CreateItem: React.FC = ({ console.log(params.get("id")) const [serverError, setServerError] = useState(""); const [tabIndex, setTabIndex] = useState(0); - const { t } = useTranslation(); + const { t } = useTranslation("items"); const router = useRouter(); const title = "Product / Material" const [mode, redirPath] = useMemo(() => { diff --git a/src/components/CreateItem/QcDetails.tsx b/src/components/CreateItem/QcDetails.tsx index 533b6bb..d932ea4 100644 --- a/src/components/CreateItem/QcDetails.tsx +++ b/src/components/CreateItem/QcDetails.tsx @@ -33,7 +33,7 @@ const QcDetails: React.FC = ({ apiRef }) => { const { t, i18n: { language }, - } = useTranslation(); + } = useTranslation("items"); const { register, @@ -51,32 +51,32 @@ const QcDetails: React.FC = ({ apiRef }) => { const qcColumns = useMemo( () => [ { - field: "name", - headerName: "name", + field:"name", + headerName: t("name"), flex: 1, // editable: true, }, { field: "code", - headerName: "code", + headerName: t("code"), flex: 1, // editable: true, }, { field: "description", - headerName: "Description", + headerName: t("description"), flex: 1, // editable: true, }, { field: "instruction", - headerName: "Instruction", + headerName: t("instruction"), flex: 1, editable: true, }, { field: "lowerLimit", - headerName: "lowerLimit", + headerName: t("lowerLimit"), flex: 1, editable: true, type: "number", @@ -99,7 +99,7 @@ const QcDetails: React.FC = ({ apiRef }) => { }, { field: "upperLimit", - headerName: "upperLimit", + headerName: t("upperLimit"), flex: 1, editable: true, type: "number", diff --git a/src/components/DetailSchedule/DetailScheduleSearchView.tsx b/src/components/DetailSchedule/DetailScheduleSearchView.tsx index 9ab167b..a1d16c7 100644 --- a/src/components/DetailSchedule/DetailScheduleSearchView.tsx +++ b/src/components/DetailSchedule/DetailScheduleSearchView.tsx @@ -32,7 +32,8 @@ type SearchParamNames = keyof SearchQuery; const DSOverview: React.FC = ({ records }) => { const [filteredItems, setFilteredItems] = useState(records ?? []); - const { t } = useTranslation("items"); + const { t } = useTranslation("detailScheduling"); + const router = useRouter(); const [filterObj, setFilterObj] = useState({}); const [tempSelectedValue, setTempSelectedValue] = useState({}); @@ -91,7 +92,7 @@ const DSOverview: React.FC = ({ records }) => { }, { name: "scheduledPeriod", - label: "Demand Forecast Period", + label: t("Demand Forecast Period"), }, { name: "scheduledAt", diff --git a/src/components/DetailScheduleDetail/ViewByBomDetails.tsx b/src/components/DetailScheduleDetail/ViewByBomDetails.tsx index 05df248..2d9ae8a 100644 --- a/src/components/DetailScheduleDetail/ViewByBomDetails.tsx +++ b/src/components/DetailScheduleDetail/ViewByBomDetails.tsx @@ -319,7 +319,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, @@ -330,7 +330,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, @@ -468,23 +468,23 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', }, { field: "inStockQty", - label: "Available Qty", + label: t("Available Qty"), type: 'read-only', // editable: true, style: { @@ -499,7 +499,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "purchaseQty", - label: "Demand Qty", + label: t("Demand Qty"), type: 'read-only', style: { textAlign: "right", diff --git a/src/components/DetailScheduleDetail/ViewByFGDetails.tsx b/src/components/DetailScheduleDetail/ViewByFGDetails.tsx index e40cbd2..37c00e8 100644 --- a/src/components/DetailScheduleDetail/ViewByFGDetails.tsx +++ b/src/components/DetailScheduleDetail/ViewByFGDetails.tsx @@ -45,7 +45,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { const { t, i18n: { language }, - } = useTranslation(); + } = useTranslation("schedule"); const { formState: { errors, defaultValues, touchedFields }, @@ -475,24 +475,24 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "jobNo", - label: "Job No.", + label: t("Job No."), type: 'read-only', // editable: true, }, { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, @@ -513,7 +513,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { // }, { field: "productionQty", - label: "Demand Qty", + label: t("Demand Qty"), type: 'input', style: { textAlign: "right", @@ -527,7 +527,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "estimatedProductionTime", - label: "Estimated Production Time", + label: t("Estimated Production Time"), type: "read-only", style: { textAlign: "right", @@ -535,7 +535,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "priority", - label: "Production Priority", + label: t("Production Priority"), type: 'read-only', style: { textAlign: "right", @@ -550,24 +550,24 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, { field: "lastMonthAvgStock", - label: "Last Month Average Stock", + label: t("Last Month Average Stock"), type: 'read-only', style: { textAlign: "right", @@ -582,7 +582,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "safetyStock", - label: "Safety Stock", + label: t("Safety Stock"), type: 'read-only', style: { textAlign: "right", @@ -597,7 +597,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "inStockQty", - label: "Available Qty", + label: t("Available Qty"), type: 'read-only', style: { textAlign: "right", @@ -612,7 +612,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "productionQty", - label: "Demand Qty (7 Days)", + label: t("Demand Qty (7 Days)"), type: 'read-only', style: { textAlign: "right", diff --git a/src/components/DoSearch/DoSearch.tsx b/src/components/DoSearch/DoSearch.tsx index db94c5b..3b2a802 100644 --- a/src/components/DoSearch/DoSearch.tsx +++ b/src/components/DoSearch/DoSearch.tsx @@ -150,7 +150,7 @@ const DoSearch: React.FC = ({ dos }) => { // }, { field: "code", - headerName: "code", + headerName: t("code"), flex: 1, }, { diff --git a/src/components/EditUser/UserDetail.tsx b/src/components/EditUser/UserDetail.tsx index df1581a..42719e5 100644 --- a/src/components/EditUser/UserDetail.tsx +++ b/src/components/EditUser/UserDetail.tsx @@ -16,7 +16,7 @@ import { useTranslation } from "react-i18next"; const UserDetail: React.FC = () => { - const { t } = useTranslation(); + const { t } = useTranslation("user"); const { register, formState: { errors }, diff --git a/src/components/M18ImportTesting/M18ImportPo.tsx b/src/components/M18ImportTesting/M18ImportPo.tsx index 77303a6..5223300 100644 --- a/src/components/M18ImportTesting/M18ImportPo.tsx +++ b/src/components/M18ImportTesting/M18ImportPo.tsx @@ -16,7 +16,7 @@ interface Props { const M18ImportPo: React.FC = ({ }) => { - const { t } = useTranslation() + const { t } = useTranslation("settings") const [isLoading, setIsLoading] = useState(false) const { control, diff --git a/src/components/NavigationContent/NavigationContent.tsx b/src/components/NavigationContent/NavigationContent.tsx index 2c34365..7c2476a 100644 --- a/src/components/NavigationContent/NavigationContent.tsx +++ b/src/components/NavigationContent/NavigationContent.tsx @@ -36,7 +36,7 @@ const NavigationContent: React.FC = () => { const navigationItems: NavigationItem[] = [ { icon: , - label: "Dashboard", + label: ("Dashboard"), path: "/dashboard", }, { diff --git a/src/components/PickOrderSearch/PickOrderSearch.tsx b/src/components/PickOrderSearch/PickOrderSearch.tsx index eb22d9b..747fbb1 100644 --- a/src/components/PickOrderSearch/PickOrderSearch.tsx +++ b/src/components/PickOrderSearch/PickOrderSearch.tsx @@ -10,7 +10,7 @@ import { arrayToDateString, arrayToDayjs, dateStringToDayjs } from "@/app/utils/ import dayjs from "dayjs"; import { Button, Grid, Stack, Tab, Tabs, TabsProps } from "@mui/material"; import PickOrders from "./PickOrders"; - +import { getServerI18n } from "@/i18n"; interface Props { pickOrders: PickOrderResult[]; } @@ -25,7 +25,7 @@ type SearchParamNames = keyof SearchQuery; const PickOrderSearch: React.FC = ({ pickOrders, }) => { - const { t } = useTranslation("pickOrders"); + const { t } = useTranslation("pickOrder"); const [filteredPickOrders, setFilteredPickOrders] = useState(pickOrders) diff --git a/src/components/RoughSchedule/RoughSchedileSearchView.tsx b/src/components/RoughSchedule/RoughSchedileSearchView.tsx index 1692a85..aa4096b 100644 --- a/src/components/RoughSchedule/RoughSchedileSearchView.tsx +++ b/src/components/RoughSchedule/RoughSchedileSearchView.tsx @@ -89,7 +89,7 @@ const RSOverview: React.FC = ({ records }) => { }, { name: "scheduledPeriod", - label: "Demand Forecast Period", + label: t("Demand Forecast Period"), }, { name: "scheduledAt", diff --git a/src/components/RoughScheduleDetail/RoughScheudleDetailView.tsx b/src/components/RoughScheduleDetail/RoughScheudleDetailView.tsx index e7862f0..4760a7a 100644 --- a/src/components/RoughScheduleDetail/RoughScheudleDetailView.tsx +++ b/src/components/RoughScheduleDetail/RoughScheudleDetailView.tsx @@ -173,8 +173,8 @@ const RoughScheduleDetailView: React.FC = ({ - - + + {serverError && ( diff --git a/src/components/RoughScheduleDetail/ViewByBomDetails.tsx b/src/components/RoughScheduleDetail/ViewByBomDetails.tsx index 05df248..fa3866d 100644 --- a/src/components/RoughScheduleDetail/ViewByBomDetails.tsx +++ b/src/components/RoughScheduleDetail/ViewByBomDetails.tsx @@ -57,11 +57,8 @@ export type FGOverallRecord = { } const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { - const { - t, - i18n: { language }, - } = useTranslation("schedule"); - + const {t,i18n: { language },} = useTranslation("schedule"); + console.log("lang:", i18n.language, "t(code):", t("code")); const { formState: { errors, defaultValues, touchedFields }, } = useFormContext(); @@ -319,7 +316,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, @@ -330,7 +327,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, @@ -461,30 +458,30 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { } }, ], - [] + [t] ); const columns = useMemo[]>( () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', }, { field: "inStockQty", - label: "Available Qty", + label: t("Available Qty"), type: 'read-only', // editable: true, style: { @@ -499,7 +496,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "purchaseQty", - label: "Demand Qty", + label: t("Demand Qty"), type: 'read-only', style: { textAlign: "right", @@ -512,7 +509,7 @@ const ViewByBomDetails: React.FC = ({ apiRef, isEdit }) => { } }, ], - [] + [t] ); return ( diff --git a/src/components/RoughScheduleDetail/ViewByFGDetails.tsx b/src/components/RoughScheduleDetail/ViewByFGDetails.tsx index a692f2b..e04434f 100644 --- a/src/components/RoughScheduleDetail/ViewByFGDetails.tsx +++ b/src/components/RoughScheduleDetail/ViewByFGDetails.tsx @@ -45,7 +45,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { const { t, i18n: { language }, - } = useTranslation(); + } = useTranslation("schedule"); const { formState: { errors, defaultValues, touchedFields }, @@ -447,24 +447,24 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, { field: "inStockQty", - label: "Available Qty", + label: t("Available Qty"), type: 'read-only', style: { textAlign: "right", @@ -479,7 +479,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "productionQty", - label: "Demand Qty", + label: t("Demand Qty"), type: 'input', style: { textAlign: "right", @@ -499,24 +499,24 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { () => [ { field: "code", - label: "code", + label: t("code"), type: 'read-only', // editable: true, }, { field: "name", - label: "name", + label: t("name"), type: 'read-only', }, { field: "type", - label: "type", + label: t("type"), type: 'read-only', // editable: true, }, { field: "lastMonthAvgStock", - label: "Last Month Average Stock", + label: t("Last Month Average Stock"), type: 'read-only', style: { textAlign: "right", @@ -531,7 +531,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "safetyStock", - label: "Safety Stock", + label: t("Safety Stock"), type: 'read-only', style: { textAlign: "right", @@ -546,7 +546,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "inStockQty", - label: "Available Qty", + label: t("Available Qty"), type: 'read-only', style: { textAlign: "right", @@ -561,7 +561,7 @@ const ViewByFGDetails: React.FC = ({ apiRef, isEdit }) => { }, { field: "productionQty", - label: "Demand Qty (7 Days)", + label: t("Demand Qty (7 Days)"), type: 'read-only', style: { textAlign: "right", diff --git a/src/components/RoughScheduleSetting/RoughScheduleSetting.tsx b/src/components/RoughScheduleSetting/RoughScheduleSetting.tsx index cc7f881..e078ee4 100644 --- a/src/components/RoughScheduleSetting/RoughScheduleSetting.tsx +++ b/src/components/RoughScheduleSetting/RoughScheduleSetting.tsx @@ -23,7 +23,7 @@ type SearchParamNames = keyof SearchQuery; const RSSOverview: React.FC = ({ items }) => { const [filteredItems, setFilteredItems] = useState(items ?? []); - const { t } = useTranslation("items"); + const { t } = useTranslation(); const router = useRouter(); const [filterObj, setFilterObj] = useState({}); const [tempSelectedValue, setTempSelectedValue] = useState({}); @@ -51,13 +51,13 @@ const RSSOverview: React.FC = ({ items }) => { }; const dayOptions = [ - {label: "Mon", value: 1}, - {label: "Tue", value: 2}, - {label: "Wed", value: 3}, - {label: "Thu", value: 4}, - {label: "Fri", value: 5}, - {label: "Sat", value: 6}, - {label: "Sun", value: 7}, + {label: t("Mon"), value: 1}, + {label: t("Tue"), value: 2}, + {label: t("Wed"), value: 3}, + {label: t("Thu"), value: 4}, + {label: t("Fri"), value: 5}, + {label: t("Sat"), value: 6}, + {label: t("Sun"), value: 7}, ]; const searchCriteria: Criterion[] = useMemo( diff --git a/src/components/SearchResults/EditableSearchResults.tsx b/src/components/SearchResults/EditableSearchResults.tsx index 797f7a1..8e164f6 100644 --- a/src/components/SearchResults/EditableSearchResults.tsx +++ b/src/components/SearchResults/EditableSearchResults.tsx @@ -22,7 +22,7 @@ import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; import { decimalFormatter, integerFormatter } from "@/app/utils/formatUtil"; import PlayCircleOutlineIcon from '@mui/icons-material/PlayCircleOutline'; - +import { useTranslation } from "react-i18next"; export interface ResultWithId { id: string | number; } @@ -71,6 +71,7 @@ function EditableSearchResults({ const [rowsPerPage, setRowsPerPage] = useState(10); const [editingRowId, setEditingRowId] = useState(null); const [editedItems, setEditedItems] = useState(items); + const { t } = useTranslation("project"); console.log(items) useEffect(() => { setEditedItems(items) @@ -272,8 +273,8 @@ function EditableSearchResults({ - Release - {(isEditable || hasCollapse) && Actions} {/* Action Column Header */} + {t("Release")} + {(isEditable || hasCollapse) && {t("Actions")}} {/* Action Column Header */} {columns.map((column, idx) => ( {column.label} diff --git a/src/i18n/en/projects.json b/src/i18n/en/items.json similarity index 100% rename from src/i18n/en/projects.json rename to src/i18n/en/items.json diff --git a/src/i18n/en/project.json b/src/i18n/en/project.json new file mode 100644 index 0000000..45de18e --- /dev/null +++ b/src/i18n/en/project.json @@ -0,0 +1,6 @@ +{ + + "FG & Material Demand Forecast Detail": "FG & Material Demand Forecast Detail", + "Release": "Release", + "Actions": "Actions" +} \ No newline at end of file diff --git a/src/i18n/zh/common.json b/src/i18n/zh/common.json index c5cf640..3c9e332 100644 --- a/src/i18n/zh/common.json +++ b/src/i18n/zh/common.json @@ -5,9 +5,51 @@ "Reset": "重置", "Search": "搜尋", "Code": "編號", + "code": "編號", "Name": "名稱", "Type": "類型", "Add some entries!": "添加條目", "Add Record": "新增", - "Clean Record": "重置" -} \ No newline at end of file + "Clean Record": "重置", + "Dashboard": "儀表板", + "Raw Material": "原材料", + "Delivery": "交貨單", + "Scheduling": "排程", + "Settings": "設定", + "User": "用戶", + "User Group": "用戶群組", + "Items": "物料", + "Demand Forecast Setting": "需求預測設定", + "Equipment Type": "設備類型", + "Equipment": "設備", + "Warehouse": "倉庫", + "Supplier": "供應商", + "Purchase Order":"採購單", + "Demand Forecast":"需求預測", + "Purchase Order":"採購單", + "Pick Order":"挑選貨單", + "Deliver Order":"交貨單", + "Project":"專案", + "Product":"產品", + "Material":"材料", + "FG":"成品", + "FG & Material Demand Forecast Detail":"成品及材料需求預測詳情", + "View item In-out And inventory Ledger":"查看物料出入庫及庫存日誌", + "Delivery Order":"交貨單", + "Detail Scheduling":"詳細排程", + "Customer":"客戶", + "QC Check Item":"QC檢查項目", + "QC Category":"QC分類", + "QC Check Template":"QC檢查模板", + "Mail":"郵件", + "Import Testing":"匯入測試", + "Overview": "總覽", + "Projects": "專案", + "Create Project": "新增專案", + "Task Template": "任務範本", + "Create Task Template": "新增任務範本", + "Qc Item": "QC 項目", + "FG Production Schedule": "FG 生產排程", + "Inventory": "庫存", + "scheduling":"排程" +} diff --git a/src/i18n/zh/detailScheduling.json b/src/i18n/zh/detailScheduling.json new file mode 100644 index 0000000..a110f66 --- /dev/null +++ b/src/i18n/zh/detailScheduling.json @@ -0,0 +1,20 @@ +{ + "Detail Scheduling": "詳細排程", + "Search Criteria": "搜尋條件", + "Search": "搜尋", + "Reset": "重置", + "Search by Project Code or Project Name or Client Name or Project Category or Project Type or Project Status or Project Start Date or Project End Date": "搜尋專案編號、專案名稱、客戶名稱、專案類別、專案類型、專案狀態、專案開始日期、專案結束日期", + "Project Code": "專案編號", + "Project Name": "專案名稱", + "Client Name": "客戶名稱", + "Project Category": "專案類別", + "Project Type": "專案類型", + "Project Status": "專案狀態", + "Demand Forecast Period": "需求預測期", + "Scheduled At": "預定時間", + "Product Count(s)": "產品數量", + "Product Count": "產品數量", + "Schedule Period": "排程期間", + "Product": "產品", + "Details": "詳情" +} \ No newline at end of file diff --git a/src/i18n/zh/do.json b/src/i18n/zh/do.json new file mode 100644 index 0000000..6b28840 --- /dev/null +++ b/src/i18n/zh/do.json @@ -0,0 +1,15 @@ +{ + "Delivery Order": "交貨單", + "Shop Name": "店鋪名稱", + "Delivery Order No.": "交貨單編號", + "Delivery Order Date": "交貨單日期", + "Delivery Order Status": "交貨單狀態", + "Order Date": "訂單日期", + "Estimated Arrival": "預計到貨日期", + "Status": "狀態", + "Order Date From": "訂單日期從", + "Order Date To": "訂單日期到", + "Code": "編號", + "code": "編號", + "Create": "新增" +} \ No newline at end of file diff --git a/src/i18n/zh/items.json b/src/i18n/zh/items.json new file mode 100644 index 0000000..34d1c0a --- /dev/null +++ b/src/i18n/zh/items.json @@ -0,0 +1,35 @@ +{"Demand Forecast Period": "需求預測期", +"Scheduled At": "預定時間", +"Product Count(s)": "產品數量", +"Product Count": "產品數量", +"Schedule Period": "排程期間", +"Product": "產品", +"Details": "詳情", +"Product Details": "產品詳情", +"Edit Product / Material": "編輯產品 / 材料", +"Product / Material": "產品 / 材料", +"Product / Material Details": "產品 / 材料詳情", +"Qc items": "QC 項目", +"Name": "名稱", +"name": "名稱", +"description": "描述", +"Type": "類型", +"shelfLife": "保存期限", +"remarks": "備註", +"countryOfOrigin": "原產地", +"maxQty": "最大數量", +"Code": "編號", +"code": "編號", +"instruction": "說明", +"lowerLimit": "下限", +"upperLimit": "上限", +"no rows": "沒有資料", +"Save": "儲存", +"Confirm": "確認", +"Cancel": "取消", +"Finished Goods Name": "成品名稱", +"Reset": "重置", +"Search": "搜尋", +"Release": "發佈", +"Actions": "動作" +} \ No newline at end of file diff --git a/src/i18n/zh/pickOrder.json b/src/i18n/zh/pickOrder.json new file mode 100644 index 0000000..d22b7c3 --- /dev/null +++ b/src/i18n/zh/pickOrder.json @@ -0,0 +1,111 @@ +{ + "Purchase Order": "採購訂單", + "Code": "編號", + "OrderDate": "下單日期", + "Details": "詳情", + "Supplier": "供應商", + "Status": "狀態", + "Escalated": "已上報", + "NotEscalated": "無上報", + + "Do you want to start?": "確定開始嗎?", + "Start": "開始", + "Start Success": "開始成功", + "Start Fail": "開始失敗", + "Start PO": "開始採購訂單", + "Do you want to complete?": "確定完成嗎?", + "Complete": "完成", + "Complete Success": "完成成功", + "Complete Fail": "完成失敗", + "Complete PO": "完成採購訂單", + "General": "一般", + "Bind Storage": "綁定倉位", + "itemNo": "項目編號", + "itemName": "項目名稱", + "qty": "數量", + "uom": "計量單位", + "total weight": "總重量", + "weight unit": "重量單位", + "price": "價格", + "processed": "已入倉", + "expiryDate": "到期日", + "acceptedQty": "接受數量", + "weight": "重量", + "status": "狀態", + "start": "開始", + "qc": "質量控制", + "escalation": "上報", + "stock in": "入庫", + "putaway": "上架", + "delete": "刪除", + "qty cannot be greater than remaining qty": "數量不能大於剩餘數量", + "Record pol": "記錄採購訂單", + "Add some entries!": "添加條目!", + "draft": "草稿", + "pending": "待處理", + "determine1": "上報1", + "determine2": "上報2", + "determine3": "上報3", + "receiving": "收貨中", + "received": "已收貨", + "completed": "已完成", + "rejected": "已拒絕", + + "acceptedQty must not greater than": "接受數量不得大於", + "minimal value is 1": "最小值為1", + "value must be a number": "值必須是數字", + "qc Check": "質量控制檢查", + "Please select QC": "請選擇質量控制", + "failQty": "失敗數量", + "select qc": "選擇質量控制", + "enter a failQty": "請輸入失敗數量", + "qty too big": "數量過大", + "sampleRate": "抽樣率", + "sampleWeight": "樣本重量", + "totalWeight": "總重量", + + "Escalation": "上報", + "to be processed": "待處理", + + "Stock In Detail": "入庫詳情", + "productLotNo": "產品批號", + "receiptDate": "收貨日期", + "acceptedWeight": "接受重量", + "productionDate": "生產日期", + + "reportQty": "上報數量", + + "Default Warehouse": "預設倉庫", + "Select warehouse": "選擇倉庫", + "Putaway Detail": "上架詳情", + "LotNo": "批號", + "Po Code": "採購訂單編號", + "No Warehouse": "沒有倉庫", + "Please scan warehouse qr code.": "請掃描倉庫 QR 碼。", + + "Reject": "拒絕", + "submit": "提交", + "print": "列印", + "bind": "綁定", + + + + "Pick Order": "挑選貨單", + "Type": "類型", + "Reset": "重置", + "Search": "搜尋", + "Pick Orders": "挑選貨單", + "Consolidated Pick Orders": "合併挑選貨單", + "Pick Order No.": "挑選貨單編號", + "Pick Order Date": "挑選貨單日期", + "Pick Order Status": "挑選貨單狀態", + "Pick Order Type": "挑選貨單類型", + "Consolidated Code": "合併編號", + "type": "類型", + "Items": "項目", + "Target Date": "目標日期", + "Released By": "發佈者", + "Target Date From": "目標日期從", + "Target Date To": "目標日期到", + "Consolidate": "合併" +} \ No newline at end of file diff --git a/src/i18n/zh/project.json b/src/i18n/zh/project.json new file mode 100644 index 0000000..4555647 --- /dev/null +++ b/src/i18n/zh/project.json @@ -0,0 +1,8 @@ +{ + "code": "編號", + "FG & Material Demand Forecast Detail": "FG 及材料需求預測詳情", + "Release": "發佈", + "Actions": "動作", + "Product": "產品", + "Details": "詳情" +} \ No newline at end of file diff --git a/src/i18n/zh/projects.json b/src/i18n/zh/projects.json deleted file mode 100644 index 9e26dfe..0000000 --- a/src/i18n/zh/projects.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/zh/purchaseOrder.json b/src/i18n/zh/purchaseOrder.json index 9178773..903132c 100644 --- a/src/i18n/zh/purchaseOrder.json +++ b/src/i18n/zh/purchaseOrder.json @@ -87,4 +87,6 @@ "submit": "提交", "print": "列印", "bind": "綁定" + + } \ No newline at end of file diff --git a/src/i18n/zh/schedule.json b/src/i18n/zh/schedule.json index 75a38bf..3f089dd 100644 --- a/src/i18n/zh/schedule.json +++ b/src/i18n/zh/schedule.json @@ -1,10 +1,78 @@ -{ - "Total Demand Qty": "Total Demand Qty", - "Demand Qty (Day1)": "Demand Qty (Day1)", - "Demand Qty (Day2)": "Demand Qty (Day2)", - "Demand Qty (Day3)": "Demand Qty (Day3)", - "Demand Qty (Day4)": "Demand Qty (Day4)", - "Demand Qty (Day5)": "Demand Qty (Day5)", - "Demand Qty (Day6)": "Demand Qty (Day6)", - "Demand Qty (Day7)": "Demand Qty (Day7)" -} \ No newline at end of file +{ "Demand Forecast": "需求預測", + "Total Demand Qty": "總需求量", + "Demand Qty (Day1)": "需求數量(第 1 天)", + "Demand Qty (Day2)": "需求數量(第 2 天)", + "Demand Qty (Day3)": "需求數量(第 3 天)", + "Demand Qty (Day4)": "需求數量(第 4 天)", + "Demand Qty (Day5)": "需求數量(第 5 天)", + "Demand Qty (Day6)": "需求數量(第 6 天)", + "Demand Qty (Day7)": "需求數量(第 7 天)", + "Demand Forecast Detail": "需求預測詳情", + "Details": "詳情", + "Schedule": "排程", + "Schedule Period": "排程期間", + "Schedule Detail": "排程詳情", + "Schedule At": "排程時間", + "Search": "搜尋", + "Reset": "重置", + "name": "名稱", + "type": "類型", + "code": "編號", + "Product Count": "產品數量", + "Scheduled At": "排程時間", + "Demand Forecast Period": "需求預測期間", + "FG & Material Demand Forecast Detail": "FG 及材料需求預測詳情", + "FG & Material Demand Forecast": "FG 及材料需求預測", + "Total Estimated Demand Qty": "總預估需求量", + "View By FG": "依 FG 分類", + "View By Material": "依材料分類", + " (Selected)": " (已選擇)", + "Total FG Item": "總 FG 項目", + "Release": "發佈", + "Actions": "動作", + "FG Demand List (7 Days)": "FG 需求列表(7 天)", + "FG Demand Date": "FG 需求日期", + "FG Demand Qty": "FG 需求數量", + "Material Demand Date": "材料需求日期", + "Material Demand List": "材料需求列表", + "Available Qty": "可用數量", + "Demand Qty": "需求數量", + "Confirm": "確認", + "Cancel": "取消", + "Edit": "編輯", + "Delete": "刪除", + "Save": "儲存", + "Close": "關閉", + "Add": "新增", + "Selected": "已選擇", + "Unselected": "未選擇", + "status": "狀態", + "Material Demand List (7 Days)": "材料需求列表(7 天)", + "Mon": "週一", + "Tue": "週二", + "Wed": "週三", + "Thu": "週四", + "Fri": "週五", + "Sat": "週六", + "Sun": "週日", + "Last Month Average Stock": "上個月平均庫存", + "Safety Stock": "安全庫存", + "Demand Qty (7 Days)": "需求數量(7 天)", + "Estimated Production Time": "預估生產時間", + "Production Priority": "生產優先順序", + "View BoM": "查看 BoM", + "Date": "日期", + "Detail Scheduling": "詳細排程", + "FG Production Schedule": "FG 生產排程", + "Production Date": "生產日期", + "Total Job Order": "總工單數量", + "Total Production Qty": "總生產數量", + "Job No.": "工單編號", + "Job Name": "工單名稱", + "Job Type": "工單類型", + "Job Status": "工單狀態", + "Job Priority": "工單優先順序", + "Job Date": "工單日期", + "Job Qty": "工單數量" + +} diff --git a/src/i18n/zh/settings.json b/src/i18n/zh/settings.json new file mode 100644 index 0000000..febef27 --- /dev/null +++ b/src/i18n/zh/settings.json @@ -0,0 +1,14 @@ +{ + "Demand Forecast Setting": "需求預測設定", + "QC Check Template": "QC 檢查模板", + "QC Check Template Details": "QC 檢查模板詳情", + "QC Check Template Name": "QC 檢查模板名稱", + "QC Check Template Description": "QC 檢查模板描述", + "QC Check Template Status": "QC 檢查模板狀態", + "QC Check Template Created At": "QC 檢查模板建立時間", + "QC Check Template Updated At": "QC 檢查模板更新時間", + "Ready to import": "準備匯入", + "Import Po": "匯入PO", + "Import Master Data": "匯入主資料" + +} \ No newline at end of file diff --git a/src/i18n/zh/translation.json b/src/i18n/zh/translation.json new file mode 100644 index 0000000..b2b46f8 --- /dev/null +++ b/src/i18n/zh/translation.json @@ -0,0 +1,4 @@ +{ + "Release": "發佈", + "Actions": "動作" +} \ No newline at end of file diff --git a/src/i18n/zh/user.json b/src/i18n/zh/user.json index 2548c90..c7ff70d 100644 --- a/src/i18n/zh/user.json +++ b/src/i18n/zh/user.json @@ -5,6 +5,7 @@ "Authority Pool": "權限池", "Allocated Authority": "已分配權限", "username": "用戶名稱", + "Username": "用戶名稱", "password": "密碼", "Confirm Password": "確認密碼", "Reset": "重置", @@ -14,5 +15,12 @@ "User ID": "用戶ID", "User Name": "用戶名稱", "User Group": "用戶群組", - "Authority": "權限" + "Authority": "權限", + "Edit": "編輯", + "Delete": "刪除", + "Add": "新增", + "authority": "權限", + "description": "描述", + "Search by Authority or description or position.": "搜尋權限、描述或職位。", + "Remove": "移除" } \ No newline at end of file diff --git a/src/middleware.ts b/src/middleware.ts index 4a01e15..c7a6f42 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,5 +1,6 @@ import { NextRequestWithAuth, withAuth } from "next-auth/middleware"; -import { authOptions } from "@/config/authConfig"; +// import { authOptions } from "@/config/authConfig"; +import { authOptions } from "./config/authConfig"; import { NextFetchEvent, NextResponse } from "next/server"; import { PRIVATE_ROUTES } from "./routes";