@mamrp/components 1.7.60 → 1.7.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../react-shim.js","../src/accordion/index.tsx","../src/auto-complete/selector/index.tsx","../src/constants/httpMethod.ts","../src/auto-complete/selector/custome-style.tsx","../src/license-plate/index.tsx","../src/constants/letters.ts","../src/bascule-connection-button/index.tsx","../src/button/search/index.tsx","../src/card-skeleton/index.tsx","../src/checkbox/index.tsx","../src/confirmation-modal/index.tsx","../src/custom-date-time-picker/index.tsx","../src/draggable-paper/index.tsx","../src/custom-dialog/index.tsx","../src/custom-time-picker/index.tsx","../src/data-table/index.tsx","../src/date-filter/index.tsx","../src/date-picker/index.tsx","../src/date-filter-range/index.tsx","../src/date-month/index.tsx","../src/date-time-picker/index.tsx","../src/date-time-range-picker/index.tsx","../src/enhanced-upload-image/index.tsx","../src/enhanced-upload-image/ImageViewer.tsx","../src/img-viewer/index.tsx","../src/license-plate-search/index.tsx","../src/mobile-date-time-picker/index.tsx","../src/modal/index.tsx","../src/no-result/index.tsx","../src/pagination-list/index.tsx","../src/radio-button/index.tsx","../src/selector/index.tsx","../src/spinner/sonar/index.tsx","../src/stepper/index.tsx","../src/switch-button/index.tsx","../src/table/index.tsx","../src/text-field/number-pattern-input/index.tsx","../src/text-field/number-type/index.tsx","../src/text-field/text-type/index.tsx","../src/upload-image/index.tsx","../src/map-location-picker/index.tsx"],"sourcesContent":["// Export components as named exports\nexport { type MRT_ColumnDef } from \"material-react-table\";\nexport { default as Accordion } from \"./accordion\";\nexport { default as Selector } from \"./auto-complete/selector\";\nexport { default as ConnectToBasculeButton } from \"./bascule-connection-button\";\nexport { default as AdvancedSearchButton } from \"./button/search\";\nexport { default as SkeletonCard } from \"./card-skeleton\";\nexport { default as CustomCheckbox } from \"./checkbox\";\nexport { default as ConfirmationDialog } from \"./confirmation-modal\";\nexport { default as CustomDateTimePicker } from \"./custom-date-time-picker\";\nexport {\n default as CustomDialog,\n type CustomDialogProps,\n type PaletteColor,\n} from \"./custom-dialog\";\nexport { default as CustomTimePicker } from \"./custom-time-picker\";\nexport { default as DataTable } from \"./data-table\";\nexport { default as DateFilter } from \"./date-filter\";\nexport { default as DateFilterRange } from \"./date-filter-range\";\nexport { default as DateMonthPicker } from \"./date-month\";\nexport { default as DatePicker } from \"./date-picker\";\nexport { default as DateTimePicker } from \"./date-time-picker\";\nexport { default as DateTimeRangePicker } from \"./date-time-range-picker\";\nexport { default as DraggablePaper } from \"./draggable-paper\";\nexport { default as EnhancedUploadImage } from \"./enhanced-upload-image\";\nexport { default as ImgViewer } from \"./img-viewer\";\nexport { default as LicensePlate } from \"./license-plate\";\nexport { default as SearchLicensePlate } from \"./license-plate-search\";\nexport { default as MobileDateTimePicker } from \"./mobile-date-time-picker\";\nexport { default as Modal } from \"./modal\";\nexport { default as NoResult } from \"./no-result\";\nexport { default as PaginationList } from \"./pagination-list\";\nexport { default as RadioButton } from \"./radio-button\";\nexport { default as NestedSelectort } from \"./selector\";\nexport { default as SonarSpinner } from \"./spinner/sonar\";\nexport { default as HorizontalStepper } from \"./stepper\";\nexport { default as SwitchButton } from \"./switch-button\";\nexport { default as Table } from \"./table\";\nexport { default as PatternTextField } from \"./text-field/number-pattern-input\";\nexport { default as FormInputNumber } from \"./text-field/number-type\";\nexport { default as FormInputText } from \"./text-field/text-type\";\nexport { default as UploadImage } from \"./upload-image\";\nexport { default as MapLocationPicker } from \"./map-location-picker\";\n","import * as React from \"react\";\nexport { React };\n","import { styled } from \"@mui/material/styles\";\nimport { IoIosArrowForward } from \"react-icons/io\";\nimport MuiAccordion from \"@mui/material/Accordion\";\nimport MuiAccordionSummary, {\n accordionSummaryClasses,\n} from \"@mui/material/AccordionSummary\";\nimport MuiAccordionDetails from \"@mui/material/AccordionDetails\";\nimport {\n AccordionProps,\n AccordionSummaryProps,\n Typography,\n} from \"@mui/material\";\nimport { ReactNode, useState } from \"react\";\n\nexport default function Page({\n data,\n}: {\n data: [{ title: string; body: ReactNode }];\n}) {\n const Accordion = styled((props: AccordionProps) => (\n <MuiAccordion disableGutters elevation={0} square {...props} />\n ))(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&::before\": {\n display: \"none\",\n },\n }));\n\n const AccordionSummary = styled((props: AccordionSummaryProps) => (\n <MuiAccordionSummary expandIcon={<IoIosArrowForward />} {...props} />\n ))(({ theme }) => ({\n backgroundColor: \"rgba(0, 0, 0, .03)\",\n flexDirection: \"row-reverse\",\n [`& .${accordionSummaryClasses.expandIconWrapper}.${accordionSummaryClasses.expanded}`]:\n {\n transform: \"rotate(90deg)\",\n },\n [`& .${accordionSummaryClasses.content}`]: {\n marginLeft: theme.spacing(1),\n },\n ...theme.applyStyles(\"dark\", {\n backgroundColor: \"rgba(255, 255, 255, .05)\",\n }),\n }));\n\n const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: \"1px solid rgba(0, 0, 0, .125)\",\n }));\n\n const [expanded, setExpanded] = useState<string | false>(\"\");\n\n const handleChange =\n (panel: string) => (event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n return (\n <>\n {data.map((item, index) => {\n const panelId = `panel${index}`;\n return (\n <Accordion\n key={panelId}\n expanded={expanded === panelId}\n onChange={handleChange(panelId)}\n >\n <AccordionSummary\n aria-controls={`${panelId}-content`}\n id={`${panelId}-header`}\n sx={{\n \"& .MuiAccordionSummary-expandIconWrapper\": {\n color: \"inherit\",\n },\n }}\n >\n <Typography component=\"span\">{item.title}</Typography>\n </AccordionSummary>\n <AccordionDetails>{item.body}</AccordionDetails>\n </Accordion>\n );\n })}\n </>\n );\n}\n","import { CircularProgress, Popper } from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport TextField from \"@mui/material/TextField\";\nimport * as React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { numberToHttpMethodMapping } from \"../../constants/httpMethod\";\nimport CustomeStyle from \"./custome-style\";\n\ninterface MultipleSelectChipProps {\n name: string;\n control: Control<any>;\n label?: string;\n data?: any;\n multipleitems?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n size?: \"small\" | \"medium\";\n clear?: boolean;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n placeholder?: string;\n}\n\nexport default function MultipleSelectChip({\n name,\n control,\n label,\n data,\n multipleitems,\n isLoading,\n disabled = false,\n size = \"medium\",\n clear = false,\n variant = \"outlined\",\n placeholder,\n}: MultipleSelectChipProps) {\n const dataOptions =\n data?.map((value: any) => ({\n title:\n value.userName || value.name || `${value.firstName} ${value.lastName}`,\n key: value.id || `key_${Math.random()}`,\n httpMethod: numberToHttpMethodMapping[value.httpMethod],\n url: value.url,\n licensePlate: value.licensePlate,\n })) || [];\n\n const combinedOptions = [\n multipleitems &&\n dataOptions.length > 0 && { title: \"انتخاب همه\", key: \"All\" },\n ...dataOptions,\n ].filter(Boolean);\n\n const [selectedValues, setSelectedValues] = React.useState<\n { title: string; key: string }[]\n >([]);\n\n const handleChange = (\n event: any,\n value: any,\n onChange: (value: any) => void\n ) => {\n if (multipleitems) {\n if (value.some((item: any) => item.title === \"انتخاب همه\")) {\n const allItems = [...dataOptions];\n setSelectedValues(allItems);\n onChange(allItems.map((item) => item.key));\n } else {\n setSelectedValues(value);\n onChange(value.map((item: any) => item.key));\n }\n } else {\n setSelectedValues([value]);\n onChange(value?.key || null);\n }\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <Autocomplete\n disableClearable={clear}\n disabled={disabled || isLoading}\n size={size}\n disableCloseOnSelect={multipleitems}\n options={combinedOptions}\n multiple={multipleitems}\n sx={{ width: \"100%\" }}\n noOptionsText=\"داده‌ای برای نمایش وجود ندارد\"\n value={\n multipleitems\n ? selectedValues\n : combinedOptions.find(\n (option) => String(option.key) === String(value)\n ) || { title: \"\", key: \"\" }\n }\n onChange={(event, value) => handleChange(event, value, onChange)}\n isOptionEqualToValue={(option, value) =>\n String(option.key) === String(value?.key)\n }\n getOptionLabel={(option) => option.title}\n loading={isLoading}\n loadingText=\"\"\n renderOption={(props, option) => (\n <CustomeStyle\n props={props}\n option={option}\n multipleitems={!!multipleitems}\n />\n )}\n slots={{ popper: Popper }}\n slotProps={{\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n rootBoundary: \"viewport\",\n altBoundary: true,\n padding: 10,\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top\", \"bottom\"],\n },\n },\n ],\n },\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n error={!!error}\n helperText={error?.message}\n inputRef={ref}\n variant={variant}\n placeholder={placeholder}\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {isLoading ? (\n <CircularProgress color=\"primary\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n }}\n />\n )}\n />\n )}\n />\n );\n}\n","export const numberToHttpMethodMapping: { [key: number]: string } = {\n 0: \"POST\",\n 1: \"GET\",\n 2: \"PUT\",\n 3: \"DELETE\",\n};\n\nexport const httpMethodToNumberMapping: { [key: string]: number } = {\n POST: 0,\n GET: 1,\n PUT: 2,\n DELETE: 3,\n};\n","import React from \"react\";\nimport LicensePlate from \"../../license-plate\";\nimport { Box } from \"@mui/material\";\nimport { FaCar } from \"react-icons/fa\";\nexport default function CustomeStyle({\n props,\n option,\n multipleitems,\n}: {\n props: any;\n option: {\n title: string;\n key: string | number;\n httpMethod?: string;\n url?: string;\n licensePlate?: string;\n };\n multipleitems: boolean;\n}) {\n let methodColor = \"black\"; // Default color\n let boldOption = multipleitems ? \"bold\" : \"normal\"; //درحالت انتخاب چند گزینه ، متن حالت bold دارد\n if (option.httpMethod === \"GET\") {\n methodColor = \"#4990e2\";\n } else if (option.httpMethod === \"POST\") {\n methodColor = \"green\";\n } else if (option.httpMethod === \"DELETE\") {\n methodColor = \"red\";\n } else if (option.httpMethod === \"PUT\") {\n methodColor = \"orange\";\n }\n if (option.httpMethod || option.url) {\n //نمایش بصورت تیتر اصل و لینک زیر تیتر و متد روبه روی آن\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <div style={{ fontWeight: boldOption }}>{option.title}</div>\n <span style={{ fontSize: \"small\", color: \"gray\" }}>\n {option.url}\n </span>\n </div>\n <div style={{ fontWeight: \"normal\", color: methodColor }}>\n {option.httpMethod}\n </div>\n </div>\n </li>\n );\n } else if (option.licensePlate) {\n // اگر LicensePlate وجود داشته باشد:\n // خروجی به صورت پلاک نمایش داده می‌شود.\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n flexWrap: \"wrap\",\n }}\n >\n <FaCar />\n <Box sx={{ marginLeft: \"7px\" }}>{option.title}</Box>\n <div\n style={{\n marginTop: 1,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <LicensePlate data={option.licensePlate} />\n </div>\n </div>\n </li>\n );\n } else {\n //وقتی که فقط دارای تایتل است\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <div style={{ fontWeight: boldOption }}>{option.title}</div>\n </div>\n </div>\n </li>\n );\n }\n}\n","import { Box, IconButton, Typography, useTheme } from \"@mui/material\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Image from \"next/image\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport letters from \"../constants/letters\";\nimport { convertToEnglishDigits, convertToPersianDigits } from \"@mamrp/utils\";\n\ninterface LicensePlateProps {\n width?: CSSProperties[\"width\"];\n name?: string;\n setValue?: any;\n data?: string;\n readOnly?: boolean;\n size?: \"small\" | \"medium\";\n}\n\nexport default function LicensePlate({\n width = \"100%\",\n name,\n setValue,\n data,\n readOnly = true,\n size,\n}: LicensePlateProps) {\n const theme = useTheme();\n const [open, setOpen] = useState(false);\n const [inputValues, setInputValues] = useState({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n\n const inputRefs = {\n input1: useRef<HTMLInputElement>(null),\n input2: useRef<HTMLInputElement>(null),\n input3: useRef<HTMLInputElement>(null),\n input4: useRef<HTMLInputElement>(null),\n };\n\n useEffect(() => {\n if (data) {\n let newdata = data.split(\" \").filter((word) => word !== \"ایران\");\n setInputValues({\n input1: newdata[0] || \"\",\n input2: newdata[1] || \"\",\n input3: newdata[2] || \"\",\n input4: newdata[3] || \"\",\n });\n } else {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n }\n }, [data]);\n\n const handleInputChange = (\n enteredInput: string,\n inputName: string,\n maxlength: number,\n minLength?: number\n ) => {\n if (inputName !== \"input2\") {\n const englishInput = convertToEnglishDigits(enteredInput);\n if (!/^\\d*$/.test(englishInput)) return;\n }\n\n const newInputValues = {\n ...inputValues,\n [inputName]: enteredInput,\n };\n setInputValues(newInputValues);\n\n const formattedPlate =\n convertToEnglishDigits(newInputValues.input1) +\n \" \" +\n newInputValues.input2 +\n \" \" +\n convertToEnglishDigits(newInputValues.input3) +\n \" ایران \" +\n convertToEnglishDigits(newInputValues.input4);\n\n setValue(name, formattedPlate);\n\n if (enteredInput.length === maxlength || minLength === 1) {\n if (inputName === \"input1\") setOpen(true);\n else if (inputName === \"input2\") {\n setOpen(false);\n } else inputRefs[\"input4\"]?.current?.focus();\n }\n };\n\n const inputStyle = {\n color: theme.palette.text.primary,\n width: \"30px\",\n textAlign: \"center\" as const,\n backgroundColor: \"transparent\",\n outline: \"none\",\n border: \"none\",\n cursor: readOnly || (!!data && readOnly) ? \"default\" : \"text\",\n fontSize: size === \"small\" ? \"1rem\" : \"1.05rem\",\n fontWeight: 600,\n };\n\n return (\n <>\n <Box\n sx={{\n width: width,\n border: \"1px solid #e5e7eb\",\n borderRadius: \"7px\",\n display: \"flex\",\n alignItems: \"center\",\n height: size === \"small\" ? \"3rem\" : \"3.5rem\",\n }}\n dir=\"ltr\"\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n backgroundColor: \"#172554\",\n width: size === \"small\" ? \"30px\" : \"36px\",\n height: size === \"small\" ? \"44px\" : \"52px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"7px\",\n mr: 0.4,\n }}\n >\n <Image\n src=\"/assets/images/iran-flag-dark.svg\"\n alt=\"Iran Flag\"\n width={size === \"small\" ? 15 : 18}\n height={size === \"small\" ? 11 : 14}\n />\n </Box>\n </Box>\n\n <Box\n sx={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-around\",\n fontSize: \"1.125rem\",\n lineHeight: \"1.75rem\",\n fontWeight: 600,\n color: \"#1f2937\",\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input1}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={inputStyle}\n value={convertToPersianDigits(inputValues.input1)}\n onChange={(e) => handleInputChange(e.target.value, \"input1\", 2)}\n />\n\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n {!data && (\n <Image\n src=\"/assets/images/solid-arrow-down.svg\"\n width={20}\n height={20}\n alt=\"arrow\"\n style={{ cursor: \"pointer\", marginRight: 4 }}\n />\n )}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input2}\n onClick={() => {\n if (!(readOnly || (!!data && readOnly))) setOpen(true);\n }}\n type=\"text\"\n minLength={1}\n maxLength={3}\n placeholder=\"-\"\n style={{ ...inputStyle, width: \"30px\", cursor: \"pointer\" }}\n value={inputValues.input2}\n readOnly\n />\n </Box>\n\n <Dialog dir=\"rtl\" open={open} onClose={() => setOpen(false)}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n <DialogTitle>انتخاب حرف پلاک</DialogTitle>\n <Box\n sx={{\n cursor: \"pointer\",\n paddingRight: \"1rem\",\n color: \"#737373\",\n }}\n onClick={() => setOpen(false)}\n >\n <IconButton>\n <IoClose />\n </IconButton>\n </Box>\n </Box>\n <DialogContent>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n my: 2,\n }}\n >\n {letters.map((letter, index) => (\n <Button\n key={index}\n variant=\"outlined\"\n color=\"primary\"\n sx={{\n border: \"none\",\n backgroundColor: \"#f0f0f0\",\n width: \"70px\",\n height: \"50px\",\n fontWeight: \"bold\",\n \":hover\": { backgroundColor: \"#e3e3e3\" },\n }}\n onClick={() => handleInputChange(letter, \"input2\", 3, 1)}\n >\n <Typography color=\"#117A4F\" fontWeight=\"bold\">\n {letter}\n </Typography>\n </Button>\n ))}\n </Box>\n\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mt: 2.5 }}>\n <Button\n sx={{ width: \"6rem\" }}\n variant=\"outlined\"\n color=\"error\"\n onClick={() => {\n handleInputChange(\"\", \"input2\", 3, 1);\n setOpen(false);\n }}\n >\n حذف حرف\n </Button>\n </Box>\n </DialogContent>\n </Dialog>\n\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input3}\n type=\"text\"\n maxLength={3}\n placeholder=\"- - -\"\n style={{ ...inputStyle, width: \"45px\" }}\n value={convertToPersianDigits(inputValues.input3)}\n onChange={(e) => handleInputChange(e.target.value, \"input3\", 3)}\n />\n\n <Box\n sx={{ height: \"40px\", width: \"1px\", backgroundColor: \"#e5e7eb\" }}\n />\n\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column-reverse\",\n gap: 0.5,\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input4}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={{\n ...inputStyle,\n width: size === \"small\" ? \"32px\" : \"40px\",\n }}\n value={convertToPersianDigits(inputValues.input4)}\n onChange={(e) => handleInputChange(e.target.value, \"input4\", 2)}\n />\n <Image\n src=\"/assets/images/iran.svg\"\n alt=\"Iran\"\n width={size === \"small\" ? 25 : 28}\n height={size === \"small\" ? 21 : 24}\n style={{ margin: 0, display: \"block\" }}\n />\n </Box>\n </Box>\n </Box>\n </>\n );\n}\n","const letters = [\n \"الف\",\n \"ب\",\n \"پ\",\n \"ت\",\n \"ث\",\n \"ج\",\n \"چ\",\n \"ح\",\n \"خ\",\n \"د\",\n \"ذ\",\n \"ر\",\n \"ز\",\n \"ژ\",\n \"س\",\n \"ش\",\n \"ص\",\n \"ض\",\n \"ط\",\n \"ظ\",\n \"ع\",\n \"غ\",\n \"ف\",\n \"ق\",\n \"ک\",\n \"گ\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n];\n\nexport default letters;\n","import { Box, Button } from \"@mui/material\";\nimport React, { useRef, useState } from \"react\";\nimport toast from \"react-hot-toast\";\nimport { PiPlugs, PiPlugsConnected } from \"react-icons/pi\";\n\n// ✅ Web Serial API types\ninterface SerialPort {\n open(options: {\n baudRate: number;\n dataBits?: number;\n stopBits?: number;\n parity?: \"none\" | \"even\" | \"odd\";\n flowControl?: \"none\" | \"hardware\";\n }): Promise<void>;\n close(): Promise<void>;\n readable: ReadableStream<Uint8Array> | null;\n writable: WritableStream<Uint8Array> | null;\n}\n\ninterface Serial {\n requestPort(): Promise<SerialPort>;\n getPorts(): Promise<SerialPort[]>;\n}\n\n// Component props\ntype ConnectToBasculeButtonProps = {\n baudRate: number;\n dataBits?: number;\n stopBits?: number;\n parity?: \"none\" | \"even\" | \"odd\";\n flowControl?: \"none\" | \"hardware\";\n};\n\nconst ConnectToBasculeButton: React.FC<ConnectToBasculeButtonProps> = ({\n baudRate,\n dataBits = 8,\n stopBits = 1,\n parity = \"none\",\n flowControl = \"none\",\n}) => {\n const [connected, setConnected] = useState(false);\n const portRef = useRef<SerialPort | null>(null);\n\n //connects to bascule\n const connectToBascule = async () => {\n if (!(\"serial\" in navigator)) {\n toast.error(\"Web Serial API توسط این مرورگر پشتیبانی نمی‌شود.\");\n return;\n }\n\n try {\n const serial = (navigator as any).serial as Serial;\n const port = await serial.requestPort();\n await port.open({ baudRate, dataBits, stopBits, parity, flowControl });\n portRef.current = port;\n setConnected(true);\n toast.success(\"اتصال به باسکول با موفقیت انجام شد.\");\n } catch (error) {\n console.error(error);\n toast.error(\"خطا در اتصال به باسکول. لطفاً دوباره تلاش کنید.\");\n }\n };\n\n return (\n <>\n <style>{`\n @keyframes jumpAnimation {\n 0% { transform: translateY(1px); }\n 12.5% { transform: translateY(-2px); }\n 25% { transform: translateY(1px); }\n 37.5% { transform: translateY(-2px); }\n 50% { transform: translateY(0); }\n 100% { transform: translateY(0); }\n }\n `}</style>\n\n <Button\n variant=\"contained\"\n onClick={connectToBascule}\n disabled={connected}\n sx={{ minWidth: \"11rem\" }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n fontSize: 16,\n }}\n >\n {connected ? (\n <>\n متصل به باسکول\n <PiPlugsConnected size={20} />\n </>\n ) : (\n <>\n اتصال به باسکول\n <PiPlugs\n size={20}\n style={{\n animation: \"jumpAnimation 2s ease-in-out infinite\",\n }}\n />\n </>\n )}\n </Box>\n </Button>\n </>\n );\n};\n\nexport default ConnectToBasculeButton;\n","import { Box, Button, Stack, styled, useTheme } from \"@mui/material\";\nimport React from \"react\";\nimport { IoIosArrowUp } from \"react-icons/io\";\n\ninterface AdvancedSearchButtonProps {\n isShowFilter: boolean;\n setIsShowFilter: React.Dispatch<React.SetStateAction<boolean>>;\n color?: \"black\" | \"white\";\n title?: string;\n onToggle?: (value: boolean) => void;\n icon?: React.ReactNode;\n borderRadius?: string;\n paddingY?: number;\n fontSize?: string;\n backgroundColor?: string;\n border?: boolean;\n}\n\nconst AnimatedIcon = styled(IoIosArrowUp, {\n shouldForwardProp: (prop) => prop !== \"isShowFilter\",\n})<{ isShowFilter: boolean }>(({ isShowFilter }) => ({\n transition: \"all 0.5s ease\",\n transform: `rotate(${isShowFilter ? 0 : \"0.5turn\"})`,\n}));\n\nexport default function AdvancedSearchButton({\n isShowFilter,\n setIsShowFilter,\n color = \"black\",\n title = \"فرم جستجو\",\n onToggle,\n icon,\n borderRadius,\n paddingY,\n fontSize,\n backgroundColor,\n border = false,\n}: AdvancedSearchButtonProps) {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n return (\n <Button\n onClick={() => {\n setIsShowFilter((prev) => !prev);\n onToggle?.(false);\n }}\n startIcon={<AnimatedIcon isShowFilter={isShowFilter} />}\n sx={{\n color: theme.palette.text.primary ?? color,\n borderRadius: borderRadius ?? 2,\n paddingY: paddingY,\n fontSize: fontSize,\n backgroundColor: backgroundColor,\n ...(border && {\n border: isDarkMode\n ? `1px solid rgba(255, 255, 255, 0.23)`\n : `1px solid rgba(0, 0, 0, 0.23)`,\n }),\n \"&:hover\": {\n backgroundColor: backgroundColor\n ? backgroundColor\n : isDarkMode\n ? \"rgba(255, 255, 255, 0.05)\"\n : \"rgba(0, 0, 0, 0.04)\",\n },\n }}\n fullWidth\n >\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Box>{icon ? icon : null}</Box>\n <Box>{title}</Box>\n </Stack>\n </Button>\n );\n}\n","import React from \"react\";\nimport { Box, Card, CardContent, Skeleton, Stack } from \"@mui/material\";\n\nfunction SkeletonCard() {\n return (\n <Card\n sx={{\n minWidth: 300,\n borderRadius: \"12px\",\n }}\n >\n <CardContent sx={{ padding: \"1rem 1rem !important\" }}>\n <Stack spacing={2}>\n {/* Car Name and Driver Name */}\n <Stack direction={\"row\"} justifyContent={\"space-between\"}>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n </Stack>\n\n {/* Date, Distance, and Status */}\n <Stack direction={\"row\"} justifyContent={\"space-between\"}>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n </Stack>\n\n {/* Fuel and Price */}\n <Stack\n direction={\"row\"}\n spacing={2}\n alignItems={\"center\"}\n justifyContent={\"space-between\"}\n >\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n </Stack>\n\n {/* License Plate */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n paddingY: \"0.5rem\",\n }}\n >\n <Skeleton variant=\"rectangular\" width={240} height={40} />\n </Box>\n\n {/* Button */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n paddingTop: \"1.5rem\",\n }}\n >\n <Skeleton variant=\"rectangular\" width={200} height={40} />\n </Box>\n </Stack>\n </CardContent>\n </Card>\n );\n}\n\nexport default SkeletonCard;\n","import { Control, Controller } from \"react-hook-form\";\nimport { FormControlLabel, Checkbox } from \"@mui/material\";\nimport React from \"react\";\n\n// داخل کامپوننت شما\nexport default function CustomCheckbox({ name,control,label, }:{name:string,control:Control<any>,label:string}) {\n return (\n <>\n <Controller\n name={name}\n control={control}\n defaultValue={false} // مقدار پیش‌فرض\n render={({ field }) => (\n <FormControlLabel\n control={\n <Checkbox\n {...field}\n checked={field.value} // اتصال مقدار چک‌باکس به فرم\n />\n }\n label={label}\n />\n )}\n />\n </>\n );\n}\n\n\n","import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n Divider,\r\n IconButton,\r\n useMediaQuery,\r\n} from \"@mui/material\";\r\nimport { GoTrash } from \"react-icons/go\";\r\nimport { MdClose, MdOutlineCancel } from \"react-icons/md\";\r\nimport { ReactNode } from \"react\";\r\n\r\ninterface ConfirmationDialogProps {\r\n open: boolean;\r\n handleClose: () => void;\r\n callback: (params: any) => void;\r\n callbackParams: any;\r\n headerText: string;\r\n bodyText: ReactNode;\r\n isLoading?: boolean;\r\n maxWidth: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n iconColor: string;\r\n color: \"error\" | \"info\" | \"primary\" | \"success\" | \"warning\" | \"secondary\";\r\n actionTitle: string;\r\n icon?: React.ReactElement<{ color?: string; size?: number }>;\r\n}\r\n\r\nexport default function ConfirmationDialog({\r\n open,\r\n handleClose,\r\n callback,\r\n callbackParams,\r\n headerText,\r\n bodyText,\r\n isLoading,\r\n maxWidth,\r\n iconColor,\r\n color,\r\n actionTitle,\r\n icon = <GoTrash />,\r\n}: ConfirmationDialogProps) {\r\n const isMobile = useMediaQuery(\"(max-width:785px)\");\r\n\r\n return (\r\n <Dialog\r\n open={open}\r\n onClose={handleClose}\r\n fullWidth\r\n maxWidth={maxWidth}\r\n disableScrollLock\r\n >\r\n <Box>\r\n <DialogTitle\r\n fontWeight={700}\r\n fontSize={\"1.2rem\"}\r\n display={\"flex\"}\r\n alignItems={\"center\"}\r\n gap={1}\r\n >\r\n {React.cloneElement(icon, {\r\n ...(icon.props as any),\r\n color: iconColor,\r\n size: isMobile ? 18 : 20,\r\n })}\r\n {headerText}\r\n </DialogTitle>\r\n <IconButton\r\n aria-label=\"close\"\r\n onClick={handleClose}\r\n sx={{\r\n position: \"absolute\",\r\n right: 8,\r\n top: 8,\r\n color: (theme) => theme.palette.grey[500],\r\n }}\r\n >\r\n <MdClose />\r\n </IconButton>\r\n <Divider />\r\n <DialogContent\r\n sx={{\r\n px: isMobile ? 2 : 3,\r\n py: isMobile ? 1.5 : 2,\r\n \"& .MuiTypography-root\": {\r\n fontSize: isMobile ? \"0.875rem\" : \"1rem\",\r\n lineHeight: isMobile ? 1.5 : 1.6,\r\n gap: isMobile ? \"2px\" : \"4px\",\r\n flexWrap: \"wrap\",\r\n wordBreak: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n whiteSpace: \"normal\",\r\n },\r\n }}\r\n >\r\n {bodyText}\r\n </DialogContent>\r\n <DialogActions\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n gap: \"12px\",\r\n alignItems: \"center\",\r\n padding: 3,\r\n }}\r\n >\r\n <Button\r\n onClick={handleClose}\r\n variant=\"outlined\"\r\n color={color}\r\n startIcon={<MdOutlineCancel size={15} />}\r\n sx={{ minWidth: \"120px\" }}\r\n >\r\n انصراف\r\n </Button>\r\n <Button\r\n disabled={isLoading}\r\n onClick={() => {\r\n callback(callbackParams);\r\n }}\r\n variant=\"contained\"\r\n color={color}\r\n sx={{ minWidth: \"120px\" }}\r\n startIcon={\r\n isLoading ? (\r\n <CircularProgress sx={{ color: \"white\" }} size={20} />\r\n ) : (\r\n React.cloneElement(icon, { size: 16 })\r\n )\r\n }\r\n >\r\n {actionTitle}\r\n </Button>\r\n </DialogActions>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n","\"use client\";\n\nimport { Calendar } from \"@mamrp/icons/common\";\nimport {\n Box,\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n InputAdornment,\n TextField,\n Tooltip,\n Typography,\n useTheme,\n} from \"@mui/material\";\nimport moment from \"moment-jalaali\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport {\n MdChevronLeft,\n MdChevronRight,\n MdClose,\n MdOutlineClear,\n} from \"react-icons/md\";\nimport DraggablePaper from \"../draggable-paper\";\n\n// Initialize moment-jalaali\nmoment.loadPersian({ usePersianDigits: false, dialect: \"persian-modern\" });\n\ninterface CustomDateTimePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"medium\";\n fullWidth?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n minDate?: string;\n maxDate?: string;\n clearable?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\n// Persian month names\nconst PERSIAN_MONTHS = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n];\n\n// Persian weekday names (starting from Saturday)\nconst PERSIAN_WEEKDAYS = [\"ش\", \"ی\", \"د\", \"س\", \"چ\", \"پ\", \"ج\"];\n\n// Convert Latin digits to Persian\nconst toPersianDigits = (num: number | string): string => {\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n return String(num).replace(/[0-9]/g, (d) => persianDigits[parseInt(d)]);\n};\n\n// Convert Persian digits to Latin\nconst toLatinDigits = (str: string): string => {\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n return str.replace(/[۰-۹]/g, (d) => String(persianDigits.indexOf(d)));\n};\n\nexport default function CustomDateTimePicker({\n name,\n control,\n label,\n size = \"medium\",\n fullWidth = true,\n disabled = false,\n showTime = true,\n minDate,\n maxDate,\n clearable = false,\n variant = \"outlined\",\n}: CustomDateTimePickerProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <DateTimePickerComponent\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n label={label}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n showTime={showTime}\n error={error}\n minDate={minDate}\n maxDate={maxDate}\n clearable={clearable}\n variant={variant}\n />\n )}\n />\n );\n}\n\ninterface DateTimePickerComponentProps {\n value: string;\n onChange: (value: string) => void;\n onBlur: () => void;\n label: string;\n size?: \"small\" | \"medium\";\n fullWidth?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n error?: any;\n minDate?: string;\n maxDate?: string;\n clearable?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst DateTimePickerComponent: React.FC<DateTimePickerComponentProps> = ({\n value,\n onChange,\n onBlur,\n label,\n size = \"medium\",\n fullWidth = true,\n disabled = false,\n showTime = true,\n error,\n minDate,\n maxDate,\n clearable = false,\n variant = \"outlined\",\n}) => {\n const theme = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const [hasUserInteracted, setHasUserInteracted] = useState(false);\n const hourInputRef = useRef<HTMLInputElement>(null);\n const minuteInputRef = useRef<HTMLInputElement>(null);\n const [hourInputValue, setHourInputValue] = useState(\"\");\n const [minuteInputValue, setMinuteInputValue] = useState(\"\");\n const [isEditingHour, setIsEditingHour] = useState(false);\n const [isEditingMinute, setIsEditingMinute] = useState(false);\n\n // Parse current value or use today\n const parseValue = (val: string) => {\n if (val) {\n const m = moment(val);\n if (m.isValid()) {\n return {\n year: m.jYear(),\n month: m.jMonth(),\n day: m.jDate(),\n hour: m.hour(),\n minute: m.minute(),\n };\n }\n }\n const now = moment();\n return {\n year: now.jYear(),\n month: now.jMonth(),\n day: now.jDate(),\n hour: now.hour(),\n minute: now.minute(),\n };\n };\n\n const [selectedDate, setSelectedDate] = useState(() => parseValue(value));\n const [viewYear, setViewYear] = useState(selectedDate.year);\n const [viewMonth, setViewMonth] = useState(selectedDate.month);\n\n // Update state when value changes externally\n useEffect(() => {\n const parsed = parseValue(value);\n setSelectedDate(parsed);\n setViewYear(parsed.year);\n setViewMonth(parsed.month);\n }, [value]);\n\n // Auto-update value when selectedDate changes (no need to hit confirm)\n useEffect(() => {\n // Only update if user has interacted or there's already a value (default from form)\n if (!hasUserInteracted && !value) return;\n\n const { year, month, day, hour, minute } = selectedDate;\n const m = moment(`${year}/${month + 1}/${day}`, \"jYYYY/jM/jD\");\n m.hour(hour);\n m.minute(minute);\n m.second(0);\n // Convert to UTC and format as ISO string for backend (ensure Latin digits)\n const newValue = toLatinDigits(m.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\"));\n\n // Only update if different to avoid infinite loop\n if (newValue !== value) {\n onChange(newValue);\n }\n }, [selectedDate, hasUserInteracted]);\n\n // Get days in month\n const getDaysInMonth = (year: number, month: number) => {\n return moment.jDaysInMonth(year, month);\n };\n\n // Get first day of month (0 = Saturday in Persian calendar)\n const getFirstDayOfMonth = (year: number, month: number) => {\n const firstDay = moment(`${year}/${month + 1}/1`, \"jYYYY/jM/jD\");\n // Convert to Persian week (Saturday = 0)\n const dayOfWeek = firstDay.day();\n // JavaScript: 0 = Sunday, 6 = Saturday\n // Persian: 0 = Saturday, 1 = Sunday, ..., 6 = Friday\n return dayOfWeek === 6 ? 0 : dayOfWeek + 1;\n };\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\n const days: (number | null)[] = [];\n\n // Add empty slots for days before the first day\n for (let i = 0; i < firstDay; i++) {\n days.push(null);\n }\n\n // Add days of the month\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(i);\n }\n\n return days;\n }, [viewYear, viewMonth]);\n\n // Navigate months\n const goToPrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11);\n setViewYear(viewYear - 1);\n } else {\n setViewMonth(viewMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0);\n setViewYear(viewYear + 1);\n } else {\n setViewMonth(viewMonth + 1);\n }\n };\n\n // Select a day\n const handleDayClick = (day: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => ({\n ...prev,\n year: viewYear,\n month: viewMonth,\n day,\n }));\n };\n\n // Handle time change\n const handleHourChange = (delta: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => {\n let newHour = prev.hour + delta;\n if (newHour < 0) newHour = 23;\n if (newHour > 23) newHour = 0;\n return { ...prev, hour: newHour };\n });\n };\n\n const handleMinuteChange = (delta: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => {\n let newMinute = prev.minute + delta;\n if (newMinute < 0) newMinute = 59;\n if (newMinute > 59) newMinute = 0;\n return { ...prev, minute: newMinute };\n });\n };\n\n // Handle direct time input with fluent typing\n const handleHourInputChange = (inputValue: string) => {\n setHasUserInteracted(true);\n const latinValue = toLatinDigits(inputValue).replace(/[^0-9]/g, \"\");\n if (latinValue.length <= 2) {\n const num = parseInt(latinValue, 10);\n // Only update if valid or empty\n if (latinValue === \"\" || (!isNaN(num) && num >= 0 && num <= 23)) {\n setHourInputValue(latinValue);\n if (!isNaN(num) && num >= 0 && num <= 23) {\n setSelectedDate((prev) => ({ ...prev, hour: num }));\n }\n // Focus minute input after 2 digits entered\n if (latinValue.length === 2 && !isNaN(num) && num >= 0 && num <= 23) {\n setTimeout(() => {\n minuteInputRef.current?.focus();\n minuteInputRef.current?.select();\n }, 50);\n }\n }\n }\n };\n\n const handleMinuteInputChange = (inputValue: string) => {\n setHasUserInteracted(true);\n const latinValue = toLatinDigits(inputValue).replace(/[^0-9]/g, \"\");\n if (latinValue.length <= 2) {\n const num = parseInt(latinValue, 10);\n // Only update if valid or empty\n if (latinValue === \"\" || (!isNaN(num) && num >= 0 && num <= 59)) {\n setMinuteInputValue(latinValue);\n if (!isNaN(num) && num >= 0 && num <= 59) {\n setSelectedDate((prev) => ({ ...prev, minute: num }));\n }\n }\n }\n };\n\n const handleHourFocus = () => {\n setIsEditingHour(true);\n setHourInputValue(\"\");\n };\n\n const handleHourBlur = () => {\n setIsEditingHour(false);\n // Reset to valid value if empty or invalid\n const num = parseInt(hourInputValue, 10);\n if (isNaN(num) || num < 0 || num > 23) {\n // Keep current selectedDate.hour\n }\n setHourInputValue(\"\");\n };\n\n const handleMinuteFocus = () => {\n setIsEditingMinute(true);\n setMinuteInputValue(\"\");\n };\n\n const handleMinuteBlur = () => {\n setIsEditingMinute(false);\n // Reset to valid value if empty or invalid\n const num = parseInt(minuteInputValue, 10);\n if (isNaN(num) || num < 0 || num > 59) {\n // Keep current selectedDate.minute\n }\n setMinuteInputValue(\"\");\n };\n\n // Handle keyboard events on time inputs\n const handleTimeKeyDown = (\n e: React.KeyboardEvent,\n type: \"hour\" | \"minute\"\n ) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n if (type === \"hour\") handleHourChange(1);\n else handleMinuteChange(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (type === \"hour\") handleHourChange(-1);\n else handleMinuteChange(-1);\n } else if (e.key === \"Enter\" || e.key === \"Tab\") {\n if (type === \"hour\") {\n e.preventDefault();\n minuteInputRef.current?.focus();\n minuteInputRef.current?.select();\n }\n }\n };\n\n // Handle scroll on time inputs\n const handleTimeScroll = useCallback(\n (e: React.WheelEvent, type: \"hour\" | \"minute\") => {\n e.preventDefault();\n const delta = e.deltaY < 0 ? 1 : -1;\n if (type === \"hour\") handleHourChange(delta);\n else handleMinuteChange(delta);\n },\n []\n );\n\n // Quick date change from input field arrows\n const changeDate = (days: number) => {\n const currentMoment = value ? moment(value) : moment();\n\n const newMoment = currentMoment.add(days, \"days\");\n onChange(toLatinDigits(newMoment.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\")));\n };\n\n // Confirm selection\n const handleConfirm = () => {\n const { year, month, day, hour, minute } = selectedDate;\n const m = moment(`${year}/${month + 1}/${day}`, \"jYYYY/jM/jD\");\n m.hour(hour);\n m.minute(minute);\n m.second(0);\n\n // Output in UTC ISO format for backend (ensure Latin digits)\n onChange(toLatinDigits(m.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\")));\n setIsOpen(false);\n };\n\n // Clear selection\n const handleClear = () => {\n setHasUserInteracted(false);\n onChange(\"\");\n setIsOpen(false);\n };\n\n // Go to today - only changes date, preserves current time\n const handleToday = () => {\n setHasUserInteracted(true);\n const now = moment();\n setSelectedDate((prev) => ({\n ...prev,\n year: now.jYear(),\n month: now.jMonth(),\n day: now.jDate(),\n // Keep the current time, don't change it\n }));\n setViewYear(now.jYear());\n setViewMonth(now.jMonth());\n };\n\n // Format display value - shorter format for compact display\n const displayValue = useMemo(() => {\n if (!value) return \"\";\n const m = moment(value);\n if (!m.isValid()) return \"\";\n\n if (showTime) {\n // Shorter format: YY/MM/DD - HH:mm (with dash between date and time)\n return toPersianDigits(m.format(\"jYYYY/jM/jD - HH:mm\"));\n }\n return toPersianDigits(m.format(\"jYYYY/jM/jD\"));\n }, [value, showTime]);\n\n // Check if a day is selected\n const isSelected = (day: number) => {\n return (\n selectedDate.day === day &&\n selectedDate.month === viewMonth &&\n selectedDate.year === viewYear\n );\n };\n\n // Check if a day is today\n const isToday = (day: number) => {\n const now = moment();\n return (\n now.jDate() === day &&\n now.jMonth() === viewMonth &&\n now.jYear() === viewYear\n );\n };\n\n return (\n <Box sx={{ width: fullWidth ? \"100%\" : \"auto\" }}>\n <TextField\n label={variant === \"outlined\" ? label : undefined}\n value={displayValue}\n onClick={() => !disabled && setIsOpen(true)}\n onBlur={onBlur}\n placeholder={variant === \"standard\" ? label : \"انتخاب تاریخ و زمان\"}\n variant={variant}\n fullWidth={fullWidth}\n size={size}\n disabled={disabled}\n error={!!error}\n helperText={error?.message}\n InputProps={{\n readOnly: true,\n sx: {\n cursor: disabled ? \"default\" : \"pointer\",\n pr: 0,\n pl: 0,\n },\n startAdornment: (\n <InputAdornment position=\"start\" sx={{ mr: -0.5, ml: 0.5 }}>\n <Tooltip title=\"روز قبل\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) changeDate(-1);\n }}\n disabled={disabled}\n sx={{\n opacity: disabled ? 0.5 : 1,\n p: 0.25,\n }}\n >\n <MdChevronRight size={28} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\" sx={{ ml: -0.5, mr: 2 }}>\n <Tooltip title=\"روز بعد\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) changeDate(1);\n }}\n disabled={disabled}\n sx={{\n opacity: disabled ? 0.5 : 1,\n p: 0.25,\n }}\n >\n <MdChevronLeft size={28} />\n </IconButton>\n </Tooltip>\n {clearable && value && !disabled && (\n <Tooltip title=\"پاک کردن\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setHasUserInteracted(false);\n onChange(\"\");\n }}\n sx={{ p: 0.25 }}\n >\n <MdOutlineClear size={20} />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip title=\"انتخاب تاریخ\">\n <IconButton\n size=\"small\"\n onClick={() => !disabled && setIsOpen(true)}\n disabled={disabled}\n sx={{ p: 0.25 }}\n >\n <Calendar size={22} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n InputLabelProps={variant === \"outlined\" ? { shrink: true } : undefined}\n sx={{\n \"& .MuiOutlinedInput-input\": {\n px: 0.5,\n textAlign: \"center\",\n },\n \"& .MuiInput-input\": {\n px: 0.5,\n textAlign: \"center\",\n },\n }}\n />\n\n <Dialog\n open={isOpen}\n onClose={() => setIsOpen(false)}\n maxWidth=\"xs\"\n fullWidth\n PaperProps={{\n sx: { borderRadius: 3 },\n }}\n PaperComponent={DraggablePaper}\n >\n <DialogTitle\n id=\"draggable-dialog\"\n sx={{\n cursor: \"move\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n py: 1,\n px: 1.5,\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.6 }}>\n <Calendar size={20} />\n <Typography fontWeight={700} fontSize=\"1rem\">\n انتخاب تاریخ {showTime && \"و زمان\"}\n </Typography>\n </Box>\n <IconButton onClick={() => setIsOpen(false)} size=\"small\">\n <MdClose />\n </IconButton>\n </DialogTitle>\n\n <Divider />\n\n <DialogContent sx={{ px: 3, pt: 1 }}>\n {/* Time Picker - at the top */}\n {showTime && (\n <>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 2,\n }}\n >\n {/* Minutes */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n }}\n >\n <IconButton\n onClick={() => handleMinuteChange(1)}\n size=\"small\"\n >\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(-90deg)\" }}\n />\n </IconButton>\n <TextField\n inputRef={minuteInputRef}\n value={\n isEditingMinute\n ? minuteInputValue\n : toPersianDigits(\n String(selectedDate.minute).padStart(2, \"0\")\n )\n }\n onChange={(e) => handleMinuteInputChange(e.target.value)}\n onFocus={handleMinuteFocus}\n onBlur={handleMinuteBlur}\n onKeyDown={(e) => handleTimeKeyDown(e, \"minute\")}\n onWheel={(e) => handleTimeScroll(e, \"minute\")}\n inputProps={{\n style: {\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n padding: \"10px 6px\",\n width: 48,\n },\n maxLength: 2,\n }}\n size=\"small\"\n sx={{\n \"& .MuiOutlinedInput-root\": {\n bgcolor: \"action.hover\",\n borderRadius: 1,\n },\n }}\n />\n <IconButton\n onClick={() => handleMinuteChange(-1)}\n size=\"small\"\n >\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(90deg)\" }}\n />\n </IconButton>\n <Typography variant=\"caption\" color=\"text.secondary\">\n دقیقه\n </Typography>\n </Box>\n\n <Typography fontSize=\"1.5rem\" fontWeight={700}>\n :\n </Typography>\n\n {/* Hours */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={() => handleHourChange(1)} size=\"small\">\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(-90deg)\" }}\n />\n </IconButton>\n <TextField\n inputRef={hourInputRef}\n value={\n isEditingHour\n ? hourInputValue\n : toPersianDigits(\n String(selectedDate.hour).padStart(2, \"0\")\n )\n }\n onChange={(e) => handleHourInputChange(e.target.value)}\n onFocus={handleHourFocus}\n onBlur={handleHourBlur}\n onKeyDown={(e) => handleTimeKeyDown(e, \"hour\")}\n onWheel={(e) => handleTimeScroll(e, \"hour\")}\n inputProps={{\n style: {\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n padding: \"10px 6px\",\n width: 48,\n },\n maxLength: 2,\n }}\n size=\"small\"\n sx={{\n \"& .MuiOutlinedInput-root\": {\n bgcolor: \"action.hover\",\n borderRadius: 1,\n },\n }}\n />\n <IconButton onClick={() => handleHourChange(-1)} size=\"small\">\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(90deg)\" }}\n />\n </IconButton>\n <Typography variant=\"caption\" color=\"text.secondary\">\n ساعت\n </Typography>\n </Box>\n </Box>\n <Divider sx={{ my: 1 }} />\n </>\n )}\n\n {/* Month/Year Navigation */}\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n mb: 1,\n }}\n >\n <IconButton onClick={goToNextMonth} size=\"small\">\n <MdChevronRight size={24} />\n </IconButton>\n\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n <Typography fontWeight={600} fontSize=\"1rem\">\n {PERSIAN_MONTHS[viewMonth]} {toPersianDigits(viewYear)}\n </Typography>\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={handleToday}\n sx={{\n fontSize: \"0.75rem\",\n py: 0.25,\n px: 1,\n minWidth: \"auto\",\n color: \"text.secondary\",\n }}\n >\n امروز\n </Button>\n </Box>\n\n <IconButton onClick={goToPrevMonth} size=\"small\">\n <MdChevronLeft size={24} />\n </IconButton>\n </Box>\n\n {/* Weekday Headers */}\n <Box\n sx={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n gap: 0.25,\n mb: 0.5,\n }}\n >\n {PERSIAN_WEEKDAYS.map((day, index) => (\n <Box\n key={index}\n sx={{\n textAlign: \"center\",\n py: 0.25,\n color: index === 6 ? \"error.main\" : \"text.secondary\",\n fontWeight: 600,\n fontSize: \"0.8rem\",\n }}\n >\n {day}\n </Box>\n ))}\n </Box>\n\n {/* Calendar Grid */}\n <Box\n sx={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n gap: 0.25,\n }}\n >\n {calendarDays.map((day, index) => (\n <Box\n key={index}\n onClick={() => day && handleDayClick(day)}\n sx={{\n aspectRatio: \"1\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"50%\",\n cursor: day ? \"pointer\" : \"default\",\n fontSize: \"0.9rem\",\n fontWeight: isSelected(day!) ? 700 : 400,\n bgcolor: isSelected(day!)\n ? \"primary.main\"\n : isToday(day!)\n ? \"primary.lighter\"\n : \"transparent\",\n color: isSelected(day!)\n ? \"primary.contrastText\"\n : isToday(day!)\n ? \"primary.main\"\n : index % 7 === 6\n ? \"error.main\"\n : \"text.primary\",\n border:\n isToday(day!) && !isSelected(day!)\n ? `2px solid ${theme.palette.primary.main}`\n : \"none\",\n transition: \"all 0.15s ease\",\n \"&:hover\": day\n ? {\n bgcolor: isSelected(day!)\n ? \"primary.dark\"\n : \"action.hover\",\n }\n : {},\n }}\n >\n {day && toPersianDigits(day)}\n </Box>\n ))}\n </Box>\n </DialogContent>\n\n <Divider />\n\n {/* <DialogActions sx={{ px: 2, py: 2 }}>\n <Button onClick={handleClear} startIcon={<Clear />} color=\"inherit\">\n پاک کردن\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleConfirm}\n startIcon={<Check />}\n >\n تایید\n </Button>\n </DialogActions> */}\n </Dialog>\n </Box>\n );\n};\n","import { Paper, PaperProps } from \"@mui/material\";\r\nimport { useRef } from \"react\";\r\nimport Draggable from \"react-draggable\";\r\n\r\ninterface DraggablePaperProps extends PaperProps {\r\n handle?: string;\r\n cancel?: string;\r\n}\r\n\r\nexport default function DraggablePaper({\r\n handle = \"#draggable-dialog\",\r\n cancel = '[class*=\"MuiDialogContent-root\"]',\r\n ...props\r\n}: DraggablePaperProps) {\r\n const nodeRef = useRef(null);\r\n\r\n return (\r\n <Draggable\r\n nodeRef={nodeRef}\r\n handle={handle}\r\n cancel={cancel}\r\n bounds=\"parent\"\r\n defaultPosition={{ x: 0, y: 0 }}\r\n >\r\n <Paper ref={nodeRef} {...props} />\r\n </Draggable>\r\n );\r\n}\r\n","\"use client\";\n\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Divider,\n IconButton,\n Stack,\n Tooltip,\n} from \"@mui/material\";\nimport { ReactNode } from \"react\";\nimport { IconType } from \"react-icons\";\nimport { MdClose } from \"react-icons/md\";\nimport DraggablePaper from \"../draggable-paper\";\n\n// Type helper for palette colors\nexport type PaletteColor =\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"success\"\n | \"tertiary\"\n | \"accent\"\n | \"successLight\"\n | \"orange\"\n | \"indigo\"\n | \"teal\"\n | \"pinkLight\"\n | \"aqua\"\n | \"customRed\";\n\nexport interface CustomDialogProps {\n title: string;\n icon?: IconType;\n iconColor?: PaletteColor;\n open: boolean;\n onClose: () => void;\n maxWidth?: DialogProps[\"maxWidth\"];\n fullWidth?: boolean;\n children: ReactNode;\n actions?: ReactNode;\n isSubmiting?: boolean;\n}\n\nexport default function CustomDialog({\n title,\n icon: Icon,\n iconColor,\n open,\n onClose,\n maxWidth = \"sm\",\n fullWidth = true,\n children,\n actions,\n isSubmiting = false,\n}: CustomDialogProps) {\n const handleClose = (\n event: {},\n reason: \"backdropClick\" | \"escapeKeyDown\"\n ) => {\n if (isSubmiting) {\n return;\n }\n onClose();\n };\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth={maxWidth}\n fullWidth={fullWidth}\n PaperComponent={DraggablePaper}\n disableScrollLock\n >\n <DialogTitle\n fontWeight={700}\n fontSize={\"1.2rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={\"4px\"}\n sx={{ cursor: \"move\" }}\n id=\"draggable-dialog\"\n >\n <Stack direction={\"row\"} alignItems={\"center\"} spacing={0.5}>\n <Box>\n {Icon && (\n <Stack\n alignItems={\"center\"}\n sx={{\n color: iconColor\n ? (theme) => {\n const paletteColors: PaletteColor[] = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"warning\",\n \"info\",\n \"success\",\n \"tertiary\",\n \"accent\",\n \"successLight\",\n \"orange\",\n \"indigo\",\n \"teal\",\n \"pinkLight\",\n \"aqua\",\n \"customRed\",\n ];\n if (paletteColors.includes(iconColor as PaletteColor)) {\n const palette = theme.palette as any;\n return palette[iconColor]?.main || iconColor;\n }\n return iconColor;\n }\n : (theme) => theme.palette.info.main,\n pr: 0.5,\n }}\n >\n <Icon size={20} />\n </Stack>\n )}\n </Box>\n <Box>{title}</Box>\n </Stack>\n </DialogTitle>\n\n <Tooltip title=\"بستن\">\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n disabled={isSubmiting}\n >\n <MdClose />\n </IconButton>\n </Tooltip>\n\n <Divider />\n\n <DialogContent>{children}</DialogContent>\n\n {actions && (\n <>\n <DialogActions>{actions}</DialogActions>\n </>\n )}\n </Dialog>\n );\n}\n","import {\n Box,\n Button,\n Divider,\n IconButton,\n Typography,\n TextField,\n InputAdornment,\n useTheme,\n Tooltip,\n} from \"@mui/material\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { MdClose } from \"react-icons/md\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { Clock } from \"@mamrp/icons/common\";\n\ninterface CustomTimePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"medium\";\n fullwidth?: boolean;\n autoRefresh?: boolean;\n disabled?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nexport default function CustomTimePicker({\n name,\n control,\n label,\n size = \"small\",\n fullwidth = false,\n autoRefresh = false,\n disabled = false,\n variant = \"outlined\",\n}: CustomTimePickerProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <TimePickerComponent\n {...field}\n label={label}\n size={size}\n error={error}\n fullwidth={fullwidth}\n autoRefresh={autoRefresh}\n disabled={disabled}\n variant={variant}\n />\n )}\n />\n );\n}\n\ninterface TimePickerComponentProps {\n value: string;\n onChange: (value: string) => void;\n onBlur: () => void;\n label: string;\n size?: \"small\" | \"medium\";\n error?: any;\n fullwidth?: boolean;\n autoRefresh?: boolean;\n disabled?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst TimePickerComponent: React.FC<TimePickerComponentProps> = ({\n value,\n onChange,\n onBlur,\n label,\n size = \"small\",\n error,\n fullwidth,\n autoRefresh,\n disabled = false,\n variant = \"outlined\",\n}) => {\n const theme = useTheme();\n\n const initialHour = value ? parseInt(value.split(\":\")[0]) : null;\n const initialMinute = value ? parseInt(value.split(\":\")[1]) : null;\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedHour, setSelectedHour] = useState<number | null>(initialHour);\n const [selectedMinute, setSelectedMinute] = useState<number | null>(\n initialMinute\n );\n\n const hourRefs = useRef<(HTMLDivElement | null)[]>([]);\n const minuteRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const hours = Array.from({ length: 24 }, (_, i) => i);\n const minutes = Array.from({ length: 60 }, (_, i) => i);\n\n useEffect(() => {\n if (isModalOpen) {\n setTimeout(() => {\n if (selectedHour !== null) {\n hourRefs.current[selectedHour]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n if (selectedMinute !== null) {\n minuteRefs.current[selectedMinute]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n }, 0);\n }\n }, [isModalOpen, selectedHour, selectedMinute]);\n\n useEffect(() => {\n const updatedHour = value ? parseInt(value.split(\":\")[0]) : null;\n setSelectedHour(updatedHour);\n const updatedMinute = value ? parseInt(value.split(\":\")[1]) : null;\n setSelectedMinute(updatedMinute);\n }, [value, autoRefresh]);\n\n const handleSelectHour = (hour: number) => {\n setSelectedHour(hour);\n if (selectedMinute !== null) {\n onChange(formatTime(hour, selectedMinute));\n }\n };\n\n const handleSelectMinute = (minute: number) => {\n setSelectedMinute(minute);\n if (selectedHour !== null) {\n onChange(formatTime(selectedHour, minute));\n }\n };\n\n const formatTime = (hour: number, minute: number) => {\n return `${hour.toString().padStart(2, \"0\")}:${minute\n .toString()\n .padStart(2, \"0\")}`;\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let inputValue = e.target.value;\n\n // Prevent deleting the colon (:) or entering invalid characters\n if (!/^\\d{0,2}:\\d{0,2}$/.test(inputValue)) {\n return;\n }\n\n const [hourPart = \"\", minutePart = \"\"] = inputValue.split(\":\");\n\n // Validate and correct hour and minute ranges\n if (parseInt(hourPart) > 23) {\n inputValue = `23:${minutePart}`;\n }\n if (parseInt(minutePart) > 59) {\n inputValue = `${hourPart}:59`;\n }\n\n // Automatically add \":\" after two digits for hour if not present\n if (hourPart.length === 2 && !inputValue.includes(\":\")) {\n inputValue = hourPart + \":\";\n }\n\n onChange(inputValue);\n };\n\n const handleBlur = () => {\n if (!value || value === \":\") {\n onChange(\"00:00\");\n return;\n }\n\n const [hourPart = \"0\", minutePart = \"0\"] = value.split(\":\");\n const hour = Math.min(23, parseInt(hourPart) || 0);\n const minute = Math.min(59, parseInt(minutePart) || 0);\n const formattedTime = formatTime(hour, minute);\n\n onChange(formattedTime);\n };\n\n return (\n <Box display=\"flex\" alignItems=\"center\" gap={0.5} sx={{ width: \"100%\" }}>\n <TextField\n disabled={disabled}\n label={variant === \"standard\" ? \"\" : label}\n value={value}\n onChange={handleInputChange}\n onBlur={handleBlur}\n InputLabelProps={{\n shrink: true,\n style: {\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n }}\n variant={variant}\n size={size}\n inputProps={{\n maxLength: 5, // Ensures the format is always \"HH:MM\"\n style: { textAlign: \"center\" },\n }}\n InputProps={{\n ...(!disabled && {\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip title=\"انتخاب زمان\">\n <IconButton onClick={() => setIsModalOpen(true)}>\n <Clock size={22} color={theme.palette.text.primary} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n }),\n }}\n sx={{\n width: fullwidth ? \"100%\" : \"8rem\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error ? \"#D32F2F\" : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error ? \"#D32F2F\" : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n }}\n fullWidth\n />\n\n <Dialog\n open={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n fullWidth\n maxWidth=\"xs\"\n >\n <DialogTitle\n fontWeight={700}\n fontSize=\"1.2rem\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"4px\"\n >\n انتخاب زمان\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={() => setIsModalOpen(false)}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <MdClose />\n </IconButton>\n <Divider sx={{ my: \"10px\" }} />\n\n <DialogContent>\n <Box display=\"flex\" justifyContent=\"space-between\" gap=\"20px\">\n {/* Minute Selector */}\n <Box flex={1}>\n <Typography variant=\"h6\" textAlign=\"center\" gutterBottom>\n دقیقه\n </Typography>\n\n <Box\n maxHeight=\"200px\"\n overflow=\"auto\"\n border=\"1px solid lightgray\"\n borderRadius=\"8px\"\n >\n {minutes.map((minute) => (\n <Box\n key={minute}\n ref={(el: HTMLDivElement | null) => {\n minuteRefs.current[minute] = el;\n }}\n p=\"10px\"\n textAlign=\"center\"\n bgcolor={\n minute === selectedMinute ? \"primary.light\" : \"inherit\"\n }\n color={minute === selectedMinute ? \"white\" : \"inherit\"}\n sx={{ cursor: \"pointer\" }}\n onClick={() => handleSelectMinute(minute)}\n >\n <Typography>\n {minute.toString().padStart(2, \"0\")}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n\n {/* Hour Selector */}\n <Box flex={1}>\n <Typography variant=\"h6\" textAlign=\"center\" gutterBottom>\n ساعت\n </Typography>\n\n <Box\n maxHeight=\"200px\"\n overflow=\"auto\"\n border=\"1px solid lightgray\"\n borderRadius=\"8px\"\n >\n {hours.map((hour) => (\n <Box\n key={hour}\n ref={(el: HTMLDivElement | null) => {\n hourRefs.current[hour] = el;\n }}\n p=\"10px\"\n textAlign=\"center\"\n bgcolor={\n hour === selectedHour ? \"primary.light\" : \"inherit\"\n }\n color={hour === selectedHour ? \"white\" : \"inherit\"}\n sx={{ cursor: \"pointer\" }}\n onClick={() => handleSelectHour(hour)}\n >\n <Typography>{hour.toString().padStart(2, \"0\")}</Typography>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n </DialogContent>\n\n <DialogActions sx={{ padding: 2 }}>\n <Button\n onClick={() => setIsModalOpen(false)}\n sx={{ fontSize: \"1.1rem\" }}\n >\n انتخاب\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n );\n};\n","\"use client\";\n\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { Box, Button, IconButton, Tooltip } from \"@mui/material\";\nimport {\n MaterialReactTable,\n MRT_ColumnFiltersState,\n MRT_ColumnVirtualizer,\n MRT_PaginationState,\n MRT_SortingState,\n useMaterialReactTable,\n type MRT_ColumnDef,\n type MRT_TableOptions,\n} from \"material-react-table\";\nimport { MRT_Localization_FA } from \"material-react-table/locales/fa\";\nimport { useMemo, useRef } from \"react\";\nimport { MdOutlineRefresh } from \"react-icons/md\";\n\n/**\n * لوکالیزیشن سفارشی فارسی برای جدول\n */\nconst customLocalization = {\n ...MRT_Localization_FA,\n mrt_columns_showHide_resetOrder: \"بازنشانی ترتیب\",\n};\n\n/**\n * Props کامپوننت DataTable\n *\n * این اینترفیس تمام گزینه‌های قابل تنظیم برای کامپوننت DataTable را تعریف می‌کند\n * و مستقیماً با خروجی useTableState سازگار است\n *\n * @template T - نوع داده‌های جدول (مثال: Car، User، Product)\n */\nexport type DataTableProps<T extends Record<string, any>> = {\n // === داده‌ها ===\n /** آرایه داده‌های جدول */\n data: T[];\n /** تعریف ستون‌های جدول */\n columns: MRT_ColumnDef<T>[];\n\n // === وضعیت بارگذاری ===\n /** آیا جدول در حال بارگذاری است */\n isLoading?: boolean;\n /** آیا داده‌ها در حال به‌روزرسانی هستند */\n isRefetching?: boolean;\n\n // === صفحه‌بندی ===\n /** وضعیت صفحه‌بندی (مستقیماً از useTableState) */\n pagination: MRT_PaginationState;\n /** تابع تغییر صفحه‌بندی (setPagination از useTableState) */\n onPaginationChange: (\n updater:\n | MRT_PaginationState\n | ((old: MRT_PaginationState) => MRT_PaginationState)\n ) => void;\n /** تعداد کل رکوردها (از API response) */\n totalRows: number;\n /** فعال‌سازی صفحه‌بندی دستی (پیش‌فرض: true) */\n manualPagination?: boolean;\n /** غیرفعال کردن نمایش پیجینیشن (پیش‌فرض: false) */\n disablePagination?: boolean;\n\n // === فیلترینگ ===\n /** فیلترهای ستون (columnFilters از useTableState) */\n columnFilters?: MRT_ColumnFiltersState;\n /** تابع تغییر فیلترهای ستون */\n onColumnFiltersChange?: (\n filters:\n | MRT_ColumnFiltersState\n | ((old: MRT_ColumnFiltersState) => MRT_ColumnFiltersState)\n ) => void;\n /** فعال‌سازی فیلترینگ دستی (پیش‌فرض: true) */\n manualFiltering?: boolean;\n /** تابع پاک کردن فیلترها (clearFilters از useTableState) */\n onClearFilters?: () => void;\n /** نمایش دکمه پاک کردن فیلترها */\n showClearFiltersButton?: boolean;\n\n // === مرتب‌سازی ===\n /** وضعیت مرتب‌سازی (sorting از useTableState) */\n sorting?: MRT_SortingState;\n /** تابع تغییر مرتب‌سازی (setSorting از useTableState) */\n onSortingChange?: (\n sorting: MRT_SortingState | ((old: MRT_SortingState) => MRT_SortingState)\n ) => void;\n /** فعال‌سازی مرتب‌سازی دستی (پیش‌فرض: false) */\n manualSorting?: boolean;\n\n // === نمایش ستون‌ها ===\n /** وضعیت نمایش ستون‌ها (columnVisibility از useTableState) */\n columnVisibility?: Record<string, boolean>;\n /** تابع تغییر نمایش ستون‌ها (setColumnVisibility از useTableState) */\n onColumnVisibilityChange?: (\n visibility:\n | Record<string, boolean>\n | ((old: Record<string, boolean>) => Record<string, boolean>)\n ) => void;\n\n // === ترتیب ستون‌ها ===\n /** ترتیب ستون‌ها */\n columnOrder?: string[];\n /** تابع تغییر ترتیب ستون‌ها */\n onColumnOrderChange?: (\n order: string[] | ((old: string[]) => string[])\n ) => void;\n\n // === ظاهر جدول ===\n /** فعال‌سازی header چسبان */\n enableStickyHeader?: boolean;\n /** حداکثر ارتفاع جدول */\n maxHeight?: string;\n /** تراکم جدول */\n density?: \"comfortable\" | \"compact\" | \"spacious\";\n\n // === ویژگی‌های جدول ===\n /** امکان تغییر ترتیب ستون‌ها */\n enableColumnOrdering?: boolean;\n /** فعال‌سازی جستجوی سراسری */\n enableGlobalFilter?: boolean;\n /** فعال‌سازی انواع فیلتر ستون */\n enableColumnFilterModes?: boolean;\n /** فعال‌سازی انتخاب سطر */\n enableRowSelection?: boolean;\n\n // === کنترل نمایش فیلترها ===\n /** وضعیت نمایش فیلترهای ستون */\n showColumnFilters?: boolean;\n /** تابع تغییر وضعیت نمایش فیلترها */\n onShowColumnFiltersChange?: (\n updater: boolean | ((old: boolean) => boolean)\n ) => void;\n\n // === تولبارهای سفارشی ===\n /** رندر کردن اکشن‌های سفارشی بالای جدول */\n renderTopToolbarCustomActions?: (props: { table: any }) => React.ReactNode;\n /** رندر کردن اکشن‌های سفارشی پایین جدول */\n renderBottomToolbarCustomActions?: (props: { table: any }) => React.ReactNode;\n\n // === تنظیمات اضافی ===\n /** گزینه‌های اضافی جدول */\n tableOptions?: Partial<MRT_TableOptions<T>>;\n /** لوکالیزیشن سفارشی */\n localization?: Record<string, string>;\n /** فعال‌سازی مجازی‌سازی ستون‌ها برای عملکرد بهتر در ستون‌های زیاد */\n enableColumnVirtualization?: boolean;\n /** گزینه‌های مجازی‌سازی ستون‌ها */\n columnVirtualizerOptions?: MRT_TableOptions<T>[\"columnVirtualizerOptions\"];\n /** فعال‌سازی تغییر اندازه ستون‌ها (پیش‌فرض: false) */\n enableColumnResizing?: boolean;\n /** حالت چیدمان جدول برای کنترل عرض ستون‌ها (پیش‌فرض: \"semantic\") */\n layoutMode?: \"semantic\" | \"grid\" | \"grid-no-grow\";\n /** رندر کردن پنل جزئیات برای هر سطر (expandable rows) */\n renderDetailPanel?: MRT_TableOptions<T>[\"renderDetailPanel\"];\n /** تابع برای تازه‌سازی داده‌ها - دکمه refresh در تولبار نمایش داده می‌شود */\n refetch?: () => void;\n};\n\n/**\n * کامپوننت DataTable - جدول پیشرفته با قابلیت‌های کامل\n *\n * این کامپوننت یک wrapper پیشرفته برای Material React Table است که:\n * - مستقیماً با useTableState یکپارچه می‌شود\n * - تمام ویژگی‌های مدرن جدول را پشتیبانی می‌کند\n * - لوکالیزیشن کامل فارسی دارد\n * - بهینه‌سازی شده برای عملکرد بالا\n *\n * ## راهنمای استفاده با useTableState:\n *\n * ### مرحله 1: تنظیم useTableState\n * ```tsx\n * const tableState = useTableState(\"my-table\", {\n * initialPageSize: 25,\n * debounceTime: 500,\n * sortMapping: {\n * name: \"NameOrdering\",\n * status: \"StatusOrdering\"\n * }\n * });\n * ```\n *\n * ### مرحله 2: فراخوانی API\n * ```tsx\n * const { data, refetch } = useGetData({\n * PageNumber: tableState.pagination.pageIndex + 1,\n * PageSize: tableState.pagination.pageSize,\n * ...tableState.debouncedFiltring,\n * ...tableState.mappedSorting,\n * });\n * ```\n *\n * ### مرحله 3: تعریف ستون‌ها با فیلتر\n * ```tsx\n * const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [\n * {\n * accessorKey: \"name\",\n * header: \"نام\",\n * size: 200, // عرض ستون\n * Filter: ({ column }) => (\n * <FormInputText\n * control={control}\n * name=\"NameFiltering\"\n * placeholder=\"فیلتر نام\"\n * />\n * ),\n * },\n * // سایر ستون‌ها...\n * ], [control]);\n * ```\n *\n * ### مرحله 4: رندر DataTable\n * ```tsx\n * return (\n * <DataTable\n * data={data?.items || []}\n * columns={columns}\n * isLoading={isLoading}\n * pagination={tableState.pagination}\n * onPaginationChange={tableState.setPagination}\n * totalRows={data?.totalRecords || 0}\n * sorting={tableState.sorting}\n * onSortingChange={tableState.setSorting}\n * columnVisibility={tableState.columnVisibility}\n * onColumnVisibilityChange={tableState.setColumnVisibility}\n * showColumnFilters={showFilters}\n * onShowColumnFiltersChange={setShowFilters}\n * onClearFilters={handleClearFilters}\n * manualSorting={true}\n * refetch={refetch}\n * />\n * );\n * ```\n *\n * ## ویژگی‌های کلیدی:\n *\n * 📄 **صفحه‌بندی هوشمند**: صفحه‌بندی سمت سرور با همگام‌سازی خودکار\n * 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing\n * 🔀 **مرتب‌سازی قدرتمند**: مرتب‌سازی با نگاشت بک‌اند\n * 👁️ **مدیریت ستون‌ها**: نمایش/مخفی کردن ستون‌ها با localStorage\n * 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی\n * ⚡ **بهینه‌سازی**: رندرینگ بهینه با useMemo و مجازی‌سازی ستون‌ها برای عملکرد بالا\n * 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم\n * 🔄 **تازه‌سازی**: دکمه refresh برای بارگذاری مجدد داده‌ها\n * 📐 **تغییر اندازه ستون‌ها**: امکان تغییر عرض ستون‌ها توسط کاربر\n * 📋 **پنل جزئیات**: نمایش جزئیات بیشتر برای هر سطر (expandable rows)\n *\n * ## Props مهم:\n *\n * | Prop | نوع | پیش‌فرض | توضیحات |\n * |------|-----|---------|---------|\n * | `data` | `T[]` | - | آرایه داده‌های جدول |\n * | `columns` | `MRT_ColumnDef<T>[]` | - | تعریف ستون‌های جدول |\n * | `pagination` | `MRT_PaginationState` | - | وضعیت صفحه‌بندی |\n * | `totalRows` | `number` | - | تعداد کل رکوردها |\n * | `isLoading` | `boolean` | `false` | وضعیت بارگذاری |\n * | `disablePagination` | `boolean` | `false` | غیرفعال کردن پیجینیشن |\n * | `manualSorting` | `boolean` | `false` | مرتب‌سازی سمت سرور |\n * | `enableColumnResizing` | `boolean` | `false` | امکان تغییر عرض ستون |\n * | `layoutMode` | `string` | `\"semantic\"` | حالت چیدمان (`\"grid\"` برای عرض ثابت) |\n * | `refetch` | `() => void` | - | تابع تازه‌سازی داده‌ها |\n *\n * @template T - نوع داده‌های جدول\n *\n * @example\n * ```tsx\n * // مثال ساده\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={{ pageIndex: 0, pageSize: 10 }}\n * onPaginationChange={setPagination}\n * totalRows={100}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال با تغییر اندازه ستون\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={pagination}\n * onPaginationChange={setPagination}\n * totalRows={100}\n * enableColumnResizing={true}\n * layoutMode=\"grid\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال بدون پیجینیشن\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={{ pageIndex: 0, pageSize: 100 }}\n * onPaginationChange={() => {}}\n * totalRows={users.length}\n * disablePagination={true}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال کامل با همه قابلیت‌ها\n * function UsersTable() {\n * const { control, watch, reset } = useForm();\n *\n * const tableState = useTableState<UserFilter>(\"users-table\", {\n * initialPageSize: 50,\n * watch,\n * syncFormToFilters: true,\n * sortMapping: {\n * name: \"NameOrdering\",\n * email: \"EmailOrdering\"\n * }\n * });\n *\n * const { data, isLoading, refetch } = useGetUsers({\n * PageNumber: tableState.pagination.pageIndex + 1,\n * PageSize: tableState.pagination.pageSize,\n * ...tableState.debouncedFiltring,\n * ...tableState.mappedSorting,\n * });\n *\n * const columns = useMemo(() => [\n * {\n * accessorKey: \"name\",\n * header: \"نام کاربر\",\n * size: 200,\n * Filter: () => (\n * <FormInputText\n * control={control}\n * name=\"NameFiltering\"\n * placeholder=\"جستجو نام\"\n * />\n * ),\n * }\n * ], [control]);\n *\n * return (\n * <DataTable\n * data={data?.users || []}\n * columns={columns}\n * isLoading={isLoading}\n * pagination={tableState.pagination}\n * onPaginationChange={tableState.setPagination}\n * totalRows={data?.totalCount || 0}\n * sorting={tableState.sorting}\n * onSortingChange={tableState.setSorting}\n * columnVisibility={tableState.columnVisibility}\n * onColumnVisibilityChange={tableState.setColumnVisibility}\n * onClearFilters={() => {\n * tableState.clearFilters();\n * reset();\n * }}\n * manualSorting={true}\n * enableColumnResizing={true}\n * layoutMode=\"grid\"\n * refetch={refetch}\n * renderDetailPanel={({ row }) => (\n * <Box p={2}>\n * <Typography>جزئیات کاربر: {row.original.name}</Typography>\n * </Box>\n * )}\n * />\n * );\n * }\n * ```\n */\nexport const DataTable = <T extends Record<string, any>>({\n data,\n columns,\n isLoading = false,\n isRefetching = false,\n pagination,\n onPaginationChange,\n totalRows,\n manualPagination = true,\n disablePagination = false,\n columnFilters = [],\n onColumnFiltersChange,\n manualFiltering = true,\n onClearFilters,\n showClearFiltersButton = true,\n sorting = [],\n onSortingChange,\n manualSorting = false,\n columnVisibility = {},\n onColumnVisibilityChange,\n columnOrder = [],\n onColumnOrderChange,\n enableStickyHeader = true,\n maxHeight = \"calc(100vh - 200px)\",\n density = \"compact\",\n enableColumnOrdering = true,\n enableGlobalFilter = false,\n enableColumnFilterModes = false,\n enableRowSelection = false,\n showColumnFilters,\n onShowColumnFiltersChange,\n renderTopToolbarCustomActions,\n renderBottomToolbarCustomActions,\n tableOptions = {},\n localization = customLocalization,\n enableColumnVirtualization = false,\n columnVirtualizerOptions = { overscan: 10 },\n enableColumnResizing = false,\n layoutMode = \"semantic\",\n renderDetailPanel,\n refetch,\n}: DataTableProps<T>) => {\n // 🚀 بهینه‌سازی با useMemo برای جلوگیری از re-render غیرضروری\n const memoizedColumns = useMemo(() => columns, [columns]);\n const memoizedData = useMemo(() => data, [data]);\n\n // 🧹 تولبار پیش‌فرض با دکمه پاک کردن فیلترها و دکمه تازه‌سازی\n const defaultRenderTopToolbarCustomActions = ({ table }: { table: any }) => {\n const currentShowFilters =\n showColumnFilters !== undefined\n ? showColumnFilters\n : table.getState().showColumnFilters;\n\n const showClearButton =\n currentShowFilters && showClearFiltersButton && onClearFilters;\n\n return (\n <Box\n display={\"flex\"}\n alignItems={\"center\"}\n justifyContent={\"flex-start\"}\n gap={1}\n >\n {refetch && (\n <Tooltip arrow title=\"بروزرسانی\">\n <IconButton onClick={() => refetch()}>\n <MdOutlineRefresh />\n </IconButton>\n </Tooltip>\n )}\n {showClearButton && (\n <Button\n color=\"secondary\"\n onClick={onClearFilters}\n startIcon={<ClearIcon />}\n >\n بازنشانی فیلترها\n </Button>\n )}\n </Box>\n );\n };\n const columnVirtualizerInstanceRef = useRef<MRT_ColumnVirtualizer>(null);\n\n // 🎛️ تنظیم جدول Material React Table\n const table = useMaterialReactTable({\n columns: memoizedColumns,\n data: memoizedData,\n localization,\n enableColumnResizing: enableColumnResizing,\n layoutMode: layoutMode,\n enableColumnVirtualization: enableColumnVirtualization,\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions: columnVirtualizerOptions,\n enableKeyboardShortcuts: false,\n\n // === صفحه‌بندی ===\n enablePagination: !disablePagination,\n manualPagination: disablePagination ? false : manualPagination,\n onPaginationChange: disablePagination ? undefined : onPaginationChange,\n pageCount:\n !disablePagination && manualPagination\n ? Math.ceil(totalRows / pagination.pageSize)\n : undefined,\n rowCount: totalRows ?? 0,\n\n // === فیلترینگ ===\n manualFiltering,\n onColumnFiltersChange,\n enableColumnFilterModes,\n enableGlobalFilter,\n\n // === مرتب‌سازی ===\n manualSorting,\n onSortingChange,\n\n // === ویژگی‌ها ===\n enableColumnOrdering,\n enableRowSelection,\n enableStickyHeader,\n\n // === وضعیت جدول ===\n state: {\n pagination,\n // columnFilters, // غیرفعال شده - فیلترها از طریق useTableState مدیریت می‌شوند\n sorting,\n columnVisibility,\n ...(showColumnFilters !== undefined && { showColumnFilters }),\n ...(columnOrder &&\n Array.isArray(columnOrder) &&\n columnOrder.length > 0 && { columnOrder }),\n isLoading,\n showProgressBars: isRefetching,\n },\n\n // === Event Handlers ===\n onColumnVisibilityChange,\n ...(onShowColumnFiltersChange && { onShowColumnFiltersChange }),\n ...(onColumnOrderChange && { onColumnOrderChange }),\n\n // === استایل‌دهی ===\n columnResizeDirection: \"ltr\",\n muiTableBodyCellProps: {\n sx: {\n textAlign: \"center\",\n \"&:focus\": {\n outline: \"none\",\n },\n },\n },\n muiTableHeadCellProps: {\n sx: {\n \"&:focus\": {\n outline: \"none\",\n },\n \"& .Mui-TableHeadCell-Content\": {\n flexDirection: \"row-reverse\",\n justifyContent: \"center\",\n },\n },\n },\n muiTableContainerProps: {\n sx: {\n maxHeight,\n },\n },\n\n // === حالت اولیه ===\n initialState: {\n density,\n },\n\n // === قابلیت‌ها ===\n renderDetailPanel: renderDetailPanel\n ? ({ row, table }) => renderDetailPanel({ row, table })\n : undefined,\n\n // === تولبارهای سفارشی ===\n renderTopToolbarCustomActions:\n renderTopToolbarCustomActions || defaultRenderTopToolbarCustomActions,\n renderBottomToolbarCustomActions,\n // 🔧 اعمال تنظیمات اضافی\n ...tableOptions,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nexport default DataTable;\n","\"use client\";\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Grid from \"@mui/material/Grid2\";\nimport { GlobalStyles, useMediaQuery } from \"@mui/system\";\nimport moment from \"moment\";\nimport { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport Dateform from \"../date-picker\";\n\ninterface FormValues {\n time: string;\n}\n\nconst schema = yup.object().shape({\n time: yup.string().required(),\n});\n\nconst defaultValues: FormValues = {\n time: moment().toISOString(),\n};\n\ninterface DateFilterProps {\n setHandler?: (date: string) => void;\n}\n\nexport default function DateFilter({ setHandler }: DateFilterProps) {\n const isSmMobile = useMediaQuery(\"(max-width:600px)\");\n\n const { control, watch } = useForm<FormValues>({\n defaultValues,\n mode: \"onChange\",\n resolver: yupResolver(schema),\n });\n\n const currentDate = watch(\"time\");\n\n // Set initial date on mount\n useEffect(() => {\n if (setHandler) {\n setHandler(moment().toISOString());\n }\n }, [setHandler]);\n\n // Update parent when date changes\n useEffect(() => {\n if (setHandler) {\n setHandler(currentDate);\n }\n }, [currentDate, setHandler]);\n\n return (\n <>\n <GlobalStyles\n styles={{\n \".MuiBox-root.muirtl-1crki0u\": {\n marginLeft: 0,\n marginRight: 0,\n },\n }}\n />\n <Grid\n container\n spacing={2}\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Grid container size={12} width=\"100%\">\n <Dateform\n name=\"time\"\n control={control}\n label=\"\"\n persian\n clear={false}\n align=\"center\"\n size={isSmMobile ? \"small\" : \"medium\"}\n />\n </Grid>\n </Grid>\n </>\n );\n}\n","import { Box, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { MdChevronLeft, MdChevronRight } from \"react-icons/md\";\n\nmoment.locale(\"fa\");\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n views?: (\"year\" | \"month\" | \"day\")[];\n variant?: \"outlined\" | \"standard\";\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n name,\n control,\n label,\n size = \"medium\",\n disabled = false,\n persian = false,\n align = \"center\",\n isLoading,\n maxDate,\n minDate,\n clear = true,\n views,\n variant = \"outlined\",\n}) => {\n const today = moment();\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const [open, setOpen] = useState(false);\n\n const handlePreviousDate = (e: React.MouseEvent) => {\n e.stopPropagation();\n const currentValue = field.value ? moment(field.value) : moment();\n const previousDate = currentValue.clone().subtract(1, \"day\");\n\n // Check if previousDate is within minDate boundary\n if (minDate && previousDate.isBefore(moment(minDate), \"day\")) {\n return;\n }\n\n const nowUTC = new Date();\n const iranHour = nowUTC.getUTCHours();\n const iranMinute = nowUTC.getUTCMinutes();\n const dateTimeWithIranTime = dayjs(previousDate.toDate())\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n field.onChange(dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\"));\n };\n\n const handleNextDate = (e: React.MouseEvent) => {\n e.stopPropagation();\n const currentValue = field.value ? moment(field.value) : moment();\n const nextDate = currentValue.clone().add(1, \"day\");\n\n // Check if nextDate is within maxDate boundary\n const maxDateValue = maxDate ? maxDate : today;\n if (nextDate.isAfter(moment(maxDateValue), \"day\")) {\n return;\n }\n\n const nowUTC = new Date();\n const iranHour = nowUTC.getUTCHours();\n const iranMinute = nowUTC.getUTCMinutes();\n const dateTimeWithIranTime = dayjs(nextDate.toDate())\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n field.onChange(dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\"));\n };\n return (\n <Box sx={{ width: \"100%\" }}>\n <DatePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n disabled={isLoading || disabled}\n closeOnSelect={false}\n openTo=\"day\"\n views={views ?? [\"year\", \"month\", \"day\"]}\n label={variant === \"standard\" ? \"\" : label}\n value={field.value ? moment(field.value) : null}\n format={\n persian ? \"dddd - jDD/jMMMM/jYYYY\" : \"jYYYY/jMM/jDD\"\n }\n slotProps={{\n ...(clear && !disabled ? { field: { clearable: true } } : {}),\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n textField: {\n size: size,\n placeholder:\n field.value || isLoading ? \"\" : \"انتخاب تاریخ \",\n onClick: () => !disabled && !isLoading && setOpen(true),\n variant: variant,\n ...(variant === \"standard\" && { label: \"\" }),\n InputLabelProps: {\n shrink: true,\n style: {\n color: error ? \"#D32F2F\" : \"inherit\",\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n },\n inputProps: {\n readOnly: true,\n style: { cursor: \"pointer\" },\n value: field.value\n ? (() => {\n let formattedValue = persian\n ? moment(field.value).format(\n \"dddd - jDD/jMMMM/jYYYY\"\n )\n : moment(field.value).format(\"jYYYY/jMM/jDD\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه در فرمت فارسی\n if (persian) {\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n const parts = formattedValue.split(/(\\s+|-|\\/)/);\n for (let i = 0; i < parts.length; i++) {\n if (parts[i].startsWith(\"ا\")) {\n const withoutAlef = parts[i].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[i] = withoutAlef;\n }\n }\n }\n formattedValue = parts.join(\"\");\n }\n return formattedValue;\n })()\n : \"\",\n },\n InputProps: {\n startAdornment: !isLoading && !disabled && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"2px\",\n ...(variant === \"outlined\" &&\n clear &&\n field.value && { mr: 4.5 }),\n ...(variant === \"standard\" &&\n clear &&\n field.value && { mr: 4.5 }),\n }}\n >\n <Tooltip title=\"روز قبل\">\n <IconButton\n onClick={handlePreviousDate}\n disabled={isLoading || disabled}\n sx={{\n padding: \"2px\",\n }}\n >\n <MdChevronRight size={26} />\n </IconButton>\n </Tooltip>\n </Box>\n ),\n endAdornment: isLoading ? (\n <CircularProgress color=\"secondary\" size={20} />\n ) : disabled ? null : (\n <Box\n sx={{ display: \"flex\", alignItems: \"center\", ml: 1 }}\n >\n <Tooltip title=\"روز بعد\">\n <IconButton\n onClick={handleNextDate}\n disabled={isLoading || disabled}\n sx={{\n padding: \"2px\",\n }}\n >\n <MdChevronLeft size={26} />\n </IconButton>\n </Tooltip>\n </Box>\n ),\n sx: {\n textAlign: align,\n \"& input\": {\n textAlign: align,\n direction: \"rtl\",\n },\n },\n },\n },\n actionBar: {\n actions:\n clear && !disabled\n ? [\"clear\", \"cancel\", \"accept\"]\n : [\"cancel\", \"accept\"],\n },\n }}\n onChange={(value: any) => {\n if (value == null) {\n field.onChange(null);\n }\n }}\n onAccept={(newValue: any) => {\n if (newValue) {\n const currentDate = dayjs(newValue);\n const nowUTC = new Date();\n\n let iranHour = nowUTC.getUTCHours();\n let iranMinute = nowUTC.getUTCMinutes();\n\n const dateTimeWithIranTime = currentDate\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n\n field.onChange(\n dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\")\n );\n } else {\n field.onChange(null);\n }\n }}\n sx={{\n width: \"100%\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n \"& .MuiInputBase-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n // Fix for extra 'ا' in calendar header month name\n \"& .MuiPickersCalendarHeader-label\": {\n fontSize: \"1rem\",\n },\n }}\n slots={{\n ...(!clear && {\n clearButton: React.Fragment,\n clearIcon: React.Fragment,\n }),\n calendarHeader: (props) => {\n let labelText = props.currentMonth.format(\"jMMMM jYYYY\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n const parts = labelText.split(\" \");\n if (parts.length > 0 && parts[0].startsWith(\"ا\")) {\n const withoutAlef = parts[0].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n labelText = parts.join(\" \");\n }\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"8px 16px\",\n minHeight: \"40px\",\n }}\n >\n <IconButton\n onClick={() =>\n props.onMonthChange(\n props.currentMonth.clone().subtract(1, \"jmonth\"),\n \"left\"\n )\n }\n title=\"ماه قبل\"\n >\n <MdChevronRight />\n </IconButton>\n <Typography\n variant=\"body1\"\n onClick={\n props.onViewChange\n ? () => props.onViewChange?.(\"year\")\n : undefined\n }\n sx={{\n cursor: props.onViewChange ? \"pointer\" : \"default\",\n fontWeight: 500,\n }}\n >\n {labelText}\n </Typography>\n <IconButton\n onClick={() =>\n props.onMonthChange(\n props.currentMonth.clone().add(1, \"jmonth\"),\n \"right\"\n )\n }\n title=\"ماه بعد\"\n >\n <MdChevronLeft />\n </IconButton>\n </Box>\n );\n },\n toolbar: () => {\n const currentDate = moment(field.value);\n let formattedDate = currentDate.format(\"dddd, jDD jMMMM\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n if (formattedDate && formattedDate !== \"Invalid date\") {\n const parts = formattedDate.split(\" \");\n for (let i = 0; i < parts.length; i++) {\n if (parts[i].startsWith(\"ا\")) {\n const withoutAlef = parts[i].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[i] = withoutAlef;\n }\n }\n }\n formattedDate = parts.join(\" \");\n }\n\n return (\n <Box\n sx={{\n my: 2,\n mx: 4,\n }}\n >\n <Typography variant=\"overline\" color=\"primary\">\n تاریخ را انتخاب کنید\n </Typography>\n <Typography variant=\"h4\">\n {formattedDate == \"Invalid date\" ? \"\" : formattedDate}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n // حذف حرف اضافه از ابتدای نام ماه\n const ariaLabel = props[\"aria-label\"] || \"\";\n let monthName = ariaLabel;\n\n // اگر نام ماه با 'ا' اضافی شروع شده باشد، آن را حذف کنیم\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی اینکه آیا با 'ا' اضافی شروع شده\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n monthName = withoutAlef;\n }\n }\n\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {monthName}\n </button>\n );\n },\n }}\n minDate={minDate ? minDate : null}\n maxDate={maxDate ? maxDate : today}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n );\n }}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","'use client'\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid2';\nimport { GlobalStyles, useMediaQuery } from '@mui/system';\nimport moment from 'moment';\nimport { useEffect } from 'react';\nimport { useForm } from \"react-hook-form\";\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\nimport * as yup from \"yup\";\nimport Dateform from '../date-picker'; // This import is not needed\n\nconst nowUTC = moment.utc(); // دریافت زمان فعلی در UTC\n\n// محاسبه زمان ایران با اعمال آفست 3 ساعت و 30 دقیقه\nconst dateTimeWithIranTime2 = nowUTC // کم کردن یک روز\nconst dateTimeWithIranTime = nowUTC // کم کردن یک روز\n\n// .add(3, \"hours\") // اضافه کردن 3 ساعت\n// .add(30, \"minutes\"); // اضافه کردن 30 دقیقه\n\n// تعریف مقادیر پیش‌فرض\nconst RoleFormSchema = yup.object().shape({});\nconst defaultValues = {\n time: dateTimeWithIranTime.toDate().toISOString(), // تبدیل به ISO بدون تغییر آفست\n time2: dateTimeWithIranTime2.toDate().toISOString(), // تبدیل به ISO بدون تغییر آفست\n};\n\n\nexport default function DateFilterRange({ FromDate, ToDate }: { FromDate: any, ToDate: any }) {\n const isMobile = useMediaQuery(\"(max-width:900px)\");\n const isSmMobile = useMediaQuery(\"(max-width:600px)\");\n const { control, watch, setValue } = useForm<any>({\n defaultValues,\n mode: \"onChange\",\n resolver: yupResolver(RoleFormSchema),\n });\n useEffect(() => {\n FromDate(nowUTC) //ست کردن تاریخ امروز در کامپوننت پرنت فقط یکبار \n ToDate(nowUTC) //ست کردن تاریخ امروز در کامپوننت پرنت فقط یکبار \n }, [])\n const currentDate = watch('time');\n const currentDate2 = watch('time2');\n\n useEffect(() => {\n FromDate(currentDate)\n ToDate(currentDate2)\n\n }, [currentDate,currentDate2])\n\n\n const handleDate = (direction: 'forward' | 'backward', time: \"time\" | \"time2\") => {\n const currentDate = watch(time);\n const newDate = moment(currentDate);\n\n if (direction === 'forward') {\n newDate.add(1, 'day'); //اضافه کردن تاریخ\n } else if (direction === 'backward') {\n newDate.subtract(1, 'day'); //کم کردن تاریخ\n }\n\n setValue(time, newDate.toISOString()); //ست کردن تاریخ در react hook form\n // setHandler && setHandler(newDate.toISOString()) //ست کردن تاریخ در استیت پرنت\n };\n const isNextDisabledTime = moment(watch('time')).format(\"YYYY-MM-DD\") == moment(watch('time2')).format(\"YYYY-MM-DD\")\n const isLastDisabledTime = moment(watch('time')).format(\"YYYY-MM-DD\") == moment(watch('time2')).format(\"YYYY-MM-DD\")\n // بررسی وضعیت دکمه\n const today = moment().format(\"YYYY-MM-DD\"); // تبدیل تاریخ امروز به رشته\n const isNextDisabled = moment(watch('time')).format(\"YYYY-MM-DD\") >= today; // مقایسه تاریخ انتخاب‌شده با امروز\n const isNextDisabledTime2 = moment(watch('time2')).format(\"YYYY-MM-DD\") >= today; // مقایسه تاریخ انتخاب‌شده با امروز\n\n return (\n <>\n <GlobalStyles styles={{\n //حذف مارجین های اضافی سمت راست و چپ\n '.MuiBox-root.muirtl-1crki0u': {\n marginLeft: 0,\n marginRight: 0,\n }\n }} />\n <Grid container spacing={2} justifyContent={\"center\"} alignItems={\"center\"} paddingTop={3} width={\"100%\"}>\n <Grid container size={12} width={!isMobile ? \"50%\" : \"100%\"} alignItems={\"center\"} justifyContent={\"space-between\"}>\n {/* دکمه برای حرکت به جلو */}\n <Grid size={2} justifyContent={\"start\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('forward', \"time\")}\n disabled={isNextDisabled || isNextDisabledTime} // شرط برای غیرفعال کردن دکمه\n >\n <FaChevronRight size={30} />\n </Button>\n </Grid>\n\n {/* فرم تاریخ */}\n <Grid size={{ xs: 7, sm: 8, md: 8, lg: 6 }}>\n <Dateform name='time' control={control} label='تاریخ از' maxDate={moment(watch('time2'))} align='center' persian={true} clear={false} size={isSmMobile ? \"small\" : \"medium\"} />\n </Grid>\n\n {/* دکمه برای حرکت به عقب */}\n <Grid size={2} display={\"flex\"} justifyContent={\"end\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('backward', \"time\")}>\n <FaChevronLeft size={30} />\n </Button>\n </Grid>\n </Grid>\n <Grid container size={12} width={!isMobile ? \"50%\" : \"100%\"} alignItems={\"center\"} justifyContent={\"space-between\"}>\n {/* دکمه برای حرکت به جلو */}\n <Grid size={2} justifyContent={\"start\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('forward', \"time2\")}\n disabled={isNextDisabledTime2} // شرط برای غیرفعال کردن دکمه\n >\n <FaChevronRight size={30} />\n </Button>\n </Grid>\n\n {/* فرم تاریخ */}\n <Grid size={{ xs: 7, sm: 8, md: 8, lg: 6 }}>\n <Dateform name='time2' control={control} label='تاریخ تا' minDate={moment(watch('time'))} persian={true} align='center' clear={false} size={isSmMobile ? \"small\" : \"medium\"} />\n </Grid>\n\n {/* دکمه برای حرکت به عقب */}\n <Grid size={2} display={\"flex\"} justifyContent={\"end\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('backward', \"time2\")}\n disabled={isLastDisabledTime}\n >\n <FaChevronLeft size={30} />\n </Button>\n </Grid>\n </Grid>\n </Grid>\n <Grid container size={12}>\n <Grid size={12}>\n </Grid>\n </Grid>\n </>\n );\n}\n","import { Box, Typography } from \"@mui/material\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\ninterface DateMonthPickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n}\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n views?: (\"year\" | \"month\" | \"day\")[];\n}\n\nconst DateMonthPicker: React.FC<DateMonthPickerProps> = ({\n name,\n control,\n label,\n size = \"medium\",\n disabled = false,\n align = \"left\",\n isLoading,\n maxDate,\n minDate,\n clear = true,\n}) => {\n const today = moment(); // تاریخ امروز\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n selectDate: \"انتخاب ماه و سال\",\n datePickerToolbarTitle: \"انتخاب ماه و سال\",\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <DatePicker\n disabled={isLoading || disabled}\n closeOnSelect={true}\n openTo=\"month\"\n views={[\"year\", \"month\"]}\n label={label}\n value={field.value ? moment(field.value) : null}\n format=\"jMMMM jYYYY\"\n slotProps={{\n ...(clear && !disabled ? { field: { clearable: true } } : {}),\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n textField: {\n size: size,\n placeholder: field.value ? \"\" : \"انتخاب ماه و سال\",\n InputLabelProps: {\n shrink: true,\n style: { color: error ? \"#D32F2F\" : \"inherit\" },\n },\n InputProps: {\n ...((isLoading && {\n endAdornment: (\n <CircularProgress color=\"secondary\" size={20} />\n ),\n }) ||\n (disabled && { endAdornment: false })),\n sx: {\n textAlign: align,\n \"& input\": {\n textAlign: align,\n direction: \"rtl\",\n },\n },\n },\n inputProps: {\n value: field.value\n ? (() => {\n let formattedValue = moment(field.value).format(\n \"jMMMM jYYYY\"\n );\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n const parts = formattedValue.split(\" \");\n if (parts.length > 0) {\n let monthName = parts[0];\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n formattedValue = parts.join(\" \");\n }\n }\n }\n return formattedValue;\n })()\n : \"\",\n },\n },\n actionBar: {\n actions:\n clear && !disabled\n ? [\"clear\", \"cancel\", \"accept\"]\n : [\"cancel\", \"accept\"], // نمایش دکمه‌های تأیید، لغو و پاک کردن\n },\n }}\n onChange={(value: any) => {\n if (value == null) {\n field.onChange(null);\n }\n }}\n onAccept={(newValue: any) => {\n if (newValue) {\n const currentDate = dayjs(newValue);\n const nowUTC = new Date();\n\n // محاسبه ساعت و دقیقه ایران\n let iranHour = nowUTC.getUTCHours();\n let iranMinute = nowUTC.getUTCMinutes();\n\n const dateTimeWithIranTime = currentDate\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n\n field.onChange(\n dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\")\n );\n } else {\n field.onChange(null);\n }\n }}\n sx={{\n width: \"100%\",\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiInputBase-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n }}\n slots={{\n ...(!clear && {\n clearButton: React.Fragment,\n clearIcon: React.Fragment,\n }),\n toolbar: (props) => {\n const currentDate = moment(field.value); // تاریخ فعلی از props.value گرفته می‌شود\n let formattedDate = currentDate.format(\"jMMMM jYYYY\"); // فرمت تاریخ فقط ماه و سال\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی و اصلاح نام ماه\n if (formattedDate && formattedDate !== \"Invalid date\") {\n const parts = formattedDate.split(\" \");\n if (parts.length > 0) {\n let monthName = parts[0];\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n formattedDate = parts.join(\" \");\n }\n }\n }\n }\n\n return (\n <Box\n sx={{\n my: 2,\n mx: 4,\n }}\n >\n <Typography variant=\"overline\" color=\"primary\">\n ماه و سال را انتخاب کنید\n </Typography>\n <Typography variant=\"h4\">\n {formattedDate == \"Invalid date\" ? \"\" : formattedDate}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n // حذف حرف اضافه از ابتدای نام ماه\n const ariaLabel = props[\"aria-label\"] || \"\";\n let monthName = ariaLabel;\n\n // اگر نام ماه با 'ا' اضافی شروع شده باشد، آن را حذف کنیم\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی اینکه آیا با 'ا' اضافی شروع شده\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n monthName = withoutAlef;\n }\n }\n\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {monthName} {/* نمایش ماه به صورت کامل */}\n </button>\n );\n },\n }}\n minDate={minDate ? minDate : null}\n maxDate={maxDate ? maxDate : today}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default DateMonthPicker;\n","import { Typography } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Box } from \"@mui/system\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n readOnly?: boolean;\n isLoading?: boolean;\n minDateTime?: Moment; // Optional minimum date and time\n centeredTime?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n size = \"medium\",\n name,\n control,\n label,\n isLoading,\n disabled,\n minDateTime, // Add the new optional prop\n centeredTime = false,\n variant = \"outlined\",\n}) => {\n const today = moment();\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n const [open, setOpen] = useState(false);\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <DateTimePicker\n open={open}\n onClose={() => {\n setOpen(false);\n field.onBlur();\n }}\n onOpen={() => setOpen(true)}\n orientation={isMobile ? \"portrait\" : \"landscape\"}\n disabled={isLoading || disabled}\n openTo=\"day\"\n views={[\"year\", \"month\", \"day\", \"hours\", \"minutes\"]}\n label={variant === \"standard\" ? \"\" : label}\n value={\n field.value ? moment.utc(field.value).utcOffset(210) : null\n }\n onChange={(newValue: any) => {\n if (newValue) {\n field.onChange(\n moment(newValue)\n .utc()\n .locale(\"en\")\n .format(\"YYYY-MM-DDTHH:mm:ss[Z]\")\n );\n } else {\n field.onChange(null);\n }\n }}\n onAccept={() => {\n setOpen(false);\n field.onBlur();\n }}\n onError={() => {\n setOpen(false);\n field.onBlur();\n }}\n format={`jDD jMMMM jYYYY ${\" \"} - ${\" \"} HH:mm`}\n minDateTime={minDateTime}\n timeSteps={{ minutes: 1 }}\n slots={{\n toolbar: (props) => {\n const currentDate = moment\n .utc(field.value || today)\n .utcOffset(210); // Use today if no value\n let formattedDay, formattedDate, formattedYear, formattedTime;\n\n if (field.value) {\n formattedDay = currentDate.format(\"dddd\");\n formattedDate = currentDate.format(\"jDD jMMMM\");\n formattedYear = currentDate.format(\"jYYYY\");\n formattedTime = currentDate.format(\"HH:mm\");\n } else {\n (formattedDay = \"تاریخ و زمان انتخاب نشده است\"),\n (formattedDate = \"\"),\n (formattedYear = \"\"),\n (formattedTime = \"\");\n }\n\n return (\n <Box\n sx={{\n padding: \"16px\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Typography\n fontSize={16}\n variant=\"overline\"\n color=\"primary\"\n >\n {`${formattedDay}،`}\n </Typography>\n <Typography\n variant=\"h4\"\n fontSize={26}\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedDate}`}\n </Typography>\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {`${formattedYear}`}\n </Typography>\n {field.value && <Typography>{\"-\"}</Typography>}\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedTime}`}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]} {/* نمایش ماه به صورت کامل */}\n </button>\n );\n },\n }}\n sx={{\n width: \"100%\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n }}\n maxDate={today}\n slotProps={{\n mobilePaper: {\n sx: {\n \"& .MuiClock-root\": {\n backgroundColor: \"transparent\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n \"& .MuiClock-clock\": {\n mt: 4,\n pt: 0.5,\n width: 230,\n height: 230,\n backgroundColor: \"rgba(0, 0, 0, 0.03)\",\n borderRadius: \"50%\",\n border: \"4px solid rgba(0, 0, 0, 0.04)\",\n },\n \"& .MuiClock-pin\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockPointer-root, & .MuiClockPointer-thumb\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockNumber-root\": {\n color: \"#000\",\n fontSize: \"16px\",\n },\n \"&.Mui-selected, &.Mui-focusVisible\": {\n color: \"#FFF\",\n },\n },\n },\n textField: {\n size: size,\n placeholder: \"\",\n variant: variant,\n onClick: () => {\n if (!open) setOpen(true);\n },\n InputLabelProps: {\n shrink: true,\n style: {\n color: error ? \"#D32F2F\" : \"inherit\",\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n },\n InputProps: {\n ...(disabled && { endAdornment: false }),\n sx: {\n textAlign: centeredTime ? \"center\" : \"left\", // Center or left align\n \"& input\": {\n textAlign: centeredTime ? \"center\" : \"left\", // Ensure input text is centered\n },\n },\n },\n },\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n }}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","import DateTimeForm from \"../date-time-picker\";\nimport { Box, Typography } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useEffect, useState } from \"react\";\nimport { Control, useWatch } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDateTimeRangePickerProps {\n control: Control<any>;\n startName: string;\n endName: string;\n startLabel: string;\n endLabel: string;\n disabled?: boolean;\n isLoading?: boolean;\n}\n\nconst JalaliDateTimeRangePicker: React.FC<JalaliDateTimeRangePickerProps> = ({\n control,\n startName,\n endName,\n startLabel,\n endLabel,\n disabled = false,\n isLoading = false,\n}) => {\n const startDate: Moment | null = useWatch({ control, name: startName });\n\n const validStartDate = startDate ? moment(startDate) : null;\n\n const defaultStartDate = moment().add(3.5, \"hours\").toDate();\n\n const [isStartDateChanged, setIsStartDateChanged] = useState(false);\n\n useEffect(() => {\n if (validStartDate && !validStartDate.isSame(defaultStartDate, \"minute\")) {\n setIsStartDateChanged(true);\n } else if (\n validStartDate &&\n validStartDate.isSame(defaultStartDate, \"minute\")\n ) {\n setIsStartDateChanged(false);\n }\n }, [validStartDate, defaultStartDate]);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMomentJalaali}>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: 1,\n }}\n >\n {/* Start DateTime Picker */}\n <DateTimeForm\n control={control}\n name={startName}\n label={startLabel}\n disabled={disabled || isLoading}\n />\n\n {/* Separator */}\n <Typography variant=\"h6\">-</Typography>\n\n {/* End DateTime Picker */}\n <DateTimeForm\n control={control}\n name={endName}\n label={endLabel}\n disabled={disabled || isLoading}\n minDateTime={isStartDateChanged ? moment(startDate) : undefined}\n />\n </Box>\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDateTimeRangePicker;\n","import { Delete } from \"@mamrp/icons\";\nimport theme from \"@mamrp/layout/theme\";\nimport {\n alpha,\n Box,\n Button,\n Fade,\n IconButton,\n Stack,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Image from \"next/image\";\nimport React, { useState } from \"react\";\nimport {\n Control,\n Controller,\n FieldErrors,\n FieldValues,\n Path,\n UseFormSetValue,\n} from \"react-hook-form\";\nimport { GrGallery } from \"react-icons/gr\";\nimport { MdAddPhotoAlternate, MdOutlineCameraAlt } from \"react-icons/md\";\nimport ImageViewer from \"./ImageViewer\";\n\ntype UploadImageProps<T extends FieldValues> = {\n placeholder: string;\n name: Path<T>;\n selectedImage: string | null;\n setSelectedImage: React.Dispatch<React.SetStateAction<string | null>>;\n control: Control<T>;\n errors: FieldErrors<T>;\n setValue: UseFormSetValue<T>;\n height?: string;\n allowGallery?: boolean;\n imageFit?: \"contain\" | \"cover\";\n};\n\nconst UploadImage = <T extends FieldValues>({\n placeholder,\n name,\n selectedImage,\n setSelectedImage,\n control,\n errors,\n setValue,\n height = \"280px\",\n allowGallery = false,\n imageFit = \"cover\",\n}: UploadImageProps<T>) => {\n // const theme = useTheme();\n\n const [viewerOpen, setViewerOpen] = useState(false);\n const [viewerSrc, setViewerSrc] = useState<string>(\"\");\n\n // Compress image before uploading\n const compressImage = (\n file: File,\n quality = 0.9, // کیفیت بالاتر\n maxWidth = 1600, // سایز بزرگتر\n maxHeight = 1600\n ): Promise<File | null> => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n const img = new window.Image();\n img.src = event.target?.result as string;\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n let width = img.width;\n let height = img.height;\n\n if (width > maxWidth) {\n height *= maxWidth / width;\n width = maxWidth;\n }\n if (height > maxHeight) {\n width *= maxHeight / height;\n height = maxHeight;\n }\n\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(img, 0, 0, width, height);\n canvas.toBlob(\n (blob) => {\n if (blob) {\n const compressedFile = new File([blob], file.name, {\n type: \"image/jpeg\",\n lastModified: Date.now(),\n });\n resolve(compressedFile);\n } else {\n resolve(null);\n }\n },\n \"image/jpeg\",\n quality\n );\n } else {\n resolve(null);\n }\n };\n };\n });\n };\n\n // Handle file input\n const handleImageChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const file = event.target.files?.[0];\n if (file) {\n console.log(\"Original file size (KB):\", (file.size / 1024).toFixed(2));\n\n const compressedFile = await compressImage(file);\n if (compressedFile) {\n console.log(\n \"Compressed file size (KB):\",\n (compressedFile.size / 1024).toFixed(2)\n );\n\n const objectURL = URL.createObjectURL(compressedFile);\n setSelectedImage(objectURL);\n setValue(name, compressedFile as unknown as T[typeof name]);\n }\n }\n };\n\n // Remove selected image\n const handleRemoveImage = () => {\n setSelectedImage(null);\n setValue(name, null as unknown as T[typeof name]);\n\n const galleryInput = document.getElementById(\n \"gallery-upload\"\n ) as HTMLInputElement;\n const cameraInput = document.getElementById(\n \"camera-upload\"\n ) as HTMLInputElement;\n const fileInput = document.getElementById(\n \"file-upload\"\n ) as HTMLInputElement;\n\n if (galleryInput) galleryInput.value = \"\";\n if (cameraInput) cameraInput.value = \"\";\n if (fileInput) fileInput.value = \"\";\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Box sx={{ width: \"100%\" }}>\n {/* Main Box */}\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height,\n borderRadius: 3,\n overflow: \"hidden\",\n backgroundColor: selectedImage\n ? \"transparent\"\n : alpha(theme.palette.primary.main, 0.02),\n border: selectedImage\n ? `2px solid ${alpha(theme.palette.primary.main, 0.1)}`\n : `2px dashed ${alpha(theme.palette.primary.main, 0.2)}`,\n transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n cursor: allowGallery ? \"default\" : \"pointer\",\n \"&:hover\": {\n borderColor: selectedImage\n ? alpha(theme.palette.primary.main, 0.3)\n : alpha(theme.palette.primary.main, 0.4),\n backgroundColor: selectedImage\n ? \"transparent\"\n : alpha(theme.palette.primary.main, 0.04),\n },\n }}\n >\n {selectedImage ? (\n <>\n {/* Image Preview */}\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height,\n borderRadius: 3,\n overflow: \"hidden\",\n }}\n >\n {/* Delete Button */}\n <Fade in={!!selectedImage} timeout={400}>\n <Tooltip title=\"حذف\">\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (selectedImage) URL.revokeObjectURL(selectedImage);\n handleRemoveImage();\n }}\n sx={{\n position: \"absolute\",\n top: 12,\n right: 12,\n zIndex: 10,\n backgroundColor: alpha(theme.palette.error.main, 0.9),\n color: \"#fff\",\n width: 44,\n height: 44,\n border: \"2px solid white\",\n boxShadow: `0 4px 10px ${alpha(\n theme.palette.error.main,\n 0.35\n )}`,\n transition: \"all 0.25s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.error.main,\n transform: \"scale(1.12)\",\n boxShadow: `0 6px 16px ${alpha(\n theme.palette.error.main,\n 0.45\n )}`,\n },\n }}\n >\n <Delete size={20} />\n </IconButton>\n </Tooltip>\n </Fade>\n <Image\n src={selectedImage}\n alt=\"Preview\"\n fill\n sizes=\"100vw\"\n style={{\n objectFit: \"cover\", // پر کردن کامل بدون کشیدگی\n objectPosition: \"center\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n setViewerSrc(selectedImage);\n setViewerOpen(true);\n }}\n />\n </Box>\n </>\n ) : (\n <Stack\n spacing={3}\n sx={{\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n p: 3,\n }}\n >\n {/* Upload Placeholder */}\n <Stack spacing={2} alignItems=\"center\">\n <Box\n sx={{\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n backgroundColor: alpha(\n theme.palette.successLight.main,\n 0.1\n ),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n <MdAddPhotoAlternate\n size={32}\n color={theme.palette.successLight.main}\n style={{ opacity: 0.8 }}\n />\n </Box>\n\n <Typography\n variant=\"h6\"\n sx={{\n color: theme.palette.text.primary,\n fontWeight: 500,\n textAlign: \"center\",\n mb: 1,\n }}\n >\n {placeholder}\n </Typography>\n\n <Typography\n variant=\"body2\"\n sx={{\n color: theme.palette.text.secondary,\n textAlign: \"center\",\n fontSize: \"0.875rem\",\n }}\n >\n PNG, JPG یا WEBP پشتیبانی می‌شود\n </Typography>\n </Stack>\n\n {/* Gallery/Camera buttons */}\n {allowGallery && (\n <Stack direction=\"row\" spacing={2}>\n <Button\n variant=\"contained\"\n startIcon={<MdOutlineCameraAlt size={16} />}\n onClick={(e) => {\n e.preventDefault();\n document.getElementById(\"camera-upload\")?.click();\n }}\n sx={{\n borderRadius: 2,\n px: 2.5,\n textTransform: \"none\",\n fontWeight: 600,\n boxShadow: `0 4px 12px ${alpha(\n theme.palette.successLight.main,\n 0.3\n )}`,\n zIndex: 1,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n boxShadow: `0 6px 20px ${alpha(\n theme.palette.successLight.main,\n 0.4\n )}`,\n transform: \"translateY(-1px)\",\n },\n }}\n color=\"success\"\n >\n دوربین\n </Button>\n\n <Button\n variant=\"outlined\"\n startIcon={<GrGallery size={16} />}\n onClick={(e) => {\n e.preventDefault();\n document.getElementById(\"gallery-upload\")?.click();\n }}\n sx={{\n borderRadius: 2,\n px: 2.5,\n textTransform: \"none\",\n fontWeight: 600,\n borderWidth: 2,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n boxShadow: `0 6px 20px ${alpha(\n theme.palette.successLight.main,\n 0.4\n )}`,\n transform: \"translateY(-1px)\",\n },\n }}\n color=\"success\"\n >\n گالری\n </Button>\n </Stack>\n )}\n </Stack>\n )}\n </Box>\n\n {/* Hidden Inputs */}\n {!allowGallery && (\n <input\n id=\"file-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n )}\n\n <input\n id=\"gallery-upload\"\n type=\"file\"\n accept=\"image/*\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n <input\n id=\"camera-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n {/* Error */}\n {errors[name] && (\n <Fade in={true}>\n <Box\n sx={{\n mt: 1.5,\n p: 1.5,\n borderRadius: 1,\n backgroundColor: alpha(theme.palette.error.main, 0.05),\n border: `1px solid ${alpha(theme.palette.error.main, 0.2)}`,\n }}\n >\n <Typography\n color=\"error\"\n variant=\"body2\"\n sx={{\n fontWeight: 500,\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n {String(errors[name]?.message || \"\")}\n </Typography>\n </Box>\n </Fade>\n )}\n\n <ImageViewer\n open={viewerOpen}\n handleClose={() => setViewerOpen(false)}\n src={viewerSrc}\n isLoading={false}\n />\n </Box>\n )}\n />\n );\n};\n\nexport default UploadImage;\n","import {\n Box,\n CircularProgress,\n Dialog,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport Image from \"next/image\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n MdClose,\n MdRotateLeft,\n MdRotateRight,\n MdZoomIn,\n MdZoomOut,\n} from \"react-icons/md\";\n\nexport default function ImageViewer({\n open,\n handleClose,\n src,\n isLoading,\n title = \"\",\n noResetBtn = false,\n noRotate = false,\n noZoom = false,\n}: {\n open: boolean;\n handleClose: () => void;\n isLoading: boolean;\n src: string | undefined;\n title?: string;\n\n noResetBtn?: boolean;\n noRotate?: boolean;\n noZoom?: boolean;\n}) {\n const [zoom, setZoom] = useState(1);\n const [rotate, setRotate] = useState(0);\n const [loading, setLoading] = useState(true);\n\n const [viewerOpen, setViewerOpen] = useState(false);\n const [viewerSrc, setViewerSrc] = useState<string>(\"\");\n\n // مختصات درگ\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [dragging, setDragging] = useState(false);\n const [startMouse, setStartMouse] = useState({ x: 0, y: 0 });\n const [startOffset, setStartOffset] = useState({ x: 0, y: 0 });\n\n const reset = () => {\n setZoom(1);\n setRotate(0);\n setPosition({ x: 0, y: 0 });\n };\n\n // Handle mouse wheel for zoom\n const handleWheel = useCallback((e: React.WheelEvent<HTMLDivElement>) => {\n e.preventDefault();\n const delta = -e.deltaY * 0.001; // adjust sensitivity as needed\n setZoom((z) => Math.min(5, Math.max(0.2, z + delta)));\n }, []);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n setDragging(true);\n setStartMouse({ x: e.clientX, y: e.clientY });\n setStartOffset({ ...position });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragging) return;\n const dx = e.clientX - startMouse.x;\n const dy = e.clientY - startMouse.y;\n setPosition({\n x: startOffset.x - dx,\n y: startOffset.y + dy,\n });\n };\n\n const handleMouseUp = () => setDragging(false);\n\n useEffect(() => {\n if (dragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [dragging, startMouse, startOffset]);\n\n useEffect(() => {\n if (open) reset();\n }, [open]);\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xl\"\n fullWidth\n sx={{\n \"& .MuiPaper-root\": {\n borderRadius: 3,\n backgroundColor: \"transparent\",\n },\n }}\n >\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"90vh\",\n bgcolor: \"rgba(17,17,17,0.9)\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n onWheel={handleWheel}\n >\n {/* Toolbar */}\n <Box\n sx={{\n position: \"absolute\",\n top: 10,\n left: 10,\n zIndex: 20,\n display: \"flex\",\n gap: 1,\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={handleClose}>\n <MdClose color=\"white\" />\n </IconButton>\n {!noResetBtn && (\n <IconButton onClick={reset}>\n <span style={{ color: \"white\", fontSize: \"0.9rem\" }}>\n بازنشانی\n </span>\n </IconButton>\n )}\n {!noRotate && (\n <>\n <IconButton onClick={() => setRotate((r) => r - 90)}>\n <MdRotateLeft color=\"white\" />\n </IconButton>\n <IconButton onClick={() => setRotate((r) => r + 90)}>\n <MdRotateRight color=\"white\" />\n </IconButton>\n </>\n )}\n {!noZoom && (\n <>\n <IconButton onClick={() => setZoom((z) => z + 0.2)}>\n <MdZoomIn color=\"white\" />\n </IconButton>\n <IconButton\n onClick={() => setZoom((z) => Math.max(0.2, z - 0.2))}\n >\n <MdZoomOut color=\"white\" />\n </IconButton>\n </>\n )}\n\n <Typography color=\"white\">{title}</Typography>\n </Box>\n\n {/* Loading */}\n {(isLoading || loading) && (\n <Box\n sx={{\n position: \"absolute\",\n zIndex: 10,\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"white\",\n }}\n >\n <CircularProgress color=\"inherit\" />\n </Box>\n )}\n\n {/* تصویر */}\n <Box\n onMouseDown={handleMouseDown}\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"78vh\",\n cursor: dragging ? \"grabbing\" : \"grab\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n }}\n >\n {src && !isLoading && (\n <Image\n src={src}\n alt={title}\n fill\n style={{\n objectFit: \"contain\",\n transform: `translate(${position.x}px, ${position.y}px) scale(${zoom}) rotate(${rotate}deg)`,\n transition: dragging ? \"none\" : \"transform 0.3s ease\",\n }}\n onLoadingComplete={() => setLoading(false)}\n />\n )}\n </Box>\n </Box>\n <ImageViewer\n open={viewerOpen}\n handleClose={() => setViewerOpen(false)}\n src={src || \"\"}\n isLoading={false}\n />\n </Dialog>\n );\n}\n","import {\n Dialog,\n IconButton,\n CircularProgress,\n Box,\n Typography,\n} from \"@mui/material\";\nimport {\n MdZoomIn,\n MdZoomOut,\n MdRotateLeft,\n MdRotateRight,\n MdClose,\n MdDownload,\n} from \"react-icons/md\";\nimport Image from \"next/image\";\nimport { useEffect, useState, useCallback } from \"react\";\n\nexport default function imgViewer({\n open,\n handleClose,\n src,\n isLoading,\n title = \"\",\n noResetBtn = false,\n noRotate = false,\n noZoom = false,\n unoptimized = false,\n}: {\n open: boolean;\n handleClose: () => void;\n isLoading: boolean;\n src: string | undefined;\n title?: string;\n unoptimized?: boolean;\n noResetBtn?: boolean;\n noRotate?: boolean;\n noZoom?: boolean;\n}) {\n const [zoom, setZoom] = useState(1);\n const [rotate, setRotate] = useState(0);\n const [loading, setLoading] = useState(true);\n\n // مختصات درگ\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [dragging, setDragging] = useState(false);\n const [startMouse, setStartMouse] = useState({ x: 0, y: 0 });\n const [startOffset, setStartOffset] = useState({ x: 0, y: 0 });\n\n const reset = () => {\n setZoom(1);\n setRotate(0);\n setPosition({ x: 0, y: 0 });\n };\n\n // Handle mouse wheel for zoom\n const handleWheel = useCallback((e: React.WheelEvent<HTMLDivElement>) => {\n e.preventDefault();\n const delta = -e.deltaY * 0.001; // adjust sensitivity as needed\n setZoom((z) => Math.min(5, Math.max(0.2, z + delta)));\n }, []);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n setDragging(true);\n setStartMouse({ x: e.clientX, y: e.clientY });\n setStartOffset({ ...position });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragging) return;\n const dx = e.clientX - startMouse.x;\n const dy = e.clientY - startMouse.y;\n setPosition({\n x: startOffset.x - dx,\n y: startOffset.y + dy,\n });\n };\n\n const handleMouseUp = () => setDragging(false);\n\n useEffect(() => {\n if (dragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [dragging, startMouse, startOffset]);\n\n useEffect(() => {\n if (open) reset();\n }, [open]);\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xl\"\n fullWidth\n sx={{\n \"& .MuiPaper-root\": {\n borderRadius: 3,\n backgroundColor: \"transparent\",\n },\n }}\n >\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"90vh\",\n bgcolor: \"rgba(17,17,17,0.9)\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n onWheel={handleWheel}\n >\n {/* Toolbar */}\n <Box\n sx={{\n position: \"absolute\",\n top: 10,\n left: 10,\n zIndex: 20,\n display: \"flex\",\n gap: 1,\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={handleClose}>\n <MdClose color=\"white\" />\n </IconButton>\n {!noResetBtn && (\n <IconButton onClick={reset}>\n <span style={{ color: \"white\", fontSize: \"0.9rem\" }}>\n بازنشانی\n </span>\n </IconButton>\n )}\n {!noRotate && (\n <>\n <IconButton onClick={() => setRotate((r) => r - 90)}>\n <MdRotateLeft color=\"white\" />\n </IconButton>\n <IconButton onClick={() => setRotate((r) => r + 90)}>\n <MdRotateRight color=\"white\" />\n </IconButton>\n </>\n )}\n {!noZoom && (\n <>\n <IconButton onClick={() => setZoom((z) => z + 0.2)}>\n <MdZoomIn color=\"white\" />\n </IconButton>\n <IconButton\n onClick={() => setZoom((z) => Math.max(0.2, z - 0.2))}\n >\n <MdZoomOut color=\"white\" />\n </IconButton>\n </>\n )}\n\n <Typography color=\"white\">{title}</Typography>\n </Box>\n\n {/* Loading */}\n {(isLoading || loading) && (\n <Box\n sx={{\n position: \"absolute\",\n zIndex: 10,\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"white\",\n }}\n >\n <CircularProgress color=\"inherit\" />\n </Box>\n )}\n\n {/* تصویر */}\n <Box\n onMouseDown={handleMouseDown}\n sx={{\n position: \"relative\",\n cursor: dragging ? \"grabbing\" : \"grab\",\n transform: `translate(${position.x}px, ${position.y}px) scale(${zoom}) rotate(${rotate}deg)`,\n transition: dragging ? \"none\" : \"transform 0.3s ease\",\n zIndex: 5,\n }}\n >\n {src && !isLoading && (\n <Image\n src={src}\n alt={title}\n width={1000}\n height={800}\n onLoad={() => setLoading(false)}\n onError={() => setLoading(false)}\n style={{\n objectFit: \"contain\",\n userSelect: \"none\",\n pointerEvents: \"none\",\n }}\n unoptimized={unoptimized}\n {...(unoptimized\n ? { loader: ({ src }) => src }\n : { loader: undefined })}\n />\n )}\n </Box>\n </Box>\n </Dialog>\n );\n}\n","import letters from \"../constants/letters\";\nimport { convertToEnglishDigits, convertToPersianDigits } from \"@mamrp/utils\";\nimport { Box, IconButton, Typography, useTheme } from \"@mui/material\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Image from \"next/image\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\n\ninterface SearchLicensePlateProps {\n width?: CSSProperties[\"width\"];\n part: string[];\n setValue?: any;\n data?: string;\n readOnly?: boolean;\n size?: \"small\" | \"medium\";\n}\n\nexport default function SearchLicensePlate({\n width = \"100%\",\n part,\n setValue,\n data,\n readOnly = true,\n size = \"small\",\n}: SearchLicensePlateProps) {\n const theme = useTheme();\n const [open, setOpen] = useState(false);\n const [inputValues, setInputValues] = useState({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n\n const inputRefs = {\n input1: useRef<HTMLInputElement>(null),\n input2: useRef<HTMLInputElement>(null),\n input3: useRef<HTMLInputElement>(null),\n input4: useRef<HTMLInputElement>(null),\n };\n\n const inputStyle = {\n color: theme.palette.text.primary,\n width: \"30px\",\n textAlign: \"center\" as const,\n backgroundColor: \"transparent\",\n outline: \"none\",\n border: \"none\",\n cursor: readOnly || (!!data && readOnly) ? \"default\" : \"text\",\n fontSize: size === \"small\" ? \"1.1rem\" : \"1.2rem\",\n fontWeight: 600,\n };\n\n // Initialize inputValues with data if available\n useEffect(() => {\n if (data) {\n let newdata = data.split(\" \").filter((word) => word !== \"ایران\");\n setInputValues({\n input1: newdata[0] || \"\",\n input2: newdata[1] || \"\",\n input3: newdata[2] || \"\",\n input4: newdata[3] || \"\",\n });\n } else {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n }\n }, [data]);\n\n const handleInputChange = (\n enteredInput: string,\n inputName: string,\n maxlength: number,\n minLength?: number\n ) => {\n if (inputName !== \"input2\") {\n const englishInput = convertToEnglishDigits(enteredInput);\n if (!/^\\d*$/.test(englishInput)) return;\n }\n\n const newInputValues = {\n ...inputValues,\n [inputName]: enteredInput,\n };\n setInputValues(newInputValues);\n\n // Update parent values\n setValue(part[0], convertToEnglishDigits(newInputValues.input1));\n setValue(part[1], newInputValues.input2);\n setValue(part[2], convertToEnglishDigits(newInputValues.input3));\n setValue(part[3], convertToEnglishDigits(newInputValues.input4));\n\n if (enteredInput.length === maxlength || minLength === 1) {\n if (inputName === \"input1\") setOpen(true);\n else if (inputName === \"input2\") setOpen(false);\n else inputRefs.input4.current?.focus();\n }\n };\n\n return (\n <Box\n sx={{\n width: width,\n border: \"1px solid #e5e7eb\",\n borderRadius: \"7px\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"3.25rem\",\n }}\n dir=\"ltr\"\n >\n {/* Flag */}\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n backgroundColor: \"#172554\",\n width: \"2.25rem\",\n height: \"3rem\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"7px\",\n mr: 0.4,\n }}\n >\n <Image\n src=\"/assets/images/iran-flag-dark.svg\"\n alt=\"Iran Flag\"\n width={size === \"small\" ? 18 : 22}\n height={size === \"small\" ? 14 : 18}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n setValue(part[0], \"\");\n setValue(part[1], \"\");\n setValue(part[2], \"\");\n setValue(part[3], \"\");\n }}\n />\n </Box>\n </Box>\n\n {/* Inputs */}\n <Box\n sx={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-around\",\n fontSize: \"1.125rem\",\n lineHeight: \"1.75rem\",\n fontWeight: 600,\n color: \"#1f2937\",\n alignItems: \"center\",\n }}\n >\n {/* input1 */}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input1}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={inputStyle}\n value={convertToPersianDigits(inputValues.input1)}\n onChange={(e) => handleInputChange(e.target.value, \"input1\", 2)}\n />\n\n {/* input2 */}\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input2}\n type=\"text\"\n minLength={1}\n maxLength={3}\n placeholder=\"-\"\n style={{ ...inputStyle, width: \"30px\", cursor: \"pointer\" }}\n value={inputValues.input2}\n readOnly\n onClick={() => {\n if (!(readOnly || (!!data && readOnly))) setOpen(true);\n }}\n />\n </Box>\n\n {/* Dialog for letters */}\n <Dialog dir=\"rtl\" open={open} onClose={() => setOpen(false)}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n <DialogTitle>انتخاب حرف پلاک</DialogTitle>\n <Box\n sx={{ cursor: \"pointer\", paddingRight: \"1rem\", color: \"#737373\" }}\n onClick={() => setOpen(false)}\n >\n <IconButton>\n <IoClose />\n </IconButton>\n </Box>\n </Box>\n\n <DialogContent>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n my: 2,\n }}\n >\n {letters.map((letter, index) => (\n <Button\n key={index}\n variant=\"outlined\"\n sx={{\n border: \"none\",\n backgroundColor: \"#f0f0f0\",\n width: \"70px\",\n height: \"50px\",\n fontWeight: \"bold\",\n \":hover\": { backgroundColor: \"#e3e3e3\" },\n }}\n onClick={() => handleInputChange(letter, \"input2\", 3, 1)}\n >\n <Typography color=\"#117A4F\" fontWeight=\"bold\">\n {letter}\n </Typography>\n </Button>\n ))}\n </Box>\n\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mt: 2.5 }}>\n <Button\n sx={{ width: \"6rem\" }}\n variant=\"outlined\"\n color=\"error\"\n onClick={() => {\n handleInputChange(\"\", \"input2\", 3, 1);\n setOpen(false);\n }}\n >\n حذف حرف\n </Button>\n </Box>\n </DialogContent>\n </Dialog>\n\n {/* input3 */}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input3}\n type=\"text\"\n maxLength={3}\n placeholder=\"- - -\"\n style={{ ...inputStyle, width: \"45px\" }}\n value={convertToPersianDigits(inputValues.input3)}\n onChange={(e) => handleInputChange(e.target.value, \"input3\", 3)}\n />\n\n {/* Divider */}\n <Box\n sx={{ height: \"40px\", width: \"1px\", backgroundColor: \"#e5e7eb\" }}\n />\n\n {/* input4 + Iran */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column-reverse\",\n gap: size === \"small\" ? 0.25 : 0.5,\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input4}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={{\n ...inputStyle,\n width: size === \"small\" ? \"32px\" : \"40px\",\n }}\n value={convertToPersianDigits(inputValues.input4)}\n onChange={(e) => handleInputChange(e.target.value, \"input4\", 2)}\n />\n <Image\n src=\"/assets/images/iran.svg\"\n alt=\"Iran\"\n width={size === \"small\" ? 27 : 32}\n height={size === \"small\" ? 23 : 28}\n style={{ margin: 0, display: \"block\" }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import { Button, Typography } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Box } from \"@mui/system\";\nimport {\n MobileDateTimePicker,\n LocalizationProvider,\n} from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n readOnly?: boolean;\n isLoading?: boolean;\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n name,\n control,\n label,\n isLoading,\n}) => {\n const today = moment();\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n const [open, setOpen] = useState(false);\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <MobileDateTimePicker\n open={open}\n onClose={() => {\n setOpen(false);\n field.onBlur();\n }}\n onOpen={() => setOpen(true)}\n orientation={isMobile ? \"portrait\" : \"landscape\"}\n disabled={isLoading}\n openTo=\"day\"\n views={[\"year\", \"month\", \"day\", \"hours\", \"minutes\"]}\n label={label}\n value={field.value ? moment(field.value) : null}\n onChange={(newValue: any) => {\n if (newValue) {\n field.onChange(dayjs(newValue).format(\"YYYY-MM-DDTHH:mm:ss\"));\n } else {\n field.onChange(null);\n }\n }}\n onAccept={() => {\n setOpen(false);\n field.onBlur();\n }}\n onError={() => {\n setOpen(false);\n field.onBlur();\n }}\n format={`jDD jMMMM jYYYY ${\" \"} - ${\" \"} HH:mm`}\n slots={{\n toolbar: (props) => {\n const currentDate = moment(field.value || null);\n let formattedDay, formattedDate, formattedYear, formattedTime;\n\n if (field.value) {\n formattedDay = currentDate.format(\"dddd\");\n formattedDate = currentDate.format(\"jDD jMMMM\");\n formattedYear = currentDate.format(\"jYYYY\");\n formattedTime = currentDate.format(\"HH:mm\");\n } else {\n (formattedDay = \"تاریخ و زمان انتخاب نشده است\"),\n (formattedDate = \"\"),\n (formattedYear = \"\"),\n (formattedTime = \"\");\n }\n\n return (\n <Box\n sx={{\n padding: \"16px\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Typography\n fontSize={16}\n variant=\"overline\"\n color=\"primary\"\n >\n {`${formattedDay}،`}\n </Typography>\n <Typography\n variant=\"h4\"\n fontSize={26}\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedDate}`}\n </Typography>\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {`${formattedYear}`}\n </Typography>\n {field.value && <Typography>{\"-\"}</Typography>}\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedTime}`}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n return (\n <Button\n className={props.className}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onClick={props.onClick}\n >\n {props[\"aria-label\"]}\n </Button>\n );\n },\n }}\n sx={{\n width: \"100%\",\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n }}\n maxDate={today}\n slotProps={{\n mobilePaper: {\n sx: {\n \"& .MuiClock-root\": {\n backgroundColor: \"transparent\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n \"& .MuiClock-clock\": {\n mt: 4,\n pt: 0.5,\n width: 230,\n height: 230,\n backgroundColor: \"rgba(0, 0, 0, 0.03)\",\n borderRadius: \"50%\",\n border: \"4px solid rgba(0, 0, 0, 0.04)\",\n },\n \"& .MuiClock-pin\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockPointer-root, & .MuiClockPointer-thumb\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockNumber-root\": {\n color: \"#000\",\n fontSize: \"16px\",\n },\n \"&.Mui-selected, &.Mui-focusVisible\": {\n color: \"#FFF\",\n },\n },\n },\n textField: {\n placeholder: field.value ? \"\" : \"انتخاب تاریخ به همراه زمان\",\n onClick: () => {\n if (!open) setOpen(true);\n },\n InputLabelProps: {\n shrink: true,\n style: { color: error ? \"#D32F2F\" : \"inherit\" },\n },\n InputProps: {\n onFocus: () => {},\n },\n },\n }}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","import * as React from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport {\n Box,\n Button,\n CircularProgress,\n Divider,\n IconButton,\n} from \"@mui/material\";\nimport { Delete } from \"@mamrp/icons/common\";\nimport { MdClose, MdOutlineCancel } from \"react-icons/md\";\nimport { ReactNode } from \"react\";\n\ninterface ConfirmationDialogProps {\n open: boolean;\n handleClose: () => void;\n callback: (params: any) => void;\n callbackParams: any;\n headerText: string;\n bodyText: ReactNode;\n isLoading?: boolean;\n}\n\nexport default function ConfirmationDialog({\n open,\n handleClose,\n callback,\n callbackParams,\n headerText,\n bodyText,\n isLoading,\n}: ConfirmationDialogProps) {\n return (\n <Dialog open={open} onClose={handleClose} fullWidth maxWidth=\"xs\">\n <Box>\n <DialogTitle\n fontWeight={700}\n fontSize={\"1.2rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={1}\n >\n <Delete style={{ color: \"red\" }} size={18} />\n {headerText}\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <MdClose />\n </IconButton>\n <Divider sx={{ my: \"10px\" }} />\n <DialogContent>{bodyText}</DialogContent>\n <DialogActions\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n width: \"100%\",\n gap: \"12px\",\n alignItems: \"center\",\n padding: \"2rem\",\n }}\n >\n <Button\n disabled={isLoading}\n onClick={() => {\n callback(callbackParams);\n handleClose();\n }}\n variant=\"contained\"\n color=\"error\"\n sx={{ minWidth: \"120px\" }}\n startIcon={\n isLoading ? (\n <CircularProgress sx={{ color: \"white\" }} size={20} />\n ) : (\n <Delete size={16} />\n )\n }\n >\n حذف\n </Button>\n <Button\n onClick={handleClose}\n variant=\"outlined\"\n color=\"error\"\n startIcon={<MdOutlineCancel size={15} />}\n sx={{ minWidth: \"120px\" }}\n >\n انصراف\n </Button>\n </DialogActions>\n </Box>\n </Dialog>\n );\n}\n","import Image from \"next/image\";\nimport {\n Card,\n Stack,\n Typography,\n useTheme,\n SxProps,\n Theme,\n} from \"@mui/material\";\nimport React from \"react\";\n\ninterface NoResultProps {\n title?: string;\n description?: string;\n sx?: SxProps<Theme>;\n}\n\nexport default function NoResult({\n title = \"داده ای برای نمایش وجود ندارد!\",\n description,\n sx = {},\n}: NoResultProps) {\n const theme = useTheme();\n\n return (\n <Card\n sx={{\n width: \"100%\",\n minWidth: 300,\n borderRadius: \"12px\",\n border: `1px solid ${theme.palette.secondary.light}`,\n }}\n >\n <Stack\n spacing={2}\n alignItems={\"center\"}\n sx={{\n py: 5,\n ...sx,\n }}\n >\n <img\n src={\"/assets/images/no-data.png\"}\n alt=\"No Data\"\n height={100}\n width={100}\n />\n\n <Stack spacing={1} alignItems={\"center\"}>\n <Typography fontWeight={\"600\"}>{title}</Typography>\n\n {description && (\n <Typography fontWeight={\"500\"}>{description}</Typography>\n )}\n </Stack>\n </Stack>\n </Card>\n );\n}\n","import { convertToPersianDigits } from \"@mamrp/utils\";\nimport { Button } from \"@mui/material\";\nimport Stack from \"@mui/material/Stack\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\n\ninterface PaginationListProps {\n currentPage: number;\n setCurrentPage: React.Dispatch<React.SetStateAction<number>>;\n totalPages: number;\n}\n\nexport default function PaginationList({\n currentPage,\n setCurrentPage,\n totalPages,\n}: PaginationListProps) {\n // Effect to handle scrollTo on page change\n React.useEffect(() => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }, [currentPage]);\n\n const handlePrevious = () => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n };\n\n const handleNext = () => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n return (\n <Stack\n direction=\"row\"\n spacing={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {/* Previous button */}\n <Button\n variant=\"contained\"\n onClick={handlePrevious}\n color=\"warning\"\n disabled={currentPage === 1}\n sx={{\n borderRadius: 2,\n width: \"100px\",\n height: \"50px\",\n minWidth: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n size=\"large\"\n startIcon={<FaChevronRight />}\n >\n قبلی{\" \"}\n </Button>\n\n {/* Current page number in Persian */}\n <Box\n sx={{\n fontWeight: \"bold\",\n width: \"120px\",\n height: \"50px\",\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#fff\",\n fontSize: \"1.5rem\",\n backgroundColor: \"#065938\",\n }}\n >\n <span style={{ margin: \"0px 6px\", fontSize: \"1.2rem\" }}>صفحه</span>\n {convertToPersianDigits(currentPage)}\n </Box>\n\n {/* Next button */}\n <Button\n variant=\"contained\"\n onClick={handleNext}\n color=\"warning\"\n disabled={currentPage === totalPages}\n sx={{\n borderRadius: 2,\n width: \"100px\",\n height: \"50px\",\n minWidth: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n size=\"large\"\n endIcon={<FaChevronLeft />}\n >\n بعدی{\" \"}\n </Button>\n </Stack>\n );\n}\n","import * as React from \"react\";\nimport { Controller, Control } from \"react-hook-form\";\nimport Radio from \"@mui/material/Radio\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\nimport { Typography, useTheme } from \"@mui/material\";\nimport theme from \"@mamrp/layout/theme\"; // Assuming you have a theme file in your layout package\n// import theme from \"@mamrp/layout/theme\";\nimport { Box } from \"@mui/system\";\n\nexport default function RadioButton({\n name,\n label,\n options,\n control,\n align = \"start\",\n disabledBoarder,\n direction = \"row\",\n}: {\n name: string;\n label: string | React.ReactNode;\n control: Control<any>;\n options: { value: any; name: string; id: any }[];\n align?: \"start\" | \"center\" | \"end\";\n disabledBoarder?: boolean;\n direction?: \"row\" | \"column\";\n}) {\n \n return (\n <>\n <FormControl\n sx={{\n display: \"flex\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box display={\"flex\"} width={\"100%\"} flexDirection={\"column\"}>\n {label && (\n <FormLabel\n id={`${name}-label`}\n sx={{\n position: \"absolute\",\n top: -10,\n left: 15,\n px: 0.5, // به‌جای background رنگی، این باعث میشه کمی فضا بدیم\n backgroundColor: \"background.paper\", // استفاده از theme برای همخوانی با زمینه\n color: error?.message\n ? theme.CustomComponents.RadioButton.errorColor\n : theme.CustomComponents.RadioButton.textColor,\n fontSize: 15,\n zIndex: 1,\n }}\n >\n {label}\n </FormLabel>\n )}\n <RadioGroup\n {...field}\n aria-labelledby={`${name}-label`}\n value={field.value}\n sx={{\n width: \"100%\",\n p: 0.8,\n px: 1,\n borderRadius: 3,\n display: \"flex\",\n justifyContent:align,\n flexDirection: \"row\",\n border: disabledBoarder ? \"\" : `${theme.CustomComponents.RadioButton.borderSize}px solid`,\n borderColor: error?.message\n ? theme.CustomComponents.RadioButton.errorColor\n : theme.CustomComponents.RadioButton.borderColor,\n }}\n >\n {options.map((option: any) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n control={<Radio id={option.id} />}\n label={option.name}\n />\n ))}\n </RadioGroup>\n {error?.message && (\n <Typography color=\"error\" fontSize={theme.CustomComponents.RadioButton.errorFontSize} ml={2}>\n {error?.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </FormControl>\n </>\n );\n}\n","import { MdKeyboardArrowLeft, MdKeyboardArrowRight } from \"react-icons/md\";\n\nimport {\n Checkbox,\n Collapse,\n FormControl,\n IconButton,\n InputLabel,\n List,\n ListItemText,\n MenuItem,\n Select,\n Typography,\n} from \"@mui/material\";\nimport React, { useState } from \"react\";\n\ninterface Item {\n id: number;\n title: string;\n parentId: number | null;\n level: number;\n children?: Item[];\n}\n\nconst backendResponse = {\n value: {\n data: [\n {\n id: 287,\n title: \"وقفه داخل کشتارگاه\",\n parentId: null,\n level: 1,\n children: [\n {\n id: 292,\n title: \"خط ۲ کشتار\",\n parentId: 287,\n level: 2,\n children: [\n {\n id: 312,\n title: \"خرابی دستگاه مقعد زن\",\n parentId: 292,\n level: 3,\n children: [],\n },\n {\n id: 313,\n title: \"خرابی دستگاه چاک زن\",\n parentId: 292,\n level: 3,\n children: [],\n },\n ],\n },\n ],\n },\n {\n id: 288,\n title: \"وقفه قبل از کشتارگاه\",\n parentId: null,\n level: 1,\n children: [\n {\n id: 289,\n title: \"سرویس پرسنل\",\n parentId: 288,\n level: 2,\n children: [],\n },\n ],\n },\n ],\n },\n};\n\nconst NestedSelect: React.FC = () => {\n const [selectedItem, setSelectedItem] = useState<Item | null>(null);\n const [openMenus, setOpenMenus] = useState<Record<number, boolean>>({});\n const [menuOpen, setMenuOpen] = useState<boolean>(false);\n\n // Handle selecting an item\n const handleSelect = (item: Item) => {\n setSelectedItem((prev) => (prev?.id === item.id ? null : item));\n };\n\n // Handle toggling parent items\n const handleToggle = (id: number) => {\n setOpenMenus((prev) => ({ ...prev, [id]: !prev[id] }));\n };\n\n // Recursive function to render nested items\n const renderMenuItems = (items: Item[], level = 0) => {\n return items.map((item) => {\n const isParentSelected = selectedItem?.id === item.id;\n const isAnyChildSelected = item.children?.some(\n (child) => selectedItem?.id === child.id\n );\n\n return (\n <div key={item.id}>\n <MenuItem\n onClick={(e) => {\n e.stopPropagation();\n handleSelect(item);\n }}\n disabled={isAnyChildSelected}\n sx={{ pl: level * 2 }}\n >\n <Checkbox checked={isParentSelected} />\n <ListItemText primary={item.title} />\n {item.children && item.children.length > 0 && (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggle(item.id);\n }}\n >\n {openMenus[item.id] ? (\n <MdKeyboardArrowLeft />\n ) : (\n <MdKeyboardArrowRight />\n )}\n </IconButton>\n )}\n </MenuItem>\n\n {/* Render Children (If any) */}\n {item.children && item.children.length > 0 && (\n <Collapse in={openMenus[item.id]} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" disablePadding>\n {renderMenuItems(item.children, level + 1)}\n </List>\n </Collapse>\n )}\n </div>\n );\n });\n };\n\n return (\n <FormControl fullWidth variant=\"outlined\">\n <InputLabel shrink={true}>دسته بندی *</InputLabel>\n <Select\n label=\"دسته بندی *\"\n value={selectedItem?.id || \"\"}\n displayEmpty\n open={menuOpen}\n onOpen={() => setMenuOpen(true)}\n onClose={() => setMenuOpen(false)}\n renderValue={(selected) =>\n selectedItem ? <Typography>{selectedItem.title}</Typography> : \" \"\n }\n >\n {renderMenuItems(backendResponse.value.data)}\n </Select>\n </FormControl>\n );\n};\n\nexport default NestedSelect;\n","import { Box } from \"@mui/material\";\nimport { keyframes } from \"@mui/system\";\nimport React from \"react\";\n\nconst radarAnimation = keyframes`\n 0% {\n background: inherit;\n transform: scale(0);\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: scale(4);\n }\n`;\n\nexport default function SonarSpinner({ children }: { children: any }) {\n return (\n <>\n <Box className=\"absolute w-[30px] h-[30px] rounded-full bg-white z-10 flex items-center justify-center\">\n {children}\n </Box>\n <Box\n className=\"root\"\n sx={{\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"white\",\n transform: \"translateZ(0)\",\n }}\n >\n <Box\n className={\"radar\"}\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"15px\",\n height: \"15px\",\n borderRadius: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"red\",\n animation: `${radarAnimation} 1.2s linear infinite`,\n animationDelay: \"0s\",\n }}\n >\n <Box\n className={\"sonar\"}\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"14px\",\n height: \"14px\",\n borderRadius: \"inherit\",\n backgroundColor: \"red\",\n }}\n ></Box>\n <Box\n className=\"sonar delayed\"\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: `${radarAnimation} 1.2s linear infinite`,\n animationDelay: \"1s\",\n backgroundColor: \"red\",\n }}\n ></Box>\n </Box>\n </Box>\n </>\n );\n}\n","import Box from \"@mui/material/Box\";\nimport Step from \"@mui/material/Step\";\nimport StepButton from \"@mui/material/StepButton\";\nimport Stepper from \"@mui/material/Stepper\";\nimport * as React from \"react\";\n\ninterface HorizontalStepperProps {\n steps: string[];\n currentStep: number;\n setCurrentStep: (newStep: number) => void;\n}\n\nexport default function HorizontalStepper({\n steps,\n currentStep,\n setCurrentStep,\n}: HorizontalStepperProps) {\n const [completed, setCompleted] = React.useState<{\n [k: number]: boolean;\n }>({});\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Stepper nonLinear activeStep={currentStep}>\n {steps.map((label, index) => (\n <Step key={index} completed={completed[index]}>\n <StepButton\n color=\"inherit\"\n disabled={!(index === 0 && currentStep === 1)} // Only enable for index 0 when currentStep is 1\n onClick={() => {\n if (index === 0 && currentStep === 1) {\n setCurrentStep(0); // Allow going back to step 0\n }\n }}\n >\n {label}\n </StepButton>\n </Step>\n ))}\n </Stepper>\n </Box>\n );\n}\n","import { Box, FormControlLabel, Switch } from \"@mui/material\";\nimport { styled } from \"@mui/system\";\nimport React from \"react\";\nimport { PiCardsDuotone, PiTableDuotone } from \"react-icons/pi\";\nimport { useTheme } from \"@mui/material\";\n\ntype SwitchButtonProps = {\n checked: boolean;\n handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n iconChecked?: React.ReactNode;\n iconUnchecked?: React.ReactNode;\n};\n\nconst SwitchButton: React.FC<SwitchButtonProps> = ({\n checked,\n handleChange,\n iconChecked,\n iconUnchecked,\n}) => {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n const CustomSwitch = styled(Switch)(({ theme }) => ({\n \"& .MuiSwitch-switchBase.Mui-checked\": {\n color: theme.palette.primary.main,\n },\n \"& .MuiSwitch-switchBase\": {\n color: isDarkMode ? \"rgba(220,220,220,1)\" : \"rgba(188,188,188,1)\",\n },\n \"& .MuiSwitch-track\": {\n // backgroundColor: \"rgba(160,160,160, 0.1)\",\n backgroundColor: \"#fff\",\n border: isDarkMode ? \"2px solid white\" : \"2px solid rgba(80,80,80, 1)\",\n },\n }));\n\n const BoxContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n\n backgroundColor: \"rgba(188,188,188, 0.1)\",\n border: \"2px solid rgba(200,200,200, 1)\",\n borderRadius: 10,\n transition: \"all 0.3s ease\",\n paddingTop: theme.spacing(0.1),\n paddingBottom: theme.spacing(0.1),\n paddingLeft: theme.spacing(1),\n }));\n\n const LabelContainer = styled(\"div\")({\n transition: \"all 0.2s ease\",\n color: isDarkMode ? \"rgba(220,220,220, 1)\" : \"rgba(160,160,160, 1)\",\n });\n\n return (\n <BoxContainer>\n <FormControlLabel\n control={\n <CustomSwitch\n checked={checked}\n onChange={handleChange}\n name=\"switch\"\n />\n }\n label={\n <LabelContainer>\n {checked ? (\n iconChecked ? (\n iconChecked\n ) : (\n <PiTableDuotone size={30} /> // Default checked icon\n )\n ) : iconUnchecked ? (\n iconUnchecked\n ) : (\n <PiCardsDuotone size={30} /> // Default unchecked icon\n )}\n </LabelContainer>\n }\n />\n </BoxContainer>\n );\n};\n\nexport default SwitchButton;\n","import { Typography } from \"@mui/material\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n DataGrid,\n DataGridProps,\n GridColDef,\n GridRowParams,\n GridRowSelectionModel,\n GridSortModel,\n} from \"@mui/x-data-grid\";\nimport React, { Dispatch, SetStateAction, useEffect } from \"react\";\n\ninterface StateType {\n page: number;\n pageSize: number;\n}\n\ntype TapleProps = {\n columns: GridColDef[];\n rows: object[];\n paginationModel?: StateType;\n setPaginationModel?: Dispatch<SetStateAction<StateType>>;\n totalRows?: number;\n rowId?: any;\n loading: boolean;\n _CustomFooter?: any;\n _tools?: React.ReactNode;\n pagingmode?: \"client\" | \"server\";\n rowInPage?: number;\n evenRowBgColor?: string;\n highlightedRowId?: string | number;\n sortFieldMapping?: { [key: string]: string };\n setsortQuery?: Dispatch<SetStateAction<any | null>>;\n sortQuery?: any;\n fontSize?: number | string;\n checkboxSelection?: boolean;\n selectedRows?: GridRowSelectionModel;\n setSelectedRows?: Dispatch<SetStateAction<GridRowSelectionModel>>;\n isRowSelectable?: (params: GridRowParams) => boolean;\n disablePageSizeChange?: boolean;\n};\n\nconst ScrollableContainer = styled(\"div\")({\n width: \"100%\",\n overflowX: \"auto\", // Enable horizontal scrolling\n});\n\nconst Table = ({\n pagingmode,\n totalRows,\n rows,\n columns,\n paginationModel,\n setPaginationModel,\n loading,\n rowId,\n _tools,\n _CustomFooter,\n rowInPage,\n highlightedRowId,\n evenRowBgColor = \"\",\n sortFieldMapping,\n setsortQuery,\n sortQuery,\n fontSize,\n checkboxSelection = false,\n selectedRows,\n setSelectedRows,\n isRowSelectable,\n disablePageSizeChange = false,\n ...rest\n}: TapleProps) => {\n const [sortModel, setSortModel] = React.useState<GridSortModel>([]);\n\n // Handle sorting\n const handleSetQueryOptions = (options: any[]) => {\n if (!Array.isArray(options)) return;\n const formattedOptions = options.reduce((acc, item) => {\n const field = sortFieldMapping?.[item.field] || item.field;\n acc[field] = item.sort == \"ask\" ? 0 : 1;\n return acc;\n }, {});\n setsortQuery && setsortQuery(formattedOptions);\n };\n\n useEffect(() => {\n if (sortQuery && Object.keys(sortQuery).length > 0) {\n const queryKey = Object.keys(sortQuery)[0];\n if (sortFieldMapping) {\n const fieldName = Object.keys(sortFieldMapping).find(\n (key) => sortFieldMapping[key] === queryKey\n );\n if (fieldName) {\n const sortDirection = sortQuery[queryKey];\n setSortModel([\n { field: fieldName, sort: sortDirection == 0 ? \"asc\" : \"desc\" },\n ]);\n }\n }\n } else {\n setSortModel([]);\n }\n }, [sortQuery]);\n\n const handleSortModelChange = React.useCallback(\n (sortModel: GridSortModel) => {\n handleSetQueryOptions(\n sortModel.map((item) => ({\n field: item.field,\n sort:\n item.sort === \"asc\"\n ? \"ask\"\n : item.sort === \"desc\"\n ? \"desc\"\n : item.sort,\n }))\n );\n },\n []\n );\n\n // Determine if pagination should be shown\n const shouldShowPagination = !!(paginationModel && setPaginationModel);\n\n const option = {\n ...(!!setsortQuery && {\n sortingMode: \"server\",\n onSortModelChange: handleSortModelChange,\n sortModel: sortModel,\n }),\n ...(shouldShowPagination && !pagingmode && { paginationMode: \"server\" }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && { paginationMode: \"client\" }),\n ...(shouldShowPagination &&\n !pagingmode && {\n onPaginationModelChange: setPaginationModel,\n paginationModel: paginationModel,\n }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && {\n initialState: {\n pagination: {\n paginationModel: {\n pageSize: rowInPage ? rowInPage : 5, // Default page size (5)\n page: paginationModel?.page || 0, // Default to page 0 if not provided\n },\n },\n },\n }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && {\n paginationModel, // Connect paginationModel to DataGrid\n }),\n };\n\n return (\n <ScrollableContainer>\n <DataGrid\n checkboxSelection={selectedRows != undefined}\n rowSelectionModel={selectedRows}\n isRowSelectable={\n isRowSelectable ? (params) => isRowSelectable(params) : undefined\n }\n onRowSelectionModelChange={(newSelection) => {\n if (setSelectedRows) {\n setSelectedRows(newSelection);\n }\n }}\n rows={rows}\n columns={columns.map((column) => ({ ...column }))}\n disableRowSelectionOnClick\n {...(shouldShowPagination\n ? { pagination: true }\n : { hideFooter: true })}\n sx={{\n fontSize: fontSize ?? \"0.875rem\",\n \"& .MuiDataGrid-columnHeaders\": {\n backgroundColor: \"rgba(0, 0, 0, 0.1)\",\n },\n \"& .MuiDataGrid-columnHeaderTitle\": {\n fontSize: fontSize ?? \"1rem\",\n },\n \"& .MuiDataGrid-row:nth-of-type(even)\": {\n backgroundColor: evenRowBgColor !== \"\" ? evenRowBgColor : \"\",\n },\n \"& .MuiDataGrid-row:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.08)\",\n },\n ...(highlightedRowId && {\n \"& .MuiDataGrid-row\": {\n [`&[data-id=\"${highlightedRowId}\"]`]: {\n backgroundColor: \"#c5edd0\",\n },\n },\n }),\n }}\n {...(option as Partial<DataGridProps>)}\n {...(shouldShowPagination && {\n onPaginationModelChange: setPaginationModel,\n })}\n getRowId={rowId}\n disableColumnResize={true}\n autoHeight={true}\n {...(shouldShowPagination && { rowCount: totalRows })}\n {...(shouldShowPagination && {\n pageSizeOptions: disablePageSizeChange\n ? [paginationModel?.pageSize || 5]\n : [5, 10, 25, 50, 75, 100],\n })}\n {...(shouldShowPagination && {\n slotProps: {\n pagination: {\n labelRowsPerPage: \"تعداد در هر صفحه\",\n },\n },\n })}\n disableColumnMenu\n disableColumnFilter\n loading={loading}\n {...(disablePageSizeChange && { hideFooterRowsPerPage: true })}\n localeText={{\n noRowsLabel: \"هیچ داده‌ای یافت نشد!\",\n noResultsOverlayLabel: \"هیچ داده‌ای یافت نشد!\",\n MuiTablePagination: {\n labelDisplayedRows: ({ from, to, count }) =>\n loading ? (\n <>\n <Skeleton\n variant=\"text\"\n width={30}\n style={{ display: \"inline-block\" }}\n />{\" \"}\n <Skeleton\n variant=\"text\"\n width={30}\n style={{ display: \"inline-block\" }}\n />\n </>\n ) : (\n `${from} - ${!isNaN(to) ? to : \"...\"} از ${\n count !== undefined ? count : \"...\"\n }`\n ),\n },\n footerRowSelected: (count) => (\n <Typography>سطر های انتخاب شده : {count}</Typography>\n ),\n }}\n {...rest}\n />\n </ScrollableContainer>\n );\n};\n\nexport default Table;\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport React, { forwardRef } from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\nimport { PatternFormat, PatternFormatProps } from \"react-number-format\";\n\ntype FormInputTextProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string;\n maxLength?: number;\n readOnly?: boolean;\n rules?: any;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n multiline?: boolean;\n isLoading?: boolean;\n onBlurHandler?: any;\n rows?: number;\n groupEvery?: number;\n groupSeparator?: string;\n formatPattern?: string; // الگوی X برای رقم\n} & TextFieldProps;\n\nconst PatternTextField = <T extends FieldValues>({\n name,\n control,\n label,\n maxLength,\n readOnly,\n rules,\n size = \"small\",\n disabled = false,\n multiline,\n isLoading,\n onBlurHandler,\n rows,\n groupEvery,\n groupSeparator = \"-\",\n formatPattern,\n ...rest\n}: FormInputTextProps<T>) => {\n\n const isNumericMode = !!groupEvery;\n\n const formatValue = (val: string) => {\n if (!val) return \"\";\n const raw = isNumericMode ? val.replace(/\\D/g, \"\") : val;\n\n if (groupEvery) {\n return (\n raw\n .match(new RegExp(`.{1,${groupEvery}}`, \"g\"))\n ?.join(groupSeparator) || \"\"\n );\n }\n\n return val;\n };\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n {...rest}\n disabled={disabled || isLoading}\n helperText={error?.message || null}\n multiline={multiline}\n size={size}\n rows={rows || undefined}\n error={!!error}\n value={formatValue(value?.toString() || \"\")}\n onChange={(e) => {\n let newRaw = e.target.value;\n if (isNumericMode) newRaw = newRaw.replace(/\\D/g, \"\");\n if (!maxLength || newRaw.length <= maxLength) onChange(newRaw);\n }}\n fullWidth\n label={label}\n variant=\"outlined\"\n inputProps={{ ...rest.inputProps, readOnly }}\n InputProps={{\n inputComponent: formatPattern\n ? PatternFormatCustom as any // 👈 جایگزین ورودی\n : undefined,\n inputProps: {\n format: formatPattern, // 👈 الگوی نمایش\n },\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : null,\n }}\n InputLabelProps={{ shrink: true }}\n inputRef={ref}\n \n />\n )}\n />\n );\n};\ninterface CustomProps {\n onChange: (event: { target: { name: string; value: string } }) => void;\n name: string;\n format: string;\n}\n\nconst PatternFormatCustom = forwardRef<PatternFormatProps, CustomProps>(\n function PatternFormatCustom(props, ref) {\n const { onChange, format, ...other } = props;\n\n return (\n <PatternFormat\n {...other}\n getInputRef={ref}\n format={format}\n onValueChange={(values) => {\n onChange({\n target: {\n name: props.name,\n value: values.value,\n },\n });\n }}\n />\n );\n }\n);\nexport default PatternTextField;\n\n\n","import TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport { ReactNode, forwardRef } from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\nimport { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport React from \"react\";\n\ntype FormInputNumberProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string | ReactNode;\n endAdornment?: ReactNode;\n startAdornment?: ReactNode;\n thousandSeparator?: string | null;\n allowLeadingZeros?: boolean;\n allowNegative?: boolean;\n onChangeHandler?: (\n param: any,\n onChange: (data: any) => void,\n value: any\n ) => void;\n valueHandler?: (value: any) => void;\n maxLength?: number;\n rules?: any;\n isLoading?: boolean;\n data?: any;\n borderColor?: string;\n decimalScale?: number;\n placeholder?: string;\n nputRef?: any;\n onKeyDown?: any;\n textAlign?: \"left\" | \"right\" | \"center\";\n autoComplete?: string;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n} & TextFieldProps;\n\nconst FormInputNumber = <T extends FieldValues>({\n name,\n control,\n label,\n inputRef,\n onKeyDown,\n endAdornment,\n thousandSeparator,\n startAdornment,\n onChangeHandler,\n valueHandler,\n allowLeadingZeros = false,\n allowNegative = false,\n maxLength,\n isLoading,\n rules,\n data,\n borderColor,\n placeholder,\n decimalScale = 2,\n autoComplete = \"off\",\n textAlign = \"right\",\n variant = \"outlined\",\n ...rest\n}: FormInputNumberProps<T>) => {\n return (\n <Controller\n rules={rules}\n name={name}\n control={control}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n onKeyDown={onKeyDown}\n disabled={isLoading}\n helperText={error ? error.message : null}\n placeholder={placeholder}\n size=\"small\"\n autoComplete={autoComplete}\n error={!!error}\n onChange={(param) => {\n onChangeHandler\n ? onChangeHandler(param, onChange, value)\n : onChange(param);\n }}\n value={\n data && !value\n ? data\n : value == null\n ? \"\"\n : valueHandler\n ? valueHandler(value)\n : value\n }\n fullWidth\n variant={variant}\n sx={{\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: borderColor || \"\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: borderColor ?? \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: borderColor ?? \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n \"& .MuiInputBase-input\": {\n textAlign: textAlign,\n },\n }}\n label={label}\n inputRef={inputRef ?? ref}\n InputLabelProps={{ shrink: true }}\n InputProps={{\n inputComponent: NumericFormatCustom as any,\n inputProps: {\n thousandSeparator,\n allowLeadingZeros,\n allowNegative,\n maxLength,\n decimalScale,\n },\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : (\n endAdornment\n ),\n startAdornment: startAdornment as any,\n }}\n {...rest}\n />\n )}\n />\n );\n};\n\ninterface CustomProps {\n onChange: (event: { target: { name: string; value: string } }) => void;\n name: string;\n thousandSeparator: string;\n allowLeadingZeros: boolean;\n allowNegative: boolean;\n maxLength?: number;\n decimalScale?: number;\n}\n\nconst NumericFormatCustom = forwardRef<NumericFormatProps, CustomProps>(\n function NumericFormatCustom(props, ref) {\n const {\n onChange,\n thousandSeparator,\n allowLeadingZeros,\n allowNegative,\n maxLength,\n decimalScale,\n ...other\n } = props;\n\n return (\n <NumericFormat\n {...other}\n getInputRef={ref}\n onValueChange={(values) => {\n onChange({\n target: {\n name: props.name,\n value: values.value,\n },\n });\n }}\n maxLength={maxLength}\n allowLeadingZeros={allowLeadingZeros}\n thousandSeparator={thousandSeparator}\n valueIsNumericString\n allowNegative={allowNegative}\n decimalScale={decimalScale}\n fixedDecimalScale={false}\n dir=\"ltr\"\n />\n );\n }\n);\n\nexport default FormInputNumber;\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport React from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\n\ntype FormInputTextProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string;\n maxLength?: number;\n readOnly?: boolean;\n rules?: any;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n multiline?: boolean;\n isLoading?: boolean;\n onBlurHandler?: any;\n rows?: number;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n} & TextFieldProps;\n\nconst FormInputText = <T extends FieldValues>({\n name,\n control,\n label,\n maxLength,\n readOnly,\n rules,\n size = \"small\",\n disabled = false,\n multiline,\n isLoading,\n onBlurHandler,\n rows,\n variant = \"outlined\",\n ...rest\n}: FormInputTextProps<T>) => {\n return (\n <Controller\n name={name}\n control={control}\n rules={rules} // This works because we've typed it correctly\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n disabled={disabled || isLoading}\n helperText={error ? error.message : null}\n multiline={multiline}\n size={size}\n rows={rows ? rows : undefined}\n error={!!error}\n onChange={onChange}\n value={value}\n fullWidth\n label={label}\n variant={variant}\n inputProps={{\n ...rest.inputProps,\n maxLength: maxLength,\n readOnly: readOnly,\n }}\n InputProps={{\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : null,\n }}\n InputLabelProps={{ shrink: true }}\n inputRef={ref}\n {...rest}\n />\n )}\n />\n );\n};\n\nexport default FormInputText;\n","import React from \"react\";\r\nimport {\r\n Controller,\r\n Control,\r\n FieldErrors,\r\n FieldValues,\r\n Path,\r\n UseFormSetValue,\r\n} from \"react-hook-form\";\r\nimport { Box, Button, Stack, Typography } from \"@mui/material\";\r\nimport { GrUpload, GrGallery } from \"react-icons/gr\";\r\nimport { MdOutlineCameraAlt } from \"react-icons/md\";\r\nimport Image from \"next/image\";\r\n\r\ntype UploadImageProps<T extends FieldValues> = {\r\n placeholder: string;\r\n name: Path<T>;\r\n selectedImage: string | null;\r\n setSelectedImage: React.Dispatch<React.SetStateAction<string | null>>;\r\n control: Control<T>;\r\n errors: FieldErrors<T>;\r\n setValue: UseFormSetValue<T>;\r\n height?: string;\r\n allowGallery?: boolean;\r\n imageFit?: \"contain\" | \"cover\";\r\n disableCamera?: boolean;\r\n};\r\n\r\nconst UploadImage = <T extends FieldValues>({\r\n placeholder,\r\n name,\r\n selectedImage,\r\n setSelectedImage,\r\n control,\r\n errors,\r\n setValue,\r\n height,\r\n allowGallery = false,\r\n imageFit = \"cover\",\r\n disableCamera = false,\r\n}: UploadImageProps<T>) => {\r\n // Function to compress image before uploading\r\n const compressImage = (\r\n file: File,\r\n quality = 0.8,\r\n maxWidth = 800,\r\n maxHeight = 800\r\n ): Promise<File | null> => {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (event) => {\r\n const img = new window.Image();\r\n img.src = event.target?.result as string;\r\n img.onload = () => {\r\n const canvas = document.createElement(\"canvas\");\r\n let width = img.width;\r\n let height = img.height;\r\n\r\n // Maintain aspect ratio\r\n if (width > maxWidth) {\r\n height *= maxWidth / width;\r\n width = maxWidth;\r\n }\r\n if (height > maxHeight) {\r\n width *= maxHeight / height;\r\n height = maxHeight;\r\n }\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (ctx) {\r\n ctx.drawImage(img, 0, 0, width, height);\r\n canvas.toBlob(\r\n (blob) => {\r\n if (blob) {\r\n const compressedFile = new File([blob], file.name, {\r\n type: \"image/jpeg\",\r\n lastModified: Date.now(),\r\n });\r\n resolve(compressedFile);\r\n } else {\r\n resolve(null);\r\n }\r\n },\r\n \"image/jpeg\",\r\n quality\r\n );\r\n } else {\r\n resolve(null);\r\n }\r\n };\r\n };\r\n });\r\n };\r\n\r\n // Function to handle file input change and process image\r\n const handleImageChange = async (\r\n event: React.ChangeEvent<HTMLInputElement>,\r\n source: \"gallery\" | \"camera\"\r\n ) => {\r\n const file = event.target.files?.[0];\r\n if (file) {\r\n const compressedFile = await compressImage(file);\r\n if (compressedFile) {\r\n const objectURL = URL.createObjectURL(compressedFile);\r\n setSelectedImage(objectURL);\r\n setValue(name, compressedFile as unknown as T[typeof name]);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field }) => (\r\n <>\r\n <label\r\n htmlFor=\"file-upload\"\r\n style={{\r\n width: \"100%\",\r\n height: height || \"200px\",\r\n maxHeight: height ? \"55vh\" : \"\",\r\n border: selectedImage ? \"\" : \"2px dashed #ccc\",\r\n borderRadius: \"10px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: \"#aaa\",\r\n marginTop: \"2rem\",\r\n cursor: allowGallery ? \"default\" : \"pointer\",\r\n position: \"relative\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {selectedImage ? (\r\n <Image\r\n src={selectedImage}\r\n alt=\"Preview\"\r\n fill\r\n objectFit={imageFit}\r\n />\r\n ) : (\r\n <Stack\r\n spacing={allowGallery ? 2 : 0}\r\n sx={{ pt: allowGallery ? 2 : 0 }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 1.5,\r\n }}\r\n >\r\n <Box sx={{ paddingBottom: \"0.5rem\" }}>\r\n <GrUpload />\r\n </Box>\r\n {placeholder}\r\n </Box>\r\n {allowGallery && (\r\n <Stack spacing={1.5}>\r\n {!disableCamera && (\r\n <Button\r\n sx={{ width: \"9rem\" }}\r\n variant=\"outlined\"\r\n color=\"info\"\r\n startIcon={<MdOutlineCameraAlt size={16} />}\r\n onClick={() =>\r\n document.getElementById(\"camera-upload\")?.click()\r\n }\r\n >\r\n دوربین\r\n </Button>\r\n )}\r\n <Button\r\n sx={{ width: \"9rem\" }}\r\n variant=\"outlined\"\r\n color=\"info\"\r\n startIcon={<GrGallery size={16} />}\r\n onClick={() =>\r\n document.getElementById(\"gallery-upload\")?.click()\r\n }\r\n >\r\n گالری\r\n </Button>\r\n </Stack>\r\n )}\r\n {!allowGallery && (\r\n <input\r\n id=\"file-upload\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n capture={allowGallery ? undefined : \"environment\"}\r\n onChange={(event) => {\r\n handleImageChange(event, \"camera\");\r\n field.onChange(event.target.files?.[0] || null);\r\n }}\r\n style={{ display: \"none\" }}\r\n />\r\n )}\r\n </Stack>\r\n )}\r\n </label>\r\n\r\n {/* Hidden file inputs for gallery and camera */}\r\n <input\r\n id=\"gallery-upload\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={(event) => {\r\n handleImageChange(event, \"gallery\");\r\n field.onChange(event.target.files?.[0] || null);\r\n }}\r\n style={{ display: \"none\" }}\r\n />\r\n\r\n <input\r\n id=\"camera-upload\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n capture=\"environment\"\r\n onChange={(event) => {\r\n handleImageChange(event, \"camera\");\r\n field.onChange(event.target.files?.[0] || null);\r\n }}\r\n style={{ display: \"none\" }}\r\n />\r\n\r\n {selectedImage && (\r\n <Box\r\n sx={{ display: \"flex\", justifyContent: \"center\", marginTop: 2 }}\r\n >\r\n <Button\r\n onClick={() => {\r\n setSelectedImage(null);\r\n setValue(name, null as unknown as T[typeof name]);\r\n\r\n (\r\n document.getElementById(\r\n \"gallery-upload\"\r\n ) as HTMLInputElement\r\n ).value = \"\";\r\n (\r\n document.getElementById(\"camera-upload\") as HTMLInputElement\r\n ).value = \"\";\r\n }}\r\n variant=\"outlined\"\r\n color=\"error\"\r\n sx={{\r\n padding: \"0.25rem 1rem\",\r\n fontSize: 14,\r\n }}\r\n >\r\n حذف تصویر\r\n </Button>\r\n </Box>\r\n )}\r\n\r\n {errors[name] && (\r\n <Typography color=\"error\" variant=\"body2\" sx={{ mt: 1.5, ml: 1 }}>\r\n {String(errors[name]?.message || \"\")}\r\n </Typography>\r\n )}\r\n </>\r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport default UploadImage;\r\n","\"use client\";\n\nimport {\n Box,\n IconButton,\n Paper,\n Typography,\n CircularProgress,\n useTheme,\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n} from \"@mui/material\";\nimport { MdMyLocation, MdOutlineClear } from \"react-icons/md\";\nimport { useEffect, useRef, useState } from \"react\";\nimport toast, { Toaster } from \"react-hot-toast\";\nimport { Control, FieldPath, useController } from \"react-hook-form\";\n\ninterface SubCustomerFormFields {\n fullName: string;\n phoneNumber: string;\n address: string;\n cityId: number;\n customerType: number;\n remittanceDiscrepancyTolerancePercent: number | null;\n lat: number | null;\n long: number | null;\n}\n\ninterface MapPickerProps {\n control: Control<SubCustomerFormFields>;\n nameLat: FieldPath<SubCustomerFormFields>;\n nameLong: FieldPath<SubCustomerFormFields>;\n nameAddress?: FieldPath<SubCustomerFormFields>;\n isLoading?: boolean;\n defaultLat?: number;\n defaultLng?: number;\n defaultZoom?: number;\n minZoom?: number;\n maxZoom?: number;\n}\n\nexport default function MapLocationPicker({\n control,\n nameLat,\n nameLong,\n nameAddress,\n isLoading = false,\n defaultLat = 36.557153,\n defaultLng = 52.679547,\n defaultZoom = 16,\n minZoom = 10,\n maxZoom = 19,\n}: MapPickerProps) {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n const { field: latField, fieldState: latState } = useController({\n name: nameLat,\n control,\n });\n const { field: longField, fieldState: longState } = useController({\n name: nameLong,\n control,\n });\n const addressController = nameAddress\n ? useController({ name: nameAddress, control })\n : null;\n\n const error = !!latState.error || !!longState.error;\n const helperText = latState.error?.message || longState.error?.message || \"\";\n\n const latitude = latField.value;\n const longitude = longField.value;\n\n const handleLocationChange = (lat: number | null, lng: number | null) => {\n latField.onChange(lat);\n longField.onChange(lng);\n };\n\n const handleAddressChange = nameAddress\n ? (address: string) => addressController?.field.onChange(address)\n : undefined;\n\n const mapRef = useRef<HTMLDivElement>(null);\n const mapInstanceRef = useRef<any>(null);\n const markerRef = useRef<any>(null);\n\n const [isMapLoading, setIsMapLoading] = useState(true);\n const [isGeocoding, setIsGeocoding] = useState(false);\n const [isGeolocating, setIsGeolocating] = useState(false);\n const [showGpsDialog, setShowGpsDialog] = useState(false);\n const [gpsErrorType, setGpsErrorType] = useState<\n \"permission\" | \"gps_off\" | \"other\"\n >(\"other\");\n\n const [zoom, setZoom] = useState<number>(defaultZoom);\n\n // Determine initial position and zoom based on existing lat/long\n const hasExistingLocation = latitude !== null && longitude !== null;\n const initialLat = hasExistingLocation ? latitude : defaultLat;\n const initialLng = hasExistingLocation ? longitude : defaultLng;\n const initialZoom = hasExistingLocation ? 17 : defaultZoom; // Closer zoom if location exists\n\n /* -------------------- Load Leaflet -------------------- */\n useEffect(() => {\n if (!document.getElementById(\"leaflet-css\")) {\n const link = document.createElement(\"link\");\n link.id = \"leaflet-css\";\n link.rel = \"stylesheet\";\n link.href =\n \"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.css\";\n document.head.appendChild(link);\n }\n\n const script = document.createElement(\"script\");\n script.src =\n \"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.js\";\n script.async = true;\n\n script.onload = () => {\n setIsMapLoading(false);\n initializeMap();\n };\n\n document.body.appendChild(script);\n\n return () => {\n if (mapInstanceRef.current) {\n mapInstanceRef.current.remove();\n mapInstanceRef.current = null;\n }\n };\n }, []);\n\n /* -------------------- Reverse Geocode -------------------- */\n const reverseGeocode = async (lat: number, lng: number) => {\n try {\n const response = await fetch(\n `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}&accept-language=fa`\n );\n if (!response.ok) throw new Error(\"Failed to fetch address\");\n const data = await response.json();\n const fullAddress = data.display_name || \"\";\n const parts = fullAddress.split(\",\");\n return parts\n .slice(0, 4)\n .map((p: string) => p.trim())\n .join(\"، \");\n } catch {\n return \"\";\n }\n };\n\n /* -------------------- Initialize Map -------------------- */\n const initializeMap = () => {\n if (!(window as any).L || !mapRef.current || mapInstanceRef.current) return;\n const L = (window as any).L;\n\n const map = L.map(mapRef.current, {\n attributionControl: false,\n minZoom,\n }).setView([initialLat, initialLng], initialZoom);\n\n L.tileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n attribution: \"© OpenStreetMap contributors\",\n maxZoom,\n }).addTo(map);\n\n map.on(\"zoomend\", () => {\n setZoom(map.getZoom());\n });\n\n // If there is an existing location, place marker immediately\n if (hasExistingLocation) {\n markerRef.current = L.marker([initialLat, initialLng], {\n draggable: true,\n }).addTo(map);\n\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat, lng } = e.target.getLatLng();\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n }\n\n // Click to place/move marker\n map.on(\"click\", async (e: any) => {\n const { lat, lng } = e.latlng;\n\n if (!markerRef.current) {\n markerRef.current = L.marker([lat, lng], { draggable: true }).addTo(\n map\n );\n markerRef.current.on(\"dragend\", async (dragEvent: any) => {\n const { lat: dragLat, lng: dragLng } = dragEvent.target.getLatLng();\n handleLocationChange(dragLat, dragLng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(dragLat, dragLng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([lat, lng]);\n }\n\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n\n mapInstanceRef.current = map;\n };\n\n /* -------------------- Update marker and view when lat/long changes -------------------- */\n useEffect(() => {\n if (!mapInstanceRef.current || !mapRef.current) return;\n\n const L = (window as any).L;\n\n if (latitude === null || longitude === null) {\n if (markerRef.current) {\n markerRef.current.remove();\n markerRef.current = null;\n }\n return;\n }\n\n if (!markerRef.current) {\n markerRef.current = L.marker([latitude, longitude], {\n draggable: true,\n }).addTo(mapInstanceRef.current);\n\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat, lng } = e.target.getLatLng();\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([latitude, longitude]);\n }\n\n // Smoothly pan/zoom to new location\n mapInstanceRef.current.setView([latitude, longitude], zoom, {\n animate: true,\n });\n }, [latitude, longitude]);\n\n /* -------------------- Current Location Handling -------------------- */\n const checkGeolocationSupport = () => {\n if (!navigator.geolocation) {\n toast.error(\"مرورگر شما از موقعیت مکانی پشتیبانی نمی‌کند.\");\n return false;\n }\n return true;\n };\n\n const handleCurrentLocation = async () => {\n if (!checkGeolocationSupport() || !mapInstanceRef.current) return;\n\n // Permission check\n if (navigator.permissions) {\n try {\n const permissionStatus = await navigator.permissions.query({\n name: \"geolocation\",\n });\n if (permissionStatus.state === \"denied\") {\n setGpsErrorType(\"permission\");\n setShowGpsDialog(true);\n return;\n }\n } catch {\n // Ignore if Permissions API not supported\n }\n }\n\n setIsGeolocating(true);\n\n const timeoutId = setTimeout(() => {\n if (isGeolocating) {\n setIsGeolocating(false);\n setGpsErrorType(\"gps_off\");\n setShowGpsDialog(true);\n }\n }, 5000);\n\n navigator.geolocation.getCurrentPosition(\n async (pos) => {\n clearTimeout(timeoutId);\n setIsGeolocating(false);\n\n const { latitude: lat, longitude: lng } = pos.coords;\n const map = mapInstanceRef.current;\n const L = (window as any).L;\n\n handleLocationChange(lat, lng);\n\n if (!markerRef.current) {\n markerRef.current = L.marker([lat, lng], { draggable: true }).addTo(\n map\n );\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat: dragLat, lng: dragLng } = e.target.getLatLng();\n handleLocationChange(dragLat, dragLng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(dragLat, dragLng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([lat, lng]);\n }\n\n map.setView([lat, lng], 17, { animate: true });\n\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n\n toast.success(\"موقعیت مکانی با موفقیت دریافت شد\");\n },\n (error) => {\n clearTimeout(timeoutId);\n setIsGeolocating(false);\n\n switch (error.code) {\n case error.PERMISSION_DENIED:\n setGpsErrorType(\"permission\");\n break;\n case error.POSITION_UNAVAILABLE:\n case error.TIMEOUT:\n setGpsErrorType(\"gps_off\");\n break;\n default:\n setGpsErrorType(\"other\");\n break;\n }\n setShowGpsDialog(true);\n },\n {\n enableHighAccuracy: true,\n timeout: 8000,\n maximumAge: 0,\n }\n );\n };\n\n const handleClearLocation = () => {\n if (markerRef.current) {\n markerRef.current.remove();\n markerRef.current = null;\n }\n handleLocationChange(null, null);\n if (handleAddressChange) handleAddressChange(\"\");\n };\n\n const handleGpsDialogClose = () => setShowGpsDialog(false);\n const handleRetryLocation = () => {\n setShowGpsDialog(false);\n setTimeout(handleCurrentLocation, 500);\n };\n const handleOpenSettings = () => {\n setShowGpsDialog(false);\n toast(\n <div dir=\"rtl\" style={{ textAlign: \"right\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n لطفاً مراحل زیر را انجام دهید:\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۱. تنظیمات دستگاه\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۲. موقعیت مکانی\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۳. فعال کردن GPS\n </Typography>\n </div>,\n { duration: 8000 }\n );\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Toaster position=\"top-center\" />\n\n {/* GPS Error Dialog */}\n <Dialog open={showGpsDialog} onClose={handleGpsDialogClose}>\n <DialogTitle>مشکل در دریافت موقعیت مکانی</DialogTitle>\n <DialogContent>\n {/* ... same dialog content as before ... */}\n {gpsErrorType === \"permission\" ? (\n <Typography>\n دسترسی به موقعیت مکانی رد شده است.\n <br />\n ۱. روی آیکون قفل در نوار آدرس کلیک کنید\n <br />\n ۲. موقعیت مکانی → اجازه دهید\n </Typography>\n ) : gpsErrorType === \"gps_off\" ? (\n <Typography>GPS خاموش است. لطفاً فعال کنید.</Typography>\n ) : (\n <Typography>خطایی رخ داده است. دوباره تلاش کنید.</Typography>\n )}\n </DialogContent>\n <DialogActions sx={{ pb: 2, pr: 2 }}>\n <Button onClick={handleGpsDialogClose}>انصراف</Button>\n {gpsErrorType === \"permission\" ? (\n <Button\n onClick={handleRetryLocation}\n variant=\"contained\"\n color=\"primary\"\n >\n تلاش مجدد\n </Button>\n ) : (\n <Button\n onClick={handleOpenSettings}\n variant=\"contained\"\n color=\"primary\"\n >\n راهنما\n </Button>\n )}\n </DialogActions>\n </Dialog>\n\n <Box sx={{ position: \"relative\", height: \"370px\", width: \"100%\" }}>\n <Paper\n sx={{\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: 2,\n border: error ? 2 : 0,\n borderColor: error ? \"error.main\" : \"transparent\",\n }}\n >\n {(isMapLoading || isGeocoding || isGeolocating || isLoading) && (\n <Box\n sx={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: isDarkMode\n ? \"rgba(18,18,18,0.9)\"\n : \"rgba(255,255,255,0.8)\",\n zIndex: 1000,\n flexDirection: \"column\",\n gap: 1,\n }}\n >\n <CircularProgress />\n <Typography>\n {isMapLoading\n ? \"در حال بارگذاری نقشه...\"\n : isLoading\n ? \"در حال بارگذاری اطلاعات موقعیت...\"\n : isGeocoding\n ? \"در حال دریافت آدرس...\"\n : \"در حال دریافت موقعیت فعلی...\"}\n </Typography>\n </Box>\n )}\n\n <div ref={mapRef} style={{ height: \"100%\", width: \"100%\" }} />\n\n <Box\n sx={{\n position: \"absolute\",\n bottom: 16,\n right: 16,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 1,\n zIndex: 1000,\n }}\n >\n <IconButton\n onClick={handleCurrentLocation}\n disabled={isGeolocating}\n sx={{\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"white\",\n color: isDarkMode ? \"white\" : \"#1e1e1e\",\n boxShadow: 2,\n \"&:hover\": {\n backgroundColor: isDarkMode ? \"#2a2a2a\" : \"#f5f5f5\",\n },\n }}\n title=\"موقعیت فعلی\"\n >\n <MdMyLocation />\n </IconButton>\n\n {hasExistingLocation && (\n <IconButton\n onClick={handleClearLocation}\n sx={{\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"white\",\n color: theme.palette.error.main,\n boxShadow: 2,\n \"&:hover\": {\n backgroundColor: isDarkMode ? \"#2a2a2a\" : \"#f5f5f5\",\n },\n }}\n title=\"پاک کردن موقعیت\"\n >\n <MdOutlineClear />\n </IconButton>\n )}\n </Box>\n </Paper>\n </Box>\n\n <Box\n sx={{\n mt: 1,\n p: 1.5,\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"#f5f5f5\",\n borderRadius: 1,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <Typography variant=\"body2\" sx={{ fontFamily: \"monospace\" }}>\n <strong>عرض جغرافیایی:</strong>{\" \"}\n {typeof latitude === \"number\" ? latitude.toFixed(6) : \"—\"}\n </Typography>\n <Typography variant=\"body2\" sx={{ fontFamily: \"monospace\" }}>\n <strong>طول جغرافیایی:</strong>{\" \"}\n {typeof longitude === \"number\" ? longitude.toFixed(6) : \"—\"}\n </Typography>\n </Box>\n\n {/* Error message display */}\n {error && helperText && (\n <Typography\n variant=\"caption\"\n sx={{\n color: \"error.main\",\n mt: 0.5,\n display: \"block\",\n px: 1.5,\n }}\n >\n {helperText}\n </Typography>\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":["ConfirmationDialog","MuiAccordion","theme","MuiAccordionSummary","MuiAccordionDetails","import_material","React","import_react","import_material","import_react","theme","Image","Dialog","DialogTitle","DialogContent","Button","import_material","React","Autocomplete","value","TextField","import_material","import_react","toast","React","import_material","import_react","import_io","theme","React","import_react","import_material","React","import_react_hook_form","import_material","import_react","React","React","import_Dialog","import_DialogContent","import_DialogTitle","import_material","Dialog","DialogTitle","theme","DialogContent","DialogActions","import_material","import_react","import_react_hook_form","import_md","import_material","import_react","Draggable","moment","theme","import_material","import_md","theme","import_material","import_Dialog","import_DialogActions","import_DialogContent","import_DialogTitle","import_react","import_md","import_react_hook_form","import_common","theme","Dialog","DialogTitle","DialogContent","DialogActions","import_material","import_fa","import_react","import_md","table","ClearIcon","import_react","import_react_hook_form","import_material","import_moment_jalaali","import_react","import_react_hook_form","import_md","moment","React","nowUTC","dateTimeWithIranTime","dayjs","CircularProgress","moment","Grid","import_yup","import_Button","import_Grid2","import_system","import_moment","import_react","import_react_hook_form","import_fa","yup","moment","defaultValues","currentDate","Grid","Button","import_material","import_CircularProgress","import_x_date_pickers","import_AdapterMomentJalaali","import_dayjs","import_moment_jalaali","import_react","import_react_hook_form","moment","React","CircularProgress","dayjs","nowUTC","dateTimeWithIranTime","import_material","import_system","import_x_date_pickers","import_AdapterMomentJalaali","import_moment_jalaali","import_react","import_react_hook_form","moment","JalaliDatePicker","useMediaQuery","React","import_material","import_x_date_pickers","import_AdapterMomentJalaali","import_moment_jalaali","import_react","import_react_hook_form","moment","React","import_material","import_image","import_react","import_react_hook_form","import_md","import_material","import_image","import_react","import_md","Image","height","React","theme","Image","import_material","import_md","import_image","import_react","Image","src","import_utils","import_material","import_Button","import_Dialog","import_DialogContent","import_DialogTitle","import_image","import_react","import_io5","theme","Image","Dialog","DialogTitle","DialogContent","Button","import_material","import_useMediaQuery","import_system","import_x_date_pickers","import_AdapterMomentJalaali","import_dayjs","import_moment_jalaali","import_react","import_react_hook_form","moment","JalaliDatePicker","useMediaQuery","React","dayjs","React","import_Dialog","import_DialogActions","import_DialogContent","import_DialogTitle","import_material","import_common","import_md","ConfirmationDialog","Dialog","DialogTitle","theme","DialogContent","DialogActions","import_material","import_react","theme","React","import_utils","import_material","import_system","React","import_fa","Stack","React","import_react_hook_form","import_material","import_theme","import_system","FormControl","FormLabel","theme","RadioGroup","FormControlLabel","Radio","import_md","import_material","import_react","React","import_material","import_system","import_react","React","React","Box","Stepper","Step","StepButton","import_material","import_system","import_react","import_pi","theme","React","import_material","import_styles","import_react","React","sortModel","Skeleton","import_CircularProgress","import_TextField","import_react","import_react_hook_form","React","TextField","InputAdornment","CircularProgress","PatternFormatCustom","import_TextField","import_react","import_react_hook_form","import_react_number_format","import_CircularProgress","import_InputAdornment","React","TextField","InputAdornment","CircularProgress","NumericFormatCustom","import_CircularProgress","import_InputAdornment","import_TextField","import_react","import_react_hook_form","React","TextField","InputAdornment","CircularProgress","import_react","import_react_hook_form","import_material","import_gr","import_md","import_image","UploadImage","height","React","Image","import_material","import_md","import_react","import_react_hot_toast","import_react_hook_form","theme","toast","error"]}
1
+ {"version":3,"sources":["../src/index.ts","../react-shim.js","../src/accordion/index.tsx","../src/auto-complete/selector/index.tsx","../src/constants/httpMethod.ts","../src/auto-complete/selector/custome-style.tsx","../src/license-plate/index.tsx","../src/constants/letters.ts","../src/bascule-connection-button/index.tsx","../src/button/search/index.tsx","../src/card-skeleton/index.tsx","../src/checkbox/index.tsx","../src/confirmation-modal/index.tsx","../src/custom-date-time-picker/index.tsx","../src/draggable-paper/index.tsx","../src/custom-dialog/index.tsx","../src/custom-time-picker/index.tsx","../src/data-table/index.tsx","../src/date-filter/index.tsx","../src/date-picker/index.tsx","../src/date-filter-range/index.tsx","../src/date-month/index.tsx","../src/date-time-picker/index.tsx","../src/date-time-range-picker/index.tsx","../src/enhanced-upload-image/index.tsx","../src/enhanced-upload-image/ImageViewer.tsx","../src/img-viewer/index.tsx","../src/license-plate-search/index.tsx","../src/mobile-date-time-picker/index.tsx","../src/modal/index.tsx","../src/no-result/index.tsx","../src/pagination-list/index.tsx","../src/radio-button/index.tsx","../src/selector/index.tsx","../src/spinner/sonar/index.tsx","../src/stepper/index.tsx","../src/switch-button/index.tsx","../src/table/index.tsx","../src/text-field/number-pattern-input/index.tsx","../src/text-field/number-type/index.tsx","../src/text-field/text-type/index.tsx","../src/upload-image/index.tsx","../src/map-location-picker/index.tsx"],"sourcesContent":["// Export components as named exports\nexport { type MRT_ColumnDef } from \"material-react-table\";\nexport { default as Accordion } from \"./accordion\";\nexport { default as Selector } from \"./auto-complete/selector\";\nexport { default as ConnectToBasculeButton } from \"./bascule-connection-button\";\nexport { default as AdvancedSearchButton } from \"./button/search\";\nexport { default as SkeletonCard } from \"./card-skeleton\";\nexport { default as CustomCheckbox } from \"./checkbox\";\nexport { default as ConfirmationDialog } from \"./confirmation-modal\";\nexport { default as CustomDateTimePicker } from \"./custom-date-time-picker\";\nexport {\n default as CustomDialog,\n type CustomDialogProps,\n type PaletteColor,\n} from \"./custom-dialog\";\nexport { default as CustomTimePicker } from \"./custom-time-picker\";\nexport { default as DataTable } from \"./data-table\";\nexport { default as DateFilter } from \"./date-filter\";\nexport { default as DateFilterRange } from \"./date-filter-range\";\nexport { default as DateMonthPicker } from \"./date-month\";\nexport { default as DatePicker } from \"./date-picker\";\nexport { default as DateTimePicker } from \"./date-time-picker\";\nexport { default as DateTimeRangePicker } from \"./date-time-range-picker\";\nexport { default as DraggablePaper } from \"./draggable-paper\";\nexport { default as EnhancedUploadImage } from \"./enhanced-upload-image\";\nexport { default as ImgViewer } from \"./img-viewer\";\nexport { default as LicensePlate } from \"./license-plate\";\nexport { default as SearchLicensePlate } from \"./license-plate-search\";\nexport { default as MobileDateTimePicker } from \"./mobile-date-time-picker\";\nexport { default as Modal } from \"./modal\";\nexport { default as NoResult } from \"./no-result\";\nexport { default as PaginationList } from \"./pagination-list\";\nexport { default as RadioButton } from \"./radio-button\";\nexport { default as NestedSelectort } from \"./selector\";\nexport { default as SonarSpinner } from \"./spinner/sonar\";\nexport { default as HorizontalStepper } from \"./stepper\";\nexport { default as SwitchButton } from \"./switch-button\";\nexport { default as Table } from \"./table\";\nexport { default as PatternTextField } from \"./text-field/number-pattern-input\";\nexport { default as FormInputNumber } from \"./text-field/number-type\";\nexport { default as FormInputText } from \"./text-field/text-type\";\nexport { default as UploadImage } from \"./upload-image\";\nexport { default as MapLocationPicker } from \"./map-location-picker\";\n","import * as React from \"react\";\nexport { React };\n","import { styled } from \"@mui/material/styles\";\nimport { IoIosArrowForward } from \"react-icons/io\";\nimport MuiAccordion from \"@mui/material/Accordion\";\nimport MuiAccordionSummary, {\n accordionSummaryClasses,\n} from \"@mui/material/AccordionSummary\";\nimport MuiAccordionDetails from \"@mui/material/AccordionDetails\";\nimport {\n AccordionProps,\n AccordionSummaryProps,\n Typography,\n} from \"@mui/material\";\nimport { ReactNode, useState } from \"react\";\n\nexport default function Page({\n data,\n}: {\n data: [{ title: string; body: ReactNode }];\n}) {\n const Accordion = styled((props: AccordionProps) => (\n <MuiAccordion disableGutters elevation={0} square {...props} />\n ))(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&::before\": {\n display: \"none\",\n },\n }));\n\n const AccordionSummary = styled((props: AccordionSummaryProps) => (\n <MuiAccordionSummary expandIcon={<IoIosArrowForward />} {...props} />\n ))(({ theme }) => ({\n backgroundColor: \"rgba(0, 0, 0, .03)\",\n flexDirection: \"row-reverse\",\n [`& .${accordionSummaryClasses.expandIconWrapper}.${accordionSummaryClasses.expanded}`]:\n {\n transform: \"rotate(90deg)\",\n },\n [`& .${accordionSummaryClasses.content}`]: {\n marginLeft: theme.spacing(1),\n },\n ...theme.applyStyles(\"dark\", {\n backgroundColor: \"rgba(255, 255, 255, .05)\",\n }),\n }));\n\n const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: \"1px solid rgba(0, 0, 0, .125)\",\n }));\n\n const [expanded, setExpanded] = useState<string | false>(\"\");\n\n const handleChange =\n (panel: string) => (event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n return (\n <>\n {data.map((item, index) => {\n const panelId = `panel${index}`;\n return (\n <Accordion\n key={panelId}\n expanded={expanded === panelId}\n onChange={handleChange(panelId)}\n >\n <AccordionSummary\n aria-controls={`${panelId}-content`}\n id={`${panelId}-header`}\n sx={{\n \"& .MuiAccordionSummary-expandIconWrapper\": {\n color: \"inherit\",\n },\n }}\n >\n <Typography component=\"span\">{item.title}</Typography>\n </AccordionSummary>\n <AccordionDetails>{item.body}</AccordionDetails>\n </Accordion>\n );\n })}\n </>\n );\n}\n","import { CircularProgress, Popper } from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport TextField from \"@mui/material/TextField\";\nimport * as React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { numberToHttpMethodMapping } from \"../../constants/httpMethod\";\nimport CustomeStyle from \"./custome-style\";\n\ninterface MultipleSelectChipProps {\n name: string;\n control: Control<any>;\n label?: string;\n data?: any;\n multipleitems?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n size?: \"small\" | \"medium\";\n clear?: boolean;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n placeholder?: string;\n}\n\nexport default function MultipleSelectChip({\n name,\n control,\n label,\n data,\n multipleitems,\n isLoading,\n disabled = false,\n size = \"medium\",\n clear = false,\n variant = \"outlined\",\n placeholder,\n}: MultipleSelectChipProps) {\n const dataOptions =\n data?.map((value: any) => ({\n title:\n value.userName || value.name || `${value.firstName} ${value.lastName}`,\n key: value.id || `key_${Math.random()}`,\n httpMethod: numberToHttpMethodMapping[value.httpMethod],\n url: value.url,\n licensePlate: value.licensePlate,\n })) || [];\n\n const combinedOptions = [\n multipleitems &&\n dataOptions.length > 0 && { title: \"انتخاب همه\", key: \"All\" },\n ...dataOptions,\n ].filter(Boolean);\n\n const [selectedValues, setSelectedValues] = React.useState<\n { title: string; key: string }[]\n >([]);\n\n const handleChange = (\n event: any,\n value: any,\n onChange: (value: any) => void\n ) => {\n if (multipleitems) {\n if (value.some((item: any) => item.title === \"انتخاب همه\")) {\n const allItems = [...dataOptions];\n setSelectedValues(allItems);\n onChange(allItems.map((item) => item.key));\n } else {\n setSelectedValues(value);\n onChange(value.map((item: any) => item.key));\n }\n } else {\n setSelectedValues([value]);\n onChange(value?.key || null);\n }\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <Autocomplete\n disableClearable={clear}\n disabled={disabled || isLoading}\n size={size}\n disableCloseOnSelect={multipleitems}\n options={combinedOptions}\n multiple={multipleitems}\n sx={{ width: \"100%\" }}\n noOptionsText=\"داده‌ای برای نمایش وجود ندارد\"\n value={\n multipleitems\n ? selectedValues\n : combinedOptions.find(\n (option) => String(option.key) === String(value)\n ) || { title: \"\", key: \"\" }\n }\n onChange={(event, value) => handleChange(event, value, onChange)}\n isOptionEqualToValue={(option, value) =>\n String(option.key) === String(value?.key)\n }\n getOptionLabel={(option) => option.title}\n loading={isLoading}\n loadingText=\"\"\n renderOption={(props, option) => (\n <CustomeStyle\n props={props}\n option={option}\n multipleitems={!!multipleitems}\n />\n )}\n slots={{ popper: Popper }}\n slotProps={{\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n rootBoundary: \"viewport\",\n altBoundary: true,\n padding: 10,\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top\", \"bottom\"],\n },\n },\n ],\n },\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n error={!!error}\n helperText={error?.message}\n inputRef={ref}\n variant={variant}\n placeholder={placeholder}\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {isLoading ? (\n <CircularProgress color=\"primary\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n }}\n />\n )}\n />\n )}\n />\n );\n}\n","export const numberToHttpMethodMapping: { [key: number]: string } = {\n 0: \"POST\",\n 1: \"GET\",\n 2: \"PUT\",\n 3: \"DELETE\",\n};\n\nexport const httpMethodToNumberMapping: { [key: string]: number } = {\n POST: 0,\n GET: 1,\n PUT: 2,\n DELETE: 3,\n};\n","import React from \"react\";\nimport LicensePlate from \"../../license-plate\";\nimport { Box } from \"@mui/material\";\nimport { FaCar } from \"react-icons/fa\";\nexport default function CustomeStyle({\n props,\n option,\n multipleitems,\n}: {\n props: any;\n option: {\n title: string;\n key: string | number;\n httpMethod?: string;\n url?: string;\n licensePlate?: string;\n };\n multipleitems: boolean;\n}) {\n let methodColor = \"black\"; // Default color\n let boldOption = multipleitems ? \"bold\" : \"normal\"; //درحالت انتخاب چند گزینه ، متن حالت bold دارد\n if (option.httpMethod === \"GET\") {\n methodColor = \"#4990e2\";\n } else if (option.httpMethod === \"POST\") {\n methodColor = \"green\";\n } else if (option.httpMethod === \"DELETE\") {\n methodColor = \"red\";\n } else if (option.httpMethod === \"PUT\") {\n methodColor = \"orange\";\n }\n if (option.httpMethod || option.url) {\n //نمایش بصورت تیتر اصل و لینک زیر تیتر و متد روبه روی آن\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <div style={{ fontWeight: boldOption }}>{option.title}</div>\n <span style={{ fontSize: \"small\", color: \"gray\" }}>\n {option.url}\n </span>\n </div>\n <div style={{ fontWeight: \"normal\", color: methodColor }}>\n {option.httpMethod}\n </div>\n </div>\n </li>\n );\n } else if (option.licensePlate) {\n // اگر LicensePlate وجود داشته باشد:\n // خروجی به صورت پلاک نمایش داده می‌شود.\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n flexWrap: \"wrap\",\n }}\n >\n <FaCar />\n <Box sx={{ marginLeft: \"7px\" }}>{option.title}</Box>\n <div\n style={{\n marginTop: 1,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <LicensePlate data={option.licensePlate} />\n </div>\n </div>\n </li>\n );\n } else {\n //وقتی که فقط دارای تایتل است\n return (\n <li {...props} key={option.key}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n width: \"100%\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n width: \"100%\",\n }}\n >\n <div style={{ fontWeight: boldOption }}>{option.title}</div>\n </div>\n </div>\n </li>\n );\n }\n}\n","import { Box, IconButton, Typography, useTheme } from \"@mui/material\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Image from \"next/image\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport letters from \"../constants/letters\";\nimport { convertToEnglishDigits, convertToPersianDigits } from \"@mamrp/utils\";\n\ninterface LicensePlateProps {\n width?: CSSProperties[\"width\"];\n name?: string;\n setValue?: any;\n data?: string;\n readOnly?: boolean;\n size?: \"small\" | \"medium\";\n}\n\nexport default function LicensePlate({\n width = \"100%\",\n name,\n setValue,\n data,\n readOnly = true,\n size,\n}: LicensePlateProps) {\n const theme = useTheme();\n const [open, setOpen] = useState(false);\n const [inputValues, setInputValues] = useState({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n\n const inputRefs = {\n input1: useRef<HTMLInputElement>(null),\n input2: useRef<HTMLInputElement>(null),\n input3: useRef<HTMLInputElement>(null),\n input4: useRef<HTMLInputElement>(null),\n };\n\n useEffect(() => {\n if (data) {\n let newdata = data.split(\" \").filter((word) => word !== \"ایران\");\n setInputValues({\n input1: newdata[0] || \"\",\n input2: newdata[1] || \"\",\n input3: newdata[2] || \"\",\n input4: newdata[3] || \"\",\n });\n } else {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n }\n }, [data]);\n\n const handleInputChange = (\n enteredInput: string,\n inputName: string,\n maxlength: number,\n minLength?: number\n ) => {\n if (inputName !== \"input2\") {\n const englishInput = convertToEnglishDigits(enteredInput);\n if (!/^\\d*$/.test(englishInput)) return;\n }\n\n const newInputValues = {\n ...inputValues,\n [inputName]: enteredInput,\n };\n setInputValues(newInputValues);\n\n const formattedPlate =\n convertToEnglishDigits(newInputValues.input1) +\n \" \" +\n newInputValues.input2 +\n \" \" +\n convertToEnglishDigits(newInputValues.input3) +\n \" ایران \" +\n convertToEnglishDigits(newInputValues.input4);\n\n setValue(name, formattedPlate);\n\n if (enteredInput.length === maxlength || minLength === 1) {\n if (inputName === \"input1\") setOpen(true);\n else if (inputName === \"input2\") {\n setOpen(false);\n } else inputRefs[\"input4\"]?.current?.focus();\n }\n };\n\n const inputStyle = {\n color: theme.palette.text.primary,\n width: \"30px\",\n textAlign: \"center\" as const,\n backgroundColor: \"transparent\",\n outline: \"none\",\n border: \"none\",\n cursor: readOnly || (!!data && readOnly) ? \"default\" : \"text\",\n fontSize: size === \"small\" ? \"1rem\" : \"1.05rem\",\n fontWeight: 600,\n };\n\n return (\n <>\n <Box\n sx={{\n width: width,\n border: \"1px solid #e5e7eb\",\n borderRadius: \"7px\",\n display: \"flex\",\n alignItems: \"center\",\n height: size === \"small\" ? \"3rem\" : \"3.5rem\",\n }}\n dir=\"ltr\"\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n backgroundColor: \"#172554\",\n width: size === \"small\" ? \"30px\" : \"36px\",\n height: size === \"small\" ? \"44px\" : \"52px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"7px\",\n mr: 0.4,\n }}\n >\n <Image\n src=\"/assets/images/iran-flag-dark.svg\"\n alt=\"Iran Flag\"\n width={size === \"small\" ? 15 : 18}\n height={size === \"small\" ? 11 : 14}\n />\n </Box>\n </Box>\n\n <Box\n sx={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-around\",\n fontSize: \"1.125rem\",\n lineHeight: \"1.75rem\",\n fontWeight: 600,\n color: \"#1f2937\",\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input1}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={inputStyle}\n value={convertToPersianDigits(inputValues.input1)}\n onChange={(e) => handleInputChange(e.target.value, \"input1\", 2)}\n />\n\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n {!data && (\n <Image\n src=\"/assets/images/solid-arrow-down.svg\"\n width={20}\n height={20}\n alt=\"arrow\"\n style={{ cursor: \"pointer\", marginRight: 4 }}\n />\n )}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input2}\n onClick={() => {\n if (!(readOnly || (!!data && readOnly))) setOpen(true);\n }}\n type=\"text\"\n minLength={1}\n maxLength={3}\n placeholder=\"-\"\n style={{ ...inputStyle, width: \"30px\", cursor: \"pointer\" }}\n value={inputValues.input2}\n readOnly\n />\n </Box>\n\n <Dialog dir=\"rtl\" open={open} onClose={() => setOpen(false)}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n <DialogTitle>انتخاب حرف پلاک</DialogTitle>\n <Box\n sx={{\n cursor: \"pointer\",\n paddingRight: \"1rem\",\n color: \"#737373\",\n }}\n onClick={() => setOpen(false)}\n >\n <IconButton>\n <IoClose />\n </IconButton>\n </Box>\n </Box>\n <DialogContent>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n my: 2,\n }}\n >\n {letters.map((letter, index) => (\n <Button\n key={index}\n variant=\"outlined\"\n color=\"primary\"\n sx={{\n border: \"none\",\n backgroundColor: \"#f0f0f0\",\n width: \"70px\",\n height: \"50px\",\n fontWeight: \"bold\",\n \":hover\": { backgroundColor: \"#e3e3e3\" },\n }}\n onClick={() => handleInputChange(letter, \"input2\", 3, 1)}\n >\n <Typography color=\"#117A4F\" fontWeight=\"bold\">\n {letter}\n </Typography>\n </Button>\n ))}\n </Box>\n\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mt: 2.5 }}>\n <Button\n sx={{ width: \"6rem\" }}\n variant=\"outlined\"\n color=\"error\"\n onClick={() => {\n handleInputChange(\"\", \"input2\", 3, 1);\n setOpen(false);\n }}\n >\n حذف حرف\n </Button>\n </Box>\n </DialogContent>\n </Dialog>\n\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input3}\n type=\"text\"\n maxLength={3}\n placeholder=\"- - -\"\n style={{ ...inputStyle, width: \"45px\" }}\n value={convertToPersianDigits(inputValues.input3)}\n onChange={(e) => handleInputChange(e.target.value, \"input3\", 3)}\n />\n\n <Box\n sx={{ height: \"40px\", width: \"1px\", backgroundColor: \"#e5e7eb\" }}\n />\n\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column-reverse\",\n gap: 0.5,\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input4}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={{\n ...inputStyle,\n width: size === \"small\" ? \"32px\" : \"40px\",\n }}\n value={convertToPersianDigits(inputValues.input4)}\n onChange={(e) => handleInputChange(e.target.value, \"input4\", 2)}\n />\n <Image\n src=\"/assets/images/iran.svg\"\n alt=\"Iran\"\n width={size === \"small\" ? 25 : 28}\n height={size === \"small\" ? 21 : 24}\n style={{ margin: 0, display: \"block\" }}\n />\n </Box>\n </Box>\n </Box>\n </>\n );\n}\n","const letters = [\n \"الف\",\n \"ب\",\n \"پ\",\n \"ت\",\n \"ث\",\n \"ج\",\n \"چ\",\n \"ح\",\n \"خ\",\n \"د\",\n \"ذ\",\n \"ر\",\n \"ز\",\n \"ژ\",\n \"س\",\n \"ش\",\n \"ص\",\n \"ض\",\n \"ط\",\n \"ظ\",\n \"ع\",\n \"غ\",\n \"ف\",\n \"ق\",\n \"ک\",\n \"گ\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n];\n\nexport default letters;\n","import { Box, Button } from \"@mui/material\";\nimport React, { useRef, useState } from \"react\";\nimport toast from \"react-hot-toast\";\nimport { PiPlugs, PiPlugsConnected } from \"react-icons/pi\";\n\n// ✅ Web Serial API types\ninterface SerialPort {\n open(options: {\n baudRate: number;\n dataBits?: number;\n stopBits?: number;\n parity?: \"none\" | \"even\" | \"odd\";\n flowControl?: \"none\" | \"hardware\";\n }): Promise<void>;\n close(): Promise<void>;\n readable: ReadableStream<Uint8Array> | null;\n writable: WritableStream<Uint8Array> | null;\n}\n\ninterface Serial {\n requestPort(): Promise<SerialPort>;\n getPorts(): Promise<SerialPort[]>;\n}\n\n// Component props\ntype ConnectToBasculeButtonProps = {\n baudRate: number;\n dataBits?: number;\n stopBits?: number;\n parity?: \"none\" | \"even\" | \"odd\";\n flowControl?: \"none\" | \"hardware\";\n};\n\nconst ConnectToBasculeButton: React.FC<ConnectToBasculeButtonProps> = ({\n baudRate,\n dataBits = 8,\n stopBits = 1,\n parity = \"none\",\n flowControl = \"none\",\n}) => {\n const [connected, setConnected] = useState(false);\n const portRef = useRef<SerialPort | null>(null);\n\n //connects to bascule\n const connectToBascule = async () => {\n if (!(\"serial\" in navigator)) {\n toast.error(\"Web Serial API توسط این مرورگر پشتیبانی نمی‌شود.\");\n return;\n }\n\n try {\n const serial = (navigator as any).serial as Serial;\n const port = await serial.requestPort();\n await port.open({ baudRate, dataBits, stopBits, parity, flowControl });\n portRef.current = port;\n setConnected(true);\n toast.success(\"اتصال به باسکول با موفقیت انجام شد.\");\n } catch (error) {\n console.error(error);\n toast.error(\"خطا در اتصال به باسکول. لطفاً دوباره تلاش کنید.\");\n }\n };\n\n return (\n <>\n <style>{`\n @keyframes jumpAnimation {\n 0% { transform: translateY(1px); }\n 12.5% { transform: translateY(-2px); }\n 25% { transform: translateY(1px); }\n 37.5% { transform: translateY(-2px); }\n 50% { transform: translateY(0); }\n 100% { transform: translateY(0); }\n }\n `}</style>\n\n <Button\n variant=\"contained\"\n onClick={connectToBascule}\n disabled={connected}\n sx={{ minWidth: \"11rem\" }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n fontSize: 16,\n }}\n >\n {connected ? (\n <>\n متصل به باسکول\n <PiPlugsConnected size={20} />\n </>\n ) : (\n <>\n اتصال به باسکول\n <PiPlugs\n size={20}\n style={{\n animation: \"jumpAnimation 2s ease-in-out infinite\",\n }}\n />\n </>\n )}\n </Box>\n </Button>\n </>\n );\n};\n\nexport default ConnectToBasculeButton;\n","import { Box, Button, Stack, styled, useTheme } from \"@mui/material\";\nimport React from \"react\";\nimport { IoIosArrowUp } from \"react-icons/io\";\n\ninterface AdvancedSearchButtonProps {\n isShowFilter: boolean;\n setIsShowFilter: React.Dispatch<React.SetStateAction<boolean>>;\n color?: \"black\" | \"white\";\n title?: string;\n onToggle?: (value: boolean) => void;\n icon?: React.ReactNode;\n borderRadius?: string;\n paddingY?: number;\n fontSize?: string;\n backgroundColor?: string;\n border?: boolean;\n}\n\nconst AnimatedIcon = styled(IoIosArrowUp, {\n shouldForwardProp: (prop) => prop !== \"isShowFilter\",\n})<{ isShowFilter: boolean }>(({ isShowFilter }) => ({\n transition: \"all 0.5s ease\",\n transform: `rotate(${isShowFilter ? 0 : \"0.5turn\"})`,\n}));\n\nexport default function AdvancedSearchButton({\n isShowFilter,\n setIsShowFilter,\n color = \"black\",\n title = \"فرم جستجو\",\n onToggle,\n icon,\n borderRadius,\n paddingY,\n fontSize,\n backgroundColor,\n border = false,\n}: AdvancedSearchButtonProps) {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n return (\n <Button\n onClick={() => {\n setIsShowFilter((prev) => !prev);\n onToggle?.(false);\n }}\n startIcon={<AnimatedIcon isShowFilter={isShowFilter} />}\n sx={{\n color: theme.palette.text.primary ?? color,\n borderRadius: borderRadius ?? 2,\n paddingY: paddingY,\n fontSize: fontSize,\n backgroundColor: backgroundColor,\n ...(border && {\n border: isDarkMode\n ? `1px solid rgba(255, 255, 255, 0.23)`\n : `1px solid rgba(0, 0, 0, 0.23)`,\n }),\n \"&:hover\": {\n backgroundColor: backgroundColor\n ? backgroundColor\n : isDarkMode\n ? \"rgba(255, 255, 255, 0.05)\"\n : \"rgba(0, 0, 0, 0.04)\",\n },\n }}\n fullWidth\n >\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Box>{icon ? icon : null}</Box>\n <Box>{title}</Box>\n </Stack>\n </Button>\n );\n}\n","import React from \"react\";\nimport { Box, Card, CardContent, Skeleton, Stack } from \"@mui/material\";\n\nfunction SkeletonCard() {\n return (\n <Card\n sx={{\n minWidth: 300,\n borderRadius: \"12px\",\n }}\n >\n <CardContent sx={{ padding: \"1rem 1rem !important\" }}>\n <Stack spacing={2}>\n {/* Car Name and Driver Name */}\n <Stack direction={\"row\"} justifyContent={\"space-between\"}>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n </Stack>\n\n {/* Date, Distance, and Status */}\n <Stack direction={\"row\"} justifyContent={\"space-between\"}>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={100} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n </Stack>\n\n {/* Fuel and Price */}\n <Stack\n direction={\"row\"}\n spacing={2}\n alignItems={\"center\"}\n justifyContent={\"space-between\"}\n >\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n <Stack direction={\"row\"} spacing={1} alignItems={\"center\"}>\n <Skeleton variant=\"circular\" width={24} height={24} />\n <Skeleton variant=\"text\" width={80} height={20} />\n </Stack>\n </Stack>\n\n {/* License Plate */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n paddingY: \"0.5rem\",\n }}\n >\n <Skeleton variant=\"rectangular\" width={240} height={40} />\n </Box>\n\n {/* Button */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n paddingTop: \"1.5rem\",\n }}\n >\n <Skeleton variant=\"rectangular\" width={200} height={40} />\n </Box>\n </Stack>\n </CardContent>\n </Card>\n );\n}\n\nexport default SkeletonCard;\n","import { Control, Controller } from \"react-hook-form\";\nimport { FormControlLabel, Checkbox } from \"@mui/material\";\nimport React from \"react\";\n\n// داخل کامپوننت شما\nexport default function CustomCheckbox({ name,control,label, }:{name:string,control:Control<any>,label:string}) {\n return (\n <>\n <Controller\n name={name}\n control={control}\n defaultValue={false} // مقدار پیش‌فرض\n render={({ field }) => (\n <FormControlLabel\n control={\n <Checkbox\n {...field}\n checked={field.value} // اتصال مقدار چک‌باکس به فرم\n />\n }\n label={label}\n />\n )}\n />\n </>\n );\n}\n\n\n","import * as React from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport {\n Box,\n Button,\n CircularProgress,\n Divider,\n IconButton,\n useMediaQuery,\n} from \"@mui/material\";\nimport { GoTrash } from \"react-icons/go\";\nimport { MdClose, MdOutlineCancel } from \"react-icons/md\";\nimport { ReactNode } from \"react\";\n\ninterface ConfirmationDialogProps {\n open: boolean;\n handleClose: () => void;\n callback: (params: any) => void;\n callbackParams: any;\n headerText: string;\n bodyText: ReactNode;\n isLoading?: boolean;\n maxWidth: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n iconColor: string;\n color: \"error\" | \"info\" | \"primary\" | \"success\" | \"warning\" | \"secondary\";\n actionTitle: string;\n icon?: React.ReactElement<{ color?: string; size?: number }>;\n}\n\nexport default function ConfirmationDialog({\n open,\n handleClose,\n callback,\n callbackParams,\n headerText,\n bodyText,\n isLoading,\n maxWidth,\n iconColor,\n color,\n actionTitle,\n icon = <GoTrash />,\n}: ConfirmationDialogProps) {\n const isMobile = useMediaQuery(\"(max-width:785px)\");\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n fullWidth\n maxWidth={maxWidth}\n disableScrollLock\n >\n <Box>\n <DialogTitle\n fontWeight={700}\n fontSize={\"1.2rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={1}\n >\n {React.cloneElement(icon, {\n ...(icon.props as any),\n color: iconColor,\n size: isMobile ? 18 : 20,\n })}\n {headerText}\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <MdClose />\n </IconButton>\n <Divider />\n <DialogContent\n sx={{\n px: isMobile ? 2 : 3,\n py: isMobile ? 1.5 : 2,\n \"& .MuiTypography-root\": {\n fontSize: isMobile ? \"0.875rem\" : \"1rem\",\n lineHeight: isMobile ? 1.5 : 1.6,\n gap: isMobile ? \"2px\" : \"4px\",\n flexWrap: \"wrap\",\n wordBreak: \"break-word\",\n overflowWrap: \"break-word\",\n whiteSpace: \"normal\",\n },\n }}\n >\n {bodyText}\n </DialogContent>\n <DialogActions\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n width: \"100%\",\n gap: \"12px\",\n alignItems: \"center\",\n padding: 3,\n }}\n >\n <Button\n onClick={handleClose}\n variant=\"outlined\"\n color={color}\n startIcon={<MdOutlineCancel size={15} />}\n sx={{ minWidth: \"120px\" }}\n >\n انصراف\n </Button>\n <Button\n disabled={isLoading}\n onClick={() => {\n callback(callbackParams);\n }}\n variant=\"contained\"\n color={color}\n sx={{ minWidth: \"120px\" }}\n startIcon={\n isLoading ? (\n <CircularProgress sx={{ color: \"white\" }} size={20} />\n ) : (\n React.cloneElement(icon, { size: 16 })\n )\n }\n >\n {actionTitle}\n </Button>\n </DialogActions>\n </Box>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport { Calendar } from \"@mamrp/icons/common\";\nimport {\n Box,\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n InputAdornment,\n TextField,\n Tooltip,\n Typography,\n useTheme,\n} from \"@mui/material\";\nimport moment from \"moment-jalaali\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport {\n MdChevronLeft,\n MdChevronRight,\n MdClose,\n MdOutlineClear,\n} from \"react-icons/md\";\nimport DraggablePaper from \"../draggable-paper\";\n\n// Initialize moment-jalaali\nmoment.loadPersian({ usePersianDigits: false, dialect: \"persian-modern\" });\n\ninterface CustomDateTimePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"medium\";\n fullWidth?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n minDate?: string;\n maxDate?: string;\n clearable?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\n// Persian month names\nconst PERSIAN_MONTHS = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n];\n\n// Persian weekday names (starting from Saturday)\nconst PERSIAN_WEEKDAYS = [\"ش\", \"ی\", \"د\", \"س\", \"چ\", \"پ\", \"ج\"];\n\n// Convert Latin digits to Persian\nconst toPersianDigits = (num: number | string): string => {\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n return String(num).replace(/[0-9]/g, (d) => persianDigits[parseInt(d)]);\n};\n\n// Convert Persian digits to Latin\nconst toLatinDigits = (str: string): string => {\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n return str.replace(/[۰-۹]/g, (d) => String(persianDigits.indexOf(d)));\n};\n\nexport default function CustomDateTimePicker({\n name,\n control,\n label,\n size = \"medium\",\n fullWidth = true,\n disabled = false,\n showTime = true,\n minDate,\n maxDate,\n clearable = false,\n variant = \"outlined\",\n}: CustomDateTimePickerProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <DateTimePickerComponent\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n label={label}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n showTime={showTime}\n error={error}\n minDate={minDate}\n maxDate={maxDate}\n clearable={clearable}\n variant={variant}\n />\n )}\n />\n );\n}\n\ninterface DateTimePickerComponentProps {\n value: string;\n onChange: (value: string) => void;\n onBlur: () => void;\n label: string;\n size?: \"small\" | \"medium\";\n fullWidth?: boolean;\n disabled?: boolean;\n showTime?: boolean;\n error?: any;\n minDate?: string;\n maxDate?: string;\n clearable?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst DateTimePickerComponent: React.FC<DateTimePickerComponentProps> = ({\n value,\n onChange,\n onBlur,\n label,\n size = \"medium\",\n fullWidth = true,\n disabled = false,\n showTime = true,\n error,\n minDate,\n maxDate,\n clearable = false,\n variant = \"outlined\",\n}) => {\n const theme = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const [hasUserInteracted, setHasUserInteracted] = useState(false);\n const hourInputRef = useRef<HTMLInputElement>(null);\n const minuteInputRef = useRef<HTMLInputElement>(null);\n const [hourInputValue, setHourInputValue] = useState(\"\");\n const [minuteInputValue, setMinuteInputValue] = useState(\"\");\n const [isEditingHour, setIsEditingHour] = useState(false);\n const [isEditingMinute, setIsEditingMinute] = useState(false);\n\n // Parse current value or use today\n const parseValue = (val: string) => {\n if (val) {\n const m = moment(val);\n if (m.isValid()) {\n return {\n year: m.jYear(),\n month: m.jMonth(),\n day: m.jDate(),\n hour: m.hour(),\n minute: m.minute(),\n };\n }\n }\n const now = moment();\n return {\n year: now.jYear(),\n month: now.jMonth(),\n day: now.jDate(),\n hour: now.hour(),\n minute: now.minute(),\n };\n };\n\n const [selectedDate, setSelectedDate] = useState(() => parseValue(value));\n const [viewYear, setViewYear] = useState(selectedDate.year);\n const [viewMonth, setViewMonth] = useState(selectedDate.month);\n\n // Update state when value changes externally\n useEffect(() => {\n const parsed = parseValue(value);\n setSelectedDate(parsed);\n setViewYear(parsed.year);\n setViewMonth(parsed.month);\n }, [value]);\n\n // Auto-update value when selectedDate changes (no need to hit confirm)\n useEffect(() => {\n // Only update if user has interacted or there's already a value (default from form)\n if (!hasUserInteracted && !value) return;\n\n const { year, month, day, hour, minute } = selectedDate;\n const m = moment(`${year}/${month + 1}/${day}`, \"jYYYY/jM/jD\");\n m.hour(hour);\n m.minute(minute);\n m.second(0);\n // Convert to UTC and format as ISO string for backend (ensure Latin digits)\n const newValue = toLatinDigits(m.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\"));\n\n // Only update if different to avoid infinite loop\n if (newValue !== value) {\n onChange(newValue);\n }\n }, [selectedDate, hasUserInteracted]);\n\n // Get days in month\n const getDaysInMonth = (year: number, month: number) => {\n return moment.jDaysInMonth(year, month);\n };\n\n // Get first day of month (0 = Saturday in Persian calendar)\n const getFirstDayOfMonth = (year: number, month: number) => {\n const firstDay = moment(`${year}/${month + 1}/1`, \"jYYYY/jM/jD\");\n // Convert to Persian week (Saturday = 0)\n const dayOfWeek = firstDay.day();\n // JavaScript: 0 = Sunday, 6 = Saturday\n // Persian: 0 = Saturday, 1 = Sunday, ..., 6 = Friday\n return dayOfWeek === 6 ? 0 : dayOfWeek + 1;\n };\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\n const days: (number | null)[] = [];\n\n // Add empty slots for days before the first day\n for (let i = 0; i < firstDay; i++) {\n days.push(null);\n }\n\n // Add days of the month\n for (let i = 1; i <= daysInMonth; i++) {\n days.push(i);\n }\n\n return days;\n }, [viewYear, viewMonth]);\n\n // Navigate months\n const goToPrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11);\n setViewYear(viewYear - 1);\n } else {\n setViewMonth(viewMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0);\n setViewYear(viewYear + 1);\n } else {\n setViewMonth(viewMonth + 1);\n }\n };\n\n // Select a day\n const handleDayClick = (day: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => ({\n ...prev,\n year: viewYear,\n month: viewMonth,\n day,\n }));\n };\n\n // Handle time change\n const handleHourChange = (delta: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => {\n let newHour = prev.hour + delta;\n if (newHour < 0) newHour = 23;\n if (newHour > 23) newHour = 0;\n return { ...prev, hour: newHour };\n });\n };\n\n const handleMinuteChange = (delta: number) => {\n setHasUserInteracted(true);\n setSelectedDate((prev) => {\n let newMinute = prev.minute + delta;\n if (newMinute < 0) newMinute = 59;\n if (newMinute > 59) newMinute = 0;\n return { ...prev, minute: newMinute };\n });\n };\n\n // Handle direct time input with fluent typing\n const handleHourInputChange = (inputValue: string) => {\n setHasUserInteracted(true);\n const latinValue = toLatinDigits(inputValue).replace(/[^0-9]/g, \"\");\n if (latinValue.length <= 2) {\n const num = parseInt(latinValue, 10);\n // Only update if valid or empty\n if (latinValue === \"\" || (!isNaN(num) && num >= 0 && num <= 23)) {\n setHourInputValue(latinValue);\n if (!isNaN(num) && num >= 0 && num <= 23) {\n setSelectedDate((prev) => ({ ...prev, hour: num }));\n }\n // Focus minute input after 2 digits entered\n if (latinValue.length === 2 && !isNaN(num) && num >= 0 && num <= 23) {\n setTimeout(() => {\n minuteInputRef.current?.focus();\n minuteInputRef.current?.select();\n }, 50);\n }\n }\n }\n };\n\n const handleMinuteInputChange = (inputValue: string) => {\n setHasUserInteracted(true);\n const latinValue = toLatinDigits(inputValue).replace(/[^0-9]/g, \"\");\n if (latinValue.length <= 2) {\n const num = parseInt(latinValue, 10);\n // Only update if valid or empty\n if (latinValue === \"\" || (!isNaN(num) && num >= 0 && num <= 59)) {\n setMinuteInputValue(latinValue);\n if (!isNaN(num) && num >= 0 && num <= 59) {\n setSelectedDate((prev) => ({ ...prev, minute: num }));\n }\n }\n }\n };\n\n const handleHourFocus = () => {\n setIsEditingHour(true);\n setHourInputValue(\"\");\n };\n\n const handleHourBlur = () => {\n setIsEditingHour(false);\n // Reset to valid value if empty or invalid\n const num = parseInt(hourInputValue, 10);\n if (isNaN(num) || num < 0 || num > 23) {\n // Keep current selectedDate.hour\n }\n setHourInputValue(\"\");\n };\n\n const handleMinuteFocus = () => {\n setIsEditingMinute(true);\n setMinuteInputValue(\"\");\n };\n\n const handleMinuteBlur = () => {\n setIsEditingMinute(false);\n // Reset to valid value if empty or invalid\n const num = parseInt(minuteInputValue, 10);\n if (isNaN(num) || num < 0 || num > 59) {\n // Keep current selectedDate.minute\n }\n setMinuteInputValue(\"\");\n };\n\n // Handle keyboard events on time inputs\n const handleTimeKeyDown = (\n e: React.KeyboardEvent,\n type: \"hour\" | \"minute\"\n ) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n if (type === \"hour\") handleHourChange(1);\n else handleMinuteChange(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (type === \"hour\") handleHourChange(-1);\n else handleMinuteChange(-1);\n } else if (e.key === \"Enter\" || e.key === \"Tab\") {\n if (type === \"hour\") {\n e.preventDefault();\n minuteInputRef.current?.focus();\n minuteInputRef.current?.select();\n }\n }\n };\n\n // Handle scroll on time inputs\n const handleTimeScroll = useCallback(\n (e: React.WheelEvent, type: \"hour\" | \"minute\") => {\n e.preventDefault();\n const delta = e.deltaY < 0 ? 1 : -1;\n if (type === \"hour\") handleHourChange(delta);\n else handleMinuteChange(delta);\n },\n []\n );\n\n // Quick date change from input field arrows\n const changeDate = (days: number) => {\n const currentMoment = value ? moment(value) : moment();\n\n const newMoment = currentMoment.add(days, \"days\");\n onChange(toLatinDigits(newMoment.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\")));\n };\n\n // Confirm selection\n const handleConfirm = () => {\n const { year, month, day, hour, minute } = selectedDate;\n const m = moment(`${year}/${month + 1}/${day}`, \"jYYYY/jM/jD\");\n m.hour(hour);\n m.minute(minute);\n m.second(0);\n\n // Output in UTC ISO format for backend (ensure Latin digits)\n onChange(toLatinDigits(m.utc().format(\"YYYY-MM-DDTHH:mm:ss[Z]\")));\n setIsOpen(false);\n };\n\n // Clear selection\n const handleClear = () => {\n setHasUserInteracted(false);\n onChange(\"\");\n setIsOpen(false);\n };\n\n // Go to today - only changes date, preserves current time\n const handleToday = () => {\n setHasUserInteracted(true);\n const now = moment();\n setSelectedDate((prev) => ({\n ...prev,\n year: now.jYear(),\n month: now.jMonth(),\n day: now.jDate(),\n // Keep the current time, don't change it\n }));\n setViewYear(now.jYear());\n setViewMonth(now.jMonth());\n };\n\n // Format display value - shorter format for compact display\n const displayValue = useMemo(() => {\n if (!value) return \"\";\n const m = moment(value);\n if (!m.isValid()) return \"\";\n\n if (showTime) {\n // Shorter format: YY/MM/DD - HH:mm (with dash between date and time)\n return toPersianDigits(m.format(\"jYYYY/jM/jD - HH:mm\"));\n }\n return toPersianDigits(m.format(\"jYYYY/jM/jD\"));\n }, [value, showTime]);\n\n // Check if a day is selected\n const isSelected = (day: number) => {\n return (\n selectedDate.day === day &&\n selectedDate.month === viewMonth &&\n selectedDate.year === viewYear\n );\n };\n\n // Check if a day is today\n const isToday = (day: number) => {\n const now = moment();\n return (\n now.jDate() === day &&\n now.jMonth() === viewMonth &&\n now.jYear() === viewYear\n );\n };\n\n return (\n <Box sx={{ width: fullWidth ? \"100%\" : \"auto\" }}>\n <TextField\n label={variant === \"outlined\" ? label : undefined}\n value={displayValue}\n onClick={() => !disabled && setIsOpen(true)}\n onBlur={onBlur}\n placeholder={variant === \"standard\" ? label : \"انتخاب تاریخ و زمان\"}\n variant={variant}\n fullWidth={fullWidth}\n size={size}\n disabled={disabled}\n error={!!error}\n helperText={error?.message}\n InputProps={{\n readOnly: true,\n sx: {\n cursor: disabled ? \"default\" : \"pointer\",\n pr: 0,\n pl: 0,\n },\n startAdornment: (\n <InputAdornment position=\"start\" sx={{ mr: -0.5, ml: 0.5 }}>\n <Tooltip title=\"روز قبل\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) changeDate(-1);\n }}\n disabled={disabled}\n sx={{\n opacity: disabled ? 0.5 : 1,\n p: 0.25,\n }}\n >\n <MdChevronRight size={28} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\" sx={{ ml: -0.5, mr: 2 }}>\n <Tooltip title=\"روز بعد\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) changeDate(1);\n }}\n disabled={disabled}\n sx={{\n opacity: disabled ? 0.5 : 1,\n p: 0.25,\n }}\n >\n <MdChevronLeft size={28} />\n </IconButton>\n </Tooltip>\n {clearable && value && !disabled && (\n <Tooltip title=\"پاک کردن\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n setHasUserInteracted(false);\n onChange(\"\");\n }}\n sx={{ p: 0.25 }}\n >\n <MdOutlineClear size={20} />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip title=\"انتخاب تاریخ\">\n <IconButton\n size=\"small\"\n onClick={() => !disabled && setIsOpen(true)}\n disabled={disabled}\n sx={{ p: 0.25 }}\n >\n <Calendar size={22} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n InputLabelProps={variant === \"outlined\" ? { shrink: true } : undefined}\n sx={{\n \"& .MuiOutlinedInput-input\": {\n px: 0.5,\n textAlign: \"center\",\n },\n \"& .MuiInput-input\": {\n px: 0.5,\n textAlign: \"center\",\n },\n }}\n />\n\n <Dialog\n open={isOpen}\n onClose={() => setIsOpen(false)}\n maxWidth=\"xs\"\n fullWidth\n PaperProps={{\n sx: { borderRadius: 3 },\n }}\n PaperComponent={DraggablePaper}\n >\n <DialogTitle\n id=\"draggable-dialog\"\n sx={{\n cursor: \"move\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n py: 1,\n px: 1.5,\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.6 }}>\n <Calendar size={20} />\n <Typography fontWeight={700} fontSize=\"1rem\">\n انتخاب تاریخ {showTime && \"و زمان\"}\n </Typography>\n </Box>\n <IconButton onClick={() => setIsOpen(false)} size=\"small\">\n <MdClose />\n </IconButton>\n </DialogTitle>\n\n <Divider />\n\n <DialogContent sx={{ px: 3, pt: 1 }}>\n {/* Time Picker - at the top */}\n {showTime && (\n <>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 2,\n }}\n >\n {/* Minutes */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n }}\n >\n <IconButton\n onClick={() => handleMinuteChange(1)}\n size=\"small\"\n >\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(-90deg)\" }}\n />\n </IconButton>\n <TextField\n inputRef={minuteInputRef}\n value={\n isEditingMinute\n ? minuteInputValue\n : toPersianDigits(\n String(selectedDate.minute).padStart(2, \"0\")\n )\n }\n onChange={(e) => handleMinuteInputChange(e.target.value)}\n onFocus={handleMinuteFocus}\n onBlur={handleMinuteBlur}\n onKeyDown={(e) => handleTimeKeyDown(e, \"minute\")}\n onWheel={(e) => handleTimeScroll(e, \"minute\")}\n inputProps={{\n style: {\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n padding: \"10px 6px\",\n width: 48,\n },\n maxLength: 2,\n }}\n size=\"small\"\n sx={{\n \"& .MuiOutlinedInput-root\": {\n bgcolor: \"action.hover\",\n borderRadius: 1,\n },\n }}\n />\n <IconButton\n onClick={() => handleMinuteChange(-1)}\n size=\"small\"\n >\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(90deg)\" }}\n />\n </IconButton>\n <Typography variant=\"caption\" color=\"text.secondary\">\n دقیقه\n </Typography>\n </Box>\n\n <Typography fontSize=\"1.5rem\" fontWeight={700}>\n :\n </Typography>\n\n {/* Hours */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={() => handleHourChange(1)} size=\"small\">\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(-90deg)\" }}\n />\n </IconButton>\n <TextField\n inputRef={hourInputRef}\n value={\n isEditingHour\n ? hourInputValue\n : toPersianDigits(\n String(selectedDate.hour).padStart(2, \"0\")\n )\n }\n onChange={(e) => handleHourInputChange(e.target.value)}\n onFocus={handleHourFocus}\n onBlur={handleHourBlur}\n onKeyDown={(e) => handleTimeKeyDown(e, \"hour\")}\n onWheel={(e) => handleTimeScroll(e, \"hour\")}\n inputProps={{\n style: {\n textAlign: \"center\",\n fontSize: \"1.25rem\",\n fontWeight: 600,\n padding: \"10px 6px\",\n width: 48,\n },\n maxLength: 2,\n }}\n size=\"small\"\n sx={{\n \"& .MuiOutlinedInput-root\": {\n bgcolor: \"action.hover\",\n borderRadius: 1,\n },\n }}\n />\n <IconButton onClick={() => handleHourChange(-1)} size=\"small\">\n <MdChevronRight\n size={24}\n style={{ transform: \"rotate(90deg)\" }}\n />\n </IconButton>\n <Typography variant=\"caption\" color=\"text.secondary\">\n ساعت\n </Typography>\n </Box>\n </Box>\n <Divider sx={{ my: 1 }} />\n </>\n )}\n\n {/* Month/Year Navigation */}\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n mb: 1,\n }}\n >\n <IconButton onClick={goToNextMonth} size=\"small\">\n <MdChevronRight size={24} />\n </IconButton>\n\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n <Typography fontWeight={600} fontSize=\"1rem\">\n {PERSIAN_MONTHS[viewMonth]} {toPersianDigits(viewYear)}\n </Typography>\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={handleToday}\n sx={{\n fontSize: \"0.75rem\",\n py: 0.25,\n px: 1,\n minWidth: \"auto\",\n color: \"text.secondary\",\n }}\n >\n امروز\n </Button>\n </Box>\n\n <IconButton onClick={goToPrevMonth} size=\"small\">\n <MdChevronLeft size={24} />\n </IconButton>\n </Box>\n\n {/* Weekday Headers */}\n <Box\n sx={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n gap: 0.25,\n mb: 0.5,\n }}\n >\n {PERSIAN_WEEKDAYS.map((day, index) => (\n <Box\n key={index}\n sx={{\n textAlign: \"center\",\n py: 0.25,\n color: index === 6 ? \"error.main\" : \"text.secondary\",\n fontWeight: 600,\n fontSize: \"0.8rem\",\n }}\n >\n {day}\n </Box>\n ))}\n </Box>\n\n {/* Calendar Grid */}\n <Box\n sx={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(7, 1fr)\",\n gap: 0.25,\n }}\n >\n {calendarDays.map((day, index) => (\n <Box\n key={index}\n onClick={() => day && handleDayClick(day)}\n sx={{\n aspectRatio: \"1\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"50%\",\n cursor: day ? \"pointer\" : \"default\",\n fontSize: \"0.9rem\",\n fontWeight: isSelected(day!) ? 700 : 400,\n bgcolor: isSelected(day!)\n ? \"primary.main\"\n : isToday(day!)\n ? \"primary.lighter\"\n : \"transparent\",\n color: isSelected(day!)\n ? \"primary.contrastText\"\n : isToday(day!)\n ? \"primary.main\"\n : index % 7 === 6\n ? \"error.main\"\n : \"text.primary\",\n border:\n isToday(day!) && !isSelected(day!)\n ? `2px solid ${theme.palette.primary.main}`\n : \"none\",\n transition: \"all 0.15s ease\",\n \"&:hover\": day\n ? {\n bgcolor: isSelected(day!)\n ? \"primary.dark\"\n : \"action.hover\",\n }\n : {},\n }}\n >\n {day && toPersianDigits(day)}\n </Box>\n ))}\n </Box>\n </DialogContent>\n\n <Divider />\n\n {/* <DialogActions sx={{ px: 2, py: 2 }}>\n <Button onClick={handleClear} startIcon={<Clear />} color=\"inherit\">\n پاک کردن\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleConfirm}\n startIcon={<Check />}\n >\n تایید\n </Button>\n </DialogActions> */}\n </Dialog>\n </Box>\n );\n};\n","import { Paper, PaperProps } from \"@mui/material\";\nimport { useRef } from \"react\";\nimport Draggable from \"react-draggable\";\n\ninterface DraggablePaperProps extends PaperProps {\n handle?: string;\n cancel?: string;\n}\n\nexport default function DraggablePaper({\n handle = \"#draggable-dialog\",\n cancel = '[class*=\"MuiDialogContent-root\"]',\n ...props\n}: DraggablePaperProps) {\n const nodeRef = useRef(null);\n\n return (\n <Draggable\n nodeRef={nodeRef}\n handle={handle}\n cancel={cancel}\n bounds=\"parent\"\n defaultPosition={{ x: 0, y: 0 }}\n >\n <Paper ref={nodeRef} {...props} />\n </Draggable>\n );\n}\n","\"use client\";\n\nimport {\n Box,\n Dialog,\n DialogActions,\n DialogContent,\n DialogProps,\n DialogTitle,\n Divider,\n IconButton,\n Stack,\n Tooltip,\n} from \"@mui/material\";\nimport { ReactNode } from \"react\";\nimport { IconType } from \"react-icons\";\nimport { MdClose } from \"react-icons/md\";\nimport DraggablePaper from \"../draggable-paper\";\n\n// Type helper for palette colors\nexport type PaletteColor =\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"success\"\n | \"tertiary\"\n | \"accent\"\n | \"successLight\"\n | \"orange\"\n | \"indigo\"\n | \"teal\"\n | \"pinkLight\"\n | \"aqua\"\n | \"customRed\";\n\nexport interface CustomDialogProps {\n title: string;\n icon?: IconType;\n iconColor?: PaletteColor;\n open: boolean;\n onClose: () => void;\n maxWidth?: DialogProps[\"maxWidth\"];\n fullWidth?: boolean;\n children: ReactNode;\n actions?: ReactNode;\n isSubmiting?: boolean;\n}\n\nexport default function CustomDialog({\n title,\n icon: Icon,\n iconColor,\n open,\n onClose,\n maxWidth = \"sm\",\n fullWidth = true,\n children,\n actions,\n isSubmiting = false,\n}: CustomDialogProps) {\n const handleClose = (\n event: {},\n reason: \"backdropClick\" | \"escapeKeyDown\"\n ) => {\n if (isSubmiting) {\n return;\n }\n onClose();\n };\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth={maxWidth}\n fullWidth={fullWidth}\n PaperComponent={DraggablePaper}\n disableScrollLock\n >\n <DialogTitle\n fontWeight={700}\n fontSize={\"1.2rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={\"4px\"}\n sx={{ cursor: \"move\" }}\n id=\"draggable-dialog\"\n >\n <Stack direction={\"row\"} alignItems={\"center\"} spacing={0.5}>\n <Box>\n {Icon && (\n <Stack\n alignItems={\"center\"}\n sx={{\n color: iconColor\n ? (theme) => {\n const paletteColors: PaletteColor[] = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"warning\",\n \"info\",\n \"success\",\n \"tertiary\",\n \"accent\",\n \"successLight\",\n \"orange\",\n \"indigo\",\n \"teal\",\n \"pinkLight\",\n \"aqua\",\n \"customRed\",\n ];\n if (paletteColors.includes(iconColor as PaletteColor)) {\n const palette = theme.palette as any;\n return palette[iconColor]?.main || iconColor;\n }\n return iconColor;\n }\n : (theme) => theme.palette.info.main,\n pr: 0.5,\n }}\n >\n <Icon size={20} />\n </Stack>\n )}\n </Box>\n <Box>{title}</Box>\n </Stack>\n </DialogTitle>\n\n <Tooltip title=\"بستن\">\n <IconButton\n aria-label=\"close\"\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n disabled={isSubmiting}\n >\n <MdClose />\n </IconButton>\n </Tooltip>\n\n <Divider />\n\n <DialogContent>{children}</DialogContent>\n\n {actions && (\n <>\n <DialogActions>{actions}</DialogActions>\n </>\n )}\n </Dialog>\n );\n}\n","import {\n Box,\n Button,\n Divider,\n IconButton,\n Typography,\n TextField,\n InputAdornment,\n useTheme,\n Tooltip,\n} from \"@mui/material\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { MdClose } from \"react-icons/md\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { Clock } from \"@mamrp/icons/common\";\n\ninterface CustomTimePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"medium\";\n fullwidth?: boolean;\n autoRefresh?: boolean;\n disabled?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nexport default function CustomTimePicker({\n name,\n control,\n label,\n size = \"small\",\n fullwidth = false,\n autoRefresh = false,\n disabled = false,\n variant = \"outlined\",\n}: CustomTimePickerProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <TimePickerComponent\n {...field}\n label={label}\n size={size}\n error={error}\n fullwidth={fullwidth}\n autoRefresh={autoRefresh}\n disabled={disabled}\n variant={variant}\n />\n )}\n />\n );\n}\n\ninterface TimePickerComponentProps {\n value: string;\n onChange: (value: string) => void;\n onBlur: () => void;\n label: string;\n size?: \"small\" | \"medium\";\n error?: any;\n fullwidth?: boolean;\n autoRefresh?: boolean;\n disabled?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst TimePickerComponent: React.FC<TimePickerComponentProps> = ({\n value,\n onChange,\n onBlur,\n label,\n size = \"small\",\n error,\n fullwidth,\n autoRefresh,\n disabled = false,\n variant = \"outlined\",\n}) => {\n const theme = useTheme();\n\n const initialHour = value ? parseInt(value.split(\":\")[0]) : null;\n const initialMinute = value ? parseInt(value.split(\":\")[1]) : null;\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedHour, setSelectedHour] = useState<number | null>(initialHour);\n const [selectedMinute, setSelectedMinute] = useState<number | null>(\n initialMinute\n );\n\n const hourRefs = useRef<(HTMLDivElement | null)[]>([]);\n const minuteRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const hours = Array.from({ length: 24 }, (_, i) => i);\n const minutes = Array.from({ length: 60 }, (_, i) => i);\n\n useEffect(() => {\n if (isModalOpen) {\n setTimeout(() => {\n if (selectedHour !== null) {\n hourRefs.current[selectedHour]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n if (selectedMinute !== null) {\n minuteRefs.current[selectedMinute]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }\n }, 0);\n }\n }, [isModalOpen, selectedHour, selectedMinute]);\n\n useEffect(() => {\n const updatedHour = value ? parseInt(value.split(\":\")[0]) : null;\n setSelectedHour(updatedHour);\n const updatedMinute = value ? parseInt(value.split(\":\")[1]) : null;\n setSelectedMinute(updatedMinute);\n }, [value, autoRefresh]);\n\n const handleSelectHour = (hour: number) => {\n setSelectedHour(hour);\n if (selectedMinute !== null) {\n onChange(formatTime(hour, selectedMinute));\n }\n };\n\n const handleSelectMinute = (minute: number) => {\n setSelectedMinute(minute);\n if (selectedHour !== null) {\n onChange(formatTime(selectedHour, minute));\n }\n };\n\n const formatTime = (hour: number, minute: number) => {\n return `${hour.toString().padStart(2, \"0\")}:${minute\n .toString()\n .padStart(2, \"0\")}`;\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let inputValue = e.target.value;\n\n // Prevent deleting the colon (:) or entering invalid characters\n if (!/^\\d{0,2}:\\d{0,2}$/.test(inputValue)) {\n return;\n }\n\n const [hourPart = \"\", minutePart = \"\"] = inputValue.split(\":\");\n\n // Validate and correct hour and minute ranges\n if (parseInt(hourPart) > 23) {\n inputValue = `23:${minutePart}`;\n }\n if (parseInt(minutePart) > 59) {\n inputValue = `${hourPart}:59`;\n }\n\n // Automatically add \":\" after two digits for hour if not present\n if (hourPart.length === 2 && !inputValue.includes(\":\")) {\n inputValue = hourPart + \":\";\n }\n\n onChange(inputValue);\n };\n\n const handleBlur = () => {\n if (!value || value === \":\") {\n onChange(\"00:00\");\n return;\n }\n\n const [hourPart = \"0\", minutePart = \"0\"] = value.split(\":\");\n const hour = Math.min(23, parseInt(hourPart) || 0);\n const minute = Math.min(59, parseInt(minutePart) || 0);\n const formattedTime = formatTime(hour, minute);\n\n onChange(formattedTime);\n };\n\n return (\n <Box display=\"flex\" alignItems=\"center\" gap={0.5} sx={{ width: \"100%\" }}>\n <TextField\n disabled={disabled}\n label={variant === \"standard\" ? \"\" : label}\n value={value}\n onChange={handleInputChange}\n onBlur={handleBlur}\n InputLabelProps={{\n shrink: true,\n style: {\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n }}\n variant={variant}\n size={size}\n inputProps={{\n maxLength: 5, // Ensures the format is always \"HH:MM\"\n style: { textAlign: \"center\" },\n }}\n InputProps={{\n ...(!disabled && {\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip title=\"انتخاب زمان\">\n <IconButton onClick={() => setIsModalOpen(true)}>\n <Clock size={22} color={theme.palette.text.primary} />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ),\n }),\n }}\n sx={{\n width: fullwidth ? \"100%\" : \"8rem\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error ? \"#D32F2F\" : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error ? \"#D32F2F\" : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n }}\n fullWidth\n />\n\n <Dialog\n open={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n fullWidth\n maxWidth=\"xs\"\n >\n <DialogTitle\n fontWeight={700}\n fontSize=\"1.2rem\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"4px\"\n >\n انتخاب زمان\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={() => setIsModalOpen(false)}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <MdClose />\n </IconButton>\n <Divider sx={{ my: \"10px\" }} />\n\n <DialogContent>\n <Box display=\"flex\" justifyContent=\"space-between\" gap=\"20px\">\n {/* Minute Selector */}\n <Box flex={1}>\n <Typography variant=\"h6\" textAlign=\"center\" gutterBottom>\n دقیقه\n </Typography>\n\n <Box\n maxHeight=\"200px\"\n overflow=\"auto\"\n border=\"1px solid lightgray\"\n borderRadius=\"8px\"\n >\n {minutes.map((minute) => (\n <Box\n key={minute}\n ref={(el: HTMLDivElement | null) => {\n minuteRefs.current[minute] = el;\n }}\n p=\"10px\"\n textAlign=\"center\"\n bgcolor={\n minute === selectedMinute ? \"primary.light\" : \"inherit\"\n }\n color={minute === selectedMinute ? \"white\" : \"inherit\"}\n sx={{ cursor: \"pointer\" }}\n onClick={() => handleSelectMinute(minute)}\n >\n <Typography>\n {minute.toString().padStart(2, \"0\")}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n\n {/* Hour Selector */}\n <Box flex={1}>\n <Typography variant=\"h6\" textAlign=\"center\" gutterBottom>\n ساعت\n </Typography>\n\n <Box\n maxHeight=\"200px\"\n overflow=\"auto\"\n border=\"1px solid lightgray\"\n borderRadius=\"8px\"\n >\n {hours.map((hour) => (\n <Box\n key={hour}\n ref={(el: HTMLDivElement | null) => {\n hourRefs.current[hour] = el;\n }}\n p=\"10px\"\n textAlign=\"center\"\n bgcolor={\n hour === selectedHour ? \"primary.light\" : \"inherit\"\n }\n color={hour === selectedHour ? \"white\" : \"inherit\"}\n sx={{ cursor: \"pointer\" }}\n onClick={() => handleSelectHour(hour)}\n >\n <Typography>{hour.toString().padStart(2, \"0\")}</Typography>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n </DialogContent>\n\n <DialogActions sx={{ padding: 2 }}>\n <Button\n onClick={() => setIsModalOpen(false)}\n sx={{ fontSize: \"1.1rem\" }}\n >\n انتخاب\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n );\n};\n","\"use client\";\n\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { Box, Button, IconButton, Tooltip } from \"@mui/material\";\nimport {\n MaterialReactTable,\n MRT_ColumnFiltersState,\n MRT_ColumnVirtualizer,\n MRT_PaginationState,\n MRT_SortingState,\n useMaterialReactTable,\n type MRT_ColumnDef,\n type MRT_TableOptions,\n} from \"material-react-table\";\nimport { MRT_Localization_FA } from \"material-react-table/locales/fa\";\nimport { useMemo, useRef } from \"react\";\nimport { MdOutlineRefresh } from \"react-icons/md\";\n\n/**\n * لوکالیزیشن سفارشی فارسی برای جدول\n */\nconst customLocalization = {\n ...MRT_Localization_FA,\n mrt_columns_showHide_resetOrder: \"بازنشانی ترتیب\",\n};\n\n/**\n * Props کامپوننت DataTable\n *\n * این اینترفیس تمام گزینه‌های قابل تنظیم برای کامپوننت DataTable را تعریف می‌کند\n * و مستقیماً با خروجی useTableState سازگار است\n *\n * @template T - نوع داده‌های جدول (مثال: Car، User، Product)\n */\nexport type DataTableProps<T extends Record<string, any>> = {\n // === داده‌ها ===\n /** آرایه داده‌های جدول */\n data: T[];\n /** تعریف ستون‌های جدول */\n columns: MRT_ColumnDef<T>[];\n\n // === وضعیت بارگذاری ===\n /** آیا جدول در حال بارگذاری است */\n isLoading?: boolean;\n /** آیا داده‌ها در حال به‌روزرسانی هستند */\n isRefetching?: boolean;\n\n // === صفحه‌بندی ===\n /** وضعیت صفحه‌بندی (مستقیماً از useTableState) */\n pagination: MRT_PaginationState;\n /** تابع تغییر صفحه‌بندی (setPagination از useTableState) */\n onPaginationChange: (\n updater:\n | MRT_PaginationState\n | ((old: MRT_PaginationState) => MRT_PaginationState)\n ) => void;\n /** تعداد کل رکوردها (از API response) */\n totalRows: number;\n /** فعال‌سازی صفحه‌بندی دستی (پیش‌فرض: true) */\n manualPagination?: boolean;\n /** غیرفعال کردن نمایش پیجینیشن (پیش‌فرض: false) */\n disablePagination?: boolean;\n\n // === فیلترینگ ===\n /** فیلترهای ستون (columnFilters از useTableState) */\n columnFilters?: MRT_ColumnFiltersState;\n /** تابع تغییر فیلترهای ستون */\n onColumnFiltersChange?: (\n filters:\n | MRT_ColumnFiltersState\n | ((old: MRT_ColumnFiltersState) => MRT_ColumnFiltersState)\n ) => void;\n /** فعال‌سازی فیلترینگ دستی (پیش‌فرض: true) */\n manualFiltering?: boolean;\n /** تابع پاک کردن فیلترها (clearFilters از useTableState) */\n onClearFilters?: () => void;\n /** نمایش دکمه پاک کردن فیلترها */\n showClearFiltersButton?: boolean;\n\n // === مرتب‌سازی ===\n /** وضعیت مرتب‌سازی (sorting از useTableState) */\n sorting?: MRT_SortingState;\n /** تابع تغییر مرتب‌سازی (setSorting از useTableState) */\n onSortingChange?: (\n sorting: MRT_SortingState | ((old: MRT_SortingState) => MRT_SortingState)\n ) => void;\n /** فعال‌سازی مرتب‌سازی دستی (پیش‌فرض: false) */\n manualSorting?: boolean;\n\n // === نمایش ستون‌ها ===\n /** وضعیت نمایش ستون‌ها (columnVisibility از useTableState) */\n columnVisibility?: Record<string, boolean>;\n /** تابع تغییر نمایش ستون‌ها (setColumnVisibility از useTableState) */\n onColumnVisibilityChange?: (\n visibility:\n | Record<string, boolean>\n | ((old: Record<string, boolean>) => Record<string, boolean>)\n ) => void;\n\n // === ترتیب ستون‌ها ===\n /** ترتیب ستون‌ها */\n columnOrder?: string[];\n /** تابع تغییر ترتیب ستون‌ها */\n onColumnOrderChange?: (\n order: string[] | ((old: string[]) => string[])\n ) => void;\n\n // === ظاهر جدول ===\n /** فعال‌سازی header چسبان */\n enableStickyHeader?: boolean;\n /** حداکثر ارتفاع جدول */\n maxHeight?: string;\n /** تراکم جدول */\n density?: \"comfortable\" | \"compact\" | \"spacious\";\n\n // === ویژگی‌های جدول ===\n /** امکان تغییر ترتیب ستون‌ها */\n enableColumnOrdering?: boolean;\n /** فعال‌سازی جستجوی سراسری */\n enableGlobalFilter?: boolean;\n /** فعال‌سازی انواع فیلتر ستون */\n enableColumnFilterModes?: boolean;\n /** فعال‌سازی انتخاب سطر */\n enableRowSelection?: boolean;\n\n // === کنترل نمایش فیلترها ===\n /** وضعیت نمایش فیلترهای ستون */\n showColumnFilters?: boolean;\n /** تابع تغییر وضعیت نمایش فیلترها */\n onShowColumnFiltersChange?: (\n updater: boolean | ((old: boolean) => boolean)\n ) => void;\n\n // === تولبارهای سفارشی ===\n /** رندر کردن اکشن‌های سفارشی بالای جدول */\n renderTopToolbarCustomActions?: (props: { table: any }) => React.ReactNode;\n /** رندر کردن اکشن‌های سفارشی پایین جدول */\n renderBottomToolbarCustomActions?: (props: { table: any }) => React.ReactNode;\n\n // === تنظیمات اضافی ===\n /** گزینه‌های اضافی جدول */\n tableOptions?: Partial<MRT_TableOptions<T>>;\n /** لوکالیزیشن سفارشی */\n localization?: Record<string, string>;\n /** فعال‌سازی مجازی‌سازی ستون‌ها برای عملکرد بهتر در ستون‌های زیاد */\n enableColumnVirtualization?: boolean;\n /** گزینه‌های مجازی‌سازی ستون‌ها */\n columnVirtualizerOptions?: MRT_TableOptions<T>[\"columnVirtualizerOptions\"];\n /** فعال‌سازی تغییر اندازه ستون‌ها (پیش‌فرض: false) */\n enableColumnResizing?: boolean;\n /** حالت چیدمان جدول برای کنترل عرض ستون‌ها (پیش‌فرض: \"semantic\") */\n layoutMode?: \"semantic\" | \"grid\" | \"grid-no-grow\";\n /** رندر کردن پنل جزئیات برای هر سطر (expandable rows) */\n renderDetailPanel?: MRT_TableOptions<T>[\"renderDetailPanel\"];\n /** تابع برای تازه‌سازی داده‌ها - دکمه refresh در تولبار نمایش داده می‌شود */\n refetch?: () => void;\n};\n\n/**\n * کامپوننت DataTable - جدول پیشرفته با قابلیت‌های کامل\n *\n * این کامپوننت یک wrapper پیشرفته برای Material React Table است که:\n * - مستقیماً با useTableState یکپارچه می‌شود\n * - تمام ویژگی‌های مدرن جدول را پشتیبانی می‌کند\n * - لوکالیزیشن کامل فارسی دارد\n * - بهینه‌سازی شده برای عملکرد بالا\n *\n * ## راهنمای استفاده با useTableState:\n *\n * ### مرحله 1: تنظیم useTableState\n * ```tsx\n * const tableState = useTableState(\"my-table\", {\n * initialPageSize: 25,\n * debounceTime: 500,\n * sortMapping: {\n * name: \"NameOrdering\",\n * status: \"StatusOrdering\"\n * }\n * });\n * ```\n *\n * ### مرحله 2: فراخوانی API\n * ```tsx\n * const { data, refetch } = useGetData({\n * PageNumber: tableState.pagination.pageIndex + 1,\n * PageSize: tableState.pagination.pageSize,\n * ...tableState.debouncedFiltring,\n * ...tableState.mappedSorting,\n * });\n * ```\n *\n * ### مرحله 3: تعریف ستون‌ها با فیلتر\n * ```tsx\n * const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [\n * {\n * accessorKey: \"name\",\n * header: \"نام\",\n * size: 200, // عرض ستون\n * Filter: ({ column }) => (\n * <FormInputText\n * control={control}\n * name=\"NameFiltering\"\n * placeholder=\"فیلتر نام\"\n * />\n * ),\n * },\n * // سایر ستون‌ها...\n * ], [control]);\n * ```\n *\n * ### مرحله 4: رندر DataTable\n * ```tsx\n * return (\n * <DataTable\n * data={data?.items || []}\n * columns={columns}\n * isLoading={isLoading}\n * pagination={tableState.pagination}\n * onPaginationChange={tableState.setPagination}\n * totalRows={data?.totalRecords || 0}\n * sorting={tableState.sorting}\n * onSortingChange={tableState.setSorting}\n * columnVisibility={tableState.columnVisibility}\n * onColumnVisibilityChange={tableState.setColumnVisibility}\n * showColumnFilters={showFilters}\n * onShowColumnFiltersChange={setShowFilters}\n * onClearFilters={handleClearFilters}\n * manualSorting={true}\n * refetch={refetch}\n * />\n * );\n * ```\n *\n * ## ویژگی‌های کلیدی:\n *\n * 📄 **صفحه‌بندی هوشمند**: صفحه‌بندی سمت سرور با همگام‌سازی خودکار\n * 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing\n * 🔀 **مرتب‌سازی قدرتمند**: مرتب‌سازی با نگاشت بک‌اند\n * 👁️ **مدیریت ستون‌ها**: نمایش/مخفی کردن ستون‌ها با localStorage\n * 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی\n * ⚡ **بهینه‌سازی**: رندرینگ بهینه با useMemo و مجازی‌سازی ستون‌ها برای عملکرد بالا\n * 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم\n * 🔄 **تازه‌سازی**: دکمه refresh برای بارگذاری مجدد داده‌ها\n * 📐 **تغییر اندازه ستون‌ها**: امکان تغییر عرض ستون‌ها توسط کاربر\n * 📋 **پنل جزئیات**: نمایش جزئیات بیشتر برای هر سطر (expandable rows)\n *\n * ## Props مهم:\n *\n * | Prop | نوع | پیش‌فرض | توضیحات |\n * |------|-----|---------|---------|\n * | `data` | `T[]` | - | آرایه داده‌های جدول |\n * | `columns` | `MRT_ColumnDef<T>[]` | - | تعریف ستون‌های جدول |\n * | `pagination` | `MRT_PaginationState` | - | وضعیت صفحه‌بندی |\n * | `totalRows` | `number` | - | تعداد کل رکوردها |\n * | `isLoading` | `boolean` | `false` | وضعیت بارگذاری |\n * | `disablePagination` | `boolean` | `false` | غیرفعال کردن پیجینیشن |\n * | `manualSorting` | `boolean` | `false` | مرتب‌سازی سمت سرور |\n * | `enableColumnResizing` | `boolean` | `false` | امکان تغییر عرض ستون |\n * | `layoutMode` | `string` | `\"semantic\"` | حالت چیدمان (`\"grid\"` برای عرض ثابت) |\n * | `refetch` | `() => void` | - | تابع تازه‌سازی داده‌ها |\n *\n * @template T - نوع داده‌های جدول\n *\n * @example\n * ```tsx\n * // مثال ساده\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={{ pageIndex: 0, pageSize: 10 }}\n * onPaginationChange={setPagination}\n * totalRows={100}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال با تغییر اندازه ستون\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={pagination}\n * onPaginationChange={setPagination}\n * totalRows={100}\n * enableColumnResizing={true}\n * layoutMode=\"grid\"\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال بدون پیجینیشن\n * <DataTable\n * data={users}\n * columns={columns}\n * pagination={{ pageIndex: 0, pageSize: 100 }}\n * onPaginationChange={() => {}}\n * totalRows={users.length}\n * disablePagination={true}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // مثال کامل با همه قابلیت‌ها\n * function UsersTable() {\n * const { control, watch, reset } = useForm();\n *\n * const tableState = useTableState<UserFilter>(\"users-table\", {\n * initialPageSize: 50,\n * watch,\n * syncFormToFilters: true,\n * sortMapping: {\n * name: \"NameOrdering\",\n * email: \"EmailOrdering\"\n * }\n * });\n *\n * const { data, isLoading, refetch } = useGetUsers({\n * PageNumber: tableState.pagination.pageIndex + 1,\n * PageSize: tableState.pagination.pageSize,\n * ...tableState.debouncedFiltring,\n * ...tableState.mappedSorting,\n * });\n *\n * const columns = useMemo(() => [\n * {\n * accessorKey: \"name\",\n * header: \"نام کاربر\",\n * size: 200,\n * Filter: () => (\n * <FormInputText\n * control={control}\n * name=\"NameFiltering\"\n * placeholder=\"جستجو نام\"\n * />\n * ),\n * }\n * ], [control]);\n *\n * return (\n * <DataTable\n * data={data?.users || []}\n * columns={columns}\n * isLoading={isLoading}\n * pagination={tableState.pagination}\n * onPaginationChange={tableState.setPagination}\n * totalRows={data?.totalCount || 0}\n * sorting={tableState.sorting}\n * onSortingChange={tableState.setSorting}\n * columnVisibility={tableState.columnVisibility}\n * onColumnVisibilityChange={tableState.setColumnVisibility}\n * onClearFilters={() => {\n * tableState.clearFilters();\n * reset();\n * }}\n * manualSorting={true}\n * enableColumnResizing={true}\n * layoutMode=\"grid\"\n * refetch={refetch}\n * renderDetailPanel={({ row }) => (\n * <Box p={2}>\n * <Typography>جزئیات کاربر: {row.original.name}</Typography>\n * </Box>\n * )}\n * />\n * );\n * }\n * ```\n */\nexport const DataTable = <T extends Record<string, any>>({\n data,\n columns,\n isLoading = false,\n isRefetching = false,\n pagination,\n onPaginationChange,\n totalRows,\n manualPagination = true,\n disablePagination = false,\n columnFilters = [],\n onColumnFiltersChange,\n manualFiltering = true,\n onClearFilters,\n showClearFiltersButton = true,\n sorting = [],\n onSortingChange,\n manualSorting = false,\n columnVisibility = {},\n onColumnVisibilityChange,\n columnOrder = [],\n onColumnOrderChange,\n enableStickyHeader = true,\n maxHeight = \"calc(100vh - 200px)\",\n density = \"compact\",\n enableColumnOrdering = true,\n enableGlobalFilter = false,\n enableColumnFilterModes = false,\n enableRowSelection = false,\n showColumnFilters,\n onShowColumnFiltersChange,\n renderTopToolbarCustomActions,\n renderBottomToolbarCustomActions,\n tableOptions = {},\n localization = customLocalization,\n enableColumnVirtualization = false,\n columnVirtualizerOptions = { overscan: 10 },\n enableColumnResizing = false,\n layoutMode = \"semantic\",\n renderDetailPanel,\n refetch,\n}: DataTableProps<T>) => {\n // 🚀 بهینه‌سازی با useMemo برای جلوگیری از re-render غیرضروری\n const memoizedColumns = useMemo(() => columns, [columns]);\n const memoizedData = useMemo(() => data, [data]);\n\n // 🧹 تولبار پیش‌فرض با دکمه پاک کردن فیلترها و دکمه تازه‌سازی\n const defaultRenderTopToolbarCustomActions = ({ table }: { table: any }) => {\n const currentShowFilters =\n showColumnFilters !== undefined\n ? showColumnFilters\n : table.getState().showColumnFilters;\n\n const showClearButton =\n currentShowFilters && showClearFiltersButton && onClearFilters;\n\n return (\n <Box\n display={\"flex\"}\n alignItems={\"center\"}\n justifyContent={\"flex-start\"}\n gap={1}\n >\n {refetch && (\n <Tooltip arrow title=\"بروزرسانی\">\n <IconButton onClick={() => refetch()}>\n <MdOutlineRefresh />\n </IconButton>\n </Tooltip>\n )}\n {showClearButton && (\n <Button\n color=\"secondary\"\n onClick={onClearFilters}\n startIcon={<ClearIcon />}\n >\n بازنشانی فیلترها\n </Button>\n )}\n </Box>\n );\n };\n const columnVirtualizerInstanceRef = useRef<MRT_ColumnVirtualizer>(null);\n\n // 🎛️ تنظیم جدول Material React Table\n const table = useMaterialReactTable({\n columns: memoizedColumns,\n data: memoizedData,\n localization,\n enableColumnResizing: enableColumnResizing,\n layoutMode: layoutMode,\n enableColumnVirtualization: enableColumnVirtualization,\n columnVirtualizerInstanceRef,\n columnVirtualizerOptions: columnVirtualizerOptions,\n enableKeyboardShortcuts: false,\n\n // === صفحه‌بندی ===\n enablePagination: !disablePagination,\n manualPagination: disablePagination ? false : manualPagination,\n onPaginationChange: disablePagination ? undefined : onPaginationChange,\n pageCount:\n !disablePagination && manualPagination\n ? Math.ceil(totalRows / pagination.pageSize)\n : undefined,\n rowCount: totalRows ?? 0,\n\n // === فیلترینگ ===\n manualFiltering,\n onColumnFiltersChange,\n enableColumnFilterModes,\n enableGlobalFilter,\n\n // === مرتب‌سازی ===\n manualSorting,\n onSortingChange,\n\n // === ویژگی‌ها ===\n enableColumnOrdering,\n enableRowSelection,\n enableStickyHeader,\n\n // === وضعیت جدول ===\n state: {\n pagination,\n // columnFilters, // غیرفعال شده - فیلترها از طریق useTableState مدیریت می‌شوند\n sorting,\n columnVisibility,\n ...(showColumnFilters !== undefined && { showColumnFilters }),\n ...(columnOrder &&\n Array.isArray(columnOrder) &&\n columnOrder.length > 0 && { columnOrder }),\n isLoading,\n showProgressBars: isRefetching,\n },\n\n // === Event Handlers ===\n onColumnVisibilityChange,\n ...(onShowColumnFiltersChange && { onShowColumnFiltersChange }),\n ...(onColumnOrderChange && { onColumnOrderChange }),\n\n // === استایل‌دهی ===\n columnResizeDirection: \"ltr\",\n muiTableBodyCellProps: {\n sx: {\n textAlign: \"center\",\n \"&:focus\": {\n outline: \"none\",\n },\n },\n },\n muiTableHeadCellProps: {\n sx: {\n \"&:focus\": {\n outline: \"none\",\n },\n \"& .Mui-TableHeadCell-Content\": {\n flexDirection: \"row-reverse\",\n justifyContent: \"center\",\n },\n },\n },\n muiTableContainerProps: {\n sx: {\n maxHeight,\n },\n },\n\n // === حالت اولیه ===\n initialState: {\n density,\n },\n\n // === قابلیت‌ها ===\n renderDetailPanel: renderDetailPanel\n ? ({ row, table }) => renderDetailPanel({ row, table })\n : undefined,\n\n // === تولبارهای سفارشی ===\n renderTopToolbarCustomActions:\n renderTopToolbarCustomActions || defaultRenderTopToolbarCustomActions,\n renderBottomToolbarCustomActions,\n // 🔧 اعمال تنظیمات اضافی\n ...tableOptions,\n });\n\n return <MaterialReactTable table={table} />;\n};\n\nexport default DataTable;\n","\"use client\";\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Grid from \"@mui/material/Grid2\";\nimport { GlobalStyles, useMediaQuery } from \"@mui/system\";\nimport moment from \"moment\";\nimport { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport Dateform from \"../date-picker\";\n\ninterface FormValues {\n time: string;\n}\n\nconst schema = yup.object().shape({\n time: yup.string().required(),\n});\n\nconst defaultValues: FormValues = {\n time: moment().toISOString(),\n};\n\ninterface DateFilterProps {\n setHandler?: (date: string) => void;\n}\n\nexport default function DateFilter({ setHandler }: DateFilterProps) {\n const isSmMobile = useMediaQuery(\"(max-width:600px)\");\n\n const { control, watch } = useForm<FormValues>({\n defaultValues,\n mode: \"onChange\",\n resolver: yupResolver(schema),\n });\n\n const currentDate = watch(\"time\");\n\n // Set initial date on mount\n useEffect(() => {\n if (setHandler) {\n setHandler(moment().toISOString());\n }\n }, [setHandler]);\n\n // Update parent when date changes\n useEffect(() => {\n if (setHandler) {\n setHandler(currentDate);\n }\n }, [currentDate, setHandler]);\n\n return (\n <>\n <GlobalStyles\n styles={{\n \".MuiBox-root.muirtl-1crki0u\": {\n marginLeft: 0,\n marginRight: 0,\n },\n }}\n />\n <Grid\n container\n spacing={2}\n justifyContent=\"center\"\n alignItems=\"center\"\n width=\"100%\"\n >\n <Grid container size={12} width=\"100%\">\n <Dateform\n name=\"time\"\n control={control}\n label=\"\"\n persian\n clear={false}\n align=\"center\"\n size={isSmMobile ? \"small\" : \"medium\"}\n />\n </Grid>\n </Grid>\n </>\n );\n}\n","import { Box, IconButton, Tooltip, Typography } from \"@mui/material\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\nimport { MdChevronLeft, MdChevronRight } from \"react-icons/md\";\n\nmoment.locale(\"fa\");\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n views?: (\"year\" | \"month\" | \"day\")[];\n variant?: \"outlined\" | \"standard\";\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n name,\n control,\n label,\n size = \"medium\",\n disabled = false,\n persian = false,\n align = \"center\",\n isLoading,\n maxDate,\n minDate,\n clear = true,\n views,\n variant = \"outlined\",\n}) => {\n const today = moment();\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => {\n const [open, setOpen] = useState(false);\n\n const handlePreviousDate = (e: React.MouseEvent) => {\n e.stopPropagation();\n const currentValue = field.value ? moment(field.value) : moment();\n const previousDate = currentValue.clone().subtract(1, \"day\");\n\n // Check if previousDate is within minDate boundary\n if (minDate && previousDate.isBefore(moment(minDate), \"day\")) {\n return;\n }\n\n const nowUTC = new Date();\n const iranHour = nowUTC.getUTCHours();\n const iranMinute = nowUTC.getUTCMinutes();\n const dateTimeWithIranTime = dayjs(previousDate.toDate())\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n field.onChange(dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\"));\n };\n\n const handleNextDate = (e: React.MouseEvent) => {\n e.stopPropagation();\n const currentValue = field.value ? moment(field.value) : moment();\n const nextDate = currentValue.clone().add(1, \"day\");\n\n // Check if nextDate is within maxDate boundary\n const maxDateValue = maxDate ? maxDate : today;\n if (nextDate.isAfter(moment(maxDateValue), \"day\")) {\n return;\n }\n\n const nowUTC = new Date();\n const iranHour = nowUTC.getUTCHours();\n const iranMinute = nowUTC.getUTCMinutes();\n const dateTimeWithIranTime = dayjs(nextDate.toDate())\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n field.onChange(dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\"));\n };\n return (\n <Box sx={{ width: \"100%\" }}>\n <DatePicker\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n disabled={isLoading || disabled}\n closeOnSelect={false}\n openTo=\"day\"\n views={views ?? [\"year\", \"month\", \"day\"]}\n label={variant === \"standard\" ? \"\" : label}\n value={field.value ? moment(field.value) : null}\n format={\n persian ? \"dddd - jDD/jMMMM/jYYYY\" : \"jYYYY/jMM/jDD\"\n }\n slotProps={{\n ...(clear && !disabled ? { field: { clearable: true } } : {}),\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n textField: {\n size: size,\n placeholder:\n field.value || isLoading ? \"\" : \"انتخاب تاریخ \",\n onClick: () => !disabled && !isLoading && setOpen(true),\n variant: variant,\n ...(variant === \"standard\" && { label: \"\" }),\n InputLabelProps: {\n shrink: true,\n style: {\n color: error ? \"#D32F2F\" : \"inherit\",\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n },\n inputProps: {\n readOnly: true,\n style: { cursor: \"pointer\" },\n value: field.value\n ? (() => {\n let formattedValue = persian\n ? moment(field.value).format(\n \"dddd - jDD/jMMMM/jYYYY\"\n )\n : moment(field.value).format(\"jYYYY/jMM/jDD\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه در فرمت فارسی\n if (persian) {\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n const parts = formattedValue.split(/(\\s+|-|\\/)/);\n for (let i = 0; i < parts.length; i++) {\n if (parts[i].startsWith(\"ا\")) {\n const withoutAlef = parts[i].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[i] = withoutAlef;\n }\n }\n }\n formattedValue = parts.join(\"\");\n }\n return formattedValue;\n })()\n : \"\",\n },\n InputProps: {\n startAdornment: !isLoading && !disabled && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"2px\",\n ...(variant === \"outlined\" &&\n clear &&\n field.value && { mr: 4.5 }),\n ...(variant === \"standard\" &&\n clear &&\n field.value && { mr: 4.5 }),\n }}\n >\n <Tooltip title=\"روز قبل\">\n <IconButton\n onClick={handlePreviousDate}\n disabled={isLoading || disabled}\n sx={{\n padding: \"2px\",\n }}\n >\n <MdChevronRight size={26} />\n </IconButton>\n </Tooltip>\n </Box>\n ),\n endAdornment: isLoading ? (\n <CircularProgress color=\"secondary\" size={20} />\n ) : disabled ? null : (\n <Box\n sx={{ display: \"flex\", alignItems: \"center\", ml: 1 }}\n >\n <Tooltip title=\"روز بعد\">\n <IconButton\n onClick={handleNextDate}\n disabled={isLoading || disabled}\n sx={{\n padding: \"2px\",\n }}\n >\n <MdChevronLeft size={26} />\n </IconButton>\n </Tooltip>\n </Box>\n ),\n sx: {\n textAlign: align,\n \"& input\": {\n textAlign: align,\n direction: \"rtl\",\n },\n },\n },\n },\n actionBar: {\n actions:\n clear && !disabled\n ? [\"clear\", \"cancel\", \"accept\"]\n : [\"cancel\", \"accept\"],\n },\n }}\n onChange={(value: any) => {\n if (value == null) {\n field.onChange(null);\n }\n }}\n onAccept={(newValue: any) => {\n if (newValue) {\n const currentDate = dayjs(newValue);\n const nowUTC = new Date();\n\n let iranHour = nowUTC.getUTCHours();\n let iranMinute = nowUTC.getUTCMinutes();\n\n const dateTimeWithIranTime = currentDate\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n\n field.onChange(\n dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\")\n );\n } else {\n field.onChange(null);\n }\n }}\n sx={{\n width: \"100%\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n \"& .MuiInputBase-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n // Fix for extra 'ا' in calendar header month name\n \"& .MuiPickersCalendarHeader-label\": {\n fontSize: \"1rem\",\n },\n }}\n slots={{\n ...(!clear && {\n clearButton: React.Fragment,\n clearIcon: React.Fragment,\n }),\n calendarHeader: (props) => {\n let labelText = props.currentMonth.format(\"jMMMM jYYYY\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n const parts = labelText.split(\" \");\n if (parts.length > 0 && parts[0].startsWith(\"ا\")) {\n const withoutAlef = parts[0].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n labelText = parts.join(\" \");\n }\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"8px 16px\",\n minHeight: \"40px\",\n }}\n >\n <IconButton\n onClick={() =>\n props.onMonthChange(\n props.currentMonth.clone().subtract(1, \"jmonth\"),\n \"left\"\n )\n }\n title=\"ماه قبل\"\n >\n <MdChevronRight />\n </IconButton>\n <Typography\n variant=\"body1\"\n onClick={\n props.onViewChange\n ? () => props.onViewChange?.(\"year\")\n : undefined\n }\n sx={{\n cursor: props.onViewChange ? \"pointer\" : \"default\",\n fontWeight: 500,\n }}\n >\n {labelText}\n </Typography>\n <IconButton\n onClick={() =>\n props.onMonthChange(\n props.currentMonth.clone().add(1, \"jmonth\"),\n \"right\"\n )\n }\n title=\"ماه بعد\"\n >\n <MdChevronLeft />\n </IconButton>\n </Box>\n );\n },\n toolbar: () => {\n const currentDate = moment(field.value);\n let formattedDate = currentDate.format(\"dddd, jDD jMMMM\");\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n if (formattedDate && formattedDate !== \"Invalid date\") {\n const parts = formattedDate.split(\" \");\n for (let i = 0; i < parts.length; i++) {\n if (parts[i].startsWith(\"ا\")) {\n const withoutAlef = parts[i].substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[i] = withoutAlef;\n }\n }\n }\n formattedDate = parts.join(\" \");\n }\n\n return (\n <Box\n sx={{\n my: 2,\n mx: 4,\n }}\n >\n <Typography variant=\"overline\" color=\"primary\">\n تاریخ را انتخاب کنید\n </Typography>\n <Typography variant=\"h4\">\n {formattedDate == \"Invalid date\" ? \"\" : formattedDate}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n // حذف حرف اضافه از ابتدای نام ماه\n const ariaLabel = props[\"aria-label\"] || \"\";\n let monthName = ariaLabel;\n\n // اگر نام ماه با 'ا' اضافی شروع شده باشد، آن را حذف کنیم\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی اینکه آیا با 'ا' اضافی شروع شده\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n monthName = withoutAlef;\n }\n }\n\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {monthName}\n </button>\n );\n },\n }}\n minDate={minDate ? minDate : null}\n maxDate={maxDate ? maxDate : today}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n );\n }}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","'use client'\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid2';\nimport { GlobalStyles, useMediaQuery } from '@mui/system';\nimport moment from 'moment';\nimport { useEffect } from 'react';\nimport { useForm } from \"react-hook-form\";\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\nimport * as yup from \"yup\";\nimport Dateform from '../date-picker'; // This import is not needed\n\nconst nowUTC = moment.utc(); // دریافت زمان فعلی در UTC\n\n// محاسبه زمان ایران با اعمال آفست 3 ساعت و 30 دقیقه\nconst dateTimeWithIranTime2 = nowUTC // کم کردن یک روز\nconst dateTimeWithIranTime = nowUTC // کم کردن یک روز\n\n// .add(3, \"hours\") // اضافه کردن 3 ساعت\n// .add(30, \"minutes\"); // اضافه کردن 30 دقیقه\n\n// تعریف مقادیر پیش‌فرض\nconst RoleFormSchema = yup.object().shape({});\nconst defaultValues = {\n time: dateTimeWithIranTime.toDate().toISOString(), // تبدیل به ISO بدون تغییر آفست\n time2: dateTimeWithIranTime2.toDate().toISOString(), // تبدیل به ISO بدون تغییر آفست\n};\n\n\nexport default function DateFilterRange({ FromDate, ToDate }: { FromDate: any, ToDate: any }) {\n const isMobile = useMediaQuery(\"(max-width:900px)\");\n const isSmMobile = useMediaQuery(\"(max-width:600px)\");\n const { control, watch, setValue } = useForm<any>({\n defaultValues,\n mode: \"onChange\",\n resolver: yupResolver(RoleFormSchema),\n });\n useEffect(() => {\n FromDate(nowUTC) //ست کردن تاریخ امروز در کامپوننت پرنت فقط یکبار \n ToDate(nowUTC) //ست کردن تاریخ امروز در کامپوننت پرنت فقط یکبار \n }, [])\n const currentDate = watch('time');\n const currentDate2 = watch('time2');\n\n useEffect(() => {\n FromDate(currentDate)\n ToDate(currentDate2)\n\n }, [currentDate,currentDate2])\n\n\n const handleDate = (direction: 'forward' | 'backward', time: \"time\" | \"time2\") => {\n const currentDate = watch(time);\n const newDate = moment(currentDate);\n\n if (direction === 'forward') {\n newDate.add(1, 'day'); //اضافه کردن تاریخ\n } else if (direction === 'backward') {\n newDate.subtract(1, 'day'); //کم کردن تاریخ\n }\n\n setValue(time, newDate.toISOString()); //ست کردن تاریخ در react hook form\n // setHandler && setHandler(newDate.toISOString()) //ست کردن تاریخ در استیت پرنت\n };\n const isNextDisabledTime = moment(watch('time')).format(\"YYYY-MM-DD\") == moment(watch('time2')).format(\"YYYY-MM-DD\")\n const isLastDisabledTime = moment(watch('time')).format(\"YYYY-MM-DD\") == moment(watch('time2')).format(\"YYYY-MM-DD\")\n // بررسی وضعیت دکمه\n const today = moment().format(\"YYYY-MM-DD\"); // تبدیل تاریخ امروز به رشته\n const isNextDisabled = moment(watch('time')).format(\"YYYY-MM-DD\") >= today; // مقایسه تاریخ انتخاب‌شده با امروز\n const isNextDisabledTime2 = moment(watch('time2')).format(\"YYYY-MM-DD\") >= today; // مقایسه تاریخ انتخاب‌شده با امروز\n\n return (\n <>\n <GlobalStyles styles={{\n //حذف مارجین های اضافی سمت راست و چپ\n '.MuiBox-root.muirtl-1crki0u': {\n marginLeft: 0,\n marginRight: 0,\n }\n }} />\n <Grid container spacing={2} justifyContent={\"center\"} alignItems={\"center\"} paddingTop={3} width={\"100%\"}>\n <Grid container size={12} width={!isMobile ? \"50%\" : \"100%\"} alignItems={\"center\"} justifyContent={\"space-between\"}>\n {/* دکمه برای حرکت به جلو */}\n <Grid size={2} justifyContent={\"start\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('forward', \"time\")}\n disabled={isNextDisabled || isNextDisabledTime} // شرط برای غیرفعال کردن دکمه\n >\n <FaChevronRight size={30} />\n </Button>\n </Grid>\n\n {/* فرم تاریخ */}\n <Grid size={{ xs: 7, sm: 8, md: 8, lg: 6 }}>\n <Dateform name='time' control={control} label='تاریخ از' maxDate={moment(watch('time2'))} align='center' persian={true} clear={false} size={isSmMobile ? \"small\" : \"medium\"} />\n </Grid>\n\n {/* دکمه برای حرکت به عقب */}\n <Grid size={2} display={\"flex\"} justifyContent={\"end\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('backward', \"time\")}>\n <FaChevronLeft size={30} />\n </Button>\n </Grid>\n </Grid>\n <Grid container size={12} width={!isMobile ? \"50%\" : \"100%\"} alignItems={\"center\"} justifyContent={\"space-between\"}>\n {/* دکمه برای حرکت به جلو */}\n <Grid size={2} justifyContent={\"start\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('forward', \"time2\")}\n disabled={isNextDisabledTime2} // شرط برای غیرفعال کردن دکمه\n >\n <FaChevronRight size={30} />\n </Button>\n </Grid>\n\n {/* فرم تاریخ */}\n <Grid size={{ xs: 7, sm: 8, md: 8, lg: 6 }}>\n <Dateform name='time2' control={control} label='تاریخ تا' minDate={moment(watch('time'))} persian={true} align='center' clear={false} size={isSmMobile ? \"small\" : \"medium\"} />\n </Grid>\n\n {/* دکمه برای حرکت به عقب */}\n <Grid size={2} display={\"flex\"} justifyContent={\"end\"}>\n <Button\n sx={{\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"center\",\n padding: 0\n }}\n onClick={() => handleDate('backward', \"time2\")}\n disabled={isLastDisabledTime}\n >\n <FaChevronLeft size={30} />\n </Button>\n </Grid>\n </Grid>\n </Grid>\n <Grid container size={12}>\n <Grid size={12}>\n </Grid>\n </Grid>\n </>\n );\n}\n","import { Box, Typography } from \"@mui/material\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\ninterface DateMonthPickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n}\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n maxDate?: any;\n minDate?: any;\n clear?: boolean;\n views?: (\"year\" | \"month\" | \"day\")[];\n}\n\nconst DateMonthPicker: React.FC<DateMonthPickerProps> = ({\n name,\n control,\n label,\n size = \"medium\",\n disabled = false,\n align = \"left\",\n isLoading,\n maxDate,\n minDate,\n clear = true,\n}) => {\n const today = moment(); // تاریخ امروز\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n selectDate: \"انتخاب ماه و سال\",\n datePickerToolbarTitle: \"انتخاب ماه و سال\",\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <DatePicker\n disabled={isLoading || disabled}\n closeOnSelect={true}\n openTo=\"month\"\n views={[\"year\", \"month\"]}\n label={label}\n value={field.value ? moment(field.value) : null}\n format=\"jMMMM jYYYY\"\n slotProps={{\n ...(clear && !disabled ? { field: { clearable: true } } : {}),\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n textField: {\n size: size,\n placeholder: field.value ? \"\" : \"انتخاب ماه و سال\",\n InputLabelProps: {\n shrink: true,\n style: { color: error ? \"#D32F2F\" : \"inherit\" },\n },\n InputProps: {\n ...((isLoading && {\n endAdornment: (\n <CircularProgress color=\"secondary\" size={20} />\n ),\n }) ||\n (disabled && { endAdornment: false })),\n sx: {\n textAlign: align,\n \"& input\": {\n textAlign: align,\n direction: \"rtl\",\n },\n },\n },\n inputProps: {\n value: field.value\n ? (() => {\n let formattedValue = moment(field.value).format(\n \"jMMMM jYYYY\"\n );\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n const parts = formattedValue.split(\" \");\n if (parts.length > 0) {\n let monthName = parts[0];\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n formattedValue = parts.join(\" \");\n }\n }\n }\n return formattedValue;\n })()\n : \"\",\n },\n },\n actionBar: {\n actions:\n clear && !disabled\n ? [\"clear\", \"cancel\", \"accept\"]\n : [\"cancel\", \"accept\"], // نمایش دکمه‌های تأیید، لغو و پاک کردن\n },\n }}\n onChange={(value: any) => {\n if (value == null) {\n field.onChange(null);\n }\n }}\n onAccept={(newValue: any) => {\n if (newValue) {\n const currentDate = dayjs(newValue);\n const nowUTC = new Date();\n\n // محاسبه ساعت و دقیقه ایران\n let iranHour = nowUTC.getUTCHours();\n let iranMinute = nowUTC.getUTCMinutes();\n\n const dateTimeWithIranTime = currentDate\n .hour(iranHour)\n .minute(iranMinute)\n .second(nowUTC.getUTCSeconds());\n\n field.onChange(\n dateTimeWithIranTime.format(\"YYYY-MM-DDTHH:mm:ss\")\n );\n } else {\n field.onChange(null);\n }\n }}\n sx={{\n width: \"100%\",\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiInputBase-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n }}\n slots={{\n ...(!clear && {\n clearButton: React.Fragment,\n clearIcon: React.Fragment,\n }),\n toolbar: (props) => {\n const currentDate = moment(field.value); // تاریخ فعلی از props.value گرفته می‌شود\n let formattedDate = currentDate.format(\"jMMMM jYYYY\"); // فرمت تاریخ فقط ماه و سال\n\n // حذف حرف 'ا' اضافی از ابتدای نام ماه\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی و اصلاح نام ماه\n if (formattedDate && formattedDate !== \"Invalid date\") {\n const parts = formattedDate.split(\" \");\n if (parts.length > 0) {\n let monthName = parts[0];\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n parts[0] = withoutAlef;\n formattedDate = parts.join(\" \");\n }\n }\n }\n }\n\n return (\n <Box\n sx={{\n my: 2,\n mx: 4,\n }}\n >\n <Typography variant=\"overline\" color=\"primary\">\n ماه و سال را انتخاب کنید\n </Typography>\n <Typography variant=\"h4\">\n {formattedDate == \"Invalid date\" ? \"\" : formattedDate}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n // حذف حرف اضافه از ابتدای نام ماه\n const ariaLabel = props[\"aria-label\"] || \"\";\n let monthName = ariaLabel;\n\n // اگر نام ماه با 'ا' اضافی شروع شده باشد، آن را حذف کنیم\n const persianMonths = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n\n // بررسی اینکه آیا با 'ا' اضافی شروع شده\n if (monthName.startsWith(\"ا\")) {\n const withoutAlef = monthName.substring(1);\n if (persianMonths.includes(withoutAlef)) {\n monthName = withoutAlef;\n }\n }\n\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {monthName} {/* نمایش ماه به صورت کامل */}\n </button>\n );\n },\n }}\n minDate={minDate ? minDate : null}\n maxDate={maxDate ? maxDate : today}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default DateMonthPicker;\n","import { Typography } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Box } from \"@mui/system\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n readOnly?: boolean;\n isLoading?: boolean;\n minDateTime?: Moment; // Optional minimum date and time\n centeredTime?: boolean;\n variant?: \"outlined\" | \"standard\";\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n size = \"medium\",\n name,\n control,\n label,\n isLoading,\n disabled,\n minDateTime, // Add the new optional prop\n centeredTime = false,\n variant = \"outlined\",\n}) => {\n const today = moment();\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n const [open, setOpen] = useState(false);\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <DateTimePicker\n open={open}\n onClose={() => {\n setOpen(false);\n field.onBlur();\n }}\n onOpen={() => setOpen(true)}\n orientation={isMobile ? \"portrait\" : \"landscape\"}\n disabled={isLoading || disabled}\n openTo=\"day\"\n views={[\"year\", \"month\", \"day\", \"hours\", \"minutes\"]}\n label={variant === \"standard\" ? \"\" : label}\n value={\n field.value ? moment.utc(field.value).utcOffset(210) : null\n }\n onChange={(newValue: any) => {\n if (newValue) {\n field.onChange(\n moment(newValue)\n .utc()\n .locale(\"en\")\n .format(\"YYYY-MM-DDTHH:mm:ss[Z]\")\n );\n } else {\n field.onChange(null);\n }\n }}\n onAccept={() => {\n setOpen(false);\n field.onBlur();\n }}\n onError={() => {\n setOpen(false);\n field.onBlur();\n }}\n format={`jDD jMMMM jYYYY ${\" \"} - ${\" \"} HH:mm`}\n minDateTime={minDateTime}\n timeSteps={{ minutes: 1 }}\n slots={{\n toolbar: (props) => {\n const currentDate = moment\n .utc(field.value || today)\n .utcOffset(210); // Use today if no value\n let formattedDay, formattedDate, formattedYear, formattedTime;\n\n if (field.value) {\n formattedDay = currentDate.format(\"dddd\");\n formattedDate = currentDate.format(\"jDD jMMMM\");\n formattedYear = currentDate.format(\"jYYYY\");\n formattedTime = currentDate.format(\"HH:mm\");\n } else {\n (formattedDay = \"تاریخ و زمان انتخاب نشده است\"),\n (formattedDate = \"\"),\n (formattedYear = \"\"),\n (formattedTime = \"\");\n }\n\n return (\n <Box\n sx={{\n padding: \"16px\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Typography\n fontSize={16}\n variant=\"overline\"\n color=\"primary\"\n >\n {`${formattedDay}،`}\n </Typography>\n <Typography\n variant=\"h4\"\n fontSize={26}\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedDate}`}\n </Typography>\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {`${formattedYear}`}\n </Typography>\n {field.value && <Typography>{\"-\"}</Typography>}\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedTime}`}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]} {/* نمایش ماه به صورت کامل */}\n </button>\n );\n },\n }}\n sx={{\n width: \"100%\",\n ...(variant === \"outlined\" && {\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: error ? \"#D32F2F\" : \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n ...(variant === \"standard\" && {\n \"& .MuiInput-underline:before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.42)\",\n },\n \"& .MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottomColor: error\n ? \"#D32F2F\"\n : \"rgba(0, 0, 0, 0.87)\",\n },\n \"& .MuiInput-underline:after\": {\n borderBottomColor: error ? \"#D32F2F\" : \"#085938\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n }),\n }}\n maxDate={today}\n slotProps={{\n mobilePaper: {\n sx: {\n \"& .MuiClock-root\": {\n backgroundColor: \"transparent\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n \"& .MuiClock-clock\": {\n mt: 4,\n pt: 0.5,\n width: 230,\n height: 230,\n backgroundColor: \"rgba(0, 0, 0, 0.03)\",\n borderRadius: \"50%\",\n border: \"4px solid rgba(0, 0, 0, 0.04)\",\n },\n \"& .MuiClock-pin\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockPointer-root, & .MuiClockPointer-thumb\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockNumber-root\": {\n color: \"#000\",\n fontSize: \"16px\",\n },\n \"&.Mui-selected, &.Mui-focusVisible\": {\n color: \"#FFF\",\n },\n },\n },\n textField: {\n size: size,\n placeholder: \"\",\n variant: variant,\n onClick: () => {\n if (!open) setOpen(true);\n },\n InputLabelProps: {\n shrink: true,\n style: {\n color: error ? \"#D32F2F\" : \"inherit\",\n ...(variant === \"standard\" && { display: \"none\" }),\n },\n },\n InputProps: {\n ...(disabled && { endAdornment: false }),\n sx: {\n textAlign: centeredTime ? \"center\" : \"left\", // Center or left align\n \"& input\": {\n textAlign: centeredTime ? \"center\" : \"left\", // Ensure input text is centered\n },\n },\n },\n },\n popper: {\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"window\",\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"right\", \"left\", \"top\"],\n },\n },\n ],\n },\n }}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","import DateTimeForm from \"../date-time-picker\";\nimport { Box, Typography } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useEffect, useState } from \"react\";\nimport { Control, useWatch } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDateTimeRangePickerProps {\n control: Control<any>;\n startName: string;\n endName: string;\n startLabel: string;\n endLabel: string;\n disabled?: boolean;\n isLoading?: boolean;\n}\n\nconst JalaliDateTimeRangePicker: React.FC<JalaliDateTimeRangePickerProps> = ({\n control,\n startName,\n endName,\n startLabel,\n endLabel,\n disabled = false,\n isLoading = false,\n}) => {\n const startDate: Moment | null = useWatch({ control, name: startName });\n\n const validStartDate = startDate ? moment(startDate) : null;\n\n const defaultStartDate = moment().add(3.5, \"hours\").toDate();\n\n const [isStartDateChanged, setIsStartDateChanged] = useState(false);\n\n useEffect(() => {\n if (validStartDate && !validStartDate.isSame(defaultStartDate, \"minute\")) {\n setIsStartDateChanged(true);\n } else if (\n validStartDate &&\n validStartDate.isSame(defaultStartDate, \"minute\")\n ) {\n setIsStartDateChanged(false);\n }\n }, [validStartDate, defaultStartDate]);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMomentJalaali}>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: 1,\n }}\n >\n {/* Start DateTime Picker */}\n <DateTimeForm\n control={control}\n name={startName}\n label={startLabel}\n disabled={disabled || isLoading}\n />\n\n {/* Separator */}\n <Typography variant=\"h6\">-</Typography>\n\n {/* End DateTime Picker */}\n <DateTimeForm\n control={control}\n name={endName}\n label={endLabel}\n disabled={disabled || isLoading}\n minDateTime={isStartDateChanged ? moment(startDate) : undefined}\n />\n </Box>\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDateTimeRangePicker;\n","import { Delete } from \"@mamrp/icons\";\nimport theme from \"@mamrp/layout/theme\";\nimport {\n alpha,\n Box,\n Button,\n Fade,\n IconButton,\n Stack,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Image from \"next/image\";\nimport React, { useState } from \"react\";\nimport {\n Control,\n Controller,\n FieldErrors,\n FieldValues,\n Path,\n UseFormSetValue,\n} from \"react-hook-form\";\nimport { GrGallery } from \"react-icons/gr\";\nimport { MdAddPhotoAlternate, MdOutlineCameraAlt } from \"react-icons/md\";\nimport ImageViewer from \"./ImageViewer\";\nimport heic2any from \"heic2any\";\n\nconst isHeic = (file: File) =>\n file.type === \"image/heic\" ||\n file.type === \"image/heif\" ||\n file.name.toLowerCase().endsWith(\".heic\") ||\n file.name.toLowerCase().endsWith(\".heif\");\n\nconst convertHeicToJpeg = async (file: File): Promise<File> => {\n const convertedBlob = (await heic2any({\n blob: file,\n toType: \"image/jpeg\",\n quality: 0.9,\n })) as Blob;\n\n return new File(\n [convertedBlob],\n file.name.replace(/\\.(heic|heif)$/i, \".jpg\"),\n {\n type: \"image/jpeg\",\n lastModified: Date.now(),\n }\n );\n};\n\ntype UploadImageProps<T extends FieldValues> = {\n placeholder: string;\n name: Path<T>;\n selectedImage: string | null;\n setSelectedImage: React.Dispatch<React.SetStateAction<string | null>>;\n control: Control<T>;\n errors: FieldErrors<T>;\n setValue: UseFormSetValue<T>;\n height?: string;\n allowGallery?: boolean;\n imageFit?: \"contain\" | \"cover\";\n};\n\nconst UploadImage = <T extends FieldValues>({\n placeholder,\n name,\n selectedImage,\n setSelectedImage,\n control,\n errors,\n setValue,\n height = \"280px\",\n allowGallery = false,\n imageFit = \"cover\",\n}: UploadImageProps<T>) => {\n // const theme = useTheme();\n\n const [viewerOpen, setViewerOpen] = useState(false);\n const [viewerSrc, setViewerSrc] = useState<string>(\"\");\n\n // Compress image before uploading\n const compressImage = (\n file: File,\n quality = 0.9, // کیفیت بالاتر\n maxWidth = 1600, // سایز بزرگتر\n maxHeight = 1600\n ): Promise<File | null> => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n const img = new window.Image();\n img.src = event.target?.result as string;\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n let width = img.width;\n let height = img.height;\n\n if (width > maxWidth) {\n height *= maxWidth / width;\n width = maxWidth;\n }\n if (height > maxHeight) {\n width *= maxHeight / height;\n height = maxHeight;\n }\n\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(img, 0, 0, width, height);\n canvas.toBlob(\n (blob) => {\n if (blob) {\n const compressedFile = new File([blob], file.name, {\n type: \"image/jpeg\",\n lastModified: Date.now(),\n });\n resolve(compressedFile);\n } else {\n resolve(null);\n }\n },\n \"image/jpeg\",\n quality\n );\n } else {\n resolve(null);\n }\n };\n };\n });\n };\n\n // Handle file input\n const handleImageChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n let file = event.target.files?.[0];\n if (!file) return;\n\n // ✅ convert HEIC first\n if (isHeic(file)) {\n try {\n file = await convertHeicToJpeg(file);\n } catch (e) {\n return;\n }\n }\n\n // ✅ then compress\n const compressedFile = await compressImage(file);\n if (!compressedFile) return;\n\n const objectURL = URL.createObjectURL(compressedFile);\n setSelectedImage(objectURL);\n\n // ✅ this goes to backend (JPG)\n setValue(name, compressedFile as unknown as T[typeof name]);\n };\n\n // Remove selected image\n const handleRemoveImage = () => {\n setSelectedImage(null);\n setValue(name, null as unknown as T[typeof name]);\n\n const galleryInput = document.getElementById(\n \"gallery-upload\"\n ) as HTMLInputElement;\n const cameraInput = document.getElementById(\n \"camera-upload\"\n ) as HTMLInputElement;\n const fileInput = document.getElementById(\n \"file-upload\"\n ) as HTMLInputElement;\n\n if (galleryInput) galleryInput.value = \"\";\n if (cameraInput) cameraInput.value = \"\";\n if (fileInput) fileInput.value = \"\";\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Box sx={{ width: \"100%\" }}>\n {/* Main Box */}\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height,\n borderRadius: 3,\n overflow: \"hidden\",\n backgroundColor: selectedImage\n ? \"transparent\"\n : alpha(theme.palette.primary.main, 0.02),\n border: selectedImage\n ? `2px solid ${alpha(theme.palette.primary.main, 0.1)}`\n : `2px dashed ${alpha(theme.palette.primary.main, 0.2)}`,\n transition: \"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n cursor: allowGallery ? \"default\" : \"pointer\",\n \"&:hover\": {\n borderColor: selectedImage\n ? alpha(theme.palette.primary.main, 0.3)\n : alpha(theme.palette.primary.main, 0.4),\n backgroundColor: selectedImage\n ? \"transparent\"\n : alpha(theme.palette.primary.main, 0.04),\n },\n }}\n >\n {selectedImage ? (\n <>\n {/* Image Preview */}\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height,\n borderRadius: 3,\n overflow: \"hidden\",\n }}\n >\n {/* Delete Button */}\n <Fade in={!!selectedImage} timeout={400}>\n <Tooltip title=\"حذف\">\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (selectedImage) URL.revokeObjectURL(selectedImage);\n handleRemoveImage();\n }}\n sx={{\n position: \"absolute\",\n top: 12,\n right: 12,\n zIndex: 10,\n backgroundColor: alpha(theme.palette.error.main, 0.9),\n color: \"#fff\",\n width: 44,\n height: 44,\n border: \"2px solid white\",\n boxShadow: `0 4px 10px ${alpha(\n theme.palette.error.main,\n 0.35\n )}`,\n transition: \"all 0.25s ease\",\n \"&:hover\": {\n backgroundColor: theme.palette.error.main,\n transform: \"scale(1.12)\",\n boxShadow: `0 6px 16px ${alpha(\n theme.palette.error.main,\n 0.45\n )}`,\n },\n }}\n >\n <Delete size={20} />\n </IconButton>\n </Tooltip>\n </Fade>\n <Image\n src={selectedImage}\n alt=\"Preview\"\n fill\n sizes=\"100vw\"\n style={{\n objectFit: \"cover\", // پر کردن کامل بدون کشیدگی\n objectPosition: \"center\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n setViewerSrc(selectedImage);\n setViewerOpen(true);\n }}\n />\n </Box>\n </>\n ) : (\n <Stack\n spacing={3}\n sx={{\n height: \"100%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n p: 3,\n }}\n >\n {/* Upload Placeholder */}\n <Stack spacing={2} alignItems=\"center\">\n <Box\n sx={{\n width: 64,\n height: 64,\n borderRadius: \"50%\",\n backgroundColor: alpha(\n theme.palette.successLight.main,\n 0.1\n ),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.3s ease\",\n }}\n >\n <MdAddPhotoAlternate\n size={32}\n color={theme.palette.successLight.main}\n style={{ opacity: 0.8 }}\n />\n </Box>\n\n <Typography\n variant=\"h6\"\n sx={{\n color: theme.palette.text.primary,\n fontWeight: 500,\n textAlign: \"center\",\n mb: 1,\n }}\n >\n {placeholder}\n </Typography>\n\n <Typography\n variant=\"body2\"\n sx={{\n color: theme.palette.text.secondary,\n textAlign: \"center\",\n fontSize: \"0.875rem\",\n }}\n >\n PNG, JPG یا WEBP پشتیبانی می‌شود\n </Typography>\n </Stack>\n\n {/* Gallery/Camera buttons */}\n {allowGallery && (\n <Stack direction=\"row\" spacing={2}>\n <Button\n variant=\"contained\"\n startIcon={<MdOutlineCameraAlt size={16} />}\n onClick={(e) => {\n e.preventDefault();\n document.getElementById(\"camera-upload\")?.click();\n }}\n sx={{\n borderRadius: 2,\n px: 2.5,\n textTransform: \"none\",\n fontWeight: 600,\n boxShadow: `0 4px 12px ${alpha(\n theme.palette.successLight.main,\n 0.3\n )}`,\n zIndex: 1,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n boxShadow: `0 6px 20px ${alpha(\n theme.palette.successLight.main,\n 0.4\n )}`,\n transform: \"translateY(-1px)\",\n },\n }}\n color=\"success\"\n >\n دوربین\n </Button>\n\n <Button\n variant=\"outlined\"\n startIcon={<GrGallery size={16} />}\n onClick={(e) => {\n e.preventDefault();\n document.getElementById(\"gallery-upload\")?.click();\n }}\n sx={{\n borderRadius: 2,\n px: 2.5,\n textTransform: \"none\",\n fontWeight: 600,\n borderWidth: 2,\n transition: \"all 0.2s ease\",\n \"&:hover\": {\n boxShadow: `0 6px 20px ${alpha(\n theme.palette.successLight.main,\n 0.4\n )}`,\n transform: \"translateY(-1px)\",\n },\n }}\n color=\"success\"\n >\n گالری\n </Button>\n </Stack>\n )}\n </Stack>\n )}\n </Box>\n\n {/* Hidden Inputs */}\n {!allowGallery && (\n <input\n id=\"file-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n )}\n\n <input\n id=\"gallery-upload\"\n type=\"file\"\n accept=\"image/*\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n <input\n id=\"camera-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n onChange={(event) => {\n handleImageChange(event);\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n {/* Error */}\n {errors[name] && (\n <Fade in={true}>\n <Box\n sx={{\n mt: 1.5,\n p: 1.5,\n borderRadius: 1,\n backgroundColor: alpha(theme.palette.error.main, 0.05),\n border: `1px solid ${alpha(theme.palette.error.main, 0.2)}`,\n }}\n >\n <Typography\n color=\"error\"\n variant=\"body2\"\n sx={{\n fontWeight: 500,\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n {String(errors[name]?.message || \"\")}\n </Typography>\n </Box>\n </Fade>\n )}\n\n <ImageViewer\n open={viewerOpen}\n handleClose={() => setViewerOpen(false)}\n src={viewerSrc}\n isLoading={false}\n />\n </Box>\n )}\n />\n );\n};\n\nexport default UploadImage;\n","import {\n Box,\n CircularProgress,\n Dialog,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport Image from \"next/image\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport {\n MdClose,\n MdRotateLeft,\n MdRotateRight,\n MdZoomIn,\n MdZoomOut,\n} from \"react-icons/md\";\n\nexport default function ImageViewer({\n open,\n handleClose,\n src,\n isLoading,\n title = \"\",\n noResetBtn = false,\n noRotate = false,\n noZoom = false,\n}: {\n open: boolean;\n handleClose: () => void;\n isLoading: boolean;\n src: string | undefined;\n title?: string;\n\n noResetBtn?: boolean;\n noRotate?: boolean;\n noZoom?: boolean;\n}) {\n const [zoom, setZoom] = useState(1);\n const [rotate, setRotate] = useState(0);\n const [loading, setLoading] = useState(true);\n\n const [viewerOpen, setViewerOpen] = useState(false);\n const [viewerSrc, setViewerSrc] = useState<string>(\"\");\n\n // مختصات درگ\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [dragging, setDragging] = useState(false);\n const [startMouse, setStartMouse] = useState({ x: 0, y: 0 });\n const [startOffset, setStartOffset] = useState({ x: 0, y: 0 });\n\n const reset = () => {\n setZoom(1);\n setRotate(0);\n setPosition({ x: 0, y: 0 });\n };\n\n // Handle mouse wheel for zoom\n const handleWheel = useCallback((e: React.WheelEvent<HTMLDivElement>) => {\n e.preventDefault();\n const delta = -e.deltaY * 0.001; // adjust sensitivity as needed\n setZoom((z) => Math.min(5, Math.max(0.2, z + delta)));\n }, []);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n setDragging(true);\n setStartMouse({ x: e.clientX, y: e.clientY });\n setStartOffset({ ...position });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragging) return;\n const dx = e.clientX - startMouse.x;\n const dy = e.clientY - startMouse.y;\n setPosition({\n x: startOffset.x - dx,\n y: startOffset.y + dy,\n });\n };\n\n const handleMouseUp = () => setDragging(false);\n\n useEffect(() => {\n if (dragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [dragging, startMouse, startOffset]);\n\n useEffect(() => {\n if (open) reset();\n }, [open]);\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xl\"\n fullWidth\n sx={{\n \"& .MuiPaper-root\": {\n borderRadius: 3,\n backgroundColor: \"transparent\",\n },\n }}\n >\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"90vh\",\n bgcolor: \"rgba(17,17,17,0.9)\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n onWheel={handleWheel}\n >\n {/* Toolbar */}\n <Box\n sx={{\n position: \"absolute\",\n top: 10,\n left: 10,\n zIndex: 20,\n display: \"flex\",\n gap: 1,\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={handleClose}>\n <MdClose color=\"white\" />\n </IconButton>\n {!noResetBtn && (\n <IconButton onClick={reset}>\n <span style={{ color: \"white\", fontSize: \"0.9rem\" }}>\n بازنشانی\n </span>\n </IconButton>\n )}\n {!noRotate && (\n <>\n <IconButton onClick={() => setRotate((r) => r - 90)}>\n <MdRotateLeft color=\"white\" />\n </IconButton>\n <IconButton onClick={() => setRotate((r) => r + 90)}>\n <MdRotateRight color=\"white\" />\n </IconButton>\n </>\n )}\n {!noZoom && (\n <>\n <IconButton onClick={() => setZoom((z) => z + 0.2)}>\n <MdZoomIn color=\"white\" />\n </IconButton>\n <IconButton\n onClick={() => setZoom((z) => Math.max(0.2, z - 0.2))}\n >\n <MdZoomOut color=\"white\" />\n </IconButton>\n </>\n )}\n\n <Typography color=\"white\">{title}</Typography>\n </Box>\n\n {/* Loading */}\n {(isLoading || loading) && (\n <Box\n sx={{\n position: \"absolute\",\n zIndex: 10,\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"white\",\n }}\n >\n <CircularProgress color=\"inherit\" />\n </Box>\n )}\n\n {/* تصویر */}\n <Box\n onMouseDown={handleMouseDown}\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"78vh\",\n cursor: dragging ? \"grabbing\" : \"grab\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflow: \"hidden\",\n }}\n >\n {src && !isLoading && (\n <Image\n src={src}\n alt={title}\n fill\n style={{\n objectFit: \"contain\",\n transform: `translate(${position.x}px, ${position.y}px) scale(${zoom}) rotate(${rotate}deg)`,\n transition: dragging ? \"none\" : \"transform 0.3s ease\",\n }}\n onLoadingComplete={() => setLoading(false)}\n />\n )}\n </Box>\n </Box>\n <ImageViewer\n open={viewerOpen}\n handleClose={() => setViewerOpen(false)}\n src={src || \"\"}\n isLoading={false}\n />\n </Dialog>\n );\n}\n","import {\n Dialog,\n IconButton,\n CircularProgress,\n Box,\n Typography,\n} from \"@mui/material\";\nimport {\n MdZoomIn,\n MdZoomOut,\n MdRotateLeft,\n MdRotateRight,\n MdClose,\n MdDownload,\n} from \"react-icons/md\";\nimport Image from \"next/image\";\nimport { useEffect, useState, useCallback } from \"react\";\n\nexport default function imgViewer({\n open,\n handleClose,\n src,\n isLoading,\n title = \"\",\n noResetBtn = false,\n noRotate = false,\n noZoom = false,\n unoptimized = false,\n}: {\n open: boolean;\n handleClose: () => void;\n isLoading: boolean;\n src: string | undefined;\n title?: string;\n unoptimized?: boolean;\n noResetBtn?: boolean;\n noRotate?: boolean;\n noZoom?: boolean;\n}) {\n const [zoom, setZoom] = useState(1);\n const [rotate, setRotate] = useState(0);\n const [loading, setLoading] = useState(true);\n\n // مختصات درگ\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [dragging, setDragging] = useState(false);\n const [startMouse, setStartMouse] = useState({ x: 0, y: 0 });\n const [startOffset, setStartOffset] = useState({ x: 0, y: 0 });\n\n const reset = () => {\n setZoom(1);\n setRotate(0);\n setPosition({ x: 0, y: 0 });\n };\n\n // Handle mouse wheel for zoom\n const handleWheel = useCallback((e: React.WheelEvent<HTMLDivElement>) => {\n e.preventDefault();\n const delta = -e.deltaY * 0.001; // adjust sensitivity as needed\n setZoom((z) => Math.min(5, Math.max(0.2, z + delta)));\n }, []);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n setDragging(true);\n setStartMouse({ x: e.clientX, y: e.clientY });\n setStartOffset({ ...position });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!dragging) return;\n const dx = e.clientX - startMouse.x;\n const dy = e.clientY - startMouse.y;\n setPosition({\n x: startOffset.x - dx,\n y: startOffset.y + dy,\n });\n };\n\n const handleMouseUp = () => setDragging(false);\n\n useEffect(() => {\n if (dragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [dragging, startMouse, startOffset]);\n\n useEffect(() => {\n if (open) reset();\n }, [open]);\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"xl\"\n fullWidth\n sx={{\n \"& .MuiPaper-root\": {\n borderRadius: 3,\n backgroundColor: \"transparent\",\n },\n }}\n >\n <Box\n sx={{\n position: \"relative\",\n width: \"100%\",\n height: \"90vh\",\n bgcolor: \"rgba(17,17,17,0.9)\",\n overflow: \"hidden\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n onWheel={handleWheel}\n >\n {/* Toolbar */}\n <Box\n sx={{\n position: \"absolute\",\n top: 10,\n left: 10,\n zIndex: 20,\n display: \"flex\",\n gap: 1,\n alignItems: \"center\",\n }}\n >\n <IconButton onClick={handleClose}>\n <MdClose color=\"white\" />\n </IconButton>\n {!noResetBtn && (\n <IconButton onClick={reset}>\n <span style={{ color: \"white\", fontSize: \"0.9rem\" }}>\n بازنشانی\n </span>\n </IconButton>\n )}\n {!noRotate && (\n <>\n <IconButton onClick={() => setRotate((r) => r - 90)}>\n <MdRotateLeft color=\"white\" />\n </IconButton>\n <IconButton onClick={() => setRotate((r) => r + 90)}>\n <MdRotateRight color=\"white\" />\n </IconButton>\n </>\n )}\n {!noZoom && (\n <>\n <IconButton onClick={() => setZoom((z) => z + 0.2)}>\n <MdZoomIn color=\"white\" />\n </IconButton>\n <IconButton\n onClick={() => setZoom((z) => Math.max(0.2, z - 0.2))}\n >\n <MdZoomOut color=\"white\" />\n </IconButton>\n </>\n )}\n\n <Typography color=\"white\">{title}</Typography>\n </Box>\n\n {/* Loading */}\n {(isLoading || loading) && (\n <Box\n sx={{\n position: \"absolute\",\n zIndex: 10,\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n color: \"white\",\n }}\n >\n <CircularProgress color=\"inherit\" />\n </Box>\n )}\n\n {/* تصویر */}\n <Box\n onMouseDown={handleMouseDown}\n sx={{\n position: \"relative\",\n cursor: dragging ? \"grabbing\" : \"grab\",\n transform: `translate(${position.x}px, ${position.y}px) scale(${zoom}) rotate(${rotate}deg)`,\n transition: dragging ? \"none\" : \"transform 0.3s ease\",\n zIndex: 5,\n }}\n >\n {src && !isLoading && (\n <Image\n src={src}\n alt={title}\n width={1000}\n height={800}\n onLoad={() => setLoading(false)}\n onError={() => setLoading(false)}\n style={{\n objectFit: \"contain\",\n userSelect: \"none\",\n pointerEvents: \"none\",\n }}\n unoptimized={unoptimized}\n {...(unoptimized\n ? { loader: ({ src }) => src }\n : { loader: undefined })}\n />\n )}\n </Box>\n </Box>\n </Dialog>\n );\n}\n","import letters from \"../constants/letters\";\nimport { convertToEnglishDigits, convertToPersianDigits } from \"@mamrp/utils\";\nimport { Box, IconButton, Typography, useTheme } from \"@mui/material\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Image from \"next/image\";\nimport { CSSProperties, useEffect, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\n\ninterface SearchLicensePlateProps {\n width?: CSSProperties[\"width\"];\n part: string[];\n setValue?: any;\n data?: string;\n readOnly?: boolean;\n size?: \"small\" | \"medium\";\n}\n\nexport default function SearchLicensePlate({\n width = \"100%\",\n part,\n setValue,\n data,\n readOnly = true,\n size = \"small\",\n}: SearchLicensePlateProps) {\n const theme = useTheme();\n const [open, setOpen] = useState(false);\n const [inputValues, setInputValues] = useState({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n\n const inputRefs = {\n input1: useRef<HTMLInputElement>(null),\n input2: useRef<HTMLInputElement>(null),\n input3: useRef<HTMLInputElement>(null),\n input4: useRef<HTMLInputElement>(null),\n };\n\n const inputStyle = {\n color: theme.palette.text.primary,\n width: \"30px\",\n textAlign: \"center\" as const,\n backgroundColor: \"transparent\",\n outline: \"none\",\n border: \"none\",\n cursor: readOnly || (!!data && readOnly) ? \"default\" : \"text\",\n fontSize: size === \"small\" ? \"1.1rem\" : \"1.2rem\",\n fontWeight: 600,\n };\n\n // Initialize inputValues with data if available\n useEffect(() => {\n if (data) {\n let newdata = data.split(\" \").filter((word) => word !== \"ایران\");\n setInputValues({\n input1: newdata[0] || \"\",\n input2: newdata[1] || \"\",\n input3: newdata[2] || \"\",\n input4: newdata[3] || \"\",\n });\n } else {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n }\n }, [data]);\n\n const handleInputChange = (\n enteredInput: string,\n inputName: string,\n maxlength: number,\n minLength?: number\n ) => {\n if (inputName !== \"input2\") {\n const englishInput = convertToEnglishDigits(enteredInput);\n if (!/^\\d*$/.test(englishInput)) return;\n }\n\n const newInputValues = {\n ...inputValues,\n [inputName]: enteredInput,\n };\n setInputValues(newInputValues);\n\n // Update parent values\n setValue(part[0], convertToEnglishDigits(newInputValues.input1));\n setValue(part[1], newInputValues.input2);\n setValue(part[2], convertToEnglishDigits(newInputValues.input3));\n setValue(part[3], convertToEnglishDigits(newInputValues.input4));\n\n if (enteredInput.length === maxlength || minLength === 1) {\n if (inputName === \"input1\") setOpen(true);\n else if (inputName === \"input2\") setOpen(false);\n else inputRefs.input4.current?.focus();\n }\n };\n\n return (\n <Box\n sx={{\n width: width,\n border: \"1px solid #e5e7eb\",\n borderRadius: \"7px\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"3.25rem\",\n }}\n dir=\"ltr\"\n >\n {/* Flag */}\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n backgroundColor: \"#172554\",\n width: \"2.25rem\",\n height: \"3rem\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"7px\",\n mr: 0.4,\n }}\n >\n <Image\n src=\"/assets/images/iran-flag-dark.svg\"\n alt=\"Iran Flag\"\n width={size === \"small\" ? 18 : 22}\n height={size === \"small\" ? 14 : 18}\n style={{ cursor: \"pointer\" }}\n onClick={() => {\n setInputValues({\n input1: \"\",\n input2: \"\",\n input3: \"\",\n input4: \"\",\n });\n setValue(part[0], \"\");\n setValue(part[1], \"\");\n setValue(part[2], \"\");\n setValue(part[3], \"\");\n }}\n />\n </Box>\n </Box>\n\n {/* Inputs */}\n <Box\n sx={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-around\",\n fontSize: \"1.125rem\",\n lineHeight: \"1.75rem\",\n fontWeight: 600,\n color: \"#1f2937\",\n alignItems: \"center\",\n }}\n >\n {/* input1 */}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input1}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={inputStyle}\n value={convertToPersianDigits(inputValues.input1)}\n onChange={(e) => handleInputChange(e.target.value, \"input1\", 2)}\n />\n\n {/* input2 */}\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input2}\n type=\"text\"\n minLength={1}\n maxLength={3}\n placeholder=\"-\"\n style={{ ...inputStyle, width: \"30px\", cursor: \"pointer\" }}\n value={inputValues.input2}\n readOnly\n onClick={() => {\n if (!(readOnly || (!!data && readOnly))) setOpen(true);\n }}\n />\n </Box>\n\n {/* Dialog for letters */}\n <Dialog dir=\"rtl\" open={open} onClose={() => setOpen(false)}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n <DialogTitle>انتخاب حرف پلاک</DialogTitle>\n <Box\n sx={{ cursor: \"pointer\", paddingRight: \"1rem\", color: \"#737373\" }}\n onClick={() => setOpen(false)}\n >\n <IconButton>\n <IoClose />\n </IconButton>\n </Box>\n </Box>\n\n <DialogContent>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n my: 2,\n }}\n >\n {letters.map((letter, index) => (\n <Button\n key={index}\n variant=\"outlined\"\n sx={{\n border: \"none\",\n backgroundColor: \"#f0f0f0\",\n width: \"70px\",\n height: \"50px\",\n fontWeight: \"bold\",\n \":hover\": { backgroundColor: \"#e3e3e3\" },\n }}\n onClick={() => handleInputChange(letter, \"input2\", 3, 1)}\n >\n <Typography color=\"#117A4F\" fontWeight=\"bold\">\n {letter}\n </Typography>\n </Button>\n ))}\n </Box>\n\n <Box sx={{ display: \"flex\", justifyContent: \"center\", mt: 2.5 }}>\n <Button\n sx={{ width: \"6rem\" }}\n variant=\"outlined\"\n color=\"error\"\n onClick={() => {\n handleInputChange(\"\", \"input2\", 3, 1);\n setOpen(false);\n }}\n >\n حذف حرف\n </Button>\n </Box>\n </DialogContent>\n </Dialog>\n\n {/* input3 */}\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input3}\n type=\"text\"\n maxLength={3}\n placeholder=\"- - -\"\n style={{ ...inputStyle, width: \"45px\" }}\n value={convertToPersianDigits(inputValues.input3)}\n onChange={(e) => handleInputChange(e.target.value, \"input3\", 3)}\n />\n\n {/* Divider */}\n <Box\n sx={{ height: \"40px\", width: \"1px\", backgroundColor: \"#e5e7eb\" }}\n />\n\n {/* input4 + Iran */}\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column-reverse\",\n gap: size === \"small\" ? 0.25 : 0.5,\n alignItems: \"center\",\n }}\n >\n <input\n disabled={readOnly || (!!data && readOnly)}\n ref={inputRefs.input4}\n type=\"text\"\n maxLength={2}\n placeholder=\"- -\"\n style={{\n ...inputStyle,\n width: size === \"small\" ? \"32px\" : \"40px\",\n }}\n value={convertToPersianDigits(inputValues.input4)}\n onChange={(e) => handleInputChange(e.target.value, \"input4\", 2)}\n />\n <Image\n src=\"/assets/images/iran.svg\"\n alt=\"Iran\"\n width={size === \"small\" ? 27 : 32}\n height={size === \"small\" ? 23 : 28}\n style={{ margin: 0, display: \"block\" }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import { Button, Typography } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { Box } from \"@mui/system\";\nimport {\n MobileDateTimePicker,\n LocalizationProvider,\n} from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport dayjs from \"dayjs\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport React, { useState } from \"react\";\nimport { Control, Controller } from \"react-hook-form\";\n\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface JalaliDatePickerProps {\n name: string;\n control: Control<any>;\n label: string;\n size?: \"small\" | \"small\";\n disabled?: boolean;\n persian?: boolean;\n readOnly?: boolean;\n isLoading?: boolean;\n}\n\nconst JalaliDatePicker: React.FC<JalaliDatePickerProps> = ({\n name,\n control,\n label,\n isLoading,\n}) => {\n const today = moment();\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n const [open, setOpen] = useState(false);\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n start: \"شروع\",\n end: \"پایان\",\n previousMonth: \"ماه قبل\",\n nextMonth: \"ماه بعد\",\n openDatePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedDate: string | null\n ) => `انتخاب تاریخ ${formattedDate ? `(${formattedDate})` : \"\"}`,\n openTimePickerDialogue: (\n date: Moment | null,\n utils: any,\n formattedTime: string | null\n ) => `انتخاب زمان ${formattedTime ? `(${formattedTime})` : \"\"}`,\n selectDate: \"انتخاب تاریخ\",\n selectTime: \"انتخاب زمان\",\n datePickerToolbarTitle: \"انتخاب تاریخ\",\n timePickerToolbarTitle: \"انتخاب زمان\",\n dateTimePickerToolbarTitle: \"انتخاب تاریخ و زمان\",\n hoursClockNumberText: (hours: string) => `${hours} ساعت`,\n minutesClockNumberText: (minutes: string) => `${minutes} دقیقه`,\n secondsClockNumberText: (seconds: string) => `${seconds} ثانیه`,\n calendarWeekNumberHeaderLabel: \"هفته\",\n calendarWeekNumberHeaderText: \"#\",\n calendarWeekNumberAriaLabelText: (weekNumber: number) =>\n `هفته ${weekNumber}`,\n calendarWeekNumberText: (weekNumber: number) => `${weekNumber}`,\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box sx={{ width: \"100%\" }}>\n <MobileDateTimePicker\n open={open}\n onClose={() => {\n setOpen(false);\n field.onBlur();\n }}\n onOpen={() => setOpen(true)}\n orientation={isMobile ? \"portrait\" : \"landscape\"}\n disabled={isLoading}\n openTo=\"day\"\n views={[\"year\", \"month\", \"day\", \"hours\", \"minutes\"]}\n label={label}\n value={field.value ? moment(field.value) : null}\n onChange={(newValue: any) => {\n if (newValue) {\n field.onChange(dayjs(newValue).format(\"YYYY-MM-DDTHH:mm:ss\"));\n } else {\n field.onChange(null);\n }\n }}\n onAccept={() => {\n setOpen(false);\n field.onBlur();\n }}\n onError={() => {\n setOpen(false);\n field.onBlur();\n }}\n format={`jDD jMMMM jYYYY ${\" \"} - ${\" \"} HH:mm`}\n slots={{\n toolbar: (props) => {\n const currentDate = moment(field.value || null);\n let formattedDay, formattedDate, formattedYear, formattedTime;\n\n if (field.value) {\n formattedDay = currentDate.format(\"dddd\");\n formattedDate = currentDate.format(\"jDD jMMMM\");\n formattedYear = currentDate.format(\"jYYYY\");\n formattedTime = currentDate.format(\"HH:mm\");\n } else {\n (formattedDay = \"تاریخ و زمان انتخاب نشده است\"),\n (formattedDate = \"\"),\n (formattedYear = \"\"),\n (formattedTime = \"\");\n }\n\n return (\n <Box\n sx={{\n padding: \"16px\",\n textAlign: \"left\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"center\",\n gap: 1,\n }}\n >\n <Typography\n fontSize={16}\n variant=\"overline\"\n color=\"primary\"\n >\n {`${formattedDay}،`}\n </Typography>\n <Typography\n variant=\"h4\"\n fontSize={26}\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedDate}`}\n </Typography>\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {`${formattedYear}`}\n </Typography>\n {field.value && <Typography>{\"-\"}</Typography>}\n <Typography\n fontSize={16}\n variant=\"body2\"\n color=\"textSecondary\"\n style={{ fontWeight: \"bold\" }}\n >\n {`${formattedTime}`}\n </Typography>\n </Box>\n );\n },\n monthButton: (props) => {\n return (\n <Button\n className={props.className}\n style={{\n width: \"80%\",\n padding: \"10px\",\n marginBottom: \"20px\",\n border: \"1px solid #ccc\",\n borderRadius: \"12px\",\n backgroundColor: props.disabled ? \"#f0f0f0\" : \"#f0000\",\n fontSize: \"14px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n }}\n disabled={props.disabled}\n onClick={props.onClick}\n >\n {props[\"aria-label\"]}\n </Button>\n );\n },\n }}\n sx={{\n width: \"100%\",\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: error ? \"#D32F2F\" : \"#C4C4C4\",\n },\n }}\n maxDate={today}\n slotProps={{\n mobilePaper: {\n sx: {\n \"& .MuiClock-root\": {\n backgroundColor: \"transparent\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n \"& .MuiClock-clock\": {\n mt: 4,\n pt: 0.5,\n width: 230,\n height: 230,\n backgroundColor: \"rgba(0, 0, 0, 0.03)\",\n borderRadius: \"50%\",\n border: \"4px solid rgba(0, 0, 0, 0.04)\",\n },\n \"& .MuiClock-pin\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockPointer-root, & .MuiClockPointer-thumb\": {\n backgroundColor: \"#085938\",\n },\n \"& .MuiClockNumber-root\": {\n color: \"#000\",\n fontSize: \"16px\",\n },\n \"&.Mui-selected, &.Mui-focusVisible\": {\n color: \"#FFF\",\n },\n },\n },\n textField: {\n placeholder: field.value ? \"\" : \"انتخاب تاریخ به همراه زمان\",\n onClick: () => {\n if (!open) setOpen(true);\n },\n InputLabelProps: {\n shrink: true,\n style: { color: error ? \"#D32F2F\" : \"inherit\" },\n },\n InputProps: {\n onFocus: () => {},\n },\n },\n }}\n />\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </LocalizationProvider>\n );\n};\n\nexport default JalaliDatePicker;\n","import * as React from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport {\n Box,\n Button,\n CircularProgress,\n Divider,\n IconButton,\n} from \"@mui/material\";\nimport { Delete } from \"@mamrp/icons/common\";\nimport { MdClose, MdOutlineCancel } from \"react-icons/md\";\nimport { ReactNode } from \"react\";\n\ninterface ConfirmationDialogProps {\n open: boolean;\n handleClose: () => void;\n callback: (params: any) => void;\n callbackParams: any;\n headerText: string;\n bodyText: ReactNode;\n isLoading?: boolean;\n}\n\nexport default function ConfirmationDialog({\n open,\n handleClose,\n callback,\n callbackParams,\n headerText,\n bodyText,\n isLoading,\n}: ConfirmationDialogProps) {\n return (\n <Dialog open={open} onClose={handleClose} fullWidth maxWidth=\"xs\">\n <Box>\n <DialogTitle\n fontWeight={700}\n fontSize={\"1.2rem\"}\n display={\"flex\"}\n alignItems={\"center\"}\n gap={1}\n >\n <Delete style={{ color: \"red\" }} size={18} />\n {headerText}\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleClose}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <MdClose />\n </IconButton>\n <Divider sx={{ my: \"10px\" }} />\n <DialogContent>{bodyText}</DialogContent>\n <DialogActions\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n width: \"100%\",\n gap: \"12px\",\n alignItems: \"center\",\n padding: \"2rem\",\n }}\n >\n <Button\n disabled={isLoading}\n onClick={() => {\n callback(callbackParams);\n handleClose();\n }}\n variant=\"contained\"\n color=\"error\"\n sx={{ minWidth: \"120px\" }}\n startIcon={\n isLoading ? (\n <CircularProgress sx={{ color: \"white\" }} size={20} />\n ) : (\n <Delete size={16} />\n )\n }\n >\n حذف\n </Button>\n <Button\n onClick={handleClose}\n variant=\"outlined\"\n color=\"error\"\n startIcon={<MdOutlineCancel size={15} />}\n sx={{ minWidth: \"120px\" }}\n >\n انصراف\n </Button>\n </DialogActions>\n </Box>\n </Dialog>\n );\n}\n","import Image from \"next/image\";\nimport {\n Card,\n Stack,\n Typography,\n useTheme,\n SxProps,\n Theme,\n} from \"@mui/material\";\nimport React from \"react\";\n\ninterface NoResultProps {\n title?: string;\n description?: string;\n sx?: SxProps<Theme>;\n}\n\nexport default function NoResult({\n title = \"داده ای برای نمایش وجود ندارد!\",\n description,\n sx = {},\n}: NoResultProps) {\n const theme = useTheme();\n\n return (\n <Card\n sx={{\n width: \"100%\",\n minWidth: 300,\n borderRadius: \"12px\",\n border: `1px solid ${theme.palette.secondary.light}`,\n }}\n >\n <Stack\n spacing={2}\n alignItems={\"center\"}\n sx={{\n py: 5,\n ...sx,\n }}\n >\n <img\n src={\"/assets/images/no-data.png\"}\n alt=\"No Data\"\n height={100}\n width={100}\n />\n\n <Stack spacing={1} alignItems={\"center\"}>\n <Typography fontWeight={\"600\"}>{title}</Typography>\n\n {description && (\n <Typography fontWeight={\"500\"}>{description}</Typography>\n )}\n </Stack>\n </Stack>\n </Card>\n );\n}\n","import { convertToPersianDigits } from \"@mamrp/utils\";\nimport { Button } from \"@mui/material\";\nimport Stack from \"@mui/material/Stack\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\n\ninterface PaginationListProps {\n currentPage: number;\n setCurrentPage: React.Dispatch<React.SetStateAction<number>>;\n totalPages: number;\n}\n\nexport default function PaginationList({\n currentPage,\n setCurrentPage,\n totalPages,\n}: PaginationListProps) {\n // Effect to handle scrollTo on page change\n React.useEffect(() => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }, [currentPage]);\n\n const handlePrevious = () => {\n if (currentPage > 1) {\n setCurrentPage(currentPage - 1);\n }\n };\n\n const handleNext = () => {\n if (currentPage < totalPages) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n return (\n <Stack\n direction=\"row\"\n spacing={2}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {/* Previous button */}\n <Button\n variant=\"contained\"\n onClick={handlePrevious}\n color=\"warning\"\n disabled={currentPage === 1}\n sx={{\n borderRadius: 2,\n width: \"100px\",\n height: \"50px\",\n minWidth: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n size=\"large\"\n startIcon={<FaChevronRight />}\n >\n قبلی{\" \"}\n </Button>\n\n {/* Current page number in Persian */}\n <Box\n sx={{\n fontWeight: \"bold\",\n width: \"120px\",\n height: \"50px\",\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#fff\",\n fontSize: \"1.5rem\",\n backgroundColor: \"#065938\",\n }}\n >\n <span style={{ margin: \"0px 6px\", fontSize: \"1.2rem\" }}>صفحه</span>\n {convertToPersianDigits(currentPage)}\n </Box>\n\n {/* Next button */}\n <Button\n variant=\"contained\"\n onClick={handleNext}\n color=\"warning\"\n disabled={currentPage === totalPages}\n sx={{\n borderRadius: 2,\n width: \"100px\",\n height: \"50px\",\n minWidth: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n size=\"large\"\n endIcon={<FaChevronLeft />}\n >\n بعدی{\" \"}\n </Button>\n </Stack>\n );\n}\n","import * as React from \"react\";\nimport { Controller, Control } from \"react-hook-form\";\nimport Radio from \"@mui/material/Radio\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormLabel from \"@mui/material/FormLabel\";\nimport { Typography, useTheme } from \"@mui/material\";\nimport theme from \"@mamrp/layout/theme\"; // Assuming you have a theme file in your layout package\n// import theme from \"@mamrp/layout/theme\";\nimport { Box } from \"@mui/system\";\n\nexport default function RadioButton({\n name,\n label,\n options,\n control,\n align = \"start\",\n disabledBoarder,\n direction = \"row\",\n}: {\n name: string;\n label: string | React.ReactNode;\n control: Control<any>;\n options: { value: any; name: string; id: any }[];\n align?: \"start\" | \"center\" | \"end\";\n disabledBoarder?: boolean;\n direction?: \"row\" | \"column\";\n}) {\n \n return (\n <>\n <FormControl\n sx={{\n display: \"flex\",\n flexDirection: direction,\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n <Controller\n name={name}\n control={control}\n render={({ field, fieldState: { error } }) => (\n <Box display={\"flex\"} width={\"100%\"} flexDirection={\"column\"}>\n {label && (\n <FormLabel\n id={`${name}-label`}\n sx={{\n position: \"absolute\",\n top: -10,\n left: 15,\n px: 0.5, // به‌جای background رنگی، این باعث میشه کمی فضا بدیم\n backgroundColor: \"background.paper\", // استفاده از theme برای همخوانی با زمینه\n color: error?.message\n ? theme.CustomComponents.RadioButton.errorColor\n : theme.CustomComponents.RadioButton.textColor,\n fontSize: 15,\n zIndex: 1,\n }}\n >\n {label}\n </FormLabel>\n )}\n <RadioGroup\n {...field}\n aria-labelledby={`${name}-label`}\n value={field.value}\n sx={{\n width: \"100%\",\n p: 0.8,\n px: 1,\n borderRadius: 3,\n display: \"flex\",\n justifyContent:align,\n flexDirection: \"row\",\n border: disabledBoarder ? \"\" : `${theme.CustomComponents.RadioButton.borderSize}px solid`,\n borderColor: error?.message\n ? theme.CustomComponents.RadioButton.errorColor\n : theme.CustomComponents.RadioButton.borderColor,\n }}\n >\n {options.map((option: any) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n control={<Radio id={option.id} />}\n label={option.name}\n />\n ))}\n </RadioGroup>\n {error?.message && (\n <Typography color=\"error\" fontSize={theme.CustomComponents.RadioButton.errorFontSize} ml={2}>\n {error?.message}\n </Typography>\n )}\n </Box>\n )}\n />\n </FormControl>\n </>\n );\n}\n","import { MdKeyboardArrowLeft, MdKeyboardArrowRight } from \"react-icons/md\";\n\nimport {\n Checkbox,\n Collapse,\n FormControl,\n IconButton,\n InputLabel,\n List,\n ListItemText,\n MenuItem,\n Select,\n Typography,\n} from \"@mui/material\";\nimport React, { useState } from \"react\";\n\ninterface Item {\n id: number;\n title: string;\n parentId: number | null;\n level: number;\n children?: Item[];\n}\n\nconst backendResponse = {\n value: {\n data: [\n {\n id: 287,\n title: \"وقفه داخل کشتارگاه\",\n parentId: null,\n level: 1,\n children: [\n {\n id: 292,\n title: \"خط ۲ کشتار\",\n parentId: 287,\n level: 2,\n children: [\n {\n id: 312,\n title: \"خرابی دستگاه مقعد زن\",\n parentId: 292,\n level: 3,\n children: [],\n },\n {\n id: 313,\n title: \"خرابی دستگاه چاک زن\",\n parentId: 292,\n level: 3,\n children: [],\n },\n ],\n },\n ],\n },\n {\n id: 288,\n title: \"وقفه قبل از کشتارگاه\",\n parentId: null,\n level: 1,\n children: [\n {\n id: 289,\n title: \"سرویس پرسنل\",\n parentId: 288,\n level: 2,\n children: [],\n },\n ],\n },\n ],\n },\n};\n\nconst NestedSelect: React.FC = () => {\n const [selectedItem, setSelectedItem] = useState<Item | null>(null);\n const [openMenus, setOpenMenus] = useState<Record<number, boolean>>({});\n const [menuOpen, setMenuOpen] = useState<boolean>(false);\n\n // Handle selecting an item\n const handleSelect = (item: Item) => {\n setSelectedItem((prev) => (prev?.id === item.id ? null : item));\n };\n\n // Handle toggling parent items\n const handleToggle = (id: number) => {\n setOpenMenus((prev) => ({ ...prev, [id]: !prev[id] }));\n };\n\n // Recursive function to render nested items\n const renderMenuItems = (items: Item[], level = 0) => {\n return items.map((item) => {\n const isParentSelected = selectedItem?.id === item.id;\n const isAnyChildSelected = item.children?.some(\n (child) => selectedItem?.id === child.id\n );\n\n return (\n <div key={item.id}>\n <MenuItem\n onClick={(e) => {\n e.stopPropagation();\n handleSelect(item);\n }}\n disabled={isAnyChildSelected}\n sx={{ pl: level * 2 }}\n >\n <Checkbox checked={isParentSelected} />\n <ListItemText primary={item.title} />\n {item.children && item.children.length > 0 && (\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggle(item.id);\n }}\n >\n {openMenus[item.id] ? (\n <MdKeyboardArrowLeft />\n ) : (\n <MdKeyboardArrowRight />\n )}\n </IconButton>\n )}\n </MenuItem>\n\n {/* Render Children (If any) */}\n {item.children && item.children.length > 0 && (\n <Collapse in={openMenus[item.id]} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" disablePadding>\n {renderMenuItems(item.children, level + 1)}\n </List>\n </Collapse>\n )}\n </div>\n );\n });\n };\n\n return (\n <FormControl fullWidth variant=\"outlined\">\n <InputLabel shrink={true}>دسته بندی *</InputLabel>\n <Select\n label=\"دسته بندی *\"\n value={selectedItem?.id || \"\"}\n displayEmpty\n open={menuOpen}\n onOpen={() => setMenuOpen(true)}\n onClose={() => setMenuOpen(false)}\n renderValue={(selected) =>\n selectedItem ? <Typography>{selectedItem.title}</Typography> : \" \"\n }\n >\n {renderMenuItems(backendResponse.value.data)}\n </Select>\n </FormControl>\n );\n};\n\nexport default NestedSelect;\n","import { Box } from \"@mui/material\";\nimport { keyframes } from \"@mui/system\";\nimport React from \"react\";\n\nconst radarAnimation = keyframes`\n 0% {\n background: inherit;\n transform: scale(0);\n opacity: 0.9;\n }\n 100% {\n opacity: 0;\n transform: scale(4);\n }\n`;\n\nexport default function SonarSpinner({ children }: { children: any }) {\n return (\n <>\n <Box className=\"absolute w-[30px] h-[30px] rounded-full bg-white z-10 flex items-center justify-center\">\n {children}\n </Box>\n <Box\n className=\"root\"\n sx={{\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"white\",\n transform: \"translateZ(0)\",\n }}\n >\n <Box\n className={\"radar\"}\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"15px\",\n height: \"15px\",\n borderRadius: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"red\",\n animation: `${radarAnimation} 1.2s linear infinite`,\n animationDelay: \"0s\",\n }}\n >\n <Box\n className={\"sonar\"}\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"14px\",\n height: \"14px\",\n borderRadius: \"inherit\",\n backgroundColor: \"red\",\n }}\n ></Box>\n <Box\n className=\"sonar delayed\"\n sx={{\n position: \"absolute\",\n zIndex: 1,\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: `${radarAnimation} 1.2s linear infinite`,\n animationDelay: \"1s\",\n backgroundColor: \"red\",\n }}\n ></Box>\n </Box>\n </Box>\n </>\n );\n}\n","import Box from \"@mui/material/Box\";\nimport Step from \"@mui/material/Step\";\nimport StepButton from \"@mui/material/StepButton\";\nimport Stepper from \"@mui/material/Stepper\";\nimport * as React from \"react\";\n\ninterface HorizontalStepperProps {\n steps: string[];\n currentStep: number;\n setCurrentStep: (newStep: number) => void;\n}\n\nexport default function HorizontalStepper({\n steps,\n currentStep,\n setCurrentStep,\n}: HorizontalStepperProps) {\n const [completed, setCompleted] = React.useState<{\n [k: number]: boolean;\n }>({});\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Stepper nonLinear activeStep={currentStep}>\n {steps.map((label, index) => (\n <Step key={index} completed={completed[index]}>\n <StepButton\n color=\"inherit\"\n disabled={!(index === 0 && currentStep === 1)} // Only enable for index 0 when currentStep is 1\n onClick={() => {\n if (index === 0 && currentStep === 1) {\n setCurrentStep(0); // Allow going back to step 0\n }\n }}\n >\n {label}\n </StepButton>\n </Step>\n ))}\n </Stepper>\n </Box>\n );\n}\n","import { Box, FormControlLabel, Switch } from \"@mui/material\";\nimport { styled } from \"@mui/system\";\nimport React from \"react\";\nimport { PiCardsDuotone, PiTableDuotone } from \"react-icons/pi\";\nimport { useTheme } from \"@mui/material\";\n\ntype SwitchButtonProps = {\n checked: boolean;\n handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n iconChecked?: React.ReactNode;\n iconUnchecked?: React.ReactNode;\n};\n\nconst SwitchButton: React.FC<SwitchButtonProps> = ({\n checked,\n handleChange,\n iconChecked,\n iconUnchecked,\n}) => {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n const CustomSwitch = styled(Switch)(({ theme }) => ({\n \"& .MuiSwitch-switchBase.Mui-checked\": {\n color: theme.palette.primary.main,\n },\n \"& .MuiSwitch-switchBase\": {\n color: isDarkMode ? \"rgba(220,220,220,1)\" : \"rgba(188,188,188,1)\",\n },\n \"& .MuiSwitch-track\": {\n // backgroundColor: \"rgba(160,160,160, 0.1)\",\n backgroundColor: \"#fff\",\n border: isDarkMode ? \"2px solid white\" : \"2px solid rgba(80,80,80, 1)\",\n },\n }));\n\n const BoxContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n\n backgroundColor: \"rgba(188,188,188, 0.1)\",\n border: \"2px solid rgba(200,200,200, 1)\",\n borderRadius: 10,\n transition: \"all 0.3s ease\",\n paddingTop: theme.spacing(0.1),\n paddingBottom: theme.spacing(0.1),\n paddingLeft: theme.spacing(1),\n }));\n\n const LabelContainer = styled(\"div\")({\n transition: \"all 0.2s ease\",\n color: isDarkMode ? \"rgba(220,220,220, 1)\" : \"rgba(160,160,160, 1)\",\n });\n\n return (\n <BoxContainer>\n <FormControlLabel\n control={\n <CustomSwitch\n checked={checked}\n onChange={handleChange}\n name=\"switch\"\n />\n }\n label={\n <LabelContainer>\n {checked ? (\n iconChecked ? (\n iconChecked\n ) : (\n <PiTableDuotone size={30} /> // Default checked icon\n )\n ) : iconUnchecked ? (\n iconUnchecked\n ) : (\n <PiCardsDuotone size={30} /> // Default unchecked icon\n )}\n </LabelContainer>\n }\n />\n </BoxContainer>\n );\n};\n\nexport default SwitchButton;\n","import { Typography } from \"@mui/material\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n DataGrid,\n DataGridProps,\n GridColDef,\n GridRowParams,\n GridRowSelectionModel,\n GridSortModel,\n} from \"@mui/x-data-grid\";\nimport React, { Dispatch, SetStateAction, useEffect } from \"react\";\n\ninterface StateType {\n page: number;\n pageSize: number;\n}\n\ntype TapleProps = {\n columns: GridColDef[];\n rows: object[];\n paginationModel?: StateType;\n setPaginationModel?: Dispatch<SetStateAction<StateType>>;\n totalRows?: number;\n rowId?: any;\n loading: boolean;\n _CustomFooter?: any;\n _tools?: React.ReactNode;\n pagingmode?: \"client\" | \"server\";\n rowInPage?: number;\n evenRowBgColor?: string;\n highlightedRowId?: string | number;\n sortFieldMapping?: { [key: string]: string };\n setsortQuery?: Dispatch<SetStateAction<any | null>>;\n sortQuery?: any;\n fontSize?: number | string;\n checkboxSelection?: boolean;\n selectedRows?: GridRowSelectionModel;\n setSelectedRows?: Dispatch<SetStateAction<GridRowSelectionModel>>;\n isRowSelectable?: (params: GridRowParams) => boolean;\n disablePageSizeChange?: boolean;\n};\n\nconst ScrollableContainer = styled(\"div\")({\n width: \"100%\",\n overflowX: \"auto\", // Enable horizontal scrolling\n});\n\nconst Table = ({\n pagingmode,\n totalRows,\n rows,\n columns,\n paginationModel,\n setPaginationModel,\n loading,\n rowId,\n _tools,\n _CustomFooter,\n rowInPage,\n highlightedRowId,\n evenRowBgColor = \"\",\n sortFieldMapping,\n setsortQuery,\n sortQuery,\n fontSize,\n checkboxSelection = false,\n selectedRows,\n setSelectedRows,\n isRowSelectable,\n disablePageSizeChange = false,\n ...rest\n}: TapleProps) => {\n const [sortModel, setSortModel] = React.useState<GridSortModel>([]);\n\n // Handle sorting\n const handleSetQueryOptions = (options: any[]) => {\n if (!Array.isArray(options)) return;\n const formattedOptions = options.reduce((acc, item) => {\n const field = sortFieldMapping?.[item.field] || item.field;\n acc[field] = item.sort == \"ask\" ? 0 : 1;\n return acc;\n }, {});\n setsortQuery && setsortQuery(formattedOptions);\n };\n\n useEffect(() => {\n if (sortQuery && Object.keys(sortQuery).length > 0) {\n const queryKey = Object.keys(sortQuery)[0];\n if (sortFieldMapping) {\n const fieldName = Object.keys(sortFieldMapping).find(\n (key) => sortFieldMapping[key] === queryKey\n );\n if (fieldName) {\n const sortDirection = sortQuery[queryKey];\n setSortModel([\n { field: fieldName, sort: sortDirection == 0 ? \"asc\" : \"desc\" },\n ]);\n }\n }\n } else {\n setSortModel([]);\n }\n }, [sortQuery]);\n\n const handleSortModelChange = React.useCallback(\n (sortModel: GridSortModel) => {\n handleSetQueryOptions(\n sortModel.map((item) => ({\n field: item.field,\n sort:\n item.sort === \"asc\"\n ? \"ask\"\n : item.sort === \"desc\"\n ? \"desc\"\n : item.sort,\n }))\n );\n },\n []\n );\n\n // Determine if pagination should be shown\n const shouldShowPagination = !!(paginationModel && setPaginationModel);\n\n const option = {\n ...(!!setsortQuery && {\n sortingMode: \"server\",\n onSortModelChange: handleSortModelChange,\n sortModel: sortModel,\n }),\n ...(shouldShowPagination && !pagingmode && { paginationMode: \"server\" }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && { paginationMode: \"client\" }),\n ...(shouldShowPagination &&\n !pagingmode && {\n onPaginationModelChange: setPaginationModel,\n paginationModel: paginationModel,\n }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && {\n initialState: {\n pagination: {\n paginationModel: {\n pageSize: rowInPage ? rowInPage : 5, // Default page size (5)\n page: paginationModel?.page || 0, // Default to page 0 if not provided\n },\n },\n },\n }),\n ...(shouldShowPagination &&\n pagingmode == \"client\" && {\n paginationModel, // Connect paginationModel to DataGrid\n }),\n };\n\n return (\n <ScrollableContainer>\n <DataGrid\n checkboxSelection={selectedRows != undefined}\n rowSelectionModel={selectedRows}\n isRowSelectable={\n isRowSelectable ? (params) => isRowSelectable(params) : undefined\n }\n onRowSelectionModelChange={(newSelection) => {\n if (setSelectedRows) {\n setSelectedRows(newSelection);\n }\n }}\n rows={rows}\n columns={columns.map((column) => ({ ...column }))}\n disableRowSelectionOnClick\n {...(shouldShowPagination\n ? { pagination: true }\n : { hideFooter: true })}\n sx={{\n fontSize: fontSize ?? \"0.875rem\",\n \"& .MuiDataGrid-columnHeaders\": {\n backgroundColor: \"rgba(0, 0, 0, 0.1)\",\n },\n \"& .MuiDataGrid-columnHeaderTitle\": {\n fontSize: fontSize ?? \"1rem\",\n },\n \"& .MuiDataGrid-row:nth-of-type(even)\": {\n backgroundColor: evenRowBgColor !== \"\" ? evenRowBgColor : \"\",\n },\n \"& .MuiDataGrid-row:hover\": {\n backgroundColor: \"rgba(0, 0, 0, 0.08)\",\n },\n ...(highlightedRowId && {\n \"& .MuiDataGrid-row\": {\n [`&[data-id=\"${highlightedRowId}\"]`]: {\n backgroundColor: \"#c5edd0\",\n },\n },\n }),\n }}\n {...(option as Partial<DataGridProps>)}\n {...(shouldShowPagination && {\n onPaginationModelChange: setPaginationModel,\n })}\n getRowId={rowId}\n disableColumnResize={true}\n autoHeight={true}\n {...(shouldShowPagination && { rowCount: totalRows })}\n {...(shouldShowPagination && {\n pageSizeOptions: disablePageSizeChange\n ? [paginationModel?.pageSize || 5]\n : [5, 10, 25, 50, 75, 100],\n })}\n {...(shouldShowPagination && {\n slotProps: {\n pagination: {\n labelRowsPerPage: \"تعداد در هر صفحه\",\n },\n },\n })}\n disableColumnMenu\n disableColumnFilter\n loading={loading}\n {...(disablePageSizeChange && { hideFooterRowsPerPage: true })}\n localeText={{\n noRowsLabel: \"هیچ داده‌ای یافت نشد!\",\n noResultsOverlayLabel: \"هیچ داده‌ای یافت نشد!\",\n MuiTablePagination: {\n labelDisplayedRows: ({ from, to, count }) =>\n loading ? (\n <>\n <Skeleton\n variant=\"text\"\n width={30}\n style={{ display: \"inline-block\" }}\n />{\" \"}\n <Skeleton\n variant=\"text\"\n width={30}\n style={{ display: \"inline-block\" }}\n />\n </>\n ) : (\n `${from} - ${!isNaN(to) ? to : \"...\"} از ${\n count !== undefined ? count : \"...\"\n }`\n ),\n },\n footerRowSelected: (count) => (\n <Typography>سطر های انتخاب شده : {count}</Typography>\n ),\n }}\n {...rest}\n />\n </ScrollableContainer>\n );\n};\n\nexport default Table;\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport React, { forwardRef } from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\nimport { PatternFormat, PatternFormatProps } from \"react-number-format\";\n\ntype FormInputTextProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string;\n maxLength?: number;\n readOnly?: boolean;\n rules?: any;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n multiline?: boolean;\n isLoading?: boolean;\n onBlurHandler?: any;\n rows?: number;\n groupEvery?: number;\n groupSeparator?: string;\n formatPattern?: string; // الگوی X برای رقم\n} & TextFieldProps;\n\nconst PatternTextField = <T extends FieldValues>({\n name,\n control,\n label,\n maxLength,\n readOnly,\n rules,\n size = \"small\",\n disabled = false,\n multiline,\n isLoading,\n onBlurHandler,\n rows,\n groupEvery,\n groupSeparator = \"-\",\n formatPattern,\n ...rest\n}: FormInputTextProps<T>) => {\n\n const isNumericMode = !!groupEvery;\n\n const formatValue = (val: string) => {\n if (!val) return \"\";\n const raw = isNumericMode ? val.replace(/\\D/g, \"\") : val;\n\n if (groupEvery) {\n return (\n raw\n .match(new RegExp(`.{1,${groupEvery}}`, \"g\"))\n ?.join(groupSeparator) || \"\"\n );\n }\n\n return val;\n };\n\n return (\n <Controller\n name={name}\n control={control}\n rules={rules}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n {...rest}\n disabled={disabled || isLoading}\n helperText={error?.message || null}\n multiline={multiline}\n size={size}\n rows={rows || undefined}\n error={!!error}\n value={formatValue(value?.toString() || \"\")}\n onChange={(e) => {\n let newRaw = e.target.value;\n if (isNumericMode) newRaw = newRaw.replace(/\\D/g, \"\");\n if (!maxLength || newRaw.length <= maxLength) onChange(newRaw);\n }}\n fullWidth\n label={label}\n variant=\"outlined\"\n inputProps={{ ...rest.inputProps, readOnly }}\n InputProps={{\n inputComponent: formatPattern\n ? PatternFormatCustom as any // 👈 جایگزین ورودی\n : undefined,\n inputProps: {\n format: formatPattern, // 👈 الگوی نمایش\n },\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : null,\n }}\n InputLabelProps={{ shrink: true }}\n inputRef={ref}\n \n />\n )}\n />\n );\n};\ninterface CustomProps {\n onChange: (event: { target: { name: string; value: string } }) => void;\n name: string;\n format: string;\n}\n\nconst PatternFormatCustom = forwardRef<PatternFormatProps, CustomProps>(\n function PatternFormatCustom(props, ref) {\n const { onChange, format, ...other } = props;\n\n return (\n <PatternFormat\n {...other}\n getInputRef={ref}\n format={format}\n onValueChange={(values) => {\n onChange({\n target: {\n name: props.name,\n value: values.value,\n },\n });\n }}\n />\n );\n }\n);\nexport default PatternTextField;\n\n\n","import TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport { ReactNode, forwardRef } from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\nimport { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport React from \"react\";\n\ntype FormInputNumberProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string | ReactNode;\n endAdornment?: ReactNode;\n startAdornment?: ReactNode;\n thousandSeparator?: string | null;\n allowLeadingZeros?: boolean;\n allowNegative?: boolean;\n onChangeHandler?: (\n param: any,\n onChange: (data: any) => void,\n value: any\n ) => void;\n valueHandler?: (value: any) => void;\n maxLength?: number;\n rules?: any;\n isLoading?: boolean;\n data?: any;\n borderColor?: string;\n decimalScale?: number;\n placeholder?: string;\n nputRef?: any;\n onKeyDown?: any;\n textAlign?: \"left\" | \"right\" | \"center\";\n autoComplete?: string;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n} & TextFieldProps;\n\nconst FormInputNumber = <T extends FieldValues>({\n name,\n control,\n label,\n inputRef,\n onKeyDown,\n endAdornment,\n thousandSeparator,\n startAdornment,\n onChangeHandler,\n valueHandler,\n allowLeadingZeros = false,\n allowNegative = false,\n maxLength,\n isLoading,\n rules,\n data,\n borderColor,\n placeholder,\n decimalScale = 2,\n autoComplete = \"off\",\n textAlign = \"right\",\n variant = \"outlined\",\n ...rest\n}: FormInputNumberProps<T>) => {\n return (\n <Controller\n rules={rules}\n name={name}\n control={control}\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n onKeyDown={onKeyDown}\n disabled={isLoading}\n helperText={error ? error.message : null}\n placeholder={placeholder}\n size=\"small\"\n autoComplete={autoComplete}\n error={!!error}\n onChange={(param) => {\n onChangeHandler\n ? onChangeHandler(param, onChange, value)\n : onChange(param);\n }}\n value={\n data && !value\n ? data\n : value == null\n ? \"\"\n : valueHandler\n ? valueHandler(value)\n : value\n }\n fullWidth\n variant={variant}\n sx={{\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: borderColor || \"\",\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"12px\",\n \"&:hover fieldset\": {\n borderColor: borderColor ?? \"#085938\",\n },\n \"&.Mui-focused fieldset\": {\n borderColor: borderColor ?? \"#085938\",\n },\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"#085938\",\n },\n \"& .MuiInputBase-input\": {\n textAlign: textAlign,\n },\n }}\n label={label}\n inputRef={inputRef ?? ref}\n InputLabelProps={{ shrink: true }}\n InputProps={{\n inputComponent: NumericFormatCustom as any,\n inputProps: {\n thousandSeparator,\n allowLeadingZeros,\n allowNegative,\n maxLength,\n decimalScale,\n },\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : (\n endAdornment\n ),\n startAdornment: startAdornment as any,\n }}\n {...rest}\n />\n )}\n />\n );\n};\n\ninterface CustomProps {\n onChange: (event: { target: { name: string; value: string } }) => void;\n name: string;\n thousandSeparator: string;\n allowLeadingZeros: boolean;\n allowNegative: boolean;\n maxLength?: number;\n decimalScale?: number;\n}\n\nconst NumericFormatCustom = forwardRef<NumericFormatProps, CustomProps>(\n function NumericFormatCustom(props, ref) {\n const {\n onChange,\n thousandSeparator,\n allowLeadingZeros,\n allowNegative,\n maxLength,\n decimalScale,\n ...other\n } = props;\n\n return (\n <NumericFormat\n {...other}\n getInputRef={ref}\n onValueChange={(values) => {\n onChange({\n target: {\n name: props.name,\n value: values.value,\n },\n });\n }}\n maxLength={maxLength}\n allowLeadingZeros={allowLeadingZeros}\n thousandSeparator={thousandSeparator}\n valueIsNumericString\n allowNegative={allowNegative}\n decimalScale={decimalScale}\n fixedDecimalScale={false}\n dir=\"ltr\"\n />\n );\n }\n);\n\nexport default FormInputNumber;\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport TextField, { TextFieldProps } from \"@mui/material/TextField\";\nimport React from \"react\";\nimport { Control, Controller, FieldValues, Path } from \"react-hook-form\";\n\ntype FormInputTextProps<T extends FieldValues> = {\n control: Control<T>;\n name: Path<T>;\n label?: string;\n maxLength?: number;\n readOnly?: boolean;\n rules?: any;\n size?: \"medium\" | \"small\";\n disabled?: boolean;\n multiline?: boolean;\n isLoading?: boolean;\n onBlurHandler?: any;\n rows?: number;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n} & TextFieldProps;\n\nconst FormInputText = <T extends FieldValues>({\n name,\n control,\n label,\n maxLength,\n readOnly,\n rules,\n size = \"small\",\n disabled = false,\n multiline,\n isLoading,\n onBlurHandler,\n rows,\n variant = \"outlined\",\n ...rest\n}: FormInputTextProps<T>) => {\n return (\n <Controller\n name={name}\n control={control}\n rules={rules} // This works because we've typed it correctly\n render={({ field: { onChange, value, ref }, fieldState: { error } }) => (\n <TextField\n disabled={disabled || isLoading}\n helperText={error ? error.message : null}\n multiline={multiline}\n size={size}\n rows={rows ? rows : undefined}\n error={!!error}\n onChange={onChange}\n value={value}\n fullWidth\n label={label}\n variant={variant}\n inputProps={{\n ...rest.inputProps,\n maxLength: maxLength,\n readOnly: readOnly,\n }}\n InputProps={{\n endAdornment: isLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress size={20} />\n </InputAdornment>\n ) : null,\n }}\n InputLabelProps={{ shrink: true }}\n inputRef={ref}\n {...rest}\n />\n )}\n />\n );\n};\n\nexport default FormInputText;\n","import React from \"react\";\nimport {\n Controller,\n Control,\n FieldErrors,\n FieldValues,\n Path,\n UseFormSetValue,\n} from \"react-hook-form\";\nimport { Box, Button, Stack, Typography } from \"@mui/material\";\nimport { GrUpload, GrGallery } from \"react-icons/gr\";\nimport { MdOutlineCameraAlt } from \"react-icons/md\";\nimport Image from \"next/image\";\n\ntype UploadImageProps<T extends FieldValues> = {\n placeholder: string;\n name: Path<T>;\n selectedImage: string | null;\n setSelectedImage: React.Dispatch<React.SetStateAction<string | null>>;\n control: Control<T>;\n errors: FieldErrors<T>;\n setValue: UseFormSetValue<T>;\n height?: string;\n allowGallery?: boolean;\n imageFit?: \"contain\" | \"cover\";\n disableCamera?: boolean;\n};\n\nconst UploadImage = <T extends FieldValues>({\n placeholder,\n name,\n selectedImage,\n setSelectedImage,\n control,\n errors,\n setValue,\n height,\n allowGallery = false,\n imageFit = \"cover\",\n disableCamera = false,\n}: UploadImageProps<T>) => {\n // Function to compress image before uploading\n const compressImage = (\n file: File,\n quality = 0.8,\n maxWidth = 800,\n maxHeight = 800\n ): Promise<File | null> => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n const img = new window.Image();\n img.src = event.target?.result as string;\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n let width = img.width;\n let height = img.height;\n\n // Maintain aspect ratio\n if (width > maxWidth) {\n height *= maxWidth / width;\n width = maxWidth;\n }\n if (height > maxHeight) {\n width *= maxHeight / height;\n height = maxHeight;\n }\n\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n ctx.drawImage(img, 0, 0, width, height);\n canvas.toBlob(\n (blob) => {\n if (blob) {\n const compressedFile = new File([blob], file.name, {\n type: \"image/jpeg\",\n lastModified: Date.now(),\n });\n resolve(compressedFile);\n } else {\n resolve(null);\n }\n },\n \"image/jpeg\",\n quality\n );\n } else {\n resolve(null);\n }\n };\n };\n });\n };\n\n // Function to handle file input change and process image\n const handleImageChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n source: \"gallery\" | \"camera\"\n ) => {\n const file = event.target.files?.[0];\n if (file) {\n const compressedFile = await compressImage(file);\n if (compressedFile) {\n const objectURL = URL.createObjectURL(compressedFile);\n setSelectedImage(objectURL);\n setValue(name, compressedFile as unknown as T[typeof name]);\n }\n }\n };\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <>\n <label\n htmlFor=\"file-upload\"\n style={{\n width: \"100%\",\n height: height || \"200px\",\n maxHeight: height ? \"55vh\" : \"\",\n border: selectedImage ? \"\" : \"2px dashed #ccc\",\n borderRadius: \"10px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#aaa\",\n marginTop: \"2rem\",\n cursor: allowGallery ? \"default\" : \"pointer\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n {selectedImage ? (\n <Image\n src={selectedImage}\n alt=\"Preview\"\n fill\n objectFit={imageFit}\n />\n ) : (\n <Stack\n spacing={allowGallery ? 2 : 0}\n sx={{ pt: allowGallery ? 2 : 0 }}\n >\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: 1.5,\n }}\n >\n <Box sx={{ paddingBottom: \"0.5rem\" }}>\n <GrUpload />\n </Box>\n {placeholder}\n </Box>\n {allowGallery && (\n <Stack spacing={1.5}>\n {!disableCamera && (\n <Button\n sx={{ width: \"9rem\" }}\n variant=\"outlined\"\n color=\"info\"\n startIcon={<MdOutlineCameraAlt size={16} />}\n onClick={() =>\n document.getElementById(\"camera-upload\")?.click()\n }\n >\n دوربین\n </Button>\n )}\n <Button\n sx={{ width: \"9rem\" }}\n variant=\"outlined\"\n color=\"info\"\n startIcon={<GrGallery size={16} />}\n onClick={() =>\n document.getElementById(\"gallery-upload\")?.click()\n }\n >\n گالری\n </Button>\n </Stack>\n )}\n {!allowGallery && (\n <input\n id=\"file-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture={allowGallery ? undefined : \"environment\"}\n onChange={(event) => {\n handleImageChange(event, \"camera\");\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n )}\n </Stack>\n )}\n </label>\n\n {/* Hidden file inputs for gallery and camera */}\n <input\n id=\"gallery-upload\"\n type=\"file\"\n accept=\"image/*\"\n onChange={(event) => {\n handleImageChange(event, \"gallery\");\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n <input\n id=\"camera-upload\"\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n onChange={(event) => {\n handleImageChange(event, \"camera\");\n field.onChange(event.target.files?.[0] || null);\n }}\n style={{ display: \"none\" }}\n />\n\n {selectedImage && (\n <Box\n sx={{ display: \"flex\", justifyContent: \"center\", marginTop: 2 }}\n >\n <Button\n onClick={() => {\n setSelectedImage(null);\n setValue(name, null as unknown as T[typeof name]);\n\n (\n document.getElementById(\n \"gallery-upload\"\n ) as HTMLInputElement\n ).value = \"\";\n (\n document.getElementById(\"camera-upload\") as HTMLInputElement\n ).value = \"\";\n }}\n variant=\"outlined\"\n color=\"error\"\n sx={{\n padding: \"0.25rem 1rem\",\n fontSize: 14,\n }}\n >\n حذف تصویر\n </Button>\n </Box>\n )}\n\n {errors[name] && (\n <Typography color=\"error\" variant=\"body2\" sx={{ mt: 1.5, ml: 1 }}>\n {String(errors[name]?.message || \"\")}\n </Typography>\n )}\n </>\n )}\n />\n );\n};\n\nexport default UploadImage;\n","\"use client\";\n\nimport {\n Box,\n IconButton,\n Paper,\n Typography,\n CircularProgress,\n useTheme,\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n} from \"@mui/material\";\nimport { MdMyLocation, MdOutlineClear } from \"react-icons/md\";\nimport { useEffect, useRef, useState } from \"react\";\nimport toast, { Toaster } from \"react-hot-toast\";\nimport { Control, FieldPath, useController } from \"react-hook-form\";\n\ninterface SubCustomerFormFields {\n fullName: string;\n phoneNumber: string;\n address: string;\n cityId: number;\n customerType: number;\n remittanceDiscrepancyTolerancePercent: number | null;\n lat: number | null;\n long: number | null;\n}\n\ninterface MapPickerProps {\n control: Control<SubCustomerFormFields>;\n nameLat: FieldPath<SubCustomerFormFields>;\n nameLong: FieldPath<SubCustomerFormFields>;\n nameAddress?: FieldPath<SubCustomerFormFields>;\n isLoading?: boolean;\n defaultLat?: number;\n defaultLng?: number;\n defaultZoom?: number;\n minZoom?: number;\n maxZoom?: number;\n}\n\nexport default function MapLocationPicker({\n control,\n nameLat,\n nameLong,\n nameAddress,\n isLoading = false,\n defaultLat = 36.557153,\n defaultLng = 52.679547,\n defaultZoom = 16,\n minZoom = 10,\n maxZoom = 19,\n}: MapPickerProps) {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === \"dark\";\n\n const { field: latField, fieldState: latState } = useController({\n name: nameLat,\n control,\n });\n const { field: longField, fieldState: longState } = useController({\n name: nameLong,\n control,\n });\n const addressController = nameAddress\n ? useController({ name: nameAddress, control })\n : null;\n\n const error = !!latState.error || !!longState.error;\n const helperText = latState.error?.message || longState.error?.message || \"\";\n\n const latitude = latField.value;\n const longitude = longField.value;\n\n const handleLocationChange = (lat: number | null, lng: number | null) => {\n latField.onChange(lat);\n longField.onChange(lng);\n };\n\n const handleAddressChange = nameAddress\n ? (address: string) => addressController?.field.onChange(address)\n : undefined;\n\n const mapRef = useRef<HTMLDivElement>(null);\n const mapInstanceRef = useRef<any>(null);\n const markerRef = useRef<any>(null);\n\n const [isMapLoading, setIsMapLoading] = useState(true);\n const [isGeocoding, setIsGeocoding] = useState(false);\n const [isGeolocating, setIsGeolocating] = useState(false);\n const [showGpsDialog, setShowGpsDialog] = useState(false);\n const [gpsErrorType, setGpsErrorType] = useState<\n \"permission\" | \"gps_off\" | \"other\"\n >(\"other\");\n\n const [zoom, setZoom] = useState<number>(defaultZoom);\n\n // Determine initial position and zoom based on existing lat/long\n const hasExistingLocation = latitude !== null && longitude !== null;\n const initialLat = hasExistingLocation ? latitude : defaultLat;\n const initialLng = hasExistingLocation ? longitude : defaultLng;\n const initialZoom = hasExistingLocation ? 17 : defaultZoom; // Closer zoom if location exists\n\n /* -------------------- Load Leaflet -------------------- */\n useEffect(() => {\n if (!document.getElementById(\"leaflet-css\")) {\n const link = document.createElement(\"link\");\n link.id = \"leaflet-css\";\n link.rel = \"stylesheet\";\n link.href =\n \"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.css\";\n document.head.appendChild(link);\n }\n\n const script = document.createElement(\"script\");\n script.src =\n \"https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.js\";\n script.async = true;\n\n script.onload = () => {\n setIsMapLoading(false);\n initializeMap();\n };\n\n document.body.appendChild(script);\n\n return () => {\n if (mapInstanceRef.current) {\n mapInstanceRef.current.remove();\n mapInstanceRef.current = null;\n }\n };\n }, []);\n\n /* -------------------- Reverse Geocode -------------------- */\n const reverseGeocode = async (lat: number, lng: number) => {\n try {\n const response = await fetch(\n `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}&accept-language=fa`\n );\n if (!response.ok) throw new Error(\"Failed to fetch address\");\n const data = await response.json();\n const fullAddress = data.display_name || \"\";\n const parts = fullAddress.split(\",\");\n return parts\n .slice(0, 4)\n .map((p: string) => p.trim())\n .join(\"، \");\n } catch {\n return \"\";\n }\n };\n\n /* -------------------- Initialize Map -------------------- */\n const initializeMap = () => {\n if (!(window as any).L || !mapRef.current || mapInstanceRef.current) return;\n const L = (window as any).L;\n\n const map = L.map(mapRef.current, {\n attributionControl: false,\n minZoom,\n }).setView([initialLat, initialLng], initialZoom);\n\n L.tileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n attribution: \"© OpenStreetMap contributors\",\n maxZoom,\n }).addTo(map);\n\n map.on(\"zoomend\", () => {\n setZoom(map.getZoom());\n });\n\n // If there is an existing location, place marker immediately\n if (hasExistingLocation) {\n markerRef.current = L.marker([initialLat, initialLng], {\n draggable: true,\n }).addTo(map);\n\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat, lng } = e.target.getLatLng();\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n }\n\n // Click to place/move marker\n map.on(\"click\", async (e: any) => {\n const { lat, lng } = e.latlng;\n\n if (!markerRef.current) {\n markerRef.current = L.marker([lat, lng], { draggable: true }).addTo(\n map\n );\n markerRef.current.on(\"dragend\", async (dragEvent: any) => {\n const { lat: dragLat, lng: dragLng } = dragEvent.target.getLatLng();\n handleLocationChange(dragLat, dragLng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(dragLat, dragLng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([lat, lng]);\n }\n\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n\n mapInstanceRef.current = map;\n };\n\n /* -------------------- Update marker and view when lat/long changes -------------------- */\n useEffect(() => {\n if (!mapInstanceRef.current || !mapRef.current) return;\n\n const L = (window as any).L;\n\n if (latitude === null || longitude === null) {\n if (markerRef.current) {\n markerRef.current.remove();\n markerRef.current = null;\n }\n return;\n }\n\n if (!markerRef.current) {\n markerRef.current = L.marker([latitude, longitude], {\n draggable: true,\n }).addTo(mapInstanceRef.current);\n\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat, lng } = e.target.getLatLng();\n handleLocationChange(lat, lng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([latitude, longitude]);\n }\n\n // Smoothly pan/zoom to new location\n mapInstanceRef.current.setView([latitude, longitude], zoom, {\n animate: true,\n });\n }, [latitude, longitude]);\n\n /* -------------------- Current Location Handling -------------------- */\n const checkGeolocationSupport = () => {\n if (!navigator.geolocation) {\n toast.error(\"مرورگر شما از موقعیت مکانی پشتیبانی نمی‌کند.\");\n return false;\n }\n return true;\n };\n\n const handleCurrentLocation = async () => {\n if (!checkGeolocationSupport() || !mapInstanceRef.current) return;\n\n // Permission check\n if (navigator.permissions) {\n try {\n const permissionStatus = await navigator.permissions.query({\n name: \"geolocation\",\n });\n if (permissionStatus.state === \"denied\") {\n setGpsErrorType(\"permission\");\n setShowGpsDialog(true);\n return;\n }\n } catch {\n // Ignore if Permissions API not supported\n }\n }\n\n setIsGeolocating(true);\n\n const timeoutId = setTimeout(() => {\n if (isGeolocating) {\n setIsGeolocating(false);\n setGpsErrorType(\"gps_off\");\n setShowGpsDialog(true);\n }\n }, 5000);\n\n navigator.geolocation.getCurrentPosition(\n async (pos) => {\n clearTimeout(timeoutId);\n setIsGeolocating(false);\n\n const { latitude: lat, longitude: lng } = pos.coords;\n const map = mapInstanceRef.current;\n const L = (window as any).L;\n\n handleLocationChange(lat, lng);\n\n if (!markerRef.current) {\n markerRef.current = L.marker([lat, lng], { draggable: true }).addTo(\n map\n );\n markerRef.current.on(\"dragend\", async (e: any) => {\n const { lat: dragLat, lng: dragLng } = e.target.getLatLng();\n handleLocationChange(dragLat, dragLng);\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(dragLat, dragLng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n });\n } else {\n markerRef.current.setLatLng([lat, lng]);\n }\n\n map.setView([lat, lng], 17, { animate: true });\n\n if (handleAddressChange) {\n setIsGeocoding(true);\n const address = await reverseGeocode(lat, lng);\n handleAddressChange(address);\n setIsGeocoding(false);\n }\n\n toast.success(\"موقعیت مکانی با موفقیت دریافت شد\");\n },\n (error) => {\n clearTimeout(timeoutId);\n setIsGeolocating(false);\n\n switch (error.code) {\n case error.PERMISSION_DENIED:\n setGpsErrorType(\"permission\");\n break;\n case error.POSITION_UNAVAILABLE:\n case error.TIMEOUT:\n setGpsErrorType(\"gps_off\");\n break;\n default:\n setGpsErrorType(\"other\");\n break;\n }\n setShowGpsDialog(true);\n },\n {\n enableHighAccuracy: true,\n timeout: 8000,\n maximumAge: 0,\n }\n );\n };\n\n const handleClearLocation = () => {\n if (markerRef.current) {\n markerRef.current.remove();\n markerRef.current = null;\n }\n handleLocationChange(null, null);\n if (handleAddressChange) handleAddressChange(\"\");\n };\n\n const handleGpsDialogClose = () => setShowGpsDialog(false);\n const handleRetryLocation = () => {\n setShowGpsDialog(false);\n setTimeout(handleCurrentLocation, 500);\n };\n const handleOpenSettings = () => {\n setShowGpsDialog(false);\n toast(\n <div dir=\"rtl\" style={{ textAlign: \"right\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>\n لطفاً مراحل زیر را انجام دهید:\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۱. تنظیمات دستگاه\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۲. موقعیت مکانی\n </Typography>\n <Typography variant=\"caption\" component=\"div\">\n ۳. فعال کردن GPS\n </Typography>\n </div>,\n { duration: 8000 }\n );\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Toaster position=\"top-center\" />\n\n {/* GPS Error Dialog */}\n <Dialog open={showGpsDialog} onClose={handleGpsDialogClose}>\n <DialogTitle>مشکل در دریافت موقعیت مکانی</DialogTitle>\n <DialogContent>\n {/* ... same dialog content as before ... */}\n {gpsErrorType === \"permission\" ? (\n <Typography>\n دسترسی به موقعیت مکانی رد شده است.\n <br />\n ۱. روی آیکون قفل در نوار آدرس کلیک کنید\n <br />\n ۲. موقعیت مکانی → اجازه دهید\n </Typography>\n ) : gpsErrorType === \"gps_off\" ? (\n <Typography>GPS خاموش است. لطفاً فعال کنید.</Typography>\n ) : (\n <Typography>خطایی رخ داده است. دوباره تلاش کنید.</Typography>\n )}\n </DialogContent>\n <DialogActions sx={{ pb: 2, pr: 2 }}>\n <Button onClick={handleGpsDialogClose}>انصراف</Button>\n {gpsErrorType === \"permission\" ? (\n <Button\n onClick={handleRetryLocation}\n variant=\"contained\"\n color=\"primary\"\n >\n تلاش مجدد\n </Button>\n ) : (\n <Button\n onClick={handleOpenSettings}\n variant=\"contained\"\n color=\"primary\"\n >\n راهنما\n </Button>\n )}\n </DialogActions>\n </Dialog>\n\n <Box sx={{ position: \"relative\", height: \"370px\", width: \"100%\" }}>\n <Paper\n sx={{\n height: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: 2,\n border: error ? 2 : 0,\n borderColor: error ? \"error.main\" : \"transparent\",\n }}\n >\n {(isMapLoading || isGeocoding || isGeolocating || isLoading) && (\n <Box\n sx={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: isDarkMode\n ? \"rgba(18,18,18,0.9)\"\n : \"rgba(255,255,255,0.8)\",\n zIndex: 1000,\n flexDirection: \"column\",\n gap: 1,\n }}\n >\n <CircularProgress />\n <Typography>\n {isMapLoading\n ? \"در حال بارگذاری نقشه...\"\n : isLoading\n ? \"در حال بارگذاری اطلاعات موقعیت...\"\n : isGeocoding\n ? \"در حال دریافت آدرس...\"\n : \"در حال دریافت موقعیت فعلی...\"}\n </Typography>\n </Box>\n )}\n\n <div ref={mapRef} style={{ height: \"100%\", width: \"100%\" }} />\n\n <Box\n sx={{\n position: \"absolute\",\n bottom: 16,\n right: 16,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 1,\n zIndex: 1000,\n }}\n >\n <IconButton\n onClick={handleCurrentLocation}\n disabled={isGeolocating}\n sx={{\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"white\",\n color: isDarkMode ? \"white\" : \"#1e1e1e\",\n boxShadow: 2,\n \"&:hover\": {\n backgroundColor: isDarkMode ? \"#2a2a2a\" : \"#f5f5f5\",\n },\n }}\n title=\"موقعیت فعلی\"\n >\n <MdMyLocation />\n </IconButton>\n\n {hasExistingLocation && (\n <IconButton\n onClick={handleClearLocation}\n sx={{\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"white\",\n color: theme.palette.error.main,\n boxShadow: 2,\n \"&:hover\": {\n backgroundColor: isDarkMode ? \"#2a2a2a\" : \"#f5f5f5\",\n },\n }}\n title=\"پاک کردن موقعیت\"\n >\n <MdOutlineClear />\n </IconButton>\n )}\n </Box>\n </Paper>\n </Box>\n\n <Box\n sx={{\n mt: 1,\n p: 1.5,\n backgroundColor: isDarkMode ? \"#1e1e1e\" : \"#f5f5f5\",\n borderRadius: 1,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n }}\n >\n <Typography variant=\"body2\" sx={{ fontFamily: \"monospace\" }}>\n <strong>عرض جغرافیایی:</strong>{\" \"}\n {typeof latitude === \"number\" ? latitude.toFixed(6) : \"—\"}\n </Typography>\n <Typography variant=\"body2\" sx={{ fontFamily: \"monospace\" }}>\n <strong>طول جغرافیایی:</strong>{\" \"}\n {typeof longitude === \"number\" ? longitude.toFixed(6) : \"—\"}\n </Typography>\n </Box>\n\n {/* Error message display */}\n {error && helperText && (\n <Typography\n variant=\"caption\"\n sx={{\n color: \"error.main\",\n mt: 0.5,\n display: \"block\",\n px: 1.5,\n }}\n >\n {helperText}\n </Typography>\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":["ConfirmationDialog","MuiAccordion","theme","MuiAccordionSummary","MuiAccordionDetails","import_material","React","import_react","import_material","import_react","theme","Image","Dialog","DialogTitle","DialogContent","Button","import_material","React","Autocomplete","value","TextField","import_material","import_react","toast","React","import_material","import_react","import_io","theme","React","import_react","import_material","React","import_react_hook_form","import_material","import_react","React","React","import_Dialog","import_DialogContent","import_DialogTitle","import_material","Dialog","DialogTitle","theme","DialogContent","DialogActions","import_material","import_react","import_react_hook_form","import_md","import_material","import_react","Draggable","moment","theme","import_material","import_md","theme","import_material","import_Dialog","import_DialogActions","import_DialogContent","import_DialogTitle","import_react","import_md","import_react_hook_form","import_common","theme","Dialog","DialogTitle","DialogContent","DialogActions","import_material","import_fa","import_react","import_md","table","ClearIcon","import_react","import_react_hook_form","import_material","import_moment_jalaali","import_react","import_react_hook_form","import_md","moment","React","nowUTC","dateTimeWithIranTime","dayjs","CircularProgress","moment","Grid","import_yup","import_Button","import_Grid2","import_system","import_moment","import_react","import_react_hook_form","import_fa","yup","moment","defaultValues","currentDate","Grid","Button","import_material","import_CircularProgress","import_x_date_pickers","import_AdapterMomentJalaali","import_dayjs","import_moment_jalaali","import_react","import_react_hook_form","moment","React","CircularProgress","dayjs","nowUTC","dateTimeWithIranTime","import_material","import_system","import_x_date_pickers","import_AdapterMomentJalaali","import_moment_jalaali","import_react","import_react_hook_form","moment","JalaliDatePicker","useMediaQuery","React","import_material","import_x_date_pickers","import_AdapterMomentJalaali","import_moment_jalaali","import_react","import_react_hook_form","moment","React","import_material","import_image","import_react","import_react_hook_form","import_md","import_material","import_image","import_react","import_md","Image","heic2any","height","React","theme","Image","import_material","import_md","import_image","import_react","Image","src","import_utils","import_material","import_Button","import_Dialog","import_DialogContent","import_DialogTitle","import_image","import_react","import_io5","theme","Image","Dialog","DialogTitle","DialogContent","Button","import_material","import_useMediaQuery","import_system","import_x_date_pickers","import_AdapterMomentJalaali","import_dayjs","import_moment_jalaali","import_react","import_react_hook_form","moment","JalaliDatePicker","useMediaQuery","React","dayjs","React","import_Dialog","import_DialogActions","import_DialogContent","import_DialogTitle","import_material","import_common","import_md","ConfirmationDialog","Dialog","DialogTitle","theme","DialogContent","DialogActions","import_material","import_react","theme","React","import_utils","import_material","import_system","React","import_fa","Stack","React","import_react_hook_form","import_material","import_theme","import_system","FormControl","FormLabel","theme","RadioGroup","FormControlLabel","Radio","import_md","import_material","import_react","React","import_material","import_system","import_react","React","React","Box","Stepper","Step","StepButton","import_material","import_system","import_react","import_pi","theme","React","import_material","import_styles","import_react","React","sortModel","Skeleton","import_CircularProgress","import_TextField","import_react","import_react_hook_form","React","TextField","InputAdornment","CircularProgress","PatternFormatCustom","import_TextField","import_react","import_react_hook_form","import_react_number_format","import_CircularProgress","import_InputAdornment","React","TextField","InputAdornment","CircularProgress","NumericFormatCustom","import_CircularProgress","import_InputAdornment","import_TextField","import_react","import_react_hook_form","React","TextField","InputAdornment","CircularProgress","import_react","import_react_hook_form","import_material","import_gr","import_md","import_image","UploadImage","height","React","Image","import_material","import_md","import_react","import_react_hot_toast","import_react_hook_form","theme","toast","error"]}