cr-ui-lib 1.1.60 → 1.1.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/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/graph/MultiBarGraph.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/inputs/GroupedCheckboxDropdown.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","BarElement","Bar","isValid","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 min: 0,\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 \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: string[] | number[] | any;\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 /** Determines the default position of the tooltip. Defaults to 'top'. */\n tooltipPosition?: \"top\" | \"bottom\";\n svg?: string;\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\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 tooltipPosition = \"top\",\n svg = `<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 tab = \"Month\",\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 const formatLabel = (label: string) => {\n const date = new Date(label);\n\n switch (tab) {\n case \"Month\":\n return date.toLocaleString(\"en-US\", { month: \"long\", year: \"numeric\" });\n case \"Week\":\n // Determine week number\n const start = new Date(date.getFullYear(), 0, 1);\n const diff = (date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24);\n const weekNum = Math.ceil((diff + start.getDay() + 1) / 7);\n return `${date.toLocaleDateString(\"en-US\")} (W${weekNum - 1})`;\n case \"Day\":\n return `${date.toLocaleDateString(\"en-US\")}`;\n case \"Hourly\":\n return `${date.toLocaleDateString(\"en-US\")} ${date.toLocaleTimeString(\n \"en-US\",\n {\n hour: \"numeric\",\n minute: \"2-digit\",\n }\n )}`;\n default:\n return label;\n }\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 min: 0,\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 // Tooltip Element\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\n // Hide if no tooltip\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 dataPoints = tooltipModel.dataPoints || [];\n if (dataPoints.length === 0) {\n return;\n }\n\n // --- Tooltip Content ---\n const label = dataPoints[0]?.label;\n // Format it to \"Month Year\" (e.g., \"January 2024\")\n const formattedLabel = formatLabel(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}\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 .join(\"\");\n\n tooltipEl.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; z-index: 999;\">\n <div id=\"tooltip-arrow-border\"></div>\n <div id=\"tooltip-arrow\"></div>\n <div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${formattedLabel}</strong></p>\n ${dataPointsHtml}\n </div>\n </div>`;\n\n // --- Tooltip Position ---\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const position = context.chart.canvas.getBoundingClientRect();\n const pointX = position.left + window.scrollX + tooltipModel.caretX;\n const pointY = position.top + window.scrollY + tooltipModel.caretY;\n\n const arrowSize = 8;\n let isAbove = tooltipPosition === \"top\";\n let yPosition;\n\n const yTop = pointY - tooltipHeight - arrowSize - 5;\n const yBottom = pointY + arrowSize;\n\n if (isAbove) {\n // Prefer top, but switch to bottom if it's off-screen\n yPosition = yTop;\n if (yPosition < window.scrollY + 10) {\n yPosition = yBottom;\n isAbove = false;\n }\n } else {\n // Prefer bottom, but switch to top if it's off-screen\n yPosition = yBottom;\n if (\n yPosition + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ) {\n yPosition = yTop;\n isAbove = true;\n }\n }\n\n // Calculate X position\n let xPosition = pointX - tooltipWidth / 2;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n\n // --- Arrow Styling & Position ---\n const arrowBorder = tooltipEl.querySelector<HTMLElement>(\n \"#tooltip-arrow-border\"\n );\n const arrow =\n tooltipEl.querySelector<HTMLElement>(\"#tooltip-arrow\");\n if (arrow && arrowBorder) {\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n // Common styles\n [arrow, arrowBorder].forEach((el) => {\n el.style.position = \"absolute\";\n el.style.left = \"50%\";\n el.style.transform = \"translateX(-50%)\";\n el.style.width = \"0\";\n el.style.height = \"0\";\n el.style.borderLeft = `${outerArrowSize}px solid transparent`;\n el.style.borderRight = `${outerArrowSize}px solid transparent`;\n });\n\n const arrowLeftOffset = pointX - xPosition;\n arrow.style.left = `${arrowLeftOffset}px`;\n arrowBorder.style.left = `${arrowLeftOffset}px`;\n\n if (isAbove) {\n arrowBorder.style.top = \"100%\";\n arrowBorder.style.borderTop = `${outerArrowSize}px solid rgba(16, 30, 115, 0.1)`;\n arrow.style.top = \"100%\";\n arrow.style.transform = \"translateX(-50%) translateY(-1px)\";\n arrow.style.borderTop = `${innerArrowSize}px solid white`;\n } else {\n arrowBorder.style.bottom = \"100%\";\n arrowBorder.style.borderBottom = `${outerArrowSize}px solid rgba(16, 30, 115, 0.1)`;\n arrow.style.bottom = \"100%\";\n arrow.style.transform = \"translateX(-50%) translateY(1px)\";\n arrow.style.borderBottom = `${innerArrowSize}px solid white`;\n }\n }\n\n // --- Final Styles ---\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 [tooltipPosition, svg, tab] // Add dependency here\n );\n\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 as any}\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 tooltipPosition?: \"top\" | \"bottom\";\n svg?: string;\n\n /** NEW — Determines label formatting logic */\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\n}\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 tooltipPosition = \"top\",\n svg = ` <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"margin-right: 4px;\">\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>`,\n tab = \"Month\",\n}: SingleLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\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 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,\n min: 0,\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 // Tooltip Element\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\n // Hide if no tooltip\n const tooltipModel = context.tooltip;\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n tooltipEl.style.pointerEvents = \"none\"; // Make it non-interactive when hidden\n return;\n }\n\n // Set cursor\n context.chart.canvas.style.cursor = \"pointer\";\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n if (!dataPoint) return;\n\n const value = dataPoint.parsed.y;\n const label = dataPoint.label;\n\n let tabType = tab;\n if (!tabType) {\n if (/^\\w+:\\s+\\w+\\s+\\d{4}$/i.test(label)) tabType = \"Month\";\n else if (/^Week:/i.test(label)) tabType = \"Week\";\n else if (/^\\d{2}\\/\\d{2}\\/\\d{2}$/i.test(label)) tabType = \"Day\";\n else if (/AM|PM/i.test(label)) tabType = \"Hourly\";\n else tabType = \"Month\";\n }\n\n // ✅ Format label based on detected tab type\n let formattedLabel = label;\n try {\n if (tabType === \"Month\") {\n const match = label.match(/([A-Za-z]+)\\s+(\\d{4})/);\n if (match) formattedLabel = `${match[1]} ${match[2]}`;\n } else if (tabType === \"Week\") {\n // Example: \"Week: 9/9/2025 Week(40)\" → \"9/9/2025 Week(39)\"\n const match = label.match(\n /(\\d{1,2}\\/\\d{1,2}\\/\\d{4})\\s*Week\\((\\d+)\\)/i\n );\n if (match) {\n const datePart = match[1];\n const weekNumber = parseInt(match[2], 10) - 1; // subtract 1\n formattedLabel = `${datePart} Week(${weekNumber})`;\n } else {\n formattedLabel = label.replace(/^Week:\\s*/i, \"\").trim();\n }\n } else if (tabType === \"Day\") {\n // Example: \"Day: 09/09/2025\" → \"09/09/2025\"\n formattedLabel = label.replace(/^Day:\\s*/i, \"\").trim();\n } else if (tabType === \"Hourly\") {\n // Example: \"Hourly: 8 AM\" → \"8 AM\"\n formattedLabel = label.replace(/^Hourly:\\s*/i, \"\").trim();\n }\n } catch {\n formattedLabel = label;\n }\n const arrowSize = 6;\n const innerArrowSize = 5;\n const isAbove = tooltipPosition === \"top\";\n\n const arrowBorderStyles = isAbove\n ? `top: 100%; border-top: ${arrowSize}px solid rgba(16, 30, 115, 0.1);`\n : `bottom: 100%; border-bottom: ${arrowSize}px solid rgba(16, 30, 115, 0.1);`;\n\n const arrowInnerStyles = isAbove\n ? `top: 100%; transform: translateX(-50%) translateY(-1px); border-top: ${innerArrowSize}px solid white;`\n : `bottom: 100%; transform: translateX(-50%) translateY(1px); border-bottom: ${innerArrowSize}px solid white;`;\n\n tooltipEl.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; z-index: 999; transition: opacity 0.2s ease;\">\n <div id=\"tooltip-arrow-border\" style=\"position: absolute; transform: translateX(-50%); width: 0; height: 0; border-left: ${arrowSize}px solid transparent; border-right: ${arrowSize}px solid transparent; ${arrowBorderStyles}\"></div>\n <div id=\"tooltip-arrow-inner\" style=\"position: absolute; width: 0; height: 0; border-left: ${innerArrowSize}px solid transparent; border-right: ${innerArrowSize}px solid transparent; ${arrowInnerStyles}\"></div>\n <div>\n <p style=\"color:#757575; margin: 0 0 4px 0;\"><strong>${formattedLabel}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n ${svg}\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span>\n </div>\n </div>\n `;\n\n tooltipEl.style.opacity = \"0\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.pointerEvents = \"none\";\n\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\n let yPosition;\n let finalIsAbove = tooltipPosition === \"top\";\n const yTop = pointY - tooltipHeight - arrowSize - 5;\n const yBottom = pointY + arrowSize + 5;\n\n if (finalIsAbove) {\n yPosition = yTop;\n if (yPosition < window.scrollY + 10) {\n yPosition = yBottom;\n finalIsAbove = false;\n }\n } else {\n yPosition = yBottom;\n if (\n yPosition + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ) {\n yPosition = yTop;\n finalIsAbove = true;\n }\n }\n\n let xPosition = pointX - tooltipWidth / 2;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n\n let arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(5, Math.min(95, arrowLeftPercent));\n\n // FIX: Cast the results of querySelector to HTMLElement\n const arrowBorderEl = tooltipEl.querySelector(\n \"#tooltip-arrow-border\"\n ) as HTMLElement;\n const arrowInnerEl = tooltipEl.querySelector(\n \"#tooltip-arrow-inner\"\n ) as HTMLElement;\n\n if (arrowBorderEl && arrowInnerEl) {\n arrowBorderEl.style.left = `${arrowLeftPercent}%`;\n arrowInnerEl.style.left = `${arrowLeftPercent}%`;\n\n if (finalIsAbove !== isAbove) {\n if (finalIsAbove) {\n arrowBorderEl.style.top = \"100%\";\n arrowBorderEl.style.bottom = \"auto\";\n arrowBorderEl.style.borderTopColor = \"rgba(16, 30, 115, 0.1)\";\n arrowBorderEl.style.borderBottomColor = \"transparent\";\n arrowInnerEl.style.top = \"100%\";\n arrowInnerEl.style.bottom = \"auto\";\n arrowInnerEl.style.transform =\n \"translateX(-50%) translateY(-1px)\";\n arrowInnerEl.style.borderTopColor = \"white\";\n arrowInnerEl.style.borderBottomColor = \"transparent\";\n } else {\n arrowBorderEl.style.bottom = \"100%\";\n arrowBorderEl.style.top = \"auto\";\n arrowBorderEl.style.borderBottomColor =\n \"rgba(16, 30, 115, 0.1)\";\n arrowBorderEl.style.borderTopColor = \"transparent\";\n arrowInnerEl.style.bottom = \"100%\";\n arrowInnerEl.style.top = \"auto\";\n arrowInnerEl.style.transform =\n \"translateX(-50%) translateY(1px)\";\n arrowInnerEl.style.borderBottomColor = \"white\";\n arrowInnerEl.style.borderTopColor = \"transparent\";\n }\n }\n }\n\n tooltipEl.style.opacity = \"1\";\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 [tooltipPosition, labelPopupTitle, svg, tab]\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: label,\n datasets: [\n {\n label: labelPopupTitle,\n data: data,\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 [\n label,\n data,\n labelPopupTitle,\n lineColor,\n gradientColor0,\n gradientColor1,\n pointLabelColor,\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 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 );\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options as any}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\nexport default SingleLineGraph;\n","import {\n BarElement,\n CategoryScale,\n Chart,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Plugin,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\n// --- Type Definitions ---\ninterface DataSet {\n data: number[];\n label: string;\n backgroundColor?: string;\n svgIcon?: string;\n}\n\ninterface MultiBarGraphProps {\n datasets: DataSet[];\n xAxisLabels: string[];\n className?: string;\n tooltipPosition?: \"top\" | \"bottom\";\n /** The maximum value for the Y-axis. Defaults to undefined, allowing Chart.js to auto-calculate. */\n yAxisMax?: number;\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\n}\n\n// --- Chart.js Registration ---\nChartJS.register(\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n);\n\n// --- Component Definition ---\nconst MultiBarGraph = ({\n datasets,\n xAxisLabels,\n className = \"\",\n tooltipPosition = \"top\",\n yAxisMax, // CHANGED: Added yAxisMax prop\n tab = \"Month\",\n}: MultiBarGraphProps) => {\n const chartRef = useRef(null);\n\n // REMOVED: The chartKey state and resize useEffect are no longer needed.\n // Chart.js's `responsive: true` handles resizing efficiently.\n\n const defaultColors = [\n \"#58508d\",\n \"#bc5090\",\n \"#ff6361\",\n \"#ffa600\",\n \"#003f5c\",\n \"#488f31\",\n ];\n\n const getDefaultSvgIcon = () => `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_5485_36311)\"><path d=\"M7.00033 1.16602C3.78033 1.16602 1.16699 3.77935 1.16699 6.99935C1.16699 10.2193 3.78033 12.8327 7.00033 12.8327C10.2203 12.8327 12.8337 10.2193 12.8337 6.99935C12.8337 3.77935 10.2203 1.16602 7.00033 1.16602ZM7.00033 11.666C4.42783 11.666 2.33366 9.57185 2.33366 6.99935C2.33366 4.42685 4.42783 2.33268 7.00033 2.33268C9.57283 2.33268 11.667 4.42685 11.667 6.99935C11.667 9.57185 9.57283 11.666 7.00033 11.666ZM9.67782 4.42102L5.83366 8.26518L4.32283 6.76018L3.50033 7.58268L5.83366 9.91602L10.5003 5.24935L9.67782 4.42102Z\" fill=\"#003f5c\"/></g>\n <defs><clipPath id=\"clip0_5485_36311\"><rect width=\"14\" height=\"14\" fill=\"white\"/></clipPath></defs>\n </svg>\n `;\n\n // ADDED: useEffect for tooltip cleanup to prevent memory leaks.\n useEffect(() => {\n // Return a cleanup function that will run when the component unmounts.\n return () => {\n const tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (tooltipEl) {\n tooltipEl.remove();\n }\n };\n }, []);\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: { duration: 100, easing: \"easeOutQuad\" },\n scales: {\n x: { stacked: true, grid: { drawOnChartArea: false } },\n y: {\n stacked: true,\n min: 0,\n max: yAxisMax, // CHANGED: Use the dynamic yAxisMax prop\n border: { display: false },\n grid: { drawOnChartArea: false },\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 document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const hoveredPoint = tooltipModel.dataPoints[0];\n if (!hoveredPoint) return;\n\n const label = hoveredPoint.label;\n const segmentValue = hoveredPoint.raw;\n const segmentLabel = hoveredPoint.dataset.label || \"\";\n const customSvgIcon = hoveredPoint.dataset.svgIcon;\n\n const totalBarValue = context.chart.data.datasets.reduce(\n (sum: number, dataset: any) =>\n sum + (dataset.data[hoveredPoint.dataIndex] || 0),\n 0\n );\n\n // Format it to \"Month Year\" (e.g., \"January 2024\")\n // --- 🔹 Unified label formatter (same as SingleLineGraph) ---\n let tabType = tab;\n if (!tabType) {\n if (/^\\w+:\\s+\\w+\\s+\\d{4}$/i.test(label)) tabType = \"Month\";\n else if (/^Week:/i.test(label)) tabType = \"Week\";\n else if (/^\\d{2}\\/\\d{2}\\/\\d{2}$/i.test(label)) tabType = \"Day\";\n else if (/AM|PM/i.test(label)) tabType = \"Hourly\";\n else tabType = \"Month\";\n }\n\n let formattedLabel = label;\n try {\n if (tabType === \"Month\") {\n const match = label.match(/([A-Za-z]+)\\s+(\\d{4})/);\n if (match) formattedLabel = `${match[1]} ${match[2]}`;\n } else if (tabType === \"Week\") {\n // Example: \"Week: 9/9/2025 Week(40)\" → \"9/9/2025 Week(39)\"\n const match = label.match(\n /(\\d{1,2}\\/\\d{1,2}\\/\\d{4})\\s*Week\\((\\d+)\\)/i\n );\n if (match) {\n const datePart = match[1];\n const weekNumber = parseInt(match[2], 10) - 1; // subtract 1\n formattedLabel = `${datePart} Week(${weekNumber})`;\n } else {\n formattedLabel = label.replace(/^Week:\\s*/i, \"\").trim();\n }\n } else if (tabType === \"Day\") {\n // Example: \"Day: 09/09/2025\" → \"09/09/2025\"\n formattedLabel = label.replace(/^Day:\\s*/i, \"\").trim();\n } else if (tabType === \"Hourly\") {\n // Example: \"Hourly: 8 AM\" → \"8 AM\"\n formattedLabel = label.replace(/^Hourly:\\s*/i, \"\").trim();\n }\n } catch {\n formattedLabel = label;\n }\n\n const percentage =\n totalBarValue > 0\n ? ((segmentValue / totalBarValue) * 100).toFixed(2)\n : 0;\n\n const iconHtml = customSvgIcon || getDefaultSvgIcon();\n\n tooltipEl.innerHTML = `\n <div style=\"position: relative; background: white; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 10px; font-size: 12px; z-index: 999;\">\n <div id=\"tooltip-arrow\" style=\"position: absolute; width: 0; height: 0;\"></div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${formattedLabel}</strong></p>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${iconHtml}\n <span style=\"font-weight: bold; color: #757575;\">\n ${segmentLabel}: <span style=\"color:#131414;\">${segmentValue} (${percentage}%)</span>\n </span>\n </div>\n </div>`;\n\n const position = context.chart.canvas.getBoundingClientRect();\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const arrowSize = 6;\n let isAbove = tooltipPosition === \"top\";\n\n const yTop =\n position.top +\n window.scrollY +\n hoveredPoint.element.y -\n tooltipHeight -\n arrowSize -\n 5;\n const yBottom =\n position.top +\n window.scrollY +\n hoveredPoint.element.y +\n arrowSize +\n 5;\n let yPosition;\n\n if (isAbove) {\n yPosition = yTop < window.scrollY + 10 ? yBottom : yTop;\n } else {\n yPosition =\n yBottom + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ? yTop\n : yBottom;\n }\n isAbove = yPosition === yTop;\n\n let xPosition =\n position.left +\n window.scrollX +\n hoveredPoint.element.x -\n tooltipWidth / 2;\n xPosition = Math.max(\n 10,\n Math.min(xPosition, window.innerWidth - 10 - tooltipWidth)\n );\n\n const arrowEl =\n tooltipEl.querySelector<HTMLElement>(\"#tooltip-arrow\");\n if (arrowEl) {\n Object.assign(arrowEl.style, {\n top: isAbove ? \"100%\" : \"auto\",\n bottom: isAbove ? \"auto\" : \"100%\",\n borderTop: isAbove ? `${arrowSize}px solid white` : \"none\",\n borderBottom: isAbove ? \"none\" : `${arrowSize}px solid white`,\n borderLeft: `${arrowSize}px solid transparent`,\n borderRight: `${arrowSize}px solid transparent`,\n left: `${\n position.left +\n window.scrollX +\n hoveredPoint.element.x -\n xPosition -\n arrowSize\n }px`,\n });\n }\n\n Object.assign(tooltipEl.style, {\n opacity: \"1\",\n position: \"absolute\",\n left: `${xPosition}px`,\n top: `${yPosition}px`,\n pointerEvents: \"none\",\n });\n },\n },\n },\n interaction: {\n intersect: true,\n mode: \"nearest\" as const,\n },\n }),\n [tooltipPosition, yAxisMax, datasets, tab] // CHANGED: Added datasets and yAxisMax for safety\n );\n\n const dashedGridPlugin: Plugin<\"bar\"> = useMemo(\n () => ({\n id: \"customDashedGrid\",\n beforeDatasetsDraw(chart: Chart) {\n const {\n ctx,\n chartArea: { left, right },\n scales: { y: yAxis },\n } = chart;\n if (!yAxis) 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 yAxis.ticks.forEach((tick, index) => {\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\n ctx.restore();\n },\n }),\n []\n );\n\n const barData = useMemo(\n () => ({\n labels: xAxisLabels,\n datasets: datasets.map((dataset, index) => ({\n ...dataset,\n backgroundColor:\n dataset.backgroundColor ||\n defaultColors[index % defaultColors.length],\n })),\n }),\n [datasets, xAxisLabels]\n );\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Bar\n ref={chartRef}\n // REMOVED: key prop is no longer needed for resizing\n options={options as any}\n data={barData}\n plugins={[dashedGridPlugin]}\n />\n </div>\n );\n};\n\nexport default MultiBarGraph;\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 labelClass?: 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 labelClass,\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\n className={twMerge(\n labelColor,\n \"text-[14px] font-semibold mb-1\",\n labelClass\n )}\n >\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\n// interface 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: any = {} // Updated to handle more options\n) => {\n const {\n enableYearRange = true,\n yearsBack = 1,\n allowFutureDates = false,\n hasLimit = false, // New: To check if date range limit should be applied\n startDate = null, // New: The selected start date for range comparison\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), 10);\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), 10);\n const day = parseInt(digits.slice(2, 4), 10);\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 (General, from today)\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), 10);\n\n if (inputYear < minYear || inputYear > currentYear) {\n digits = digits.slice(0, 4);\n }\n }\n\n // Validate complete date against future dates\n if (!allowFutureDates && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n\n const inputDate = new Date(year, month - 1, day);\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (inputDate > today) {\n digits = digits.slice(0, 4);\n }\n }\n\n // New: Validate date range limit against a start date\n if (!hasLimit && startDate && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n const inputDate = new Date(year, month - 1, day);\n\n const maxRangeDate = new Date(startDate);\n maxRangeDate.setFullYear(maxRangeDate.getFullYear() + yearsBack);\n\n // If the entered date is beyond the allowed range, truncate the input\n if (inputDate > maxRangeDate) {\n digits = digits.slice(0, 7);\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};\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 hasLimit?: boolean; // New prop to control the date range limit\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 hasLimit = false, // Default to false to maintain the 1-year limit\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 now = new Date();\n now.setHours(0, 0, 0, 0); // Normalize to the start of the day\n\n // endOfLastWeek is the most recent Saturday.\n // We subtract the current day of the week (Sun=0, Mon=1...) + 1 day.\n // Example: If today is Tuesday (day 2), we go back 2+1=3 days to get to Saturday.\n const endOfLastWeek = new Date(now);\n endOfLastWeek.setDate(now.getDate() - (now.getDay() + 1));\n\n // startOfLastWeek is 6 days before the end of last week (the previous Sunday).\n const startOfLastWeek = new Date(endOfLastWeek);\n startOfLastWeek.setDate(endOfLastWeek.getDate() - 6);\n\n return { start: startOfLastWeek, end: endOfLastWeek };\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 baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n // Apply the 1-year max range limit only if hasLimit is false\n if (!hasLimit) {\n const maxDate = new Date(startDate);\n maxDate.setFullYear(maxDate.getFullYear() + yearsBack);\n maxDate.setHours(0, 0, 0, 0);\n if (date > maxDate) return true;\n }\n\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 // Apply the 1-year max range limit only if hasLimit is false\n if (!hasLimit) {\n const maxDate = new Date(startDate);\n maxDate.setFullYear(maxDate.getFullYear() + yearsBack);\n maxDate.setHours(0, 0, 0, 0);\n if (date > maxDate) return true;\n }\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 {hasLimit\n ? \"Custom Range\"\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 hasLimit,\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 hasLimit,\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 usePortal?: boolean; // ✅ Added usePortal prop\n inputClass?: string;\n placeholder?: string;\n hasIcon?: boolean;\n iconClass?: 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 inputClass = \"\",\n dropdownOpenClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n usePortal = true, // ✅ Destructured prop with default true\n placeholder = \"Type or select...\",\n hasIcon = false,\n iconClass = \"\",\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 both the container and any potential portal element\n // Note: A more robust portal check might involve a ref on the dropdown itself\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n // Simple check to see if the click was on *any* portal-rendered dropdown\n // A better approach might involve passing the portal ref, but this works for this case\n const portalDropdown = document.querySelector(\".portal-dropdown-menu\");\n if (portalDropdown && portalDropdown.contains(event.target as Node)) {\n return;\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 }, [\n inputValue,\n options,\n selectedItems,\n isDropdownAutoOpen,\n isMulti,\n enableTypingSingle,\n selectedList,\n ]);\n\n // 2. Calculate the position only if using portal\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current && usePortal) {\n // ✅ Conditional calculation\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, usePortal]); // ✅ Added usePortal to dependency array\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 with conditional styling\n const DropdownMenu = (\n <div\n style={\n usePortal // ✅ Conditional styling\n ? {\n // Portal style\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n // Non-portal (relative) style\n position: \"absolute\",\n top: \"100%\", // Position relative to the parent\n left: 0,\n marginTop: \"4px\", // Add a small gap\n width: \"100%\",\n zIndex: 99,\n }\n }\n className={twMerge(\n \"rounded-lg bg-white shadow-lg z-50 max-h-60 overflow-auto border border-[#E2E2E2]\",\n usePortal ? \"portal-dropdown-menu\" : \"\", // Added class for click-outside check\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\" // This 'relative' is crucial for non-portal positioning\n onClick={() => {\n inputRef.current?.focus?.();\n if (!isDropdownOpen || isDropdownAutoOpen) {\n setIsDropdownOpen(true);\n }\n }}\n >\n <div\n className={twMerge(\n \"relative 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 `${hasIcon && \" pr-[20px]\"}`\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={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 onFocus={() => {\n if (!isDropdownOpen && (!isMulti || inputValue)) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={selectedList.length === 0 ? placeholder : \"\"}\n />\n )}\n <div\n className={`absolute transition-transform duration-200 ${\n !isDropdownOpen ? \"rotate-180\" : \"\"\n } ${hasIcon ? \"block\" : \"hidden\"} ${iconClass}`}\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\n {/* 4a. Render the dropdown menu *inside* the relative container if usePortal is false */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n !usePortal &&\n DropdownMenu}\n </div>\n\n {/* 4b. Render the dropdown menu in the portal if usePortal is true */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n usePortal &&\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 displayItemClass?: 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 displayItemClass = \"\",\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={twMerge(\n \"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n displayItemClass\n )}\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 usePortal?: boolean; // ✅ new prop added\n placeholderClass?: 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 usePortal = true, // ✅ default true\n placeholderClass = \"\",\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);\n const searchTimeoutRef = useRef<number | any | undefined>();\n const [_, setHoveredId] = useState<string | null>(null);\n\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 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 useLayoutEffect(() => {\n if (isOpen && dropdownRef.current && usePortal) {\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, usePortal]);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const DropdownMenu = (\n <div\n ref={portalRef}\n style={\n usePortal\n ? {\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n marginTop: \"4px\",\n width: \"100%\",\n zIndex: 99,\n }\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-[#757575]\"\n } ${placeholderClass}`}\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 &&\n !disabled &&\n (usePortal\n ? createPortal(DropdownMenu, document.body)\n : DropdownMenu)}\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, useEffect, useState } 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 const [showAll, setShowAll] = useState(hasAll); // 👈 local state\n\n // keep local state synced if parent changes hasAll prop\n useEffect(() => {\n setShowAll(hasAll);\n }, [hasAll]);\n\n const handleRemoveAll = (e: React.MouseEvent<SVGSVGElement>) => {\n e.stopPropagation();\n setShowAll(false);\n };\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 {showAll && 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 cursor-pointer hover:opacity-70\"\n onClick={handleRemoveAll}\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={(e) => {\n onChange(e);\n\n if (inputValue === \"\") {\n setShowAll(true);\n }\n }}\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 React, {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { twMerge } from \"tailwind-merge\";\n\n// --- Interfaces ---\nexport interface GroupedOptionItem {\n key: string;\n name: string;\n}\n\nexport interface GroupedOptions {\n title: string;\n options: GroupedOptionItem[];\n}\n\nexport interface GroupedCheckboxDropdownProps {\n label?: string;\n placeholder?: string;\n options: GroupedOptions[];\n selectedItems: string[];\n onToggle: (key: string) => void;\n onToggleAll: (shouldSelectAll: boolean) => void;\n selectAllLabel?: string;\n labelClass?: string;\n buttonClass?: string;\n dropdownClass?: string;\n selectedItemsClass?: string;\n removeIconClass?: string;\n usePortal?: boolean;\n hasIcon?: boolean;\n iconClass?: string;\n placeholderClass?: string;\n isTop?: boolean; // <-- ADDED\n}\n\n// --- Custom Checkbox ---\nconst CustomCheckbox: React.FC<{\n checked: boolean;\n indeterminate?: boolean;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n label: string;\n id: string;\n subText?: string;\n}> = ({\n checked,\n indeterminate = false,\n onChange,\n label,\n id,\n subText = \"\",\n}) => {\n const checkboxRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (checkboxRef.current) {\n checkboxRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div className=\"flex items-center px-[10px]\">\n <input\n id={id}\n ref={checkboxRef}\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n className=\"h-[12px] w-[12px] rounded border-gray-500 accent-[#426DC7] text-blue-600 focus:ring-blue-500\"\n />\n <label\n htmlFor={id}\n className=\"ml-2 text-[14px] text-gray-900 select-none tracking-[0.2px]\"\n >\n {label}\n <span className=\"text-[#545454] text-[14px] tracking-[0.2px]\">{` ${subText}`}</span>\n </label>\n </div>\n );\n};\n\n// --- Main Component ---\nconst GroupedCheckboxDropdown: React.FC<GroupedCheckboxDropdownProps> = ({\n label = \"\",\n options,\n selectedItems,\n onToggle,\n onToggleAll,\n selectAllLabel = \"(Please select at least one user from each custodian)\",\n labelClass = \"\",\n buttonClass = \"\",\n dropdownClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n usePortal = true,\n placeholder = \"Required\",\n hasIcon = true,\n iconClass = \"\",\n placeholderClass = \"\",\n isTop, // <-- ADDED (no default value)\n}) => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n // --- Click outside ---\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n const portalDropdown = document.querySelector(\".portal-dropdown-menu\");\n if (portalDropdown && portalDropdown.contains(event.target as Node)) {\n return;\n }\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n // Optional: close on Esc key\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, []);\n\n // --- Portal positioning ---\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current && usePortal) {\n const rect = containerRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const dropdownHeight = 300; // approximate height (you can tweak)\n\n // --- UPDATED LOGIC ---\n // Auto-detection: open upward if not enough space below AND enough space above\n const autoShouldOpenUpward =\n rect.bottom + dropdownHeight > viewportHeight &&\n rect.top - dropdownHeight > 0;\n\n // Override logic:\n // isTop === true: Force Up\n // isTop === false: Force Down\n // isTop === undefined: Use auto-detection\n const shouldOpenUpward =\n isTop === true ? true : isTop === false ? false : autoShouldOpenUpward;\n // --- END UPDATED LOGIC ---\n\n setDropdownPosition({\n top: shouldOpenUpward\n ? rect.top + window.scrollY - dropdownHeight - 4 // open upward\n : rect.bottom + window.scrollY + 4, // open downward\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isDropdownOpen, usePortal, isTop]); // <-- ADDED isTop dependency\n\n // --- Checkbox states ---\n const allOptionKeys = useMemo(\n () => options.flatMap((group) => group.options.map((opt) => opt.key)),\n [options]\n );\n\n const isAllSelected =\n allOptionKeys.length > 0 && allOptionKeys.length === selectedItems.length;\n const isIndeterminate =\n selectedItems.length > 0 && selectedItems.length < allOptionKeys.length;\n\n const handleToggleAll = () => {\n onToggleAll(!isAllSelected);\n };\n\n // --- Remove (chip close) handler ---\n const handleRemove = (key: string) => {\n onToggle(key);\n };\n\n // --- Dropdown Menu JSX ---\n const DropdownMenu = (\n <div\n style={\n usePortal\n ? {\n // --- UPDATED PORTAL STYLE ---\n position: \"absolute\",\n top: `${dropdownPosition.top}px`, // <-- REMOVED + 4\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n // --- UPDATED NON-PORTAL STYLE ---\n position: \"absolute\",\n ...(isTop // Check if isTop is true\n ? { bottom: \"100%\", marginBottom: \"4px\" } // Open upward\n : { top: \"100%\", marginTop: \"4px\" }), // Open downward (default)\n left: 0,\n width: \"100%\",\n zIndex: 99,\n }\n }\n className={twMerge(\n \"rounded-lg bg-white shadow-lg z-50 max-h-96 overflow-auto border border-gray-200 flex\",\n usePortal ? \"portal-dropdown-menu\" : \"\",\n dropdownClass\n )}\n onClick={(e) => e.stopPropagation()} // ✅ Prevent toggle when clicking inside\n >\n {/* ... (rest of the DropdownMenu JSX is unchanged) ... */}\n <div className=\"w-full py-4\">\n <div className=\"pb-2 border-b border-gray-200 mb-2\">\n <CustomCheckbox\n id=\"select-all\"\n label=\"Select All\"\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={handleToggleAll}\n subText={selectAllLabel}\n />\n </div>\n\n {/* Grouped Options */}\n <div className=\"space-y-2\">\n {options.map((group, k) => (\n <div\n key={group.title}\n className={`pb-2 mb-2 ${\n options.length - 1 === k ? \"\" : \"border-b border-gray-200\"\n }`}\n >\n <h3 className=\"text-sm font-semibold text-gray-900 mb-2 px-[10px]\">\n {group.title}\n </h3>\n <div className=\"space-y-2\">\n {group.options.map((option) => (\n <CustomCheckbox\n key={option.key}\n id={`option-${option.key}`}\n label={option.name}\n checked={selectedItems.includes(option.key)}\n onChange={() => onToggle(option.key)}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n <div className=\"w-[10px] h-full border-l border-gray-200\"></div>\n </div>\n );\n\n // --- Chip rendering ---\n const renderSelectedChips = () =>\n selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedItems.map((key) => {\n const option = options\n .flatMap((g) => g.options)\n .find((opt) => opt.key === key);\n return (\n <div\n key={key}\n className={twMerge(\n \"flex items-center border border-[#E2E2E2] px-2 py-1 bg-[#F5F7FE] text-gray-700 rounded-[4px] text-xs font-medium\",\n selectedItemsClass\n )}\n >\n {option ? option.name : key}\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(key);\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700 bg-none\",\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 </div>\n );\n })}\n </div>\n );\n\n return (\n <div>\n {/* Label */}\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-700 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n\n {/* Button / Container */}\n <div ref={containerRef} className=\"relative\">\n <div\n className={twMerge(\n \"relative 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 `${hasIcon && \" pr-[20px]\"}`\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownOpen((prev) => !prev);\n }}\n >\n {renderSelectedChips()}\n <span\n className={twMerge(\n \"block truncate text-gray-500\",\n placeholderClass\n )}\n >\n {selectedItems.length === 0 ? placeholder : \"\"}\n </span>\n <div\n className={`absolute top-[4px] right-[4px] transition-transform duration-200 ${\n !isDropdownOpen ? \"rotate-180\" : \"\"\n } ${hasIcon ? \"block\" : \"hidden\"} ${iconClass}`}\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\n {/* Non-Portal Dropdown */}\n {isDropdownOpen && !usePortal && DropdownMenu}\n </div>\n\n {/* Portal Dropdown */}\n {isDropdownOpen && usePortal && createPortal(DropdownMenu, document.body)}\n </div>\n );\n};\n\nexport default GroupedCheckboxDropdown;\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\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;\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 perPagesOptions?: number[];\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 perPagesOptions = [10, 20, 50, 100],\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 <div\n ref={tableSubDivRef}\n className={twMerge(\n `relative min-w-0 flex-1 ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n } flex flex-col bg-white `,\n tableSubDivClass\n )}\n >\n {/* Scrollable container with single table */}\n <div className=\"flex-grow overflow-y-auto\">\n <table\n ref={tableRef}\n className=\"min-w-full\"\n style={{ tableLayout: \"fixed\" }}\n >\n {/* Column width definitions */}\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.name}\n style={{ width: column.width || \"150px\" }}\n />\n ))}\n </colgroup>\n\n {/* Sticky header */}\n {!isDisableTableHeader && (\n <thead className=\"border-b-2 bg-white sticky top-0 z-10\">\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 ? \"pr-[24px]\" : \"\"\n }`}\n style={{\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 ?? 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\n {/* Table body */}\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => {\n const rowProps = tableRow ? tableRow(item, index) : {};\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={`${\n tableHeaderCustom?.px ?? \"px-1\"\n } py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all\n ${columnIndex === 0 ? \" pl-[24px] \" : \"\"} ${\n columnIndex === columns.length - 1\n ? \" pr-[24px] \"\n : \"\"\n }\n ${tableBodyDesign?.className ?? \"\"}\n `}\n style={{ minHeight: \"45px\" }}\n >\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 {/* No data and loading states */}\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto\">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-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 </div>\n\n {/* Pagination outside scrollable area */}\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 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 <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 <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 {perPagesOptions.map((v, i) => (\n <option key={i} value={v}>\n {v}\n </option>\n ))}\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 <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\n onClick={handleClose}\n aria-label=\"Close notification\"\n className=\"pr-2\"\n >\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\n onClick={handleClose}\n aria-label=\"Close notification\"\n className=\"pr-2\"\n >\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/graph/MultiBarGraph.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/inputs/GroupedCheckboxDropdown.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","BarElement","Bar","isValid","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: string[] | number[] | any;\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 min: 0,\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 \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: string[] | number[] | any;\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 /** Determines the default position of the tooltip. Defaults to 'top'. */\n tooltipPosition?: \"top\" | \"bottom\";\n svg?: string;\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\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 tooltipPosition = \"top\",\n svg = `<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 tab = \"Month\",\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 const formatLabel = (label: string) => {\n const date = new Date(label);\n\n switch (tab) {\n case \"Month\":\n return date.toLocaleString(\"en-US\", { month: \"long\", year: \"numeric\" });\n case \"Week\":\n // Determine week number\n const start = new Date(date.getFullYear(), 0, 1);\n const diff = (date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24);\n const weekNum = Math.ceil((diff + start.getDay() + 1) / 7);\n return `${date.toLocaleDateString(\"en-US\")} (W${weekNum - 1})`;\n case \"Day\":\n return `${date.toLocaleDateString(\"en-US\")}`;\n case \"Hourly\":\n return `${date.toLocaleDateString(\"en-US\")} ${date.toLocaleTimeString(\n \"en-US\",\n {\n hour: \"numeric\",\n minute: \"2-digit\",\n }\n )}`;\n default:\n return label;\n }\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 min: 0,\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 // Tooltip Element\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\n // Hide if no tooltip\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 dataPoints = tooltipModel.dataPoints || [];\n if (dataPoints.length === 0) {\n return;\n }\n\n // --- Tooltip Content ---\n const label = dataPoints[0]?.label;\n // Format it to \"Month Year\" (e.g., \"January 2024\")\n const formattedLabel = formatLabel(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}\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 .join(\"\");\n\n tooltipEl.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; z-index: 999;\">\n <div id=\"tooltip-arrow-border\"></div>\n <div id=\"tooltip-arrow\"></div>\n <div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${formattedLabel}</strong></p>\n ${dataPointsHtml}\n </div>\n </div>`;\n\n // --- Tooltip Position ---\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const position = context.chart.canvas.getBoundingClientRect();\n const pointX = position.left + window.scrollX + tooltipModel.caretX;\n const pointY = position.top + window.scrollY + tooltipModel.caretY;\n\n const arrowSize = 8;\n let isAbove = tooltipPosition === \"top\";\n let yPosition;\n\n const yTop = pointY - tooltipHeight - arrowSize - 5;\n const yBottom = pointY + arrowSize;\n\n if (isAbove) {\n // Prefer top, but switch to bottom if it's off-screen\n yPosition = yTop;\n if (yPosition < window.scrollY + 10) {\n yPosition = yBottom;\n isAbove = false;\n }\n } else {\n // Prefer bottom, but switch to top if it's off-screen\n yPosition = yBottom;\n if (\n yPosition + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ) {\n yPosition = yTop;\n isAbove = true;\n }\n }\n\n // Calculate X position\n let xPosition = pointX - tooltipWidth / 2;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n\n // --- Arrow Styling & Position ---\n const arrowBorder = tooltipEl.querySelector<HTMLElement>(\n \"#tooltip-arrow-border\"\n );\n const arrow =\n tooltipEl.querySelector<HTMLElement>(\"#tooltip-arrow\");\n if (arrow && arrowBorder) {\n const outerArrowSize = 6;\n const innerArrowSize = 5;\n\n // Common styles\n [arrow, arrowBorder].forEach((el) => {\n el.style.position = \"absolute\";\n el.style.left = \"50%\";\n el.style.transform = \"translateX(-50%)\";\n el.style.width = \"0\";\n el.style.height = \"0\";\n el.style.borderLeft = `${outerArrowSize}px solid transparent`;\n el.style.borderRight = `${outerArrowSize}px solid transparent`;\n });\n\n const arrowLeftOffset = pointX - xPosition;\n arrow.style.left = `${arrowLeftOffset}px`;\n arrowBorder.style.left = `${arrowLeftOffset}px`;\n\n if (isAbove) {\n arrowBorder.style.top = \"100%\";\n arrowBorder.style.borderTop = `${outerArrowSize}px solid rgba(16, 30, 115, 0.1)`;\n arrow.style.top = \"100%\";\n arrow.style.transform = \"translateX(-50%) translateY(-1px)\";\n arrow.style.borderTop = `${innerArrowSize}px solid white`;\n } else {\n arrowBorder.style.bottom = \"100%\";\n arrowBorder.style.borderBottom = `${outerArrowSize}px solid rgba(16, 30, 115, 0.1)`;\n arrow.style.bottom = \"100%\";\n arrow.style.transform = \"translateX(-50%) translateY(1px)\";\n arrow.style.borderBottom = `${innerArrowSize}px solid white`;\n }\n }\n\n // --- Final Styles ---\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 [tooltipPosition, svg, tab] // Add dependency here\n );\n\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 as any}\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 tooltipPosition?: \"top\" | \"bottom\";\n svg?: string;\n\n /** NEW — Determines label formatting logic */\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\n}\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 tooltipPosition = \"top\",\n svg = ` <svg width=\"10\" height=\"10\" viewBox=\"0 0 9 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"margin-right: 4px;\">\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>`,\n tab = \"Month\",\n}: SingleLineGraphProps) => {\n const chartRef = useRef(null);\n const [chartKey, setChartKey] = useState(`chart-${Date.now()}`);\n\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 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,\n min: 0,\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 // Tooltip Element\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\n // Hide if no tooltip\n const tooltipModel = context.tooltip;\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n tooltipEl.style.pointerEvents = \"none\"; // Make it non-interactive when hidden\n return;\n }\n\n // Set cursor\n context.chart.canvas.style.cursor = \"pointer\";\n\n const dataPoint = tooltipModel.dataPoints?.[0];\n if (!dataPoint) return;\n\n const value = dataPoint.parsed.y;\n const label = dataPoint.label;\n\n let tabType = tab;\n if (!tabType) {\n if (/^\\w+:\\s+\\w+\\s+\\d{4}$/i.test(label)) tabType = \"Month\";\n else if (/^Week:/i.test(label)) tabType = \"Week\";\n else if (/^\\d{2}\\/\\d{2}\\/\\d{2}$/i.test(label)) tabType = \"Day\";\n else if (/AM|PM/i.test(label)) tabType = \"Hourly\";\n else tabType = \"Month\";\n }\n\n // ✅ Format label based on detected tab type\n let formattedLabel = label;\n try {\n if (tabType === \"Month\") {\n const match = label.match(/([A-Za-z]+)\\s+(\\d{4})/);\n if (match) formattedLabel = `${match[1]} ${match[2]}`;\n } else if (tabType === \"Week\") {\n // Example: \"Week: 9/9/2025 Week(40)\" → \"9/9/2025 Week(39)\"\n const match = label.match(\n /(\\d{1,2}\\/\\d{1,2}\\/\\d{4})\\s*Week\\((\\d+)\\)/i\n );\n if (match) {\n const datePart = match[1];\n const weekNumber = parseInt(match[2], 10) - 1; // subtract 1\n formattedLabel = `${datePart} Week(${weekNumber})`;\n } else {\n formattedLabel = label.replace(/^Week:\\s*/i, \"\").trim();\n }\n } else if (tabType === \"Day\") {\n // Example: \"Day: 09/09/2025\" → \"09/09/2025\"\n formattedLabel = label.replace(/^Day:\\s*/i, \"\").trim();\n } else if (tabType === \"Hourly\") {\n // Example: \"Hourly: 8 AM\" → \"8 AM\"\n formattedLabel = label.replace(/^Hourly:\\s*/i, \"\").trim();\n }\n } catch {\n formattedLabel = label;\n }\n const arrowSize = 6;\n const innerArrowSize = 5;\n const isAbove = tooltipPosition === \"top\";\n\n const arrowBorderStyles = isAbove\n ? `top: 100%; border-top: ${arrowSize}px solid rgba(16, 30, 115, 0.1);`\n : `bottom: 100%; border-bottom: ${arrowSize}px solid rgba(16, 30, 115, 0.1);`;\n\n const arrowInnerStyles = isAbove\n ? `top: 100%; transform: translateX(-50%) translateY(-1px); border-top: ${innerArrowSize}px solid white;`\n : `bottom: 100%; transform: translateX(-50%) translateY(1px); border-bottom: ${innerArrowSize}px solid white;`;\n\n tooltipEl.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; z-index: 999; transition: opacity 0.2s ease;\">\n <div id=\"tooltip-arrow-border\" style=\"position: absolute; transform: translateX(-50%); width: 0; height: 0; border-left: ${arrowSize}px solid transparent; border-right: ${arrowSize}px solid transparent; ${arrowBorderStyles}\"></div>\n <div id=\"tooltip-arrow-inner\" style=\"position: absolute; width: 0; height: 0; border-left: ${innerArrowSize}px solid transparent; border-right: ${innerArrowSize}px solid transparent; ${arrowInnerStyles}\"></div>\n <div>\n <p style=\"color:#757575; margin: 0 0 4px 0;\"><strong>${formattedLabel}</strong></p>\n <span style=\"display: inline-flex; align-items: center; font-weight: bold; color: #757575;\">\n ${svg}\n ${labelPopupTitle}: <span style=\"color:#131414;\">&nbsp;${value}</span>\n </span>\n </div>\n </div>\n `;\n\n tooltipEl.style.opacity = \"0\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.pointerEvents = \"none\";\n\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\n let yPosition;\n let finalIsAbove = tooltipPosition === \"top\";\n const yTop = pointY - tooltipHeight - arrowSize - 5;\n const yBottom = pointY + arrowSize + 5;\n\n if (finalIsAbove) {\n yPosition = yTop;\n if (yPosition < window.scrollY + 10) {\n yPosition = yBottom;\n finalIsAbove = false;\n }\n } else {\n yPosition = yBottom;\n if (\n yPosition + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ) {\n yPosition = yTop;\n finalIsAbove = true;\n }\n }\n\n let xPosition = pointX - tooltipWidth / 2;\n if (xPosition < 10) {\n xPosition = 10;\n } else if (xPosition + tooltipWidth > window.innerWidth - 10) {\n xPosition = window.innerWidth - 10 - tooltipWidth;\n }\n\n let arrowLeftPercent = ((pointX - xPosition) / tooltipWidth) * 100;\n arrowLeftPercent = Math.max(5, Math.min(95, arrowLeftPercent));\n\n // FIX: Cast the results of querySelector to HTMLElement\n const arrowBorderEl = tooltipEl.querySelector(\n \"#tooltip-arrow-border\"\n ) as HTMLElement;\n const arrowInnerEl = tooltipEl.querySelector(\n \"#tooltip-arrow-inner\"\n ) as HTMLElement;\n\n if (arrowBorderEl && arrowInnerEl) {\n arrowBorderEl.style.left = `${arrowLeftPercent}%`;\n arrowInnerEl.style.left = `${arrowLeftPercent}%`;\n\n if (finalIsAbove !== isAbove) {\n if (finalIsAbove) {\n arrowBorderEl.style.top = \"100%\";\n arrowBorderEl.style.bottom = \"auto\";\n arrowBorderEl.style.borderTopColor = \"rgba(16, 30, 115, 0.1)\";\n arrowBorderEl.style.borderBottomColor = \"transparent\";\n arrowInnerEl.style.top = \"100%\";\n arrowInnerEl.style.bottom = \"auto\";\n arrowInnerEl.style.transform =\n \"translateX(-50%) translateY(-1px)\";\n arrowInnerEl.style.borderTopColor = \"white\";\n arrowInnerEl.style.borderBottomColor = \"transparent\";\n } else {\n arrowBorderEl.style.bottom = \"100%\";\n arrowBorderEl.style.top = \"auto\";\n arrowBorderEl.style.borderBottomColor =\n \"rgba(16, 30, 115, 0.1)\";\n arrowBorderEl.style.borderTopColor = \"transparent\";\n arrowInnerEl.style.bottom = \"100%\";\n arrowInnerEl.style.top = \"auto\";\n arrowInnerEl.style.transform =\n \"translateX(-50%) translateY(1px)\";\n arrowInnerEl.style.borderBottomColor = \"white\";\n arrowInnerEl.style.borderTopColor = \"transparent\";\n }\n }\n }\n\n tooltipEl.style.opacity = \"1\";\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 [tooltipPosition, labelPopupTitle, svg, tab]\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: label,\n datasets: [\n {\n label: labelPopupTitle,\n data: data,\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 [\n label,\n data,\n labelPopupTitle,\n lineColor,\n gradientColor0,\n gradientColor1,\n pointLabelColor,\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 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 );\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Line\n ref={chartRef}\n key={chartKey}\n options={options as any}\n data={lineData}\n plugins={[verticalHoverLine, dashedGridPlugin]}\n />\n </div>\n );\n};\nexport default SingleLineGraph;\n","import {\n BarElement,\n CategoryScale,\n Chart,\n Chart as ChartJS,\n Legend,\n LinearScale,\n Plugin,\n Title,\n Tooltip,\n} from \"chart.js\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport { Bar } from \"react-chartjs-2\";\nimport { twMerge } from \"tailwind-merge\";\n\n// --- Type Definitions ---\ninterface DataSet {\n data: number[];\n label: string;\n backgroundColor?: string;\n svgIcon?: string;\n}\n\ninterface MultiBarGraphProps {\n datasets: DataSet[];\n xAxisLabels: string[];\n className?: string;\n tooltipPosition?: \"top\" | \"bottom\";\n /** The maximum value for the Y-axis. Defaults to undefined, allowing Chart.js to auto-calculate. */\n yAxisMax?: number;\n tab?: \"Month\" | \"Week\" | \"Day\" | \"Hourly\" | null;\n}\n\n// --- Chart.js Registration ---\nChartJS.register(\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n);\n\n// --- Component Definition ---\nconst MultiBarGraph = ({\n datasets,\n xAxisLabels,\n className = \"\",\n tooltipPosition = \"top\",\n yAxisMax, // CHANGED: Added yAxisMax prop\n tab = \"Month\",\n}: MultiBarGraphProps) => {\n const chartRef = useRef(null);\n\n // REMOVED: The chartKey state and resize useEffect are no longer needed.\n // Chart.js's `responsive: true` handles resizing efficiently.\n\n const defaultColors = [\n \"#58508d\",\n \"#bc5090\",\n \"#ff6361\",\n \"#ffa600\",\n \"#003f5c\",\n \"#488f31\",\n ];\n\n const getDefaultSvgIcon = () => `\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_5485_36311)\"><path d=\"M7.00033 1.16602C3.78033 1.16602 1.16699 3.77935 1.16699 6.99935C1.16699 10.2193 3.78033 12.8327 7.00033 12.8327C10.2203 12.8327 12.8337 10.2193 12.8337 6.99935C12.8337 3.77935 10.2203 1.16602 7.00033 1.16602ZM7.00033 11.666C4.42783 11.666 2.33366 9.57185 2.33366 6.99935C2.33366 4.42685 4.42783 2.33268 7.00033 2.33268C9.57283 2.33268 11.667 4.42685 11.667 6.99935C11.667 9.57185 9.57283 11.666 7.00033 11.666ZM9.67782 4.42102L5.83366 8.26518L4.32283 6.76018L3.50033 7.58268L5.83366 9.91602L10.5003 5.24935L9.67782 4.42102Z\" fill=\"#003f5c\"/></g>\n <defs><clipPath id=\"clip0_5485_36311\"><rect width=\"14\" height=\"14\" fill=\"white\"/></clipPath></defs>\n </svg>\n `;\n\n // ADDED: useEffect for tooltip cleanup to prevent memory leaks.\n useEffect(() => {\n // Return a cleanup function that will run when the component unmounts.\n return () => {\n const tooltipEl = document.getElementById(\"chartjs-tooltip\");\n if (tooltipEl) {\n tooltipEl.remove();\n }\n };\n }, []);\n\n const options = useMemo(\n () => ({\n responsive: true,\n maintainAspectRatio: false,\n animation: { duration: 100, easing: \"easeOutQuad\" },\n scales: {\n x: { stacked: true, grid: { drawOnChartArea: false } },\n y: {\n stacked: true,\n min: 0,\n max: yAxisMax, // CHANGED: Use the dynamic yAxisMax prop\n border: { display: false },\n grid: { drawOnChartArea: false },\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 document.body.appendChild(tooltipEl);\n }\n\n const tooltipModel = context.tooltip;\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = \"0\";\n return;\n }\n\n const hoveredPoint = tooltipModel.dataPoints[0];\n if (!hoveredPoint) return;\n\n const label = hoveredPoint.label;\n const segmentValue = hoveredPoint.raw;\n const segmentLabel = hoveredPoint.dataset.label || \"\";\n const customSvgIcon = hoveredPoint.dataset.svgIcon;\n\n const totalBarValue = context.chart.data.datasets.reduce(\n (sum: number, dataset: any) =>\n sum + (dataset.data[hoveredPoint.dataIndex] || 0),\n 0\n );\n\n // Format it to \"Month Year\" (e.g., \"January 2024\")\n // --- 🔹 Unified label formatter (same as SingleLineGraph) ---\n let tabType = tab;\n if (!tabType) {\n if (/^\\w+:\\s+\\w+\\s+\\d{4}$/i.test(label)) tabType = \"Month\";\n else if (/^Week:/i.test(label)) tabType = \"Week\";\n else if (/^\\d{2}\\/\\d{2}\\/\\d{2}$/i.test(label)) tabType = \"Day\";\n else if (/AM|PM/i.test(label)) tabType = \"Hourly\";\n else tabType = \"Month\";\n }\n\n let formattedLabel = label;\n try {\n if (tabType === \"Month\") {\n const match = label.match(/([A-Za-z]+)\\s+(\\d{4})/);\n if (match) formattedLabel = `${match[1]} ${match[2]}`;\n } else if (tabType === \"Week\") {\n // Example: \"Week: 9/9/2025 Week(40)\" → \"9/9/2025 Week(39)\"\n const match = label.match(\n /(\\d{1,2}\\/\\d{1,2}\\/\\d{4})\\s*Week\\((\\d+)\\)/i\n );\n if (match) {\n const datePart = match[1];\n const weekNumber = parseInt(match[2], 10) - 1; // subtract 1\n formattedLabel = `${datePart} Week(${weekNumber})`;\n } else {\n formattedLabel = label.replace(/^Week:\\s*/i, \"\").trim();\n }\n } else if (tabType === \"Day\") {\n // Example: \"Day: 09/09/2025\" → \"09/09/2025\"\n formattedLabel = label.replace(/^Day:\\s*/i, \"\").trim();\n } else if (tabType === \"Hourly\") {\n // Example: \"Hourly: 8 AM\" → \"8 AM\"\n formattedLabel = label.replace(/^Hourly:\\s*/i, \"\").trim();\n }\n } catch {\n formattedLabel = label;\n }\n\n const percentage =\n totalBarValue > 0\n ? ((segmentValue / totalBarValue) * 100).toFixed(2)\n : 0;\n\n const iconHtml = customSvgIcon || getDefaultSvgIcon();\n\n tooltipEl.innerHTML = `\n <div style=\"position: relative; background: white; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); padding: 10px; font-size: 12px; z-index: 999;\">\n <div id=\"tooltip-arrow\" style=\"position: absolute; width: 0; height: 0;\"></div>\n <p style=\"color:#757575; margin: 0 0 8px 0;\"><strong>${formattedLabel}</strong></p>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${iconHtml}\n <span style=\"font-weight: bold; color: #757575;\">\n ${segmentLabel}: <span style=\"color:#131414;\">${segmentValue} (${percentage}%)</span>\n </span>\n </div>\n </div>`;\n\n const position = context.chart.canvas.getBoundingClientRect();\n const tooltipWidth = tooltipEl.offsetWidth;\n const tooltipHeight = tooltipEl.offsetHeight;\n const arrowSize = 6;\n let isAbove = tooltipPosition === \"top\";\n\n const yTop =\n position.top +\n window.scrollY +\n hoveredPoint.element.y -\n tooltipHeight -\n arrowSize -\n 5;\n const yBottom =\n position.top +\n window.scrollY +\n hoveredPoint.element.y +\n arrowSize +\n 5;\n let yPosition;\n\n if (isAbove) {\n yPosition = yTop < window.scrollY + 10 ? yBottom : yTop;\n } else {\n yPosition =\n yBottom + tooltipHeight >\n window.innerHeight + window.scrollY - 10\n ? yTop\n : yBottom;\n }\n isAbove = yPosition === yTop;\n\n let xPosition =\n position.left +\n window.scrollX +\n hoveredPoint.element.x -\n tooltipWidth / 2;\n xPosition = Math.max(\n 10,\n Math.min(xPosition, window.innerWidth - 10 - tooltipWidth)\n );\n\n const arrowEl =\n tooltipEl.querySelector<HTMLElement>(\"#tooltip-arrow\");\n if (arrowEl) {\n Object.assign(arrowEl.style, {\n top: isAbove ? \"100%\" : \"auto\",\n bottom: isAbove ? \"auto\" : \"100%\",\n borderTop: isAbove ? `${arrowSize}px solid white` : \"none\",\n borderBottom: isAbove ? \"none\" : `${arrowSize}px solid white`,\n borderLeft: `${arrowSize}px solid transparent`,\n borderRight: `${arrowSize}px solid transparent`,\n left: `${\n position.left +\n window.scrollX +\n hoveredPoint.element.x -\n xPosition -\n arrowSize\n }px`,\n });\n }\n\n Object.assign(tooltipEl.style, {\n opacity: \"1\",\n position: \"absolute\",\n left: `${xPosition}px`,\n top: `${yPosition}px`,\n pointerEvents: \"none\",\n });\n },\n },\n },\n interaction: {\n intersect: true,\n mode: \"nearest\" as const,\n },\n }),\n [tooltipPosition, yAxisMax, datasets, tab] // CHANGED: Added datasets and yAxisMax for safety\n );\n\n const dashedGridPlugin: Plugin<\"bar\"> = useMemo(\n () => ({\n id: \"customDashedGrid\",\n beforeDatasetsDraw(chart: Chart) {\n const {\n ctx,\n chartArea: { left, right },\n scales: { y: yAxis },\n } = chart;\n if (!yAxis) 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 yAxis.ticks.forEach((tick, index) => {\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\n ctx.restore();\n },\n }),\n []\n );\n\n const barData = useMemo(\n () => ({\n labels: xAxisLabels,\n datasets: datasets.map((dataset, index) => ({\n ...dataset,\n backgroundColor:\n dataset.backgroundColor ||\n defaultColors[index % defaultColors.length],\n })),\n }),\n [datasets, xAxisLabels]\n );\n\n return (\n <div className={twMerge(\"w-full h-full\", className)}>\n <Bar\n ref={chartRef}\n // REMOVED: key prop is no longer needed for resizing\n options={options as any}\n data={barData}\n plugins={[dashedGridPlugin]}\n />\n </div>\n );\n};\n\nexport default MultiBarGraph;\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 labelClass?: 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 labelClass,\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\n className={twMerge(\n labelColor,\n \"text-[14px] font-semibold mb-1\",\n labelClass\n )}\n >\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\n// interface 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: any = {} // Updated to handle more options\n) => {\n const {\n enableYearRange = true,\n yearsBack = 1,\n allowFutureDates = false,\n hasLimit = false, // New: To check if date range limit should be applied\n startDate = null, // New: The selected start date for range comparison\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), 10);\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), 10);\n const day = parseInt(digits.slice(2, 4), 10);\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 (General, from today)\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), 10);\n\n if (inputYear < minYear || inputYear > currentYear) {\n digits = digits.slice(0, 4);\n }\n }\n\n // Validate complete date against future dates\n if (!allowFutureDates && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n\n const inputDate = new Date(year, month - 1, day);\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n\n if (inputDate > today) {\n digits = digits.slice(0, 4);\n }\n }\n\n // New: Validate date range limit against a start date\n if (!hasLimit && startDate && digits.length === 8) {\n const month = parseInt(digits.slice(0, 2), 10);\n const day = parseInt(digits.slice(2, 4), 10);\n const year = parseInt(digits.slice(4, 8), 10);\n const inputDate = new Date(year, month - 1, day);\n\n const maxRangeDate = new Date(startDate);\n maxRangeDate.setFullYear(maxRangeDate.getFullYear() + yearsBack);\n\n // If the entered date is beyond the allowed range, truncate the input\n if (inputDate > maxRangeDate) {\n digits = digits.slice(0, 7);\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};\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 hasLimit?: boolean; // New prop to control the date range limit\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 hasLimit = false, // Default to false to maintain the 1-year limit\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 now = new Date();\n now.setHours(0, 0, 0, 0); // Normalize to the start of the day\n\n // endOfLastWeek is the most recent Saturday.\n // We subtract the current day of the week (Sun=0, Mon=1...) + 1 day.\n // Example: If today is Tuesday (day 2), we go back 2+1=3 days to get to Saturday.\n const endOfLastWeek = new Date(now);\n endOfLastWeek.setDate(now.getDate() - (now.getDay() + 1));\n\n // startOfLastWeek is 6 days before the end of last week (the previous Sunday).\n const startOfLastWeek = new Date(endOfLastWeek);\n startOfLastWeek.setDate(endOfLastWeek.getDate() - 6);\n\n return { start: startOfLastWeek, end: endOfLastWeek };\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 baseDate.setHours(23, 59, 59, 999);\n\n if (date < baseDate) return true;\n\n // Apply the 1-year max range limit only if hasLimit is false\n if (!hasLimit) {\n const maxDate = new Date(startDate);\n maxDate.setFullYear(maxDate.getFullYear() + yearsBack);\n maxDate.setHours(0, 0, 0, 0);\n if (date > maxDate) return true;\n }\n\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 // Apply the 1-year max range limit only if hasLimit is false\n if (!hasLimit) {\n const maxDate = new Date(startDate);\n maxDate.setFullYear(maxDate.getFullYear() + yearsBack);\n maxDate.setHours(0, 0, 0, 0);\n if (date > maxDate) return true;\n }\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 {hasLimit\n ? \"Custom Range\"\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 hasLimit,\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 hasLimit,\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 usePortal?: boolean; // ✅ Added usePortal prop\n inputClass?: string;\n placeholder?: string;\n hasIcon?: boolean;\n iconClass?: 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 inputClass = \"\",\n dropdownOpenClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n usePortal = true, // ✅ Destructured prop with default true\n placeholder = \"Type or select...\",\n hasIcon = false,\n iconClass = \"\",\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 both the container and any potential portal element\n // Note: A more robust portal check might involve a ref on the dropdown itself\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n // Simple check to see if the click was on *any* portal-rendered dropdown\n // A better approach might involve passing the portal ref, but this works for this case\n const portalDropdown = document.querySelector(\".portal-dropdown-menu\");\n if (portalDropdown && portalDropdown.contains(event.target as Node)) {\n return;\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 }, [\n inputValue,\n options,\n selectedItems,\n isDropdownAutoOpen,\n isMulti,\n enableTypingSingle,\n selectedList,\n ]);\n\n // 2. Calculate the position only if using portal\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current && usePortal) {\n // ✅ Conditional calculation\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, usePortal]); // ✅ Added usePortal to dependency array\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 with conditional styling\n const DropdownMenu = (\n <div\n style={\n usePortal // ✅ Conditional styling\n ? {\n // Portal style\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n // Non-portal (relative) style\n position: \"absolute\",\n top: \"100%\", // Position relative to the parent\n left: 0,\n marginTop: \"4px\", // Add a small gap\n width: \"100%\",\n zIndex: 99,\n }\n }\n className={twMerge(\n \"rounded-lg bg-white shadow-lg z-50 max-h-60 overflow-auto border border-[#E2E2E2]\",\n usePortal ? \"portal-dropdown-menu\" : \"\", // Added class for click-outside check\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\" // This 'relative' is crucial for non-portal positioning\n onClick={() => {\n inputRef.current?.focus?.();\n if (!isDropdownOpen || isDropdownAutoOpen) {\n setIsDropdownOpen(true);\n }\n }}\n >\n <div\n className={twMerge(\n \"relative 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 `${hasIcon && \" pr-[20px]\"}`\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={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 onFocus={() => {\n if (!isDropdownOpen && (!isMulti || inputValue)) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={selectedList.length === 0 ? placeholder : \"\"}\n />\n )}\n <div\n className={`absolute transition-transform duration-200 ${\n !isDropdownOpen ? \"rotate-180\" : \"\"\n } ${hasIcon ? \"block\" : \"hidden\"} ${iconClass}`}\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\n {/* 4a. Render the dropdown menu *inside* the relative container if usePortal is false */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n !usePortal &&\n DropdownMenu}\n </div>\n\n {/* 4b. Render the dropdown menu in the portal if usePortal is true */}\n {isDropdownOpen &&\n filteredOptions.length > 0 &&\n usePortal &&\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 displayItemClass?: 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 displayItemClass = \"\",\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={twMerge(\n \"flex border-custom-gray items-center px-2 py-1 bg-white text-gray-700 rounded-md text-xs font-medium\",\n displayItemClass\n )}\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 usePortal?: boolean; // ✅ new prop added\n placeholderClass?: 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 usePortal = true, // ✅ default true\n placeholderClass = \"\",\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);\n const searchTimeoutRef = useRef<number | any | undefined>();\n const [_, setHoveredId] = useState<string | null>(null);\n\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 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 useLayoutEffect(() => {\n if (isOpen && dropdownRef.current && usePortal) {\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, usePortal]);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const DropdownMenu = (\n <div\n ref={portalRef}\n style={\n usePortal\n ? {\n position: \"absolute\",\n top: `${dropdownPosition.top + 4}px`,\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n marginTop: \"4px\",\n width: \"100%\",\n zIndex: 99,\n }\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-[#757575]\"\n } ${placeholderClass}`}\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 &&\n !disabled &&\n (usePortal\n ? createPortal(DropdownMenu, document.body)\n : DropdownMenu)}\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, useEffect, useState } 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 const [showAll, setShowAll] = useState(hasAll); // 👈 local state\n\n // keep local state synced if parent changes hasAll prop\n useEffect(() => {\n setShowAll(hasAll);\n }, [hasAll]);\n\n const handleRemoveAll = (e: React.MouseEvent<SVGSVGElement>) => {\n e.stopPropagation();\n setShowAll(false);\n };\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 {showAll && 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 cursor-pointer hover:opacity-70\"\n onClick={handleRemoveAll}\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={(e) => {\n onChange(e);\n\n if (inputValue === \"\") {\n setShowAll(true);\n }\n }}\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 React, {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { twMerge } from \"tailwind-merge\";\n\n// --- Interfaces ---\nexport interface GroupedOptionItem {\n key: string;\n name: string;\n}\n\nexport interface GroupedOptions {\n title: string;\n options: GroupedOptionItem[];\n}\n\nexport interface GroupedCheckboxDropdownProps {\n label?: string;\n placeholder?: string;\n options: GroupedOptions[];\n selectedItems: string[];\n onToggle: (key: string) => void;\n onToggleAll: (shouldSelectAll: boolean) => void;\n selectAllLabel?: string;\n labelClass?: string;\n buttonClass?: string;\n dropdownClass?: string;\n selectedItemsClass?: string;\n removeIconClass?: string;\n usePortal?: boolean;\n hasIcon?: boolean;\n iconClass?: string;\n placeholderClass?: string;\n isTop?: boolean; // <-- ADDED\n}\n\n// --- Custom Checkbox ---\nconst CustomCheckbox: React.FC<{\n checked: boolean;\n indeterminate?: boolean;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n label: string;\n id: string;\n subText?: string;\n}> = ({\n checked,\n indeterminate = false,\n onChange,\n label,\n id,\n subText = \"\",\n}) => {\n const checkboxRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (checkboxRef.current) {\n checkboxRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div className=\"flex items-center px-[10px]\">\n <input\n id={id}\n ref={checkboxRef}\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n className=\"h-[12px] w-[12px] rounded border-gray-500 accent-[#426DC7] text-blue-600 focus:ring-blue-500\"\n />\n <label\n htmlFor={id}\n className=\"ml-2 text-[14px] text-gray-900 select-none tracking-[0.2px]\"\n >\n {label}\n <span className=\"text-[#545454] text-[14px] tracking-[0.2px]\">{` ${subText}`}</span>\n </label>\n </div>\n );\n};\n\n// --- Main Component ---\nconst GroupedCheckboxDropdown: React.FC<GroupedCheckboxDropdownProps> = ({\n label = \"\",\n options,\n selectedItems,\n onToggle,\n onToggleAll,\n selectAllLabel = \"(Please select at least one user from each custodian)\",\n labelClass = \"\",\n buttonClass = \"\",\n dropdownClass = \"\",\n selectedItemsClass = \"\",\n removeIconClass = \"\",\n usePortal = true,\n placeholder = \"Required\",\n hasIcon = true,\n iconClass = \"\",\n placeholderClass = \"\",\n isTop, // <-- ADDED (no default value)\n}) => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n // --- Click outside ---\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n const portalDropdown = document.querySelector(\".portal-dropdown-menu\");\n if (portalDropdown && portalDropdown.contains(event.target as Node)) {\n return;\n }\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n // Optional: close on Esc key\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, []);\n\n // --- Portal positioning ---\n useLayoutEffect(() => {\n if (isDropdownOpen && containerRef.current && usePortal) {\n const rect = containerRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const dropdownHeight = 300; // approximate height (you can tweak)\n\n // --- UPDATED LOGIC ---\n // Auto-detection: open upward if not enough space below AND enough space above\n const autoShouldOpenUpward =\n rect.bottom + dropdownHeight > viewportHeight &&\n rect.top - dropdownHeight > 0;\n\n // Override logic:\n // isTop === true: Force Up\n // isTop === false: Force Down\n // isTop === undefined: Use auto-detection\n const shouldOpenUpward =\n isTop === true ? true : isTop === false ? false : autoShouldOpenUpward;\n // --- END UPDATED LOGIC ---\n\n setDropdownPosition({\n top: shouldOpenUpward\n ? rect.top + window.scrollY - dropdownHeight - 4 // open upward\n : rect.bottom + window.scrollY + 4, // open downward\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isDropdownOpen, usePortal, isTop]); // <-- ADDED isTop dependency\n\n // --- Checkbox states ---\n const allOptionKeys = useMemo(\n () => options.flatMap((group) => group.options.map((opt) => opt.key)),\n [options]\n );\n\n const isAllSelected =\n allOptionKeys.length > 0 && allOptionKeys.length === selectedItems.length;\n const isIndeterminate =\n selectedItems.length > 0 && selectedItems.length < allOptionKeys.length;\n\n const handleToggleAll = () => {\n onToggleAll(!isAllSelected);\n };\n\n // --- Remove (chip close) handler ---\n const handleRemove = (key: string) => {\n onToggle(key);\n };\n\n // --- Dropdown Menu JSX ---\n const DropdownMenu = (\n <div\n style={\n usePortal\n ? {\n // --- UPDATED PORTAL STYLE ---\n position: \"absolute\",\n top: `${dropdownPosition.top}px`, // <-- REMOVED + 4\n left: `${dropdownPosition.left}px`,\n width: `${dropdownPosition.width}px`,\n }\n : {\n // --- UPDATED NON-PORTAL STYLE ---\n position: \"absolute\",\n ...(isTop // Check if isTop is true\n ? { bottom: \"100%\", marginBottom: \"4px\" } // Open upward\n : { top: \"100%\", marginTop: \"4px\" }), // Open downward (default)\n left: 0,\n width: \"100%\",\n zIndex: 99,\n }\n }\n className={twMerge(\n \"rounded-lg bg-white shadow-lg z-50 max-h-96 overflow-auto border border-gray-200 flex\",\n usePortal ? \"portal-dropdown-menu\" : \"\",\n dropdownClass\n )}\n onClick={(e) => e.stopPropagation()} // ✅ Prevent toggle when clicking inside\n >\n {/* ... (rest of the DropdownMenu JSX is unchanged) ... */}\n <div className=\"w-full py-4\">\n <div className=\"pb-2 border-b border-gray-200 mb-2\">\n <CustomCheckbox\n id=\"select-all\"\n label=\"Select All\"\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={handleToggleAll}\n subText={selectAllLabel}\n />\n </div>\n\n {/* Grouped Options */}\n <div className=\"space-y-2\">\n {options.map((group, k) => (\n <div\n key={group.title}\n className={`pb-2 mb-2 ${\n options.length - 1 === k ? \"\" : \"border-b border-gray-200\"\n }`}\n >\n <h3 className=\"text-sm font-semibold text-gray-900 mb-2 px-[10px]\">\n {group.title}\n </h3>\n <div className=\"space-y-2\">\n {group.options.map((option) => (\n <CustomCheckbox\n key={option.key}\n id={`option-${option.key}`}\n label={option.name}\n checked={selectedItems.includes(option.key)}\n onChange={() => onToggle(option.key)}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n <div className=\"w-[10px] h-full border-l border-gray-200\"></div>\n </div>\n );\n\n // --- Chip rendering ---\n const renderSelectedChips = () =>\n selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedItems.map((key) => {\n const option = options\n .flatMap((g) => g.options)\n .find((opt) => opt.key === key);\n return (\n <div\n key={key}\n className={twMerge(\n \"flex items-center border border-[#E2E2E2] px-2 py-1 bg-[#F5F7FE] text-gray-700 rounded-[4px] text-xs font-medium\",\n selectedItemsClass\n )}\n >\n {option ? option.name : key}\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(key);\n }}\n className={twMerge(\n \"ml-1 text-gray-500 hover:text-gray-700 bg-none\",\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 </div>\n );\n })}\n </div>\n );\n\n return (\n <div>\n {/* Label */}\n <label\n className={twMerge(\n \"block text-sm font-medium text-gray-700 mb-1\",\n labelClass\n )}\n >\n {label}\n </label>\n\n {/* Button / Container */}\n <div ref={containerRef} className=\"relative\">\n <div\n className={twMerge(\n \"relative 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 `${hasIcon && \" pr-[20px]\"}`\n )}\n onClick={(e) => {\n e.stopPropagation();\n setIsDropdownOpen((prev) => !prev);\n }}\n >\n {renderSelectedChips()}\n <span\n className={twMerge(\n \"block truncate text-gray-500\",\n placeholderClass\n )}\n >\n {selectedItems.length === 0 ? placeholder : \"\"}\n </span>\n <div\n className={`absolute top-[4px] right-[4px] transition-transform duration-200 ${\n !isDropdownOpen ? \"rotate-180\" : \"\"\n } ${hasIcon ? \"block\" : \"hidden\"} ${iconClass}`}\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\n {/* Non-Portal Dropdown */}\n {isDropdownOpen && !usePortal && DropdownMenu}\n </div>\n\n {/* Portal Dropdown */}\n {isDropdownOpen && usePortal && createPortal(DropdownMenu, document.body)}\n </div>\n );\n};\n\nexport default GroupedCheckboxDropdown;\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\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;\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 perPagesOptions?: number[];\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 perPagesOptions = [10, 20, 50, 100],\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 <div\n ref={tableSubDivRef}\n className={twMerge(\n `relative min-w-0 flex-1 ${\n !hasPagination && \" rounded-br-[8px] rounded-bl-[8px] \"\n } flex flex-col bg-white `,\n tableSubDivClass\n )}\n >\n {/* Scrollable container with single table */}\n <div className=\"flex-grow overflow-y-auto\">\n <table\n ref={tableRef}\n className=\"min-w-full\"\n style={{ tableLayout: \"fixed\" }}\n >\n {/* Column width definitions */}\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.name}\n style={{ width: column.width || \"150px\" }}\n />\n ))}\n </colgroup>\n\n {/* Sticky header */}\n {!isDisableTableHeader && (\n <thead className=\"border-b-2 bg-white sticky top-0 z-10\">\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 ? \"pr-[24px]\" : \"\"\n }`}\n style={{\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 ?? 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\n {/* Table body */}\n {!isLoading && (\n <tbody className=\"bg-white divide-y divide-gray-200\">\n {tableData.map((item, index) => {\n const rowProps = tableRow ? tableRow(item, index) : {};\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={`${\n tableHeaderCustom?.px ?? \"px-1\"\n } py-[5px] whitespace-normal text-[12px] font-normal items-center text-[#131414] break-all\n ${columnIndex === 0 ? \" pl-[24px] \" : \"\"} ${\n columnIndex === columns.length - 1\n ? \" pr-[24px] \"\n : \"\"\n }\n ${tableBodyDesign?.className ?? \"\"}\n `}\n style={{ minHeight: \"45px\" }}\n >\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 {/* No data and loading states */}\n {(isError || tableData.length === 0) && !isLoading && (\n <div className=\"container mx-auto\">\n <NoDataComponent />\n </div>\n )}\n {isLoading && (\n <div\n className=\"container mx-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 </div>\n\n {/* Pagination outside scrollable area */}\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 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 <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 <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 {perPagesOptions.map((v, i) => (\n <option key={i} value={v}>\n {v}\n </option>\n ))}\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 <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\n onClick={handleClose}\n aria-label=\"Close notification\"\n className=\"pr-2\"\n >\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\n onClick={handleClose}\n aria-label=\"Close notification\"\n className=\"pr-2\"\n >\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"]}