cr-ui-lib 1.1.21 → 1.1.23

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/components/button/PlainButton.tsx","../src/components/button/CollapseButton.tsx","../src/components/button/Button.tsx","../src/components/assets/RefreshIcon.tsx","../src/components/cards/components/ErrorGraphContet.tsx","../src/components/cards/components/LineChart.tsx","../src/components/cards/components/LoaderGraphContent.tsx","../src/components/cards/GraphedCard.tsx","../src/components/cards/components/ErrorContent.tsx","../src/components/cards/components/LoaderContent.tsx","../src/components/cards/SimpleCard.tsx","../src/components/common/Label.tsx","../src/components/graph/MultiLineGraph.tsx","../src/components/graph/SingleLineGraph.tsx","../src/components/inputs/CommonInput.tsx","../src/utility/daterange.tsx","../src/components/inputs/DateRange.tsx","../src/components/inputs/MultipleAutoSuggestionInput.tsx","../src/components/inputs/SingleListInput.tsx","../src/components/inputs/SingleSelectDropdown.tsx","../src/components/inputs/SelectionButton.tsx","../src/components/inputs/SingleDateInput.tsx","../src/components/inputs/TimeInput.tsx","../src/components/inputs/CommonInputSingle.tsx","../src/components/table/Pagination.tsx","../src/components/table/TableHeader.tsx","../src/components/table/DynamicTable.tsx","../src/components/table/DynamicTableV2.tsx","../src/components/toast/ErrorToast.tsx","../src/components/toast/SuccessToast.tsx","../src/components/wrappers/NavBar.tsx","../src/components/wrappers/Modal.tsx","../src/components/wrappers/PopupWrapper.tsx","../src/components/wrappers/SideNav.tsx","../src/components/wrappers/Box.tsx","../src/components/wrappers/BoxHeaders.tsx","../src/components/wrappers/BoxBody.tsx"],"names":["jsx","twMerge","jsxs","ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Title","Tooltip","Filler","Legend","useRef","useState","useEffect","useMemo","label","Line","React","_a","isValid","earliestDate","className","ChevronLeft","ChevronRight","Fragment","useLayoutEffect","createPortal","useCallback","parseISO","format","DatePicker","startOfDay","isToday","ReactPaginate","_b"],"mappings":"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","file":"index.js","sourcesContent":["import { twMerge } from \"tailwind-merge\";\n\ninterface PlainButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\nconst PlainButton = ({ className, children, ...rest }: PlainButtonProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"min-h-[26px] w-[50px] bg-white text-center rounded-[4px] flex items-center justify-center border border-[#E2E2E2] text-black cursor-pointer hover:bg-gray-100\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default PlainButton;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n mainClass?: string;\n paragraphClass?: string;\n paragraphContent: string;\n title: string;\n titleClass?: string;\n}\nconst CollapseButton = ({\n isOpen,\n mainClass,\n paragraphClass,\n paragraphContent,\n title,\n titleClass,\n ...rest\n}: Props) => {\n return (\n <div\n className={twMerge(\n \"min-h-[40px] w-full px-[16px] py-[8px] bg-white border border-[#E2E2E2] rounded-[4px]\",\n mainClass\n )}\n >\n {/* Header */}\n <div\n {...rest}\n className=\"flex justify-between items-center cursor-pointer\"\n >\n <p\n className={twMerge(\n \"font-semibold text-[14px] transition-colors duration-300\",\n isOpen ? \"text-[#4062E5]\" : \"text-[#000]\",\n titleClass\n )}\n >\n {title}\n </p>\n <svg\n className={twMerge(\n \"transition-transform duration-300\",\n !isOpen && \"rotate-180\"\n )}\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M0 5L5 0L10 5H0Z\" fill=\"#757575\" />\n </svg>\n </div>\n\n <div\n className={twMerge(\n `overflow-hidden transition-all duration-300 ease-in-out`,\n isOpen ? \"max-h-40 opacity-100 mt-1\" : \"max-h-0 opacity-0 mt-0\"\n )}\n >\n <p className={twMerge(\"font-normal text-[14px]\", paragraphClass)}>\n {paragraphContent}\n </p>\n </div>\n </div>\n );\n};\n\nexport default CollapseButton;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface ButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\nconst Button = ({ className, children, ...rest }: ButtonProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"min-h-[26px] w-[50px] bg-[#4683B4] text-center flex items-center justify-center rounded-[4px] text-white cursor-pointer\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default Button;\n","const RefreshIcon = ({ height = \"24px\", width = \"24px\", color = \"#000\" }) => (\n <svg\n fill={color}\n width={width}\n height={height}\n viewBox=\"0 0 32 32\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M27.1 14.313V5.396L24.158 8.34c-2.33-2.325-5.033-3.503-8.11-3.503C9.902 4.837 4.901 9.847 4.899 16c.001 6.152 5.003 11.158 11.15 11.16 4.276 0 9.369-2.227 10.836-8.478l.028-.122h-3.23l-.022.068c-1.078 3.242-4.138 5.421-7.613 5.421a8 8 0 0 1-5.691-2.359A7.993 7.993 0 0 1 8 16.001c0-4.438 3.611-8.049 8.05-8.049 2.069 0 3.638.58 5.924 2.573l-3.792 3.789H27.1z\" />\n </svg>\n);\n\nexport default RefreshIcon;\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../../assets/info.svg\";\nimport RefreshIcon from \"../../assets/RefreshIcon\";\ninterface Props {\n title: string;\n tooltip_text: string;\n image?: React.ReactNode;\n handleRefresh?: () => void;\n className?: string;\n}\nconst ErrorGraphContent = ({\n className,\n title,\n tooltip_text,\n image,\n handleRefresh,\n}: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] h-[180px] w-full border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex justify-between relative\">\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n <span className=\"font-medium\" style={{ letterSpacing: \"0.5px\" }}>\n {title}\n </span>\n\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"170px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div\n className=\"flex justify-center mt-3 w-[53px] h-[16px] cursor-pointer\"\n onClick={handleRefresh}\n >\n <div className=\"flex gap-1 items-center\">\n <RefreshIcon height=\"16px\" width=\"16px\" color=\"#4062E5\" />\n <p className=\"text-[#4062E5] text-[10px]\">Refresh</p>\n </div>\n </div>\n </div>\n\n <div className=\"ml-4\">{image}</div>\n <div className=\"absolute w-full h-full top-[70px]\">\n <div className=\"h-[90px] bg-gray-300 rounded w-full animate-pulse\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ErrorGraphContent;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\n\ninterface LineChartProps {\n data: number[];\n label: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n lineColor?: string;\n tooltipIcon?: string;\n}\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst LineChart = ({\n data,\n label,\n lineColor = \"#17CA43\",\n gradientColor1 = \"rgba(23, 202, 67, 0.5)\",\n gradientColor0 = \"rgba(23, 202, 67, 0)\",\n pointLabelColor = \"#4062E5\",\n labelPopupTitle = \"Requests Completed\",\n tooltipIcon,\n}: LineChartProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n // Force chart to re-render when window resizes\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const months = label;\n\n const values = data;\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: false,\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n },\n y: {\n display: false,\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n },\n },\n\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n tooltipEl.innerHTML = \"<div></div>\";\n document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n const value = dataPoint?.parsed.y;\n const label = dataPoint?.label;\n const arrowSize = 8;\n const position = context.chart.canvas.getBoundingClientRect();\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = \"0px\";\n tooltipEl.style.top = \"0px\";\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.innerHTML = `\n <div style=\"position: relative;height: 57px; background:white; border:1px solid rgba(16, 30, 115, 0.1); padding:10px; border-radius:4px; font-size:12px; color:#333; display:flex; align-items:center; gap:10px;\">\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#757575;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n const windowWidth = window.innerWidth;\n const tooltipLeftEdge = pointX - tooltipWidth / 2;\n const tooltipRightEdge = pointX + tooltipWidth / 2;\n let arrowLeftPercent = 50;\n let xAdjustment = 0;\n if (tooltipLeftEdge < 10) {\n xAdjustment = 10 - tooltipLeftEdge;\n } else if (tooltipRightEdge > windowWidth - 10) {\n xAdjustment = windowWidth - 10 - tooltipRightEdge;\n }\n\n const xPosition = tooltipLeftEdge + xAdjustment;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(10, Math.min(90, arrowLeftPercent));\n\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; display: flex; align-items: center; gap: 10px;\">\n\n <!-- Outer arrow (border color) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: ${outerArrowSize}px solid transparent;\n border-right: ${outerArrowSize}px solid transparent;\n border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\n \"></div>\n\n <!-- Inner arrow (white background) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%) translateY(-1px);\n width: 0;\n height: 0;\n border-left: ${innerArrowSize}px solid transparent;\n border-right: ${innerArrowSize}px solid transparent;\n border-top: ${innerArrowSize}px solid white;\n \"></div>\n\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n ${\n tooltipIcon\n ? tooltipIcon\n : ` <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 9 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\"\n fill=\"#4683B4\"\n />\n </svg>`\n }&nbsp;\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n tooltipEl.innerHTML = innerHtml;\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"index\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#17CA43\",\n borderColor: \"white\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n afterDraw: (chart: any) => {\n const tooltip = chart.tooltip;\n if (tooltip?._active?.length) {\n const activePoint = chart.tooltip._active[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: months,\n datasets: [\n {\n label: labelPopupTitle,\n data: values,\n borderColor: lineColor,\n borderWidth: 2,\n backgroundColor: (context: any) => {\n if (!context.chart.chartArea) return \"rgba(23, 202, 67, 0.5)\";\n const { ctx, chartArea } = context.chart;\n const gradient = ctx.createLinearGradient(\n 0,\n chartArea.bottom,\n 0,\n chartArea.top\n );\n gradient.addColorStop(0, gradientColor0);\n gradient.addColorStop(1, gradientColor1);\n return gradient;\n },\n fill: true,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: pointLabelColor,\n },\n ],\n }),\n [months, values]\n );\n\n return (\n <div style={{ width: \"100%\", height: \"100px\" }}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine]}\n />\n </div>\n );\n};\nexport default LineChart;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props {\n className?: string;\n}\nconst LoaderGraphContent = ({ className }: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] h-[180px] w-full border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex justify-between relative\">\n <div className=\"flex-1 flex flex-col justify-between relative\">\n <div className=\"flex items-center relative\">\n <div className=\"h-4 bg-gray-300 rounded w-1/2 animate-pulse\"></div>\n <div className=\"ml-1 mt-1 h-3 w-3 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n <div className=\"mt-3 flex items-baseline\">\n <div className=\"h-6 bg-gray-300 rounded w-1/4 animate-pulse\"></div>\n </div>\n </div>\n\n <div className=\"ml-4 h-10 w-10 bg-gray-300 rounded-full animate-pulse\"></div>\n <div className=\"absolute w-full h-full top-[70px]\">\n <div className=\"h-[90px] bg-gray-300 rounded w-full animate-pulse\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default LoaderGraphContent;\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport ErrorGraphContent from \"./components/ErrorGraphContet\";\nimport LineChart from \"./components/LineChart\";\nimport LoaderGraphContent from \"./components/LoaderGraphContent\";\ninterface GraphedCardProps {\n className?: string;\n title: string;\n tooltip_text: string;\n subText?: string;\n value: string;\n unit?: string;\n image?: React.ReactNode;\n lineData: number[];\n lineLabel: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n isCustomTitle?: boolean;\n customTitle?: React.ReactNode;\n lineColor?: string;\n isLoading: boolean;\n isError: boolean;\n handleRefresh?: () => void;\n tooltipIcon?: string;\n}\n\nconst GraphedCard = ({\n className,\n title,\n value,\n subText = \"\",\n unit = \"\",\n tooltip_text,\n image,\n gradientColor0,\n gradientColor1,\n pointLabelColor,\n labelPopupTitle,\n lineData,\n lineLabel,\n isCustomTitle = false,\n customTitle,\n lineColor,\n isLoading,\n isError,\n handleRefresh,\n tooltipIcon,\n}: GraphedCardProps) => {\n if (isLoading) {\n return <LoaderGraphContent className={className} />;\n }\n\n if (isError) {\n return (\n <ErrorGraphContent\n handleRefresh={handleRefresh}\n image={image}\n tooltip_text={tooltip_text}\n title={title}\n className={className}\n />\n );\n }\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] w-full flex h-[180px] min-w-[210px] justify-between border border-[#E2E2E2]\",\n className\n )}\n style={{\n boxShadow: \"0px 12px 26px 0px #101E730F\",\n }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex justify-between relative\">\n <div className={`flex-1 flex flex-col justify-between gap-1`}>\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n {isCustomTitle ? (\n customTitle\n ) : (\n <span\n className=\"font-semibold\"\n style={{ letterSpacing: \"0.5px\" }}\n >\n {title}\n </span>\n )}\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"215px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div className={`flex-grow items-center`}>\n <span className=\"text-[24px] font-semibold text-gray-900\">\n {subText == \"$\" ? \"$\" : \"\"}\n {value.trim()}\n {subText == \"$\" ? \"\" : subText}\n </span>\n <span className=\"text-gray-500 ml-2\">{unit}</span>\n </div>\n </div>\n\n <div className=\"ml-4\">{image}</div>\n <div className=\"absolute w-full h-full top-16\">\n <LineChart\n data={lineData}\n label={lineLabel}\n lineColor={lineColor}\n gradientColor0={gradientColor0}\n gradientColor1={gradientColor1}\n pointLabelColor={pointLabelColor}\n labelPopupTitle={labelPopupTitle}\n tooltipIcon={tooltipIcon}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GraphedCard;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport RefreshIcon from \"../../assets/RefreshIcon\";\nimport InfoIcon from \"../../assets/info.svg\";\ninterface ErrorContentProps {\n title: string;\n tooltip_text: string;\n image?: React.ReactNode;\n handleRefresh?: () => void;\n className?: string;\n}\nconst ErrorContent = ({\n title,\n tooltip_text,\n image,\n handleRefresh,\n className,\n}: ErrorContentProps) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] min-h-[100px] w-full flex justify-between border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n <span className=\"font-medium\" style={{ letterSpacing: \"0.5px\" }}>\n {title}\n </span>\n\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"170px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n </div>\n <div className=\"mt-2 flex items-baseline\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-[#F2F2F2] w-[190px] h-[28px] animate-pulse\"></div>\n </div>\n <div className=\"flex items-center\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-[#F2F2F2] w-[40px] h-[20px] animate-pulse\"></div>\n <div\n className=\"flex justify-center ml-2 w-[53px] h-[16px] cursor-pointer\"\n onClick={handleRefresh}\n >\n <div className=\"flex gap-1 items-center\">\n <RefreshIcon height=\"16px\" width=\"16px\" color=\"#4062E5\" />\n <p className=\"text-[#4062E5] text-[10px]\">Refresh</p>\n </div>\n </div>\n </div>\n </div>\n <div className=\"ml-4\">{image}</div>\n </div>\n );\n};\n\nexport default ErrorContent;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props {\n className?: string;\n}\nconst LoaderComponent = ({ className }: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] min-h-[100px] w-full flex justify-between border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <div className=\"h-4 bg-gray-300 rounded w-1/2 animate-pulse\"></div>\n <div className=\"ml-1 mt-1 h-3 w-3 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n <div className=\"mt-2 flex items-baseline\">\n <div className=\"h-6 bg-gray-300 rounded w-1/4 animate-pulse\"></div>\n </div>\n <div className=\"mt-2 flex items-center\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-gray-200 w-24 animate-pulse\">\n <div className=\"h-3 w-3 bg-gray-300 rounded-full mr-2\"></div>\n <div className=\"h-3 bg-gray-300 rounded w-12\"></div>\n </div>\n <div className=\"text-gray-500 text-xs ml-2 h-3 bg-gray-300 rounded w-16 animate-pulse\"></div>\n </div>\n </div>\n <div className=\"ml-4 h-10 w-10 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n );\n};\n\nexport default LoaderComponent;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport ErrorContent from \"./components/ErrorContent\";\nimport LoaderComponent from \"./components/LoaderContent\";\n\ninterface SimpleCardProps {\n title: string;\n value: string;\n unit?: string;\n tooltip_text: string;\n subText?: string;\n footerText?: string;\n hasDaysOption?: boolean;\n hasTillDateDayOption?: boolean;\n onDayChange?: (days: string) => void;\n image?: React.ReactNode;\n hasfooterDesign?: boolean;\n footerDesign?: React.ReactNode;\n className?: string;\n isLoading: boolean;\n isError: boolean;\n handleRefresh?: () => void;\n isCustomTitle?: boolean;\n customTitle?: React.ReactNode;\n}\n\nconst SimpleCard = ({\n title,\n value,\n image,\n unit = \"\",\n tooltip_text,\n subText = \"\",\n footerText = \"\",\n hasfooterDesign = false,\n footerDesign,\n hasDaysOption = false,\n hasTillDateDayOption = false,\n onDayChange,\n className,\n handleRefresh,\n isLoading,\n isError,\n isCustomTitle = false,\n customTitle,\n}: SimpleCardProps) => {\n const [selectedDay, setSelectedDay] = React.useState<string>(\"90\");\n const handleDayClick = (label: string) => {\n setSelectedDay(label);\n if (onDayChange) onDayChange(label);\n };\n\n const options = React.useMemo(() => {\n const baseOptions = [\"90\", \"30\", \"7\"];\n if (hasTillDateDayOption) {\n return [...baseOptions, \"till date\"];\n }\n return baseOptions;\n }, [hasTillDateDayOption]);\n\n if (isLoading) {\n return <LoaderComponent className={className} />;\n }\n\n if (isError) {\n return (\n <ErrorContent\n handleRefresh={handleRefresh}\n image={image}\n tooltip_text={tooltip_text}\n title={title}\n className={className}\n />\n );\n }\n\n const renderDayOption = (label: string) => {\n const isSelected = selectedDay === label;\n return (\n <span\n key={label}\n className={`cursor-pointer ${\n isSelected\n ? \"text-[#4683B4] font-semibold\"\n : \"text-[#757575] font-normal\"\n }`}\n style={{ letterSpacing: \"0.5px\", lineHeight: 1 }}\n onClick={() => handleDayClick(label)}\n >\n {label} {label !== \"till date\" && \"days\"}\n </span>\n );\n };\n\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] w-full flex min-h-[100px] min-w-[210px] justify-between border border-[#E2E2E2]\",\n className\n )}\n style={{\n boxShadow: \"0px 12px 26px 0px #101E730F\",\n }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex justify-between\">\n <div className={`flex-1 flex flex-col justify-between gap-1`}>\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n {isCustomTitle ? (\n customTitle\n ) : (\n <span\n className=\"font-semibold\"\n style={{ letterSpacing: \"0.5px\" }}\n >\n {title}\n </span>\n )}\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"215px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div className={`flex-grow items-center`}>\n <span className=\"text-[24px] font-semibold text-gray-900\">\n {subText == \"$\" ? \"$\" : \"\"}\n {value.trim()}\n {subText == \"$\" ? \"\" : subText}\n </span>\n <span className=\"text-gray-500 ml-2\">{unit}</span>\n </div>\n </div>\n <div className=\"ml-4\">{image}</div>\n </div>\n <div className=\"flex items-center gap-2\">\n {hasfooterDesign && footerDesign}\n {!hasDaysOption && (\n <span\n className=\"text-[12px] font-normal\"\n style={{\n color: \"#757575\",\n letterSpacing: \"0.5px\",\n lineHeight: 1,\n }}\n >\n {footerText}\n </span>\n )}\n </div>\n {hasDaysOption && (\n <div className=\"flex gap-[4px] text-[12px] font-normal text-center items-center\">\n {options.map((label, index, array) => (\n <React.Fragment key={label}>\n {renderDayOption(label)}\n {index < array.length - 1 && (\n <p className=\"text-[#757575]\">|</p>\n )}\n </React.Fragment>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SimpleCard;\n","import { twMerge } from \"tailwind-merge\";\ninterface Props {\n title: string;\n classNames?: string;\n}\nconst Label = ({ title, classNames }: Props) => {\n return (\n <p className={twMerge(\"text-[14px] font-semibold \", classNames)}>{title}</p>\n );\n};\n\nexport default Label;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface DataSet {\n data: number[];\n label: string;\n lineColor?: string;\n pointLabelColor?: string;\n}\n\ninterface MultiLineGraphProps {\n datasets: DataSet[];\n xAxisLabels: string[];\n className?: string;\n}\n\n// ✅ Best practice: Register built-in elements once at the top level.\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst MultiLineGraph = ({\n datasets,\n xAxisLabels,\n className = \"\",\n}: MultiLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n const defaultColors = [\n { line: \"#17CA43\", point: \"#17CA43\" },\n { line: \"#FF6B6B\", point: \"#FF4757\" },\n { line: \"#4ECDC4\", point: \"#26D0CE\" },\n { line: \"#45B7D1\", point: \"#3742FA\" },\n { line: \"#FFA726\", point: \"#FF6F00\" },\n { line: \"#AB47BC\", point: \"#8E24AA\" },\n ];\n\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: true,\n grid: {\n drawBorder: true,\n drawTicks: true,\n drawOnChartArea: false,\n },\n },\n y: {\n display: true, // Set to `false` if you want to hide the y-axis labels\n border: {\n display: false,\n },\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n ticks: {\n display: true,\n },\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n // Your external tooltip logic remains the same...\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n document.body.appendChild(tooltipEl);\n }\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n const dataPoints = tooltipModel.dataPoints || [];\n if (dataPoints.length === 0) {\n return;\n }\n const label = dataPoints[0]?.label;\n const dataPointsHtml = dataPoints\n .map(\n (point: any, index: number) => `\n <div style=\"display: flex; align-items: center; gap: 8px; margin: ${\n index > 0 ? \"4px\" : \"0\"\n } 0;\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.0833 0.75H1.91667C1.275 0.75 0.755833 1.275 0.755833 1.91667L0.75 10.0833C0.75 10.725 1.275 11.25 1.91667 11.25H10.0833C10.725 11.25 11.25 10.725 11.25 10.0833V1.91667C11.25 1.275 10.725 0.75 10.0833 0.75ZM10.0833 10.0833H1.91667V1.91667H10.0833V10.0833ZM5.125 8.91667H6.875V6.875H8.91667V5.125H6.875V3.08333H5.125V5.125H3.08333V6.875H5.125V8.91667Z\" fill=\"#4683B4\"/>\n </svg>\n <span style=\"font-weight: bold; color: #757575; margin-top: 1px;\">\n ${\n point.dataset.label\n }: <span style=\"color:#131414; padding-top: 1px;\">${\n point.parsed.y\n }</span>\n </span>\n </div>\n `\n )\n .join(\"\");\n const arrowSize = 8;\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; min-width: 120px;\">\n <div id=\"tooltip-arrow-border\" style=\"\n position: absolute; top: 100%; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: ${outerArrowSize}px solid transparent; border-right: ${outerArrowSize}px solid transparent; border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\">\n </div>\n <div id=\"tooltip-arrow\" style=\"\n position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(-1px); width: 0; height: 0; border-left: ${innerArrowSize}px solid transparent; border-right: ${innerArrowSize}px solid transparent; border-top: ${innerArrowSize}px solid white;\">\n </div>\n <div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${label}</strong></p>\n ${dataPointsHtml}\n </div>\n </div>\n `;\n tooltipEl.innerHTML = innerHtml;\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const position = context.chart.canvas.getBoundingClientRect();\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n let xPosition = pointX - tooltipWidth / 2;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n const arrowBorder = tooltipEl.querySelector(\n \"#tooltip-arrow-border\"\n );\n const arrow = tooltipEl.querySelector(\"#tooltip-arrow\");\n if (arrow && arrowBorder) {\n const arrowLeftOffset = pointX - xPosition;\n (arrow as HTMLElement).style.left = `${arrowLeftOffset}px`;\n (arrowBorder as HTMLElement).style.left = `${arrowLeftOffset}px`;\n }\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n tooltipEl.style.pointerEvents = \"none\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"nearest\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#ffffff\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n // ✅ FIX: Wrap both plugin objects in useMemo to give them a stable identity.\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n beforeDatasetsDraw: (chart: any) => {\n if (chart.tooltip?.getActiveElements()?.length) {\n const activePoint = chart.tooltip.getActiveElements()[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const dashedGridPlugin = useMemo(\n () => ({\n id: \"customGridAndLabels\",\n afterDraw(chart: any) {\n const ctx = chart.ctx;\n const yAxis = chart.scales.y;\n if (!yAxis) return;\n const { left, right } = chart.chartArea;\n ctx.save();\n ctx.setLineDash([4, 4]);\n ctx.strokeStyle = \"rgba(0, 0, 0, 0.1)\";\n ctx.lineWidth = 1;\n const ticks = yAxis.ticks || [];\n ticks.forEach((tick: any, index: number) => {\n if (index === 0) return;\n const yPos = yAxis.getPixelForValue(tick.value);\n ctx.beginPath();\n ctx.moveTo(left, yPos);\n ctx.lineTo(right, yPos);\n ctx.stroke();\n });\n ctx.restore();\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: xAxisLabels,\n datasets: datasets.map((dataset, index) => {\n const colors = defaultColors[index % defaultColors.length];\n return {\n label: dataset.label,\n data: dataset.data,\n borderColor: dataset.lineColor || colors.line,\n backgroundColor: \"transparent\",\n fill: false,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: dataset.pointLabelColor || colors.point,\n tension: 0.5,\n borderWidth: 2,\n hoverBorderWidth: 3.5,\n };\n }),\n }),\n [datasets, xAxisLabels]\n );\n\n return (\n <div className={twMerge(\" w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\n\nexport default MultiLineGraph;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface SingleLineGraphProps {\n data: number[];\n label: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n lineColor?: string;\n className?: string;\n}\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst SingleLineGraph = ({\n data,\n label,\n lineColor = \"#17CA43\",\n gradientColor1 = \"rgba(23, 202, 67, 0.5)\",\n gradientColor0 = \"rgba(23, 202, 67, 0)\",\n pointLabelColor = \"#4062E5\",\n labelPopupTitle = \"Requests Completed\",\n className = \"\",\n}: SingleLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n // Force chart to re-render when window resizes\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const months = label;\n\n const values = data;\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: true,\n\n grid: {\n drawBorder: true,\n drawTicks: true,\n drawOnChartArea: false,\n },\n },\n y: {\n display: true,\n border: {\n display: false,\n },\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n ticks: {\n display: true, // 👈 Add this to hide the number labels\n },\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n tooltipEl.innerHTML = \"<div></div>\";\n document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n const value = dataPoint?.parsed.y;\n const label = dataPoint?.label;\n const arrowSize = 8;\n const position = context.chart.canvas.getBoundingClientRect();\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = \"0px\";\n tooltipEl.style.top = \"0px\";\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.innerHTML = `\n <div style=\"position: relative;height: 57px; background:white; border:1px solid rgba(16, 30, 115, 0.1); padding:10px; border-radius:4px; font-size:12px; color:#333; display:flex; align-items:center; gap:10px;\">\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#757575;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n const windowWidth = window.innerWidth;\n const tooltipLeftEdge = pointX - tooltipWidth / 2;\n const tooltipRightEdge = pointX + tooltipWidth / 2;\n let arrowLeftPercent = 50;\n let xAdjustment = 0;\n if (tooltipLeftEdge < 10) {\n xAdjustment = 10 - tooltipLeftEdge;\n } else if (tooltipRightEdge > windowWidth - 10) {\n xAdjustment = windowWidth - 10 - tooltipRightEdge;\n }\n\n const xPosition = tooltipLeftEdge + xAdjustment;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(10, Math.min(90, arrowLeftPercent));\n\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; display: flex; align-items: center; gap: 10px;\">\n\n <!-- Outer arrow (border color) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: ${outerArrowSize}px solid transparent;\n border-right: ${outerArrowSize}px solid transparent;\n border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\n \"></div>\n\n <!-- Inner arrow (white background) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%) translateY(-1px);\n width: 0;\n height: 0;\n border-left: ${innerArrowSize}px solid transparent;\n border-right: ${innerArrowSize}px solid transparent;\n border-top: ${innerArrowSize}px solid white;\n \"></div>\n\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n tooltipEl.innerHTML = innerHtml;\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"index\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#17CA43\",\n borderColor: \"white\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n afterDraw: (chart: any) => {\n const tooltip = chart.tooltip;\n if (tooltip?._active?.length) {\n const activePoint = chart.tooltip._active[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: months,\n datasets: [\n {\n label: labelPopupTitle,\n data: values,\n borderColor: lineColor,\n backgroundColor: (context: any) => {\n if (!context.chart.chartArea) return \"rgba(23, 202, 67, 0.5)\";\n const { ctx, chartArea } = context.chart;\n const gradient = ctx.createLinearGradient(\n 0,\n chartArea.bottom,\n 0,\n chartArea.top\n );\n gradient.addColorStop(0, gradientColor0);\n gradient.addColorStop(1, gradientColor1);\n return gradient;\n },\n fill: true,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: pointLabelColor,\n },\n ],\n }),\n [months, values]\n );\n\n const dashedGridPlugin = {\n id: \"customGridAndLabels\",\n afterDraw(chart: any) {\n const ctx = chart.ctx;\n const yAxis = chart.scales.y;\n const xAxis = chart.scales.x;\n if (!yAxis || !xAxis) return;\n\n ctx.save();\n ctx.setLineDash([4, 4]);\n ctx.strokeStyle = \"rgba(0, 0, 0, 0.1)\";\n ctx.lineWidth = 1;\n\n const ticks = yAxis.ticks || yAxis.getTicks?.() || [];\n ticks.forEach((tick: any, index: number) => {\n if (index === 0) return;\n const yValue = tick.value ?? tick;\n const yPosition = yAxis.getPixelForValue(yValue);\n ctx.beginPath();\n ctx.moveTo(xAxis.left, yPosition);\n ctx.lineTo(xAxis.right, yPosition);\n ctx.stroke();\n });\n ctx.restore();\n },\n };\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\nexport default SingleLineGraph;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface CommonInputProps\n extends React.HTMLAttributes<HTMLInputElement | HTMLTextAreaElement> {\n label?: string;\n hasDollar?: boolean;\n value: string;\n onChange: (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n placeholder?: string;\n type?: string;\n height?: string;\n isTextarea?: boolean;\n className?: string;\n maxLength?: number;\n hasIcon?: boolean;\n icon?: React.ReactNode;\n labelColor?: string;\n borderWeight?: string;\n error?: string;\n dollarClass?: string;\n}\n\nconst CommonInput: React.FC<CommonInputProps> = ({\n label,\n hasDollar = false,\n dollarClass = \"\",\n value,\n onChange,\n placeholder = \"\",\n type = \"text\",\n height = \"h-[48px]\",\n isTextarea = false,\n className = \"\",\n maxLength,\n hasIcon = false,\n icon,\n labelColor = \"text-[#131414]\",\n borderWeight = \"border-[2px]\",\n error,\n ...rest\n}) => {\n const inputClasses = twMerge(\n height,\n \"px-3 py-2\",\n borderWeight,\n \"rounded-[8px] text-[14px] text-[#131414] placeholder-[#757575] font-hairline w-full focus:border-[#3C6E97] focus:outline-none resize-none\",\n error ? \"border-red-500 bg-red-100\" : \"border-[#E2E2E2]\",\n hasDollar && !isTextarea && \"pl-7\",\n isTextarea && \"pt-3 align-top\",\n className\n );\n\n return (\n <div className=\"w-full\">\n {/* Label */}\n {label && (\n <p className={twMerge(labelColor, \"text-[14px] font-semibold mb-1\")}>\n {label}\n </p>\n )}\n\n <div className=\"relative\">\n {/* Dollar sign */}\n {hasDollar && !isTextarea && (\n <span\n className={twMerge(\n \"absolute top-1/2 left-3 -translate-y-1/2 text-[#131414] text-[14px] font-medium\",\n dollarClass\n )}\n >\n $\n </span>\n )}\n {hasIcon && icon}\n {/* Input / Textarea */}\n {isTextarea ? (\n <textarea\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n className={inputClasses}\n rows={4}\n maxLength={maxLength}\n {...rest}\n />\n ) : (\n <input\n type={type}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n className={inputClasses}\n maxLength={maxLength}\n {...rest}\n />\n )}\n </div>\n\n {/* Error */}\n {error && <span className=\"text-[12px] text-red-500\">{error}</span>}\n </div>\n );\n};\n\nexport default CommonInput;\n","// ? DATE UTILS\ninterface DateValidationOptions {\n enableYearRange?: boolean;\n yearsBack?: number;\n allowFutureDates?: boolean; // New option to control future date validation\n}\n\nexport const validateAndFormatInput = (\n rawInput: string,\n options: DateValidationOptions = {}\n) => {\n const {\n enableYearRange = true,\n yearsBack = 1,\n allowFutureDates = false,\n } = options;\n\n let digits = rawInput.replace(/\\D/g, \"\");\n\n // Validate month\n if (digits.length >= 2) {\n const month = parseInt(digits.slice(0, 2));\n if (month < 1 || month > 12) {\n digits = digits.slice(0, 1);\n }\n }\n\n // Validate day\n if (digits.length >= 4) {\n const month = parseInt(digits.slice(0, 2));\n const day = parseInt(digits.slice(2, 4));\n\n const daysInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n const maxDays = daysInMonth[month - 1] || 31;\n\n if (day < 1 || day > maxDays) {\n digits = digits.slice(0, 3);\n }\n }\n\n // Validate year range\n if (enableYearRange && digits.length >= 8) {\n const currentYear = new Date().getFullYear();\n const minYear = currentYear - yearsBack;\n const inputYear = parseInt(digits.slice(4, 8));\n\n if (inputYear < minYear || inputYear > currentYear) {\n digits = digits.slice(0, 4);\n }\n }\n\n // Validate complete date against future dates (if we have a complete date)\n if (!allowFutureDates && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2));\n const day = parseInt(digits.slice(2, 4));\n const year = parseInt(digits.slice(4, 8));\n\n const inputDate = new Date(year, month - 1, day);\n const today = new Date();\n today.setHours(23, 59, 59, 999); // Set to end of today\n\n // If the complete date is in the future, truncate to just month/day\n if (inputDate > today) {\n digits = digits.slice(0, 4);\n }\n }\n\n digits = digits.slice(0, 8);\n\n let formatted = \"\";\n if (digits.length > 0) formatted += digits.slice(0, 2);\n if (digits.length >= 3) formatted += `/${digits.slice(2, 4)}`;\n if (digits.length >= 5) formatted += `/${digits.slice(4, 8)}`;\n\n return formatted;\n};\nexport const validateDate = (dateString: string, allowFutureDates = false) => {\n const formatRegex = /^(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])\\/\\d{4}$/;\n if (!formatRegex.test(dateString)) {\n return false;\n }\n\n const [month, day, year] = dateString\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n // Check if the date is valid (handles leap years, etc.)\n if (\n inputDate.getMonth() !== month - 1 ||\n inputDate.getDate() !== day ||\n inputDate.getFullYear() !== year\n ) {\n return false;\n }\n\n if (!allowFutureDates) {\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (inputDate > today) {\n return false;\n }\n }\n\n return true;\n};\nexport const validateDateRange = (\n dateString: string,\n options: {\n allowFutureDates?: boolean;\n minDate?: Date;\n maxDate?: Date;\n yearsBack?: number;\n } = {}\n): boolean => {\n const { allowFutureDates = false, minDate, maxDate, yearsBack } = options;\n\n if (!validateDate(dateString, allowFutureDates)) {\n return false;\n }\n\n const [month, day, year] = dateString\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n if (minDate && inputDate < minDate) {\n return false;\n }\n\n if (maxDate && inputDate > maxDate) {\n return false;\n }\n\n if (yearsBack) {\n const currentYear = new Date().getFullYear();\n const minYear = currentYear - yearsBack;\n if (year < minYear) {\n return false;\n }\n }\n\n return true;\n};\n\nexport function toEndOfDay(date: Date): Date {\n const clean = new Date(date);\n clean.setHours(23, 59, 59, 999);\n return clean;\n}\n\nexport function toMidnight(date: Date): Date {\n const clean = new Date(date); // clone so we don't mutate the original\n clean.setHours(0, 0, 0, 0);\n return clean;\n}\n\nexport function isSameDateMDY(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport {\n isSameDateMDY,\n validateAndFormatInput,\n validateDate,\n} from \"../../utility/daterange\";\n\ninterface PresetRange {\n label: string;\n getValue: () => { start: Date; end: Date };\n}\n\ninterface DateRangePickerProps {\n bgColor?: string;\n dateFunc: (startDate: string, endDate: string) => void;\n start_date?: string;\n end_date?: string;\n yearsBack?: number;\n title?: string;\n titleClass?: string;\n autoOpen?: boolean;\n isDateRangeOnly?: boolean;\n dateRangeClass?: string;\n setIsShowDateRange?: () => void;\n datePopupOnly?: boolean;\n handleExport?: (start_date: string, end_date: string) => Promise<void>;\n setIsExporting?: (value: boolean) => void;\n isExporting?: boolean;\n className?: string;\n}\n\ntype CalendarView = \"day\" | \"month\" | \"year\";\n\nconst DateRangePicker: React.FC<DateRangePickerProps> = ({\n bgColor = \"bg-[#F8F8F8]\",\n dateFunc,\n start_date = \"\",\n end_date = \"\",\n yearsBack = 1,\n title = \"\",\n titleClass = \"\",\n autoOpen = false,\n isDateRangeOnly = false,\n dateRangeClass = \"\",\n setIsShowDateRange,\n datePopupOnly = false,\n handleExport,\n setIsExporting,\n isExporting = false,\n className = \"\",\n}) => {\n const [isOpen, setIsOpen] = useState<boolean>(autoOpen);\n const [isApply, setIsApply] = useState<boolean>(false);\n const originalStartDateRef = useRef<Date | null>(null);\n const originalEndDateRef = useRef<Date | null>(null);\n\n // New state for calendar views\n const [leftCalendarView, setLeftCalendarView] = useState<CalendarView>(\"day\");\n const [rightCalendarView, setRightCalendarView] =\n useState<CalendarView>(\"day\");\n\n const getInitialStartDate = () => {\n if (start_date) {\n const [month, day, year] = start_date\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n return new Date(year, month - 1, day);\n }\n return null;\n };\n\n const getInitialEndDate = () => {\n if (end_date) {\n const [month, day, year] = end_date\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n return new Date(year, month - 1, day);\n }\n return null;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(\n getInitialStartDate()\n );\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [leftMonth, setLeftMonth] = useState<Date>(new Date());\n const [rightMonth, setRightMonth] = useState<Date>(new Date());\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [selectingStart, setSelectingStart] = useState<boolean>(true);\n const [label, setLabel] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const [isCustomEditing, setIsCustomEditing] = useState(false);\n const previousLabelRef = useRef(\"\");\n const isCustomEditingRef = useRef(false);\n const rightMonthRef = useRef<Date>(new Date());\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n\n const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n\n const presetRanges: PresetRange[] = [\n {\n label: \"Today\",\n getValue: () => ({ start: new Date(), end: new Date() }),\n },\n {\n label: \"Last Week\",\n getValue: () => {\n const end = new Date();\n const start = new Date(end.getTime() - 7 * 24 * 60 * 60 * 1000);\n return { start, end };\n },\n },\n {\n label: \"This Month\",\n getValue: () => {\n const now = new Date();\n const start = new Date(now.getFullYear(), now.getMonth(), 1);\n const end = new Date();\n return { start, end };\n },\n },\n {\n label: \"Last Month\",\n getValue: () => {\n const now = new Date();\n const start = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n const end = new Date(now.getFullYear(), now.getMonth(), 0);\n return { start, end };\n },\n },\n {\n label: \"Last 3 Months\",\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear(),\n end.getMonth() - 3,\n end.getDate()\n );\n return { start, end };\n },\n },\n {\n label: \"Last 6 Months\",\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear(),\n end.getMonth() - 6,\n end.getDate()\n );\n return { start, end };\n },\n },\n {\n label: `Last 1 Year`,\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear() - 1,\n end.getMonth(),\n end.getDate()\n );\n return { start, end };\n },\n },\n ];\n\n useEffect(() => {\n if (\n previousLabelRef.current === \"\" &&\n end_date !== \"\" &&\n start_date !== \"\"\n ) {\n setLeftMonth(new Date(start_date));\n setRightMonth(new Date(end_date));\n setStartDate(new Date(start_date));\n setEndDate(new Date(end_date));\n if (new Date(end_date) < new Date() && previousLabelRef.current !== \"\") {\n setLabel(\"Custom Range\");\n }\n }\n }, [end_date, start_date]);\n\n useEffect(() => {\n if (autoOpen || datePopupOnly) {\n setIsOpen(true);\n }\n }, [autoOpen, datePopupOnly]);\n\n useEffect(() => {\n if (autoOpen || datePopupOnly) {\n setIsOpen(true);\n }\n }, [autoOpen, datePopupOnly]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n const isEditing = isCustomEditing;\n const isValid =\n validateCustomInput(startInput, true) &&\n validateCustomInput(endInput, false);\n\n if (isEditing && !isValid) {\n handleCancel();\n return;\n }\n if (!isApply && start_date === \"\" && end_date === \"\") {\n handleCancel();\n return;\n }\n\n if (isApply) {\n setRightMonth(rightMonthRef.current);\n setLeftMonth(new Date(start_date));\n setEndDate(new Date(end_date));\n setStartDate(new Date(start_date));\n setLabel(previousLabelRef.current);\n if (isCustomEditingRef.current)\n setIsCustomEditing(isCustomEditingRef.current);\n return;\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [end_date, isApply, isCustomEditing, start_date]);\n\n const formatDate = (date: Date): string => {\n return `${(date.getMonth() + 1).toString().padStart(2, \"0\")}/${date\n .getDate()\n .toString()\n .padStart(2, \"0\")}/${date.getFullYear()}`;\n };\n\n const isSameDay = (date1: Date, date2: Date): boolean => {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n };\n\n const isSameMonth = (date1: Date, date2: Date): boolean => {\n return (\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n };\n\n const isInRange = (date: Date, start: Date, end: Date): boolean => {\n return date >= start && date <= end;\n };\n\n const isInHoverRange = (date: Date): boolean => {\n if (!hoveredDate || !startDate) return false;\n const start = startDate;\n const end = hoveredDate;\n return (\n date >= new Date(Math.min(start.getTime(), end.getTime())) &&\n date <= new Date(Math.max(start.getTime(), end.getTime()))\n );\n };\n\n const isDisabledDate = (date: Date): boolean => {\n if (new Date() < date) return true;\n\n if ((label === \"Custom Range\" || endDate === null) && startDate !== null) {\n const baseDate = new Date(startDate);\n\n baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n const earliestDate = new Date(startDate);\n\n earliestDate.setFullYear(earliestDate.getFullYear() + yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date > earliestDate) return true;\n return false;\n }\n\n if (startDate === null) return false;\n\n if (startDate !== null) {\n const baseDate = new Date(startDate);\n baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n const earliestDate = new Date(startDate);\n\n earliestDate.setFullYear(earliestDate.getFullYear() + yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date > earliestDate) return true;\n\n return false;\n }\n\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (date > today) return true;\n\n const earliestDate = new Date();\n earliestDate.setFullYear(earliestDate.getFullYear() - yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date < earliestDate) return true;\n\n return false;\n };\n\n const isDisabledMonth = (year: number, month: number): boolean => {\n const today = new Date();\n const currentYear = today.getFullYear();\n const currentMonth = today.getMonth();\n\n // Disable future months\n if (year > currentYear || (year === currentYear && month > currentMonth)) {\n return true;\n }\n\n // Disable months that are too far back\n const earliestDate = new Date();\n earliestDate.setFullYear(earliestDate.getFullYear() - 50);\n const earliestYear = earliestDate.getFullYear();\n const earliestMonth = earliestDate.getMonth();\n\n if (\n year < earliestYear ||\n (year === earliestYear && month < earliestMonth)\n ) {\n return true;\n }\n\n return false;\n };\n\n const isDisabledYear = (year: number): boolean => {\n const today = new Date();\n const currentYear = today.getFullYear();\n\n // Disable future years\n if (year > currentYear) {\n return true;\n }\n\n // Disable years that are too far back\n const earliestYear = currentYear - 50;\n if (year < earliestYear) {\n return true;\n }\n\n return false;\n };\n\n const navigateMonth = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + direction, 1)\n );\n } else {\n setRightMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + direction, 1)\n );\n }\n };\n\n const navigateYear = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear() + direction, prev.getMonth(), 1)\n );\n } else {\n setRightMonth(\n (prev) => new Date(prev.getFullYear() + direction, prev.getMonth(), 1)\n );\n }\n };\n\n const navigateDecade = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) =>\n new Date(prev.getFullYear() + direction * 10, prev.getMonth(), 1)\n );\n } else {\n setRightMonth(\n (prev) =>\n new Date(prev.getFullYear() + direction * 10, prev.getMonth(), 1)\n );\n }\n };\n\n const handleDateClick = (date: Date, isLeftCalendar: boolean): void => {\n if (\n (startDate !== null && endDate === null && isLeftCalendar) ||\n (startDate !== null &&\n endDate !== null &&\n startDate?.getTime() === endDate?.getTime() &&\n isLeftCalendar)\n ) {\n setStartDate(null);\n setEndDate(null);\n return;\n }\n\n if (!isLeftCalendar && startDate !== null && startDate <= date) {\n setEndDate(date);\n return;\n }\n\n if (date > new Date()) return;\n\n if (isDisabledDate(date)) return;\n\n const isSameMonthView = isSameMonth(leftMonth, rightMonth);\n\n if (!isSameMonthView) {\n // Different months: left calendar sets start date, right calendar sets end date\n if (isLeftCalendar) {\n setStartDate(date);\n if (endDate && date > endDate) {\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setSelectingStart(false);\n }\n } else {\n if (startDate && date < startDate) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setEndDate(date);\n setSelectingStart(true);\n }\n }\n } else {\n // Same month: retain original behavior\n if (selectingStart || !startDate || (startDate && endDate)) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n if (date < startDate!) {\n setEndDate(startDate);\n setStartDate(date);\n setSelectingStart(true);\n } else if (endDate && date > endDate) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setEndDate(date);\n setSelectingStart(true);\n }\n }\n }\n };\n\n const handleMonthClick = (monthIndex: number, isLeft: boolean): void => {\n const year = isLeft ? leftMonth.getFullYear() : rightMonth.getFullYear();\n\n // Don't allow clicking disabled months\n if (isDisabledMonth(year, monthIndex)) return;\n\n if (isLeft) {\n setLeftMonth(new Date(leftMonth.getFullYear(), monthIndex, 1));\n setLeftCalendarView(\"day\");\n } else {\n setRightMonth(new Date(rightMonth.getFullYear(), monthIndex, 1));\n setRightCalendarView(\"day\");\n }\n };\n\n const handleYearClick = (year: number, isLeft: boolean): void => {\n // Don't allow clicking disabled years\n if (isDisabledYear(year)) return;\n if (isLeft) {\n setLeftMonth(new Date(year, leftMonth.getMonth(), 1));\n setLeftCalendarView(\"month\");\n } else {\n setRightMonth(new Date(year, rightMonth.getMonth(), 1));\n setRightCalendarView(\"month\");\n }\n };\n\n const handleHeaderClick = (isLeft: boolean): void => {\n if (isLeft) {\n if (leftCalendarView === \"day\") {\n setLeftCalendarView(\"month\");\n } else if (leftCalendarView === \"month\") {\n setLeftCalendarView(\"year\");\n }\n } else {\n if (rightCalendarView === \"day\") {\n setRightCalendarView(\"month\");\n } else if (rightCalendarView === \"month\") {\n setRightCalendarView(\"year\");\n }\n }\n };\n\n const circleContainer = () => {\n if (\n startDate !== null &&\n endDate !== null &&\n startDate?.getTime() === endDate?.getTime()\n ) {\n return \"rounded-full\";\n }\n return \"\";\n };\n\n const handlePresetClick = (preset: PresetRange): void => {\n const { start, end } = preset.getValue();\n setStartDate(start);\n setEndDate(end);\n setLabel(preset.label);\n setSelectingStart(true);\n\n // Reset calendar views to day view\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n\n const monthDiff =\n end.getMonth() -\n start.getMonth() +\n 12 * (end.getFullYear() - start.getFullYear());\n\n if (monthDiff >= 1) {\n setLeftMonth(new Date(start.getFullYear(), start.getMonth(), 1));\n setRightMonth(new Date(end.getFullYear(), end.getMonth(), 1));\n } else {\n const left = new Date(start.getFullYear(), start.getMonth(), 1);\n const right = new Date(start.getFullYear(), start.getMonth());\n setLeftMonth(left);\n setRightMonth(right);\n }\n };\n\n const [startInput, setStartInput] = useState(\n startDate ? formatDate(startDate) : \"\"\n );\n const [endInput, setEndInput] = useState(endDate ? formatDate(endDate) : \"\");\n\n useEffect(() => {\n if (startDate) {\n setStartInput(formatDate(startDate));\n } else {\n setStartInput(\"\");\n }\n }, [startDate]);\n\n useEffect(() => {\n if (endDate) {\n setEndInput(formatDate(endDate));\n } else {\n setEndInput(\"\");\n }\n }, [endDate]);\n\n const renderMonthView = (\n monthDate: Date,\n isLeft: boolean,\n className = \"\"\n ) => {\n const year = monthDate.getFullYear();\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateYear(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <button\n onClick={() => handleHeaderClick(isLeft)}\n className=\"font-medium text-center flex-1 hover:bg-gray-100 rounded px-2 py-1\"\n >\n {year}\n </button>\n\n <button\n onClick={() => navigateYear(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-3 gap-2\">\n {monthsShort.map((month, index) => {\n const isDisabled = isDisabledMonth(year, index);\n return (\n <button\n key={month}\n onClick={() => handleMonthClick(index, isLeft)}\n disabled={isDisabled}\n className={`p-2 text-sm rounded ${\n isDisabled\n ? \"cursor-not-allowed text-gray-300 bg-gray-100\"\n : \"hover:bg-blue-100\"\n } ${\n monthDate.getMonth() === index && !isDisabled\n ? \"bg-[#4683B4] text-white\"\n : \"\"\n }`}\n >\n {month}\n </button>\n );\n })}\n </div>\n </div>\n );\n };\n\n const renderYearView = (monthDate: Date, isLeft: boolean, className = \"\") => {\n const currentYear = monthDate.getFullYear();\n const startDecade = Math.floor(currentYear / 10) * 10;\n const years = [];\n\n for (let i = startDecade; i < startDecade + 10; i++) {\n years.push(i);\n }\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateDecade(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <h3 className=\"font-medium text-center flex-1\">\n {startDecade} - {startDecade + 9}\n </h3>\n\n <button\n onClick={() => navigateDecade(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n {years.map((year) => {\n const isDisabled = isDisabledYear(year);\n return (\n <button\n key={year}\n onClick={() => handleYearClick(year, isLeft)}\n disabled={isDisabled}\n className={`p-2 text-sm rounded ${\n isDisabled\n ? \"cursor-not-allowed text-gray-300 bg-gray-100\"\n : \"hover:bg-blue-100\"\n } ${\n currentYear === year && !isDisabled\n ? \"bg-[#4683B4] text-white\"\n : \"\"\n }`}\n >\n {year}\n </button>\n );\n })}\n </div>\n </div>\n );\n };\n\n const renderCalendar = (monthDate: Date, isLeft: boolean, className = \"\") => {\n const view = isLeft ? leftCalendarView : rightCalendarView;\n\n if (view === \"month\") {\n return renderMonthView(monthDate, isLeft, className);\n }\n\n if (view === \"year\") {\n return renderYearView(monthDate, isLeft, className);\n }\n\n // Default day view\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const daysInMonth = lastDay.getDate();\n const startingDayOfWeek = firstDay.getDay();\n const days: JSX.Element[] = [];\n\n for (let i = 0; i < startingDayOfWeek; i++) {\n const prevDate = new Date(year, month, -startingDayOfWeek + i + 1);\n days.push(\n <div\n key={`prev-${i}`}\n className=\"w-8 h-8 flex items-center justify-center text-gray-300 text-sm\"\n >\n {prevDate.getDate()}\n </div>\n );\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n const isInCurrentRange =\n startDate && endDate && isInRange(date, startDate, endDate);\n const isInHover = !endDate && isInHoverRange(date);\n const isDisabled = isDisabledDate(date);\n\n days.push(\n <div\n key={day}\n className={`relative w-8 h-8 flex items-center justify-center text-sm ${\n isDisabled ? \"cursor-not-allowed text-gray-300\" : \"cursor-pointer\"\n } group`}\n onClick={() => handleDateClick(date, isLeft)}\n onMouseEnter={() => !isDisabled && setHoveredDate(date)}\n onMouseLeave={() => setHoveredDate(null)}\n >\n {isStart ? (\n <>\n <div\n className={`absolute inset-0 bg-[#D9ECFF] rounded-l-full ${circleContainer()}`}\n />\n <div\n className={`w-6 h-6 bg-[#213D69] text-white rounded-full z-10 flex items-center justify-center text-xs font-bold`}\n >\n {day}\n </div>\n </>\n ) : isEnd ? (\n <>\n <div\n className={`absolute inset-0 bg-[#D9ECFF] rounded-r-full ${circleContainer()}`}\n />\n <div className=\"w-6 h-6 bg-[#213D69] text-white rounded-full z-10 flex items-center justify-center text-xs font-bold\">\n {day}\n </div>\n </>\n ) : isInCurrentRange || isInHover ? (\n <>\n <div className=\"absolute inset-0 bg-[#D9ECFF]\" />\n <div className=\"relative z-10\">{day}</div>\n </>\n ) : (\n <div\n className={`w-8 h-8 flex items-center justify-center rounded-full ${\n !isDisabled ? \"group-hover:bg-blue-100\" : \"\"\n }`}\n >\n {day}\n </div>\n )}\n </div>\n );\n }\n\n const totalCells = 42;\n const remainingCells = totalCells - days.length;\n for (let i = 1; i <= remainingCells; i++) {\n const nextDate = new Date(year, month + 1, i);\n days.push(\n <div\n key={`next-${i}`}\n className=\"w-8 h-8 flex items-center justify-center text-gray-300 text-sm\"\n >\n {nextDate.getDate()}\n </div>\n );\n }\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateMonth(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <button\n onClick={() => handleHeaderClick(isLeft)}\n className=\"font-medium text-center flex-1 hover:bg-gray-100 rounded px-2 py-1\"\n >\n {months[month]} {year}\n </button>\n\n <button\n onClick={() => navigateMonth(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {[\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"].map((day) => (\n <div\n key={day}\n className=\"w-8 h-8 flex items-center justify-center text-xs font-medium text-gray-500\"\n >\n {day}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">{days}</div>\n </div>\n );\n };\n\n const handleCancel = () => {\n const originalStart = originalStartDateRef.current;\n const originalEnd = originalEndDateRef.current;\n\n if (start_date === \"\" && end_date === \"\") {\n setStartDate(null);\n setEndDate(null);\n } else {\n setStartDate(originalStart);\n setEndDate(originalEnd);\n }\n\n setStartInput(originalStart ? formatDate(originalStart) : \"\");\n setEndInput(originalEnd ? formatDate(originalEnd) : \"\");\n\n setLabel(\"\");\n setSelectingStart(true);\n setIsCustomEditing(false);\n\n // Reset calendar views\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n\n setLeftMonth(\n originalStart\n ? new Date(originalStart.getFullYear(), originalStart.getMonth(), 1)\n : new Date()\n );\n setRightMonth(\n originalEnd\n ? new Date(originalEnd.getFullYear(), originalEnd.getMonth(), 1)\n : new Date()\n );\n\n setIsOpen(false);\n if (setIsShowDateRange !== undefined) setIsShowDateRange();\n };\n\n const validateCustomInput = (\n inputValue: string,\n isStartDate: boolean\n ): boolean => {\n if (inputValue.length !== 10) return false;\n if (!validateDate(inputValue)) return false;\n\n const [month, day, year] = inputValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n if (isDisabledDate(inputDate)) return false;\n\n if (isStartDate && endDate && inputDate > endDate) return false;\n if (!isStartDate && startDate && inputDate < startDate) return false;\n\n return true;\n };\n\n const isCustomInputValid = (): boolean => {\n if (\n label === \"Custom Range\" &&\n endDate !== null &&\n (!isDisabledDate(endDate) ||\n isSameDateMDY(new Date(startInput), new Date(endInput)))\n )\n return true;\n if (startDate === null || endDate === null) return false;\n\n if (!isCustomEditing) return true;\n\n const isStartValid = validateCustomInput(startInput, true);\n const isEndValid = validateCustomInput(endInput, false);\n\n return isStartValid && isEndValid;\n };\n\n return (\n <div>\n <div>\n {!datePopupOnly && !isDateRangeOnly && (\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n titleClass\n )}\n >\n {title}\n </label>\n )}\n <div className=\"relative\" ref={dropdownRef}>\n {!datePopupOnly && !isDateRangeOnly && (\n <div\n className={twMerge(\n `flex items-center w-full h-[38px] gap-2 px-3 py-2 border rounded-md cursor-pointer ${bgColor} hover:border-[#4683B4] ${\n isOpen && \"border-[#4683B4]\"\n }`,\n className\n )}\n onClick={() => {\n originalStartDateRef.current = startDate;\n originalEndDateRef.current = endDate;\n // Reset calendar views when opening\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n setIsOpen(!isOpen);\n }}\n >\n <span className=\"text-sm\">\n {startDate && endDate\n ? `${formatDate(startDate)} - ${formatDate(endDate)}`\n : startDate\n ? `${formatDate(startDate)} - Select end date`\n : \"\"}\n </span>\n <div className=\"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\">\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 18 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 9H6V11H4V9ZM18 4V18C18 19.1 17.1 20 16 20H2C0.89 20 0 19.1 0 18L0.00999999 4C0.00999999 2.9 0.89 2 2 2H3V0H5V2H13V0H15V2H16C17.1 2 18 2.9 18 4ZM2 6H16V4H2V6ZM16 18V8H2V18H16ZM12 11H14V9H12V11ZM8 11H10V9H8V11Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n </div>\n )}\n\n {isOpen && (\n <div\n className={`absolute top-full right-0 ${\n datePopupOnly ? \"\" : \"mt-2\"\n } bg-white border rounded-lg shadow-lg z-50 ${dateRangeClass}`}\n style={{\n width: \"700px\",\n height: \"419px\",\n marginRight: datePopupOnly ? \"15px\" : undefined,\n }}\n >\n <div className=\"flex\">\n <div className=\"w-[290px] border-r\">\n <div className=\"flex flex-col justify-between h-[419px] p-4\">\n <div className=\"space-y-[3px]\">\n {presetRanges.map((preset, index) => (\n <button\n key={index}\n onClick={() => {\n handlePresetClick(preset);\n if (isCustomEditing) {\n setIsCustomEditing(false);\n }\n }}\n className={`w-full text-left px-[14px] py-[6px] text-[14px] rounded-[4px] border border-1 border-[#ECECF0] hover:bg-[#ECECF0] ${\n preset.label === label\n ? \"bg-[#ECECF0] font-semibold\"\n : \"\"\n }`}\n >\n {preset.label}\n </button>\n ))}\n <button\n className={`w-full text-left px-[14px] py-[6px] rounded-[4px] text-[13px] border border-1 border-[#ECECF0] hover:bg-[#ECECF0] ${\n isCustomEditing ? \"bg-[#ECECF0] font-semibold\" : \"\"\n }`}\n onClick={() => {\n setIsCustomEditing(true);\n setLabel(\"Custom Range\");\n previousLabelRef.current = \"Custom Range\";\n setStartInput(\"\");\n setEndInput(\"\");\n setStartDate(null);\n setEndDate(null);\n setRightMonth(new Date());\n setLeftMonth(new Date());\n // Reset calendar views\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n }}\n >\n Custom Range (max 1 year)\n </button>\n <div className=\"flex gap-[8px]\">\n <input\n type=\"text\"\n placeholder=\"MM/DD/YYYY\"\n value={startInput}\n onChange={(e) => {\n if (!isCustomEditing) return;\n\n const rawValue = e.target.value;\n const formattedValue = validateAndFormatInput(\n rawValue,\n {\n enableYearRange: false,\n yearsBack: yearsBack,\n }\n );\n\n setStartInput(formattedValue);\n\n if (formattedValue.length === 10) {\n const [month, day, year] = formattedValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const parsedDate = new Date(\n year,\n month - 1,\n day,\n 0,\n 0,\n 0,\n 0\n );\n setStartDate(parsedDate);\n setLeftMonth(\n new Date(\n parsedDate.getFullYear(),\n parsedDate.getMonth(),\n 1\n )\n );\n }\n }}\n onBlur={() => {\n if (!isCustomEditing) return;\n const endDateInput = new Date(endInput);\n\n if (\n isDisabledDate(endDateInput) &&\n startDate !== null &&\n !isSameDateMDY(startDate, endDateInput)\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n disabled={!isCustomEditing}\n className={`w-full h-[33.5px] text-[12px] px-[13px] rounded-[4px] border border-1 border-[#ECECF0] ${\n !isCustomEditing\n ? \"bg-gray-100 cursor-not-allowed\"\n : \"\"\n }`}\n />\n\n <input\n type=\"text\"\n placeholder=\"MM/DD/YYYY\"\n value={endInput}\n onChange={(e) => {\n if (!isCustomEditing) return;\n\n const rawValue = e.target.value;\n const formattedValue = validateAndFormatInput(\n rawValue,\n {\n enableYearRange: false,\n yearsBack: yearsBack,\n }\n );\n\n setEndInput(formattedValue);\n\n if (formattedValue.length === 10) {\n const [month, day, year] = formattedValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const parsedDate = new Date(\n year,\n month - 1,\n day,\n 0,\n 0,\n 0,\n 0\n );\n setEndDate(parsedDate);\n setRightMonth(\n new Date(\n parsedDate.getFullYear(),\n parsedDate.getMonth(),\n 1\n )\n );\n }\n if (\n formattedValue.length === 10 &&\n isDisabledDate(new Date(formattedValue)) &&\n startDate !== null &&\n !isSameDateMDY(\n startDate,\n new Date(formattedValue)\n )\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n onBlur={() => {\n if (!isCustomEditing) return;\n const endDateInput = new Date(endInput);\n if (\n isDisabledDate(endDateInput) &&\n startInput !== \"\" &&\n startDate !== null &&\n !isSameDateMDY(startDate, new Date(endDateInput))\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n disabled={!isCustomEditing || startInput === \"\"}\n className={`w-full h-[33.5px] text-[12px] px-[13px] rounded-[4px] border border-1 border-[#ECECF0] ${\n !isCustomEditing\n ? \"bg-gray-100 cursor-not-allowed\"\n : \"\"\n }`}\n />\n </div>\n </div>\n\n <div className=\"flex gap-2\">\n <button\n onClick={() => handleCancel()}\n className=\"w-full px-[14px] py-[6px] text-[16px] font-semibold border rounded-[4px] border-1 border-[#E0E1E6]\"\n >\n Cancel\n </button>\n <button\n onClick={async () => {\n if (!isCustomInputValid()) return;\n setIsApply(true);\n\n if (label === \"Custom Range\")\n isCustomEditingRef.current = true;\n if (label !== \"Custom Range\")\n isCustomEditingRef.current = false;\n rightMonthRef.current = rightMonth;\n previousLabelRef.current = label;\n originalStartDateRef.current = startDate;\n originalEndDateRef.current = endDate;\n\n if (datePopupOnly) {\n dateFunc(\n startDate ? formatDate(startDate) : \"\",\n endDate ? formatDate(endDate) : \"\"\n );\n setIsExporting?.(true);\n try {\n if (startDate !== null && endDate !== null)\n await handleExport?.(\n formatDate(startDate),\n formatDate(endDate)\n );\n } finally {\n setIsExporting?.(false);\n }\n } else {\n dateFunc(\n startDate ? formatDate(startDate) : \"\",\n endDate ? formatDate(endDate) : \"\"\n );\n }\n if (isDateRangeOnly) {\n setEndInput(\"\");\n setStartInput(\"\");\n setEndInput(\"\");\n setStartDate(null);\n setEndDate(null);\n setRightMonth(new Date());\n setIsApply(false);\n originalStartDateRef.current = null;\n originalEndDateRef.current = null;\n }\n if (setIsShowDateRange !== undefined)\n setIsShowDateRange();\n\n setIsOpen(false);\n }}\n className={`w-full px-[14px] py-[6px] text-[16px] text-[#FFFFFF] font-semibold border rounded-[4px] bg-[#4683B4] ${\n !isCustomInputValid() && \"opacity-50\"\n } flex justify-center items-center gap-2`}\n >\n {datePopupOnly ? (\n isExporting ? (\n <svg\n className=\"animate-spin h-5 w-5 text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v8H4z\"\n ></path>\n </svg>\n ) : (\n \"Download\"\n )\n ) : (\n \"Apply\"\n )}\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"flex\">\n {renderCalendar(\n leftMonth,\n true,\n \"pr-4 pt-4 pl-2 w-[227.59px]\"\n )}\n {renderCalendar(\n rightMonth,\n false,\n \"pr-4 pt-4 pl-2 w-[227.59px]\"\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default DateRangePicker;\n","import React, {\n ChangeEvent,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\"; // Import createPortal\nimport { twMerge } from \"tailwind-merge\";\n\n// ... (Your interface definition remains the same)\nexport interface MultipleAutoSuggestionInputProps {\n label?: string;\n options: { key: string; name: string }[];\n selectedItems: string[] | string;\n isMulti?: boolean;\n enableTypingSingle?: boolean;\n onSelect: (key: string) => void;\n onRemove?: (key: string) => void;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n inputValue: string;\n setInputValue: (value: string) => void;\n isDropdownAutoOpen?: boolean;\n labelClass?: string;\n buttonClass?: string;\n dropdownOpenClass?: string;\n selectedItemsClass?: string;\n removeIconClass?: string;\n}\n\nconst MultipleAutoSuggestionInput: React.FC<\n MultipleAutoSuggestionInputProps\n> = ({\n label = \"\",\n options,\n selectedItems,\n isMulti = true,\n enableTypingSingle = true,\n onSelect,\n onRemove,\n keyDown,\n onChange,\n inputValue,\n setInputValue,\n isDropdownAutoOpen = false,\n labelClass = \"\",\n buttonClass = \"\",\n dropdownOpenClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n}) => {\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n // 1. Add state to store the dropdown's position\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null); // Changed dropdownRef to containerRef for clarity\n\n const selectedList = isMulti\n ? (selectedItems as string[])\n : selectedItems\n ? [selectedItems as string]\n : [];\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n // Check containerRef instead of dropdownRef\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (!isMulti && !enableTypingSingle) {\n setFilteredOptions(\n options.filter((opt) => !selectedList.includes(opt.key))\n );\n return;\n }\n\n const filtered = options\n .filter((option) =>\n option.name.toLowerCase().includes(inputValue.toLowerCase())\n )\n .filter((option) => !selectedList.includes(option.key));\n\n setFilteredOptions(filtered);\n\n if (inputValue) {\n setIsDropdownOpen(true);\n } else if (!isDropdownAutoOpen) {\n // Close if input is cleared and it's not set to always be open\n setIsDropdownOpen(false);\n }\n }, [inputValue, options, selectedItems]);\n\n // 2. Calculate the position when the dropdown opens\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n setDropdownPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isDropdownOpen]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n onChange(e);\n };\n\n const handleOptionSelect = (key: string) => {\n onSelect(key);\n setInputValue(\"\");\n setIsDropdownOpen(false);\n };\n\n // 3. Define the Dropdown JSX to be used in the portal\n const DropdownMenu = (\n <div\n style={{\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`, // position based on state\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }}\n className={twMerge(\n \"w-full rounded-lg bg-white shadow-lg z-50 max-h-60 overflow-auto border border-[#E2E2E2]\", // Increased z-index\n dropdownOpenClass\n )}\n >\n <div className=\"py-1 rounded-lg border-[#E2E2E2]\">\n {filteredOptions.map((option) => (\n <div\n key={option.key}\n className=\"px-4 py-2 text-sm cursor-pointer custom-listing-hover\"\n onClick={() => handleOptionSelect(option.key)}\n >\n {option.name}\n </div>\n ))}\n </div>\n </div>\n );\n\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-custom-gray mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n <div\n ref={containerRef} // Use containerRef here\n className=\"relative\"\n onClick={() => {\n inputRef.current?.focus?.();\n if (!isDropdownOpen || isDropdownAutoOpen) {\n setIsDropdownOpen(true);\n }\n }}\n >\n <div\n className={twMerge(\n \"border border-[#E2E2E2] focus-within:border-[#4683B4] rounded-lg p-1.5 bg-[#F8F8F8] cursor-pointer flex flex-wrap items-center gap-2 min-h-[2.5rem]\",\n buttonClass\n )}\n >\n {/* ... (Your input and selected items display logic remains exactly the same) ... */}\n {isMulti && Array.isArray(selectedList)\n ? selectedList.map((itemKey) => {\n const option = options.find((opt) => opt.key === itemKey);\n return (\n <div\n key={itemKey}\n className={twMerge(\n \"flex flex border-[#E2E2E2] border items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n selectedItemsClass\n )}\n >\n {option ? option.name : itemKey}\n {onRemove && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove(itemKey);\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700 bg-white\",\n removeIconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n )}\n </div>\n );\n })\n : selectedList.length > 0 && (\n <div\n className={twMerge(\n \"flex border-[#E2E2E2] border items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n selectedItemsClass\n )}\n >\n <span className=\"text-xs font-medium text-gray-800\">\n {options.find((opt) => opt.key === selectedList[0])?.name ||\n selectedList[0]}\n </span>\n {onRemove && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove(\n options.find((opt) => opt.key === selectedList[0])\n ?.name || selectedList[0]\n );\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700\",\n removeIconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n {(!isMulti || enableTypingSingle) && (\n <input\n type=\"text\"\n ref={inputRef}\n value={inputValue}\n onKeyDown={keyDown}\n onChange={handleInputChange}\n className=\"w-full flex-1 px-0 py-1 bg-[#F8F8F8] text-xs border-none outline-none focus:ring-0\"\n onFocus={() => {\n if (!isDropdownOpen && (!isMulti || inputValue)) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={selectedList.length === 0 ? \"Type or select...\" : \"\"}\n />\n )}\n </div>\n </div>\n\n {/* 4. Render the dropdown menu inside the portal */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n createPortal(DropdownMenu, document.body)}\n </div>\n );\n};\n\nexport default MultipleAutoSuggestionInput;\n","import React, { ChangeEvent } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface SingleListInputProps {\n formValues: string[];\n handleRemove: (value: string) => void;\n inputValue: string;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n label?: string;\n buttonClass?: string;\n labelClass?: string;\n inputClass?: string;\n}\n\nconst SingleListInput: React.FC<SingleListInputProps> = ({\n formValues,\n handleRemove,\n inputValue,\n onChange,\n keyDown,\n label,\n buttonClass = \"\",\n labelClass = \"\",\n inputClass = \"\",\n}) => {\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n\n <div\n className={twMerge(\n \"border border-[#E2E2E2] rounded-lg p-1.5 bg-[#F8F8F8] cursor-pointer flex flex-wrap items-center gap-2 focus-within:border-[#4683B4]\",\n buttonClass\n )}\n >\n {formValues.map((id) => (\n <div\n key={id}\n className=\"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\"\n >\n {id}\n <button\n onClick={() => handleRemove(id)}\n aria-label={`Remove ${id}`}\n className=\"ml-1 text-gray-500 hover:text-gray-700 bg-white\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n </div>\n ))}\n\n <input\n type=\"text\"\n value={inputValue}\n onChange={onChange}\n onKeyDown={keyDown}\n className={twMerge(\n \"w-full flex-1 px-0 py-1 bg-[#F8F8F8] text-xs border-none outline-none focus:ring-0\",\n inputClass\n )}\n />\n </div>\n </div>\n );\n};\n\nexport default SingleListInput;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Option = { id: string; name: string };\n\ntype SingleSelectDropdownProps = {\n label?: string;\n value: string | null; // now only the id\n onChange: (value: string) => void; // returns id only\n options: Option[];\n placeholder?: string;\n onScrollToEnd?: () => void;\n onSearch?: (searchTerm: string) => void;\n hasMore?: boolean;\n isLoading?: boolean;\n searchable?: boolean;\n searchDebounceMs?: number;\n requiresSearch?: boolean;\n minSearchLength?: number;\n emptyMessage?: string;\n loadingMessage?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n allOptions?: Option[];\n hasIcon?: boolean;\n buttonClass?: string;\n labelClass?: string;\n displayMainClass?: string;\n displayItemClass?: string;\n hasSearchIcon?: boolean;\n searchInputClass?: string;\n placeholderSearchClass?: string;\n};\n\nexport default function SingleSelectDropdown({\n label = \"\",\n value,\n onChange,\n options,\n placeholder = \"Select an option\",\n onScrollToEnd,\n onSearch,\n hasMore = false,\n isLoading = false,\n searchable = true,\n searchDebounceMs = 300,\n requiresSearch = false,\n minSearchLength = 1,\n emptyMessage = \"No options found\",\n loadingMessage = \"Searching...\",\n searchPlaceholder = \"Search...\",\n disabled = false,\n hasIcon = true,\n buttonClass = \"\",\n labelClass = \"\",\n displayItemClass = \"\",\n displayMainClass = \"\",\n hasSearchIcon = true,\n searchInputClass = \"\",\n placeholderSearchClass = \"\",\n}: SingleSelectDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const searchTimeoutRef = useRef<number | any | undefined>();\n const [hoveredId, setHoveredId] = useState<string | null>(null);\n\n // The actual Option object corresponding to the passed id\n const selectedOption = options.find((opt) => opt.id === value) || null;\n\n // Handle scroll for pagination\n const handleScroll = useCallback(() => {\n if (!listRef.current || isLoading || !hasMore) return;\n\n const { scrollTop, scrollHeight, clientHeight } = listRef.current;\n if (scrollTop + clientHeight >= scrollHeight - 10) {\n onScrollToEnd?.();\n }\n }, [isLoading, hasMore, onScrollToEnd]);\n\n // Debounced search handler\n const handleSearchChange = useCallback(\n (newSearchTerm: string) => {\n setSearchTerm(newSearchTerm);\n\n if (onSearch) {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n\n searchTimeoutRef.current = setTimeout(() => {\n onSearch(newSearchTerm);\n }, searchDebounceMs);\n }\n },\n [onSearch, searchDebounceMs]\n );\n\n // Clear search timeout on unmount\n useEffect(() => {\n return () => {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n };\n }, []);\n\n // Dynamic filtering logic\n const getFilteredOptions = () => {\n if (onSearch) {\n // API-driven search — no local filter\n return options;\n } else {\n return options.filter((opt) =>\n (opt.name ?? \"\").toLowerCase().includes(searchTerm.toLowerCase())\n );\n }\n };\n\n const filteredOptions = getFilteredOptions();\n\n // Dynamic display logic\n const getDisplayOptions = () => {\n if (requiresSearch && onSearch) {\n if (searchTerm.length < minSearchLength) {\n return selectedOption ? [selectedOption] : [];\n }\n }\n return filteredOptions;\n };\n\n const displayOptions = getDisplayOptions();\n\n // Dynamic empty state logic\n const getEmptyStateContent = () => {\n if (requiresSearch && onSearch && searchTerm.length < minSearchLength) {\n return (\n <div className=\"px-4 py-8 text-center\">\n <div className=\"text-gray-400 mb-2\">\n <svg\n className=\"mx-auto h-8 w-8 mb-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <p className=\"text-sm text-gray-500 font-medium\">\n Enter at least {minSearchLength}{\" \"}\n {minSearchLength === 1 ? \"character\" : \"characters\"} to search\n </p>\n {minSearchLength >= 3 && (\n <p className=\"text-xs text-gray-400 mt-1\">\n Search from large dataset\n </p>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"px-2 py-2 text-sm text-gray-500\">\n {!isLoading && options.length === 0 && emptyMessage}\n </div>\n );\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n // Modified: reset search only when opening again or when value changes\n useEffect(() => {\n if (isOpen && searchTerm && onSearch) {\n setSearchTerm(\"\");\n onSearch(\"\");\n }\n }, [isOpen]); // purposely only on isOpen change\n\n // Handle dropdown toggle\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n return (\n <div>\n <label\n className={twMerge(\n \"block py-1 pt-1 text-[14px] font-semibold mb-1 text-[#545454] \",\n labelClass\n )}\n style={{ letterSpacing: \"0.2px\" }}\n >\n {label}\n </label>\n <div ref={dropdownRef} className=\"relative\">\n <div\n onClick={handleToggle}\n className={twMerge(\n `border-[1.5px] rounded-md h-[40px] pl-3 pr-2 py-2 bg-[#F8F8F8] cursor-pointer flex items-center justify-between ${\n disabled\n ? \"bg-gray-100 cursor-not-allowed border-gray-200\"\n : isOpen\n ? \"border-[#4683B4]\"\n : \"border-[#E2E2E2]\"\n }`,\n buttonClass\n )}\n >\n <span\n className={`text-sm ${\n disabled\n ? \"text-gray-400\"\n : selectedOption\n ? \"text-gray-700\"\n : \"text-gray-400\"\n }`}\n >\n {selectedOption?.name || placeholder}\n </span>\n <div\n className={`transition-transform duration-200 ${\n isOpen ? \"rotate-180\" : \"\"\n } ${disabled ? \"text-gray-400\" : \"\"}\n ${hasIcon ? \"block\" : \"hidden\"}\n `}\n >\n <svg\n className=\"transform rotate-180\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_10508_5931)\">\n <path\n d=\"M5.83333 11.6665L10 7.49984L14.1667 11.6665H5.83333Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10508_5931\">\n <rect\n width=\"20\"\n height=\"20\"\n fill=\"white\"\n transform=\"matrix(1 0 0 -1 0 20)\"\n />\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n\n {isOpen && !disabled && (\n <div className=\"absolute mt-1 w-full rounded-md bg-white shadow-lg z-20\">\n <div className=\"p-2 shadow-md border rounded-md max-h-[410px] flex flex-col\">\n {searchable && (\n <div className=\"relative\">\n <input\n type=\"text\"\n className={twMerge(\n \"input-placeholder-ellipsis w-full pr-[30px] h-[40px] px-2 py-1 rounded-md border border-gray-300 text-sm focus:border-1 focus:border-[#4683B4] focus:outline-none\",\n searchInputClass\n )}\n value={searchTerm}\n onChange={(e) => handleSearchChange(e.target.value)}\n />\n {!searchTerm && (\n <span\n className={twMerge(\n \"absolute left-2 top-1/2 transform -translate-y-1/2 text-[12px] text-gray-400 overflow-hidden whitespace-nowrap text-ellipsis pointer-events-none w-[90%]\",\n placeholderSearchClass\n )}\n >\n {searchPlaceholder}\n </span>\n )}\n <div\n className={twMerge(\n \"absolute right-2 top-1/2 transform -translate-y-1/2 pointer-events-none\",\n hasSearchIcon ? \"block\" : \"hidden\"\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.9167 9.66667H10.2583L10.025 9.44167C10.8417 8.49167 11.3333 7.25833 11.3333 5.91667C11.3333 2.925 8.90833 0.5 5.91667 0.5C2.925 0.5 0.5 2.925 0.5 5.91667C0.5 8.90833 2.925 11.3333 5.91667 11.3333C7.25833 11.3333 8.49167 10.8417 9.44167 10.025L9.66667 10.2583V10.9167L13.8333 15.075L15.075 13.8333L10.9167 9.66667ZM5.91667 9.66667C3.84167 9.66667 2.16667 7.99167 2.16667 5.91667C2.16667 3.84167 3.84167 2.16667 5.91667 2.16667C7.99167 2.16667 9.66667 3.84167 9.66667 5.91667C9.66667 7.99167 7.99167 9.66667 5.91667 9.66667Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n </div>\n )}\n\n <div\n ref={listRef}\n onScroll={handleScroll}\n onMouseEnter={() => setHoveredId(\"hovered\")}\n onMouseLeave={() => setHoveredId(null)}\n className={twMerge(\n `overflow-auto max-h-80 overscroll-contain ${\n searchable ? \"mt-2\" : \"\"\n }`,\n displayMainClass\n )}\n >\n {displayOptions.length > 0\n ? displayOptions.map((opt) => (\n <div\n key={opt.id}\n className={twMerge(\n `h-[40px] px-2 py-2 my-1 text-sm cursor-pointer select-none ${\n opt.id === value && hoveredId == null\n ? \"bg-[#ECF3F7] text-[#131414] font-semibold\"\n : opt.id === value && hoveredId != null\n ? \"text-[#131414] font-semibold\"\n : \"text-[#131414]\"\n }`,\n displayItemClass\n )}\n onClick={() => {\n onChange(opt.id); // only id now\n setIsOpen(false);\n }}\n >\n {opt.name}\n </div>\n ))\n : getEmptyStateContent()}\n {isLoading && hasMore && (\n <div className=\"flex justify-center px-2 pb-4\">\n <div className=\"flex items-center text-sm text-gray-500\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-gray-400 mr-2\"></div>\n {loadingMessage}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { twMerge } from \"tailwind-merge\";\ninterface SelectionButton {\n data: string[];\n className?: string;\n buttonClass?: string;\n currentValue: string;\n onClick: (value: string) => void;\n}\nconst SelectionButton = ({\n data,\n currentValue,\n className = \"\",\n buttonClass,\n onClick,\n}: SelectionButton) => {\n return (\n <div\n className={twMerge(\n \"flex bg-white w-[208px] h-[28px] border border-[#E2E2E2] rounded-[4px] overflow-hidden\",\n className\n )}\n >\n {data.map((time, index) => (\n <button\n key={time}\n onClick={() => {\n onClick(time);\n }}\n className={twMerge(\n `font-normal px-[8px] text-[14px] text-[#131414] ${\n currentValue === time\n ? \"bg-[#ECF3F7] text-[#4683B4] font-semibold \"\n : \"text-gray-600 hover:bg-gray-100\"\n } ${index > 0 ? \"border-l border-gray-300\" : \"\"}`,\n buttonClass\n )}\n >\n {time}\n </button>\n ))}\n </div>\n );\n};\n\nexport default SelectionButton;\n","import { format, isValid, parseISO } from \"date-fns\";\nimport DatePicker from \"react-datepicker\";\n// import \"react-datepicker/dist/react-datepicker.css\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface DynamicDateProps {\n label?: string;\n hasCalendarIcon?: boolean;\n value: string; // ISO string: \"YYYY-MM-DD\"\n onChange: (e: string) => void;\n placeholder?: string;\n disableFuture?: boolean;\n labelColor?: string;\n borderWeight?: string;\n bgColor?: string;\n height?: string;\n placeholderColor?: string;\n labelClass?: string;\n className?: string;\n customIcon?: string;\n iconSize?: number;\n iconClass?: string;\n}\n\nconst SingleDateInput = ({\n label,\n hasCalendarIcon = true,\n value,\n onChange,\n placeholder = \"Required\",\n disableFuture = false,\n labelColor = \"text-[#131414]\",\n borderWeight = \"border-[2px]\",\n bgColor = \"bg-[#F8F8F8]\",\n height = \"h-[48px]\",\n placeholderColor = \"text-[#757575]\",\n labelClass = \"\",\n className = \"\",\n customIcon,\n iconSize = 20,\n iconClass = \"\",\n}: DynamicDateProps) => {\n const parsedDate = isValid(parseISO(value)) ? parseISO(value) : null;\n\n const handleChange = (date: Date | null) => {\n if (date) {\n onChange(format(date, \"yyyy-MM-dd\")); // keep it in ISO format\n } else {\n onChange(\"\");\n }\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <p\n className={twMerge(\n `${labelColor} text-[14px] font-semibold mb-1`,\n labelClass\n )}\n >\n {label}\n </p>\n )}\n <div className=\"relative\">\n <DatePicker\n selected={parsedDate}\n onChange={handleChange}\n maxDate={disableFuture ? new Date() : undefined}\n placeholderText={placeholder}\n dateFormat=\"MM/dd/yyyy\"\n className={twMerge(\n `\n ${height} px-3 py-2 ${borderWeight} rounded-[8px] text-[14px] text-[#131414] w-full\n border-[#E2E2E2] focus:border-[#3C6E97] focus:outline-none ${bgColor} placeholder:${placeholderColor}\n ${value !== \"\" ? \"text-[#131414]\" : \"\"}\n ${hasCalendarIcon ? \"pr-10\" : \"\"}\n `,\n className\n )}\n />\n {customIcon && customIcon}\n {hasCalendarIcon && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\",\n iconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <path\n d=\"M4.5 9H6.5V11H4.5V9ZM18.5 4V18C18.5 19.1 17.6 20 16.5 20H2.5C1.39 20 0.5 19.1 0.5 18L0.51 4C0.51 2.9 1.39 2 2.5 2H3.5V0H5.5V2H13.5V0H15.5V2H16.5C17.6 2 18.5 2.9 18.5 4ZM2.5 6H16.5V4H2.5V6ZM16.5 18V8H2.5V18H16.5ZM12.5 11H14.5V9H12.5V11ZM8.5 11H10.5V9H8.5V11Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SingleDateInput;\n","import { isToday, startOfDay } from \"date-fns\";\nimport React from \"react\";\nimport DatePicker from \"react-datepicker\";\n// import \"react-datepicker/dist/react-datepicker.css\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface TimeInputProps {\n label?: string;\n hasTimeIcon?: boolean;\n value: string; // ISO string: \"YYYY-MM-DDTHH:mm:ss\"\n onChange: (e: string) => void;\n placeholder?: string;\n disableFuture?: boolean;\n selectedDate?: string;\n className?: string;\n labelClassName?: string;\n customIcon?: React.ReactNode;\n iconSize?: number;\n iconClass?: string;\n}\n\nconst TimeInput = ({\n label,\n hasTimeIcon = true,\n value,\n onChange,\n placeholder = \"Required\",\n disableFuture = false,\n selectedDate,\n className = \"\",\n labelClassName = \"\",\n customIcon,\n iconSize = 20,\n iconClass = \"\",\n}: TimeInputProps) => {\n const parsedDate = value ? new Date(value) : null;\n\n const handleChange = (date: Date | null) => {\n if (date && !isNaN(date.getTime())) {\n onChange(date.toISOString());\n }\n };\n\n const now = new Date();\n\n let minTime: Date | undefined;\n let maxTime: Date | undefined;\n\n if (disableFuture && selectedDate) {\n const selected = new Date(selectedDate);\n minTime = startOfDay(selected);\n\n if (isToday(selected)) {\n maxTime = now;\n } else {\n const endOfDay = new Date(selected);\n endOfDay.setHours(23, 59, 59, 999);\n maxTime = endOfDay;\n }\n }\n\n return (\n <div className=\"w-full\">\n {label && (\n <p\n className={twMerge(\n \"text-[#131414] text-[14px] font-semibold mb-1\",\n labelClassName\n )}\n >\n {label}\n </p>\n )}\n <div className=\"relative\">\n <DatePicker\n selected={parsedDate}\n onChange={handleChange}\n showTimeSelect\n showTimeSelectOnly\n timeIntervals={15}\n timeCaption=\"Time\"\n maxDate={disableFuture ? new Date() : undefined}\n placeholderText={placeholder}\n dateFormat=\"hh:mm aa\"\n minTime={minTime}\n maxTime={maxTime}\n className={twMerge(\n `\n h-[48px] px-3 py-2 border-[2px] rounded-[8px] text-[14px] w-full\n border-[#E2E2E2] focus:border-[#3C6E97] focus:outline-none bg-[#F8F8F8]\n ${value !== \"\" ? \"text-[#131414]\" : \"text-[#757575]\"}\n ${hasTimeIcon ? \"pr-10\" : \"\"}\n `,\n className\n )}\n />\n {customIcon && customIcon}\n {hasTimeIcon && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\",\n iconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox={`0 0 20 20`}\n fill=\"none\"\n >\n <path\n d=\"M9.99 0C4.47 0 0 4.48 0 10C0 15.52 4.47 20 9.99 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 9.99 0ZM10 18C5.58 18 2 14.42 2 10C2 5.58 5.58 2 10 2C14.42 2 18 5.58 18 10C18 14.42 14.42 18 10 18ZM10.5 5H9V11L14.25 14.15L15 12.92L10.5 10.25V5Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default TimeInput;\n","import React, { ChangeEvent } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface CommonInputSingleProps {\n inputValue: string;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n label: string;\n error?: string;\n hasAll?: boolean;\n labelClass?: string;\n className?: string;\n inputClass?: string;\n}\n\nconst CommonInputSingle: React.FC<CommonInputSingleProps> = ({\n inputValue,\n onChange,\n keyDown,\n label,\n error,\n hasAll = false,\n labelClass = \"\",\n className = \"\",\n inputClass = \"\",\n}) => {\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n <div\n className={twMerge(\n `border ${\n error ? \"border-red-500\" : \" border-[#E2E2E2]\"\n } rounded-lg p-1.5 bg-custom-gray cursor-pointer flex flex-wrap items-center gap-2`,\n className\n )}\n >\n {hasAll && inputValue === \"\" && (\n <div className=\"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\">\n <p>All</p>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n className=\"ml-1\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </div>\n )}\n <input\n type=\"text\"\n value={inputValue}\n onChange={onChange}\n onKeyDown={keyDown}\n className={twMerge(\n \"flex-grow px-0 py-1 bg-custom-gray text-xs border-none outline-none focus:ring-0\",\n inputClass\n )}\n />\n </div>\n {error && <span className=\" text-[12px] text-red-500\">{error}</span>}\n </div>\n );\n};\n\nexport default CommonInputSingle;\n","import ReactPaginate from \"react-paginate\";\n\ninterface PaginationProps {\n totalPages: number;\n currentPage: number;\n onPageChange?: (selectedPage: number) => void;\n pageRangeDisplayed?: number;\n}\n\nexport const Pagination = ({\n totalPages,\n currentPage,\n onPageChange,\n pageRangeDisplayed = 4,\n}: PaginationProps) => {\n const PaginateComponent = (ReactPaginate as any)?.default || ReactPaginate;\n return (\n <PaginateComponent\n key={totalPages}\n previousLabel={\n <svg\n width=\"8\"\n height=\"14\"\n viewBox=\"0 0 8 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 1L1 7L7 13\"\n stroke=\"#4062E5\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n nextLabel={\n <svg\n width=\"8\"\n height=\"14\"\n viewBox=\"0 0 8 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1L7 7L1 13\"\n stroke=\"#4062E5\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n breakLabel={\n <svg\n width=\"16\"\n height=\"4\"\n viewBox=\"0 0 16 4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"2.5\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n <circle cx=\"8\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n <circle cx=\"13.5\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n </svg>\n }\n onPageChange={(event: any) => onPageChange?.(event.selected + 1)}\n pageRangeDisplayed={pageRangeDisplayed}\n marginPagesDisplayed={1}\n pageCount={totalPages}\n forcePage={currentPage - 1}\n containerClassName=\"flex items-center gap-2\"\n pageClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n pageLinkClassName=\"w-full h-full flex items-center justify-center hover:bg-[#ECEFFC] rounded-md cursor-pointer text-[#4062E5]\"\n activeClassName=\"bg-[#4062E5] rounded-md cursor-default pointer-events-none text-white\"\n activeLinkClassName=\"!text-white\"\n previousClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n previousLinkClassName=\"w-full h-full flex items-center justify-center pagination-color hover:bg-[#ECEFFC] rounded-md cursor-pointer disabled:text-gray-300\"\n nextClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n nextLinkClassName=\"w-full h-full flex items-center justify-center pagination-color hover:bg-[#ECEFFC] rounded-md cursor-pointer disabled:text-gray-300\"\n breakClassName=\"w-10 h-10 flex items-center justify-center text-gray-500 font-bold\"\n disabledClassName=\"opacity-50 cursor-not-allowed\"\n />\n );\n};\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport DateRangePicker from \"../inputs/DateRange\";\nimport { TableHeaderProps } from \"./DynamicTable\";\n\nconst TableHeader: React.FC<TableHeaderProps> = ({\n toggleFilterPanel,\n isFilterPanelVisible,\n iconHeader,\n title,\n isExport,\n handleExport,\n isExporting,\n hasTooltip = false,\n isSimpleMode = false,\n tooltipMessage = \"This tab shows faxes received on the ChartRequest's retrieval fax line, 661-208-3159\",\n isButtonAvailable = true,\n isFilterVisible = false,\n isUseDateRange = false,\n isShowDateRange = false,\n dateRangeApplyFunc = (start_date, end_date) =>\n console.log(start_date, end_date),\n setIsShowDateRange,\n exportTooltipMessage = \"Select a date range to export data. The maximum allowed range is 1 year\",\n exportTooltipClass = \"left-2 \",\n hasMiddleHeaderCustomComponent = false,\n middleHeaderCustomComponent,\n rightHeaderClass = \"space-x-4\",\n dateRangeClass = \"\",\n customClass,\n hasCustomClass = false,\n headerClass = \"\",\n}) => {\n return (\n <div\n className={twMerge(\n \"h-[44px] w-full relative rounded-tl-[8px] rounded-tr-[8px] border bg-[#F5F7FE] flex px-[16px] py-[8px] justify-between items-center gap-4 border-[#C6D0F7] \",\n headerClass\n )}\n >\n {hasCustomClass && customClass}\n {!hasCustomClass && (\n <div className=\"flex items-center space-x-2 text-[#131414]\">\n {iconHeader}\n <span className=\"text-[14px] font-semibold text-content\">\n {title}\n </span>\n {hasTooltip && (\n <span\n className=\"relative group inline-flex items-center\" // Use inline-flex to align with text/elements\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute left-full ml-2 top-1/2 -translate-y-1/2 z-10 hidden group-hover:block rounded-md bg-black text-white text-xs p-3 shadow-lg max-w-xs\" // Increased padding, max-width\n style={{ width: \"280px\", lineHeight: \"1.4\" }}\n >\n <div className=\"absolute right-full top-1/2 -translate-y-1/2 w-3 h-3 bg-black rotate-45 -mr-1.5\"></div>\n {tooltipMessage}\n </div>\n </span>\n )}\n </div>\n )}\n\n {!hasCustomClass && (\n <div className={`flex items-center h-[28px] ${rightHeaderClass}`}>\n {setIsShowDateRange && (\n <span\n className={`relative group inline-flex ${exportTooltipClass} items-center ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n }`}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute right-5 ml-2 top-1/2 -translate-y-1/2 z-10 hidden group-hover:block rounded-md bg-black text-white text-xs p-2 shadow-lg max-w-xs\" // Increased padding, max-width\n style={{ width: \"280px\", lineHeight: \"1.4\" }}\n >\n <div className=\"absolute left-full top-1/2 -translate-y-1/2 w-3 h-3 bg-black rotate-45 -ml-1.5\"></div>\n {exportTooltipMessage}\n </div>\n </span>\n )}\n {isExporting && (\n <svg\n className=\"animate-spin h-5 w-10 text-white\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v8H4z\"\n ></path>\n </svg>\n )}\n {isExport && !isExporting && (\n <button\n className={`font-semibold text-[14px] bg-transparent text-primary border-base-200 ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n }`}\n onClick={() => {\n if (!isButtonAvailable) return;\n handleExport?.();\n }}\n >\n Export\n </button>\n )}\n {isUseDateRange && isFilterVisible && (\n <div className={twMerge(\"absolute right-[141px] \", dateRangeClass)}>\n <DateRangePicker\n start_date={\"\"}\n end_date={\"\"}\n isDateRangeOnly\n dateFunc={(startDate, endDate) => {\n dateRangeApplyFunc(startDate, endDate);\n }}\n dateRangeClass=\"right-0 top-[11px]\"\n autoOpen={isShowDateRange}\n setIsShowDateRange={setIsShowDateRange}\n />\n </div>\n )}\n {\n <div\n className={`${\n hasMiddleHeaderCustomComponent ? \"block\" : \"hidden\"\n }`}\n >\n {middleHeaderCustomComponent}\n </div>\n }\n {!isSimpleMode && isFilterVisible && (\n <button\n onClick={() => {\n if (!isButtonAvailable) return;\n toggleFilterPanel?.();\n }}\n className={`px-[8px] py-[4px] rounded-[4px] border font-semibold text-[14px] ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n } filter-serach-hover\n ${\n isFilterPanelVisible\n ? \"filter-serach-button\"\n : \"bg-white text-primary border-base-200\"\n }`}\n >\n Filter & Search\n </button>\n )}\n </div>\n )}\n </div>\n );\n};\nexport default TableHeader;\n","import React from \"react\";\nimport NoData from \"../assets/noData.png\";\n\nimport { Pagination } from \"./Pagination\";\nimport TableHeader from \"./TableHeader\";\n// 1. Set interface TableData, FilterState, TableProps\nexport interface Column {\n name: string;\n selector: string;\n width: string;\n sortable?: boolean;\n isJustifyBetween?: boolean;\n isLineHeight?: boolean;\n isCenteredText?: boolean;\n className?: string;\n iconClassName?: string;\n tableHeaderFontSize?: string;\n}\nexport interface TableHeaderProps {\n toggleFilterPanel?: () => void;\n isFilterPanelVisible?: boolean;\n iconHeader?: React.ReactNode;\n title?: string;\n isExport?: boolean;\n handleExport?: () => void;\n isExporting?: boolean | undefined;\n hasTooltip?: boolean;\n tooltipMessage?: string;\n isSimpleMode?: boolean;\n isButtonAvailable?: boolean;\n isFilterVisible?: boolean;\n isUseDateRange?: boolean;\n isShowDateRange?: boolean;\n setIsShowDateRange?: () => void;\n dateRangeApplyFunc?: (start_date: string, end_date: string) => void;\n exportTooltipMessage?: string;\n exportTooltipClass?: string;\n hasMiddleHeaderCustomComponent?: boolean;\n middleHeaderCustomComponent?: React.ReactElement;\n rightHeaderClass?: string;\n dateRangeClass?: string;\n customClass?: React.ReactElement;\n hasCustomClass?: boolean;\n headerClass?: string;\n}\n\ninterface TableHeaderCustom {\n tableHeaderHeight?: string;\n}\ninterface TableData {\n id?: string | number;\n [key: string]: any; // Allow for flexible data properties\n}\n\ninterface PaginationProps {\n totalPage: number;\n currentPage: number;\n handlePageChange: (page: number) => void;\n handleRowsPerPageChange: (page: number) => void;\n page: number;\n per_page: number;\n totalItems: number;\n}\n\ninterface DynamicTableProps {\n columns: Column[];\n tableData: TableData[];\n handleSort: (selector: string) => void;\n pagination: PaginationProps;\n mainTableHeader: TableHeaderProps;\n tableHeaderCustom?: TableHeaderCustom;\n isLoading: boolean;\n isError: boolean;\n tableHeader?: (\n column: Column,\n columnIndex: number,\n sortData: (selector: string) => void\n ) => React.ReactNode;\n tableBody?: (item: TableData, column: Column, columnIndex: number) => any;\n noDataMessage?: string;\n}\n\nconst DynamicTable: React.FC<DynamicTableProps> = ({\n columns,\n tableData,\n handleSort,\n pagination,\n isLoading,\n isError,\n tableBody,\n mainTableHeader,\n tableHeaderCustom,\n noDataMessage = \"No QA requests were found!\",\n}) => {\n const NoDataComponent = () => (\n <div className=\"flex flex-col justify-center items-center h-[53.2vh]\">\n <span>\n <img src={NoData} alt={\"No Data\"} width={100} height={100} />\n </span>\n <span className=\"text-gray-500 text-sm\">{noDataMessage}</span>\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col grow w-full bg-white rounded-[8px]\">\n <TableHeader\n iconHeader={mainTableHeader.iconHeader}\n isFilterPanelVisible={mainTableHeader.isFilterPanelVisible}\n toggleFilterPanel={mainTableHeader.toggleFilterPanel}\n title={mainTableHeader.title}\n isExport={mainTableHeader.isExport}\n handleExport={mainTableHeader.handleExport}\n isExporting={mainTableHeader.isExporting}\n hasTooltip={mainTableHeader.hasTooltip}\n tooltipMessage={mainTableHeader.tooltipMessage}\n isButtonAvailable={mainTableHeader.isButtonAvailable}\n hasMiddleHeaderCustomComponent={\n mainTableHeader.hasMiddleHeaderCustomComponent\n }\n middleHeaderCustomComponent={\n mainTableHeader.middleHeaderCustomComponent\n }\n />\n {\n <div className=\"relative min-w-full bg-white bg-gray-50 border-l border-r border-b rounded-bl-[8px] rounded-br-[8px] p-6 pt-0 pl-0 pr-0 border-[#C6D0F7]\">\n {\n <table className=\"min-w-full divide-y divide-gray-200 shadow-sm table-fixed\">\n <thead className=\"border-b-2\">\n <tr>\n {columns.map((column, columnIndex) => (\n <th\n key={column.name}\n scope=\"col\"\n className={`px-1 pb-[7.5px] ${\n tableHeaderCustom?.tableHeaderHeight !== undefined\n ? tableHeaderCustom.tableHeaderHeight\n : \"h-[42px]\"\n } text-left tracking-wider cursor-pointer break-all ${\n column.isLineHeight && \"line-height-1\"\n } ${columnIndex === 0 ? \"pl-[24px]\" : \"\"} ${\n columnIndex === columns.length - 1 ? \"pr-[24px]\" : \"\"\n }`}\n style={{\n width: column.width,\n verticalAlign: \"bottom\",\n }}\n onClick={() =>\n column.sortable && handleSort(column.selector)\n }\n >\n <div\n className={`flex ${\n column.isJustifyBetween && \"justify-between\"\n } ${\n column.isJustifyBetween &&\n column.className !== undefined\n ? column.className\n : \"\"\n } items-center`}\n >\n {column.selector === \"checkbox\" ? (\n // This checkbox logic would typically be managed by the parent component\n <input type=\"checkbox\" className=\"cursor-pointer\" />\n ) : (\n <>\n <span\n className={`${\n column.isCenteredText &&\n \"h-[25px] flex flex-center\"\n } items-center text-[12px] font-semibold text-[#131414]`}\n >\n {column.name}\n </span>\n {column.sortable && (\n <span\n className={`inline-block ml-2 ${\n column.iconClassName ?? \"\"\n }`}\n >\n <svg\n width=\"8\"\n height=\"12\"\n viewBox=\"0 0 8 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.99994 1.88667L6.11328 4L7.05328 3.06L3.99994 0L0.939941 3.06L1.88661 4L3.99994 1.88667ZM3.99994 10.1133L1.88661 8L0.946608 8.94L3.99994 12L7.05994 8.94L6.11328 8L3.99994 10.1133Z\"\n fill=\"#323232\"\n />\n </svg>\n </span>\n )}\n </>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => (\n <tr key={index}>\n {columns.map((column, columnIndex) => (\n <td\n key={column.selector}\n className={`px-1 py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all ${\n columnIndex === 0 ? \"pl-[24px]\" : \"\"\n } ${\n columnIndex === columns.length - 1\n ? \"pr-[24px]\"\n : \"\"\n }`}\n style={{ width: column.width, minHeight: \"45px\" }}\n >\n {/* Render custom body content if provided, otherwise default to item property */}\n {tableBody\n ? tableBody(item, column, columnIndex)\n : item[column.selector as keyof TableData]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n }\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto overflow-x-auto \">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-auto overflow-x-auto \"\n style={{ borderColor: \"rgba(64, 98, 229, 0.2)\" }}\n >\n <div className=\"flex justify-center items-center h-[53.2vh]\">\n <div className=\"animate-spin rounded-full h-10 w-10 border-b-2 border-primary\"></div>\n </div>\n </div>\n )}\n {tableData && tableData.length > 0 && !isLoading && (\n <div className=\"flex items-center justify-between px-4 py-3 bg-white\">\n <div className=\"flex items-center gap-2\">\n <Pagination\n totalPages={pagination.totalPage}\n currentPage={pagination.page}\n onPageChange={pagination.handlePageChange}\n />\n </div>\n\n <div className=\"flex items-center justify-center gap-2\">\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n Rows Per Page:\n </span>\n\n <div className=\"relative\">\n <select\n value={pagination.per_page}\n onChange={(e) =>\n pagination.handleRowsPerPageChange(Number(e.target.value))\n }\n className=\"appearance-none border broder-1 rounded-[2px] gap-2px pr-[2px] pt-[1px] pl-[8px] h-[20px] w-[50px]\"\n style={{\n borderColor: \"#E0E1E6\",\n fontSize: \"12px\",\n }}\n >\n <option value={10}>10</option>\n <option value={20}>20</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <div className=\"absolute right-[5px] bottom-1/2 top-1/2 pt-[5px] transform -translate-y-1/2 w-3 h-3 text-gray-400 pointer-events-none\">\n <svg\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.833313 0.333496L4.99998 4.50016L9.16665 0.333496H0.833313Z\"\n fill=\"#131414\"\n />\n </svg>\n </div>\n </div>\n <div\n className=\"bg-[#B5BAC4] h-[16px] w-[1px] self-center\"\n style={{ marginTop: \"1px\" }}\n ></div>\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n {`${\n (pagination.page - 1) * pagination.per_page + 1\n } - ${Math.min(\n pagination.page * pagination.per_page,\n pagination.totalItems\n )} of ${pagination.totalItems}`}\n </span>\n </div>\n </div>\n )}\n </div>\n }\n </div>\n );\n};\n\nexport default DynamicTable;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport NoData from \"../assets/noData.png\";\nimport { Column, TableHeaderProps } from \"./DynamicTable\";\n\nimport { Pagination } from \"./Pagination\";\nimport TableHeader from \"./TableHeader\";\n\n// 1. Set interface TableData, FilterState, TableProps\ninterface TableBodyDesign {\n className?: string;\n}\ninterface TableHeaderCustom {\n tableHeaderHeight?: string;\n px?: string;\n toggleAll?: () => void;\n isIndeterminate?: boolean;\n isAllSelected?: boolean;\n}\ninterface TableData {\n id?: string | number;\n [key: string]: any; // Allow for flexible data properties\n}\n\ninterface PaginationProps {\n totalPage: number;\n currentPage: number;\n handlePageChange: (page: number) => void;\n handleRowsPerPageChange: (page: number) => void;\n page: number;\n per_page: number;\n totalItems: number;\n pageRangeDisplayed?: number;\n}\n\ninterface DynamicTableV2Props {\n columns: Column[];\n tableData: TableData[];\n handleSort: (selector: string) => void;\n pagination?: PaginationProps;\n mainTableHeader: TableHeaderProps;\n tableHeaderCustom?: TableHeaderCustom;\n isLoading: boolean;\n isError: boolean;\n tableHeader?: (\n column: Column,\n columnIndex: number,\n sortData: (selector: string) => void\n ) => React.ReactNode;\n tableBody?: (item: TableData, column: Column, columnIndex: number) => any;\n tableRow?: (\n item: TableData,\n index: number\n ) => React.HTMLAttributes<HTMLTableRowElement>;\n noDataMessage?: string;\n noDataMessageHeader?: string;\n noDataMessageImage?: React.ReactNode;\n noDataMessageImageSize?: number;\n tableBodyDesign?: TableBodyDesign;\n hasAnotherScreen?: boolean;\n anotherScreenComponent?: any;\n isSimpleMode?: boolean;\n loadAndErrorHeight?: string;\n isDisableTableHeader?: boolean;\n isShowDateRange?: boolean;\n tableClass?: string;\n tableSubDivClass?: string;\n hasPagination?: boolean;\n tableSubDivRef?: React.Ref<HTMLDivElement>;\n}\n\nconst DynamicTableV2: React.FC<DynamicTableV2Props> = ({\n columns,\n tableData,\n handleSort,\n pagination,\n isLoading,\n isError,\n tableBody,\n tableRow,\n mainTableHeader,\n tableHeaderCustom,\n noDataMessageHeader = \"\",\n noDataMessage = \"No requestor payments were found!\",\n noDataMessageImage,\n noDataMessageImageSize = 64,\n tableBodyDesign,\n hasAnotherScreen = false,\n isSimpleMode = false,\n anotherScreenComponent,\n loadAndErrorHeight = \"h-[53.2vh]\",\n isDisableTableHeader = false,\n tableClass = \"\",\n hasPagination = true,\n tableSubDivClass = '',\n tableSubDivRef\n}) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const paginationRef = useRef<HTMLDivElement>(null);\n const [tableHeight, setTableHeight] = useState<number>(0);\n\n const calculateHeight = useCallback(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n if (!tableEl) return;\n let totalHeight = tableEl.offsetHeight;\n if (paginationEl && !isSimpleMode && tableData.length > 0 && !isLoading) {\n totalHeight += paginationEl.offsetHeight;\n }\n\n setTableHeight(totalHeight);\n }, [isSimpleMode, tableData.length, isLoading]);\n\n useEffect(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n if (!tableEl) return;\n const observer = new ResizeObserver(() => {\n setTimeout(calculateHeight, 0);\n });\n observer.observe(tableEl);\n if (paginationEl && !isSimpleMode && tableData.length > 0 && !isLoading) {\n observer.observe(paginationEl);\n }\n setTimeout(calculateHeight, 0);\n return () => {\n observer.disconnect();\n };\n }, [calculateHeight, isSimpleMode, tableData.length, isLoading]);\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n calculateHeight();\n }, 100);\n\n return () => clearTimeout(timeoutId);\n }, [pagination?.page, pagination?.per_page, calculateHeight]);\n\n useEffect(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n\n if (!tableEl || !paginationEl) return;\n\n const updateHeight = () => {\n const totalHeight = tableEl.offsetHeight + paginationEl.offsetHeight;\n setTableHeight(totalHeight);\n };\n\n const observer = new ResizeObserver(updateHeight);\n observer.observe(tableEl);\n observer.observe(paginationEl);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n const NoDataComponent = () => (\n <div\n className={`flex flex-col justify-center items-center ${loadAndErrorHeight}`}\n >\n <span>\n {noDataMessageImage ? (\n noDataMessageImage\n ) : (\n <img\n src={NoData}\n alt={\"No Data\"}\n width={noDataMessageImageSize}\n height={noDataMessageImageSize}\n />\n )}\n </span>\n <span className=\"font-semibold text-[20px]\">{noDataMessageHeader}</span>\n <span className=\"text-gray-500 text-sm\">{noDataMessage}</span>\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col grow w-full bg-white rounded-[8px]\">\n <TableHeader\n iconHeader={mainTableHeader.iconHeader}\n isFilterPanelVisible={mainTableHeader.isFilterPanelVisible}\n toggleFilterPanel={mainTableHeader.toggleFilterPanel}\n title={mainTableHeader.title}\n isExport={mainTableHeader.isExport}\n handleExport={mainTableHeader.handleExport}\n isExporting={mainTableHeader.isExporting}\n hasTooltip={mainTableHeader.hasTooltip}\n tooltipMessage={mainTableHeader.tooltipMessage}\n isSimpleMode={isSimpleMode}\n isButtonAvailable={mainTableHeader.isButtonAvailable}\n isFilterVisible={mainTableHeader.isFilterVisible}\n isUseDateRange={mainTableHeader.isUseDateRange}\n isShowDateRange={mainTableHeader.isShowDateRange}\n dateRangeApplyFunc={mainTableHeader.dateRangeApplyFunc}\n setIsShowDateRange={mainTableHeader.setIsShowDateRange}\n exportTooltipMessage={mainTableHeader.exportTooltipMessage}\n exportTooltipClass={mainTableHeader.exportTooltipClass}\n rightHeaderClass={mainTableHeader.rightHeaderClass}\n hasMiddleHeaderCustomComponent={\n mainTableHeader.hasMiddleHeaderCustomComponent\n }\n middleHeaderCustomComponent={\n mainTableHeader.middleHeaderCustomComponent\n }\n dateRangeClass={mainTableHeader.dateRangeClass}\n customClass={mainTableHeader.customClass}\n hasCustomClass={mainTableHeader.hasCustomClass}\n headerClass={mainTableHeader.headerClass}\n />\n <div\n className={twMerge(\n `flex w-full h-full bg-white bg-gray-50 border-l border-r border-b rounded-bl-[8px] rounded-br-[8px] pt-0 pl-0 pr-0 border-[#C6D0F7] overflow-x-auto ${\n isSimpleMode && \"overflow-hidden\"\n }`,\n tableClass\n )}\n >\n {\n <div\n ref={tableSubDivRef}\n className={twMerge(`relative min-w-0 flex-1 ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n } flex flex-col bg-white `, tableSubDivClass)}\n >\n {\n <table\n ref={tableRef}\n className={`min-w-full divide-y divide-gray-200 table-fixed ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n }`}\n >\n {!isDisableTableHeader && (\n <thead className=\"border-b-2\">\n <tr>\n {columns.map((column, columnIndex) => (\n <th\n key={column.name}\n scope=\"col\"\n className={`${\n tableHeaderCustom?.px ?? \"px-1\"\n } pb-[7.5px] ${\n tableHeaderCustom?.tableHeaderHeight !== undefined\n ? tableHeaderCustom.tableHeaderHeight\n : \"h-[42px]\"\n } text-left tracking-wider cursor-pointer ${\n column.isLineHeight && \"line-height-1\"\n } ${columnIndex === 0 ? \"pl-[24px]\" : \"\"} ${\n columnIndex === columns.length - 1\n ? \"pr-[24px]\"\n : \"\"\n }`}\n style={{\n width: column.width || \"150px\",\n verticalAlign: \"bottom\",\n }}\n onClick={() =>\n column.sortable && handleSort(column.selector)\n }\n >\n <div\n className={`flex ${\n column.isJustifyBetween && \"justify-between\"\n } ${\n column.isJustifyBetween &&\n column.className !== undefined\n ? column.className\n : \"\"\n } items-center`}\n >\n {column.selector === \"checkbox\" ? (\n <input\n type=\"checkbox\"\n checked={\n tableHeaderCustom?.isAllSelected ?? false\n }\n ref={(input) => {\n if (input) {\n input.indeterminate =\n tableHeaderCustom?.isIndeterminate ??\n false;\n }\n }}\n onChange={tableHeaderCustom?.toggleAll}\n className=\"cursor-pointer absolute top-6\"\n />\n ) : (\n <>\n <span\n className={`${\n column.isCenteredText &&\n \"h-[25px] flex flex-center\"\n } items-center ${\n column.tableHeaderFontSize\n ? column.tableHeaderFontSize\n : \"text-[12px]\"\n } font-semibold text-[#131414]`}\n >\n {column.name}\n </span>\n {column.sortable && (\n <span className=\"inline-block ml-2\">\n <svg\n width=\"8\"\n height=\"12\"\n viewBox=\"0 0 8 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.99994 1.88667L6.11328 4L7.05328 3.06L3.99994 0L0.939941 3.06L1.88661 4L3.99994 1.88667ZM3.99994 10.1133L1.88661 8L0.946608 8.94L3.99994 12L7.05994 8.94L6.11328 8L3.99994 10.1133Z\"\n fill=\"#323232\"\n />\n </svg>\n </span>\n )}\n </>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n )}\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => {\n // Get custom row attributes if tableRow function is provided\n const rowProps = tableRow ? tableRow(item, index) : {};\n\n return (\n <tr\n key={index}\n {...rowProps}\n className={twMerge(rowProps.className || \"\")}\n >\n {columns.map((column, columnIndex) => (\n <td\n key={column.selector}\n className={`px-1 py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all\n\n ${\n index === tableData.length - 1 &&\n !hasPagination &&\n \" rounded-br-[8px] rounded-bl-[8px] \"\n } \n ${columnIndex === 0 ? \" pl-[24px] \" : \"\"} ${\n columnIndex === columns.length - 1\n ? \" pr-[24px] \"\n : \"\"\n }\n ${tableBodyDesign?.className ?? \"\"}\n `}\n style={{ width: column.width, minHeight: \"45px\" }}\n >\n {/* Render custom body content if provided, otherwise default to item property */}\n {tableBody\n ? tableBody(item, column, columnIndex)\n : item[column.selector as keyof TableData]}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n )}\n </table>\n }\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto overflow-x-auto \">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-auto overflow-x-auto \"\n style={{ borderColor: \"rgba(64, 98, 229, 0.2)\" }}\n >\n <div\n className={`flex justify-center items-center ${loadAndErrorHeight}`}\n >\n <div className=\"animate-spin rounded-full h-10 w-10 border-b-2 border-primary\"></div>\n </div>\n </div>\n )}\n {hasPagination &&\n tableData &&\n tableData.length > 0 &&\n !isLoading &&\n !isSimpleMode && (\n <div\n ref={paginationRef}\n className=\"flex items-center justify-between px-4 py-3 bg-white border-b-1 rounded-bl-[8px]\"\n >\n <div className=\"flex items-center gap-2\">\n <Pagination\n totalPages={pagination?.totalPage ?? 1}\n currentPage={pagination?.page ?? 1}\n onPageChange={pagination?.handlePageChange}\n pageRangeDisplayed={pagination?.pageRangeDisplayed}\n />\n </div>\n\n <div className=\"flex items-center justify-center gap-2\">\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n Rows Per Page:\n </span>\n\n <div className=\"relative\">\n <select\n value={pagination?.per_page}\n onChange={(e) =>\n pagination?.handleRowsPerPageChange(\n Number(e.target.value)\n )\n }\n className=\"appearance-none border broder-1 rounded-[2px] gap-2px pr-[2px] pt-[1px] pl-[8px] h-[20px] w-[50px]\"\n style={{\n borderColor: \"#E0E1E6\",\n fontSize: \"12px\",\n }}\n >\n <option value={10}>10</option>\n <option value={20}>20</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <div className=\"absolute right-[5px] bottom-1/2 top-1/2 pt-[5px] transform -translate-y-1/2 w-3 h-3 text-gray-400 pointer-events-none\">\n <svg\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.833313 0.333496L4.99998 4.50016L9.16665 0.333496H0.833313Z\"\n fill=\"#131414\"\n />\n </svg>\n </div>\n </div>\n <div\n className=\"bg-[#B5BAC4] h-[16px] w-[1px] self-center\"\n style={{ marginTop: \"1px\" }}\n ></div>\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n {pagination\n ? `${\n (pagination.page - 1) * pagination.per_page + 1\n } - ${Math.min(\n pagination.page * pagination.per_page,\n pagination.totalItems\n )} of ${pagination.totalItems}`\n : \"0 - 0 of 0\"}\n </span>\n </div>\n </div>\n )}\n </div>\n }\n <div\n className={`min-w-0 border-[#E2E2E2] flex-1 ${\n !hasAnotherScreen ? \"hidden\" : \"\"\n }`}\n style={{\n maxHeight: `${tableHeight <= 100 ? 540 : tableHeight}px`,\n minHeight: \"490px\",\n }}\n >\n {anotherScreenComponent ?? <div></div>}\n </div>\n </div>\n </div>\n );\n};\n\nexport default DynamicTableV2;\n","import { useEffect, useState } from \"react\";\nimport WarningImage from \"../assets/warning.png\";\ninterface ErrorToastProps {\n message?: string;\n onClose?: () => void;\n autoClose?: boolean;\n autoCloseDelay?: number;\n isVisible?: boolean;\n}\n\nconst ErrorToast = ({\n message = \"Request set as paid successfully!\",\n onClose,\n autoClose = false,\n autoCloseDelay = 125000,\n isVisible: externalIsVisible,\n}: ErrorToastProps) => {\n const [internalIsVisible, setInternalIsVisible] = useState(true);\n const [shouldRender, setShouldRender] = useState(true);\n const isVisible =\n externalIsVisible !== undefined ? externalIsVisible : internalIsVisible;\n\n useEffect(() => {\n if (!isVisible) {\n // Wait for fade-out transition to complete before unmounting\n const timeout = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timeout);\n } else {\n setShouldRender(true); // Ensure it's rendered if visible\n }\n }, [isVisible]);\n\n useEffect(() => {\n if (autoClose && autoCloseDelay > 0 && isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, autoCloseDelay);\n\n return () => clearTimeout(timer);\n }\n }, [autoClose, autoCloseDelay, isVisible]);\n\n const handleClose = () => {\n if (externalIsVisible === undefined) {\n setInternalIsVisible(false);\n }\n if (onClose) {\n onClose();\n }\n };\n\n if (!shouldRender) return null;\n\n return (\n <div\n className={`fixed top-[70px] right-0 transform z-50 transition-opacity duration-300 ${\n isVisible ? \"opacity-100\" : \"opacity-0\"\n }`}\n >\n <div className=\"flex justify-start items-center bg-[#FFE2E2] rounded-[6px] h-[48px] shadow-lg w-auto border-l-[6px] border-[#E7322C]\">\n <div className=\"w-[5px]\" />\n <img src={WarningImage} alt=\"warning\" height={18} width={18} />\n <p className=\"text-[#131414] pl-[8px] pr-[17px] font-semibold text-[14px]\">\n {message}\n </p>\n <button onClick={handleClose} aria-label=\"Close notification\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport default ErrorToast;\n","import { useEffect, useState } from \"react\";\nimport CheckImage from \"../assets/check.png\";\ninterface SuccessToastProps {\n message?: string;\n onClose?: () => void;\n autoClose?: boolean;\n autoCloseDelay?: number;\n isVisible?: boolean;\n}\n\nconst SuccessToast = ({\n message = \"Request set as paid successfully!\",\n onClose,\n autoClose = false,\n autoCloseDelay = 125000,\n isVisible: externalIsVisible,\n}: SuccessToastProps) => {\n const [internalIsVisible, setInternalIsVisible] = useState(true);\n const [shouldRender, setShouldRender] = useState(true);\n const isVisible =\n externalIsVisible !== undefined ? externalIsVisible : internalIsVisible;\n\n useEffect(() => {\n if (!isVisible) {\n // Wait for fade-out transition to complete before unmounting\n const timeout = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timeout);\n } else {\n setShouldRender(true); // Ensure it's rendered if visible\n }\n }, [isVisible]);\n\n useEffect(() => {\n if (autoClose && autoCloseDelay > 0 && isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, autoCloseDelay);\n\n return () => clearTimeout(timer);\n }\n }, [autoClose, autoCloseDelay, isVisible]);\n\n const handleClose = () => {\n if (externalIsVisible === undefined) {\n setInternalIsVisible(false);\n }\n if (onClose) {\n onClose();\n }\n };\n\n if (!shouldRender) return null;\n\n return (\n <div\n className={`fixed top-[70px] right-0 transform z-50 transition-opacity duration-300 ${\n isVisible ? \"opacity-100\" : \"opacity-0\"\n }`}\n >\n <div className=\"flex justify-start items-center bg-[#C6F6D5] rounded-[6px] h-[48px] shadow-lg w-auto border-l-[6px] border-[#38A169]\">\n <div className=\"w-[5px]\" />\n <img src={CheckImage} alt=\"warning\" height={18} width={18} />\n <p className=\"text-[#131414] pl-[8px] pr-[17px] font-semibold text-[14px]\">\n {message}\n </p>\n <button onClick={handleClose} aria-label=\"Close notification\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport default SuccessToast;\n","import { twMerge } from \"tailwind-merge\";\n\nexport type NavBarProps = {\n children?: React.ReactNode;\n wrapperClassName?: string;\n innerClassName?: string;\n} & React.HTMLAttributes<HTMLElement>; // allow props like onClick, id, aria-*\n\nconst NavBar = ({\n children,\n wrapperClassName,\n innerClassName,\n ...rest\n}: NavBarProps) => {\n return (\n <nav\n {...rest}\n className={twMerge(\n \"z-20 w-full px-4 shadow-navbar bg-white h-[80px]\",\n wrapperClassName\n )}\n >\n <div\n className={twMerge(\n \"h-[80px] flex justify-between items-center gap-2 px-4 py-1\",\n innerClassName\n )}\n >\n {children}\n </div>\n </nav>\n );\n};\n\nexport default NavBar;\n","import { twMerge } from \"tailwind-merge\";\n\ntype ModalProps = {\n isOpen: boolean;\n type?: \"left\" | \"right\" | \"center\";\n onClose?: () => void;\n widthClassName?: string;\n children?: React.ReactNode;\n overlayClassName?: string;\n modalClassName?: string;\n stayMounted?: boolean;\n};\n\nconst Modal = ({\n isOpen,\n type = \"right\",\n onClose,\n widthClassName = \"w-[300px]\",\n children,\n overlayClassName,\n modalClassName,\n stayMounted = false,\n}: ModalProps) => {\n if (!stayMounted && !isOpen) return null;\n\n let positionClasses = \"\";\n if (type === \"left\") {\n positionClasses = \"left-0 top-0 h-full\";\n } else if (type === \"right\") {\n positionClasses = \"right-0 top-0 h-full\";\n } else if (type === \"center\") {\n positionClasses =\n \"top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\";\n }\n\n return (\n <>\n <div\n className={twMerge(\n \"fixed inset-0 bg-black bg-opacity-50 z-40\",\n stayMounted ? (isOpen ? \"block\" : \"hidden\") : \"block\",\n overlayClassName\n )}\n onClick={onClose}\n aria-hidden={!isOpen}\n />\n\n <div\n className={twMerge(\n `fixed bg-white shadow-xl z-50 transform transition-transform duration-300 ease-in-out ${positionClasses}`,\n stayMounted ? (isOpen ? \"block\" : \"hidden\") : \"block\",\n widthClassName,\n modalClassName\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {children}\n </div>\n </>\n );\n};\n\nexport default Modal;\n","import { twMerge } from \"tailwind-merge\";\n\ntype PopupWrapperProps = {\n children?: React.ReactNode;\n className?: string;\n isOpen: boolean;\n stayMounted?: boolean;\n closePopup?: () => void;\n hasClosePopup?: boolean;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst PopupWrapper = ({\n children,\n className,\n isOpen = false,\n stayMounted = false,\n closePopup,\n hasClosePopup = false,\n ...rest\n}: PopupWrapperProps) => {\n if (!stayMounted && !isOpen) return null;\n\n return (\n <div\n {...rest}\n className={twMerge(\n \"absolute right-0 top-1 mt-10 shadow-lg bg-white rounded-lg p-4 w-80 z-10 border border-opacity-10\",\n isOpen ? \"block\" : \"hidden\",\n className\n )}\n >\n {hasClosePopup && (\n <div className=\"flex justify-end cursor-pointer\" onClick={closePopup}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </div>\n )}\n {children}\n </div>\n );\n};\n\nexport default PopupWrapper;\n","import { twMerge } from \"tailwind-merge\";\n\nexport type LayoutProps = {\n children: React.ReactNode;\n wrapperClassName?: string;\n navClassName?: string;\n navProps?: React.HTMLAttributes<HTMLElement>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst SideNav = ({\n children,\n wrapperClassName,\n navClassName,\n navProps,\n ...rest\n}: LayoutProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"bg-base min-w-[260px] shadow-sidebar relative sm:flex flex-col justify-between h-screen max-h-screen\",\n wrapperClassName\n )}\n >\n <nav\n {...navProps}\n className={twMerge(\n \"relative flex flex-col w-full gap-1 px-4 pt-4\",\n navClassName,\n navProps?.className\n )}\n >\n {children}\n </nav>\n </div>\n );\n};\n\nexport default SideNav;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Box: React.FC<BoxProps> = ({ className = \"\", children, ...rest }) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"border border-[1px] border-[#C4CFF6] rounded-[8px] min-h-[10px] bg-white\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default Box;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst BoxHeader: React.FC<BoxHeaderProps> = ({\n className = \"\",\n children,\n ...rest\n}) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"h-[40px] w-full bg-[#F5F7FE] px-2 flex items-center border-b border-[#C4CFF6] rounded-tr-[8px] rounded-tl-[8px]\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default BoxHeader;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst BoxBody: React.FC<BoxBodyProps> = ({\n className = \"\",\n children,\n ...rest\n}) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"bg-white p-2 min-h-[20px] rounded-br-[8px] rounded-bl-[8px]\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default BoxBody;\n"]}
1
+ {"version":3,"sources":["../src/components/button/PlainButton.tsx","../src/components/button/CollapseButton.tsx","../src/components/button/Button.tsx","../src/components/assets/RefreshIcon.tsx","../src/components/cards/components/ErrorGraphContet.tsx","../src/components/cards/components/LineChart.tsx","../src/components/cards/components/LoaderGraphContent.tsx","../src/components/cards/GraphedCard.tsx","../src/components/cards/components/ErrorContent.tsx","../src/components/cards/components/LoaderContent.tsx","../src/components/cards/SimpleCard.tsx","../src/components/common/Label.tsx","../src/components/graph/MultiLineGraph.tsx","../src/components/graph/SingleLineGraph.tsx","../src/components/inputs/CommonInput.tsx","../src/utility/daterange.tsx","../src/components/inputs/DateRange.tsx","../src/components/inputs/MultipleAutoSuggestionInput.tsx","../src/components/inputs/SingleListInput.tsx","../src/components/inputs/SingleSelectDropdown.tsx","../src/components/inputs/SelectionButton.tsx","../src/components/inputs/SingleDateInput.tsx","../src/components/inputs/TimeInput.tsx","../src/components/inputs/CommonInputSingle.tsx","../src/components/table/Pagination.tsx","../src/components/table/TableHeader.tsx","../src/components/table/DynamicTable.tsx","../src/components/table/DynamicTableV2.tsx","../src/components/toast/ErrorToast.tsx","../src/components/toast/SuccessToast.tsx","../src/components/wrappers/NavBar.tsx","../src/components/wrappers/Modal.tsx","../src/components/wrappers/PopupWrapper.tsx","../src/components/wrappers/SideNav.tsx","../src/components/wrappers/Box.tsx","../src/components/wrappers/BoxHeaders.tsx","../src/components/wrappers/BoxBody.tsx"],"names":["jsx","twMerge","jsxs","ChartJS","CategoryScale","LinearScale","PointElement","LineElement","Title","Tooltip","Filler","Legend","useRef","useState","useEffect","useMemo","label","Line","React","_a","isValid","earliestDate","className","ChevronLeft","ChevronRight","Fragment","useLayoutEffect","createPortal","useCallback","parseISO","format","DatePicker","startOfDay","isToday","ReactPaginate","_b"],"mappings":"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","file":"index.js","sourcesContent":["import { twMerge } from \"tailwind-merge\";\n\ninterface PlainButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\nconst PlainButton = ({ className, children, ...rest }: PlainButtonProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"min-h-[26px] w-[50px] bg-white text-center rounded-[4px] flex items-center justify-center border border-[#E2E2E2] text-black cursor-pointer hover:bg-gray-100\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default PlainButton;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n mainClass?: string;\n paragraphClass?: string;\n paragraphContent: string;\n title: string;\n titleClass?: string;\n}\nconst CollapseButton = ({\n isOpen,\n mainClass,\n paragraphClass,\n paragraphContent,\n title,\n titleClass,\n ...rest\n}: Props) => {\n return (\n <div\n className={twMerge(\n \"min-h-[40px] w-full px-[16px] py-[8px] bg-white border border-[#E2E2E2] rounded-[4px]\",\n mainClass\n )}\n >\n {/* Header */}\n <div\n {...rest}\n className=\"flex justify-between items-center cursor-pointer\"\n >\n <p\n className={twMerge(\n \"font-semibold text-[14px] transition-colors duration-300\",\n isOpen ? \"text-[#4062E5]\" : \"text-[#000]\",\n titleClass\n )}\n >\n {title}\n </p>\n <svg\n className={twMerge(\n \"transition-transform duration-300\",\n !isOpen && \"rotate-180\"\n )}\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M0 5L5 0L10 5H0Z\" fill=\"#757575\" />\n </svg>\n </div>\n\n <div\n className={twMerge(\n `overflow-hidden transition-all duration-300 ease-in-out`,\n isOpen ? \"max-h-40 opacity-100 mt-1\" : \"max-h-0 opacity-0 mt-0\"\n )}\n >\n <p className={twMerge(\"font-normal text-[14px]\", paragraphClass)}>\n {paragraphContent}\n </p>\n </div>\n </div>\n );\n};\n\nexport default CollapseButton;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface ButtonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\nconst Button = ({ className, children, ...rest }: ButtonProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"min-h-[26px] w-[50px] bg-[#4683B4] text-center flex items-center justify-center rounded-[4px] text-white cursor-pointer\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default Button;\n","const RefreshIcon = ({ height = \"24px\", width = \"24px\", color = \"#000\" }) => (\n <svg\n fill={color}\n width={width}\n height={height}\n viewBox=\"0 0 32 32\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M27.1 14.313V5.396L24.158 8.34c-2.33-2.325-5.033-3.503-8.11-3.503C9.902 4.837 4.901 9.847 4.899 16c.001 6.152 5.003 11.158 11.15 11.16 4.276 0 9.369-2.227 10.836-8.478l.028-.122h-3.23l-.022.068c-1.078 3.242-4.138 5.421-7.613 5.421a8 8 0 0 1-5.691-2.359A7.993 7.993 0 0 1 8 16.001c0-4.438 3.611-8.049 8.05-8.049 2.069 0 3.638.58 5.924 2.573l-3.792 3.789H27.1z\" />\n </svg>\n);\n\nexport default RefreshIcon;\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../../assets/info.svg\";\nimport RefreshIcon from \"../../assets/RefreshIcon\";\ninterface Props {\n title: string;\n tooltip_text: string;\n image?: React.ReactNode;\n handleRefresh?: () => void;\n className?: string;\n}\nconst ErrorGraphContent = ({\n className,\n title,\n tooltip_text,\n image,\n handleRefresh,\n}: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] h-[180px] w-full border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex justify-between relative\">\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n <span className=\"font-medium\" style={{ letterSpacing: \"0.5px\" }}>\n {title}\n </span>\n\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"170px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div\n className=\"flex justify-center mt-3 w-[53px] h-[16px] cursor-pointer\"\n onClick={handleRefresh}\n >\n <div className=\"flex gap-1 items-center\">\n <RefreshIcon height=\"16px\" width=\"16px\" color=\"#4062E5\" />\n <p className=\"text-[#4062E5] text-[10px]\">Refresh</p>\n </div>\n </div>\n </div>\n\n <div className=\"ml-4\">{image}</div>\n <div className=\"absolute w-full h-full top-[70px]\">\n <div className=\"h-[90px] bg-gray-300 rounded w-full animate-pulse\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ErrorGraphContent;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\n\ninterface LineChartProps {\n data: number[];\n label: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n lineColor?: string;\n tooltipIcon?: string;\n}\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst LineChart = ({\n data,\n label,\n lineColor = \"#17CA43\",\n gradientColor1 = \"rgba(23, 202, 67, 0.5)\",\n gradientColor0 = \"rgba(23, 202, 67, 0)\",\n pointLabelColor = \"#4062E5\",\n labelPopupTitle = \"Requests Completed\",\n tooltipIcon,\n}: LineChartProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n // Force chart to re-render when window resizes\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const months = label;\n\n const values = data;\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: false,\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n },\n y: {\n display: false,\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n },\n },\n\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n tooltipEl.innerHTML = \"<div></div>\";\n document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n const value = dataPoint?.parsed.y;\n const label = dataPoint?.label;\n const arrowSize = 8;\n const position = context.chart.canvas.getBoundingClientRect();\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = \"0px\";\n tooltipEl.style.top = \"0px\";\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.innerHTML = `\n <div style=\"position: relative;height: 57px; background:white; border:1px solid rgba(16, 30, 115, 0.1); padding:10px; border-radius:4px; font-size:12px; color:#333; display:flex; align-items:center; gap:10px;\">\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#757575;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n const windowWidth = window.innerWidth;\n const tooltipLeftEdge = pointX - tooltipWidth / 2;\n const tooltipRightEdge = pointX + tooltipWidth / 2;\n let arrowLeftPercent = 50;\n let xAdjustment = 0;\n if (tooltipLeftEdge < 10) {\n xAdjustment = 10 - tooltipLeftEdge;\n } else if (tooltipRightEdge > windowWidth - 10) {\n xAdjustment = windowWidth - 10 - tooltipRightEdge;\n }\n\n const xPosition = tooltipLeftEdge + xAdjustment;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(10, Math.min(90, arrowLeftPercent));\n\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; display: flex; align-items: center; gap: 10px;\">\n\n <!-- Outer arrow (border color) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: ${outerArrowSize}px solid transparent;\n border-right: ${outerArrowSize}px solid transparent;\n border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\n \"></div>\n\n <!-- Inner arrow (white background) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%) translateY(-1px);\n width: 0;\n height: 0;\n border-left: ${innerArrowSize}px solid transparent;\n border-right: ${innerArrowSize}px solid transparent;\n border-top: ${innerArrowSize}px solid white;\n \"></div>\n\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n ${\n tooltipIcon\n ? tooltipIcon\n : ` <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 9 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\"\n fill=\"#4683B4\"\n />\n </svg>`\n }&nbsp;\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n tooltipEl.innerHTML = innerHtml;\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"index\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#17CA43\",\n borderColor: \"white\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n afterDraw: (chart: any) => {\n const tooltip = chart.tooltip;\n if (tooltip?._active?.length) {\n const activePoint = chart.tooltip._active[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: months,\n datasets: [\n {\n label: labelPopupTitle,\n data: values,\n borderColor: lineColor,\n borderWidth: 2,\n backgroundColor: (context: any) => {\n if (!context.chart.chartArea) return \"rgba(23, 202, 67, 0.5)\";\n const { ctx, chartArea } = context.chart;\n const gradient = ctx.createLinearGradient(\n 0,\n chartArea.bottom,\n 0,\n chartArea.top\n );\n gradient.addColorStop(0, gradientColor0);\n gradient.addColorStop(1, gradientColor1);\n return gradient;\n },\n fill: true,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: pointLabelColor,\n },\n ],\n }),\n [months, values]\n );\n\n return (\n <div style={{ width: \"100%\", height: \"100px\" }}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine]}\n />\n </div>\n );\n};\nexport default LineChart;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props {\n className?: string;\n}\nconst LoaderGraphContent = ({ className }: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] h-[180px] w-full border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex justify-between relative\">\n <div className=\"flex-1 flex flex-col justify-between relative\">\n <div className=\"flex items-center relative\">\n <div className=\"h-4 bg-gray-300 rounded w-1/2 animate-pulse\"></div>\n <div className=\"ml-1 mt-1 h-3 w-3 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n <div className=\"mt-3 flex items-baseline\">\n <div className=\"h-6 bg-gray-300 rounded w-1/4 animate-pulse\"></div>\n </div>\n </div>\n\n <div className=\"ml-4 h-10 w-10 bg-gray-300 rounded-full animate-pulse\"></div>\n <div className=\"absolute w-full h-full top-[70px]\">\n <div className=\"h-[90px] bg-gray-300 rounded w-full animate-pulse\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default LoaderGraphContent;\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport ErrorGraphContent from \"./components/ErrorGraphContet\";\nimport LineChart from \"./components/LineChart\";\nimport LoaderGraphContent from \"./components/LoaderGraphContent\";\ninterface GraphedCardProps {\n className?: string;\n title: string;\n tooltip_text: string;\n subText?: string;\n value: string;\n unit?: string;\n image?: React.ReactNode;\n lineData: number[];\n lineLabel: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n isCustomTitle?: boolean;\n customTitle?: React.ReactNode;\n lineColor?: string;\n isLoading: boolean;\n isError: boolean;\n handleRefresh?: () => void;\n tooltipIcon?: string;\n}\n\nconst GraphedCard = ({\n className,\n title,\n value,\n subText = \"\",\n unit = \"\",\n tooltip_text,\n image,\n gradientColor0,\n gradientColor1,\n pointLabelColor,\n labelPopupTitle,\n lineData,\n lineLabel,\n isCustomTitle = false,\n customTitle,\n lineColor,\n isLoading,\n isError,\n handleRefresh,\n tooltipIcon,\n}: GraphedCardProps) => {\n if (isLoading) {\n return <LoaderGraphContent className={className} />;\n }\n\n if (isError) {\n return (\n <ErrorGraphContent\n handleRefresh={handleRefresh}\n image={image}\n tooltip_text={tooltip_text}\n title={title}\n className={className}\n />\n );\n }\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] w-full flex h-[180px] min-w-[210px] justify-between border border-[#E2E2E2]\",\n className\n )}\n style={{\n boxShadow: \"0px 12px 26px 0px #101E730F\",\n }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex justify-between relative\">\n <div className={`flex-1 flex flex-col justify-between gap-1`}>\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n {isCustomTitle ? (\n customTitle\n ) : (\n <span\n className=\"font-semibold\"\n style={{ letterSpacing: \"0.5px\" }}\n >\n {title}\n </span>\n )}\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"215px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div className={`flex-grow items-center`}>\n <span className=\"text-[24px] font-semibold text-gray-900\">\n {subText == \"$\" ? \"$\" : \"\"}\n {value.trim()}\n {subText == \"$\" ? \"\" : subText}\n </span>\n <span className=\"text-gray-500 ml-2\">{unit}</span>\n </div>\n </div>\n\n <div className=\"ml-4\">{image}</div>\n <div className=\"absolute w-full h-full top-16\">\n <LineChart\n data={lineData}\n label={lineLabel}\n lineColor={lineColor}\n gradientColor0={gradientColor0}\n gradientColor1={gradientColor1}\n pointLabelColor={pointLabelColor}\n labelPopupTitle={labelPopupTitle}\n tooltipIcon={tooltipIcon}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default GraphedCard;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport RefreshIcon from \"../../assets/RefreshIcon\";\nimport InfoIcon from \"../../assets/info.svg\";\ninterface ErrorContentProps {\n title: string;\n tooltip_text: string;\n image?: React.ReactNode;\n handleRefresh?: () => void;\n className?: string;\n}\nconst ErrorContent = ({\n title,\n tooltip_text,\n image,\n handleRefresh,\n className,\n}: ErrorContentProps) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] min-h-[100px] w-full flex justify-between border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n <span className=\"font-medium\" style={{ letterSpacing: \"0.5px\" }}>\n {title}\n </span>\n\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"170px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n </div>\n <div className=\"mt-2 flex items-baseline\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-[#F2F2F2] w-[190px] h-[28px] animate-pulse\"></div>\n </div>\n <div className=\"flex items-center\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-[#F2F2F2] w-[40px] h-[20px] animate-pulse\"></div>\n <div\n className=\"flex justify-center ml-2 w-[53px] h-[16px] cursor-pointer\"\n onClick={handleRefresh}\n >\n <div className=\"flex gap-1 items-center\">\n <RefreshIcon height=\"16px\" width=\"16px\" color=\"#4062E5\" />\n <p className=\"text-[#4062E5] text-[10px]\">Refresh</p>\n </div>\n </div>\n </div>\n </div>\n <div className=\"ml-4\">{image}</div>\n </div>\n );\n};\n\nexport default ErrorContent;\n","import { twMerge } from \"tailwind-merge\";\n\ninterface Props {\n className?: string;\n}\nconst LoaderComponent = ({ className }: Props) => {\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] min-h-[100px] w-full flex justify-between border border-1\",\n className\n )}\n style={{ borderColor: \"#E2E2E2\" }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex items-center relative\">\n <div className=\"h-4 bg-gray-300 rounded w-1/2 animate-pulse\"></div>\n <div className=\"ml-1 mt-1 h-3 w-3 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n <div className=\"mt-2 flex items-baseline\">\n <div className=\"h-6 bg-gray-300 rounded w-1/4 animate-pulse\"></div>\n </div>\n <div className=\"mt-2 flex items-center\">\n <div className=\"flex items-center px-2 py-1 rounded-md bg-gray-200 w-24 animate-pulse\">\n <div className=\"h-3 w-3 bg-gray-300 rounded-full mr-2\"></div>\n <div className=\"h-3 bg-gray-300 rounded w-12\"></div>\n </div>\n <div className=\"text-gray-500 text-xs ml-2 h-3 bg-gray-300 rounded w-16 animate-pulse\"></div>\n </div>\n </div>\n <div className=\"ml-4 h-10 w-10 bg-gray-300 rounded-full animate-pulse\"></div>\n </div>\n );\n};\n\nexport default LoaderComponent;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport ErrorContent from \"./components/ErrorContent\";\nimport LoaderComponent from \"./components/LoaderContent\";\n\ninterface SimpleCardProps {\n title: string;\n value: string;\n unit?: string;\n tooltip_text: string;\n subText?: string;\n footerText?: string;\n hasDaysOption?: boolean;\n hasTillDateDayOption?: boolean;\n onDayChange?: (days: string) => void;\n image?: React.ReactNode;\n hasfooterDesign?: boolean;\n footerDesign?: React.ReactNode;\n className?: string;\n isLoading: boolean;\n isError: boolean;\n handleRefresh?: () => void;\n isCustomTitle?: boolean;\n customTitle?: React.ReactNode;\n}\n\nconst SimpleCard = ({\n title,\n value,\n image,\n unit = \"\",\n tooltip_text,\n subText = \"\",\n footerText = \"\",\n hasfooterDesign = false,\n footerDesign,\n hasDaysOption = false,\n hasTillDateDayOption = false,\n onDayChange,\n className,\n handleRefresh,\n isLoading,\n isError,\n isCustomTitle = false,\n customTitle,\n}: SimpleCardProps) => {\n const [selectedDay, setSelectedDay] = React.useState<string>(\"90\");\n const handleDayClick = (label: string) => {\n setSelectedDay(label);\n if (onDayChange) onDayChange(label);\n };\n\n const options = React.useMemo(() => {\n const baseOptions = [\"90\", \"30\", \"7\"];\n if (hasTillDateDayOption) {\n return [...baseOptions, \"till date\"];\n }\n return baseOptions;\n }, [hasTillDateDayOption]);\n\n if (isLoading) {\n return <LoaderComponent className={className} />;\n }\n\n if (isError) {\n return (\n <ErrorContent\n handleRefresh={handleRefresh}\n image={image}\n tooltip_text={tooltip_text}\n title={title}\n className={className}\n />\n );\n }\n\n const renderDayOption = (label: string) => {\n const isSelected = selectedDay === label;\n return (\n <span\n key={label}\n className={`cursor-pointer ${\n isSelected\n ? \"text-[#4683B4] font-semibold\"\n : \"text-[#757575] font-normal\"\n }`}\n style={{ letterSpacing: \"0.5px\", lineHeight: 1 }}\n onClick={() => handleDayClick(label)}\n >\n {label} {label !== \"till date\" && \"days\"}\n </span>\n );\n };\n\n return (\n <div\n className={twMerge(\n \"bg-white rounded-[6px] px-[8px] py-[9px] pl-[12px] w-full flex min-h-[100px] min-w-[210px] justify-between border border-[#E2E2E2]\",\n className\n )}\n style={{\n boxShadow: \"0px 12px 26px 0px #101E730F\",\n }}\n >\n <div className=\"flex-1 flex flex-col justify-between\">\n <div className=\"flex justify-between\">\n <div className={`flex-1 flex flex-col justify-between gap-1`}>\n <div className=\"flex items-center relative\">\n <h3\n className=\"text-content-2 font-semibold flex\"\n style={{ fontSize: \"12px\" }}\n >\n {isCustomTitle ? (\n customTitle\n ) : (\n <span\n className=\"font-semibold\"\n style={{ letterSpacing: \"0.5px\" }}\n >\n {title}\n </span>\n )}\n <span\n className=\"cursor-pointer text-gray-400 relative group\"\n style={{ top: \"0.5px\", left: \"2px\" }}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute top-6 left-1/2 transform -translate-x-1/2 z-10 hidden rounded-md bg-black text-white text-xs p-2 shadow-md group-hover:block text-center\"\n style={{ width: \"215px\" }}\n >\n {tooltip_text}\n <div className=\"absolute left-1/2 -top-1 transform -translate-x-1/2 w-3 h-3 bg-black rotate-45\"></div>\n </div>\n </span>\n </h3>\n </div>\n <div className={`flex-grow items-center`}>\n <span className=\"text-[24px] font-semibold text-gray-900\">\n {subText == \"$\" ? \"$\" : \"\"}\n {value.trim()}\n {subText == \"$\" ? \"\" : subText}\n </span>\n <span className=\"text-gray-500 ml-2\">{unit}</span>\n </div>\n </div>\n <div className=\"ml-4\">{image}</div>\n </div>\n <div className=\"flex items-center gap-2\">\n {hasfooterDesign && footerDesign}\n {!hasDaysOption && (\n <span\n className=\"text-[12px] font-normal\"\n style={{\n color: \"#757575\",\n letterSpacing: \"0.5px\",\n lineHeight: 1,\n }}\n >\n {footerText}\n </span>\n )}\n </div>\n {hasDaysOption && (\n <div className=\"flex gap-[4px] text-[12px] font-normal text-center items-center\">\n {options.map((label, index, array) => (\n <React.Fragment key={label}>\n {renderDayOption(label)}\n {index < array.length - 1 && (\n <p className=\"text-[#757575]\">|</p>\n )}\n </React.Fragment>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SimpleCard;\n","import { twMerge } from \"tailwind-merge\";\ninterface Props {\n title: string;\n classNames?: string;\n}\nconst Label = ({ title, classNames }: Props) => {\n return (\n <p className={twMerge(\"text-[14px] font-semibold \", classNames)}>{title}</p>\n );\n};\n\nexport default Label;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface DataSet {\n data: number[];\n label: string;\n lineColor?: string;\n pointLabelColor?: string;\n}\n\ninterface MultiLineGraphProps {\n datasets: DataSet[];\n xAxisLabels: string[];\n className?: string;\n}\n\n// ✅ Best practice: Register built-in elements once at the top level.\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst MultiLineGraph = ({\n datasets,\n xAxisLabels,\n className = \"\",\n}: MultiLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n const defaultColors = [\n { line: \"#17CA43\", point: \"#17CA43\" },\n { line: \"#FF6B6B\", point: \"#FF4757\" },\n { line: \"#4ECDC4\", point: \"#26D0CE\" },\n { line: \"#45B7D1\", point: \"#3742FA\" },\n { line: \"#FFA726\", point: \"#FF6F00\" },\n { line: \"#AB47BC\", point: \"#8E24AA\" },\n ];\n\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: true,\n grid: {\n drawBorder: true,\n drawTicks: true,\n drawOnChartArea: false,\n },\n },\n y: {\n display: true, // Set to `false` if you want to hide the y-axis labels\n border: {\n display: false,\n },\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n ticks: {\n display: true,\n },\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n // Your external tooltip logic remains the same...\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n document.body.appendChild(tooltipEl);\n }\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n const dataPoints = tooltipModel.dataPoints || [];\n if (dataPoints.length === 0) {\n return;\n }\n const label = dataPoints[0]?.label;\n const dataPointsHtml = dataPoints\n .map(\n (point: any, index: number) => `\n <div style=\"display: flex; align-items: center; gap: 8px; margin: ${\n index > 0 ? \"4px\" : \"0\"\n } 0;\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.0833 0.75H1.91667C1.275 0.75 0.755833 1.275 0.755833 1.91667L0.75 10.0833C0.75 10.725 1.275 11.25 1.91667 11.25H10.0833C10.725 11.25 11.25 10.725 11.25 10.0833V1.91667C11.25 1.275 10.725 0.75 10.0833 0.75ZM10.0833 10.0833H1.91667V1.91667H10.0833V10.0833ZM5.125 8.91667H6.875V6.875H8.91667V5.125H6.875V3.08333H5.125V5.125H3.08333V6.875H5.125V8.91667Z\" fill=\"#4683B4\"/>\n </svg>\n <span style=\"font-weight: bold; color: #757575; margin-top: 1px;\">\n ${\n point.dataset.label\n }: <span style=\"color:#131414; padding-top: 1px;\">${\n point.parsed.y\n }</span>\n </span>\n </div>\n `\n )\n .join(\"\");\n const arrowSize = 8;\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; min-width: 120px;\">\n <div id=\"tooltip-arrow-border\" style=\"\n position: absolute; top: 100%; left: 50%; transform: translateX(-50%); width: 0; height: 0; border-left: ${outerArrowSize}px solid transparent; border-right: ${outerArrowSize}px solid transparent; border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\">\n </div>\n <div id=\"tooltip-arrow\" style=\"\n position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(-1px); width: 0; height: 0; border-left: ${innerArrowSize}px solid transparent; border-right: ${innerArrowSize}px solid transparent; border-top: ${innerArrowSize}px solid white;\">\n </div>\n <div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${label}</strong></p>\n ${dataPointsHtml}\n </div>\n </div>\n `;\n tooltipEl.innerHTML = innerHtml;\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const position = context.chart.canvas.getBoundingClientRect();\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n let xPosition = pointX - tooltipWidth / 2;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n const arrowBorder = tooltipEl.querySelector(\n \"#tooltip-arrow-border\"\n );\n const arrow = tooltipEl.querySelector(\"#tooltip-arrow\");\n if (arrow && arrowBorder) {\n const arrowLeftOffset = pointX - xPosition;\n (arrow as HTMLElement).style.left = `${arrowLeftOffset}px`;\n (arrowBorder as HTMLElement).style.left = `${arrowLeftOffset}px`;\n }\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n tooltipEl.style.pointerEvents = \"none\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"nearest\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#ffffff\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n // ✅ FIX: Wrap both plugin objects in useMemo to give them a stable identity.\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n beforeDatasetsDraw: (chart: any) => {\n if (chart.tooltip?.getActiveElements()?.length) {\n const activePoint = chart.tooltip.getActiveElements()[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const dashedGridPlugin = useMemo(\n () => ({\n id: \"customGridAndLabels\",\n afterDraw(chart: any) {\n const ctx = chart.ctx;\n const yAxis = chart.scales.y;\n if (!yAxis) return;\n const { left, right } = chart.chartArea;\n ctx.save();\n ctx.setLineDash([4, 4]);\n ctx.strokeStyle = \"rgba(0, 0, 0, 0.1)\";\n ctx.lineWidth = 1;\n const ticks = yAxis.ticks || [];\n ticks.forEach((tick: any, index: number) => {\n if (index === 0) return;\n const yPos = yAxis.getPixelForValue(tick.value);\n ctx.beginPath();\n ctx.moveTo(left, yPos);\n ctx.lineTo(right, yPos);\n ctx.stroke();\n });\n ctx.restore();\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: xAxisLabels,\n datasets: datasets.map((dataset, index) => {\n const colors = defaultColors[index % defaultColors.length];\n return {\n label: dataset.label,\n data: dataset.data,\n borderColor: dataset.lineColor || colors.line,\n backgroundColor: \"transparent\",\n fill: false,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: dataset.pointLabelColor || colors.point,\n tension: 0.5,\n borderWidth: 2,\n hoverBorderWidth: 3.5,\n };\n }),\n }),\n [datasets, xAxisLabels]\n );\n\n return (\n <div className={twMerge(\" w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\n\nexport default MultiLineGraph;\n","import {\n CategoryScale,\n Chart as ChartJS,\n Filler,\n Legend,\n LinearScale,\n LineElement,\n PointElement,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Line } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface SingleLineGraphProps {\n data: number[];\n label: string[];\n gradientColor0?: string;\n gradientColor1?: string;\n pointLabelColor?: string;\n labelPopupTitle?: string;\n lineColor?: string;\n className?: string;\n}\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Filler,\n Legend\n);\n\nconst SingleLineGraph = ({\n data,\n label,\n lineColor = \"#17CA43\",\n gradientColor1 = \"rgba(23, 202, 67, 0.5)\",\n gradientColor0 = \"rgba(23, 202, 67, 0)\",\n pointLabelColor = \"#4062E5\",\n labelPopupTitle = \"Requests Completed\",\n className = \"\",\n}: SingleLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\n // Force chart to re-render when window resizes\n useEffect(() => {\n const handleResize = () => {\n setChartKey(`chart-${Date.now()}`);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const months = label;\n\n const values = data;\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: {\n duration: 100,\n easing: \"easeOutQuad\" as const,\n },\n layout: {\n padding: {},\n },\n scales: {\n x: {\n display: true,\n\n grid: {\n drawBorder: true,\n drawTicks: true,\n drawOnChartArea: false,\n },\n },\n y: {\n display: true,\n border: {\n display: false,\n },\n grid: {\n drawBorder: false,\n drawTicks: false,\n drawOnChartArea: false,\n },\n ticks: {\n display: true, // 👈 Add this to hide the number labels\n },\n },\n },\n plugins: {\n legend: { display: false },\n tooltip: {\n enabled: false,\n external: function (context: any) {\n let tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.id = \"chartjs-tooltip\";\n tooltipEl.innerHTML = \"<div></div>\";\n document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n context.chart.canvas.style.cursor =\n tooltipModel.opacity === 0 ? \"default\" : \"pointer\";\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n const value = dataPoint?.parsed.y;\n const label = dataPoint?.label;\n const arrowSize = 8;\n const position = context.chart.canvas.getBoundingClientRect();\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.left = \"0px\";\n tooltipEl.style.top = \"0px\";\n tooltipEl.style.opacity = \"1\";\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.innerHTML = `\n <div style=\"position: relative;height: 57px; background:white; border:1px solid rgba(16, 30, 115, 0.1); padding:10px; border-radius:4px; font-size:12px; color:#333; display:flex; align-items:center; gap:10px;\">\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#757575;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const pointX =\n position.left + window.pageXOffset + tooltipModel.caretX;\n const pointY =\n position.top + window.pageYOffset + tooltipModel.caretY;\n const windowWidth = window.innerWidth;\n const tooltipLeftEdge = pointX - tooltipWidth / 2;\n const tooltipRightEdge = pointX + tooltipWidth / 2;\n let arrowLeftPercent = 50;\n let xAdjustment = 0;\n if (tooltipLeftEdge < 10) {\n xAdjustment = 10 - tooltipLeftEdge;\n } else if (tooltipRightEdge > windowWidth - 10) {\n xAdjustment = windowWidth - 10 - tooltipRightEdge;\n }\n\n const xPosition = tooltipLeftEdge + xAdjustment;\n const yPosition = pointY - tooltipHeight - arrowSize - 5;\n arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(10, Math.min(90, arrowLeftPercent));\n\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n const innerHtml = `\n <div style=\"position: relative; background: white; border: 1px solid rgba(16, 30, 115, 0.1); padding: 10px; border-radius: 4px; font-size: 12px; color: #333; display: flex; align-items: center; gap: 10px;\">\n\n <!-- Outer arrow (border color) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: ${outerArrowSize}px solid transparent;\n border-right: ${outerArrowSize}px solid transparent;\n border-top: ${outerArrowSize}px solid rgba(16, 30, 115, 0.1);\n \"></div>\n\n <!-- Inner arrow (white background) -->\n <div style=\"\n position: absolute;\n top: 100%;\n left: ${arrowLeftPercent}%;\n transform: translateX(-50%) translateY(-1px);\n width: 0;\n height: 0;\n border-left: ${innerArrowSize}px solid transparent;\n border-right: ${innerArrowSize}px solid transparent;\n border-top: ${innerArrowSize}px solid white;\n \"></div>\n\n <div>\n <p style=\"color:#757575;\"><strong>${label}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.416687 3.36663H2.16669V9.08329H0.416687V3.36663ZM3.68335 0.916626H5.31669V9.08329H3.68335V0.916626ZM6.95002 5.58329H8.58335V9.08329H6.95002V5.58329Z\" fill=\"#4683B4\"/>\n </svg>&nbsp;\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span> \n </div>\n </div>\n `;\n\n tooltipEl.innerHTML = innerHtml;\n tooltipEl.style.left = xPosition + \"px\";\n tooltipEl.style.top = yPosition + \"px\";\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"index\" as const,\n },\n elements: {\n line: { tension: 0.5 },\n point: {\n radius: 0,\n hoverRadius: 6,\n backgroundColor: \"#17CA43\",\n borderColor: \"white\",\n borderWidth: 2,\n pointHoverBorderWidth: 3,\n pointHoverRadius: 5,\n },\n },\n }),\n []\n );\n\n const verticalHoverLine = useMemo(\n () => ({\n id: \"verticalLine\",\n afterDraw: (chart: any) => {\n const tooltip = chart.tooltip;\n if (tooltip?._active?.length) {\n const activePoint = chart.tooltip._active[0];\n const ctx = chart.ctx;\n const x = activePoint.element.x;\n const topY = chart.scales.y.top;\n const bottomY = chart.scales.y.bottom;\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(x, topY);\n ctx.lineTo(x, bottomY);\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = \"#4062E5\";\n ctx.setLineDash([5, 5]);\n ctx.stroke();\n ctx.restore();\n }\n },\n }),\n []\n );\n\n const lineData = useMemo(\n () => ({\n labels: months,\n datasets: [\n {\n label: labelPopupTitle,\n data: values,\n borderColor: lineColor,\n backgroundColor: (context: any) => {\n if (!context.chart.chartArea) return \"rgba(23, 202, 67, 0.5)\";\n const { ctx, chartArea } = context.chart;\n const gradient = ctx.createLinearGradient(\n 0,\n chartArea.bottom,\n 0,\n chartArea.top\n );\n gradient.addColorStop(0, gradientColor0);\n gradient.addColorStop(1, gradientColor1);\n return gradient;\n },\n fill: true,\n pointBackgroundColor: \"#ffffff\",\n pointBorderColor: pointLabelColor,\n },\n ],\n }),\n [months, values]\n );\n\n const dashedGridPlugin = {\n id: \"customGridAndLabels\",\n afterDraw(chart: any) {\n const ctx = chart.ctx;\n const yAxis = chart.scales.y;\n const xAxis = chart.scales.x;\n if (!yAxis || !xAxis) return;\n\n ctx.save();\n ctx.setLineDash([4, 4]);\n ctx.strokeStyle = \"rgba(0, 0, 0, 0.1)\";\n ctx.lineWidth = 1;\n\n const ticks = yAxis.ticks || yAxis.getTicks?.() || [];\n ticks.forEach((tick: any, index: number) => {\n if (index === 0) return;\n const yValue = tick.value ?? tick;\n const yPosition = yAxis.getPixelForValue(yValue);\n ctx.beginPath();\n ctx.moveTo(xAxis.left, yPosition);\n ctx.lineTo(xAxis.right, yPosition);\n ctx.stroke();\n });\n ctx.restore();\n },\n };\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\nexport default SingleLineGraph;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface CommonInputProps\n extends React.HTMLAttributes<HTMLInputElement | HTMLTextAreaElement> {\n label?: string;\n hasDollar?: boolean;\n value: string;\n onChange: (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n placeholder?: string;\n type?: string;\n height?: string;\n isTextarea?: boolean;\n className?: string;\n maxLength?: number;\n hasIcon?: boolean;\n icon?: React.ReactNode;\n labelColor?: string;\n borderWeight?: string;\n error?: string;\n dollarClass?: string;\n}\n\nconst CommonInput: React.FC<CommonInputProps> = ({\n label,\n hasDollar = false,\n dollarClass = \"\",\n value,\n onChange,\n placeholder = \"\",\n type = \"text\",\n height = \"h-[48px]\",\n isTextarea = false,\n className = \"\",\n maxLength,\n hasIcon = false,\n icon,\n labelColor = \"text-[#131414]\",\n borderWeight = \"border-[2px]\",\n error,\n ...rest\n}) => {\n const inputClasses = twMerge(\n height,\n \"px-3 py-2\",\n borderWeight,\n \"rounded-[8px] text-[14px] text-[#131414] placeholder-[#757575] font-hairline w-full focus:border-[#3C6E97] focus:outline-none resize-none\",\n error ? \"border-red-500 bg-red-100\" : \"border-[#E2E2E2]\",\n hasDollar && !isTextarea && \"pl-7\",\n isTextarea && \"pt-3 align-top\",\n className\n );\n\n return (\n <div className=\"w-full\">\n {/* Label */}\n {label && (\n <p className={twMerge(labelColor, \"text-[14px] font-semibold mb-1\")}>\n {label}\n </p>\n )}\n\n <div className=\"relative\">\n {/* Dollar sign */}\n {hasDollar && !isTextarea && (\n <span\n className={twMerge(\n \"absolute top-1/2 left-3 -translate-y-1/2 text-[#131414] text-[14px] font-medium\",\n dollarClass\n )}\n >\n $\n </span>\n )}\n {hasIcon && icon}\n {/* Input / Textarea */}\n {isTextarea ? (\n <textarea\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n className={inputClasses}\n rows={4}\n maxLength={maxLength}\n {...rest}\n />\n ) : (\n <input\n type={type}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n className={inputClasses}\n maxLength={maxLength}\n {...rest}\n />\n )}\n </div>\n\n {/* Error */}\n {error && <span className=\"text-[12px] text-red-500\">{error}</span>}\n </div>\n );\n};\n\nexport default CommonInput;\n","// ? DATE UTILS\ninterface DateValidationOptions {\n enableYearRange?: boolean;\n yearsBack?: number;\n allowFutureDates?: boolean; // New option to control future date validation\n}\n\nexport const validateAndFormatInput = (\n rawInput: string,\n options: DateValidationOptions = {}\n) => {\n const {\n enableYearRange = true,\n yearsBack = 1,\n allowFutureDates = false,\n } = options;\n\n let digits = rawInput.replace(/\\D/g, \"\");\n\n // Validate month\n if (digits.length >= 2) {\n const month = parseInt(digits.slice(0, 2));\n if (month < 1 || month > 12) {\n digits = digits.slice(0, 1);\n }\n }\n\n // Validate day\n if (digits.length >= 4) {\n const month = parseInt(digits.slice(0, 2));\n const day = parseInt(digits.slice(2, 4));\n\n const daysInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n const maxDays = daysInMonth[month - 1] || 31;\n\n if (day < 1 || day > maxDays) {\n digits = digits.slice(0, 3);\n }\n }\n\n // Validate year range\n if (enableYearRange && digits.length >= 8) {\n const currentYear = new Date().getFullYear();\n const minYear = currentYear - yearsBack;\n const inputYear = parseInt(digits.slice(4, 8));\n\n if (inputYear < minYear || inputYear > currentYear) {\n digits = digits.slice(0, 4);\n }\n }\n\n // Validate complete date against future dates (if we have a complete date)\n if (!allowFutureDates && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2));\n const day = parseInt(digits.slice(2, 4));\n const year = parseInt(digits.slice(4, 8));\n\n const inputDate = new Date(year, month - 1, day);\n const today = new Date();\n today.setHours(23, 59, 59, 999); // Set to end of today\n\n // If the complete date is in the future, truncate to just month/day\n if (inputDate > today) {\n digits = digits.slice(0, 4);\n }\n }\n\n digits = digits.slice(0, 8);\n\n let formatted = \"\";\n if (digits.length > 0) formatted += digits.slice(0, 2);\n if (digits.length >= 3) formatted += `/${digits.slice(2, 4)}`;\n if (digits.length >= 5) formatted += `/${digits.slice(4, 8)}`;\n\n return formatted;\n};\nexport const validateDate = (dateString: string, allowFutureDates = false) => {\n const formatRegex = /^(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])\\/\\d{4}$/;\n if (!formatRegex.test(dateString)) {\n return false;\n }\n\n const [month, day, year] = dateString\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n // Check if the date is valid (handles leap years, etc.)\n if (\n inputDate.getMonth() !== month - 1 ||\n inputDate.getDate() !== day ||\n inputDate.getFullYear() !== year\n ) {\n return false;\n }\n\n if (!allowFutureDates) {\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (inputDate > today) {\n return false;\n }\n }\n\n return true;\n};\nexport const validateDateRange = (\n dateString: string,\n options: {\n allowFutureDates?: boolean;\n minDate?: Date;\n maxDate?: Date;\n yearsBack?: number;\n } = {}\n): boolean => {\n const { allowFutureDates = false, minDate, maxDate, yearsBack } = options;\n\n if (!validateDate(dateString, allowFutureDates)) {\n return false;\n }\n\n const [month, day, year] = dateString\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n if (minDate && inputDate < minDate) {\n return false;\n }\n\n if (maxDate && inputDate > maxDate) {\n return false;\n }\n\n if (yearsBack) {\n const currentYear = new Date().getFullYear();\n const minYear = currentYear - yearsBack;\n if (year < minYear) {\n return false;\n }\n }\n\n return true;\n};\n\nexport function toEndOfDay(date: Date): Date {\n const clean = new Date(date);\n clean.setHours(23, 59, 59, 999);\n return clean;\n}\n\nexport function toMidnight(date: Date): Date {\n const clean = new Date(date); // clone so we don't mutate the original\n clean.setHours(0, 0, 0, 0);\n return clean;\n}\n\nexport function isSameDateMDY(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n","import { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport {\n isSameDateMDY,\n validateAndFormatInput,\n validateDate,\n} from \"../../utility/daterange\";\n\ninterface PresetRange {\n label: string;\n getValue: () => { start: Date; end: Date };\n}\n\ninterface DateRangePickerProps {\n bgColor?: string;\n dateFunc: (startDate: string, endDate: string) => void;\n start_date?: string;\n end_date?: string;\n yearsBack?: number;\n title?: string;\n titleClass?: string;\n autoOpen?: boolean;\n isDateRangeOnly?: boolean;\n dateRangeClass?: string;\n setIsShowDateRange?: () => void;\n datePopupOnly?: boolean;\n handleExport?: (start_date: string, end_date: string) => Promise<void>;\n setIsExporting?: (value: boolean) => void;\n isExporting?: boolean;\n className?: string;\n}\n\ntype CalendarView = \"day\" | \"month\" | \"year\";\n\nconst DateRangePicker: React.FC<DateRangePickerProps> = ({\n bgColor = \"bg-[#F8F8F8]\",\n dateFunc,\n start_date = \"\",\n end_date = \"\",\n yearsBack = 1,\n title = \"\",\n titleClass = \"\",\n autoOpen = false,\n isDateRangeOnly = false,\n dateRangeClass = \"\",\n setIsShowDateRange,\n datePopupOnly = false,\n handleExport,\n setIsExporting,\n isExporting = false,\n className = \"\",\n}) => {\n const [isOpen, setIsOpen] = useState<boolean>(autoOpen);\n const [isApply, setIsApply] = useState<boolean>(false);\n const originalStartDateRef = useRef<Date | null>(null);\n const originalEndDateRef = useRef<Date | null>(null);\n\n // New state for calendar views\n const [leftCalendarView, setLeftCalendarView] = useState<CalendarView>(\"day\");\n const [rightCalendarView, setRightCalendarView] =\n useState<CalendarView>(\"day\");\n\n const getInitialStartDate = () => {\n if (start_date) {\n const [month, day, year] = start_date\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n return new Date(year, month - 1, day);\n }\n return null;\n };\n\n const getInitialEndDate = () => {\n if (end_date) {\n const [month, day, year] = end_date\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n return new Date(year, month - 1, day);\n }\n return null;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(\n getInitialStartDate()\n );\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [leftMonth, setLeftMonth] = useState<Date>(new Date());\n const [rightMonth, setRightMonth] = useState<Date>(new Date());\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [selectingStart, setSelectingStart] = useState<boolean>(true);\n const [label, setLabel] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const [isCustomEditing, setIsCustomEditing] = useState(false);\n const previousLabelRef = useRef(\"\");\n const isCustomEditingRef = useRef(false);\n const rightMonthRef = useRef<Date>(new Date());\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n\n const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n\n const presetRanges: PresetRange[] = [\n {\n label: \"Today\",\n getValue: () => ({ start: new Date(), end: new Date() }),\n },\n {\n label: \"Last Week\",\n getValue: () => {\n const end = new Date();\n const start = new Date(end.getTime() - 7 * 24 * 60 * 60 * 1000);\n return { start, end };\n },\n },\n {\n label: \"This Month\",\n getValue: () => {\n const now = new Date();\n const start = new Date(now.getFullYear(), now.getMonth(), 1);\n const end = new Date();\n return { start, end };\n },\n },\n {\n label: \"Last Month\",\n getValue: () => {\n const now = new Date();\n const start = new Date(now.getFullYear(), now.getMonth() - 1, 1);\n const end = new Date(now.getFullYear(), now.getMonth(), 0);\n return { start, end };\n },\n },\n {\n label: \"Last 3 Months\",\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear(),\n end.getMonth() - 3,\n end.getDate()\n );\n return { start, end };\n },\n },\n {\n label: \"Last 6 Months\",\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear(),\n end.getMonth() - 6,\n end.getDate()\n );\n return { start, end };\n },\n },\n {\n label: `Last 1 Year`,\n getValue: () => {\n const end = new Date();\n const start = new Date(\n end.getFullYear() - 1,\n end.getMonth(),\n end.getDate()\n );\n return { start, end };\n },\n },\n ];\n\n useEffect(() => {\n if (\n previousLabelRef.current === \"\" &&\n end_date !== \"\" &&\n start_date !== \"\"\n ) {\n setLeftMonth(new Date(start_date));\n setRightMonth(new Date(end_date));\n setStartDate(new Date(start_date));\n setEndDate(new Date(end_date));\n if (new Date(end_date) < new Date() && previousLabelRef.current !== \"\") {\n setLabel(\"Custom Range\");\n }\n }\n }, [end_date, start_date]);\n\n useEffect(() => {\n if (autoOpen || datePopupOnly) {\n setIsOpen(true);\n }\n }, [autoOpen, datePopupOnly]);\n\n useEffect(() => {\n if (autoOpen || datePopupOnly) {\n setIsOpen(true);\n }\n }, [autoOpen, datePopupOnly]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n const isEditing = isCustomEditing;\n const isValid =\n validateCustomInput(startInput, true) &&\n validateCustomInput(endInput, false);\n\n if (isEditing && !isValid) {\n handleCancel();\n return;\n }\n if (!isApply && start_date === \"\" && end_date === \"\") {\n handleCancel();\n return;\n }\n\n if (isApply) {\n setRightMonth(rightMonthRef.current);\n setLeftMonth(new Date(start_date));\n setEndDate(new Date(end_date));\n setStartDate(new Date(start_date));\n setLabel(previousLabelRef.current);\n if (isCustomEditingRef.current)\n setIsCustomEditing(isCustomEditingRef.current);\n return;\n }\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [end_date, isApply, isCustomEditing, start_date]);\n\n const formatDate = (date: Date): string => {\n return `${(date.getMonth() + 1).toString().padStart(2, \"0\")}/${date\n .getDate()\n .toString()\n .padStart(2, \"0\")}/${date.getFullYear()}`;\n };\n\n const isSameDay = (date1: Date, date2: Date): boolean => {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n };\n\n const isSameMonth = (date1: Date, date2: Date): boolean => {\n return (\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n };\n\n const isInRange = (date: Date, start: Date, end: Date): boolean => {\n return date >= start && date <= end;\n };\n\n const isInHoverRange = (date: Date): boolean => {\n if (!hoveredDate || !startDate) return false;\n const start = startDate;\n const end = hoveredDate;\n return (\n date >= new Date(Math.min(start.getTime(), end.getTime())) &&\n date <= new Date(Math.max(start.getTime(), end.getTime()))\n );\n };\n\n const isDisabledDate = (date: Date): boolean => {\n if (new Date() < date) return true;\n\n if ((label === \"Custom Range\" || endDate === null) && startDate !== null) {\n const baseDate = new Date(startDate);\n\n baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n const earliestDate = new Date(startDate);\n\n earliestDate.setFullYear(earliestDate.getFullYear() + yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date > earliestDate) return true;\n return false;\n }\n\n if (startDate === null) return false;\n\n if (startDate !== null) {\n const baseDate = new Date(startDate);\n baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n const earliestDate = new Date(startDate);\n\n earliestDate.setFullYear(earliestDate.getFullYear() + yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date > earliestDate) return true;\n\n return false;\n }\n\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (date > today) return true;\n\n const earliestDate = new Date();\n earliestDate.setFullYear(earliestDate.getFullYear() - yearsBack);\n earliestDate.setHours(0, 0, 0, 0);\n\n if (date < earliestDate) return true;\n\n return false;\n };\n\n const isDisabledMonth = (year: number, month: number): boolean => {\n const today = new Date();\n const currentYear = today.getFullYear();\n const currentMonth = today.getMonth();\n\n // Disable future months\n if (year > currentYear || (year === currentYear && month > currentMonth)) {\n return true;\n }\n\n // Disable months that are too far back\n const earliestDate = new Date();\n earliestDate.setFullYear(earliestDate.getFullYear() - 50);\n const earliestYear = earliestDate.getFullYear();\n const earliestMonth = earliestDate.getMonth();\n\n if (\n year < earliestYear ||\n (year === earliestYear && month < earliestMonth)\n ) {\n return true;\n }\n\n return false;\n };\n\n const isDisabledYear = (year: number): boolean => {\n const today = new Date();\n const currentYear = today.getFullYear();\n\n // Disable future years\n if (year > currentYear) {\n return true;\n }\n\n // Disable years that are too far back\n const earliestYear = currentYear - 50;\n if (year < earliestYear) {\n return true;\n }\n\n return false;\n };\n\n const navigateMonth = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + direction, 1)\n );\n } else {\n setRightMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + direction, 1)\n );\n }\n };\n\n const navigateYear = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear() + direction, prev.getMonth(), 1)\n );\n } else {\n setRightMonth(\n (prev) => new Date(prev.getFullYear() + direction, prev.getMonth(), 1)\n );\n }\n };\n\n const navigateDecade = (direction: number, isLeft: boolean): void => {\n if (isLeft) {\n setLeftMonth(\n (prev) =>\n new Date(prev.getFullYear() + direction * 10, prev.getMonth(), 1)\n );\n } else {\n setRightMonth(\n (prev) =>\n new Date(prev.getFullYear() + direction * 10, prev.getMonth(), 1)\n );\n }\n };\n\n const handleDateClick = (date: Date, isLeftCalendar: boolean): void => {\n if (\n (startDate !== null && endDate === null && isLeftCalendar) ||\n (startDate !== null &&\n endDate !== null &&\n startDate?.getTime() === endDate?.getTime() &&\n isLeftCalendar)\n ) {\n setStartDate(null);\n setEndDate(null);\n return;\n }\n\n if (!isLeftCalendar && startDate !== null && startDate <= date) {\n setEndDate(date);\n return;\n }\n\n if (date > new Date()) return;\n\n if (isDisabledDate(date)) return;\n\n const isSameMonthView = isSameMonth(leftMonth, rightMonth);\n\n if (!isSameMonthView) {\n // Different months: left calendar sets start date, right calendar sets end date\n if (isLeftCalendar) {\n setStartDate(date);\n if (endDate && date > endDate) {\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setSelectingStart(false);\n }\n } else {\n if (startDate && date < startDate) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setEndDate(date);\n setSelectingStart(true);\n }\n }\n } else {\n // Same month: retain original behavior\n if (selectingStart || !startDate || (startDate && endDate)) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n if (date < startDate!) {\n setEndDate(startDate);\n setStartDate(date);\n setSelectingStart(true);\n } else if (endDate && date > endDate) {\n setStartDate(date);\n setEndDate(null);\n setSelectingStart(false);\n } else {\n setEndDate(date);\n setSelectingStart(true);\n }\n }\n }\n };\n\n const handleMonthClick = (monthIndex: number, isLeft: boolean): void => {\n const year = isLeft ? leftMonth.getFullYear() : rightMonth.getFullYear();\n\n // Don't allow clicking disabled months\n if (isDisabledMonth(year, monthIndex)) return;\n\n if (isLeft) {\n setLeftMonth(new Date(leftMonth.getFullYear(), monthIndex, 1));\n setLeftCalendarView(\"day\");\n } else {\n setRightMonth(new Date(rightMonth.getFullYear(), monthIndex, 1));\n setRightCalendarView(\"day\");\n }\n };\n\n const handleYearClick = (year: number, isLeft: boolean): void => {\n // Don't allow clicking disabled years\n if (isDisabledYear(year)) return;\n if (isLeft) {\n setLeftMonth(new Date(year, leftMonth.getMonth(), 1));\n setLeftCalendarView(\"month\");\n } else {\n setRightMonth(new Date(year, rightMonth.getMonth(), 1));\n setRightCalendarView(\"month\");\n }\n };\n\n const handleHeaderClick = (isLeft: boolean): void => {\n if (isLeft) {\n if (leftCalendarView === \"day\") {\n setLeftCalendarView(\"month\");\n } else if (leftCalendarView === \"month\") {\n setLeftCalendarView(\"year\");\n }\n } else {\n if (rightCalendarView === \"day\") {\n setRightCalendarView(\"month\");\n } else if (rightCalendarView === \"month\") {\n setRightCalendarView(\"year\");\n }\n }\n };\n\n const circleContainer = () => {\n if (\n startDate !== null &&\n endDate !== null &&\n startDate?.getTime() === endDate?.getTime()\n ) {\n return \"rounded-full\";\n }\n return \"\";\n };\n\n const handlePresetClick = (preset: PresetRange): void => {\n const { start, end } = preset.getValue();\n setStartDate(start);\n setEndDate(end);\n setLabel(preset.label);\n setSelectingStart(true);\n\n // Reset calendar views to day view\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n\n const monthDiff =\n end.getMonth() -\n start.getMonth() +\n 12 * (end.getFullYear() - start.getFullYear());\n\n if (monthDiff >= 1) {\n setLeftMonth(new Date(start.getFullYear(), start.getMonth(), 1));\n setRightMonth(new Date(end.getFullYear(), end.getMonth(), 1));\n } else {\n const left = new Date(start.getFullYear(), start.getMonth(), 1);\n const right = new Date(start.getFullYear(), start.getMonth());\n setLeftMonth(left);\n setRightMonth(right);\n }\n };\n\n const [startInput, setStartInput] = useState(\n startDate ? formatDate(startDate) : \"\"\n );\n const [endInput, setEndInput] = useState(endDate ? formatDate(endDate) : \"\");\n\n useEffect(() => {\n if (startDate) {\n setStartInput(formatDate(startDate));\n } else {\n setStartInput(\"\");\n }\n }, [startDate]);\n\n useEffect(() => {\n if (endDate) {\n setEndInput(formatDate(endDate));\n } else {\n setEndInput(\"\");\n }\n }, [endDate]);\n\n const renderMonthView = (\n monthDate: Date,\n isLeft: boolean,\n className = \"\"\n ) => {\n const year = monthDate.getFullYear();\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateYear(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <button\n onClick={() => handleHeaderClick(isLeft)}\n className=\"font-medium text-center flex-1 hover:bg-gray-100 rounded px-2 py-1\"\n >\n {year}\n </button>\n\n <button\n onClick={() => navigateYear(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-3 gap-2\">\n {monthsShort.map((month, index) => {\n const isDisabled = isDisabledMonth(year, index);\n return (\n <button\n key={month}\n onClick={() => handleMonthClick(index, isLeft)}\n disabled={isDisabled}\n className={`p-2 text-sm rounded ${\n isDisabled\n ? \"cursor-not-allowed text-gray-300 bg-gray-100\"\n : \"hover:bg-blue-100\"\n } ${\n monthDate.getMonth() === index && !isDisabled\n ? \"bg-[#4683B4] text-white\"\n : \"\"\n }`}\n >\n {month}\n </button>\n );\n })}\n </div>\n </div>\n );\n };\n\n const renderYearView = (monthDate: Date, isLeft: boolean, className = \"\") => {\n const currentYear = monthDate.getFullYear();\n const startDecade = Math.floor(currentYear / 10) * 10;\n const years = [];\n\n for (let i = startDecade; i < startDecade + 10; i++) {\n years.push(i);\n }\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateDecade(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <h3 className=\"font-medium text-center flex-1\">\n {startDecade} - {startDecade + 9}\n </h3>\n\n <button\n onClick={() => navigateDecade(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n {years.map((year) => {\n const isDisabled = isDisabledYear(year);\n return (\n <button\n key={year}\n onClick={() => handleYearClick(year, isLeft)}\n disabled={isDisabled}\n className={`p-2 text-sm rounded ${\n isDisabled\n ? \"cursor-not-allowed text-gray-300 bg-gray-100\"\n : \"hover:bg-blue-100\"\n } ${\n currentYear === year && !isDisabled\n ? \"bg-[#4683B4] text-white\"\n : \"\"\n }`}\n >\n {year}\n </button>\n );\n })}\n </div>\n </div>\n );\n };\n\n const renderCalendar = (monthDate: Date, isLeft: boolean, className = \"\") => {\n const view = isLeft ? leftCalendarView : rightCalendarView;\n\n if (view === \"month\") {\n return renderMonthView(monthDate, isLeft, className);\n }\n\n if (view === \"year\") {\n return renderYearView(monthDate, isLeft, className);\n }\n\n // Default day view\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const daysInMonth = lastDay.getDate();\n const startingDayOfWeek = firstDay.getDay();\n const days: JSX.Element[] = [];\n\n for (let i = 0; i < startingDayOfWeek; i++) {\n const prevDate = new Date(year, month, -startingDayOfWeek + i + 1);\n days.push(\n <div\n key={`prev-${i}`}\n className=\"w-8 h-8 flex items-center justify-center text-gray-300 text-sm\"\n >\n {prevDate.getDate()}\n </div>\n );\n }\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n const isInCurrentRange =\n startDate && endDate && isInRange(date, startDate, endDate);\n const isInHover = !endDate && isInHoverRange(date);\n const isDisabled = isDisabledDate(date);\n\n days.push(\n <div\n key={day}\n className={`relative w-8 h-8 flex items-center justify-center text-sm ${\n isDisabled ? \"cursor-not-allowed text-gray-300\" : \"cursor-pointer\"\n } group`}\n onClick={() => handleDateClick(date, isLeft)}\n onMouseEnter={() => !isDisabled && setHoveredDate(date)}\n onMouseLeave={() => setHoveredDate(null)}\n >\n {isStart ? (\n <>\n <div\n className={`absolute inset-0 bg-[#D9ECFF] rounded-l-full ${circleContainer()}`}\n />\n <div\n className={`w-6 h-6 bg-[#213D69] text-white rounded-full z-10 flex items-center justify-center text-xs font-bold`}\n >\n {day}\n </div>\n </>\n ) : isEnd ? (\n <>\n <div\n className={`absolute inset-0 bg-[#D9ECFF] rounded-r-full ${circleContainer()}`}\n />\n <div className=\"w-6 h-6 bg-[#213D69] text-white rounded-full z-10 flex items-center justify-center text-xs font-bold\">\n {day}\n </div>\n </>\n ) : isInCurrentRange || isInHover ? (\n <>\n <div className=\"absolute inset-0 bg-[#D9ECFF]\" />\n <div className=\"relative z-10\">{day}</div>\n </>\n ) : (\n <div\n className={`w-8 h-8 flex items-center justify-center rounded-full ${\n !isDisabled ? \"group-hover:bg-blue-100\" : \"\"\n }`}\n >\n {day}\n </div>\n )}\n </div>\n );\n }\n\n const totalCells = 42;\n const remainingCells = totalCells - days.length;\n for (let i = 1; i <= remainingCells; i++) {\n const nextDate = new Date(year, month + 1, i);\n days.push(\n <div\n key={`next-${i}`}\n className=\"w-8 h-8 flex items-center justify-center text-gray-300 text-sm\"\n >\n {nextDate.getDate()}\n </div>\n );\n }\n\n return (\n <div className={`flex-1 ${className}`}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n onClick={() => navigateMonth(-1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronLeft className=\"w-4 h-4\" />\n </button>\n\n <button\n onClick={() => handleHeaderClick(isLeft)}\n className=\"font-medium text-center flex-1 hover:bg-gray-100 rounded px-2 py-1\"\n >\n {months[month]} {year}\n </button>\n\n <button\n onClick={() => navigateMonth(1, isLeft)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronRight className=\"w-4 h-4\" />\n </button>\n </div>\n\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {[\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"].map((day) => (\n <div\n key={day}\n className=\"w-8 h-8 flex items-center justify-center text-xs font-medium text-gray-500\"\n >\n {day}\n </div>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">{days}</div>\n </div>\n );\n };\n\n const handleCancel = () => {\n const originalStart = originalStartDateRef.current;\n const originalEnd = originalEndDateRef.current;\n\n if (start_date === \"\" && end_date === \"\") {\n setStartDate(null);\n setEndDate(null);\n } else {\n setStartDate(originalStart);\n setEndDate(originalEnd);\n }\n\n setStartInput(originalStart ? formatDate(originalStart) : \"\");\n setEndInput(originalEnd ? formatDate(originalEnd) : \"\");\n\n setLabel(\"\");\n setSelectingStart(true);\n setIsCustomEditing(false);\n\n // Reset calendar views\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n\n setLeftMonth(\n originalStart\n ? new Date(originalStart.getFullYear(), originalStart.getMonth(), 1)\n : new Date()\n );\n setRightMonth(\n originalEnd\n ? new Date(originalEnd.getFullYear(), originalEnd.getMonth(), 1)\n : new Date()\n );\n\n setIsOpen(false);\n if (setIsShowDateRange !== undefined) setIsShowDateRange();\n };\n\n const validateCustomInput = (\n inputValue: string,\n isStartDate: boolean\n ): boolean => {\n if (inputValue.length !== 10) return false;\n if (!validateDate(inputValue)) return false;\n\n const [month, day, year] = inputValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const inputDate = new Date(year, month - 1, day);\n\n if (isDisabledDate(inputDate)) return false;\n\n if (isStartDate && endDate && inputDate > endDate) return false;\n if (!isStartDate && startDate && inputDate < startDate) return false;\n\n return true;\n };\n\n const isCustomInputValid = (): boolean => {\n if (\n label === \"Custom Range\" &&\n endDate !== null &&\n (!isDisabledDate(endDate) ||\n isSameDateMDY(new Date(startInput), new Date(endInput)))\n )\n return true;\n if (startDate === null || endDate === null) return false;\n\n if (!isCustomEditing) return true;\n\n const isStartValid = validateCustomInput(startInput, true);\n const isEndValid = validateCustomInput(endInput, false);\n\n return isStartValid && isEndValid;\n };\n\n return (\n <div>\n <div>\n {!datePopupOnly && !isDateRangeOnly && (\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n titleClass\n )}\n >\n {title}\n </label>\n )}\n <div className=\"relative\" ref={dropdownRef}>\n {!datePopupOnly && !isDateRangeOnly && (\n <div\n className={twMerge(\n `flex items-center w-full h-[38px] gap-2 px-3 py-2 border rounded-md cursor-pointer ${bgColor} hover:border-[#4683B4] ${\n isOpen && \"border-[#4683B4]\"\n }`,\n className\n )}\n onClick={() => {\n originalStartDateRef.current = startDate;\n originalEndDateRef.current = endDate;\n // Reset calendar views when opening\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n setIsOpen(!isOpen);\n }}\n >\n <span className=\"text-sm\">\n {startDate && endDate\n ? `${formatDate(startDate)} - ${formatDate(endDate)}`\n : startDate\n ? `${formatDate(startDate)} - Select end date`\n : \"\"}\n </span>\n <div className=\"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\">\n <svg\n width=\"18\"\n height=\"20\"\n viewBox=\"0 0 18 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 9H6V11H4V9ZM18 4V18C18 19.1 17.1 20 16 20H2C0.89 20 0 19.1 0 18L0.00999999 4C0.00999999 2.9 0.89 2 2 2H3V0H5V2H13V0H15V2H16C17.1 2 18 2.9 18 4ZM2 6H16V4H2V6ZM16 18V8H2V18H16ZM12 11H14V9H12V11ZM8 11H10V9H8V11Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n </div>\n )}\n\n {isOpen && (\n <div\n className={`absolute top-full right-0 ${\n datePopupOnly ? \"\" : \"mt-2\"\n } bg-white border rounded-lg shadow-lg z-50 ${dateRangeClass}`}\n style={{\n width: \"700px\",\n height: \"419px\",\n marginRight: datePopupOnly ? \"15px\" : undefined,\n }}\n >\n <div className=\"flex\">\n <div className=\"w-[290px] border-r\">\n <div className=\"flex flex-col justify-between h-[419px] p-4\">\n <div className=\"space-y-[3px]\">\n {presetRanges.map((preset, index) => (\n <button\n key={index}\n onClick={() => {\n handlePresetClick(preset);\n if (isCustomEditing) {\n setIsCustomEditing(false);\n }\n }}\n className={`w-full text-left px-[14px] py-[6px] text-[14px] rounded-[4px] border border-1 border-[#ECECF0] hover:bg-[#ECECF0] ${\n preset.label === label\n ? \"bg-[#ECECF0] font-semibold\"\n : \"\"\n }`}\n >\n {preset.label}\n </button>\n ))}\n <button\n className={`w-full text-left px-[14px] py-[6px] rounded-[4px] text-[13px] border border-1 border-[#ECECF0] hover:bg-[#ECECF0] ${\n isCustomEditing ? \"bg-[#ECECF0] font-semibold\" : \"\"\n }`}\n onClick={() => {\n setIsCustomEditing(true);\n setLabel(\"Custom Range\");\n previousLabelRef.current = \"Custom Range\";\n setStartInput(\"\");\n setEndInput(\"\");\n setStartDate(null);\n setEndDate(null);\n setRightMonth(new Date());\n setLeftMonth(new Date());\n // Reset calendar views\n setLeftCalendarView(\"day\");\n setRightCalendarView(\"day\");\n }}\n >\n Custom Range (max 1 year)\n </button>\n <div className=\"flex gap-[8px]\">\n <input\n type=\"text\"\n placeholder=\"MM/DD/YYYY\"\n value={startInput}\n onChange={(e) => {\n if (!isCustomEditing) return;\n\n const rawValue = e.target.value;\n const formattedValue = validateAndFormatInput(\n rawValue,\n {\n enableYearRange: false,\n yearsBack: yearsBack,\n }\n );\n\n setStartInput(formattedValue);\n\n if (formattedValue.length === 10) {\n const [month, day, year] = formattedValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const parsedDate = new Date(\n year,\n month - 1,\n day,\n 0,\n 0,\n 0,\n 0\n );\n setStartDate(parsedDate);\n setLeftMonth(\n new Date(\n parsedDate.getFullYear(),\n parsedDate.getMonth(),\n 1\n )\n );\n }\n }}\n onBlur={() => {\n if (!isCustomEditing) return;\n const endDateInput = new Date(endInput);\n\n if (\n isDisabledDate(endDateInput) &&\n startDate !== null &&\n !isSameDateMDY(startDate, endDateInput)\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n disabled={!isCustomEditing}\n className={`w-full h-[33.5px] text-[12px] px-[13px] rounded-[4px] border border-1 border-[#ECECF0] ${\n !isCustomEditing\n ? \"bg-gray-100 cursor-not-allowed\"\n : \"\"\n }`}\n />\n\n <input\n type=\"text\"\n placeholder=\"MM/DD/YYYY\"\n value={endInput}\n onChange={(e) => {\n if (!isCustomEditing) return;\n\n const rawValue = e.target.value;\n const formattedValue = validateAndFormatInput(\n rawValue,\n {\n enableYearRange: false,\n yearsBack: yearsBack,\n }\n );\n\n setEndInput(formattedValue);\n\n if (formattedValue.length === 10) {\n const [month, day, year] = formattedValue\n .split(\"/\")\n .map((num) => parseInt(num, 10));\n const parsedDate = new Date(\n year,\n month - 1,\n day,\n 0,\n 0,\n 0,\n 0\n );\n setEndDate(parsedDate);\n setRightMonth(\n new Date(\n parsedDate.getFullYear(),\n parsedDate.getMonth(),\n 1\n )\n );\n }\n if (\n formattedValue.length === 10 &&\n isDisabledDate(new Date(formattedValue)) &&\n startDate !== null &&\n !isSameDateMDY(\n startDate,\n new Date(formattedValue)\n )\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n onBlur={() => {\n if (!isCustomEditing) return;\n const endDateInput = new Date(endInput);\n if (\n isDisabledDate(endDateInput) &&\n startInput !== \"\" &&\n startDate !== null &&\n !isSameDateMDY(startDate, new Date(endDateInput))\n ) {\n setEndDate(null);\n setEndInput(\"\");\n }\n }}\n disabled={!isCustomEditing || startInput === \"\"}\n className={`w-full h-[33.5px] text-[12px] px-[13px] rounded-[4px] border border-1 border-[#ECECF0] ${\n !isCustomEditing\n ? \"bg-gray-100 cursor-not-allowed\"\n : \"\"\n }`}\n />\n </div>\n </div>\n\n <div className=\"flex gap-2\">\n <button\n onClick={() => handleCancel()}\n className=\"w-full px-[14px] py-[6px] text-[16px] font-semibold border rounded-[4px] border-1 border-[#E0E1E6]\"\n >\n Cancel\n </button>\n <button\n onClick={async () => {\n if (!isCustomInputValid()) return;\n setIsApply(true);\n\n if (label === \"Custom Range\")\n isCustomEditingRef.current = true;\n if (label !== \"Custom Range\")\n isCustomEditingRef.current = false;\n rightMonthRef.current = rightMonth;\n previousLabelRef.current = label;\n originalStartDateRef.current = startDate;\n originalEndDateRef.current = endDate;\n\n if (datePopupOnly) {\n dateFunc(\n startDate ? formatDate(startDate) : \"\",\n endDate ? formatDate(endDate) : \"\"\n );\n setIsExporting?.(true);\n try {\n if (startDate !== null && endDate !== null)\n await handleExport?.(\n formatDate(startDate),\n formatDate(endDate)\n );\n } finally {\n setIsExporting?.(false);\n }\n } else {\n dateFunc(\n startDate ? formatDate(startDate) : \"\",\n endDate ? formatDate(endDate) : \"\"\n );\n }\n if (isDateRangeOnly) {\n setEndInput(\"\");\n setStartInput(\"\");\n setEndInput(\"\");\n setStartDate(null);\n setEndDate(null);\n setRightMonth(new Date());\n setIsApply(false);\n originalStartDateRef.current = null;\n originalEndDateRef.current = null;\n }\n if (setIsShowDateRange !== undefined)\n setIsShowDateRange();\n\n setIsOpen(false);\n }}\n className={`w-full px-[14px] py-[6px] text-[16px] text-[#FFFFFF] font-semibold border rounded-[4px] bg-[#4683B4] ${\n !isCustomInputValid() && \"opacity-50\"\n } flex justify-center items-center gap-2`}\n >\n {datePopupOnly ? (\n isExporting ? (\n <svg\n className=\"animate-spin h-5 w-5 text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v8H4z\"\n ></path>\n </svg>\n ) : (\n \"Download\"\n )\n ) : (\n \"Apply\"\n )}\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"flex\">\n {renderCalendar(\n leftMonth,\n true,\n \"pr-4 pt-4 pl-2 w-[227.59px]\"\n )}\n {renderCalendar(\n rightMonth,\n false,\n \"pr-4 pt-4 pl-2 w-[227.59px]\"\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default DateRangePicker;\n","import React, {\n ChangeEvent,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\"; // Import createPortal\nimport { twMerge } from \"tailwind-merge\";\n\n// ... (Your interface definition remains the same)\nexport interface MultipleAutoSuggestionInputProps {\n label?: string;\n options: { key: string; name: string }[];\n selectedItems: string[] | string;\n isMulti?: boolean;\n enableTypingSingle?: boolean;\n onSelect: (key: string) => void;\n onRemove?: (key: string) => void;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n inputValue: string;\n setInputValue: (value: string) => void;\n isDropdownAutoOpen?: boolean;\n labelClass?: string;\n buttonClass?: string;\n dropdownOpenClass?: string;\n selectedItemsClass?: string;\n removeIconClass?: string;\n}\n\nconst MultipleAutoSuggestionInput: React.FC<\n MultipleAutoSuggestionInputProps\n> = ({\n label = \"\",\n options,\n selectedItems,\n isMulti = true,\n enableTypingSingle = true,\n onSelect,\n onRemove,\n keyDown,\n onChange,\n inputValue,\n setInputValue,\n isDropdownAutoOpen = false,\n labelClass = \"\",\n buttonClass = \"\",\n dropdownOpenClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n}) => {\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n // 1. Add state to store the dropdown's position\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null); // Changed dropdownRef to containerRef for clarity\n\n const selectedList = isMulti\n ? (selectedItems as string[])\n : selectedItems\n ? [selectedItems as string]\n : [];\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n // Delay dropdown closing so onClick in dropdown can run\n setTimeout(() => setIsDropdownOpen(false), 150);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (!isMulti && !enableTypingSingle) {\n setFilteredOptions(\n options.filter((opt) => !selectedList.includes(opt.key))\n );\n return;\n }\n\n const filtered = options\n .filter((option) =>\n option.name.toLowerCase().includes(inputValue.toLowerCase())\n )\n .filter((option) => !selectedList.includes(option.key));\n\n setFilteredOptions(filtered);\n\n if (inputValue) {\n setIsDropdownOpen(true);\n } else if (!isDropdownAutoOpen) {\n // Close if input is cleared and it's not set to always be open\n setIsDropdownOpen(false);\n }\n }, [inputValue, options, selectedItems]);\n\n // 2. Calculate the position when the dropdown opens\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n setDropdownPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isDropdownOpen]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n onChange(e);\n };\n\n const handleOptionSelect = (key: string) => {\n onSelect(key);\n setInputValue(\"\");\n setIsDropdownOpen(false);\n };\n\n // 3. Define the Dropdown JSX to be used in the portal\n const DropdownMenu = (\n <div\n style={{\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`, // position based on state\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }}\n className={twMerge(\n \"w-full rounded-lg bg-white shadow-lg z-50 max-h-60 overflow-auto border border-[#E2E2E2]\", // Increased z-index\n dropdownOpenClass\n )}\n >\n <div className=\"py-1 rounded-lg border-[#E2E2E2]\">\n {filteredOptions.map((option) => (\n <div\n key={option.key}\n className=\"px-4 py-2 text-sm cursor-pointer custom-listing-hover\"\n onClick={() => handleOptionSelect(option.key)}\n >\n {option.name}\n </div>\n ))}\n </div>\n </div>\n );\n\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-custom-gray mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n <div\n ref={containerRef} // Use containerRef here\n className=\"relative\"\n onClick={() => {\n inputRef.current?.focus?.();\n if (!isDropdownOpen || isDropdownAutoOpen) {\n setIsDropdownOpen(true);\n }\n }}\n >\n <div\n className={twMerge(\n \"border border-[#E2E2E2] focus-within:border-[#4683B4] rounded-lg p-1.5 bg-[#F8F8F8] cursor-pointer flex flex-wrap items-center gap-2 min-h-[2.5rem]\",\n buttonClass\n )}\n >\n {/* ... (Your input and selected items display logic remains exactly the same) ... */}\n {isMulti && Array.isArray(selectedList)\n ? selectedList.map((itemKey) => {\n const option = options.find((opt) => opt.key === itemKey);\n return (\n <div\n key={itemKey}\n className={twMerge(\n \"flex flex border-[#E2E2E2] border items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n selectedItemsClass\n )}\n >\n {option ? option.name : itemKey}\n {onRemove && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove(itemKey);\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700 bg-white\",\n removeIconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n )}\n </div>\n );\n })\n : selectedList.length > 0 && (\n <div\n className={twMerge(\n \"flex border-[#E2E2E2] border items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n selectedItemsClass\n )}\n >\n <span className=\"text-xs font-medium text-gray-800\">\n {options.find((opt) => opt.key === selectedList[0])?.name ||\n selectedList[0]}\n </span>\n {onRemove && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove(\n options.find((opt) => opt.key === selectedList[0])\n ?.name || selectedList[0]\n );\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700\",\n removeIconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n {(!isMulti || enableTypingSingle) && (\n <input\n type=\"text\"\n ref={inputRef}\n value={inputValue}\n onKeyDown={keyDown}\n onChange={handleInputChange}\n className=\"w-full flex-1 px-0 py-1 bg-[#F8F8F8] text-xs border-none outline-none focus:ring-0\"\n onFocus={() => {\n if (!isDropdownOpen && (!isMulti || inputValue)) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={selectedList.length === 0 ? \"Type or select...\" : \"\"}\n />\n )}\n </div>\n </div>\n\n {/* 4. Render the dropdown menu inside the portal */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n createPortal(DropdownMenu, document.body)}\n </div>\n );\n};\n\nexport default MultipleAutoSuggestionInput;\n","import React, { ChangeEvent } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface SingleListInputProps {\n formValues: string[];\n handleRemove: (value: string) => void;\n inputValue: string;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n label?: string;\n buttonClass?: string;\n labelClass?: string;\n inputClass?: string;\n}\n\nconst SingleListInput: React.FC<SingleListInputProps> = ({\n formValues,\n handleRemove,\n inputValue,\n onChange,\n keyDown,\n label,\n buttonClass = \"\",\n labelClass = \"\",\n inputClass = \"\",\n}) => {\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n\n <div\n className={twMerge(\n \"border border-[#E2E2E2] rounded-lg p-1.5 bg-[#F8F8F8] cursor-pointer flex flex-wrap items-center gap-2 focus-within:border-[#4683B4]\",\n buttonClass\n )}\n >\n {formValues.map((id) => (\n <div\n key={id}\n className=\"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\"\n >\n {id}\n <button\n onClick={() => handleRemove(id)}\n aria-label={`Remove ${id}`}\n className=\"ml-1 text-gray-500 hover:text-gray-700 bg-white\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </button>\n </div>\n ))}\n\n <input\n type=\"text\"\n value={inputValue}\n onChange={onChange}\n onKeyDown={keyDown}\n className={twMerge(\n \"w-full flex-1 px-0 py-1 bg-[#F8F8F8] text-xs border-none outline-none focus:ring-0\",\n inputClass\n )}\n />\n </div>\n </div>\n );\n};\n\nexport default SingleListInput;\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Option = { id: string; name: string };\n\ntype SingleSelectDropdownProps = {\n label?: string;\n value: string | null;\n onChange: (value: string) => void;\n options: Option[];\n placeholder?: string;\n onScrollToEnd?: () => void;\n onSearch?: (searchTerm: string) => void;\n hasMore?: boolean;\n isLoading?: boolean;\n searchable?: boolean;\n searchDebounceMs?: number;\n requiresSearch?: boolean;\n minSearchLength?: number;\n emptyMessage?: string;\n loadingMessage?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n allOptions?: Option[];\n hasIcon?: boolean;\n buttonClass?: string;\n labelClass?: string;\n displayMainClass?: string;\n displayItemClass?: string;\n hasSearchIcon?: boolean;\n searchInputClass?: string;\n placeholderSearchClass?: string;\n};\n\nexport default function SingleSelectDropdown({\n label = \"\",\n value,\n onChange,\n options,\n placeholder = \"Select an option\",\n onScrollToEnd,\n onSearch,\n hasMore = false,\n isLoading = false,\n searchable = true,\n searchDebounceMs = 300,\n requiresSearch = false,\n minSearchLength = 1,\n emptyMessage = \"No options found\",\n loadingMessage = \"Searching...\",\n searchPlaceholder = \"Search...\",\n disabled = false,\n hasIcon = true,\n buttonClass = \"\",\n labelClass = \"\",\n displayItemClass = \"\",\n displayMainClass = \"\",\n hasSearchIcon = true,\n searchInputClass = \"\",\n placeholderSearchClass = \"\",\n}: SingleSelectDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const dropdownRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const portalRef = useRef<HTMLDivElement>(null); // Ref for the portal menu\n const searchTimeoutRef = useRef<number | any | undefined>();\n const [_, setHoveredId] = useState<string | null>(null);\n\n // State to store the dropdown's calculated position for the portal\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const selectedOption = options.find((opt) => opt.id === value) || null;\n\n const handleScroll = useCallback(() => {\n if (!listRef.current || isLoading || !hasMore) return;\n const { scrollTop, scrollHeight, clientHeight } = listRef.current;\n if (scrollTop + clientHeight >= scrollHeight - 10) {\n onScrollToEnd?.();\n }\n }, [isLoading, hasMore, onScrollToEnd]);\n\n const handleSearchChange = useCallback(\n (newSearchTerm: string) => {\n setSearchTerm(newSearchTerm);\n if (onSearch) {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n searchTimeoutRef.current = setTimeout(() => {\n onSearch(newSearchTerm);\n }, searchDebounceMs);\n }\n },\n [onSearch, searchDebounceMs]\n );\n\n useEffect(() => {\n return () => {\n if (searchTimeoutRef.current) {\n clearTimeout(searchTimeoutRef.current);\n }\n };\n }, []);\n\n const filteredOptions = onSearch\n ? options\n : options.filter((opt) =>\n (opt.name ?? \"\").toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const displayOptions =\n requiresSearch && onSearch && searchTerm.length < minSearchLength\n ? selectedOption\n ? [selectedOption]\n : []\n : filteredOptions;\n\n const getEmptyStateContent = () => {\n if (requiresSearch && onSearch && searchTerm.length < minSearchLength) {\n return (\n <div className=\"px-4 py-8 text-center\">\n <div className=\"text-gray-400 mb-2\">\n <svg\n className=\"mx-auto h-8 w-8 mb-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <p className=\"text-sm text-gray-500 font-medium\">\n Enter at least {minSearchLength}{\" \"}\n {minSearchLength === 1 ? \"character\" : \"characters\"} to search\n </p>\n {minSearchLength >= 3 && (\n <p className=\"text-xs text-gray-400 mt-1\">\n Search from large dataset\n </p>\n )}\n </div>\n );\n }\n return (\n <div className=\"px-2 py-2 text-sm text-gray-500\">\n {!isLoading && options.length === 0 && emptyMessage}\n </div>\n );\n };\n\n // Updated to check clicks outside both the dropdown and the portal\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n portalRef.current &&\n !portalRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (isOpen && searchTerm && onSearch) {\n setSearchTerm(\"\");\n onSearch(\"\");\n }\n }, [isOpen]);\n\n // Calculate position when the dropdown is opened\n useLayoutEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setDropdownPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const DropdownMenu = (\n <div\n ref={portalRef}\n style={{\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }}\n className=\"rounded-md bg-white shadow-lg z-50\"\n >\n <div className=\"p-2 shadow-md border rounded-md max-h-[410px] flex flex-col\">\n {searchable && (\n <div className=\"relative\">\n <input\n type=\"text\"\n autoFocus\n className={twMerge(\n \"input-placeholder-ellipsis w-full pr-[30px] h-[40px] px-2 py-1 rounded-md border border-gray-300 text-sm focus:border-1 focus:border-[#4683B4] focus:outline-none\",\n searchInputClass\n )}\n value={searchTerm}\n onChange={(e) => handleSearchChange(e.target.value)}\n />\n {!searchTerm && (\n <span\n className={twMerge(\n \"absolute left-2 top-1/2 transform -translate-y-1/2 text-[12px] text-gray-400 overflow-hidden whitespace-nowrap text-ellipsis pointer-events-none w-[90%]\",\n placeholderSearchClass\n )}\n >\n {searchPlaceholder}\n </span>\n )}\n <div\n className={twMerge(\n \"absolute right-2 top-1/2 transform -translate-y-1/2 pointer-events-none\",\n hasSearchIcon ? \"block\" : \"hidden\"\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.9167 9.66667H10.2583L10.025 9.44167C10.8417 8.49167 11.3333 7.25833 11.3333 5.91667C11.3333 2.925 8.90833 0.5 5.91667 0.5C2.925 0.5 0.5 2.925 0.5 5.91667C0.5 8.90833 2.925 11.3333 5.91667 11.3333C7.25833 11.3333 8.49167 10.8417 9.44167 10.025L9.66667 10.2583V10.9167L13.8333 15.075L15.075 13.8333L10.9167 9.66667ZM5.91667 9.66667C3.84167 9.66667 2.16667 7.99167 2.16667 5.91667C2.16667 3.84167 3.84167 2.16667 5.91667 2.16667C7.99167 2.16667 9.66667 3.84167 9.66667 5.91667C9.66667 7.99167 7.99167 9.66667 5.91667 9.66667Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n </div>\n )}\n <div\n ref={listRef}\n onScroll={handleScroll}\n onMouseEnter={() => setHoveredId(\"hovered\")}\n onMouseLeave={() => setHoveredId(null)}\n className={twMerge(\n `overflow-auto max-h-80 overscroll-contain ${\n searchable ? \"mt-2\" : \"\"\n }`,\n displayMainClass\n )}\n >\n {displayOptions.length > 0\n ? displayOptions.map((opt) => (\n <div\n key={opt.id}\n className={twMerge(\n `h-[40px] px-2 py-2 my-1 text-sm cursor-pointer select-none rounded-md hover:bg-gray-100 ${\n opt.id === value\n ? \"bg-[#ECF3F7] text-[#131414] font-semibold\"\n : \"text-[#131414]\"\n }`,\n displayItemClass\n )}\n onClick={() => {\n onChange(opt.id);\n setIsOpen(false);\n }}\n >\n {opt.name}\n </div>\n ))\n : getEmptyStateContent()}\n {isLoading && hasMore && (\n <div className=\"flex justify-center px-2 pb-4\">\n <div className=\"flex items-center text-sm text-gray-500\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-gray-400 mr-2\"></div>\n {loadingMessage}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n\n return (\n <div>\n <label\n className={twMerge(\n \"block py-1 pt-1 text-[14px] font-semibold mb-1 text-[#545454]\",\n labelClass\n )}\n style={{ letterSpacing: \"0.2px\" }}\n >\n {label}\n </label>\n <div ref={dropdownRef} className=\"relative\">\n <div\n onClick={handleToggle}\n className={twMerge(\n `border-[1.5px] rounded-md h-[40px] pl-3 pr-2 py-2 bg-[#F8F8F8] cursor-pointer flex items-center justify-between ${\n disabled\n ? \"bg-gray-100 cursor-not-allowed border-gray-200\"\n : isOpen\n ? \"border-[#4683B4]\"\n : \"border-[#E2E2E2]\"\n }`,\n buttonClass\n )}\n >\n <span\n className={`text-sm ${\n disabled\n ? \"text-gray-400\"\n : selectedOption\n ? \"text-gray-700\"\n : \"text-gray-400\"\n }`}\n >\n {selectedOption?.name || placeholder}\n </span>\n <div\n className={`transition-transform duration-200 ${\n !isOpen ? \"rotate-180\" : \"\"\n } ${disabled ? \"text-gray-400\" : \"\"} ${\n hasIcon ? \"block\" : \"hidden\"\n }`}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_10508_5931)\">\n <path\n d=\"M5.83333 11.6665L10 7.49984L14.1667 11.6665H5.83333Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10508_5931\">\n <rect\n width=\"20\"\n height=\"20\"\n fill=\"white\"\n transform=\"matrix(1 0 0 -1 0 20)\"\n />\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n {isOpen && !disabled && createPortal(DropdownMenu, document.body)}\n </div>\n </div>\n );\n}\n","import { twMerge } from \"tailwind-merge\";\ninterface SelectionButton {\n data: string[];\n className?: string;\n buttonClass?: string;\n currentValue: string;\n onClick: (value: string) => void;\n}\nconst SelectionButton = ({\n data,\n currentValue,\n className = \"\",\n buttonClass,\n onClick,\n}: SelectionButton) => {\n return (\n <div\n className={twMerge(\n \"flex bg-white w-[208px] h-[28px] border border-[#E2E2E2] rounded-[4px] overflow-hidden\",\n className\n )}\n >\n {data.map((time, index) => (\n <button\n key={time}\n onClick={() => {\n onClick(time);\n }}\n className={twMerge(\n `font-normal px-[8px] text-[14px] text-[#131414] ${\n currentValue === time\n ? \"bg-[#ECF3F7] text-[#4683B4] font-semibold \"\n : \"text-gray-600 hover:bg-gray-100\"\n } ${index > 0 ? \"border-l border-gray-300\" : \"\"}`,\n buttonClass\n )}\n >\n {time}\n </button>\n ))}\n </div>\n );\n};\n\nexport default SelectionButton;\n","import { format, isValid, parseISO } from \"date-fns\";\nimport DatePicker from \"react-datepicker\";\n// import \"react-datepicker/dist/react-datepicker.css\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface DynamicDateProps {\n label?: string;\n hasCalendarIcon?: boolean;\n value: string; // ISO string: \"YYYY-MM-DD\"\n onChange: (e: string) => void;\n placeholder?: string;\n disableFuture?: boolean;\n labelColor?: string;\n borderWeight?: string;\n bgColor?: string;\n height?: string;\n placeholderColor?: string;\n labelClass?: string;\n className?: string;\n customIcon?: string;\n iconSize?: number;\n iconClass?: string;\n}\n\nconst SingleDateInput = ({\n label,\n hasCalendarIcon = true,\n value,\n onChange,\n placeholder = \"Required\",\n disableFuture = false,\n labelColor = \"text-[#131414]\",\n borderWeight = \"border-[2px]\",\n bgColor = \"bg-[#F8F8F8]\",\n height = \"h-[48px]\",\n placeholderColor = \"text-[#757575]\",\n labelClass = \"\",\n className = \"\",\n customIcon,\n iconSize = 20,\n iconClass = \"\",\n}: DynamicDateProps) => {\n const parsedDate = isValid(parseISO(value)) ? parseISO(value) : null;\n\n const handleChange = (date: Date | null) => {\n if (date) {\n onChange(format(date, \"yyyy-MM-dd\")); // keep it in ISO format\n } else {\n onChange(\"\");\n }\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <p\n className={twMerge(\n `${labelColor} text-[14px] font-semibold mb-1`,\n labelClass\n )}\n >\n {label}\n </p>\n )}\n <div className=\"relative\">\n <DatePicker\n selected={parsedDate}\n onChange={handleChange}\n maxDate={disableFuture ? new Date() : undefined}\n placeholderText={placeholder}\n dateFormat=\"MM/dd/yyyy\"\n className={twMerge(\n `\n ${height} px-3 py-2 ${borderWeight} rounded-[8px] text-[14px] text-[#131414] w-full\n border-[#E2E2E2] focus:border-[#3C6E97] focus:outline-none ${bgColor} placeholder:${placeholderColor}\n ${value !== \"\" ? \"text-[#131414]\" : \"\"}\n ${hasCalendarIcon ? \"pr-10\" : \"\"}\n `,\n className\n )}\n />\n {customIcon && customIcon}\n {hasCalendarIcon && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\",\n iconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n >\n <path\n d=\"M4.5 9H6.5V11H4.5V9ZM18.5 4V18C18.5 19.1 17.6 20 16.5 20H2.5C1.39 20 0.5 19.1 0.5 18L0.51 4C0.51 2.9 1.39 2 2.5 2H3.5V0H5.5V2H13.5V0H15.5V2H16.5C17.6 2 18.5 2.9 18.5 4ZM2.5 6H16.5V4H2.5V6ZM16.5 18V8H2.5V18H16.5ZM12.5 11H14.5V9H12.5V11ZM8.5 11H10.5V9H8.5V11Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SingleDateInput;\n","import { isToday, startOfDay } from \"date-fns\";\nimport React from \"react\";\nimport DatePicker from \"react-datepicker\";\n// import \"react-datepicker/dist/react-datepicker.css\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface TimeInputProps {\n label?: string;\n hasTimeIcon?: boolean;\n value: string; // ISO string: \"YYYY-MM-DDTHH:mm:ss\"\n onChange: (e: string) => void;\n placeholder?: string;\n disableFuture?: boolean;\n selectedDate?: string;\n className?: string;\n labelClassName?: string;\n customIcon?: React.ReactNode;\n iconSize?: number;\n iconClass?: string;\n}\n\nconst TimeInput = ({\n label,\n hasTimeIcon = true,\n value,\n onChange,\n placeholder = \"Required\",\n disableFuture = false,\n selectedDate,\n className = \"\",\n labelClassName = \"\",\n customIcon,\n iconSize = 20,\n iconClass = \"\",\n}: TimeInputProps) => {\n const parsedDate = value ? new Date(value) : null;\n\n const handleChange = (date: Date | null) => {\n if (date && !isNaN(date.getTime())) {\n onChange(date.toISOString());\n }\n };\n\n const now = new Date();\n\n let minTime: Date | undefined;\n let maxTime: Date | undefined;\n\n if (disableFuture && selectedDate) {\n const selected = new Date(selectedDate);\n minTime = startOfDay(selected);\n\n if (isToday(selected)) {\n maxTime = now;\n } else {\n const endOfDay = new Date(selected);\n endOfDay.setHours(23, 59, 59, 999);\n maxTime = endOfDay;\n }\n }\n\n return (\n <div className=\"w-full\">\n {label && (\n <p\n className={twMerge(\n \"text-[#131414] text-[14px] font-semibold mb-1\",\n labelClassName\n )}\n >\n {label}\n </p>\n )}\n <div className=\"relative\">\n <DatePicker\n selected={parsedDate}\n onChange={handleChange}\n showTimeSelect\n showTimeSelectOnly\n timeIntervals={15}\n timeCaption=\"Time\"\n maxDate={disableFuture ? new Date() : undefined}\n placeholderText={placeholder}\n dateFormat=\"hh:mm aa\"\n minTime={minTime}\n maxTime={maxTime}\n className={twMerge(\n `\n h-[48px] px-3 py-2 border-[2px] rounded-[8px] text-[14px] w-full\n border-[#E2E2E2] focus:border-[#3C6E97] focus:outline-none bg-[#F8F8F8]\n ${value !== \"\" ? \"text-[#131414]\" : \"text-[#757575]\"}\n ${hasTimeIcon ? \"pr-10\" : \"\"}\n `,\n className\n )}\n />\n {customIcon && customIcon}\n {hasTimeIcon && (\n <div\n className={twMerge(\n \"absolute top-1/2 right-3 -translate-y-1/2 pointer-events-none\",\n iconClass\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox={`0 0 20 20`}\n fill=\"none\"\n >\n <path\n d=\"M9.99 0C4.47 0 0 4.48 0 10C0 15.52 4.47 20 9.99 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 9.99 0ZM10 18C5.58 18 2 14.42 2 10C2 5.58 5.58 2 10 2C14.42 2 18 5.58 18 10C18 14.42 14.42 18 10 18ZM10.5 5H9V11L14.25 14.15L15 12.92L10.5 10.25V5Z\"\n fill=\"#757575\"\n />\n </svg>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default TimeInput;\n","import React, { ChangeEvent } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface CommonInputSingleProps {\n inputValue: string;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n keyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n label: string;\n error?: string;\n hasAll?: boolean;\n labelClass?: string;\n className?: string;\n inputClass?: string;\n}\n\nconst CommonInputSingle: React.FC<CommonInputSingleProps> = ({\n inputValue,\n onChange,\n keyDown,\n label,\n error,\n hasAll = false,\n labelClass = \"\",\n className = \"\",\n inputClass = \"\",\n}) => {\n return (\n <div>\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-600 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n <div\n className={twMerge(\n `border ${\n error ? \"border-red-500\" : \" border-[#E2E2E2]\"\n } rounded-lg p-1.5 bg-custom-gray cursor-pointer flex flex-wrap items-center gap-2`,\n className\n )}\n >\n {hasAll && inputValue === \"\" && (\n <div className=\"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\">\n <p>All</p>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n className=\"ml-1\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#323232\"\n />\n </svg>\n </div>\n )}\n <input\n type=\"text\"\n value={inputValue}\n onChange={onChange}\n onKeyDown={keyDown}\n className={twMerge(\n \"flex-grow px-0 py-1 bg-custom-gray text-xs border-none outline-none focus:ring-0\",\n inputClass\n )}\n />\n </div>\n {error && <span className=\" text-[12px] text-red-500\">{error}</span>}\n </div>\n );\n};\n\nexport default CommonInputSingle;\n","import ReactPaginate from \"react-paginate\";\n\ninterface PaginationProps {\n totalPages: number;\n currentPage: number;\n onPageChange?: (selectedPage: number) => void;\n pageRangeDisplayed?: number;\n}\n\nexport const Pagination = ({\n totalPages,\n currentPage,\n onPageChange,\n pageRangeDisplayed = 4,\n}: PaginationProps) => {\n const PaginateComponent = (ReactPaginate as any)?.default || ReactPaginate;\n return (\n <PaginateComponent\n key={totalPages}\n previousLabel={\n <svg\n width=\"8\"\n height=\"14\"\n viewBox=\"0 0 8 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 1L1 7L7 13\"\n stroke=\"#4062E5\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n nextLabel={\n <svg\n width=\"8\"\n height=\"14\"\n viewBox=\"0 0 8 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1L7 7L1 13\"\n stroke=\"#4062E5\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n breakLabel={\n <svg\n width=\"16\"\n height=\"4\"\n viewBox=\"0 0 16 4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"2.5\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n <circle cx=\"8\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n <circle cx=\"13.5\" cy=\"2\" r=\"1.75\" fill=\"#4062E5\" />\n </svg>\n }\n onPageChange={(event: any) => onPageChange?.(event.selected + 1)}\n pageRangeDisplayed={pageRangeDisplayed}\n marginPagesDisplayed={1}\n pageCount={totalPages}\n forcePage={currentPage - 1}\n containerClassName=\"flex items-center gap-2\"\n pageClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n pageLinkClassName=\"w-full h-full flex items-center justify-center hover:bg-[#ECEFFC] rounded-md cursor-pointer text-[#4062E5]\"\n activeClassName=\"bg-[#4062E5] rounded-md cursor-default pointer-events-none text-white\"\n activeLinkClassName=\"!text-white\"\n previousClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n previousLinkClassName=\"w-full h-full flex items-center justify-center pagination-color hover:bg-[#ECEFFC] rounded-md cursor-pointer disabled:text-gray-300\"\n nextClassName=\"min-w-[32px] w-auto h-[32px] flex items-center justify-center rounded-md\"\n nextLinkClassName=\"w-full h-full flex items-center justify-center pagination-color hover:bg-[#ECEFFC] rounded-md cursor-pointer disabled:text-gray-300\"\n breakClassName=\"w-10 h-10 flex items-center justify-center text-gray-500 font-bold\"\n disabledClassName=\"opacity-50 cursor-not-allowed\"\n />\n );\n};\n","import { twMerge } from \"tailwind-merge\";\nimport InfoIcon from \"../assets/info.svg\";\nimport DateRangePicker from \"../inputs/DateRange\";\nimport { TableHeaderProps } from \"./DynamicTable\";\n\nconst TableHeader: React.FC<TableHeaderProps> = ({\n toggleFilterPanel,\n isFilterPanelVisible,\n iconHeader,\n title,\n isExport,\n handleExport,\n isExporting,\n hasTooltip = false,\n isSimpleMode = false,\n tooltipMessage = \"This tab shows faxes received on the ChartRequest's retrieval fax line, 661-208-3159\",\n isButtonAvailable = true,\n isFilterVisible = false,\n isUseDateRange = false,\n isShowDateRange = false,\n dateRangeApplyFunc = (start_date, end_date) =>\n console.log(start_date, end_date),\n setIsShowDateRange,\n exportTooltipMessage = \"Select a date range to export data. The maximum allowed range is 1 year\",\n exportTooltipClass = \"left-2 \",\n hasMiddleHeaderCustomComponent = false,\n middleHeaderCustomComponent,\n rightHeaderClass = \"space-x-4\",\n dateRangeClass = \"\",\n customClass,\n hasCustomClass = false,\n headerClass = \"\",\n}) => {\n return (\n <div\n className={twMerge(\n \"h-[44px] w-full relative rounded-tl-[8px] rounded-tr-[8px] border bg-[#F5F7FE] flex px-[16px] py-[8px] justify-between items-center gap-4 border-[#C6D0F7] \",\n headerClass\n )}\n >\n {hasCustomClass && customClass}\n {!hasCustomClass && (\n <div className=\"flex items-center space-x-2 text-[#131414]\">\n {iconHeader}\n <span className=\"text-[14px] font-semibold text-content\">\n {title}\n </span>\n {hasTooltip && (\n <span\n className=\"relative group inline-flex items-center\" // Use inline-flex to align with text/elements\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute left-full ml-2 top-1/2 -translate-y-1/2 z-10 hidden group-hover:block rounded-md bg-black text-white text-xs p-3 shadow-lg max-w-xs\" // Increased padding, max-width\n style={{ width: \"280px\", lineHeight: \"1.4\" }}\n >\n <div className=\"absolute right-full top-1/2 -translate-y-1/2 w-3 h-3 bg-black rotate-45 -mr-1.5\"></div>\n {tooltipMessage}\n </div>\n </span>\n )}\n </div>\n )}\n\n {!hasCustomClass && (\n <div className={`flex items-center h-[28px] ${rightHeaderClass}`}>\n {setIsShowDateRange && (\n <span\n className={`relative group inline-flex ${exportTooltipClass} items-center ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n }`}\n >\n <img\n src={InfoIcon}\n alt=\"Info\"\n width={12}\n height={12}\n className=\"pt-[1px]\"\n />\n <div\n className=\"absolute right-5 ml-2 top-1/2 -translate-y-1/2 z-10 hidden group-hover:block rounded-md bg-black text-white text-xs p-2 shadow-lg max-w-xs\" // Increased padding, max-width\n style={{ width: \"280px\", lineHeight: \"1.4\" }}\n >\n <div className=\"absolute left-full top-1/2 -translate-y-1/2 w-3 h-3 bg-black rotate-45 -ml-1.5\"></div>\n {exportTooltipMessage}\n </div>\n </span>\n )}\n {isExporting && (\n <svg\n className=\"animate-spin h-5 w-10 text-white\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v8H4z\"\n ></path>\n </svg>\n )}\n {isExport && !isExporting && (\n <button\n className={`font-semibold text-[14px] bg-transparent text-primary border-base-200 ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n }`}\n onClick={() => {\n if (!isButtonAvailable) return;\n handleExport?.();\n }}\n >\n Export\n </button>\n )}\n {isUseDateRange && isFilterVisible && (\n <div className={twMerge(\"absolute right-[141px] \", dateRangeClass)}>\n <DateRangePicker\n start_date={\"\"}\n end_date={\"\"}\n isDateRangeOnly\n dateFunc={(startDate, endDate) => {\n dateRangeApplyFunc(startDate, endDate);\n }}\n dateRangeClass=\"right-0 top-[11px]\"\n autoOpen={isShowDateRange}\n setIsShowDateRange={setIsShowDateRange}\n />\n </div>\n )}\n {\n <div\n className={`${\n hasMiddleHeaderCustomComponent ? \"block\" : \"hidden\"\n }`}\n >\n {middleHeaderCustomComponent}\n </div>\n }\n {!isSimpleMode && isFilterVisible && (\n <button\n onClick={() => {\n if (!isButtonAvailable) return;\n toggleFilterPanel?.();\n }}\n className={`px-[8px] py-[4px] rounded-[4px] border font-semibold text-[14px] ${\n !isButtonAvailable ? \"opacity-50\" : \"\"\n } filter-serach-hover\n ${\n isFilterPanelVisible\n ? \"filter-serach-button\"\n : \"bg-white text-primary border-base-200\"\n }`}\n >\n Filter & Search\n </button>\n )}\n </div>\n )}\n </div>\n );\n};\nexport default TableHeader;\n","import React from \"react\";\nimport NoData from \"../assets/noData.png\";\n\nimport { Pagination } from \"./Pagination\";\nimport TableHeader from \"./TableHeader\";\n// 1. Set interface TableData, FilterState, TableProps\nexport interface Column {\n name: string;\n selector: string;\n width: string;\n sortable?: boolean;\n isJustifyBetween?: boolean;\n isLineHeight?: boolean;\n isCenteredText?: boolean;\n className?: string;\n iconClassName?: string;\n tableHeaderFontSize?: string;\n}\nexport interface TableHeaderProps {\n toggleFilterPanel?: () => void;\n isFilterPanelVisible?: boolean;\n iconHeader?: React.ReactNode;\n title?: string;\n isExport?: boolean;\n handleExport?: () => void;\n isExporting?: boolean | undefined;\n hasTooltip?: boolean;\n tooltipMessage?: string;\n isSimpleMode?: boolean;\n isButtonAvailable?: boolean;\n isFilterVisible?: boolean;\n isUseDateRange?: boolean;\n isShowDateRange?: boolean;\n setIsShowDateRange?: () => void;\n dateRangeApplyFunc?: (start_date: string, end_date: string) => void;\n exportTooltipMessage?: string;\n exportTooltipClass?: string;\n hasMiddleHeaderCustomComponent?: boolean;\n middleHeaderCustomComponent?: React.ReactElement;\n rightHeaderClass?: string;\n dateRangeClass?: string;\n customClass?: React.ReactElement;\n hasCustomClass?: boolean;\n headerClass?: string;\n}\n\ninterface TableHeaderCustom {\n tableHeaderHeight?: string;\n}\ninterface TableData {\n id?: string | number;\n [key: string]: any; // Allow for flexible data properties\n}\n\ninterface PaginationProps {\n totalPage: number;\n currentPage: number;\n handlePageChange: (page: number) => void;\n handleRowsPerPageChange: (page: number) => void;\n page: number;\n per_page: number;\n totalItems: number;\n}\n\ninterface DynamicTableProps {\n columns: Column[];\n tableData: TableData[];\n handleSort: (selector: string) => void;\n pagination: PaginationProps;\n mainTableHeader: TableHeaderProps;\n tableHeaderCustom?: TableHeaderCustom;\n isLoading: boolean;\n isError: boolean;\n tableHeader?: (\n column: Column,\n columnIndex: number,\n sortData: (selector: string) => void\n ) => React.ReactNode;\n tableBody?: (item: TableData, column: Column, columnIndex: number) => any;\n noDataMessage?: string;\n}\n\nconst DynamicTable: React.FC<DynamicTableProps> = ({\n columns,\n tableData,\n handleSort,\n pagination,\n isLoading,\n isError,\n tableBody,\n mainTableHeader,\n tableHeaderCustom,\n noDataMessage = \"No QA requests were found!\",\n}) => {\n const NoDataComponent = () => (\n <div className=\"flex flex-col justify-center items-center h-[53.2vh]\">\n <span>\n <img src={NoData} alt={\"No Data\"} width={100} height={100} />\n </span>\n <span className=\"text-gray-500 text-sm\">{noDataMessage}</span>\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col grow w-full bg-white rounded-[8px]\">\n <TableHeader\n iconHeader={mainTableHeader.iconHeader}\n isFilterPanelVisible={mainTableHeader.isFilterPanelVisible}\n toggleFilterPanel={mainTableHeader.toggleFilterPanel}\n title={mainTableHeader.title}\n isExport={mainTableHeader.isExport}\n handleExport={mainTableHeader.handleExport}\n isExporting={mainTableHeader.isExporting}\n hasTooltip={mainTableHeader.hasTooltip}\n tooltipMessage={mainTableHeader.tooltipMessage}\n isButtonAvailable={mainTableHeader.isButtonAvailable}\n hasMiddleHeaderCustomComponent={\n mainTableHeader.hasMiddleHeaderCustomComponent\n }\n middleHeaderCustomComponent={\n mainTableHeader.middleHeaderCustomComponent\n }\n />\n {\n <div className=\"relative min-w-full bg-white bg-gray-50 border-l border-r border-b rounded-bl-[8px] rounded-br-[8px] p-6 pt-0 pl-0 pr-0 border-[#C6D0F7]\">\n {\n <table className=\"min-w-full divide-y divide-gray-200 shadow-sm table-fixed\">\n <thead className=\"border-b-2\">\n <tr>\n {columns.map((column, columnIndex) => (\n <th\n key={column.name}\n scope=\"col\"\n className={`px-1 pb-[7.5px] ${\n tableHeaderCustom?.tableHeaderHeight !== undefined\n ? tableHeaderCustom.tableHeaderHeight\n : \"h-[42px]\"\n } text-left tracking-wider cursor-pointer break-all ${\n column.isLineHeight && \"line-height-1\"\n } ${columnIndex === 0 ? \"pl-[24px]\" : \"\"} ${\n columnIndex === columns.length - 1 ? \"pr-[24px]\" : \"\"\n }`}\n style={{\n width: column.width,\n verticalAlign: \"bottom\",\n }}\n onClick={() =>\n column.sortable && handleSort(column.selector)\n }\n >\n <div\n className={`flex ${\n column.isJustifyBetween && \"justify-between\"\n } ${\n column.isJustifyBetween &&\n column.className !== undefined\n ? column.className\n : \"\"\n } items-center`}\n >\n {column.selector === \"checkbox\" ? (\n // This checkbox logic would typically be managed by the parent component\n <input type=\"checkbox\" className=\"cursor-pointer\" />\n ) : (\n <>\n <span\n className={`${\n column.isCenteredText &&\n \"h-[25px] flex flex-center\"\n } items-center text-[12px] font-semibold text-[#131414]`}\n >\n {column.name}\n </span>\n {column.sortable && (\n <span\n className={`inline-block ml-2 ${\n column.iconClassName ?? \"\"\n }`}\n >\n <svg\n width=\"8\"\n height=\"12\"\n viewBox=\"0 0 8 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.99994 1.88667L6.11328 4L7.05328 3.06L3.99994 0L0.939941 3.06L1.88661 4L3.99994 1.88667ZM3.99994 10.1133L1.88661 8L0.946608 8.94L3.99994 12L7.05994 8.94L6.11328 8L3.99994 10.1133Z\"\n fill=\"#323232\"\n />\n </svg>\n </span>\n )}\n </>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => (\n <tr key={index}>\n {columns.map((column, columnIndex) => (\n <td\n key={column.selector}\n className={`px-1 py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all ${\n columnIndex === 0 ? \"pl-[24px]\" : \"\"\n } ${\n columnIndex === columns.length - 1\n ? \"pr-[24px]\"\n : \"\"\n }`}\n style={{ width: column.width, minHeight: \"45px\" }}\n >\n {/* Render custom body content if provided, otherwise default to item property */}\n {tableBody\n ? tableBody(item, column, columnIndex)\n : item[column.selector as keyof TableData]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n }\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto overflow-x-auto \">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-auto overflow-x-auto \"\n style={{ borderColor: \"rgba(64, 98, 229, 0.2)\" }}\n >\n <div className=\"flex justify-center items-center h-[53.2vh]\">\n <div className=\"animate-spin rounded-full h-10 w-10 border-b-2 border-primary\"></div>\n </div>\n </div>\n )}\n {tableData && tableData.length > 0 && !isLoading && (\n <div className=\"flex items-center justify-between px-4 py-3 bg-white\">\n <div className=\"flex items-center gap-2\">\n <Pagination\n totalPages={pagination.totalPage}\n currentPage={pagination.page}\n onPageChange={pagination.handlePageChange}\n />\n </div>\n\n <div className=\"flex items-center justify-center gap-2\">\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n Rows Per Page:\n </span>\n\n <div className=\"relative\">\n <select\n value={pagination.per_page}\n onChange={(e) =>\n pagination.handleRowsPerPageChange(Number(e.target.value))\n }\n className=\"appearance-none border broder-1 rounded-[2px] gap-2px pr-[2px] pt-[1px] pl-[8px] h-[20px] w-[50px]\"\n style={{\n borderColor: \"#E0E1E6\",\n fontSize: \"12px\",\n }}\n >\n <option value={10}>10</option>\n <option value={20}>20</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <div className=\"absolute right-[5px] bottom-1/2 top-1/2 pt-[5px] transform -translate-y-1/2 w-3 h-3 text-gray-400 pointer-events-none\">\n <svg\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.833313 0.333496L4.99998 4.50016L9.16665 0.333496H0.833313Z\"\n fill=\"#131414\"\n />\n </svg>\n </div>\n </div>\n <div\n className=\"bg-[#B5BAC4] h-[16px] w-[1px] self-center\"\n style={{ marginTop: \"1px\" }}\n ></div>\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n {`${\n (pagination.page - 1) * pagination.per_page + 1\n } - ${Math.min(\n pagination.page * pagination.per_page,\n pagination.totalItems\n )} of ${pagination.totalItems}`}\n </span>\n </div>\n </div>\n )}\n </div>\n }\n </div>\n );\n};\n\nexport default DynamicTable;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport NoData from \"../assets/noData.png\";\nimport { Column, TableHeaderProps } from \"./DynamicTable\";\n\nimport { Pagination } from \"./Pagination\";\nimport TableHeader from \"./TableHeader\";\n\n// 1. Set interface TableData, FilterState, TableProps\ninterface TableBodyDesign {\n className?: string;\n}\ninterface TableHeaderCustom {\n tableHeaderHeight?: string;\n px?: string;\n toggleAll?: () => void;\n isIndeterminate?: boolean;\n isAllSelected?: boolean;\n}\ninterface TableData {\n id?: string | number;\n [key: string]: any; // Allow for flexible data properties\n}\n\ninterface PaginationProps {\n totalPage: number;\n currentPage: number;\n handlePageChange: (page: number) => void;\n handleRowsPerPageChange: (page: number) => void;\n page: number;\n per_page: number;\n totalItems: number;\n pageRangeDisplayed?: number;\n}\n\ninterface DynamicTableV2Props {\n columns: Column[];\n tableData: TableData[];\n handleSort: (selector: string) => void;\n pagination?: PaginationProps;\n mainTableHeader: TableHeaderProps;\n tableHeaderCustom?: TableHeaderCustom;\n isLoading: boolean;\n isError: boolean;\n tableHeader?: (\n column: Column,\n columnIndex: number,\n sortData: (selector: string) => void\n ) => React.ReactNode;\n tableBody?: (item: TableData, column: Column, columnIndex: number) => any;\n tableRow?: (\n item: TableData,\n index: number\n ) => React.HTMLAttributes<HTMLTableRowElement>;\n noDataMessage?: string;\n noDataMessageHeader?: string;\n noDataMessageImage?: React.ReactNode;\n noDataMessageImageSize?: number;\n tableBodyDesign?: TableBodyDesign;\n hasAnotherScreen?: boolean;\n anotherScreenComponent?: any;\n isSimpleMode?: boolean;\n loadAndErrorHeight?: string;\n isDisableTableHeader?: boolean;\n isShowDateRange?: boolean;\n tableClass?: string;\n tableSubDivClass?: string;\n hasPagination?: boolean;\n tableSubDivRef?: React.Ref<HTMLDivElement>;\n}\n\nconst DynamicTableV2: React.FC<DynamicTableV2Props> = ({\n columns,\n tableData,\n handleSort,\n pagination,\n isLoading,\n isError,\n tableBody,\n tableRow,\n mainTableHeader,\n tableHeaderCustom,\n noDataMessageHeader = \"\",\n noDataMessage = \"No requestor payments were found!\",\n noDataMessageImage,\n noDataMessageImageSize = 64,\n tableBodyDesign,\n hasAnotherScreen = false,\n isSimpleMode = false,\n anotherScreenComponent,\n loadAndErrorHeight = \"h-[53.2vh]\",\n isDisableTableHeader = false,\n tableClass = \"\",\n hasPagination = true,\n tableSubDivClass = '',\n tableSubDivRef\n}) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const paginationRef = useRef<HTMLDivElement>(null);\n const [tableHeight, setTableHeight] = useState<number>(0);\n\n const calculateHeight = useCallback(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n if (!tableEl) return;\n let totalHeight = tableEl.offsetHeight;\n if (paginationEl && !isSimpleMode && tableData.length > 0 && !isLoading) {\n totalHeight += paginationEl.offsetHeight;\n }\n\n setTableHeight(totalHeight);\n }, [isSimpleMode, tableData.length, isLoading]);\n\n useEffect(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n if (!tableEl) return;\n const observer = new ResizeObserver(() => {\n setTimeout(calculateHeight, 0);\n });\n observer.observe(tableEl);\n if (paginationEl && !isSimpleMode && tableData.length > 0 && !isLoading) {\n observer.observe(paginationEl);\n }\n setTimeout(calculateHeight, 0);\n return () => {\n observer.disconnect();\n };\n }, [calculateHeight, isSimpleMode, tableData.length, isLoading]);\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n calculateHeight();\n }, 100);\n\n return () => clearTimeout(timeoutId);\n }, [pagination?.page, pagination?.per_page, calculateHeight]);\n\n useEffect(() => {\n const tableEl = tableRef.current;\n const paginationEl = paginationRef.current;\n\n if (!tableEl || !paginationEl) return;\n\n const updateHeight = () => {\n const totalHeight = tableEl.offsetHeight + paginationEl.offsetHeight;\n setTableHeight(totalHeight);\n };\n\n const observer = new ResizeObserver(updateHeight);\n observer.observe(tableEl);\n observer.observe(paginationEl);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n const NoDataComponent = () => (\n <div\n className={`flex flex-col justify-center items-center ${loadAndErrorHeight}`}\n >\n <span>\n {noDataMessageImage ? (\n noDataMessageImage\n ) : (\n <img\n src={NoData}\n alt={\"No Data\"}\n width={noDataMessageImageSize}\n height={noDataMessageImageSize}\n />\n )}\n </span>\n <span className=\"font-semibold text-[20px]\">{noDataMessageHeader}</span>\n <span className=\"text-gray-500 text-sm\">{noDataMessage}</span>\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col grow w-full bg-white rounded-[8px]\">\n <TableHeader\n iconHeader={mainTableHeader.iconHeader}\n isFilterPanelVisible={mainTableHeader.isFilterPanelVisible}\n toggleFilterPanel={mainTableHeader.toggleFilterPanel}\n title={mainTableHeader.title}\n isExport={mainTableHeader.isExport}\n handleExport={mainTableHeader.handleExport}\n isExporting={mainTableHeader.isExporting}\n hasTooltip={mainTableHeader.hasTooltip}\n tooltipMessage={mainTableHeader.tooltipMessage}\n isSimpleMode={isSimpleMode}\n isButtonAvailable={mainTableHeader.isButtonAvailable}\n isFilterVisible={mainTableHeader.isFilterVisible}\n isUseDateRange={mainTableHeader.isUseDateRange}\n isShowDateRange={mainTableHeader.isShowDateRange}\n dateRangeApplyFunc={mainTableHeader.dateRangeApplyFunc}\n setIsShowDateRange={mainTableHeader.setIsShowDateRange}\n exportTooltipMessage={mainTableHeader.exportTooltipMessage}\n exportTooltipClass={mainTableHeader.exportTooltipClass}\n rightHeaderClass={mainTableHeader.rightHeaderClass}\n hasMiddleHeaderCustomComponent={\n mainTableHeader.hasMiddleHeaderCustomComponent\n }\n middleHeaderCustomComponent={\n mainTableHeader.middleHeaderCustomComponent\n }\n dateRangeClass={mainTableHeader.dateRangeClass}\n customClass={mainTableHeader.customClass}\n hasCustomClass={mainTableHeader.hasCustomClass}\n headerClass={mainTableHeader.headerClass}\n />\n <div\n className={twMerge(\n `flex w-full h-full bg-white bg-gray-50 border-l border-r border-b rounded-bl-[8px] rounded-br-[8px] pt-0 pl-0 pr-0 border-[#C6D0F7] overflow-x-auto ${\n isSimpleMode && \"overflow-hidden\"\n }`,\n tableClass\n )}\n >\n {\n <div\n ref={tableSubDivRef}\n className={twMerge(`relative min-w-0 flex-1 ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n } flex flex-col bg-white `, tableSubDivClass)}\n >\n {\n <table\n ref={tableRef}\n className={`min-w-full divide-y divide-gray-200 table-fixed ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n }`}\n >\n {!isDisableTableHeader && (\n <thead className=\"border-b-2\">\n <tr>\n {columns.map((column, columnIndex) => (\n <th\n key={column.name}\n scope=\"col\"\n className={`${\n tableHeaderCustom?.px ?? \"px-1\"\n } pb-[7.5px] ${\n tableHeaderCustom?.tableHeaderHeight !== undefined\n ? tableHeaderCustom.tableHeaderHeight\n : \"h-[42px]\"\n } text-left tracking-wider cursor-pointer ${\n column.isLineHeight && \"line-height-1\"\n } ${columnIndex === 0 ? \"pl-[24px]\" : \"\"} ${\n columnIndex === columns.length - 1\n ? \"pr-[24px]\"\n : \"\"\n }`}\n style={{\n width: column.width || \"150px\",\n verticalAlign: \"bottom\",\n }}\n onClick={() =>\n column.sortable && handleSort(column.selector)\n }\n >\n <div\n className={`flex ${\n column.isJustifyBetween && \"justify-between\"\n } ${\n column.isJustifyBetween &&\n column.className !== undefined\n ? column.className\n : \"\"\n } items-center`}\n >\n {column.selector === \"checkbox\" ? (\n <input\n type=\"checkbox\"\n checked={\n tableHeaderCustom?.isAllSelected ?? false\n }\n ref={(input) => {\n if (input) {\n input.indeterminate =\n tableHeaderCustom?.isIndeterminate ??\n false;\n }\n }}\n onChange={tableHeaderCustom?.toggleAll}\n className=\"cursor-pointer absolute top-6\"\n />\n ) : (\n <>\n <span\n className={`${\n column.isCenteredText &&\n \"h-[25px] flex flex-center\"\n } items-center ${\n column.tableHeaderFontSize\n ? column.tableHeaderFontSize\n : \"text-[12px]\"\n } font-semibold text-[#131414]`}\n >\n {column.name}\n </span>\n {column.sortable && (\n <span className=\"inline-block ml-2\">\n <svg\n width=\"8\"\n height=\"12\"\n viewBox=\"0 0 8 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.99994 1.88667L6.11328 4L7.05328 3.06L3.99994 0L0.939941 3.06L1.88661 4L3.99994 1.88667ZM3.99994 10.1133L1.88661 8L0.946608 8.94L3.99994 12L7.05994 8.94L6.11328 8L3.99994 10.1133Z\"\n fill=\"#323232\"\n />\n </svg>\n </span>\n )}\n </>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n )}\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => {\n // Get custom row attributes if tableRow function is provided\n const rowProps = tableRow ? tableRow(item, index) : {};\n\n return (\n <tr\n key={index}\n {...rowProps}\n className={twMerge(rowProps.className || \"\")}\n >\n {columns.map((column, columnIndex) => (\n <td\n key={column.selector}\n className={`px-1 py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all\n\n ${\n index === tableData.length - 1 &&\n !hasPagination &&\n \" rounded-br-[8px] rounded-bl-[8px] \"\n } \n ${columnIndex === 0 ? \" pl-[24px] \" : \"\"} ${\n columnIndex === columns.length - 1\n ? \" pr-[24px] \"\n : \"\"\n }\n ${tableBodyDesign?.className ?? \"\"}\n `}\n style={{ width: column.width, minHeight: \"45px\" }}\n >\n {/* Render custom body content if provided, otherwise default to item property */}\n {tableBody\n ? tableBody(item, column, columnIndex)\n : item[column.selector as keyof TableData]}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n )}\n </table>\n }\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto overflow-x-auto \">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-auto overflow-x-auto \"\n style={{ borderColor: \"rgba(64, 98, 229, 0.2)\" }}\n >\n <div\n className={`flex justify-center items-center ${loadAndErrorHeight}`}\n >\n <div className=\"animate-spin rounded-full h-10 w-10 border-b-2 border-primary\"></div>\n </div>\n </div>\n )}\n {hasPagination &&\n tableData &&\n tableData.length > 0 &&\n !isLoading &&\n !isSimpleMode && (\n <div\n ref={paginationRef}\n className=\"flex items-center justify-between px-4 py-3 bg-white border-b-1 rounded-bl-[8px]\"\n >\n <div className=\"flex items-center gap-2\">\n <Pagination\n totalPages={pagination?.totalPage ?? 1}\n currentPage={pagination?.page ?? 1}\n onPageChange={pagination?.handlePageChange}\n pageRangeDisplayed={pagination?.pageRangeDisplayed}\n />\n </div>\n\n <div className=\"flex items-center justify-center gap-2\">\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n Rows Per Page:\n </span>\n\n <div className=\"relative\">\n <select\n value={pagination?.per_page}\n onChange={(e) =>\n pagination?.handleRowsPerPageChange(\n Number(e.target.value)\n )\n }\n className=\"appearance-none border broder-1 rounded-[2px] gap-2px pr-[2px] pt-[1px] pl-[8px] h-[20px] w-[50px]\"\n style={{\n borderColor: \"#E0E1E6\",\n fontSize: \"12px\",\n }}\n >\n <option value={10}>10</option>\n <option value={20}>20</option>\n <option value={50}>50</option>\n <option value={100}>100</option>\n </select>\n <div className=\"absolute right-[5px] bottom-1/2 top-1/2 pt-[5px] transform -translate-y-1/2 w-3 h-3 text-gray-400 pointer-events-none\">\n <svg\n width=\"10\"\n height=\"5\"\n viewBox=\"0 0 10 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.833313 0.333496L4.99998 4.50016L9.16665 0.333496H0.833313Z\"\n fill=\"#131414\"\n />\n </svg>\n </div>\n </div>\n <div\n className=\"bg-[#B5BAC4] h-[16px] w-[1px] self-center\"\n style={{ marginTop: \"1px\" }}\n ></div>\n <span\n className=\"text-[12px] font-normal text-[#131414]\"\n style={{ marginTop: \"3px\" }}\n >\n {pagination\n ? `${\n (pagination.page - 1) * pagination.per_page + 1\n } - ${Math.min(\n pagination.page * pagination.per_page,\n pagination.totalItems\n )} of ${pagination.totalItems}`\n : \"0 - 0 of 0\"}\n </span>\n </div>\n </div>\n )}\n </div>\n }\n <div\n className={`min-w-0 border-[#E2E2E2] flex-1 ${\n !hasAnotherScreen ? \"hidden\" : \"\"\n }`}\n style={{\n maxHeight: `${tableHeight <= 100 ? 540 : tableHeight}px`,\n minHeight: \"490px\",\n }}\n >\n {anotherScreenComponent ?? <div></div>}\n </div>\n </div>\n </div>\n );\n};\n\nexport default DynamicTableV2;\n","import { useEffect, useState } from \"react\";\nimport WarningImage from \"../assets/warning.png\";\ninterface ErrorToastProps {\n message?: string;\n onClose?: () => void;\n autoClose?: boolean;\n autoCloseDelay?: number;\n isVisible?: boolean;\n}\n\nconst ErrorToast = ({\n message = \"Request set as paid successfully!\",\n onClose,\n autoClose = false,\n autoCloseDelay = 125000,\n isVisible: externalIsVisible,\n}: ErrorToastProps) => {\n const [internalIsVisible, setInternalIsVisible] = useState(true);\n const [shouldRender, setShouldRender] = useState(true);\n const isVisible =\n externalIsVisible !== undefined ? externalIsVisible : internalIsVisible;\n\n useEffect(() => {\n if (!isVisible) {\n // Wait for fade-out transition to complete before unmounting\n const timeout = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timeout);\n } else {\n setShouldRender(true); // Ensure it's rendered if visible\n }\n }, [isVisible]);\n\n useEffect(() => {\n if (autoClose && autoCloseDelay > 0 && isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, autoCloseDelay);\n\n return () => clearTimeout(timer);\n }\n }, [autoClose, autoCloseDelay, isVisible]);\n\n const handleClose = () => {\n if (externalIsVisible === undefined) {\n setInternalIsVisible(false);\n }\n if (onClose) {\n onClose();\n }\n };\n\n if (!shouldRender) return null;\n\n return (\n <div\n className={`fixed top-[70px] right-0 transform z-50 transition-opacity duration-300 ${\n isVisible ? \"opacity-100\" : \"opacity-0\"\n }`}\n >\n <div className=\"flex justify-start items-center bg-[#FFE2E2] rounded-[6px] h-[48px] shadow-lg w-auto border-l-[6px] border-[#E7322C]\">\n <div className=\"w-[5px]\" />\n <img src={WarningImage} alt=\"warning\" height={18} width={18} />\n <p className=\"text-[#131414] pl-[8px] pr-[17px] font-semibold text-[14px]\">\n {message}\n </p>\n <button onClick={handleClose} aria-label=\"Close notification\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport default ErrorToast;\n","import { useEffect, useState } from \"react\";\nimport CheckImage from \"../assets/check.png\";\ninterface SuccessToastProps {\n message?: string;\n onClose?: () => void;\n autoClose?: boolean;\n autoCloseDelay?: number;\n isVisible?: boolean;\n}\n\nconst SuccessToast = ({\n message = \"Request set as paid successfully!\",\n onClose,\n autoClose = false,\n autoCloseDelay = 125000,\n isVisible: externalIsVisible,\n}: SuccessToastProps) => {\n const [internalIsVisible, setInternalIsVisible] = useState(true);\n const [shouldRender, setShouldRender] = useState(true);\n const isVisible =\n externalIsVisible !== undefined ? externalIsVisible : internalIsVisible;\n\n useEffect(() => {\n if (!isVisible) {\n // Wait for fade-out transition to complete before unmounting\n const timeout = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timeout);\n } else {\n setShouldRender(true); // Ensure it's rendered if visible\n }\n }, [isVisible]);\n\n useEffect(() => {\n if (autoClose && autoCloseDelay > 0 && isVisible) {\n const timer = setTimeout(() => {\n handleClose();\n }, autoCloseDelay);\n\n return () => clearTimeout(timer);\n }\n }, [autoClose, autoCloseDelay, isVisible]);\n\n const handleClose = () => {\n if (externalIsVisible === undefined) {\n setInternalIsVisible(false);\n }\n if (onClose) {\n onClose();\n }\n };\n\n if (!shouldRender) return null;\n\n return (\n <div\n className={`fixed top-[70px] right-0 transform z-50 transition-opacity duration-300 ${\n isVisible ? \"opacity-100\" : \"opacity-0\"\n }`}\n >\n <div className=\"flex justify-start items-center bg-[#C6F6D5] rounded-[6px] h-[48px] shadow-lg w-auto border-l-[6px] border-[#38A169]\">\n <div className=\"w-[5px]\" />\n <img src={CheckImage} alt=\"warning\" height={18} width={18} />\n <p className=\"text-[#131414] pl-[8px] pr-[17px] font-semibold text-[14px]\">\n {message}\n </p>\n <button onClick={handleClose} aria-label=\"Close notification\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport default SuccessToast;\n","import { twMerge } from \"tailwind-merge\";\n\nexport type NavBarProps = {\n children?: React.ReactNode;\n wrapperClassName?: string;\n innerClassName?: string;\n} & React.HTMLAttributes<HTMLElement>; // allow props like onClick, id, aria-*\n\nconst NavBar = ({\n children,\n wrapperClassName,\n innerClassName,\n ...rest\n}: NavBarProps) => {\n return (\n <nav\n {...rest}\n className={twMerge(\n \"z-20 w-full px-4 shadow-navbar bg-white h-[80px]\",\n wrapperClassName\n )}\n >\n <div\n className={twMerge(\n \"h-[80px] flex justify-between items-center gap-2 px-4 py-1\",\n innerClassName\n )}\n >\n {children}\n </div>\n </nav>\n );\n};\n\nexport default NavBar;\n","import { twMerge } from \"tailwind-merge\";\n\ntype ModalProps = {\n isOpen: boolean;\n type?: \"left\" | \"right\" | \"center\";\n onClose?: () => void;\n widthClassName?: string;\n children?: React.ReactNode;\n overlayClassName?: string;\n modalClassName?: string;\n stayMounted?: boolean;\n};\n\nconst Modal = ({\n isOpen,\n type = \"right\",\n onClose,\n widthClassName = \"w-[300px]\",\n children,\n overlayClassName,\n modalClassName,\n stayMounted = false,\n}: ModalProps) => {\n if (!stayMounted && !isOpen) return null;\n\n let positionClasses = \"\";\n if (type === \"left\") {\n positionClasses = \"left-0 top-0 h-full\";\n } else if (type === \"right\") {\n positionClasses = \"right-0 top-0 h-full\";\n } else if (type === \"center\") {\n positionClasses =\n \"top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\";\n }\n\n return (\n <>\n <div\n className={twMerge(\n \"fixed inset-0 bg-black bg-opacity-50 z-40\",\n stayMounted ? (isOpen ? \"block\" : \"hidden\") : \"block\",\n overlayClassName\n )}\n onClick={onClose}\n aria-hidden={!isOpen}\n />\n\n <div\n className={twMerge(\n `fixed bg-white shadow-xl z-50 transform transition-transform duration-300 ease-in-out ${positionClasses}`,\n stayMounted ? (isOpen ? \"block\" : \"hidden\") : \"block\",\n widthClassName,\n modalClassName\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {children}\n </div>\n </>\n );\n};\n\nexport default Modal;\n","import { twMerge } from \"tailwind-merge\";\n\ntype PopupWrapperProps = {\n children?: React.ReactNode;\n className?: string;\n isOpen: boolean;\n stayMounted?: boolean;\n closePopup?: () => void;\n hasClosePopup?: boolean;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst PopupWrapper = ({\n children,\n className,\n isOpen = false,\n stayMounted = false,\n closePopup,\n hasClosePopup = false,\n ...rest\n}: PopupWrapperProps) => {\n if (!stayMounted && !isOpen) return null;\n\n return (\n <div\n {...rest}\n className={twMerge(\n \"absolute right-0 top-1 mt-10 shadow-lg bg-white rounded-lg p-4 w-80 z-10 border border-opacity-10\",\n isOpen ? \"block\" : \"hidden\",\n className\n )}\n >\n {hasClosePopup && (\n <div className=\"flex justify-end cursor-pointer\" onClick={closePopup}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"17.5\"\n height=\"17.5\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.0837 3.739L10.2612 2.9165L7.00033 6.17734L3.73949 2.9165L2.91699 3.739L6.17783 6.99984L2.91699 10.2607L3.73949 11.0832L7.00033 7.82234L10.2612 11.0832L11.0837 10.2607L7.82283 6.99984L11.0837 3.739Z\"\n fill=\"#4B5563\"\n />\n </svg>\n </div>\n )}\n {children}\n </div>\n );\n};\n\nexport default PopupWrapper;\n","import { twMerge } from \"tailwind-merge\";\n\nexport type LayoutProps = {\n children: React.ReactNode;\n wrapperClassName?: string;\n navClassName?: string;\n navProps?: React.HTMLAttributes<HTMLElement>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst SideNav = ({\n children,\n wrapperClassName,\n navClassName,\n navProps,\n ...rest\n}: LayoutProps) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"bg-base min-w-[260px] shadow-sidebar relative sm:flex flex-col justify-between h-screen max-h-screen\",\n wrapperClassName\n )}\n >\n <nav\n {...navProps}\n className={twMerge(\n \"relative flex flex-col w-full gap-1 px-4 pt-4\",\n navClassName,\n navProps?.className\n )}\n >\n {children}\n </nav>\n </div>\n );\n};\n\nexport default SideNav;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Box: React.FC<BoxProps> = ({ className = \"\", children, ...rest }) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"border border-[1px] border-[#C4CFF6] rounded-[8px] min-h-[10px] bg-white\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default Box;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst BoxHeader: React.FC<BoxHeaderProps> = ({\n className = \"\",\n children,\n ...rest\n}) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"h-[40px] w-full bg-[#F5F7FE] px-2 flex items-center border-b border-[#C4CFF6] rounded-tr-[8px] rounded-tl-[8px]\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default BoxHeader;\n","import React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface BoxBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nconst BoxBody: React.FC<BoxBodyProps> = ({\n className = \"\",\n children,\n ...rest\n}) => {\n return (\n <div\n {...rest}\n className={twMerge(\n \"bg-white p-2 min-h-[20px] rounded-br-[8px] rounded-bl-[8px]\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default BoxBody;\n"]}