| @@ -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", | |||
| @@ -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", | |||
| }; | |||
| @@ -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} | |||
| > | |||
| </Stack> | |||
| <Suspense fallback={<DoSearch.Loading />}> | |||
| <DoSearch /> | |||
| </Suspense> | |||
| <I18nProvider namespaces={["do", "common"]}> | |||
| <Suspense fallback={<DoSearch.Loading />}> | |||
| <DoSearch /> | |||
| </Suspense> | |||
| </I18nProvider> | |||
| </> | |||
| ) | |||
| } | |||
| @@ -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"; | |||
| @@ -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, | |||
| }: { | |||
| @@ -1,4 +1,3 @@ | |||
| import { SearchParams } from "@/app/utils/fetchUtil"; | |||
| import { getServerI18n } from "@/i18n"; | |||
| import Add from "@mui/icons-material/Add"; | |||
| @@ -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")} | |||
| </Typography> | |||
| </Stack> | |||
| <Suspense fallback={<PickOrderSearch.Loading />}> | |||
| <PickOrderSearch /> | |||
| </Suspense> | |||
| <I18nProvider namespaces={["pickOrder", "common"]}> | |||
| <Suspense fallback={<PickOrderSearch.Loading />}> | |||
| <PickOrderSearch /> | |||
| </Suspense> | |||
| </I18nProvider> | |||
| </> | |||
| ) | |||
| } | |||
| @@ -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"; | |||
| @@ -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"; | |||
| @@ -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"; | |||
| @@ -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"; | |||
| @@ -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"; | |||
| @@ -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<Props> = async ({ searchParams }) => { | |||
| <Typography variant="h4" marginInlineEnd={2}> | |||
| {t("FG Production Schedule")} | |||
| </Typography> | |||
| <I18nProvider namespaces={["schedule"]}> | |||
| <I18nProvider namespaces={["schedule", "common", "project"]}> | |||
| <DetailScheduleDetail id={id}/> | |||
| </I18nProvider> | |||
| </>; | |||
| @@ -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")} | |||
| </Typography> | |||
| </Stack> | |||
| <Suspense fallback={<DetailSchedule.Loading />}> | |||
| <DetailSchedule /> | |||
| </Suspense> | |||
| <I18nProvider namespaces={["detailScheduling", "items", "common","schedule"]}> | |||
| <Suspense fallback={<DetailSchedule.Loading />}> | |||
| <DetailSchedule /> | |||
| </Suspense> | |||
| </I18nProvider> | |||
| </> | |||
| ); | |||
| }; | |||
| @@ -39,7 +39,7 @@ const roughSchedulingDetail: React.FC = async () => { | |||
| {t("Create product")} | |||
| </Button> */} | |||
| </Stack> | |||
| <I18nProvider namespaces={["schedule"]}> | |||
| <I18nProvider namespaces={["schedule","project","common"]}> | |||
| <Suspense fallback={<RoughScheduleDetailView.Loading />}> | |||
| <RoughScheduleDetailView /> | |||
| </Suspense> | |||
| @@ -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 () => { | |||
| <Typography variant="h4" marginInlineEnd={2}> | |||
| {t("Demand Forecast")} | |||
| </Typography> | |||
| {/* <Button | |||
| variant="contained" | |||
| startIcon={<Add />} | |||
| @@ -38,7 +42,7 @@ const roughScheduling: React.FC = async () => { | |||
| {t("Create product")} | |||
| </Button> */} | |||
| </Stack> | |||
| <I18nProvider namespaces={["schedule"]}> | |||
| <I18nProvider namespaces={["schedule", "common","items","project"]}> | |||
| <Suspense fallback={<RoughSchedule.Loading />}> | |||
| <RoughSchedule /> | |||
| </Suspense> | |||
| @@ -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<searchParamsProps> = async ({ searchParams }) => { | |||
| const { t } = await getServerI18n("user"); | |||
| @@ -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 { | |||
| @@ -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 { | |||
| @@ -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"; | |||
| @@ -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 { | |||
| @@ -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 { | |||
| @@ -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"; | |||
| @@ -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"; | |||
| @@ -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 { | |||
| @@ -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 { | |||
| @@ -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; | |||
| @@ -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; | |||
| @@ -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 = { | |||
| @@ -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, | |||
| @@ -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"; | |||
| @@ -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; | |||
| @@ -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"; | |||
| @@ -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 | |||
| @@ -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"; | |||
| @@ -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", | |||
| @@ -260,7 +260,7 @@ const ClaimInputGrid: React.FC<ClaimInputGridProps> = ({ ...props }) => { | |||
| { | |||
| field: "actions", | |||
| type: "actions", | |||
| headerName: "Actions", | |||
| headerName: t("Actions"), | |||
| width: 100, | |||
| cellClassName: "actions", | |||
| getActions: ({ id }) => { | |||
| @@ -43,7 +43,7 @@ const CreateItem: React.FC<Props> = ({ | |||
| 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(() => { | |||
| @@ -33,7 +33,7 @@ const QcDetails: React.FC<Props> = ({ apiRef }) => { | |||
| const { | |||
| t, | |||
| i18n: { language }, | |||
| } = useTranslation(); | |||
| } = useTranslation("items"); | |||
| const { | |||
| register, | |||
| @@ -51,32 +51,32 @@ const QcDetails: React.FC<Props> = ({ apiRef }) => { | |||
| const qcColumns = useMemo<GridColDef[]>( | |||
| () => [ | |||
| { | |||
| 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<Props> = ({ apiRef }) => { | |||
| }, | |||
| { | |||
| field: "upperLimit", | |||
| headerName: "upperLimit", | |||
| headerName: t("upperLimit"), | |||
| flex: 1, | |||
| editable: true, | |||
| type: "number", | |||
| @@ -32,7 +32,8 @@ type SearchParamNames = keyof SearchQuery; | |||
| const DSOverview: React.FC<Props> = ({ records }) => { | |||
| const [filteredItems, setFilteredItems] = useState<RecordStructure[]>(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<Props> = ({ records }) => { | |||
| }, | |||
| { | |||
| name: "scheduledPeriod", | |||
| label: "Demand Forecast Period", | |||
| label: t("Demand Forecast Period"), | |||
| }, | |||
| { | |||
| name: "scheduledAt", | |||
| @@ -319,7 +319,7 @@ const ViewByBomDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| () => [ | |||
| { | |||
| field: "code", | |||
| label: "code", | |||
| label: t("code"), | |||
| type: 'read-only', | |||
| // editable: true, | |||
| }, | |||
| @@ -330,7 +330,7 @@ const ViewByBomDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "type", | |||
| label: "type", | |||
| label: t("type"), | |||
| type: 'read-only', | |||
| // editable: true, | |||
| }, | |||
| @@ -468,23 +468,23 @@ const ViewByBomDetails: React.FC<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "purchaseQty", | |||
| label: "Demand Qty", | |||
| label: t("Demand Qty"), | |||
| type: 'read-only', | |||
| style: { | |||
| textAlign: "right", | |||
| @@ -45,7 +45,7 @@ const ViewByFGDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| const { | |||
| t, | |||
| i18n: { language }, | |||
| } = useTranslation(); | |||
| } = useTranslation("schedule"); | |||
| const { | |||
| formState: { errors, defaultValues, touchedFields }, | |||
| @@ -475,24 +475,24 @@ const ViewByFGDetails: React.FC<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| // }, | |||
| { | |||
| field: "productionQty", | |||
| label: "Demand Qty", | |||
| label: t("Demand Qty"), | |||
| type: 'input', | |||
| style: { | |||
| textAlign: "right", | |||
| @@ -527,7 +527,7 @@ const ViewByFGDetails: React.FC<Props> = ({ 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<Props> = ({ 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<Props> = ({ 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<Props> = ({ 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<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "productionQty", | |||
| label: "Demand Qty (7 Days)", | |||
| label: t("Demand Qty (7 Days)"), | |||
| type: 'read-only', | |||
| style: { | |||
| textAlign: "right", | |||
| @@ -150,7 +150,7 @@ const DoSearch: React.FC<Props> = ({ dos }) => { | |||
| // }, | |||
| { | |||
| field: "code", | |||
| headerName: "code", | |||
| headerName: t("code"), | |||
| flex: 1, | |||
| }, | |||
| { | |||
| @@ -16,7 +16,7 @@ import { useTranslation } from "react-i18next"; | |||
| const UserDetail: React.FC = () => { | |||
| const { t } = useTranslation(); | |||
| const { t } = useTranslation("user"); | |||
| const { | |||
| register, | |||
| formState: { errors }, | |||
| @@ -16,7 +16,7 @@ interface Props { | |||
| const M18ImportPo: React.FC<Props> = ({ | |||
| }) => { | |||
| const { t } = useTranslation() | |||
| const { t } = useTranslation("settings") | |||
| const [isLoading, setIsLoading] = useState(false) | |||
| const { | |||
| control, | |||
| @@ -36,7 +36,7 @@ const NavigationContent: React.FC = () => { | |||
| const navigationItems: NavigationItem[] = [ | |||
| { | |||
| icon: <Dashboard />, | |||
| label: "Dashboard", | |||
| label: ("Dashboard"), | |||
| path: "/dashboard", | |||
| }, | |||
| { | |||
| @@ -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<Props> = ({ | |||
| pickOrders, | |||
| }) => { | |||
| const { t } = useTranslation("pickOrders"); | |||
| const { t } = useTranslation("pickOrder"); | |||
| const [filteredPickOrders, setFilteredPickOrders] = useState(pickOrders) | |||
| @@ -89,7 +89,7 @@ const RSOverview: React.FC<Props> = ({ records }) => { | |||
| }, | |||
| { | |||
| name: "scheduledPeriod", | |||
| label: "Demand Forecast Period", | |||
| label: t("Demand Forecast Period"), | |||
| }, | |||
| { | |||
| name: "scheduledAt", | |||
| @@ -173,8 +173,8 @@ const RoughScheduleDetailView: React.FC<Props> = ({ | |||
| <Tabs value={tabIndex} onChange={handleTabChange} variant="scrollable"> | |||
| <Tab label={t("View By FG") + (tabIndex === 0 ? " (Selected)" : "")} iconPosition="end"/> | |||
| <Tab label={t("View By Material") + (tabIndex === 1 ? " (Selected)" : "")} iconPosition="end" /> | |||
| <Tab label={t("View By FG") + (tabIndex === 0 ? t(" (Selected)") : "")} iconPosition="end"/> | |||
| <Tab label={t("View By Material") + (tabIndex === 1 ? t(" (Selected)") : "")} iconPosition="end" /> | |||
| </Tabs> | |||
| {serverError && ( | |||
| <Typography variant="body2" color="error" alignSelf="flex-end"> | |||
| @@ -57,11 +57,8 @@ export type FGOverallRecord = { | |||
| } | |||
| const ViewByBomDetails: React.FC<Props> = ({ 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<CreateItemInputs>(); | |||
| @@ -319,7 +316,7 @@ const ViewByBomDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| () => [ | |||
| { | |||
| field: "code", | |||
| label: "code", | |||
| label: t("code"), | |||
| type: 'read-only', | |||
| // editable: true, | |||
| }, | |||
| @@ -330,7 +327,7 @@ const ViewByBomDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "type", | |||
| label: "type", | |||
| label: t("type"), | |||
| type: 'read-only', | |||
| // editable: true, | |||
| }, | |||
| @@ -461,30 +458,30 @@ const ViewByBomDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| } | |||
| }, | |||
| ], | |||
| [] | |||
| [t] | |||
| ); | |||
| const columns = useMemo<Column<any>[]>( | |||
| () => [ | |||
| { | |||
| 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<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| } | |||
| }, | |||
| ], | |||
| [] | |||
| [t] | |||
| ); | |||
| return ( | |||
| @@ -45,7 +45,7 @@ const ViewByFGDetails: React.FC<Props> = ({ apiRef, isEdit }) => { | |||
| const { | |||
| t, | |||
| i18n: { language }, | |||
| } = useTranslation(); | |||
| } = useTranslation("schedule"); | |||
| const { | |||
| formState: { errors, defaultValues, touchedFields }, | |||
| @@ -447,24 +447,24 @@ const ViewByFGDetails: React.FC<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "productionQty", | |||
| label: "Demand Qty", | |||
| label: t("Demand Qty"), | |||
| type: 'input', | |||
| style: { | |||
| textAlign: "right", | |||
| @@ -499,24 +499,24 @@ const ViewByFGDetails: React.FC<Props> = ({ 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<Props> = ({ 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<Props> = ({ 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<Props> = ({ apiRef, isEdit }) => { | |||
| }, | |||
| { | |||
| field: "productionQty", | |||
| label: "Demand Qty (7 Days)", | |||
| label: t("Demand Qty (7 Days)"), | |||
| type: 'read-only', | |||
| style: { | |||
| textAlign: "right", | |||
| @@ -23,7 +23,7 @@ type SearchParamNames = keyof SearchQuery; | |||
| const RSSOverview: React.FC<Props> = ({ items }) => { | |||
| const [filteredItems, setFilteredItems] = useState<ItemsResult[]>(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<Props> = ({ 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<SearchParamNames>[] = useMemo( | |||
| @@ -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<T extends ResultWithId>({ | |||
| const [rowsPerPage, setRowsPerPage] = useState(10); | |||
| const [editingRowId, setEditingRowId] = useState<number | null>(null); | |||
| const [editedItems, setEditedItems] = useState<T[]>(items); | |||
| const { t } = useTranslation("project"); | |||
| console.log(items) | |||
| useEffect(() => { | |||
| setEditedItems(items) | |||
| @@ -272,8 +273,8 @@ function EditableSearchResults<T extends ResultWithId>({ | |||
| <Table stickyHeader> | |||
| <TableHead> | |||
| <TableRow> | |||
| <TableCell>Release</TableCell> | |||
| {(isEditable || hasCollapse) && <TableCell>Actions</TableCell>} {/* Action Column Header */} | |||
| <TableCell>{t("Release")}</TableCell> | |||
| {(isEditable || hasCollapse) && <TableCell>{t("Actions")}</TableCell>} {/* Action Column Header */} | |||
| {columns.map((column, idx) => ( | |||
| <TableCell style={column.style} key={`${column.field.toString()}${idx}`}> | |||
| {column.label} | |||
| @@ -0,0 +1,6 @@ | |||
| { | |||
| "FG & Material Demand Forecast Detail": "FG & Material Demand Forecast Detail", | |||
| "Release": "Release", | |||
| "Actions": "Actions" | |||
| } | |||
| @@ -5,9 +5,51 @@ | |||
| "Reset": "重置", | |||
| "Search": "搜尋", | |||
| "Code": "編號", | |||
| "code": "編號", | |||
| "Name": "名稱", | |||
| "Type": "類型", | |||
| "Add some entries!": "添加條目", | |||
| "Add Record": "新增", | |||
| "Clean Record": "重置" | |||
| } | |||
| "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":"排程" | |||
| } | |||
| @@ -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": "詳情" | |||
| } | |||
| @@ -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": "新增" | |||
| } | |||
| @@ -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": "動作" | |||
| } | |||
| @@ -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": "合併" | |||
| } | |||
| @@ -0,0 +1,8 @@ | |||
| { | |||
| "code": "編號", | |||
| "FG & Material Demand Forecast Detail": "FG 及材料需求預測詳情", | |||
| "Release": "發佈", | |||
| "Actions": "動作", | |||
| "Product": "產品", | |||
| "Details": "詳情" | |||
| } | |||
| @@ -1 +0,0 @@ | |||
| {} | |||
| @@ -87,4 +87,6 @@ | |||
| "submit": "提交", | |||
| "print": "列印", | |||
| "bind": "綁定" | |||
| } | |||
| @@ -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)" | |||
| } | |||
| { "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": "工單數量" | |||
| } | |||
| @@ -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": "匯入主資料" | |||
| } | |||
| @@ -0,0 +1,4 @@ | |||
| { | |||
| "Release": "發佈", | |||
| "Actions": "動作" | |||
| } | |||
| @@ -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": "移除" | |||
| } | |||
| @@ -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"; | |||