diff --git a/src/client/dd-hub-react/package-lock.json b/src/client/dd-hub-react/package-lock.json
index a0debc0..2f672c5 100644
--- a/src/client/dd-hub-react/package-lock.json
+++ b/src/client/dd-hub-react/package-lock.json
@@ -17,6 +17,7 @@
"@mui/icons-material": "^7.2.0",
"@mui/lab": "^7.0.0-beta.10",
"@mui/material": "^7.0.1",
+ "@mui/x-date-pickers": "^8.7.0",
"apexcharts": "^4.5.0",
"dayjs": "^1.11.13",
"es-toolkit": "^1.34.1",
@@ -1438,6 +1439,94 @@
}
}
},
+ "node_modules/@mui/x-date-pickers": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-8.7.0.tgz",
+ "integrity": "sha512-7fCRhhoE/2s7wsJWLoY2IoHlN5ZA+ev7ZzhIjLPAOzMXwIflzCgljq6iG/iXpATugsmlxWHhO/7wdDSD6zUNOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.27.6",
+ "@mui/utils": "^7.1.1",
+ "@mui/x-internals": "8.7.0",
+ "@types/react-transition-group": "^4.4.12",
+ "clsx": "^2.1.1",
+ "prop-types": "^15.8.1",
+ "react-transition-group": "^4.4.5"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.9.0",
+ "@emotion/styled": "^11.8.1",
+ "@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0",
+ "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0",
+ "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0",
+ "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0",
+ "dayjs": "^1.10.7",
+ "luxon": "^3.0.2",
+ "moment": "^2.29.4",
+ "moment-hijri": "^2.1.2 || ^3.0.0",
+ "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "date-fns": {
+ "optional": true
+ },
+ "date-fns-jalali": {
+ "optional": true
+ },
+ "dayjs": {
+ "optional": true
+ },
+ "luxon": {
+ "optional": true
+ },
+ "moment": {
+ "optional": true
+ },
+ "moment-hijri": {
+ "optional": true
+ },
+ "moment-jalaali": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/x-internals": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.7.0.tgz",
+ "integrity": "sha512-1aduds7L2i6t0HIFNlqG4UB07SVEg+wcnJ9GGu8B/X8EVwO72Rt+rc8ZlqK10ooscq1AlTwi2dd0q+hz+aWk+Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.27.6",
+ "@mui/utils": "^7.1.1",
+ "reselect": "^5.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/@napi-rs/wasm-runtime": {
"version": "0.2.8",
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.8.tgz",
@@ -5743,6 +5832,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/reselect": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
+ "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
+ "license": "MIT"
+ },
"node_modules/resolve": {
"version": "1.22.10",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
diff --git a/src/client/dd-hub-react/package.json b/src/client/dd-hub-react/package.json
index 850a55f..485662e 100644
--- a/src/client/dd-hub-react/package.json
+++ b/src/client/dd-hub-react/package.json
@@ -35,6 +35,7 @@
"@mui/icons-material": "^7.2.0",
"@mui/lab": "^7.0.0-beta.10",
"@mui/material": "^7.0.1",
+ "@mui/x-date-pickers": "^8.7.0",
"apexcharts": "^4.5.0",
"dayjs": "^1.11.13",
"es-toolkit": "^1.34.1",
diff --git a/src/client/dd-hub-react/src/sections/document/date-filter.tsx b/src/client/dd-hub-react/src/sections/document/date-filter.tsx
new file mode 100644
index 0000000..d219b9c
--- /dev/null
+++ b/src/client/dd-hub-react/src/sections/document/date-filter.tsx
@@ -0,0 +1,23 @@
+import { DatePicker } from '@mui/x-date-pickers/DatePicker';
+import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
+import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
+// ----------------------------------------------------------------------
+
+type DateFilterProps = {
+ label: string;
+}
+
+export default function DateFilter({ label }: DateFilterProps) {
+ return (
+
+ ({
+ color: ownerState.isPickerOpen ? 'secondary' : 'primary',
+ }),
+ }}
+ label={label}
+ />
+
+ );
+}
\ No newline at end of file
diff --git a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx
index cd39cba..297bccf 100644
--- a/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx
+++ b/src/client/dd-hub-react/src/sections/document/view/doc-search-view.tsx
@@ -14,6 +14,7 @@ import { Filter, getFiltersAsync } from 'src/api/filter-service';
import { Iconify } from 'src/components/iconify';
import { DocItem } from '../doc-item';
+import DateFilter from '../date-filter';
import { BoolFilter } from '../bool-filter';
import { TextFilter } from '../text-filter';
import { DecimalFilter, IntFilter } from '../num-filter';
@@ -117,6 +118,8 @@ export function DocSearchView({ posts }: Props) {
filterComp =
break;
case 'DATE':
+ filterComp =
+ break;
default:
filterComp =
break;
diff --git a/src/client/dd-hub-react/yarn.lock b/src/client/dd-hub-react/yarn.lock
index 34c2638..b301bde 100644
--- a/src/client/dd-hub-react/yarn.lock
+++ b/src/client/dd-hub-react/yarn.lock
@@ -127,7 +127,7 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
-"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.14.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0":
+"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.14.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0":
version "11.14.0"
resolved "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz"
integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==
@@ -157,7 +157,7 @@
resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
-"@emotion/styled@^11.14.0", "@emotion/styled@^11.3.0":
+"@emotion/styled@^11.14.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1":
version "11.14.0"
resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz"
integrity sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==
@@ -373,7 +373,7 @@
clsx "^2.1.1"
prop-types "^15.8.1"
-"@mui/material@^7.0.1", "@mui/material@^7.2.0":
+"@mui/material@^5.15.14 || ^6.0.0 || ^7.0.0", "@mui/material@^7.0.1", "@mui/material@^7.2.0":
version "7.2.0"
resolved "https://registry.npmjs.org/@mui/material/-/material-7.2.0.tgz"
integrity sha512-NTuyFNen5Z2QY+I242MDZzXnFIVIR6ERxo7vntFi9K1wCgSwvIl0HcAO2OOydKqqKApE6omRiYhpny1ZhGuH7Q==
@@ -412,7 +412,7 @@
csstype "^3.1.3"
prop-types "^15.8.1"
-"@mui/system@^7.0.1", "@mui/system@^7.2.0":
+"@mui/system@^5.15.14 || ^6.0.0 || ^7.0.0", "@mui/system@^7.0.1", "@mui/system@^7.2.0":
version "7.2.0"
resolved "https://registry.npmjs.org/@mui/system/-/system-7.2.0.tgz"
integrity sha512-PG7cm/WluU6RAs+gNND2R9vDwNh+ERWxPkqTaiXQJGIFAyJ+VxhyKfzpdZNk0z0XdmBxxi9KhFOpgxjehf/O0A==
@@ -433,7 +433,7 @@
dependencies:
"@babel/runtime" "^7.27.6"
-"@mui/utils@^7.0.1", "@mui/utils@^7.2.0":
+"@mui/utils@^7.0.1", "@mui/utils@^7.1.1", "@mui/utils@^7.2.0":
version "7.2.0"
resolved "https://registry.npmjs.org/@mui/utils/-/utils-7.2.0.tgz"
integrity sha512-O0i1GQL6MDzhKdy9iAu5Yr0Sz1wZjROH1o3aoztuivdCXqEeQYnEjTDiRLGuFxI9zrUbTHBwobMyQH5sNtyacw==
@@ -445,6 +445,28 @@
prop-types "^15.8.1"
react-is "^19.1.0"
+"@mui/x-date-pickers@^8.7.0":
+ version "8.7.0"
+ resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-8.7.0.tgz"
+ integrity sha512-7fCRhhoE/2s7wsJWLoY2IoHlN5ZA+ev7ZzhIjLPAOzMXwIflzCgljq6iG/iXpATugsmlxWHhO/7wdDSD6zUNOw==
+ dependencies:
+ "@babel/runtime" "^7.27.6"
+ "@mui/utils" "^7.1.1"
+ "@mui/x-internals" "8.7.0"
+ "@types/react-transition-group" "^4.4.12"
+ clsx "^2.1.1"
+ prop-types "^15.8.1"
+ react-transition-group "^4.4.5"
+
+"@mui/x-internals@8.7.0":
+ version "8.7.0"
+ resolved "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.7.0.tgz"
+ integrity sha512-1aduds7L2i6t0HIFNlqG4UB07SVEg+wcnJ9GGu8B/X8EVwO72Rt+rc8ZlqK10ooscq1AlTwi2dd0q+hz+aWk+Q==
+ dependencies:
+ "@babel/runtime" "^7.27.6"
+ "@mui/utils" "^7.1.1"
+ reselect "^5.1.1"
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -1012,7 +1034,7 @@ data-view-byte-offset@^1.0.1:
es-errors "^1.3.0"
is-data-view "^1.0.1"
-dayjs@^1.11.13:
+dayjs@^1.10.7, dayjs@^1.11.13:
version "1.11.13"
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
@@ -2381,6 +2403,11 @@ regexp.prototype.flags@^1.5.3:
gopd "^1.2.0"
set-function-name "^2.0.2"
+reselect@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz"
+ integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"