Removed mantine libraries; Removed mandatory authentication

This commit is contained in:
2025-09-22 09:38:21 +09:00
parent c8caec7351
commit 037c0b7cf1
18 changed files with 686 additions and 1069 deletions

630
client/package-lock.json generated
View File

@ -11,6 +11,7 @@
"-": "^0.0.1",
"@dnd-kit/core": "^6.3.1",
"@fluentui/react-components": "^9.69.0",
"@fluentui/react-datepicker-compat": "^0.6.14",
"@fluentui/react-icons": "^2.0.309",
"@fontsource/inter": "^5.0.19",
"@fontsource/open-sans": "^5.0.28",
@ -18,10 +19,6 @@
"@js-preview/docx": "^1.6.2",
"@js-preview/excel": "^1.7.8",
"@js-preview/pdf": "^2.0.2",
"@mantine/core": "^7.13.0",
"@mantine/dates": "^7.13.0",
"@mantine/dropzone": "^7.13.0",
"@mantine/nprogress": "^7.13.0",
"@tabler/icons-react": "^3.17.0",
"@tanstack/react-table": "^8.20.5",
"@types/ol-ext": "npm:@siedlerchr/types-ol-ext@^3.5.0",
@ -2456,32 +2453,6 @@
"@floating-ui/utils": "^0.2.10"
}
},
"node_modules/@floating-ui/react": {
"version": "0.26.24",
"resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz",
"integrity": "sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==",
"dependencies": {
"@floating-ui/react-dom": "^2.1.2",
"@floating-ui/utils": "^0.2.8",
"tabbable": "^6.0.0"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@floating-ui/react-dom": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
"integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
"dependencies": {
"@floating-ui/dom": "^1.0.0"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@floating-ui/utils": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
@ -2583,23 +2554,23 @@
}
},
"node_modules/@fluentui/react-aria": {
"version": "9.16.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.16.4.tgz",
"integrity": "sha512-ent+vc93+6EAeg26tnZMoRp8lIJtfFMbKFAa0WvZGbN5jU24NQUniJCdXcsfrmVCQ2hHophQDvUSwGhPkABURw==",
"version": "9.17.0",
"resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.17.0.tgz",
"integrity": "sha512-TkJJUSZl7967Gsf4s/W6tdZldm362LqBJPx2cpjokyZMarFfzzSz6U5i07KkWVZ7RtoPsscaaWDI8QEHhIvc6Q==",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
"@fluentui/react-jsx-runtime": "^9.1.6",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-tabster": "^9.26.4",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-tabster": "^9.26.5",
"@fluentui/react-utilities": "^9.24.1",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-avatar": {
@ -2725,6 +2696,29 @@
"react-dom": ">=16.14.0 <19.0.0"
}
},
"node_modules/@fluentui/react-calendar-compat": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@fluentui/react-calendar-compat/-/react-calendar-compat-0.3.9.tgz",
"integrity": "sha512-1yLwJjMynMJ0wGJkAd+TIfRmMSHnJSaBDyOttKgvQRHhgy4aD43CTM884x7K+IMCLQSh2Uebl6YNMjsqIq6o3A==",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-tabster": "^9.26.5",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.8.0 <20.0.0",
"@types/react-dom": ">=16.8.0 <20.0.0",
"react": ">=16.8.0 <20.0.0",
"react-dom": ">=16.8.0 <20.0.0"
}
},
"node_modules/@fluentui/react-card": {
"version": "9.4.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.4.5.tgz",
@ -3033,6 +3027,35 @@
"react-dom": ">=16.14.0 <19.0.0"
}
},
"node_modules/@fluentui/react-datepicker-compat": {
"version": "0.6.14",
"resolved": "https://registry.npmjs.org/@fluentui/react-datepicker-compat/-/react-datepicker-compat-0.6.14.tgz",
"integrity": "sha512-g1NxCuTyDKC08zmjOIqnNB2JEeXnKCOcYnTe7ztBs8q/f617IougO/xbpJ+D5MlFRXho6/EBrgFL5FlpB1LxPg==",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
"@fluentui/react-calendar-compat": "^0.3.9",
"@fluentui/react-field": "^9.4.5",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-input": "^9.7.5",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-popover": "^9.12.6",
"@fluentui/react-portal": "^9.8.2",
"@fluentui/react-positioning": "^9.20.5",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-tabster": "^9.26.5",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.8.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-dialog": {
"version": "9.15.0",
"resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.15.0.tgz",
@ -3133,42 +3156,42 @@
}
},
"node_modules/@fluentui/react-field": {
"version": "9.4.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.4.tgz",
"integrity": "sha512-JtW3faTdKIE/d/mum9ZDkiC6vyip7h5rLa7zhIQ/Eek0JR2vHZwta8BODxY0Mwvga/xTK9aC3fNo/FcXSoL3Rg==",
"version": "9.4.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.5.tgz",
"integrity": "sha512-yQi5iaRXMJmHrPhRO+vX3vYXG1vsmpkKG0e5JJ1p/MBiOAVROdIhzbipDIktg8fdJMJ1ZAteuhAugfZ8NWWMfA==",
"license": "MIT",
"dependencies": {
"@fluentui/react-context-selector": "^9.2.6",
"@fluentui/react-context-selector": "^9.2.7",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.1.6",
"@fluentui/react-label": "^9.3.4",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-label": "^9.3.5",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-field/node_modules/@fluentui/react-context-selector": {
"version": "9.2.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.6.tgz",
"integrity": "sha512-AskFoj248mH8USB/GfXRxj4PbVETVg+T1Xl+uVS6owYchVqkDDHW3oYnZdOTY/rMf1hxOUJhcC3GtXP0JRFdbg==",
"version": "9.2.7",
"resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.7.tgz",
"integrity": "sha512-wIxdd113xXz+rtCN6eBAWmc2S2sBVE3aWOdesbeFIVQqqMv/0XW3zh3AF8H9CsV++8w5MsmCccRB11wqwut8GQ==",
"license": "MIT",
"dependencies": {
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0",
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0",
"scheduler": ">=0.19.0 <=0.23.0"
}
},
@ -3263,59 +3286,59 @@
}
},
"node_modules/@fluentui/react-input": {
"version": "9.7.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.4.tgz",
"integrity": "sha512-ZNhM5xKckA39O3g6LjwoZCqy8kopFQ1ujfwxl0D60fEDMBwUYoK2NR1Zr/pEF9ItuhKlIN9fs1F/Hqay7fnYDw==",
"version": "9.7.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.5.tgz",
"integrity": "sha512-TFr9hNRNvrUWj6Ama9a556LVFWWOa4kjmU75HrJ2kwLee4cRbDrhOr9mH98v6P7d52meDtQjYDusaq83/WLflA==",
"license": "MIT",
"dependencies": {
"@fluentui/react-field": "^9.4.4",
"@fluentui/react-jsx-runtime": "^9.1.6",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-field": "^9.4.5",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-jsx-runtime": {
"version": "9.1.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.1.6.tgz",
"integrity": "sha512-ClaksavUB9CPRPuMKxtsjVCg+N95jMt3Oi5RBGY4dAMxwaERpweQPv5CCuZzOq4Ybp4FpAXwK1jGNZzXizvfaA==",
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.2.0.tgz",
"integrity": "sha512-2LI7vvkQqa0E69nODYC0HD37wgIRUb3szHnfWDJyz0XHiF+A0vYmv1W6ZD1+Uk3th4e6+M0gy3uH+ghtki5RtQ==",
"license": "MIT",
"dependencies": {
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@swc/helpers": "^0.5.1",
"react-is": "^17.0.2"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"react": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-label": {
"version": "9.3.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.4.tgz",
"integrity": "sha512-oBdN3J5qFuiS57eCk+rXEYg+zt/7Mgt7SqxQlJzkU8uzlj5J5B+IjITlADOEYjuG0QDzhNA4/et2AX8c8kA55Q==",
"version": "9.3.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.5.tgz",
"integrity": "sha512-9k+A/P0ftmYwYH7yej512osMLjTgQGq8Lt5pWyrhHXZEvAPTAhZ9BwtaM/RkikPG9EhbgQyTpPVMzRS4TTAKmw==",
"license": "MIT",
"dependencies": {
"@fluentui/react-jsx-runtime": "^9.1.6",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-link": {
@ -3628,45 +3651,45 @@
}
},
"node_modules/@fluentui/react-popover": {
"version": "9.12.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.12.5.tgz",
"integrity": "sha512-GzIkJoyzRmgz8UgVq2xhqii/trIAMLpLYbr3XrxukrkDg837OZKFcBbSbqTUSNVZ6ra4RrlGMaF4yhWHBTSs1A==",
"version": "9.12.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.12.6.tgz",
"integrity": "sha512-2VlHq+bE0Ep7CIKS9iBROyvwwH44swt51pi7pJvFaO5UL5I3Gny0dUglxBU+Y2O/0/Rl1HyqlU0AwYaldWVBew==",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
"@fluentui/react-aria": "^9.16.4",
"@fluentui/react-context-selector": "^9.2.6",
"@fluentui/react-jsx-runtime": "^9.1.6",
"@fluentui/react-portal": "^9.8.1",
"@fluentui/react-positioning": "^9.20.4",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-tabster": "^9.26.4",
"@fluentui/react-aria": "^9.17.0",
"@fluentui/react-context-selector": "^9.2.7",
"@fluentui/react-jsx-runtime": "^9.2.0",
"@fluentui/react-portal": "^9.8.2",
"@fluentui/react-positioning": "^9.20.5",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-tabster": "^9.26.5",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-popover/node_modules/@fluentui/react-context-selector": {
"version": "9.2.6",
"resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.6.tgz",
"integrity": "sha512-AskFoj248mH8USB/GfXRxj4PbVETVg+T1Xl+uVS6owYchVqkDDHW3oYnZdOTY/rMf1hxOUJhcC3GtXP0JRFdbg==",
"version": "9.2.7",
"resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.7.tgz",
"integrity": "sha512-wIxdd113xXz+rtCN6eBAWmc2S2sBVE3aWOdesbeFIVQqqMv/0XW3zh3AF8H9CsV++8w5MsmCccRB11wqwut8GQ==",
"license": "MIT",
"dependencies": {
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0",
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0",
"scheduler": ">=0.19.0 <=0.23.0"
}
},
@ -3681,44 +3704,44 @@
}
},
"node_modules/@fluentui/react-portal": {
"version": "9.8.1",
"resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.8.1.tgz",
"integrity": "sha512-PjcKGNpphryhHBtlObbBVNrsasPt6QCbTyLYfmUKR92+XQI0U92AV9fHS7sArXGP3HrXjzUDvf+rLnecRMQmcA==",
"version": "9.8.2",
"resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.8.2.tgz",
"integrity": "sha512-FOckq3BW9iaVci1KuseFgdKlsXUMZqMxronmDn/smPzgvnr+yhH3CLgwsL4lOJgdNxf4oBOmLDNzO0yoENQEyg==",
"license": "MIT",
"dependencies": {
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-tabster": "^9.26.4",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-tabster": "^9.26.5",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-positioning": {
"version": "9.20.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.20.4.tgz",
"integrity": "sha512-MyldPBLO+hX0+qI2kfRZRI1hdSihgDKqpdqkl6O25PVce2SaGvvDAK72GDNOyoAApnXlVOFIEAyLSWzxjTGDbw==",
"version": "9.20.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.20.5.tgz",
"integrity": "sha512-J0IgLF3QKIAQb/wFn0e7oYhgzLfVnB9XTE51Gw7pXytx9U/IdxuT7dXBodWGh4MFceUI0u7djOOHiqrnWjUV2A==",
"license": "MIT",
"dependencies": {
"@floating-ui/devtools": "^0.2.3",
"@floating-ui/dom": "^1.6.12",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1",
"use-sync-external-store": "^1.2.0"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-progress": {
@ -3855,17 +3878,17 @@
}
},
"node_modules/@fluentui/react-shared-contexts": {
"version": "9.25.0",
"resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.25.0.tgz",
"integrity": "sha512-uFWi93L5ZjZACx5VA4+gbWgg6l/on3ultJpXTyFYFuox0paJbqENsPf383GKZW7UnUs08Kqry5CFC36VfqDdSg==",
"version": "9.25.1",
"resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.25.1.tgz",
"integrity": "sha512-C15uX9dnIVe0cm2wa9WMd9KhG5pdbs9jxnzgpFvraCGpLqFHniK2xJghYBRzj66zEK6xJnuRZR89/Y8wsiO11w==",
"license": "MIT",
"dependencies": {
"@fluentui/react-theme": "^9.2.0",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"react": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-skeleton": {
@ -4135,24 +4158,24 @@
}
},
"node_modules/@fluentui/react-tabster": {
"version": "9.26.4",
"resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.26.4.tgz",
"integrity": "sha512-ri/h4MHdSdTPn40isPZw1tOnB4W+wLj0EtJWDdKc49vDX8NXTmULLBDodHDsqauVJpKMw3Jw69Ccuf09S+qhTA==",
"version": "9.26.5",
"resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.26.5.tgz",
"integrity": "sha512-VLt5KMRHzgT+pSF22tQuuZkaXFiQT6MOjVhoqPmBGKiXSIyVB3vnUOMQyITgDMhy4og/kk6gh04l5/6YXjJV9A==",
"license": "MIT",
"dependencies": {
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@fluentui/react-theme": "^9.2.0",
"@fluentui/react-utilities": "^9.24.0",
"@fluentui/react-utilities": "^9.24.1",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1",
"keyborg": "^2.6.0",
"tabster": "^8.5.5"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"@types/react-dom": ">=16.9.0 <19.0.0",
"react": ">=16.14.0 <19.0.0",
"react-dom": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"@types/react-dom": ">=16.9.0 <20.0.0",
"react": ">=16.14.0 <20.0.0",
"react-dom": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-tag-picker": {
@ -4504,18 +4527,18 @@
}
},
"node_modules/@fluentui/react-utilities": {
"version": "9.24.0",
"resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.24.0.tgz",
"integrity": "sha512-fIAEi62slg3YGe9nbUW4crD9KLx//eNWBVRuwEvhqJeqrbLL6dTWRAmRhmYOmzzySy+4gxHP7I/D7jl3BjeXpA==",
"version": "9.24.1",
"resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.24.1.tgz",
"integrity": "sha512-Ih0S+BrHiiGiG0faDncmipOQ2rz8jHaKXzSN4p5U5m7d/jcPMAZ45cHtaYGLTD0O32ur7/AusmQSLY6c/9WvnQ==",
"license": "MIT",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.8",
"@fluentui/react-shared-contexts": "^9.25.0",
"@fluentui/react-shared-contexts": "^9.25.1",
"@swc/helpers": "^0.5.1"
},
"peerDependencies": {
"@types/react": ">=16.14.0 <19.0.0",
"react": ">=16.14.0 <19.0.0"
"@types/react": ">=16.14.0 <20.0.0",
"react": ">=16.14.0 <20.0.0"
}
},
"node_modules/@fluentui/react-virtualizer": {
@ -4784,95 +4807,6 @@
"resolved": "https://registry.npmjs.org/@js-preview/pdf/-/pdf-2.0.2.tgz",
"integrity": "sha512-g7RsK4k97y+/XvsjZfltEotty+QpfeQGDBAbr9UB0npjVP+2gxRnIhNEPpYFr44XQ6ZNjAIs5nKFppGjJVFJMQ=="
},
"node_modules/@mantine/core": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.13.0.tgz",
"integrity": "sha512-aQpx3Q69ATDhVopBNkWS0sql93ZaPqeA5jTgqU7GxZvJdkpG87vbKYgp4cDV/gqr7BYu4kel0smeHYuPemiZ8Q==",
"dependencies": {
"@floating-ui/react": "^0.26.9",
"clsx": "^2.1.1",
"react-number-format": "^5.3.1",
"react-remove-scroll": "^2.5.7",
"react-textarea-autosize": "8.5.3",
"type-fest": "^4.12.0"
},
"peerDependencies": {
"@mantine/hooks": "7.13.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
},
"node_modules/@mantine/core/node_modules/type-fest": {
"version": "4.26.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz",
"integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@mantine/dates": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-7.13.0.tgz",
"integrity": "sha512-fCNS7JPCqnTtFJeGxdl2yFaMxyCP44BP2tYVZYC5KejvhfeA9u8AmtD5FsOnrdjMEnVc1DpLJobrwfmp98Ektg==",
"dependencies": {
"clsx": "^2.1.1"
},
"peerDependencies": {
"@mantine/core": "7.13.0",
"@mantine/hooks": "7.13.0",
"dayjs": ">=1.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
},
"node_modules/@mantine/dropzone": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-7.13.0.tgz",
"integrity": "sha512-NDpSJ6rEN8dJwI5/qImG+6lNH/bLmf3cz4cErMR/DXNMUZGGGVx8V81oJfKoXlQi3P+yy0d6UOPiqAz1wkdC8Q==",
"dependencies": {
"react-dropzone-esm": "15.0.1"
},
"peerDependencies": {
"@mantine/core": "7.13.0",
"@mantine/hooks": "7.13.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
},
"node_modules/@mantine/hooks": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.13.0.tgz",
"integrity": "sha512-oQpwSi0gajH3UR1DFa9MQ+zeYy75xbc8Im9jIIepLbiJXtIcPK+yll1BMxNwPQLYU1pYI6ZgUazI2PoykVNmsg==",
"peer": true,
"peerDependencies": {
"react": "^18.2.0"
}
},
"node_modules/@mantine/nprogress": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/nprogress/-/nprogress-7.13.0.tgz",
"integrity": "sha512-k9KE30vQtqy8xbpnKKdIRL2YBCJYGWZdNZ9B02hWRxJPvJyFoUtVGP5qukLKHpO82t1+XGwJd15Y26HYsqE5ww==",
"dependencies": {
"@mantine/store": "7.13.0"
},
"peerDependencies": {
"@mantine/core": "7.13.0",
"@mantine/hooks": "7.13.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
},
"node_modules/@mantine/store": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/@mantine/store/-/store-7.13.0.tgz",
"integrity": "sha512-ldYJGMcmqTxffQMCQZZWNtXKlG649S3BGM8ukeZ6FLZckVXLQAR2o+G5EkETNihh0sJKR7DVsYHltL5hyxYLkg==",
"peerDependencies": {
"react": "^18.2.0"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@ -6849,14 +6783,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"engines": {
"node": ">=6"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@ -7333,11 +7259,6 @@
"minimalistic-assert": "^1.0.0"
}
},
"node_modules/detect-node-es": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
"integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
},
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@ -8281,14 +8202,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-nonce": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
"integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
"engines": {
"node": ">=6"
}
},
"node_modules/get-own-enumerable-property-symbols": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
@ -8704,14 +8617,6 @@
"node": ">= 0.4"
}
},
"node_modules/invariant": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@ -10648,20 +10553,6 @@
"react": "^18.3.1"
}
},
"node_modules/react-dropzone-esm": {
"version": "15.0.1",
"resolved": "https://registry.npmjs.org/react-dropzone-esm/-/react-dropzone-esm-15.0.1.tgz",
"integrity": "sha512-RdeGpqwHnoV/IlDFpQji7t7pTtlC2O1i/Br0LWkRZ9hYtLyce814S71h5NolnCZXsIN5wrZId6+8eQj2EBnEzg==",
"dependencies": {
"prop-types": "^15.8.1"
},
"engines": {
"node": ">= 10.13"
},
"peerDependencies": {
"react": ">= 16.8 || 18.0.0"
}
},
"node_modules/react-hook-form": {
"version": "7.52.0",
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.0.tgz",
@ -10683,15 +10574,6 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"license": "MIT"
},
"node_modules/react-number-format": {
"version": "5.4.2",
"resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.2.tgz",
"integrity": "sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==",
"peerDependencies": {
"react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-redux": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
@ -10722,51 +10604,6 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/react-remove-scroll": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz",
"integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==",
"dependencies": {
"react-remove-scroll-bar": "^2.3.6",
"react-style-singleton": "^2.2.1",
"tslib": "^2.1.0",
"use-callback-ref": "^1.3.0",
"use-sidecar": "^1.1.2"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/react-remove-scroll-bar": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
"integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
"dependencies": {
"react-style-singleton": "^2.2.1",
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/react-router": {
"version": "6.23.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz",
@ -10797,44 +10634,6 @@
"react-dom": ">=16.8"
}
},
"node_modules/react-style-singleton": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
"integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
"dependencies": {
"get-nonce": "^1.0.0",
"invariant": "^2.2.4",
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/react-textarea-autosize": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz",
"integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==",
"dependencies": {
"@babel/runtime": "^7.20.13",
"use-composed-ref": "^1.3.0",
"use-latest": "^1.2.1"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
@ -12331,11 +12130,6 @@
"react": "^16.11.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/tabbable": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
"integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
},
"node_modules/tabster": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/tabster/-/tabster-8.5.6.tgz",
@ -12859,63 +12653,6 @@
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
"dev": true
},
"node_modules/use-callback-ref": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
"integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
"dependencies": {
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/use-composed-ref": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
"integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/use-isomorphic-layout-effect": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
"integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/use-latest": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
"integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
"dependencies": {
"use-isomorphic-layout-effect": "^1.1.1"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/use-memo-one": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
@ -12924,27 +12661,6 @@
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/use-sidecar": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
"integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
"dependencies": {
"detect-node-es": "^1.1.0",
"tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"peerDependencies": {
"@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/use-sync-external-store": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",

View File

@ -14,6 +14,7 @@
"-": "^0.0.1",
"@dnd-kit/core": "^6.3.1",
"@fluentui/react-components": "^9.69.0",
"@fluentui/react-datepicker-compat": "^0.6.14",
"@fluentui/react-icons": "^2.0.309",
"@fontsource/inter": "^5.0.19",
"@fontsource/open-sans": "^5.0.28",
@ -21,10 +22,6 @@
"@js-preview/docx": "^1.6.2",
"@js-preview/excel": "^1.7.8",
"@js-preview/pdf": "^2.0.2",
"@mantine/core": "^7.13.0",
"@mantine/dates": "^7.13.0",
"@mantine/dropzone": "^7.13.0",
"@mantine/nprogress": "^7.13.0",
"@tabler/icons-react": "^3.17.0",
"@tanstack/react-table": "^8.20.5",
"@types/ol-ext": "npm:@siedlerchr/types-ol-ext@^3.5.0",

View File

@ -1,17 +1,30 @@
import { BrowserRouter as Router, Route, Routes, Navigate } from "react-router-dom"
import { BrowserRouter as Router, Route, Routes } from "react-router-dom"
//import { Navigate } from "react-router-dom"
import NotFound from "./pages/NotFound"
import MainLayout from "./layouts/MainLayout"
import { initAuth, useAuthStore } from "./store/auth"
import { useEffect, useState } from "react"
import DashboardLayout from "./layouts/DashboardLayout"
import { pages } from "./constants/app"
import { Spinner } from "@fluentui/react-components"
import { FluentProvider, Spinner, webDarkTheme, webLightTheme } from "@fluentui/react-components"
import { setColorScheme, useAppStore } from "./store/app"
function App() {
const auth = useAuthStore()
const { colorScheme } = useAppStore()
const [isLoading, setIsLoading] = useState(true)
useEffect(() => {
const localColorScheme = localStorage.getItem('colorScheme');
if (localColorScheme === 'light') {
setColorScheme('light')
} else if (localColorScheme === 'dark') {
setColorScheme('dark')
} else if (localColorScheme === 'auto') {
setColorScheme('auto')
}
initAuth()
}, [])
@ -28,6 +41,7 @@ function App() {
)
} else {
return (
<FluentProvider theme={colorScheme === 'light' ? webLightTheme : webDarkTheme}>
<div style={{
width: '100%',
height: '100vh'
@ -40,7 +54,8 @@ function App() {
))}
</Route>
<Route element={auth.isAuthenticated ? <DashboardLayout></DashboardLayout> : <Navigate to={"/auth/signin"} />}>
{/* <Route element={auth.isAuthenticated || pages.find(page => page.path === '/auth/signin')?.enabled === false ? <DashboardLayout></DashboardLayout> : <Navigate to={"/auth/signin"} />}> */}
<Route element={<DashboardLayout></DashboardLayout>}>
{pages.filter((page) => page.dashboard).filter((page) => page.enabled).map((page, index) => (
<Route key={`dl-${index}`} path={page.path} element={page.component} />
))}
@ -49,6 +64,7 @@ function App() {
</Routes>
</Router>
</div>
</FluentProvider>
)
}
}

View File

@ -12,6 +12,7 @@ type CustomTableProps<T> = {
createFields?: CreateField[];
submitHandler?: (data: T) => Promise<AxiosResponse>
onEditCell?: (rowId: number, columnId: string, value: any) => any
searchable?: boolean
}
const CustomTable = <T extends object>({
@ -19,6 +20,7 @@ const CustomTable = <T extends object>({
columns,
createFields,
submitHandler,
searchable = false
}: CustomTableProps<T>) => {
const [data, setData] = useState<(T & { id: number })[]>(initialData);
const [searchText, setSearchText] = useState('');
@ -138,11 +140,12 @@ const CustomTable = <T extends object>({
display: 'flex',
gap: '1rem'
}}>
{searchable &&
<Input
placeholder="Поиск"
value={searchText}
onChange={(e) => setSearchText(e.target.value)}
/>
/>}
{createFields && submitHandler &&
<Dialog>

View File

@ -156,7 +156,16 @@ export default function FolderViewer() {
if (foldersLoading || documentsLoading) {
return (
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '100%',
height: '100%',
padding: '1rem',
}}>
<Spinner />
</div>
)
}

View File

@ -14,7 +14,6 @@ import { addInteractions, handleImageDrop, loadFeatures, processFigure, processL
import useSWR, { SWRConfiguration } from 'swr'
import { fetcher } from '../../http/axiosInstance'
import { BASE_URL } from '../../constants'
import { useMantineColorScheme } from '@mantine/core'
import { IconBoxMultiple, IconBoxPadding, IconChevronLeft, IconPlus, IconUpload, } from '@tabler/icons-react'
import { ICitySettings, IFigure, ILine } from '../../interfaces/gis'
import axios from 'axios'
@ -34,8 +33,9 @@ import GisService from '../../services/GisService'
import MapMode from './MapMode'
import { satMapsProviders, schemas } from '../../constants/map'
import MapPrint from './MapPrint/MapPrint'
import { Field, Menu, MenuButton, MenuList, MenuPopover, MenuTrigger, Combobox, Option, Button, Divider, Spinner, Portal } from '@fluentui/react-components'
import { Field, Menu, MenuButton, MenuList, MenuPopover, MenuTrigger, Combobox, Option, Button, Divider, Spinner, Portal, Dropdown } from '@fluentui/react-components'
import { IRegion } from '../../interfaces/fuel'
import { useAppStore } from '../../store/app'
const swrOptions: SWRConfiguration = {
revalidateOnFocus: false
@ -60,8 +60,9 @@ const MapComponent = ({
id: string,
active: boolean,
}) => {
const { colorScheme } = useAppStore()
// Store
const { colorScheme } = useMantineColorScheme()
const { selectedYear, currentObjectId, selectedRegion, selectedDistrict } = useObjectsStore().id[id]
const {
mode, map, currentTool, alignMode, satMapsProvider,
@ -559,7 +560,7 @@ const MapComponent = ({
<Combobox
placeholder="Схема"
clearable
style={{ width: "92px", minWidth: 'auto' }}
style={{ minWidth: 'auto' }}
value={selectedYear ? selectedYear.toString() : ""}
onOptionSelect={(_ev, data) => {
if (data.optionValue) {
@ -585,12 +586,16 @@ const MapComponent = ({
</MenuTrigger>
<MenuPopover>
<MenuList>
<MenuList style={{ padding: '1rem' }}>
<Field>Настройка видимости слоёв</Field>
<div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>
<Combobox
defaultValue={satMapsProviders.find(provider => provider.value === satMapsProvider)?.label ?? ""}
<Field label="Спутниковые снимки">
<Dropdown
defaultValue={satMapsProviders.find(provider => provider.value === satMapsProvider)?.label}
value={satMapsProviders.find(provider => provider.value === satMapsProvider)?.label}
defaultSelectedOptions={[satMapsProvider]}
selectedOptions={[satMapsProvider]}
onOptionSelect={(_ev, data) => {
if (data.optionValue) {
setSatMapsProvider(id, data.optionValue as SatelliteMapsProvider);
@ -598,12 +603,12 @@ const MapComponent = ({
}}
>
{satMapsProviders.map((provider) => (
<Option text={provider.label} key={provider.value} value={provider.value}>
<Option key={provider.value} text={provider.label} value={provider.value}>
{provider.label}
</Option>
))}
</Combobox>
</Dropdown>
</Field>
</div>
<div style={{
display: 'flex',
@ -652,7 +657,7 @@ const MapComponent = ({
<div style={{ position: 'absolute', width: '100%', height: '100%' }}>
<div style={{ display: 'flex', flexDirection: 'column', width: '100%', height: '100%' }}>
<div style={{ display: 'flex', width: '100%', height: '94%', padding: '0.5rem', flexGrow: 1 }}>
<div style={{ display: 'flex', height: '94%', padding: '0.5rem', flexGrow: 1 }}>
<div style={{ display: 'flex', flexDirection: 'column', width: '100%', maxWidth: '380px' }}>
<div style={{ display: 'flex', width: '100%', height: '100%', gap: '0.5rem' }}>
{selectedRegion && selectedDistrict && selectedYear &&

View File

@ -1,8 +1,8 @@
import { useMantineColorScheme } from '@mantine/core'
import useSWR from 'swr'
import { fetcher } from '../../../http/axiosInstance'
import { BASE_URL } from '../../../constants'
import { Accordion, AccordionHeader, AccordionItem, AccordionPanel, ColorSwatch, Text } from '@fluentui/react-components'
import { useAppStore } from '../../../store/app'
const MapLegend = ({
selectedDistrict,
@ -11,7 +11,7 @@ const MapLegend = ({
selectedDistrict: number | null,
selectedYear: number | null,
}) => {
const { colorScheme } = useMantineColorScheme()
const { colorScheme } = useAppStore()
const { data: existingObjectsList } = useSWR(
selectedYear && selectedDistrict ? `/general/objects/list?year=${selectedYear}&city_id=${selectedDistrict}&planning=0` : null,

View File

@ -1,49 +1,66 @@
import { useMantineColorScheme } from '@mantine/core'
import { IconArrowBackUp, IconArrowsMove, IconCircle, IconExclamationCircle, IconLine, IconPoint, IconPolygon, IconRuler, IconTransformPoint } from '@tabler/icons-react'
import { getDraw, setCurrentTool, useMapStore } from '../../../store/map';
import { saveFeatures } from '../mapUtils';
import { Button } from '@fluentui/react-components';
import { Button, Tooltip } from '@fluentui/react-components';
import { useAppStore } from '../../../store/app';
const MapToolbar = ({
map_id
}: { map_id: string }) => {
const { currentTool } = useMapStore().id[map_id]
const { colorScheme } = useMantineColorScheme();
const { colorScheme } = useAppStore();
return (
<div style={{ display: 'flex' }}>
<div style={{ display: 'flex', flexDirection: 'column', zIndex: 1, backdropFilter: 'blur(8px)', backgroundColor: colorScheme === 'light' ? '#FFFFFFAA' : '#000000AA', borderRadius: '4px' }}>
<Button icon={<IconExclamationCircle />} appearance='transparent' onClick={() => saveFeatures(map_id)} />
<Tooltip content={"Отмена"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconArrowBackUp />} appearance='transparent' onClick={() => getDraw(map_id)?.removeLastPoint()} />
</Tooltip>
<Tooltip content={"Редактировать"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconTransformPoint />} appearance={currentTool === 'Edit' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Edit')
}} />
</Tooltip>
<Tooltip content={"Точка"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconPoint />} appearance={currentTool === 'Point' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Point')
}} />
</Tooltip>
<Tooltip content={"Линия"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconLine />} appearance={currentTool === 'LineString' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'LineString')
}} />
</Tooltip>
<Tooltip content={"Многоугольник"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconPolygon />} appearance={currentTool === 'Polygon' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Polygon')
}} />
</Tooltip>
<Tooltip content={"Окружность"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconCircle />} appearance={currentTool === 'Circle' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Circle')
}} />
</Tooltip>
<Tooltip content={"Перемещение"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconArrowsMove />} appearance={currentTool === 'Mover' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Mover')
}} />
</Tooltip>
<Tooltip content={"Линейка"} relationship='label' hideDelay={0} showDelay={0} withArrow>
<Button icon={<IconRuler />} appearance={currentTool === 'Measure' ? 'primary' : 'transparent'} onClick={() => {
setCurrentTool(map_id, 'Measure')
}} />
</Tooltip>
</div>
</div>
)

View File

@ -47,7 +47,7 @@ const pages = [
component: <PasswordReset />,
drawer: false,
dashboard: false,
enabled: true,
enabled: false,
},
{
label: "Настройки",
@ -137,7 +137,7 @@ const pages = [
component: <MapLineTest />,
drawer: true,
dashboard: true,
enabled: true,
enabled: false,
},
{
label: "Монитор",
@ -173,7 +173,7 @@ const pages = [
component: <DBManager />,
drawer: true,
dashboard: true,
enabled: true,
enabled: false,
},
{
label: 'Fuel',

View File

@ -1,11 +1,11 @@
import { useMantineColorScheme } from '@mantine/core';
import { Outlet, useNavigate } from 'react-router-dom';
import { IconLogout, IconSettings, IconMoon, IconSun, IconMenu2, IconUser } from '@tabler/icons-react';
import { Outlet, useLocation, useNavigate } from 'react-router-dom';
import { IconLogout, IconSettings, IconMoon, IconSun, IconMenu2, IconUser, IconLogin } from '@tabler/icons-react';
import { getUserData, logout, useAuthStore } from '../store/auth';
import { useEffect, useState } from 'react';
import { UserData } from '../interfaces/auth';
import { pages } from '../constants/app';
import { Button, Image, makeStyles, Menu, MenuButton, MenuItem, MenuList, MenuPopover, MenuTrigger, Text } from '@fluentui/react-components';
import { setColorScheme, useAppStore } from '../store/app';
const useStyles = makeStyles({
root: {
@ -49,6 +49,8 @@ const useStyles = makeStyles({
function DashboardLayout() {
const navigate = useNavigate()
const location = useLocation()
const { colorScheme } = useAppStore()
const getPageTitle = () => {
const currentPath = location.pathname
@ -69,8 +71,6 @@ function DashboardLayout() {
}
}, [authStore])
const { colorScheme, setColorScheme } = useMantineColorScheme();
const classes = useStyles()
const [navbarOpen, setNavbarOpen] = useState(true)
@ -80,7 +80,6 @@ function DashboardLayout() {
<div className={classes.header}>
<div style={{
display: 'flex',
height: '100%',
width: '100%',
alignItems: 'center',
gap: '0.75rem',
@ -96,22 +95,24 @@ function DashboardLayout() {
</div>
<div style={{ flexShrink: 0 }}>
<Menu positioning={{ autoSize: true }}>
<MenuTrigger>
<MenuButton appearance='transparent' icon={<IconUser />}>{`${userData?.name} ${userData?.surname}`}</MenuButton>
<MenuButton appearance='transparent' icon={authStore.isAuthenticated ? <IconUser /> : <IconSettings />}>{authStore.isAuthenticated && `${userData?.name} ${userData?.surname}`}</MenuButton>
</MenuTrigger>
<MenuPopover>
<MenuList>
<MenuItem icon={
colorScheme === 'dark' ? <IconMoon /> : <IconSun />
} onClick={() => colorScheme === 'dark' ? setColorScheme('light') : setColorScheme('dark')}>Тема: {colorScheme === 'dark' ? 'тёмная' : 'светлая'}</MenuItem>
<MenuItem icon={<IconSettings />} onClick={() => navigate('/settings')}>Настройки профиля</MenuItem>
<MenuItem icon={<IconLogout />} onClick={() => {
{!authStore.isAuthenticated && <MenuItem icon={<IconLogin />} onClick={() => navigate('/auth/signin')}>Войти</MenuItem>}
<MenuItem icon={colorScheme === 'dark' ? <IconMoon /> : <IconSun />} onClick={() => colorScheme === 'dark' ? setColorScheme('light') : setColorScheme('dark')}>Тема: {colorScheme === 'dark' ? 'тёмная' : 'светлая'}</MenuItem>
{authStore.isAuthenticated && <MenuItem icon={<IconSettings />} onClick={() => navigate('/settings')}>Настройки профиля</MenuItem>}
{authStore.isAuthenticated && <MenuItem icon={<IconLogout />} onClick={() => {
logout()
if (pages.find(page => page.path === '/auth/signin')?.enabled) {
navigate("/auth/signin")
}}>Выход</MenuItem>
}
}}>Выход</MenuItem>}
<MenuItem icon={<Image src={'/logo2.svg'} width={24} />}>
0.1.0
</MenuItem>
@ -120,14 +121,13 @@ function DashboardLayout() {
</Menu>
</div>
</div>
</div>
<div className={classes.main}>
<div className={classes.navbar} style={{
maxWidth: navbarOpen ? '200px' : '2.70rem',
}}>
{pages.filter((page) => page.drawer).filter((page) => page.enabled).map((item) => (
<Button key={item.path} style={{ paddingLeft: '0.5rem', flexShrink: 0, flexWrap: 'nowrap', textWrap: 'nowrap', borderRadius: 0 }} appearance='subtle' onClick={() => navigate(item.path)}>
<Button key={item.path} style={{ paddingLeft: '0.5rem', flexShrink: 0, flexWrap: 'nowrap', textWrap: 'nowrap', borderRadius: 0 }} appearance={location.pathname === item.path ? 'primary' : 'subtle'} onClick={() => navigate(item.path)}>
<div style={{ display: 'flex', }}>
{item.icon}
</div>
@ -143,9 +143,6 @@ function DashboardLayout() {
</div>
</Button>
// <NavItem style={{ flexShrink: 0, flexWrap: 'nowrap', textWrap: 'nowrap' }} onClick={() => navigate(item.path)} icon={item.icon} value={item.path}>
// {item.label}
// </NavItem>
))}
</div>
@ -156,116 +153,6 @@ function DashboardLayout() {
</div>
)
// return (
// <AppShell
// header={{ height: 60 }}
// navbar={{
// width: desktopOpened ? 200 : 50,
// breakpoint: 'sm',
// collapsed: { mobile: !mobileOpened },
// }}
// >
// <AppShell.Header>
// <Flex h="100%" px="md" w='100%' align='center' gap='sm'>
// <Group>
// <Burger opened={mobileOpened} onClick={toggleMobile} hiddenFrom="sm" size="sm" />
// <Burger opened={desktopOpened} onClick={toggleDesktop} visibleFrom="sm" size="sm" />
// </Group>
// <Group w='auto'>
// <Text fw='600'>{getPageTitle()}</Text>
// </Group>
// <Group id='header-portal' w='auto' ml='auto'>
// </Group>
// <Group style={{ flexShrink: 0 }}>
// <Menu
// width={260}
// position="bottom-end"
// transitionProps={{ transition: 'pop-top-right' }}
// withinPortal
// >
// <Menu.Target>
// <Button variant='transparent'>
// <Group gap={7}>
// <Avatar name={`${userData?.name} ${userData?.surname}`} radius="xl" size={30} />
// <Text fw={500} size="sm" lh={1} mr={3}>
// {`${userData?.name} ${userData?.surname}`}
// </Text>
// <IconChevronDown style={{ width: rem(12), height: rem(12) }} stroke={1.5} />
// </Group>
// </Button>
// </Menu.Target>
// <Menu.Dropdown>
// <Menu.Label>{userData?.login}</Menu.Label>
// <Menu.Item
// leftSection={
// colorScheme === 'dark' ? <IconMoon style={{ width: rem(16), height: rem(16) }} stroke={1.5} /> : <IconSun style={{ width: rem(16), height: rem(16) }} stroke={1.5} />
// }
// onClick={() => colorScheme === 'dark' ? setColorScheme('light') : setColorScheme('dark')}
// >
// Тема: {colorScheme === 'dark' ? 'тёмная' : 'светлая'}
// </Menu.Item>
// <Menu.Item
// leftSection={
// <IconSettings style={{ width: rem(16), height: rem(16) }} stroke={1.5} />
// }
// onClick={() => navigate('/settings')}
// >
// Настройки профиля
// </Menu.Item>
// <Menu.Item
// onClick={() => {
// logout()
// navigate("/auth/signin")
// }}
// leftSection={<IconLogout style={{ width: rem(16), height: rem(16) }} stroke={1.5} />}
// >
// Выход
// </Menu.Item>
// <Menu.Item>
// <Flex gap='sm' align='center'>
// <Image src={'/logo2.svg'} w={32} />
// <Text>0.1.0</Text>
// </Flex>
// </Menu.Item>
// </Menu.Dropdown>
// </Menu>
// </Group>
// </Flex>
// </AppShell.Header>
// <AppShell.Navbar style={{ transition: "width 0.2s ease" }}>
// {pages.filter((page) => page.drawer).filter((page) => page.enabled).map((item) => (
// <NavLink
// key={item.path}
// onClick={() => navigate(item.path)}
// label={item.label}
// leftSection={item.icon}
// active={location.pathname === item.path}
// style={{ textWrap: 'nowrap' }}
// // styles={(theme, { active }) => ({
// // root: {
// // color: active ? theme.colors.blue[6] : theme.colors.dark[5],
// // fontWeight: active ? "bold" : "normal",
// // },
// // leftSection: {
// // color: active ? theme.colors.blue[6] : theme.colors.dark[5], // Icon color
// // }
// // })}
// />
// ))}
// </AppShell.Navbar>
// <AppShell.Main>
// <Flex bg={colorScheme === 'dark' ? undefined : '#E8E8E8'} w={{ sm: desktopOpened ? 'calc(100% - 200px)' : 'calc(100% - 50px)', base: '100%' }} h={'calc(100% - 60px)'} style={{ transition: "width 0.2s ease" }} pos={'fixed'}>
// <Outlet />
// </Flex>
// </AppShell.Main>
// </AppShell>
// )
}
export default DashboardLayout

View File

@ -1,44 +1,12 @@
import "@fontsource/inter";
import '@mantine/core/styles.css';
import '@mantine/dates/styles.css';
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'
import { createTheme, DEFAULT_THEME, MantineProvider, mergeMantineTheme } from '@mantine/core';
import 'dayjs/locale/ru';
import { DatesProvider } from "@mantine/dates";
import { FluentProvider, webLightTheme } from '@fluentui/react-components';
const overrides = createTheme({
// Set this color to `--mantine-color-body` CSS variable
white: '#F0F0F0',
colors: {
// ...
},
})
const theme = mergeMantineTheme(DEFAULT_THEME, overrides);
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
<MantineProvider theme={theme}>
<FluentProvider theme={webLightTheme}>
<DatesProvider settings={{ locale: 'ru' }}>
<App />
</DatesProvider>
</FluentProvider>
</MantineProvider>
</React.StrictMode>,
)
// ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
// <React.StrictMode>
// <MantineProvider theme={theme}>
// <DatesProvider settings={{ locale: 'ru' }}>
// <App />
// </DatesProvider>
// </MantineProvider>
// </React.StrictMode>,
// )

View File

@ -1,15 +1,15 @@
import { Modal, useMantineColorScheme } from "@mantine/core";
import { IconMathMax, IconPlus, IconTableMinus } from "@tabler/icons-react";
import { FuelExpenseDtoHeaders, FuelLimitDtoHeaders } from "../dto/fuel/fuel.dto";
import useSWR from "swr";
import { fetcher } from "../http/axiosInstanceNest";
import { useEffect, useState } from "react";
import { DateInput } from '@mantine/dates'
import { SubmitHandler, useForm } from "react-hook-form";
import { AgGridReact } from "ag-grid-react";
import { AllCommunityModule, ColDef, ModuleRegistry } from 'ag-grid-community'
import { Button, Field, Input, Spinner, Tab, TabList } from "@fluentui/react-components";
import { CalendarStrings, DatePicker, defaultDatePickerStrings } from "@fluentui/react-datepicker-compat"
import { Button, Dialog, DialogSurface, DialogTitle, DialogTrigger, Field, Input, Spinner, Tab, TabList } from "@fluentui/react-components";
import { useAppStore } from "../store/app";
ModuleRegistry.registerModules([AllCommunityModule])
@ -94,9 +94,7 @@ export default function FuelPage() {
const { isLoading } = useSWR(currentTab.get, () => fetcher(currentTab.get), { revalidateOnFocus: false })
const [openCreateModel, setOpenCreateModal] = useState(false)
const { colorScheme } = useMantineColorScheme()
const { colorScheme } = useAppStore()
useEffect(() => {
if (colorScheme === 'dark') {
@ -108,8 +106,6 @@ export default function FuelPage() {
return (
<>
<ModalCreate openedCreateModal={openCreateModel} closeCreateModal={() => setOpenCreateModal(false)} currentTab={currentTab} />
<div style={{ display: 'flex', flexDirection: 'column', width: '100%' }}>
<TabList defaultValue={tables[0].value} selectedValue={currentTab.value}>
{tables.map((table, index) => (
@ -120,9 +116,22 @@ export default function FuelPage() {
</TabList>
<div style={{ display: 'flex', padding: '1rem' }}>
<Button appearance='primary' icon={<IconPlus />} onClick={() => setOpenCreateModal(true)}>
<Dialog>
<DialogTrigger>
<Button
appearance='primary'
icon={<IconPlus />}
style={{ flexShrink: 0 }}
>
Добавить
</Button>
</DialogTrigger>
<DialogSurface>
<DialogTitle>Добавление объекта</DialogTitle>
<ModalCreate currentTab={currentTab} />
</DialogSurface>
</Dialog>
</div>
{tables.map((table, index) => {
@ -133,7 +142,7 @@ export default function FuelPage() {
<Spinner />
</div>
:
<>
<div style={{ width: '100%', height: '100%', padding: '1rem' }}>
<AgGridReact
key={index}
//rowData={data}
@ -148,7 +157,7 @@ export default function FuelPage() {
flex: 1,
}}
/>
</>
</div>
)
}
}
@ -159,12 +168,8 @@ export default function FuelPage() {
}
const ModalCreate = ({
openedCreateModal,
closeCreateModal,
currentTab
}: {
openedCreateModal: boolean
closeCreateModal: () => void
currentTab: ITableSchema
}) => {
const { register, handleSubmit,
@ -177,14 +182,49 @@ const ModalCreate = ({
console.log('Values to submit:', values)
}
const localizedStrings: CalendarStrings = {
...defaultDatePickerStrings,
days: [
'Воскресенье',
'Понедельник',
'Вторник',
'Среда',
'Четверг',
'Пятница',
'Суббота'
],
shortDays: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
months: [
"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Ноябрь", "Декабрь"
],
shortMonths: [
"Янв",
"Фев",
"Мар",
"Апр",
"Май",
"Июн",
"Июл",
"Авг",
"Сен",
"Ноя",
"Дек",
]
}
return (
<Modal withinPortal opened={openedCreateModal} onClose={closeCreateModal}>
<form style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }} onSubmit={handleSubmit(onSubmit)}>
{currentTab.post_include.map((header, index) => {
switch (header.field_type) {
case 'date':
return (
<DateInput label={header.field} />
<Field key={index} label={header.field}>
<DatePicker
strings={localizedStrings}
{...register(header.field, {
required: true
})} />
</Field>
)
case 'text':
return (
@ -209,6 +249,5 @@ const ModalCreate = ({
Добавить
</Button>
</form>
</Modal>
)
}

View File

@ -1,10 +1,10 @@
import { useEffect, useState } from "react"
import createReport, { listCommands } from 'docx-templates'
import { Dropzone, IMAGE_MIME_TYPE } from '@mantine/dropzone'
import { IconFileTypeDocx, IconPlus, IconUpload, IconX } from "@tabler/icons-react"
import { IconPlus, IconX } from "@tabler/icons-react"
import { CommandSummary } from "docx-templates/lib/types"
import { Control, Controller, FieldValues, SubmitHandler, useFieldArray, useForm, UseFormRegister } from "react-hook-form"
import { Button, Field, Input, Text } from "@fluentui/react-components"
import { Button, Field, Input, Text, tokens, useId } from "@fluentui/react-components"
import { ArrowUploadRegular } from "@fluentui/react-icons"
const xslTemplate = `<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
@ -1062,6 +1062,8 @@ const FormLoop = ({
)
}
const IMAGE_MIME_TYPE = ["image/png", "image/jpeg", "image/jpg", "image/webp"];
const renderCommand = (
control: Control<FieldValues, any>,
register: UseFormRegister<FieldValues>,
@ -1080,50 +1082,72 @@ const renderCommand = (
}
if (command.type === 'IMAGE') {
const inputId = useId("file-input");
return (
<div style={{ display: 'flex', flexDirection: 'column' }}>
<Text size={200} weight="semibold">{command.code}</Text>
<Controller
key={key}
name={name}
control={control}
render={({ field: { onChange } }) => (
<Dropzone
accept={IMAGE_MIME_TYPE}
maxSize={5 * 1024 ** 2}
onReject={(files) => console.log('rejected files', files)}
onDrop={(files) => {
console.log(files[0])
files[0].arrayBuffer().then(res => {
render={({ field: { onChange } }) => {
const handleFiles = (files: FileList | null) => {
if (!files || files.length === 0) return;
const file = files[0];
if (!IMAGE_MIME_TYPE.includes(file.type)) {
console.log("Rejected file:", file);
return;
}
file.arrayBuffer().then((res) => {
onChange({
width: 6,
height: 6,
data: new Uint8Array(res),
extension: files[0]?.path?.match(/\.[^.]+$/)?.[0] || ""
})
})
}}
maxFiles={1}
>
<div style={{ display: 'flex', justifyContent: 'center', gap: '2rem', minHeight: '220px', pointerEvents: 'none' }}>
<Dropzone.Accept>
<IconUpload size={52} color="var(--mantine-color-blue-6)" stroke={1.5} />
</Dropzone.Accept>
<Dropzone.Reject>
<IconX size={52} color="var(--mantine-color-red-6)" stroke={1.5} />
</Dropzone.Reject>
<Dropzone.Idle>
<IconFileTypeDocx size={52} color="var(--mantine-color-dimmed)" stroke={1.5} />
</Dropzone.Idle>
extension: file.name.match(/\.[^.]+$/)?.[0] || "",
});
});
};
<div>
const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {
e.preventDefault();
handleFiles(e.dataTransfer.files);
};
return (
<div
onDragOver={(e) => e.preventDefault()}
onDrop={handleDrop}
style={{
border: `2px dashed ${tokens.colorNeutralStroke1}`,
borderRadius: tokens.borderRadiusLarge,
minHeight: "220px",
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
gap: "1rem",
padding: "1rem",
textAlign: "center",
cursor: "pointer",
}}
onClick={() => document.getElementById(inputId)?.click()}
>
<input
id={inputId}
type="file"
accept={IMAGE_MIME_TYPE.join(",")}
style={{ display: "none" }}
onChange={(e) => handleFiles(e.target.files)}
/>
<ArrowUploadRegular fontSize={40} color={tokens.colorBrandForeground1} />
<Text size={300}>
Перетащите файлы сюда или нажмите, чтобы выбрать их
Перетащите изображение сюда или нажмите, чтобы выбрать
</Text>
</div>
</div>
</Dropzone>
)}
);
}}
/>
</div>
)

View File

@ -2,7 +2,7 @@ import { useRoles } from '../hooks/swrHooks'
import { CreateField } from '../interfaces/create'
import RoleService from '../services/RoleService'
import CustomTable from '../components/CustomTable'
import { Spinner } from '@fluentui/react-components'
import { Link, Spinner } from '@fluentui/react-components'
export default function Roles() {
const { roles, isError, isLoading } = useRoles()
@ -12,8 +12,37 @@ export default function Roles() {
{ key: 'description', headerName: 'Описание', type: 'string', required: false, defaultValue: '' },
]
if (isError) return <div>Произошла ошибка при получении данных.</div>
if (isLoading) return <Spinner />
const handleError = (error: any) => {
if (error?.response?.status === 401) {
return (
<Link href="/auth/signin">
Войдите, чтобы продолжить
</Link>
)
} else {
return "Произошла ошибка при получении данных."
}
}
if (isError) return (
<div style={{ padding: '1rem' }}>
{handleError(isError)}
</div>
)
if (isLoading)
return (
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '100%',
height: '100%',
padding: '1rem',
}}>
<Spinner />
</div>
)
return (
<div style={{

View File

@ -4,7 +4,7 @@ import { useEffect, useState } from "react"
import { CreateField } from "../interfaces/create"
import UserService from "../services/UserService"
import CustomTable from "../components/CustomTable"
import { Spinner } from "@fluentui/react-components"
import { Link, Spinner } from "@fluentui/react-components"
import { IUser } from "../interfaces/user"
export default function Users() {
@ -37,15 +37,34 @@ export default function Users() {
{ key: 'password', headerName: 'Пароль', type: 'string', required: true, defaultValue: '' },
]
const handleError = (error: any) => {
if (error?.response?.status === 401) {
return (
<Link href="/auth/signin">
Войдите, чтобы продолжить
</Link>
)
} else {
return "Произошла ошибка при получении данных."
}
}
if (isError) return (
<div>
Произошла ошибка при получении данных.
<div style={{ padding: '1rem' }}>
{handleError(isError)}
</div>
)
if (isLoading) {
return (
<div>
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
width: '100%',
height: '100%',
padding: '1rem',
}}>
<Spinner />
</div>
)

View File

@ -100,7 +100,8 @@ const SignIn = () => {
{pages.find(page => page.path === '/auth/signup')?.enabled &&
<Button as='a' href='/auth/signup' type="button" appearance='subtle'>
Регистрация
</Button>}
</Button>
}
</div>
</form>
</div>

View File

@ -2,7 +2,10 @@ import { create } from 'zustand';
export type Mode = 'edit' | 'view'
export type ColorScheme = 'light' | 'dark' | 'auto'
export interface AppState {
colorScheme: ColorScheme,
mapTab: Record<string, {
year: number | null,
region: number | null,
@ -12,10 +15,20 @@ export interface AppState {
}
export const useAppStore = create<AppState>(() => ({
colorScheme: 'auto',
currentTab: null,
mapTab: {}
}))
const getColorScheme = () => {
useAppStore.getState().colorScheme
}
const setColorScheme = (colorScheme: ColorScheme) => {
useAppStore.setState(() => ({ colorScheme: colorScheme }))
localStorage.setItem('colorScheme', colorScheme.toString())
}
const getCurrentTab = () => useAppStore.getState().currentTab
const setCurrentTab = (id: string | null) => useAppStore.setState(() => ({ currentTab: id }))
@ -39,5 +52,7 @@ export {
deleteMapTab,
getCurrentTab,
setCurrentTab,
setMapTabYear
setMapTabYear,
getColorScheme,
setColorScheme
}

View File

@ -936,7 +936,7 @@
resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2", "@babel/runtime@^7.25.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
"@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.25.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
version "7.26.0"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz"
integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
@ -1072,23 +1072,7 @@
"@floating-ui/core" "^1.7.3"
"@floating-ui/utils" "^0.2.10"
"@floating-ui/react-dom@^2.1.2":
version "2.1.2"
resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz"
integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
dependencies:
"@floating-ui/dom" "^1.0.0"
"@floating-ui/react@^0.26.9":
version "0.26.24"
resolved "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz"
integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==
dependencies:
"@floating-ui/react-dom" "^2.1.2"
"@floating-ui/utils" "^0.2.8"
tabbable "^6.0.0"
"@floating-ui/utils@^0.2.10", "@floating-ui/utils@^0.2.8":
"@floating-ui/utils@^0.2.10":
version "0.2.10"
resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz"
integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
@ -1140,16 +1124,16 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-aria@^9.16.4":
version "9.16.4"
resolved "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.16.4.tgz"
integrity sha512-ent+vc93+6EAeg26tnZMoRp8lIJtfFMbKFAa0WvZGbN5jU24NQUniJCdXcsfrmVCQ2hHophQDvUSwGhPkABURw==
"@fluentui/react-aria@^9.16.4", "@fluentui/react-aria@^9.17.0":
version "9.17.0"
resolved "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.17.0.tgz"
integrity sha512-TkJJUSZl7967Gsf4s/W6tdZldm362LqBJPx2cpjokyZMarFfzzSz6U5i07KkWVZ7RtoPsscaaWDI8QEHhIvc6Q==
dependencies:
"@fluentui/keyboard-keys" "^9.0.8"
"@fluentui/react-jsx-runtime" "^9.1.6"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-tabster" "^9.26.4"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-tabster" "^9.26.5"
"@fluentui/react-utilities" "^9.24.1"
"@swc/helpers" "^0.5.1"
"@fluentui/react-avatar@^9.6.29", "@fluentui/react-avatar@^9.9.5":
@ -1216,6 +1200,21 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-calendar-compat@^0.3.9":
version "0.3.9"
resolved "https://registry.npmjs.org/@fluentui/react-calendar-compat/-/react-calendar-compat-0.3.9.tgz"
integrity sha512-1yLwJjMynMJ0wGJkAd+TIfRmMSHnJSaBDyOttKgvQRHhgy4aD43CTM884x7K+IMCLQSh2Uebl6YNMjsqIq6o3A==
dependencies:
"@fluentui/keyboard-keys" "^9.0.8"
"@fluentui/react-icons" "^2.0.245"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-tabster" "^9.26.5"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-card@^9.4.5":
version "9.4.5"
resolved "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.4.5.tgz"
@ -1379,6 +1378,35 @@
"@fluentui/react-utilities" "^9.24.0"
"@swc/helpers" "^0.5.1"
"@fluentui/react-context-selector@^9.2.7":
version "9.2.7"
resolved "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.7.tgz"
integrity sha512-wIxdd113xXz+rtCN6eBAWmc2S2sBVE3aWOdesbeFIVQqqMv/0XW3zh3AF8H9CsV++8w5MsmCccRB11wqwut8GQ==
dependencies:
"@fluentui/react-utilities" "^9.24.1"
"@swc/helpers" "^0.5.1"
"@fluentui/react-datepicker-compat@^0.6.14":
version "0.6.14"
resolved "https://registry.npmjs.org/@fluentui/react-datepicker-compat/-/react-datepicker-compat-0.6.14.tgz"
integrity sha512-g1NxCuTyDKC08zmjOIqnNB2JEeXnKCOcYnTe7ztBs8q/f617IougO/xbpJ+D5MlFRXho6/EBrgFL5FlpB1LxPg==
dependencies:
"@fluentui/keyboard-keys" "^9.0.8"
"@fluentui/react-calendar-compat" "^0.3.9"
"@fluentui/react-field" "^9.4.5"
"@fluentui/react-icons" "^2.0.245"
"@fluentui/react-input" "^9.7.5"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-popover" "^9.12.6"
"@fluentui/react-portal" "^9.8.2"
"@fluentui/react-positioning" "^9.20.5"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-tabster" "^9.26.5"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-dialog@^9.15.0":
version "9.15.0"
resolved "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.15.0.tgz"
@ -1427,18 +1455,18 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-field@^9.4.4":
version "9.4.4"
resolved "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.4.tgz"
integrity sha512-JtW3faTdKIE/d/mum9ZDkiC6vyip7h5rLa7zhIQ/Eek0JR2vHZwta8BODxY0Mwvga/xTK9aC3fNo/FcXSoL3Rg==
"@fluentui/react-field@^9.4.4", "@fluentui/react-field@^9.4.5":
version "9.4.5"
resolved "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.5.tgz"
integrity sha512-yQi5iaRXMJmHrPhRO+vX3vYXG1vsmpkKG0e5JJ1p/MBiOAVROdIhzbipDIktg8fdJMJ1ZAteuhAugfZ8NWWMfA==
dependencies:
"@fluentui/react-context-selector" "^9.2.6"
"@fluentui/react-context-selector" "^9.2.7"
"@fluentui/react-icons" "^2.0.245"
"@fluentui/react-jsx-runtime" "^9.1.6"
"@fluentui/react-label" "^9.3.4"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-label" "^9.3.5"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
@ -1493,37 +1521,37 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-input@^9.7.4":
version "9.7.4"
resolved "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.4.tgz"
integrity sha512-ZNhM5xKckA39O3g6LjwoZCqy8kopFQ1ujfwxl0D60fEDMBwUYoK2NR1Zr/pEF9ItuhKlIN9fs1F/Hqay7fnYDw==
"@fluentui/react-input@^9.7.4", "@fluentui/react-input@^9.7.5":
version "9.7.5"
resolved "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.5.tgz"
integrity sha512-TFr9hNRNvrUWj6Ama9a556LVFWWOa4kjmU75HrJ2kwLee4cRbDrhOr9mH98v6P7d52meDtQjYDusaq83/WLflA==
dependencies:
"@fluentui/react-field" "^9.4.4"
"@fluentui/react-jsx-runtime" "^9.1.6"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-field" "^9.4.5"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-jsx-runtime@^9.0.36", "@fluentui/react-jsx-runtime@^9.0.39", "@fluentui/react-jsx-runtime@^9.1.4", "@fluentui/react-jsx-runtime@^9.1.6":
version "9.1.6"
resolved "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.1.6.tgz"
integrity sha512-ClaksavUB9CPRPuMKxtsjVCg+N95jMt3Oi5RBGY4dAMxwaERpweQPv5CCuZzOq4Ybp4FpAXwK1jGNZzXizvfaA==
"@fluentui/react-jsx-runtime@^9.0.36", "@fluentui/react-jsx-runtime@^9.0.39", "@fluentui/react-jsx-runtime@^9.1.4", "@fluentui/react-jsx-runtime@^9.1.6", "@fluentui/react-jsx-runtime@^9.2.0":
version "9.2.0"
resolved "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.2.0.tgz"
integrity sha512-2LI7vvkQqa0E69nODYC0HD37wgIRUb3szHnfWDJyz0XHiF+A0vYmv1W6ZD1+Uk3th4e6+M0gy3uH+ghtki5RtQ==
dependencies:
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@swc/helpers" "^0.5.1"
react-is "^17.0.2"
"@fluentui/react-label@^9.1.68", "@fluentui/react-label@^9.3.4":
version "9.3.4"
resolved "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.4.tgz"
integrity sha512-oBdN3J5qFuiS57eCk+rXEYg+zt/7Mgt7SqxQlJzkU8uzlj5J5B+IjITlADOEYjuG0QDzhNA4/et2AX8c8kA55Q==
"@fluentui/react-label@^9.1.68", "@fluentui/react-label@^9.3.4", "@fluentui/react-label@^9.3.5":
version "9.3.5"
resolved "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.5.tgz"
integrity sha512-9k+A/P0ftmYwYH7yej512osMLjTgQGq8Lt5pWyrhHXZEvAPTAhZ9BwtaM/RkikPG9EhbgQyTpPVMzRS4TTAKmw==
dependencies:
"@fluentui/react-jsx-runtime" "^9.1.6"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
@ -1656,45 +1684,45 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-popover@^9.12.5", "@fluentui/react-popover@^9.9.6":
version "9.12.5"
resolved "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.12.5.tgz"
integrity sha512-GzIkJoyzRmgz8UgVq2xhqii/trIAMLpLYbr3XrxukrkDg837OZKFcBbSbqTUSNVZ6ra4RrlGMaF4yhWHBTSs1A==
"@fluentui/react-popover@^9.12.5", "@fluentui/react-popover@^9.12.6", "@fluentui/react-popover@^9.9.6":
version "9.12.6"
resolved "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.12.6.tgz"
integrity sha512-2VlHq+bE0Ep7CIKS9iBROyvwwH44swt51pi7pJvFaO5UL5I3Gny0dUglxBU+Y2O/0/Rl1HyqlU0AwYaldWVBew==
dependencies:
"@fluentui/keyboard-keys" "^9.0.8"
"@fluentui/react-aria" "^9.16.4"
"@fluentui/react-context-selector" "^9.2.6"
"@fluentui/react-jsx-runtime" "^9.1.6"
"@fluentui/react-portal" "^9.8.1"
"@fluentui/react-positioning" "^9.20.4"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-tabster" "^9.26.4"
"@fluentui/react-aria" "^9.17.0"
"@fluentui/react-context-selector" "^9.2.7"
"@fluentui/react-jsx-runtime" "^9.2.0"
"@fluentui/react-portal" "^9.8.2"
"@fluentui/react-positioning" "^9.20.5"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-tabster" "^9.26.5"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-portal@^9.8.1":
version "9.8.1"
resolved "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.8.1.tgz"
integrity sha512-PjcKGNpphryhHBtlObbBVNrsasPt6QCbTyLYfmUKR92+XQI0U92AV9fHS7sArXGP3HrXjzUDvf+rLnecRMQmcA==
"@fluentui/react-portal@^9.8.1", "@fluentui/react-portal@^9.8.2":
version "9.8.2"
resolved "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.8.2.tgz"
integrity sha512-FOckq3BW9iaVci1KuseFgdKlsXUMZqMxronmDn/smPzgvnr+yhH3CLgwsL4lOJgdNxf4oBOmLDNzO0yoENQEyg==
dependencies:
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-tabster" "^9.26.4"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-tabster" "^9.26.5"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-positioning@^9.20.4":
version "9.20.4"
resolved "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.20.4.tgz"
integrity sha512-MyldPBLO+hX0+qI2kfRZRI1hdSihgDKqpdqkl6O25PVce2SaGvvDAK72GDNOyoAApnXlVOFIEAyLSWzxjTGDbw==
"@fluentui/react-positioning@^9.20.4", "@fluentui/react-positioning@^9.20.5":
version "9.20.5"
resolved "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.20.5.tgz"
integrity sha512-J0IgLF3QKIAQb/wFn0e7oYhgzLfVnB9XTE51Gw7pXytx9U/IdxuT7dXBodWGh4MFceUI0u7djOOHiqrnWjUV2A==
dependencies:
"@floating-ui/devtools" "^0.2.3"
"@floating-ui/dom" "^1.6.12"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
use-sync-external-store "^1.2.0"
@ -1784,10 +1812,10 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-shared-contexts@^9.24.1", "@fluentui/react-shared-contexts@^9.25.0":
version "9.25.0"
resolved "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.25.0.tgz"
integrity sha512-uFWi93L5ZjZACx5VA4+gbWgg6l/on3ultJpXTyFYFuox0paJbqENsPf383GKZW7UnUs08Kqry5CFC36VfqDdSg==
"@fluentui/react-shared-contexts@^9.24.1", "@fluentui/react-shared-contexts@^9.25.0", "@fluentui/react-shared-contexts@^9.25.1":
version "9.25.1"
resolved "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.25.1.tgz"
integrity sha512-C15uX9dnIVe0cm2wa9WMd9KhG5pdbs9jxnzgpFvraCGpLqFHniK2xJghYBRzj66zEK6xJnuRZR89/Y8wsiO11w==
dependencies:
"@fluentui/react-theme" "^9.2.0"
"@swc/helpers" "^0.5.1"
@ -1913,14 +1941,14 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-tabster@^9.21.0", "@fluentui/react-tabster@^9.21.5", "@fluentui/react-tabster@^9.26.4":
version "9.26.4"
resolved "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.26.4.tgz"
integrity sha512-ri/h4MHdSdTPn40isPZw1tOnB4W+wLj0EtJWDdKc49vDX8NXTmULLBDodHDsqauVJpKMw3Jw69Ccuf09S+qhTA==
"@fluentui/react-tabster@^9.21.0", "@fluentui/react-tabster@^9.21.5", "@fluentui/react-tabster@^9.26.4", "@fluentui/react-tabster@^9.26.5":
version "9.26.5"
resolved "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.26.5.tgz"
integrity sha512-VLt5KMRHzgT+pSF22tQuuZkaXFiQT6MOjVhoqPmBGKiXSIyVB3vnUOMQyITgDMhy4og/kk6gh04l5/6YXjJV9A==
dependencies:
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@fluentui/react-theme" "^9.2.0"
"@fluentui/react-utilities" "^9.24.0"
"@fluentui/react-utilities" "^9.24.1"
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
keyborg "^2.6.0"
@ -2092,13 +2120,13 @@
"@griffel/react" "^1.5.22"
"@swc/helpers" "^0.5.1"
"@fluentui/react-utilities@^9.18.10", "@fluentui/react-utilities@^9.18.7", "@fluentui/react-utilities@^9.23.1", "@fluentui/react-utilities@^9.24.0":
version "9.24.0"
resolved "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.24.0.tgz"
integrity sha512-fIAEi62slg3YGe9nbUW4crD9KLx//eNWBVRuwEvhqJeqrbLL6dTWRAmRhmYOmzzySy+4gxHP7I/D7jl3BjeXpA==
"@fluentui/react-utilities@^9.18.10", "@fluentui/react-utilities@^9.18.7", "@fluentui/react-utilities@^9.23.1", "@fluentui/react-utilities@^9.24.0", "@fluentui/react-utilities@^9.24.1":
version "9.24.1"
resolved "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.24.1.tgz"
integrity sha512-Ih0S+BrHiiGiG0faDncmipOQ2rz8jHaKXzSN4p5U5m7d/jcPMAZ45cHtaYGLTD0O32ur7/AusmQSLY6c/9WvnQ==
dependencies:
"@fluentui/keyboard-keys" "^9.0.8"
"@fluentui/react-shared-contexts" "^9.25.0"
"@fluentui/react-shared-contexts" "^9.25.1"
"@swc/helpers" "^0.5.1"
"@fluentui/react-virtualizer@9.0.0-alpha.102":
@ -2255,49 +2283,6 @@
resolved "https://registry.npmjs.org/@js-preview/pdf/-/pdf-2.0.2.tgz"
integrity sha512-g7RsK4k97y+/XvsjZfltEotty+QpfeQGDBAbr9UB0npjVP+2gxRnIhNEPpYFr44XQ6ZNjAIs5nKFppGjJVFJMQ==
"@mantine/core@^7.13.0", "@mantine/core@7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/core/-/core-7.13.0.tgz"
integrity sha512-aQpx3Q69ATDhVopBNkWS0sql93ZaPqeA5jTgqU7GxZvJdkpG87vbKYgp4cDV/gqr7BYu4kel0smeHYuPemiZ8Q==
dependencies:
"@floating-ui/react" "^0.26.9"
clsx "^2.1.1"
react-number-format "^5.3.1"
react-remove-scroll "^2.5.7"
react-textarea-autosize "8.5.3"
type-fest "^4.12.0"
"@mantine/dates@^7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/dates/-/dates-7.13.0.tgz"
integrity sha512-fCNS7JPCqnTtFJeGxdl2yFaMxyCP44BP2tYVZYC5KejvhfeA9u8AmtD5FsOnrdjMEnVc1DpLJobrwfmp98Ektg==
dependencies:
clsx "^2.1.1"
"@mantine/dropzone@^7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-7.13.0.tgz"
integrity sha512-NDpSJ6rEN8dJwI5/qImG+6lNH/bLmf3cz4cErMR/DXNMUZGGGVx8V81oJfKoXlQi3P+yy0d6UOPiqAz1wkdC8Q==
dependencies:
react-dropzone-esm "15.0.1"
"@mantine/hooks@7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.13.0.tgz"
integrity sha512-oQpwSi0gajH3UR1DFa9MQ+zeYy75xbc8Im9jIIepLbiJXtIcPK+yll1BMxNwPQLYU1pYI6ZgUazI2PoykVNmsg==
"@mantine/nprogress@^7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/nprogress/-/nprogress-7.13.0.tgz"
integrity sha512-k9KE30vQtqy8xbpnKKdIRL2YBCJYGWZdNZ9B02hWRxJPvJyFoUtVGP5qukLKHpO82t1+XGwJd15Y26HYsqE5ww==
dependencies:
"@mantine/store" "7.13.0"
"@mantine/store@7.13.0":
version "7.13.0"
resolved "https://registry.npmjs.org/@mantine/store/-/store-7.13.0.tgz"
integrity sha512-ldYJGMcmqTxffQMCQZZWNtXKlG649S3BGM8ukeZ6FLZckVXLQAR2o+G5EkETNihh0sJKR7DVsYHltL5hyxYLkg==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@ -2522,14 +2507,14 @@
resolved "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz"
integrity sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==
"@types/react-dom@^18.2.22", "@types/react-dom@>=16.8.0 <19.0.0", "@types/react-dom@>=16.9.0 <19.0.0":
"@types/react-dom@^18.2.22", "@types/react-dom@>=16.8.0 <19.0.0", "@types/react-dom@>=16.8.0 <20.0.0", "@types/react-dom@>=16.9.0 <19.0.0", "@types/react-dom@>=16.9.0 <20.0.0":
version "18.3.0"
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz"
integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^18.2.25 || ^19", "@types/react@^18.2.66", "@types/react@>=16.14.0 <19.0.0", "@types/react@>=16.8", "@types/react@>=16.8.0 <19.0.0":
"@types/react@*", "@types/react@^18.2.25 || ^19", "@types/react@^18.2.66", "@types/react@>=16.14.0 <19.0.0", "@types/react@>=16.14.0 <20.0.0", "@types/react@>=16.8", "@types/react@>=16.8.0 <19.0.0", "@types/react@>=16.8.0 <20.0.0":
version "18.3.3"
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz"
integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
@ -3247,11 +3232,6 @@ cliui@^8.0.1:
strip-ansi "^6.0.1"
wrap-ansi "^7.0.0"
clsx@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
@ -3508,7 +3488,7 @@ data-view-byte-offset@^1.0.0:
es-errors "^1.3.0"
is-data-view "^1.0.1"
dayjs@^1.11.13, dayjs@>=1.0.0:
dayjs@^1.11.13:
version "1.11.13"
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
@ -3578,11 +3558,6 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
detect-node-es@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz"
integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
didyoumean@^1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
@ -4179,11 +4154,6 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@
has-symbols "^1.0.3"
hasown "^2.0.0"
get-nonce@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz"
integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.2"
resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz"
@ -4450,13 +4420,6 @@ internal-slot@^1.0.7:
hasown "^2.0.0"
side-channel "^1.0.4"
invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
dependencies:
loose-envify "^1.0.0"
is-arguments@^1.0.4:
version "1.1.1"
resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz"
@ -4876,7 +4839,7 @@ lodash@^4.17.20:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@ -5621,7 +5584,7 @@ rc@^1.0.1, rc@^1.1.6:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react-dom@^18.0.0, react-dom@^18.2.0, "react-dom@>=16.14.0 <19.0.0", react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, "react-dom@>=16.8.0 <19.0.0", react-dom@>=18.0.0:
"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", react-dom@^18.0.0, react-dom@^18.2.0, "react-dom@>=16.14.0 <19.0.0", "react-dom@>=16.14.0 <20.0.0", react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, "react-dom@>=16.8.0 <19.0.0", "react-dom@>=16.8.0 <20.0.0", react-dom@>=18.0.0:
version "18.3.1"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@ -5629,13 +5592,6 @@ rc@^1.0.1, rc@^1.1.6:
loose-envify "^1.1.0"
scheduler "^0.23.2"
react-dropzone-esm@15.0.1:
version "15.0.1"
resolved "https://registry.npmjs.org/react-dropzone-esm/-/react-dropzone-esm-15.0.1.tgz"
integrity sha512-RdeGpqwHnoV/IlDFpQji7t7pTtlC2O1i/Br0LWkRZ9hYtLyce814S71h5NolnCZXsIN5wrZId6+8eQj2EBnEzg==
dependencies:
prop-types "^15.8.1"
react-hook-form@^7.52.0:
version "7.52.0"
resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.0.tgz"
@ -5651,11 +5607,6 @@ react-is@^17.0.2:
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-number-format@^5.3.1:
version "5.4.2"
resolved "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.2.tgz"
integrity sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==
react-redux@^9.1.2:
version "9.2.0"
resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz"
@ -5664,25 +5615,6 @@ react-redux@^9.1.2:
"@types/use-sync-external-store" "^0.0.6"
use-sync-external-store "^1.4.0"
react-remove-scroll-bar@^2.3.6:
version "2.3.6"
resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz"
integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==
dependencies:
react-style-singleton "^2.2.1"
tslib "^2.0.0"
react-remove-scroll@^2.5.7:
version "2.6.0"
resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz"
integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==
dependencies:
react-remove-scroll-bar "^2.3.6"
react-style-singleton "^2.2.1"
tslib "^2.1.0"
use-callback-ref "^1.3.0"
use-sidecar "^1.1.2"
react-router-dom@^6.23.1:
version "6.23.1"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz"
@ -5698,24 +5630,6 @@ react-router@6.23.1:
dependencies:
"@remix-run/router" "1.16.1"
react-style-singleton@^2.2.1:
version "2.2.1"
resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz"
integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
dependencies:
get-nonce "^1.0.0"
invariant "^2.2.4"
tslib "^2.0.0"
react-textarea-autosize@8.5.3:
version "8.5.3"
resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz"
integrity sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==
dependencies:
"@babel/runtime" "^7.20.13"
use-composed-ref "^1.3.0"
use-latest "^1.2.1"
react-transition-group@^4.4.1:
version "4.4.5"
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz"
@ -5726,7 +5640,7 @@ react-transition-group@^4.4.1:
loose-envify "^1.4.0"
prop-types "^15.6.2"
"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.0 || ^19", react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 16", "react@>= 16.8 || 18.0.0", "react@>=16.14.0 <19.0.0", react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@>=16.8.0 <19.0.0", "react@>=16.8.0 <20.0.0", react@>=18.0.0:
"react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.0 || ^19", react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 16", "react@>=16.14.0 <19.0.0", "react@>=16.14.0 <20.0.0", react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@>=16.8.0 <19.0.0", "react@>=16.8.0 <20.0.0", react@>=18.0.0:
version "18.3.1"
resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
@ -6477,11 +6391,6 @@ swr@^2.2.5:
client-only "^0.0.1"
use-sync-external-store "^1.2.0"
tabbable@^6.0.0:
version "6.2.0"
resolved "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
tabster@^8.5.5:
version "8.5.6"
resolved "https://registry.npmjs.org/tabster/-/tabster-8.5.6.tgz"
@ -6652,11 +6561,6 @@ type-fest@^2.13.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz"
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
type-fest@^4.12.0:
version "4.26.1"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz"
integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==
typed-array-buffer@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz"
@ -6792,43 +6696,11 @@ url@^0.11.0:
punycode "^1.4.1"
qs "^6.11.2"
use-callback-ref@^1.3.0:
version "1.3.2"
resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz"
integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==
dependencies:
tslib "^2.0.0"
use-composed-ref@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz"
integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==
use-isomorphic-layout-effect@^1.1.1:
version "1.1.2"
resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz"
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
use-latest@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz"
integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==
dependencies:
use-isomorphic-layout-effect "^1.1.1"
use-memo-one@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz"
integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==
use-sidecar@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz"
integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==
dependencies:
detect-node-es "^1.1.0"
tslib "^2.0.0"
use-sync-external-store@^1.2.0, use-sync-external-store@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz"