@sustaina/shared-ui 1.18.0 → 1.20.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/common.ts","../src/utils/filters.ts","../src/utils/date.ts","../src/utils/cn.ts","../src/components/icons/arrow.tsx","../src/components/icons/calendar.tsx","../src/components/icons/check.tsx","../src/components/icons/dots-vertical.tsx","../src/components/icons/empty-data.tsx","../src/components/icons/expand.tsx","../src/components/icons/filter.tsx","../src/components/icons/not-found.tsx","../src/components/icons/setting.tsx","../src/components/icons/triangle-down.tsx","../src/components/icons/warning.tsx","../src/components/ui/accordion.tsx","../src/components/advanceSearch/components/conditions/ExpandCollapse.tsx","../src/components/advanceSearch/operatorMap.ts","../src/components/advanceSearch/hooks/useAdvanceSearch.ts","../src/components/ui/select.tsx","../src/components/advanceSearch/components/conditions/FieldSelect.tsx","../src/components/advanceSearch/types.ts","../src/components/advanceSearch/components/conditions/OperatorSelect.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/spinner.tsx","../src/components/ui/input.tsx","../src/components/ui/ClearButton.tsx","../src/components/advanceSearch/components/conditions/types/ConditionTextInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionNumberInput.tsx","../src/components/ui/button.tsx","../src/components/ui/popover.tsx","../src/components/ui/datepicker.tsx","../src/components/datePicker/DatePicker.tsx","../src/components/advanceSearch/components/constants/index.ts","../src/components/advanceSearch/components/conditions/types/ConditionDateInput.tsx","../src/components/ui/monthpicker.tsx","../src/components/monthPicker/MonthPicker.tsx","../src/components/advanceSearch/components/conditions/types/ConditionMonthInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionDropdownInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionCheckboxInput.tsx","../src/components/lookupSelect/LookupSelect.tsx","../src/components/advanceSearch/components/conditions/types/ConditionLookupInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionJSONInput.tsx","../src/components/advanceSearch/components/conditions/ConditionValue.tsx","../src/components/advanceSearch/components/conditions/AddRemoveButtons.tsx","../src/components/advanceSearch/components/conditions/AdvanceSearchRow.tsx","../src/components/advanceSearch/builder/checkbox.ts","../src/components/advanceSearch/builder/helper.ts","../src/components/advanceSearch/builder/datetime.ts","../src/components/advanceSearch/builder/datemonth.ts","../src/components/advanceSearch/builder/dropdown.ts","../src/components/advanceSearch/builder/json.ts","../src/components/advanceSearch/builder/lookup.ts","../src/components/advanceSearch/builder/number.ts","../src/components/advanceSearch/builder/text.ts","../src/components/advanceSearch/builder/uuid.ts","../src/components/advanceSearch/builder/index.ts","../src/components/advanceSearch/components/AdvanceSearch.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/data-table/sortingFns.ts","../src/components/data-table/utils.tsx","../src/hooks/useHover/useHover.ts","../src/hooks/useIntersectionObserver/useIntersectionObserver.ts","../src/hooks/useMediaQuery/useMediaQuery.ts","../src/hooks/useScreenSize/useScreenSize.ts","../src/hooks/useTruncated/useTruncated.ts","../src/components/data-table/cells/HeaderCell.tsx","../src/components/ui/table.tsx","../src/components/data-table/ColumnResizer.tsx","../src/components/data-table/ColumnSeparator.tsx","../src/components/data-table/StatusContentSlot.tsx","../src/components/data-table/DataTableDevTool.tsx","../src/components/data-table/helpers.ts","../src/components/data-table/DataTable.tsx","../src/components/ui/dialog.tsx","../src/components/dialog-alert/lib/utils.ts","../src/components/dialog-alert/components/ui/dialog.tsx","../src/components/dialog-alert/components/ui/button.tsx","../src/components/dialog-alert/lib/constants.ts","../src/components/dialog-alert/locale/default.ts","../src/components/dialog-alert/locale/i18n.ts","../src/components/dialog-alert/DialogAlert.tsx","../src/components/dialog-alert/templates/index.ts","../src/components/dialog-alert/hooks/DialogAlertStore.tsx","../src/components/tooltip/tooltip.tsx","../src/components/grid-settings/SortableRow.tsx","../src/components/grid-settings/schema.tsx","../src/components/grid-settings/GridSettingsModal.tsx","../src/components/grid-settings/store/useGridSettingsStore.ts","../src/components/ui/LoadingOverlay.tsx","../src/components/image/image.tsx","../src/components/list/components/table.tsx","../src/components/list/components/container.tsx","../src/components/list/components/header.tsx","../src/components/list/List.tsx","../src/assets/icon/InfoIcon.tsx","../src/components/navbar/navbar.tsx","../src/components/ui/sheet.tsx","../src/components/prevent-page-leave/store/usePreventPageLeaveStore.ts","../src/components/prevent-page-leave/PreventPageLeave.tsx","../src/components/prevent-page-leave/hooks/usePreventPageLeave.ts","../src/components/ui/radio.tsx","../src/components/ui/ImageNode.tsx","../src/components/ui/richtext.tsx","../src/components/ui/separator.tsx","../src/hooks/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/index.ts","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/cropperModal/type.ts","../src/components/cropperModal/helper.ts","../src/components/cropperModal/cropperModal.tsx","../src/components/truncated/truncated.tsx"],"names":["format","jsx","jsxs","clsx","useState","React","Label","React2","React3","cva","Fragment","CircleX","X","Slot","ChevronRight","DatePicker","placeholder","React6","ChevronLeft","normalizeMonth","isValid","defaultDisplayFormatter","defaultValueFormatter","defaultValueParser","parseISO","MonthPicker","CalendarIcon","useCallback","useMemo","useEffect","createPortal","useFormContext","Search","CheckIcon","CollapsibleTrigger","CollapsibleContent","useRef","threshold","isSomeColumnsFilterable","DialogPrimitive","cn","twMerge","Dialog","DialogPrimitive2","DialogPortal","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogTitle","DialogDescription","buttonVariants","Button","React14","useForm","Plus","create","Image","React15","React16","UserIcon","Icon","nodes","React20","InlineCodeIcon","BulletListIcon","QuoteIcon","LinkIcon","ImageIcon","forwardRef","RichText","Separator","Tooltip","TooltipContent","TooltipProvider","TooltipTrigger","TooltipPrimitive2","React21","open","croppedAreaPixels"],"mappings":"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","file":"index.mjs","sourcesContent":["export function isDefined(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport function isEmptyObject(value: any) {\n return !!value && Object.keys(value).length === 0 && value.constructor === Object;\n}\n\nexport type DebounceOptions = {\n leading?: boolean;\n trailing?: boolean;\n maxWait?: number;\n};\n\nexport type DebouncedFunction<T extends (...args: any[]) => any> = {\n (...args: Parameters<T>): ReturnType<T> | undefined;\n cancel: () => void;\n flush: () => ReturnType<T> | undefined;\n};\n\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number = 150,\n options?: DebounceOptions\n): DebouncedFunction<T> {\n let lastArgs: Parameters<T> | undefined,\n lastThis: any,\n maxWait: number | undefined,\n result: ReturnType<T> | undefined,\n timerId: ReturnType<typeof setTimeout> | undefined,\n lastCallTime: number | undefined,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n\n wait = Number(wait) || 0;\n\n if (options && typeof options === \"object\") {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? Math.max(Number(options.maxWait) || 0, wait) : undefined;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time: number) {\n const args = lastArgs!;\n const thisArg = lastThis!;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time: number) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time: number) {\n const timeSinceLastCall = time - (lastCallTime ?? 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n const remaining = wait - timeSinceLastCall;\n return maxing ? Math.min(remaining, (maxWait ?? 0) - timeSinceLastInvoke) : remaining;\n }\n\n function shouldInvoke(time: number) {\n const timeSinceLastCall = time - (lastCallTime ?? 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n return (\n lastCallTime === undefined ||\n timeSinceLastCall >= wait ||\n timeSinceLastCall < 0 ||\n (maxing && timeSinceLastInvoke >= (maxWait ?? 0))\n );\n }\n\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time: number) {\n timerId = undefined;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n\n function debounced(this: any, ...args: Parameters<T>): ReturnType<T> | undefined {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n lastArgs = args;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n options?: Pick<DebounceOptions, \"leading\" | \"trailing\">\n): DebouncedFunction<T> {\n let leading = true,\n trailing = true;\n\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n\n if (options) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n leading,\n maxWait: wait,\n trailing\n });\n}\n","import { isDefined } from \"./common\";\n\nexport function stripNullishObject<T extends Record<string, any>>(value: Partial<T>) {\n if (!isDefined(value)) {\n return {};\n }\n\n try {\n return Object.fromEntries(Object.entries(value).filter(([, propValue]) => isDefined(propValue)));\n } catch {\n return {};\n }\n}\n","const pad = (num: number): string => String(num).padStart(2, \"0\");\n/**\n * Formats an ISO date string according to a specified format.\n *\n * @param isoDateString The input ISO 8601 date string (e.g., '2025-09-22T08:47:15.627Z') or javascript Date object\n * @param format The format string (e.g., 'd/m/Y H:i:s')\n * - d / DD: Day (01-31)\n * - m / MM: Month (01-12)\n * - Y / YYYY: Full Year (e.g., 2025)\n * - H: Hour (00-23)\n * - i: Minute (00-59)\n * - s: Second (00-59)\n * @returns A formatted date string.\n */\nexport function formatISODate(isoDate: string | Date, format: string = \"d/m/Y H:i\"): string {\n const date = new Date(isoDate);\n\n if (isNaN(date.getTime())) {\n return \"Invalid Date\";\n }\n // Note: .getMonth() is 0-indexed (0-11), so we add 1.\n const parts = {\n d: pad(date.getDate()),\n m: pad(date.getMonth() + 1),\n Y: String(date.getFullYear()),\n H: pad(date.getHours()),\n i: pad(date.getMinutes()),\n s: pad(date.getSeconds())\n };\n\n const tokenMap: { [key: string]: PartKey } = {\n // Day\n d: \"d\",\n DD: \"d\",\n // Month\n m: \"m\",\n MM: \"m\",\n // Year\n Y: \"Y\", // 'Y' and 'YYYY' will both map to the 4-digit year\n YYYY: \"Y\",\n // Hour\n H: \"H\",\n // Minute\n i: \"i\",\n // Second\n s: \"s\"\n };\n\n // Define the type for our map keys for type safety\n type PartKey = keyof typeof parts;\n\n return format.replace(/YYYY|Y|MM|m|DD|d|H|i|s/g, (match) => {\n const partKey = tokenMap[match];\n return partKey ? parts[partKey] : match;\n });\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to intelligently combine class names using `clsx`\n * and resolve Tailwind CSS class conflicts using `tailwind-merge`.\n *\n * This function is commonly used in React or other frontend frameworks\n * to conditionally merge Tailwind classes and avoid class duplication or conflict,\n * especially when combining utility variants like `bg-red-500` and `bg-blue-500`.\n *\n * @param {...ClassValue[]} args - A variadic list of class values. Each can be:\n * - string: e.g. `\"px-4 py-2\"`\n * - object: e.g. `{ 'text-red-500': isError }`\n * - array: e.g. `['bg-blue-500', conditionalClass]`\n * These will be normalized and merged by `clsx`, then conflict-resolved by `tailwind-merge`.\n *\n * @returns {string} A single string of valid Tailwind class names with conflicts resolved.\n *\n * @example\n * ```tsx\n * <button className={cn(\"px-4 py-2\", isPrimary && \"bg-blue-500\", \"bg-red-500\")} />\n * // Result: \"px-4 py-2 bg-blue-500\" (if isPrimary is true)\n * ```\n *\n * @see https://github.com/lukeed/clsx - `clsx` docs for conditional class logic\n * @see https://github.com/dcastil/tailwind-merge - `tailwind-merge` docs for conflict resolution\n */\nexport default function cn(...args: ClassValue[]): string {\n return twMerge(clsx(args));\n}\n","import * as React from \"react\";\nimport type { SVGProps } from \"react\";\n\nconst ArrowIcon: React.FC<SVGProps<SVGSVGElement>> = ({\n width = \"1em\",\n height = \"1em\",\n fill = \"none\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 14 9\"\n width={width}\n height={height}\n fill={fill}\n {...props}\n >\n <path d=\"M0.293 0.723L6.79 8.723L13.293 0.723H0.293Z\" fill={props.color || \"#127035\"} />\n </svg>\n);\n\nexport default ArrowIcon;\n","import type { SVGProps } from \"react\";\nconst SuiCalendarIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 25 25\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M8.504 11.205H5.837v2.4h2.667zm5.333 0h-2.666v2.4h2.666zm5.334 0h-2.667v2.4h2.667zm2.666-8.4h-1.333v-2.4h-2.667v2.4H7.171v-2.4H4.504v2.4H3.17c-1.48 0-2.654 1.08-2.654 2.4l-.013 16.8c0 1.32 1.187 2.4 2.667 2.4h18.666c1.467 0 2.667-1.08 2.667-2.4v-16.8c0-1.32-1.2-2.4-2.667-2.4m0 19.2H3.171v-13.2h18.666z\"\n />\n </svg>\n);\nexport default SuiCalendarIcon;\n","import type { SVGProps } from \"react\";\nconst SuiCheckIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#check_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M10.976.043c9.629-.793 16.248 9.583 11.392 18.002-4.252 7.37-14.736 8.025-19.907 1.26C-3.276 11.799 1.616.815 10.976.044m5.59 7.791c-.284.048-.555.25-.775.428l-5.159 4.944c-.188.033-2.31-2.268-2.865-2.51-1.413-.619-2.427 1.01-1.22 2.22.73.733 2.573 2.531 3.354 3.044.407.267.853.335 1.295.104 1.429-1.295 2.87-2.6 4.249-3.948.647-.633 1.63-1.47 2.186-2.112.825-.95.12-2.369-1.065-2.169\"\n />\n <path\n fill=\"#fff\"\n d=\"M16.567 7.835c1.186-.2 1.89 1.218 1.065 2.169-.557.64-1.54 1.479-2.187 2.112-1.379 1.348-2.818 2.653-4.248 3.948-.442.23-.889.162-1.295-.105-.782-.512-2.625-2.31-3.355-3.043-1.206-1.21-.192-2.84 1.221-2.221.556.243 2.677 2.544 2.865 2.51l5.16-4.943c.219-.178.489-.38.774-.429z\"\n />\n </g>\n <defs>\n <clipPath id=\"check_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiCheckIcon;\n","import type { SVGProps } from \"react\";\nconst SuiDotsVerticalIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 25 25\"\n {...props}\n >\n <g clipPath=\"url(#dots-vertical_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M12.504 9.03a3.373 3.373 0 0 1 3.375 3.375 3.373 3.373 0 0 1-3.375 3.375 3.373 3.373 0 0 1-3.375-3.375 3.373 3.373 0 0 1 3.375-3.375M9.129 4.155a3.373 3.373 0 0 0 3.375 3.375 3.373 3.373 0 0 0 3.375-3.375A3.373 3.373 0 0 0 12.504.78a3.373 3.373 0 0 0-3.375 3.375m0 16.5a3.373 3.373 0 0 0 3.375 3.375 3.373 3.373 0 0 0 3.375-3.375 3.373 3.373 0 0 0-3.375-3.375 3.373 3.373 0 0 0-3.375 3.375\"\n />\n </g>\n <defs>\n <clipPath id=\"dots-vertical_svg__a\">\n <path fill=\"#fff\" d=\"M.504.405h24v24h-24z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiDotsVerticalIcon;\n","import type { SVGProps } from \"react\";\nconst SuiEmptyDataIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 184 152\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(24 31.67)\">\n <ellipse fillOpacity=\".8\" cx=\"67.797\" cy=\"106.89\" rx=\"67.797\" ry=\"12.668\" fill=\"#B0DFAA\" />\n <path\n d=\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\"\n fill=\"#CEE5D6\"\n />\n <path\n d=\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\"\n fill=\"#DDEEE3\"\n transform=\"translate(13.56)\"\n />\n <path\n d=\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\"\n fill=\"#F9F9F9\"\n />\n <path\n d=\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\"\n fill=\"#DDEEE3\"\n />\n </g>\n <path\n d=\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\"\n fill=\"#DDEEE3\"\n />\n <g transform=\"translate(149.65 15.383)\" fill=\"#FFF\">\n <ellipse cx=\"20.654\" cy=\"3.167\" rx=\"2.849\" ry=\"2.815\" />\n <path d=\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\" />\n </g>\n </g>\n </svg>\n);\nexport default SuiEmptyDataIcon;\n","import type { SVGProps } from \"react\";\nconst SuiExpandIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g fill=\"currentColor\" clipPath=\"url(#expand_svg__a)\">\n <path d=\"M11.674.038c.69-.18 1.498.305 1.69 1.2.283 6.934.043 13.962.122 20.93-.128 2.08-2.27 2.537-2.852.602-.282-6.934-.042-13.962-.122-20.93.072-.855.481-1.623 1.163-1.802M19.93 10.11c.024-.474-.188-2.095.498-1.842L24 11.947l-.2.504-3.37 3.288c-.687.252-.475-1.368-.5-1.843h-4.312c-.187 0-.664-.575-.718-.852-.066-.33-.066-1.751 0-2.083.054-.277.531-.852.718-.852h4.313M4.07 13.898c-.025.473.187 2.095-.5 1.842L0 12.06l.2-.504 3.37-3.288c.687-.253.475 1.367.5 1.842h4.312c.187 0 .664.576.718.852.066.33.066 1.752 0 2.084-.054.276-.531.852-.718.852z\" />\n </g>\n <defs>\n <clipPath id=\"expand_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiExpandIcon;\n","import type { SVGProps } from \"react\";\nconst SuiFilterIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#filter_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M.29.332a.85.85 0 0 0-.258.505c-.057.443-.053 2.439.125 2.752l8.58 8.904c.236 2.44-.221 5.164.023 7.57.049.464.147.525.494.83.675.59 3.539 2.57 4.326 2.94s1.45.15 1.654-.619l.022-10.721 8.585-8.904c.178-.317.187-2.313.13-2.752-.085-.639-.748-.793-1.352-.838H1.379C1.034.027.545.105.29.332\"\n />\n </g>\n <defs>\n <clipPath id=\"filter_svg__a\">\n <path fill=\"#fff\" d=\"M24-.001H0v24h24z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiFilterIcon;\n","import React from \"react\";\n\nconst NotFoundIcon: React.FC<React.SVGProps<SVGSVGElement>> = ({\n width = 24,\n height = 24,\n fill = \"currentColor\",\n className = \"\",\n ...props\n}) => (\n <svg\n viewBox=\"0 0 106 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n fill={fill}\n className={className}\n {...props}\n >\n <path\n d=\"M44.7381 99.6137C69.3718 99.6137 89.3413 95.8824 89.3413 91.2795C89.3413 86.6767 69.3718 82.9453 44.7381 82.9453C20.1043 82.9453 0.134766 86.6767 0.134766 91.2795C0.134766 95.8824 20.1043 99.6137 44.7381 99.6137Z\"\n fill=\"#B0DFAA\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M80.4202 66.795L64.6801 47.4233C63.9249 46.5114 62.8209 45.9595 61.6584 45.9595H27.8163C26.6545 45.9595 25.5505 46.5114 24.7953 47.4233L9.05579 66.795V76.9154H80.4209V66.795H80.4202Z\"\n fill=\"#CEE5D6\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.3913 20.957H67.0841C67.782 20.957 68.4514 21.2343 68.9449 21.7278C69.4384 22.2213 69.7157 22.8907 69.7157 23.5886V84.9991C69.7157 85.6971 69.4384 86.3664 68.9449 86.8599C68.4514 87.3534 67.782 87.6307 67.0841 87.6307H22.3913C21.6934 87.6307 21.0241 87.3534 20.5305 86.8599C20.037 86.3664 19.7598 85.6971 19.7598 84.9991V23.5886C19.7598 22.8907 20.037 22.2213 20.5305 21.7278C21.0241 21.2343 21.6934 20.957 22.3913 20.957V20.957Z\"\n fill=\"#F9F9F9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.2124 27.5049H61.2631C61.612 27.5049 61.9467 27.6435 62.1935 27.8903C62.4402 28.137 62.5789 28.4717 62.5789 28.8207V45.2398C62.5789 45.5887 62.4402 45.9234 62.1935 46.1702C61.9467 46.4169 61.612 46.5555 61.2631 46.5555H28.2124C27.8634 46.5555 27.5288 46.4169 27.282 46.1702C27.0353 45.9234 26.8966 45.5887 26.8966 45.2398V28.8207C26.8966 28.4717 27.0353 28.137 27.282 27.8903C27.5288 27.6435 27.8634 27.5049 28.2124 27.5049ZM28.3848 53.6983H61.0907C61.4854 53.6983 61.8639 53.8551 62.143 54.1342C62.4221 54.4133 62.5789 54.7918 62.5789 55.1865C62.5789 55.5811 62.4221 55.9597 62.143 56.2387C61.8639 56.5178 61.4854 56.6746 61.0907 56.6746H28.3848C27.9901 56.6746 27.6116 56.5178 27.3325 56.2387C27.0534 55.9597 26.8966 55.5811 26.8966 55.1865C26.8966 54.7918 27.0534 54.4133 27.3325 54.1342C27.6116 53.8551 27.9901 53.6983 28.3848 53.6983ZM28.3848 61.4371H61.0907C61.4855 61.4371 61.8641 61.5939 62.1432 61.8731C62.4224 62.1522 62.5792 62.5308 62.5792 62.9256C62.5792 63.3204 62.4224 63.699 62.1432 63.9781C61.8641 64.2573 61.4855 64.4141 61.0907 64.4141H28.3848C27.99 64.4141 27.6114 64.2573 27.3323 63.9781C27.0531 63.699 26.8963 63.3204 26.8963 62.9256C26.8963 62.5308 27.0531 62.1522 27.3323 61.8731C27.6114 61.5939 27.99 61.4371 28.3848 61.4371ZM80.2749 90.0569C79.7651 92.0772 77.9743 93.5832 75.844 93.5832H13.6315C11.5012 93.5832 9.71044 92.0766 9.20123 90.0569C9.10411 89.6718 9.05505 89.2763 9.05518 88.8792V66.7957H26.3696C28.2822 66.7957 29.8236 68.4062 29.8236 70.3615V70.3878C29.8236 72.3424 31.3828 73.9207 33.2953 73.9207H56.1802C58.0927 73.9207 59.6519 72.3279 59.6519 70.3726V70.3647C59.6519 68.4095 61.1933 66.795 63.1058 66.795H80.4203V88.8799C80.4203 89.2858 80.3697 89.6799 80.2749 90.0569Z\"\n fill=\"#DDEEE3\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M82.4512 22.0242L77.9577 23.7676C77.8423 23.8125 77.7165 23.8239 77.5949 23.8005C77.4733 23.7771 77.3608 23.7198 77.2703 23.6353C77.1797 23.5507 77.1149 23.4424 77.0833 23.3226C77.0516 23.2029 77.0544 23.0767 77.0913 22.9584L78.3656 18.8749C76.6623 16.938 75.6624 14.5762 75.6624 12.0275C75.6624 5.45185 82.3189 0.121582 90.5308 0.121582C98.7406 0.121582 105.398 5.45185 105.398 12.0275C105.398 18.6032 98.7413 23.9334 90.5301 23.9334C87.5512 23.9334 84.7775 23.2321 82.4512 22.0242Z\"\n fill=\"#DDEEE3\"\n />\n <path\n d=\"M96.3874 14.1776C97.4226 14.1776 98.2617 13.3484 98.2617 12.3256C98.2617 11.3028 97.4226 10.4736 96.3874 10.4736C95.3522 10.4736 94.5131 11.3028 94.5131 12.3256C94.5131 13.3484 95.3522 14.1776 96.3874 14.1776Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.5479 13.9459H82.7992L84.7058 10.7051L86.5479 13.9459ZM88.8906 10.7051H92.1702V13.9459H88.8906V10.7051Z\"\n fill=\"white\"\n />\n </svg>\n);\n\nexport default NotFoundIcon;\n","import type { SVGProps } from \"react\";\nconst SuiSettingIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M16.406 3.26c.052.055 1.256.701 1.331.714.42.067 1.478-.527 2.084-.543.446-.01 1.138.21 1.517.45.454.284 2.42 3.361 2.558 3.907.418 1.629-.495 2.56-1.73 3.405l-.041 1.45c.033.29 1.67 1.242 1.828 2.253.137.86-.036 1.259-.39 1.983-.396.814-1.743 3.053-2.499 3.402-1.53.709-1.898-.129-3.113-.24-.209-.018-1.517.651-1.591.77-.604.952-.065 2.5-1.857 3.028-.658.194-4.207.217-4.888.044-.408-.103-1.001-.517-1.239-.869-.397-.59-.523-2.011-.76-2.262-.044-.047-1.03-.587-1.135-.63-.594-.241-1.633.477-2.412.46-.462-.011-1.187-.283-1.553-.567S.236 16.682.12 16.227c-.384-1.5.199-2.004 1.125-2.958.157-.163.492-.297.567-.419.1-.165.129-1.378.075-1.585-.05-.188-1.661-1.127-1.821-2.146a4.4 4.4 0 0 1 0-1.106c.064-.396 1.772-3.268 2.1-3.662 1.103-1.316 2.62-.889 4.01-.364l1.375-.68C8.103 1.929 8.103.29 9.965.062c.805-.098 3.836-.093 4.535.114.4.116.908.478 1.143.827.394.59.523 2.012.76 2.263zm-3.134-.243h-2.52c-.1.567-.19 1.386-.418 1.9-.36.813-1.217.924-1.932 1.304-.4.212-1.008.788-1.387.858-.934.179-1.845-.32-2.724-.545l-1.125 1.89c0 .134 1.685 1.169 1.808 1.975.083.546-.139 1.006-.144 1.534-.008.649.289 1.264.088 1.908-.181.579-1.752 1.623-1.752 1.748l1.125 1.89c.93-.24 1.95-.812 2.933-.476.28.096.827.605 1.178.791.818.434 1.576.458 1.966 1.41.108.263.369 1.791.459 1.806l2.443-.015c.1-.566.19-1.386.417-1.9.362-.812 1.218-.923 1.932-1.303.4-.213 1.009-.79 1.388-.859.934-.178 1.844.32 2.724.546l1.124-1.89c0-.135-1.684-1.17-1.808-1.976-.082-.545.14-1.006.145-1.533.008-.65-.29-1.264-.088-1.908.18-.58 1.751-1.624 1.751-1.748l-1.124-1.89c-.931.238-1.95.812-2.933.475-.273-.093-.596-.499-.892-.654-1.816-.94-2.471-.89-2.636-3.338z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M11.705 8.245c5.107-.422 5.406 7.472.371 7.555-4.715.077-5.174-7.16-.371-7.555\"\n />\n </svg>\n);\nexport default SuiSettingIcon;\n","import type { SVGProps } from \"react\";\nconst SuiTriangleDownIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 15\"\n {...props}\n >\n <path fill=\"currentColor\" d=\"m0 0 11.994 15L24 0z\" />\n </svg>\n);\nexport default SuiTriangleDownIcon;\n","import type { SVGProps } from \"react\";\nconst SuiWarningIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#warning_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M10.603.061c8.692-.837 15.37 7.07 12.864 15.498-2.772 9.323-15.222 11.462-21.079 3.694C-3.134 11.93 1.465.942 10.603.061m2.858 15.103.734-9.092c.287-3.574-4.695-3.575-4.408 0l.734 9.092h2.941m-1.92 1.916c-1.858.384-1.743 3.333.079 3.55 3.047.364 2.714-4.13-.079-3.55\"\n />\n <path\n fill=\"#fff\"\n d=\"M13.46 15.163h-2.94l-.735-9.091c-.285-3.576 4.695-3.575 4.409 0zM11.54 17.079c2.794-.58 3.127 3.915.08 3.551-1.822-.217-1.938-3.166-.08-3.551\"\n />\n </g>\n <defs>\n <clipPath id=\"warning_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiWarningIcon;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"@/utils\";\nimport { ArrowIcon } from \"@/components/icons\";\n\nfunction Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return <AccordionPrimitive.Item data-slot=\"accordion-item\" className={cn(\"\", className)} {...props} />;\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-0\",\n className\n )}\n {...props}\n >\n {children}\n <ArrowIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200 w-4 rotate-90\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import { useState, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\ntype ExpandCollapseProps = {\n title: ReactNode;\n children: ReactNode;\n portalId: string;\n};\n\nconst ExpandCollapse: React.FC<ExpandCollapseProps> = ({ title, children, portalId }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const Panel = (\n <div\n className={clsx(\n \"overflow-hidden transition-all duration-500 ease-in-out bg-white border-b shadow-md w-full\",\n isOpen ? \"max-h-[700px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"relative p-6\">\n <button\n onClick={() => setIsOpen(false)}\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n {children}\n </div>\n </div>\n );\n\n return (\n <>\n {/* ปุ่ม trigger อยู่ตรงไหนก็ได้ */}\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"px-4 py-2 text-sm text-gray-700 hover:text-black\"\n >\n {title}\n </button>\n\n {/* Render panel */}\n {portalId && typeof document !== \"undefined\" ?\n document.getElementById(portalId) ?\n createPortal(Panel, document.getElementById(portalId)!)\n : null\n : Panel}\n </>\n );\n};\n\nexport default ExpandCollapse;\n","// advance-search/operatorMap.ts\nimport type { FieldType, OperatorValue } from \"./types\";\n\nexport const OPERATOR_MAP: Record<FieldType, OperatorValue[]> = {\n text: [\n \"contains\",\n \"equals\",\n \"beginsWith\",\n \"endsWith\",\n \"notEquals\",\n \"notBeginsWith\",\n \"notEndsWith\",\n \"notContains\"\n ],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\"],\n date: [\"on\", \"after\", \"before\", \"between\"],\n datetime: [\"on\", \"after\", \"before\", \"between\"],\n datemonth: [\"on\", \"after\", \"before\", \"between\"],\n checkbox: [\"is\", \"isNot\"],\n dropdown: [\"is\", \"isNot\"],\n lookup: [\"containsAny\", \"containsOnly\", \"containsAll\", \"notContains\"],\n uuid: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\"],\n json: [\"equals\", \"notEquals\", \"containsAny\"]\n};\n","// advance-search/hooks/useAdvanceSearch.ts\nimport { useCallback, useMemo, useState } from \"react\";\nimport { OPERATOR_MAP } from \"../operatorMap\";\nimport { FieldSchema, FieldType, OperatorValue, RowState } from \"../types\";\n\nfunction findField(fields: FieldSchema[], name: string): FieldSchema | undefined {\n return fields.find((f) => f.name === name);\n}\n\nfunction getFieldType(fields: FieldSchema[], name: string): FieldType {\n return findField(fields, name)?.type ?? \"text\";\n}\n\nfunction firstOperatorFor(fields: FieldSchema[], fieldName: string): OperatorValue {\n const t = getFieldType(fields, fieldName);\n return OPERATOR_MAP[t][0];\n}\n\nfunction makeNewRow(field: FieldSchema): RowState {\n const op = OPERATOR_MAP[field.type][0];\n if (op === \"between\") {\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: \"between\",\n value: \"\",\n value2: \"\",\n multiTableSearch: field.multiTableSearch,\n lookupFieldName: field.lookupFieldName\n };\n }\n if (field.type === \"json\") {\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: op,\n value: \"\",\n multiTableSearch: field.multiTableSearch,\n jsonPath: field.jsonPath,\n lookupFieldName: field.lookupFieldName\n };\n }\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: op,\n value: \"\",\n multiTableSearch: field.multiTableSearch,\n lookupFieldName: field.lookupFieldName\n };\n}\n\nexport interface UseAdvanceSearchOptions {\n fields: FieldSchema[];\n limitRows?: number;\n}\n\nexport function useAdvanceSearch({ fields, limitRows }: UseAdvanceSearchOptions) {\n const [rows, setRows] = useState<RowState[]>([makeNewRow(fields[0])]);\n\n const updateRows = useCallback((next: RowState[]) => {\n setRows(next);\n }, []);\n\n const operatorsForField = useCallback(\n (fieldName: string): OperatorValue[] => {\n const t = getFieldType(fields, fieldName);\n return OPERATOR_MAP[t];\n },\n [fields]\n );\n\n const addRow = useCallback(() => {\n if (limitRows && rows.length >= limitRows) return;\n\n const lastRow = rows[rows.length - 1];\n const lastField = fields.find((f) => f.name === lastRow?.fieldName) ?? fields[0];\n updateRows([...rows, makeNewRow(lastField)]);\n }, [rows, fields, updateRows, limitRows]);\n\n const removeRow = useCallback(\n (id: string) => {\n if (rows.length === 1) return;\n updateRows(rows.filter((r) => r.id !== id));\n },\n [rows, updateRows]\n );\n\n const clearRow = useCallback(\n (id: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n const nextOp = firstOperatorFor(fields, r.fieldName);\n return nextOp === \"between\" ?\n {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n operator: \"between\",\n value: \"\",\n value2: \"\",\n multiTableSearch: r.multiTableSearch,\n jsonPath: r.jsonPath,\n lookupFieldName: r.lookupFieldName\n }\n : {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n operator: nextOp,\n value: \"\",\n multiTableSearch: r.multiTableSearch,\n jsonPath: r.jsonPath,\n lookupFieldName: r.lookupFieldName\n };\n })\n );\n },\n [rows, fields, updateRows]\n );\n\n const clearAllRow = useCallback(() => {\n updateRows([makeNewRow(fields[0])]);\n }, [fields, updateRows]);\n\n const changeField = useCallback(\n (id: string, fieldName: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n const newRow = makeNewRow(fields.find((f) => f.name === fieldName) || fields[0]);\n return { ...newRow, id: r.id }; // new row data but same id\n })\n );\n },\n [rows, fields, updateRows]\n );\n\n const changeOperator = useCallback(\n (id: string, operator: OperatorValue) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n if (operator === \"between\") {\n return {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n multiTableSearch: r.multiTableSearch,\n lookupFieldName: r.lookupFieldName,\n jsonPath: r.jsonPath,\n operator,\n value: \"\",\n value2: \"\"\n };\n }\n return {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n multiTableSearch: r.multiTableSearch,\n lookupFieldName: r.lookupFieldName,\n jsonPath: r.jsonPath,\n operator,\n value: \"\"\n };\n })\n );\n },\n [rows, updateRows]\n );\n\n const changeValue = useCallback(\n (id: string, which: \"value\" | \"value2\", val: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n if (which === \"value2\" && r.operator !== \"between\") return r;\n return { ...r, [which]: val } as RowState;\n })\n );\n },\n [rows, updateRows]\n );\n\n const fieldOptions = useMemo(\n () =>\n fields.map((f) => ({\n value: f.name,\n label: f.label ?? f.name\n })),\n [fields]\n );\n\n return {\n rows,\n addRow,\n removeRow,\n clearRow,\n clearAllRow,\n changeField,\n changeOperator,\n changeValue,\n operatorsForField,\n fieldOptions\n };\n}\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, Triangle, ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-gray-00 [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[state=open]:border-ring data-[state=open]:[&_svg]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronRight className=\"h-4 w-4 rotate-90 text-gray-300\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"m-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"hover:bg-[#EAF5EE] hover:text-[#379A2A] [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 \",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-2 hover:text-[#379A2A]\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Triangle className=\"size-2 fill-current\" style={{ transform: \"rotate(0deg)\" }} />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Triangle className=\"size-2 fill-current\" style={{ transform: \"rotate(180deg)\" }} />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue\n};\n","import React from \"react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport type { Option, RowState } from \"@/components/advanceSearch/types\";\n\nexport const FieldSelect: React.FC<{\n row: RowState;\n fieldOptions: Option[];\n onChangeField: (fieldName: string) => void;\n}> = ({ row, fieldOptions, onChangeField }) => (\n <div className=\"w-full\">\n <Select value={row.fieldName} onValueChange={(value) => onChangeField(value)}>\n <SelectTrigger className=\"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\">\n <SelectValue placeholder=\"Select field\" />\n </SelectTrigger>\n <SelectContent className=\"w-full min-w-[unset]\">\n {fieldOptions.map((f) => (\n <SelectItem key={f.value} value={f.value}>\n {f.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n);\n","// advance-search/types.ts\nexport type FieldType =\n | \"text\"\n | \"number\"\n | \"date\"\n | \"datetime\"\n | \"datemonth\"\n | \"checkbox\"\n | \"dropdown\"\n | \"lookup\"\n | \"uuid\"\n | \"json\";\n\nexport type Option = { value: string; label: string };\n\nexport interface FieldSchemaBase<T extends FieldType> {\n name: string;\n type: T;\n label?: string;\n multiTableSearch?: boolean;\n lookupFieldName?: string;\n}\n\nexport interface DropdownFieldSchema extends FieldSchemaBase<\"dropdown\"> {\n options: Option[];\n}\nexport type TextFieldSchema = FieldSchemaBase<\"text\">;\nexport type NumberFieldSchema = FieldSchemaBase<\"number\">;\nexport type DateFieldSchema = FieldSchemaBase<\"date\">;\nexport type DateTimeFieldSchema = FieldSchemaBase<\"datetime\">;\nexport type DateMonthFieldSchema = FieldSchemaBase<\"datemonth\">;\nexport type CheckboxFieldSchema = FieldSchemaBase<\"checkbox\">;\nexport interface LookupFieldSchema extends FieldSchemaBase<\"lookup\"> {\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<Option[]>;\n suggestionDebounce?: number;\n placeholder?: string;\n noOptionsMessage?: string;\n loadingMessage?: string;\n}\nexport type UUIDFieldSchema = FieldSchemaBase<\"uuid\">;\nexport interface JSONFieldSchema extends FieldSchemaBase<\"json\"> {\n jsonPath?: string[];\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<Option[]>;\n suggestionDebounce?: number;\n placeholder?: string;\n noOptionsMessage?: string;\n loadingMessage?: string;\n}\n\nexport type FieldSchema =\n | DropdownFieldSchema\n | TextFieldSchema\n | NumberFieldSchema\n | DateFieldSchema\n | DateTimeFieldSchema\n | DateMonthFieldSchema\n | CheckboxFieldSchema\n | LookupFieldSchema\n | UUIDFieldSchema\n | JSONFieldSchema;\n\n// ตัวดำเนินการทั้งหมดที่รองรับ\nexport type OperatorValue =\n | \"contains\"\n | \"equals\"\n | \"beginsWith\"\n | \"endsWith\"\n | \"notEquals\"\n | \"notBeginsWith\"\n | \"notEndsWith\"\n | \"notContains\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"on\"\n | \"after\"\n | \"before\"\n | \"between\"\n | \"is\"\n | \"isNot\"\n | \"containsAny\"\n | \"containsOnly\"\n | \"containsAll\";\n\n// ใช้เป็น source of truth สำหรับ label\nexport const OPERATOR_LABEL: Record<OperatorValue, string> = {\n contains: \"Contains\",\n equals: \"Equals\",\n beginsWith: \"Begins with\",\n endsWith: \"Ends with\",\n notEquals: \"Not equals\",\n notBeginsWith: \"Not begins with\",\n notEndsWith: \"Not ends with\",\n notContains: \"Not contains\",\n gt: \"Greater than\",\n gte: \"Greater or equal\",\n lt: \"Less than\",\n lte: \"Less or equal\",\n on: \"On\",\n after: \"After\",\n before: \"Before\",\n between: \"Between\",\n is: \"Is\",\n isNot: \"Is not\",\n containsAny: \"Contains at least one of\",\n containsOnly: \"Contains only\",\n containsAll: \"Contains all of\"\n};\n\nexport type RowState =\n | {\n id: string;\n fieldName: string;\n fieldType: FieldType;\n operator: Exclude<OperatorValue, \"between\">;\n value: string | any[];\n value2?: undefined;\n multiTableSearch?: boolean;\n jsonPath?: string[];\n lookupFieldName?: string;\n }\n | {\n id: string;\n fieldName: string;\n fieldType: FieldType;\n operator: \"between\";\n value: string; // ช่องจาก\n value2: string; // ช่องถึง\n multiTableSearch?: boolean;\n jsonPath?: string[];\n lookupFieldName?: string;\n };\n\nexport interface Params {\n AND: Record<string, unknown>[];\n}\n\nexport interface AdvanceSearchProps {\n fields: FieldSchema[];\n portalId: string;\n limitRows?: number;\n iconColor?: string;\n onSearch?: (param: Params) => void;\n onClear?: () => void;\n shortDateFormat?: string;\n}\n\nexport interface ParamsBuilder {\n build(row: RowState): object;\n}\n","import React from \"react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport type { OperatorValue, RowState } from \"@/components/advanceSearch/types\";\nimport { OPERATOR_LABEL } from \"@/components/advanceSearch/types\";\n\nexport const OperatorSelect: React.FC<{\n row: RowState;\n operators: OperatorValue[];\n onChangeOperator: (op: OperatorValue) => void;\n error?: string;\n}> = ({ row, operators, onChangeOperator, error }) => {\n React.useEffect(() => {\n if (!operators.length) return;\n if (!operators.includes(row.operator)) {\n onChangeOperator(operators[0]);\n }\n }, [operators, row.operator, onChangeOperator]);\n\n return (\n <div className=\"w-full\">\n <Select value={row.operator} onValueChange={(value) => onChangeOperator(value as OperatorValue)}>\n <SelectTrigger\n aria-invalid={error ? \"true\" : \"false\"}\n className={`w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0 ${\n error ? \"border border-red-500\" : \"\"\n }`}\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent className=\"w-full min-w-[unset]\">\n {operators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABEL[op] ?? op}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {error && <span className=\"mt-1 block text-xs text-red-600\">{error}</span>}\n </div>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"@/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues\n} from \"react-hook-form\";\n\nimport { CircleX } from \"lucide-react\";\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/components/ui/label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn(\"grid gap-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) return null;\n\n return (\n <div\n data-slot=\"form-message\"\n className={cn(\"text-xs leading-tight mt-1 flex items-center gap-1.5 text-destructive\", className)}\n id={formMessageId}\n {...props}\n >\n <CircleX className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <p>{body}</p>\n </div>\n );\n}\n\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/utils\";\n\nconst spinnerVariants = cva(\"relative inline-block aspect-square transform-gpu\", {\n variants: {\n variant: {\n primary: \"[&>div]:bg-[#77ab8a]\",\n secondary: \"[&>div]:bg-[#ab9555]\",\n destructive: \"[&>div]:bg-destructive\",\n muted: \"[&>div]:bg-muted-foreground\"\n },\n size: {\n sm: \"size-7\",\n default: \"size-8\",\n lg: \"size-9\",\n xl: \"size-10\",\n \"2xl\": \"size-12\"\n }\n },\n defaultVariants: { variant: \"primary\", size: \"default\" }\n});\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof spinnerVariants>, \"size\"> {\n className?: string;\n size?: VariantProps<typeof spinnerVariants>[\"size\"] | number;\n}\n\nconst Spinner = ({ className, variant, size = \"default\", ...props }: SpinnerProps) => (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n typeof size === \"string\" ? spinnerVariants({ variant, size }) : spinnerVariants({ variant }),\n className\n )}\n style={typeof size === \"number\" ? { width: size, height: size } : undefined}\n {...props}\n >\n {Array.from({ length: 12 }).map((_, i) => (\n <div\n key={i}\n className=\"animate-sus-spinner absolute left-[46.5%] top-[4.4%] h-[24%] w-[7%] origin-[center_190%] rounded-full opacity-[0.1] will-change-transform\"\n style={{\n transform: `rotate(${i * 30}deg)`,\n animationDelay: `${(i * 0.083).toFixed(3)}s`\n }}\n aria-hidden=\"true\"\n />\n ))}\n <span className=\"sr-only\">Loading...</span>\n </div>\n);\n\nexport { Spinner, spinnerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { CircleX } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\nimport { Spinner } from \"@/components/ui/spinner\";\n\nexport type InputPrimitiveProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst InputPrimitive = React.forwardRef<HTMLInputElement, InputPrimitiveProps>(\n ({ className, type = \"text\", ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"placeholder:text-neutral-400 text-neutral-900 flex h-10 w-full min-w-0 items-center rounded-lg border bg-white px-4 text-sm transition-colors outline-none file:inline-flex file:h-7 file:rounded-md file:border-0 file:bg-transparent file:px-2 file:text-sm file:font-medium hover:border-neutral-500 focus-visible:border-neutral-900 focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-neutral-100 disabled:text-neutral-400 disabled:border-neutral-200 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n\nconst inputVariants = cva(\"\", {\n variants: {\n controlSize: {\n sm: \"h-9 rounded-md px-3 text-sm\",\n md: \"h-10 rounded-lg px-4 text-sm\",\n lg: \"h-12 rounded-xl px-5 text-base\"\n },\n fullWidth: {\n true: \"w-full\",\n false: \"w-auto\"\n },\n appearance: {\n filled: \"border-neutral-200 hover:border-neutral-500 focus-visible:border-neutral-900\",\n unfilled: \"bg-white border-neutral-300 hover:border-neutral-500 focus-visible:border-neutral-900\"\n }\n },\n defaultVariants: {\n controlSize: \"md\",\n fullWidth: true,\n appearance: \"filled\"\n }\n});\n\nexport type InputProps = Omit<InputPrimitiveProps, \"size\"> &\n VariantProps<typeof inputVariants> & {\n prefix?: React.ReactNode;\n prefixProps?: React.HTMLAttributes<HTMLSpanElement>;\n prefixInteractive?: boolean;\n suffix?: React.ReactNode;\n suffixProps?: React.HTMLAttributes<HTMLSpanElement>;\n suffixInteractive?: boolean;\n wrapperClassName?: string;\n invalid?: boolean;\n loading?: boolean;\n loadingIcon?: React.ReactNode;\n validationMessage?: React.ReactNode;\n validationIcon?: React.ReactNode;\n validationMessageProps?: React.HTMLAttributes<HTMLParagraphElement>;\n onValueChange?: (value: string) => void;\n };\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n wrapperClassName,\n controlSize,\n fullWidth,\n appearance,\n prefix,\n prefixProps,\n prefixInteractive,\n suffix,\n suffixProps,\n suffixInteractive,\n invalid,\n loading,\n loadingIcon,\n validationMessage,\n validationIcon,\n validationMessageProps,\n onValueChange,\n type = \"text\",\n ...rest\n },\n ref\n ) => {\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix) || loading;\n const isFullWidth = fullWidth ?? true;\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp,\n ...inputProps\n } = rest;\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n const handleChange = React.useCallback<NonNullable<InputPrimitiveProps[\"onChange\"]>>(\n (event) => {\n onChangeProp?.(event);\n onValueChange?.(event.target.value);\n },\n [onChangeProp, onValueChange]\n );\n\n const resolvedAriaInvalid =\n typeof ariaInvalid === \"string\" ? ariaInvalid\n : ariaInvalid ? true\n : undefined;\n\n const describedBy =\n validationMessage ?\n [ariaDescribedByProp, messageId].filter(Boolean).join(\" \")\n : ariaDescribedByProp;\n\n const controlWrapperClassName = cn(\n \"relative inline-flex items-center\",\n isFullWidth ? \"w-full\" : \"w-fit\",\n !validationMessage && wrapperClassName\n );\n\n const inputElement = (\n <InputPrimitive\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ controlSize, fullWidth: isFullWidth, appearance }),\n hasPrefix && \"pl-10\",\n hasSuffix && \"pr-10\",\n className\n )}\n aria-invalid={resolvedAriaInvalid}\n aria-describedby={describedBy || undefined}\n onChange={handleChange}\n {...inputProps}\n />\n );\n\n if (!hasPrefix && !hasSuffix && !validationMessage) {\n return inputElement;\n }\n\n const { className: prefixClassName, ...prefixRest } = prefixProps ?? {};\n const { className: suffixClassName, ...suffixRest } = suffixProps ?? {};\n const { className: validationMessageClassName, ...validationMessageRest } =\n validationMessageProps ?? {};\n\n const suffixContent = (\n <>\n {suffix}\n {loading && (loadingIcon ?? <Spinner size={16} variant=\"muted\" />)}\n </>\n );\n\n const inputWithAffixes = (\n <div data-slot=\"input-wrapper\" className={controlWrapperClassName}>\n {hasPrefix && (\n <span\n {...prefixRest}\n className={cn(\n \"absolute left-3 top-1/2 -translate-y-1/2 inline-flex items-center text-muted-foreground\",\n !prefixInteractive && \"pointer-events-none\",\n prefixClassName\n )}\n >\n {prefix}\n </span>\n )}\n {inputElement}\n {hasSuffix && (\n <span\n {...suffixRest}\n className={cn(\n \"absolute right-3 top-1/2 -translate-y-1/2 inline-flex items-center gap-2 text-muted-foreground\",\n !suffixInteractive && \"pointer-events-none\",\n suffixClassName\n )}\n >\n {suffixContent}\n </span>\n )}\n </div>\n );\n\n if (!validationMessage) {\n return inputWithAffixes;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-1\", isFullWidth ? \"w-full\" : \"w-fit\", wrapperClassName)}>\n {hasPrefix || hasSuffix ? inputWithAffixes : inputElement}\n <p\n id={messageId}\n {...validationMessageRest}\n className={cn(\"flex items-center gap-2 text-sm text-destructive\", validationMessageClassName)}\n >\n {validationIcon ?? <CircleX className=\"size-4\" />}\n <span>{validationMessage}</span>\n </p>\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { InputPrimitive, Input, inputVariants };\n","import React from \"react\";\nimport { X } from \"lucide-react\";\nimport \"@/styles/index.css\";\n\ntype ClearButtonProps = {\n onClick?: () => void;\n title?: string;\n ariaLabel?: string;\n className?: string;\n};\n\nexport const ClearButton: React.FC<ClearButtonProps> = ({\n onClick,\n title = \"Clear\",\n ariaLabel = \"Clear value\",\n className = \"\"\n}) => {\n const triggerClear = () => {\n if (onClick) onClick();\n };\n\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n triggerClear();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.stopPropagation();\n triggerClear();\n }\n };\n\n return (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={`clear-button ${className}`.trim()}\n aria-label={ariaLabel}\n title={title}\n >\n <X className=\"icon\" />\n </span>\n );\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionTextInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"text\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\"\n />\n </FormControl>\n\n <span className=\"absolute inset-y-0 right-3 flex items-center\">\n {field.value && <ClearButton onClick={handleClear} />}\n </span>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionNumberInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n type=\"number\"\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 \"\n />\n </FormControl>\n\n <span className=\"absolute inset-y-0 right-3 flex items-center\">\n {field.value && <ClearButton onClick={handleClear} />}\n </span>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/utils\";\n\nconst buttonVariants = cva(\n \"disabled:bg-[#E1E1E1] disabled:text-[#BBBBBB] inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"bg-sus-primary-1 hover:bg-sus-primary-1/50 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n cancel:\n \"border bg-[#8B8B8B] text-accent-foreground shadow-xs hover:bg-accent hover:text-black dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n defaultSelect: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2\",\n defaultOutline:\n \"border bg-background py-2 shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n warning:\n \"border bg-[#f9d629] text-black shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-[#f9d629] dark:hover:bg-[#f9d629]/50\"\n },\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n active: {\n true: \"bg-sus-primary-1 text-white\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className, active }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"@/utils\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverArrow(props: React.ComponentProps<typeof PopoverPrimitive.Arrow>) {\n return <PopoverPrimitive.Arrow {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n children,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow };\n","\"use client\";\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"@/utils\";\n\ntype ButtonVariant =\n | \"default\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"destructive\"\n | \"secondary\"\n | null\n | undefined;\n\ntype DatePickerProps = {\n selectedDate?: Date;\n onDateSelect?: (date: Date) => void;\n onMonthForward?: () => void;\n onMonthBackward?: () => void;\n callbacks?: {\n yearLabel?: (year: number) => string;\n monthLabel?: (year: number, monthIndex: number) => string; // 0-11\n dayLabel?: (date: Date) => string | number; // สำหรับ custom แสดงเลขวัน\n weekdayLabel?: (index0Mon: number) => string; // 0 = Mon ... 6 = Sun\n };\n variant?: {\n day?: {\n main?: ButtonVariant;\n selected?: ButtonVariant;\n outside?: ButtonVariant; // วันที่นอกเดือน (optional)\n today?: ButtonVariant; // วันนี้ (optional)\n };\n chevrons?: ButtonVariant;\n };\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/** ---------- Utils ---------- */\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\nconst startOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n};\n\nconst clampToDay = (d?: Date) => (d ? startOfDay(d) : undefined);\n\nconst addMonths = (date: Date, n: number) => {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n};\n\nconst daysInMonth = (year: number, monthIndex: number) => new Date(year, monthIndex + 1, 0).getDate();\n\nconst DEFAULT_MONTH_FORMATTER = new Intl.DateTimeFormat(\"en-US\", { month: \"short\" });\n\n/** คืน array 6 แถว x 7 คอลัมน์ ของวันที่ (รวมวันนอกเดือนเพื่อเติมตาราง) */\nfunction buildCalendarGrid(displayed: Date, weekStartsOnMonday = true) {\n const year = displayed.getFullYear();\n const month = displayed.getMonth();\n\n const firstOfMonth = new Date(year, month, 1);\n const firstWeekday = firstOfMonth.getDay(); // 0 Sun - 6 Sat\n const offset =\n weekStartsOnMonday ?\n firstWeekday === 0 ?\n 6\n : firstWeekday - 1\n : firstWeekday;\n\n const totalDays = daysInMonth(year, month);\n\n const prevMonth = addMonths(firstOfMonth, -1);\n const prevMonthDays = daysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());\n\n const grid: { date: Date; inCurrentMonth: boolean }[] = [];\n\n // เติมวันของเดือนก่อนหน้า\n for (let i = offset - 1; i >= 0; i--) {\n const d = new Date(prevMonth.getFullYear(), prevMonth.getMonth(), prevMonthDays - i);\n grid.push({ date: d, inCurrentMonth: false });\n }\n // เติมวันของเดือนนี้\n for (let d = 1; d <= totalDays; d++) {\n grid.push({ date: new Date(year, month, d), inCurrentMonth: true });\n }\n // เติมวันของเดือนถัดไปให้ครบ 42 ช่อง\n while (grid.length < 42) {\n const last = grid[grid.length - 1].date;\n const next = new Date(last);\n next.setDate(last.getDate() + 1);\n grid.push({ date: next, inCurrentMonth: false });\n }\n\n // แบ่งเป็น 6 แถว\n const rows: (typeof grid)[] = [];\n for (let r = 0; r < 6; r++) rows.push(grid.slice(r * 7, r * 7 + 7));\n return rows;\n}\n\n/** ---------- Component ---------- */\nexport function DatePicker({\n selectedDate,\n onDateSelect,\n callbacks,\n onMonthBackward,\n onMonthForward,\n variant,\n minDate,\n maxDate,\n disabledDates,\n className,\n ...props\n}: DatePickerProps) {\n const today = React.useMemo(() => startOfDay(new Date()), []);\n const [displayed, setDisplayed] = React.useState<Date>(\n selectedDate ? new Date(selectedDate) : new Date()\n );\n\n // sanitize\n minDate = clampToDay(minDate);\n maxDate = clampToDay(maxDate);\n\n const disabledSet = React.useMemo(() => {\n const s = new Set<string>();\n disabledDates?.forEach((d) => s.add(startOfDay(d).toISOString()));\n return s;\n }, [disabledDates]);\n\n const displayYear = displayed.getFullYear();\n const displayMonth = displayed.getMonth();\n\n const weekdays = React.useMemo(() => {\n // จันทร์-อาทิตย์\n const labels: string[] = [];\n for (let i = 0; i < 7; i++) {\n const idx = i; // 0 Mon ... 6 Sun\n const fallback = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"][idx];\n labels.push(callbacks?.weekdayLabel?.(idx) ?? fallback);\n }\n return labels;\n }, [callbacks]);\n\n const grid = React.useMemo(() => buildCalendarGrid(displayed, true), [displayed]);\n\n const isDateDisabled = (date: Date) => {\n const d = startOfDay(date);\n if (minDate && d < minDate) return true;\n if (maxDate && d > maxDate) return true;\n if (disabledSet.has(d.toISOString())) return true;\n return false;\n };\n\n const minYear = minDate?.getFullYear();\n const maxYear = maxDate?.getFullYear();\n\n const getMonthLabel = React.useCallback(\n (year: number, monthIndex: number) => {\n const label = callbacks?.monthLabel?.(year, monthIndex);\n if (label === null || label === undefined) {\n return DEFAULT_MONTH_FORMATTER.format(new Date(year, monthIndex, 1));\n }\n return label;\n },\n [callbacks]\n );\n\n const getYearLabel = React.useCallback(\n (year: number) => {\n const label = callbacks?.yearLabel?.(year);\n if (label === null || label === undefined) return String(year);\n return typeof label === \"string\" ? label : String(label);\n },\n [callbacks]\n );\n\n const clampMonthToBounds = React.useCallback(\n (year: number, monthIndex: number) => {\n let output = monthIndex;\n if (typeof minYear === \"number\" && year === minYear && minDate) {\n const boundary = minDate.getMonth();\n if (output < boundary) output = boundary;\n }\n if (typeof maxYear === \"number\" && year === maxYear && maxDate) {\n const boundary = maxDate.getMonth();\n if (output > boundary) output = boundary;\n }\n return output;\n },\n [maxDate, minDate, maxYear, minYear]\n );\n\n const yearOptions = React.useMemo(() => {\n const fallbackWindow = 50;\n const start = typeof minYear === \"number\" ? minYear : displayYear - fallbackWindow;\n const end = typeof maxYear === \"number\" ? maxYear : displayYear + fallbackWindow;\n\n const years: number[] = [];\n for (let year = start; year <= end; year++) {\n years.push(year);\n }\n\n if (!years.includes(displayYear)) {\n years.push(displayYear);\n years.sort((a, b) => a - b);\n }\n\n if (selectedDate) {\n const selectedYear = selectedDate.getFullYear();\n if (!years.includes(selectedYear)) {\n years.push(selectedYear);\n years.sort((a, b) => a - b);\n }\n }\n\n return years;\n }, [displayYear, maxYear, minYear, selectedDate]);\n\n const monthOptions = React.useMemo(() => {\n const months = Array.from({ length: 12 }, (_, monthIndex) => {\n const disabled =\n (typeof minYear === \"number\" &&\n displayYear === minYear &&\n minDate &&\n monthIndex < minDate.getMonth()) ||\n (typeof maxYear === \"number\" &&\n displayYear === maxYear &&\n maxDate &&\n monthIndex > maxDate.getMonth());\n\n return {\n value: monthIndex,\n disabled,\n label: getMonthLabel(displayYear, monthIndex)\n };\n });\n\n const currentMonthExists = months.some((option) => option.value === displayMonth);\n if (!currentMonthExists) {\n months.push({\n value: displayMonth,\n disabled: false,\n label: getMonthLabel(displayYear, displayMonth)\n });\n }\n\n return months\n .sort((a, b) => a.value - b.value)\n .filter((option, index, arr) => index === 0 || option.value !== arr[index - 1].value);\n }, [displayMonth, displayYear, getMonthLabel, maxDate, maxYear, minDate, minYear]);\n\n const handleMonthSelect = React.useCallback((nextValue: string) => {\n const nextMonth = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextMonth)) return;\n\n setDisplayed((prev) => {\n const next = new Date(prev);\n next.setDate(1);\n next.setMonth(nextMonth);\n return next;\n });\n }, []);\n\n const handleYearSelect = React.useCallback(\n (nextValue: string) => {\n const nextYear = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextYear)) return;\n\n setDisplayed((prev) => {\n const next = new Date(prev);\n next.setFullYear(nextYear);\n const adjustedMonth = clampMonthToBounds(nextYear, next.getMonth());\n next.setMonth(adjustedMonth);\n next.setDate(1);\n return next;\n });\n },\n [clampMonthToBounds]\n );\n\n return (\n <div className={cn(\"min-w-[260px] w-[300px] p-3\", className)} {...props}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-2\">\n <button\n onClick={() => {\n setDisplayed(addMonths(displayed, -1));\n onMonthBackward?.();\n }}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex h-8 w-8 items-center justify-center p-0\"\n )}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4 opacity-70\" />\n </button>\n\n <Select value={String(displayMonth)} onValueChange={handleMonthSelect}>\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select month\"\n className=\"h-8 min-w-[110px] justify-between rounded-md border border-gray-200 bg-white px-3 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={getMonthLabel(displayYear, displayMonth)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {monthOptions.map((option) => (\n <SelectItem\n className=\"text-center w-full\"\n key={option.value}\n value={String(option.value)}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select value={String(displayYear)} onValueChange={handleYearSelect}>\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select year\"\n className=\"h-8 min-w-[90px] justify-between rounded-md border border-gray-200 bg-white px-3 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={getYearLabel(displayYear)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {yearOptions.map((year) => (\n <SelectItem\n key={year}\n value={String(year)}\n disabled={\n (typeof minYear === \"number\" && year < minYear) ||\n (typeof maxYear === \"number\" && year > maxYear)\n }\n >\n {getYearLabel(year)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <button\n onClick={() => {\n setDisplayed(addMonths(displayed, 1));\n onMonthForward?.();\n }}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex h-8 w-8 items-center justify-center p-0\"\n )}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4 opacity-70\" />\n </button>\n </div>\n\n {/* Weekday header */}\n <div className=\"grid grid-cols-7 text-[11px] text-muted-foreground mb-1\">\n {weekdays.map((w, i) => (\n <div key={i} className=\"text-center py-1\">\n {w}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {grid.map((row, r) =>\n row.map(({ date, inCurrentMonth }, c) => {\n const selected = selectedDate && isSameDay(date, selectedDate);\n const isToday = isSameDay(date, today);\n const disabled = isDateDisabled(date);\n\n // เลือก variant ของปุ่มวัน\n let variantName: ButtonVariant = variant?.day?.main ?? \"ghost\";\n if (!inCurrentMonth) variantName = variant?.day?.outside ?? \"ghost\";\n if (isToday && !selected) variantName = variant?.day?.today ?? variantName;\n if (selected) variantName = variant?.day?.selected ?? \"default\";\n\n const label = callbacks?.dayLabel?.(date) ?? date.getDate();\n\n return (\n <button\n key={`${r}-${c}`}\n onClick={() => !disabled && onDateSelect?.(date)}\n disabled={disabled || !inCurrentMonth}\n className={cn(\n buttonVariants({ variant: variantName }),\n \"h-9 w-full p-0 text-sm font-normal rounded-md transition-all duration-150\",\n \"border border-transparent\",\n !inCurrentMonth && \"opacity-50 pointer-events-none\",\n selected ? \"bg-[#379a2a] text-white\" : (\n \"bg-white text-black hover:border-[#379a2a] hover:bg-green-50 active:bg-green-100\"\n )\n )}\n aria-selected={selected}\n aria-label={date.toDateString()}\n >\n {label}\n </button>\n );\n })\n )}\n </div>\n </div>\n );\n}\n\n/* ===== Example usage =====\n<DatePicker\n selectedDate={value}\n onDateSelect={(d) => setValue(d)}\n minDate={new Date(2020,0,1)}\n maxDate={new Date(2030,11,31)}\n disabledDates={[new Date(2025,0,1)]}\n/>\n*/\n","import React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format, isValid, parseISO } from \"date-fns\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { DatePicker as CalendarDatePicker } from \"@/components/ui/datepicker\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\n\ntype CalendarProps = React.ComponentProps<typeof CalendarDatePicker>;\n\nconst defaultDisplayFormatter = (date: Date) => format(date, \"dd/MM/yyyy\");\nconst defaultValueFormatter = (date: Date) => format(date, \"yyyy-MM-dd\");\nconst defaultValueParser = (value: string) => {\n const parsed = parseISO(value);\n return isValid(parsed) ? parsed : undefined;\n};\n\nexport type DatePickerProps = {\n value?: Date | string | null;\n onChange?: (date?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n allowClear?: boolean;\n displayFormatter?: (date: Date) => string;\n valueFormatter?: (date: Date) => string;\n valueParser?: (value: string) => Date | undefined;\n buttonClassName?: string;\n wrapperClassName?: string;\n invalid?: boolean;\n calendarClassName?: string;\n popoverContentClassName?: string;\n disabled?: boolean;\n closeOnSelect?: boolean;\n clearAriaLabel?: string;\n ariaLabel?: string;\n} & Omit<CalendarProps, \"selectedDate\" | \"onDateSelect\" | \"className\">;\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n onChange,\n onValueChange,\n placeholder = \"DD/MM/YYYY\",\n allowClear = true,\n displayFormatter,\n valueFormatter,\n valueParser,\n buttonClassName,\n wrapperClassName,\n invalid = false,\n calendarClassName,\n popoverContentClassName,\n disabled = false,\n closeOnSelect = true,\n clearAriaLabel = \"Clear date\",\n ariaLabel,\n ...calendarProps\n}) => {\n const [open, setOpen] = React.useState(false);\n\n const parser = React.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);\n const outputFormatter = React.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);\n const labelFormatter = React.useMemo(\n () => displayFormatter ?? defaultDisplayFormatter,\n [displayFormatter]\n );\n\n const parsedValue = React.useMemo(() => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value;\n const parsed = parser(value);\n return parsed && isValid(parsed) ? parsed : undefined;\n }, [parser, value]);\n\n const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder;\n const buttonAriaLabel =\n ariaLabel ??\n (parsedValue ? `Change date, current selection ${labelFormatter(parsedValue)}` : \"Open date picker\");\n\n const shouldShowClear = allowClear && !disabled && !!parsedValue;\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n onChange?.(next);\n onValueChange?.(next ? outputFormatter(next) : undefined);\n },\n [onChange, onValueChange, outputFormatter]\n );\n\n const handleSelect = React.useCallback(\n (next?: Date) => {\n emitChange(next);\n if (closeOnSelect && next) handleClose();\n },\n [closeOnSelect, emitChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n emitChange(undefined);\n handleClose();\n }, [emitChange, handleClose]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n setOpen(nextOpen);\n },\n [disabled]\n );\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"relative !flex w-full items-center justify-between rounded-md bg-white pl-4 text-left text-sm font-medium shadow-none hover:bg-white focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"min-h-[36px]\",\n !parsedValue ? \"text-gray-400\" : \"text-gray-700\",\n invalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/30\",\n shouldShowClear ? \"pr-8\" : \"pr-4\",\n buttonClassName\n )}\n aria-invalid={invalid || undefined}\n aria-label={buttonAriaLabel}\n >\n <span className=\"flex-1 truncate\">{buttonLabel}</span>\n <span className=\"flex items-center gap-2 text-[#9CA3AF] shrink-0\">\n <CalendarIcon className=\"h-4 w-4\" />\n </span>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <CalendarDatePicker\n {...calendarProps}\n className={calendarClassName}\n selectedDate={parsedValue}\n onDateSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearAriaLabel}\n title={clearAriaLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n </div>\n </div>\n );\n};\n","export const fallbackShortDateFormat = \"DD/MM/YYYY\";\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { DatePicker } from \"@/components/datePicker\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\nimport { fallbackShortDateFormat } from \"../../constants\";\nimport { formatISODate } from \"@/utils\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n shortDateFormat?: string;\n}\n\nexport const ConditionDateInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n shortDateFormat = fallbackShortDateFormat\n}) => {\n const isBetween = row.operator === \"between\";\n\n const buildAriaLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Select end date\";\n if (isBetween) return \"Select start date\";\n return \"Select date\";\n };\n\n const buildClearLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Clear end date\";\n if (isBetween) return \"Clear start date\";\n return \"Clear date\";\n };\n\n const renderPicker = (fieldName: string, which: \"value\" | \"value2\", options?: { isEnd?: boolean }) => (\n <FormField\n control={control}\n name={fieldName}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const handleValueChange = (next?: string) => {\n field.onChange(next ?? undefined);\n if (!next) {\n onClear(which);\n }\n };\n\n return (\n <FormItem className=\"relative w-full min-w-0\">\n <FormControl>\n <DatePicker\n {...field}\n value={field.value || undefined}\n onValueChange={handleValueChange}\n placeholder={shortDateFormat}\n ariaLabel={buildAriaLabel(options?.isEnd)}\n clearAriaLabel={buildClearLabel(options?.isEnd)}\n invalid={Boolean(fieldState.error)}\n displayFormatter={(d) => formatISODate(d, shortDateFormat)}\n wrapperClassName=\"min-w-0\"\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n );\n\n if (isBetween) {\n return (\n <div className=\"grid items-center gap-3 md:grid-cols-[1fr_auto_1fr] max-w-full min-w-0\">\n <div className=\"min-w-0\">{renderPicker(`value_${row.id}`, \"value\")}</div>\n <span className=\"text-center font-bold text-inherit whitespace-nowrap\">To</span>\n <div className=\"min-w-0\">{renderPicker(`value2_${row.id}`, \"value2\", { isEnd: true })}</div>\n </div>\n );\n }\n\n return renderPicker(`value_${row.id}`, \"value\");\n};\n","\"use client\";\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"@/utils\";\n\ntype ButtonVariant =\n | \"default\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"destructive\"\n | \"secondary\"\n | null\n | undefined;\n\ntype MonthCell = {\n number: number;\n name: string;\n};\n\nconst MONTHS: MonthCell[][] = [\n [\n { number: 0, name: \"Jan\" },\n { number: 1, name: \"Feb\" },\n { number: 2, name: \"Mar\" },\n { number: 3, name: \"Apr\" }\n ],\n [\n { number: 4, name: \"May\" },\n { number: 5, name: \"Jun\" },\n { number: 6, name: \"Jul\" },\n { number: 7, name: \"Aug\" }\n ],\n [\n { number: 8, name: \"Sep\" },\n { number: 9, name: \"Oct\" },\n { number: 10, name: \"Nov\" },\n { number: 11, name: \"Dec\" }\n ]\n];\n\ntype MonthPickerCallbacks = {\n yearLabel?: (year: number) => string;\n monthLabel?: (month: MonthCell) => string;\n};\n\ntype MonthPickerVariant = {\n calendar?: {\n main?: ButtonVariant;\n selected?: ButtonVariant;\n };\n chevrons?: ButtonVariant;\n};\n\nexport type MonthPickerProps = {\n selectedDate?: Date;\n onDateSelect?: (date?: Date) => void;\n onYearForward?: () => void;\n onYearBackward?: () => void;\n callbacks?: MonthPickerCallbacks;\n variant?: MonthPickerVariant;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n} & React.HTMLAttributes<HTMLDivElement>;\n\ntype MonthCalProps = Pick<\n MonthPickerProps,\n | \"selectedDate\"\n | \"onDateSelect\"\n | \"onYearForward\"\n | \"onYearBackward\"\n | \"callbacks\"\n | \"variant\"\n | \"minDate\"\n | \"maxDate\"\n | \"disabledDates\"\n>;\n\nconst normalizeMonth = (input?: Date) => {\n if (!input) return undefined;\n const next = new Date(input);\n next.setDate(1);\n next.setHours(0, 0, 0, 0);\n return next;\n};\n\nfunction MonthPicker({\n selectedDate,\n onDateSelect,\n minDate,\n maxDate,\n disabledDates,\n callbacks,\n onYearBackward,\n onYearForward,\n variant,\n className,\n ...props\n}: MonthPickerProps) {\n return (\n <div className={cn(\"min-w-[200px] w-[280px] p-3\", className)} {...props}>\n <div className=\"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\">\n <div className=\"space-y-4 w-full\">\n <MonthCal\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n callbacks={callbacks}\n onYearBackward={onYearBackward}\n onYearForward={onYearForward}\n variant={variant}\n minDate={minDate}\n maxDate={maxDate}\n disabledDates={disabledDates}\n />\n </div>\n </div>\n </div>\n );\n}\n\nfunction MonthCal({\n selectedDate,\n onDateSelect,\n callbacks,\n variant,\n minDate,\n maxDate,\n disabledDates,\n onYearBackward,\n onYearForward\n}: MonthCalProps) {\n const today = React.useMemo(() => {\n const now = new Date();\n now.setDate(1);\n now.setHours(0, 0, 0, 0);\n return now;\n }, []);\n\n const selectedMonthDate = React.useMemo(() => normalizeMonth(selectedDate), [selectedDate]);\n const min = React.useMemo(() => normalizeMonth(minDate), [minDate]);\n const max = React.useMemo(() => normalizeMonth(maxDate), [maxDate]);\n\n let effectiveMin = min;\n if (min && max && min > max) {\n effectiveMin = max;\n }\n\n const minYear = effectiveMin?.getFullYear();\n const minMonth = effectiveMin?.getMonth();\n const maxYear = max?.getFullYear();\n const maxMonth = max?.getMonth();\n\n const [menuYear, setMenuYear] = React.useState(\n () => selectedMonthDate?.getFullYear() ?? today.getFullYear()\n );\n\n React.useEffect(() => {\n if (selectedMonthDate) {\n const year = selectedMonthDate.getFullYear();\n if (year !== menuYear) {\n setMenuYear(year);\n }\n }\n }, [selectedMonthDate, menuYear]);\n\n React.useEffect(() => {\n if (typeof minYear === \"number\" && menuYear < minYear) {\n setMenuYear(minYear);\n return;\n }\n if (typeof maxYear === \"number\" && menuYear > maxYear) {\n setMenuYear(maxYear);\n }\n }, [minYear, maxYear, menuYear]);\n\n const disablePrevYear = typeof minYear === \"number\" ? menuYear <= minYear : false;\n const disableNextYear = typeof maxYear === \"number\" ? menuYear >= maxYear : false;\n\n const yearOptions = React.useMemo(() => {\n const fallbackWindow = 50;\n const start = typeof minYear === \"number\" ? minYear : menuYear - fallbackWindow;\n const end = typeof maxYear === \"number\" ? maxYear : menuYear + fallbackWindow;\n\n const years: number[] = [];\n for (let year = start; year <= end; year++) {\n years.push(year);\n }\n\n if (!years.includes(menuYear)) {\n years.push(menuYear);\n years.sort((a, b) => a - b);\n }\n\n return years;\n }, [maxYear, menuYear, minYear]);\n\n const formatYearLabel = React.useCallback(\n (year: number) => {\n const raw = callbacks?.yearLabel?.(year);\n if (raw === null || raw === undefined) return String(year);\n return typeof raw === \"string\" ? raw : String(raw);\n },\n [callbacks]\n );\n\n const handleYearSelect = React.useCallback(\n (nextValue: string) => {\n const nextYear = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextYear)) return;\n if (typeof minYear === \"number\" && nextYear < minYear) return;\n if (typeof maxYear === \"number\" && nextYear > maxYear) return;\n setMenuYear(nextYear);\n },\n [maxYear, minYear]\n );\n\n const disabledPairs = React.useMemo(() => {\n if (!disabledDates?.length) return [] as { year: number; month: number }[];\n const pairs: { year: number; month: number }[] = [];\n disabledDates.forEach((date) => {\n const normalized = normalizeMonth(date);\n if (normalized) {\n pairs.push({\n year: normalized.getFullYear(),\n month: normalized.getMonth()\n });\n }\n });\n return pairs;\n }, [disabledDates]);\n\n return (\n <>\n <div className=\"flex items-center justify-between\">\n <button\n onClick={() => {\n if (disablePrevYear) return;\n setMenuYear((prev) => prev - 1);\n onYearBackward?.();\n }}\n disabled={disablePrevYear}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex items-center justify-center h-7 w-7 p-0\"\n )}\n >\n <ChevronLeft className=\"opacity-50 h-4 w-4\" />\n </button>\n\n <Select\n value={String(menuYear)}\n onValueChange={handleYearSelect}\n disabled={disablePrevYear && disableNextYear}\n >\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select year\"\n className=\"h-7 w-[100px] justify-center rounded-md border border-gray-200 bg-white px-2 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={formatYearLabel(menuYear)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {yearOptions.map((year) => (\n <SelectItem\n key={year}\n value={String(year)}\n disabled={\n (typeof minYear === \"number\" && year < minYear) ||\n (typeof maxYear === \"number\" && year > maxYear)\n }\n >\n {formatYearLabel(year)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <button\n onClick={() => {\n if (disableNextYear) return;\n setMenuYear((prev) => prev + 1);\n onYearForward?.();\n }}\n disabled={disableNextYear}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex items-center justify-center h-7 w-7 p-0\"\n )}\n >\n <ChevronRight className=\"opacity-50 h-4 w-4\" />\n </button>\n </div>\n\n <table className=\"w-full border-collapse space-y-1\">\n <tbody>\n {MONTHS.map((row, rowIndex) => (\n <tr key={\"row-\" + rowIndex} className=\"flex w-full mt-2 gap-2\">\n {row.map((m) => {\n const afterMax =\n maxMonth !== undefined && maxYear !== undefined ?\n menuYear > maxYear || (menuYear === maxYear && m.number > maxMonth)\n : false;\n const beforeMin =\n minMonth !== undefined && minYear !== undefined ?\n menuYear < minYear || (menuYear === minYear && m.number < minMonth)\n : false;\n const disabledByList = disabledPairs.some(\n (d) => d.year === menuYear && d.month === m.number\n );\n\n const isDisabled = afterMax || beforeMin || disabledByList;\n const isSelected =\n !isDisabled &&\n !!selectedMonthDate &&\n selectedMonthDate.getFullYear() === menuYear &&\n selectedMonthDate.getMonth() === m.number;\n\n return (\n <td key={m.number} className=\"h-10 w-1/4 text-center text-sm p-0 relative\">\n <button\n onClick={() => {\n if (isDisabled) return;\n if (\n selectedMonthDate &&\n selectedMonthDate.getFullYear() === menuYear &&\n selectedMonthDate.getMonth() === m.number\n ) {\n onDateSelect?.(undefined);\n } else {\n const next = new Date(menuYear, m.number, 1);\n next.setHours(0, 0, 0, 0);\n onDateSelect?.(next);\n }\n }}\n disabled={isDisabled}\n className={cn(\n buttonVariants({\n variant:\n isSelected ?\n (variant?.calendar?.selected ?? \"default\")\n : (variant?.calendar?.main ?? \"ghost\")\n }),\n \"h-9 w-full p-0 text-sm font-normal rounded-md transition-all duration-150\",\n \"border border-transparent\",\n\n isDisabled && \"opacity-50 pointer-events-none\",\n\n isSelected ?\n \"bg-[#379a2a] text-white hover:bg-[#2f8524] active:bg-[#276f1e]\"\n : \"bg-white text-black hover:border-[#379a2a] hover:bg-green-50 active:bg-green-100\"\n )}\n >\n {callbacks?.monthLabel ? callbacks.monthLabel(m) : m.name}\n </button>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </>\n );\n}\n\nMonthPicker.displayName = \"MonthPicker\";\n\nexport { MonthPicker };\n","import React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format, isValid, parseISO } from \"date-fns\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { MonthPicker as CalendarMonthPicker } from \"@/components/ui/monthpicker\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\n\ntype CalendarProps = React.ComponentProps<typeof CalendarMonthPicker>;\n\nconst normalizeMonth = (input?: Date | null) => {\n if (!input || !isValid(input)) return undefined;\n const normalized = new Date(input);\n normalized.setDate(1);\n normalized.setHours(0, 0, 0, 0);\n return normalized;\n};\n\nconst defaultDisplayFormatter = (month: Date) => format(month, \"MMM yyyy\");\nconst defaultValueFormatter = (month: Date) => format(month, \"yyyy-MM\");\nconst defaultValueParser = (value: string) => normalizeMonth(parseISO(value));\n\nexport type MonthPickerProps = {\n value?: Date | string | null;\n onChange?: (month?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n allowClear?: boolean;\n displayFormatter?: (month: Date) => string;\n valueFormatter?: (month: Date) => string;\n valueParser?: (value: string) => Date | undefined;\n buttonClassName?: string;\n wrapperClassName?: string;\n invalid?: boolean;\n calendarClassName?: string;\n popoverContentClassName?: string;\n disabled?: boolean;\n closeOnSelect?: boolean;\n clearAriaLabel?: string;\n ariaLabel?: string;\n} & Omit<CalendarProps, \"selectedDate\" | \"onDateSelect\" | \"className\">;\n\nexport const MonthPicker: React.FC<MonthPickerProps> = ({\n value,\n onChange,\n onValueChange,\n placeholder = \"MM/YYYY\",\n allowClear = true,\n displayFormatter,\n valueFormatter,\n valueParser,\n buttonClassName,\n wrapperClassName,\n invalid = false,\n calendarClassName,\n popoverContentClassName,\n disabled = false,\n closeOnSelect = true,\n clearAriaLabel = \"Clear month\",\n ariaLabel,\n ...calendarProps\n}) => {\n const [open, setOpen] = React.useState(false);\n\n const parser = React.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);\n const outputFormatter = React.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);\n const labelFormatter = React.useMemo(\n () => displayFormatter ?? defaultDisplayFormatter,\n [displayFormatter]\n );\n\n const parsedValue = React.useMemo(() => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return normalizeMonth(value);\n if (typeof value === \"string\") {\n const parsed = parser(value);\n return parsed ? normalizeMonth(parsed) : undefined;\n }\n return undefined;\n }, [parser, value]);\n\n const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder;\n const buttonAriaLabel =\n ariaLabel ??\n (parsedValue ?\n `Change month, current selection ${labelFormatter(parsedValue)}`\n : \"Open month picker\");\n\n const shouldShowClear = allowClear && !disabled && !!parsedValue;\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n const normalized = next ? normalizeMonth(next) : undefined;\n onChange?.(normalized);\n onValueChange?.(normalized ? outputFormatter(normalized) : undefined);\n },\n [onChange, onValueChange, outputFormatter]\n );\n\n const handleSelect = React.useCallback(\n (next?: Date) => {\n emitChange(next);\n if (closeOnSelect && next) handleClose();\n },\n [closeOnSelect, emitChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n emitChange(undefined);\n handleClose();\n }, [emitChange, handleClose]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n setOpen(nextOpen);\n },\n [disabled]\n );\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"relative !flex w-full items-center justify-between rounded-md bg-white pl-4 text-left text-sm font-medium shadow-none hover:bg-white focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"min-h-[36px]\",\n !parsedValue ? \"text-gray-400\" : \"text-gray-700\",\n invalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/30\",\n shouldShowClear ? \"pr-8\" : \"pr-4\",\n buttonClassName\n )}\n aria-invalid={invalid || undefined}\n aria-label={buttonAriaLabel}\n >\n <span className=\"flex-1 truncate\">{buttonLabel}</span>\n <span className=\"flex items-center gap-2 text-[#9CA3AF] shrink-0\">\n <CalendarIcon className=\"h-4 w-4\" />\n </span>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <CalendarMonthPicker\n {...calendarProps}\n className={calendarClassName}\n selectedDate={parsedValue}\n onDateSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearAriaLabel}\n title={clearAriaLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { format } from \"date-fns\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { MonthPicker } from \"@/components/monthPicker\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nconst placeholder = \"MM/YYYY\";\n\nexport const ConditionMonthInput: React.FC<Props> = ({ row, control, onClear }) => {\n const isBetween = row.operator === \"between\";\n\n const buildAriaLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Select end month\";\n if (isBetween) return \"Select start month\";\n return \"Select month\";\n };\n\n const buildClearLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Clear end month\";\n if (isBetween) return \"Clear start month\";\n return \"Clear month\";\n };\n\n const renderPicker = (fieldName: string, which: \"value\" | \"value2\", options?: { isEnd?: boolean }) => (\n <FormField\n control={control}\n name={fieldName}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = field.value || undefined;\n\n const handleValueChange = (next?: string) => {\n field.onChange(next ?? undefined);\n if (!next) {\n onClear(which);\n }\n };\n\n return (\n <FormItem className=\"relative w-full min-w-0\">\n <FormControl>\n <MonthPicker\n {...field}\n value={value}\n onValueChange={handleValueChange}\n placeholder={placeholder}\n ariaLabel={buildAriaLabel(options?.isEnd)}\n clearAriaLabel={buildClearLabel(options?.isEnd)}\n displayFormatter={(month) => format(month, \"MM/yyyy\")}\n invalid={Boolean(fieldState.error)}\n wrapperClassName=\"min-w-0\"\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n );\n\n if (isBetween) {\n return (\n <div className=\"grid items-center gap-3 md:grid-cols-[1fr_auto_1fr] max-w-full min-w-0\">\n <div className=\"min-w-0\">{renderPicker(`value_${row.id}`, \"value\")}</div>\n\n <span className=\"text-center font-bold text-inherit whitespace-nowrap\">To</span>\n\n <div className=\"min-w-0\">{renderPicker(`value2_${row.id}`, \"value2\", { isEnd: true })}</div>\n </div>\n );\n }\n\n return renderPicker(`value_${row.id}`, \"value\");\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\nimport type { RowState, FieldSchema } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n fieldSchema?: FieldSchema;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionDropdownInput: React.FC<Props> = ({ row, control, fieldSchema, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n const hasValue = Boolean(field.value);\n const clearLabel = \"Clear selected value\";\n\n return (\n <FormItem className=\"relative\">\n <Select value={field.value ?? \"\"} onValueChange={field.onChange}>\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\",\n hasValue ? \"pr-8\" : \"pr-4\"\n )}\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"w-full min-w-[unset]\">\n {fieldSchema &&\n \"options\" in fieldSchema &&\n fieldSchema.options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {hasValue && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearLabel}\n title={clearLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionCheckboxInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n const hasValue = Boolean(field.value);\n const clearLabel = \"Clear selected value\";\n\n return (\n <FormItem className=\"relative w-full\">\n <Select value={field.value ?? \"\"} onValueChange={field.onChange}>\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\",\n hasValue ? \"pr-8\" : \"pr-4\"\n )}\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"w-full min-w-[unset]\">\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n {hasValue && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearLabel}\n title={clearLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Search, X } from \"lucide-react\";\nimport { NotFoundIcon } from \"@/components/icons\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\n\nexport interface LookupSelectOption {\n value: string;\n label: string;\n}\n\nexport interface LookupSelectProps {\n value?: string[];\n onChange: (tags: string[]) => void;\n placeholder?: string;\n onClear?: () => void;\n error?: boolean;\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<LookupSelectOption[]>;\n suggestionDebounce?: number;\n noOptionsMessage?: string;\n loadingMessage?: string;\n dropdownPortalId?: string;\n}\n\nexport const LookupSelect: React.FC<LookupSelectProps> = ({\n value = [],\n onChange,\n onClear,\n error,\n placeholder,\n maxTags = 10,\n fetchSuggestions,\n suggestionDebounce = 250,\n noOptionsMessage = \"No records found. Please try a different search.\",\n loadingMessage = \"Loading...\",\n dropdownPortalId\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n const [suggestions, setSuggestions] = useState<LookupSelectOption[]>([]);\n const [optionLabels, setOptionLabels] = useState<Record<string, string>>({});\n const [loading, setLoading] = useState(false);\n const [fetchError, setFetchError] = useState<string | null>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const fetchDelayRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const requestIdRef = useRef(0);\n const [dropdownStyles, setDropdownStyles] = useState<React.CSSProperties>();\n const dropdownContentRef = useRef<HTMLDivElement | null>(null);\n const assignDropdownContentRef = useCallback((node: HTMLDivElement | null) => {\n dropdownContentRef.current = node;\n }, []);\n\n const dropdownPortalElement = useMemo(() => {\n if (typeof document === \"undefined\") return null;\n if (dropdownPortalId) {\n const element = document.getElementById(dropdownPortalId);\n if (element) return element;\n }\n\n return document.body;\n }, [dropdownPortalId]);\n\n const limitReached = value.length >= maxTags;\n\n const upsertOptionLabels = useCallback((options: LookupSelectOption[]) => {\n setOptionLabels((prev) => {\n let next: Record<string, string> | null = null;\n options.forEach((opt) => {\n if (prev[opt.value] === opt.label) return;\n if (!next) {\n next = { ...prev };\n }\n next[opt.value] = opt.label;\n });\n return next ?? prev;\n });\n }, []);\n\n const addTag = useCallback(\n (val: string) => {\n const trimmed = val.trim();\n if (!trimmed) return;\n if (value.includes(trimmed)) return;\n if (value.length >= maxTags) return;\n\n onChange([...value, trimmed]);\n setInputValue(\"\");\n setSuggestions([]);\n setIsDropdownOpen(false);\n },\n [value, onChange, maxTags]\n );\n\n const removeTag = useCallback(\n (index: number) => {\n if (index < 0) return;\n const newTags = value.filter((_, i) => i !== index);\n onChange(newTags);\n },\n [value, onChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n }\n if (e.key === \"Backspace\" && !inputValue) {\n removeTag(value.length - 1);\n }\n },\n [inputValue, removeTag, value.length]\n );\n\n const handleClear = useCallback(() => {\n setInputValue(\"\");\n setSuggestions([]);\n setIsDropdownOpen(false);\n setFetchError(null);\n if (onClear) onClear();\n }, [onClear]);\n\n const handleSuggestionSelect = useCallback(\n (option: LookupSelectOption) => {\n upsertOptionLabels([option]);\n addTag(option.value);\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n },\n [addTag, upsertOptionLabels]\n );\n\n const updateDropdownPosition = useCallback(() => {\n if (!dropdownPortalElement || !containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n setDropdownStyles({\n position: \"absolute\",\n top: rect.bottom + window.scrollY + 4,\n left: rect.left + window.scrollX,\n width: rect.width,\n zIndex: 50\n });\n }, [dropdownPortalElement]);\n\n useEffect(() => {\n if (!fetchSuggestions) return;\n\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n\n const query = inputValue.trim();\n\n if (!query) {\n setSuggestions([]);\n setIsDropdownOpen(false);\n setLoading(false);\n setFetchError(null);\n return;\n }\n\n setLoading(true);\n setFetchError(null);\n const requestId = ++requestIdRef.current;\n\n fetchDelayRef.current = setTimeout(() => {\n fetchSuggestions(query)\n .then((items) => {\n if (requestIdRef.current !== requestId) return;\n setSuggestions(items);\n upsertOptionLabels(items);\n setIsDropdownOpen(true);\n })\n .catch((err) => {\n if (requestIdRef.current !== requestId) return;\n console.error(\"Failed to fetch lookup options\", err);\n setSuggestions([]);\n setIsDropdownOpen(false);\n setFetchError(\"Failed to load options\");\n })\n .finally(() => {\n if (requestIdRef.current === requestId) {\n setLoading(false);\n }\n });\n }, suggestionDebounce);\n\n return () => {\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n };\n }, [inputValue, fetchSuggestions, suggestionDebounce, upsertOptionLabels]);\n\n useEffect(() => {\n const handleDocumentClick = (event: MouseEvent) => {\n const target = event.target as Node;\n if (containerRef.current?.contains(target)) return;\n if (dropdownContentRef.current?.contains(target)) return;\n setIsDropdownOpen(false);\n };\n\n document.addEventListener(\"mousedown\", handleDocumentClick);\n return () => {\n document.removeEventListener(\"mousedown\", handleDocumentClick);\n };\n }, []);\n\n useEffect(() => {\n if (!limitReached) return;\n setIsDropdownOpen(false);\n }, [limitReached]);\n\n useEffect(() => {\n if (!dropdownPortalElement) return;\n if (!isDropdownOpen) return;\n\n updateDropdownPosition();\n\n const handleReposition = () => updateDropdownPosition();\n\n window.addEventListener(\"resize\", handleReposition);\n window.addEventListener(\"scroll\", handleReposition, true);\n\n return () => {\n window.removeEventListener(\"resize\", handleReposition);\n window.removeEventListener(\"scroll\", handleReposition, true);\n };\n }, [dropdownPortalElement, isDropdownOpen, updateDropdownPosition]);\n\n const resolvedPlaceholder = placeholder ?? \"Select\";\n const showDropdown = isDropdownOpen && !fetchError;\n\n const dropdownContent = (\n <div className=\"overflow-hidden rounded-md border border-gray-200 bg-white shadow-lg\">\n {loading ?\n <div className=\"px-3 py-2 text-sm text-inherit\">{loadingMessage}</div>\n : suggestions.length === 0 ?\n <div className=\"flex flex-col items-center justify-center px-3 py-4 text-sm text-inherit text-center\">\n <NotFoundIcon className=\"w-full max-w-[80px] h-auto\" />\n <span className=\"pt-3\">{noOptionsMessage}</span>\n </div>\n : <ul className=\"max-h-48 overflow-y-auto py-1\">\n {suggestions.map((option) => {\n const disabled = value.includes(option.value) || limitReached;\n return (\n <li key={option.value}>\n <button\n type=\"button\"\n className={`flex w-full items-center justify-between px-3 py-2 text-left text-sm transition hover:bg-gray-100\n ${disabled ? \"cursor-not-allowed text-gray-400\" : \"text-gray-700\"}`}\n onClick={() => handleSuggestionSelect(option)}\n disabled={disabled}\n >\n <span className=\"truncate\">{option.label}</span>\n </button>\n </li>\n );\n })}\n </ul>\n }\n </div>\n );\n\n const renderDropdown = () => {\n if (!showDropdown) return null;\n\n if (dropdownPortalElement && dropdownStyles) {\n return createPortal(\n <div ref={assignDropdownContentRef} style={dropdownStyles}>\n {dropdownContent}\n </div>,\n dropdownPortalElement\n );\n }\n\n return (\n <div ref={assignDropdownContentRef} className=\"absolute left-0 right-0 top-full z-10 mt-1\">\n {dropdownContent}\n </div>\n );\n };\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <div\n className={`flex min-h-[36px] items-center gap-3 rounded-md border bg-white px-3 transition-all \n ${error ? \"border-red-500 focus-within:ring-red-500\" : \"border-gray-300 \"}`}\n >\n <div className=\"flex flex-1 flex-wrap content-start gap-1 overflow-y-auto max-h-[72px] hide-scrollbar pr-4\">\n {value.map((tag, i) => {\n const label = optionLabels[tag] ?? tag;\n return (\n <span\n key={`${tag}-${i}`}\n className=\"flex items-center gap-1 rounded-lg border border-[#f0f0f0] bg-[#f9f9f9] px-2 py-1 my-1 text-sm text-inherit max-w-full break-words\"\n >\n <span className=\"whitespace-pre-wrap break-all\">{label}</span>\n <button\n type=\"button\"\n onClick={() => removeTag(i)}\n className=\"text-inherit transition hover:text-red-500\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n );\n })}\n {!limitReached && (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (suggestions.length > 0 && !fetchError) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={(value.length === 0 && resolvedPlaceholder) || \"\"}\n className=\"min-w-[120px] flex-1 border-none bg-transparent py-1 text-sm text-gray-600 placeholder:text-gray-400 outline-none\"\n disabled={limitReached}\n />\n )}\n </div>\n\n <div className=\"flex justify-end items-center gap-2 pointer-events-auto h-fit\">\n {value.length === 0 ?\n <span className=\"flex h-7 w-7 items-center justify-center text-inherit\">\n <Search className=\"h-4 w-4\" />\n </span>\n : <ClearButton\n onClick={handleClear}\n className=\"flex h-7 w-7 items-center justify-center rounded-full text-inherit transition hover:text-red-500\"\n aria-label=\"Clear selected values\"\n />\n }\n </div>\n </div>\n\n {renderDropdown()}\n\n {fetchError && <p className=\"mt-1 text-xs text-red-600\">{fetchError}</p>}\n {limitReached && !fetchError && maxTags !== 1 && (\n <p className=\"mt-1 text-xs text-inherit\">Maximum {maxTags} tags reached.</p>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { LookupSelect } from \"@/components/lookupSelect\";\nimport type { LookupFieldSchema, RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n fieldSchema?: LookupFieldSchema;\n dropdownPortalId?: string;\n}\n\nexport const ConditionLookupInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n fieldSchema,\n dropdownPortalId\n}) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (tags: string[]) => {\n field.onChange(tags);\n };\n\n const handleClear = () => {\n field.onChange([]);\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative w-full overflow-x-hidden\">\n <FormControl>\n <LookupSelect\n value={value}\n onChange={handleChange}\n onClear={handleClear}\n error={Boolean(fieldState.error)}\n placeholder={fieldSchema?.placeholder}\n maxTags={fieldSchema?.maxTags}\n fetchSuggestions={fieldSchema?.fetchSuggestions}\n suggestionDebounce={fieldSchema?.suggestionDebounce}\n noOptionsMessage={fieldSchema?.noOptionsMessage}\n loadingMessage={fieldSchema?.loadingMessage}\n dropdownPortalId={dropdownPortalId}\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { LookupSelect } from \"@/components/lookupSelect\";\nimport type { JSONFieldSchema, RowState } from \"@/components/advanceSearch/types\";\nimport { Input } from \"@/components/input\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n fieldSchema?: JSONFieldSchema;\n dropdownPortalId?: string;\n}\n\nexport const ConditionJSONInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n fieldSchema,\n dropdownPortalId\n}) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (tags: string[]) => {\n field.onChange(tags);\n };\n\n const handleClear = () => {\n field.onChange([]);\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative w-full overflow-x-hidden\">\n <FormControl>\n {fieldSchema?.fetchSuggestions ?\n <LookupSelect\n value={value}\n onChange={handleChange}\n onClear={handleClear}\n error={Boolean(fieldState.error)}\n placeholder={fieldSchema?.placeholder}\n maxTags={row.operator === \"containsAny\" ? fieldSchema?.maxTags : 1}\n fetchSuggestions={fieldSchema?.fetchSuggestions}\n suggestionDebounce={fieldSchema?.suggestionDebounce}\n noOptionsMessage={fieldSchema?.noOptionsMessage}\n loadingMessage={fieldSchema?.loadingMessage}\n dropdownPortalId={dropdownPortalId}\n />\n : <Input\n {...field}\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"text\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\"\n />\n }\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport type {\n FieldSchema,\n JSONFieldSchema,\n LookupFieldSchema,\n RowState\n} from \"@/components/advanceSearch/types\";\nimport { useFormContext } from \"react-hook-form\";\nimport { ConditionTextInput } from \"./types/ConditionTextInput\";\nimport { ConditionNumberInput } from \"./types/ConditionNumberInput\";\nimport { ConditionDateInput } from \"./types/ConditionDateInput\";\nimport { ConditionMonthInput } from \"./types/ConditionMonthInput\";\nimport { ConditionDropdownInput } from \"./types/ConditionDropdownInput\";\nimport { ConditionCheckboxInput } from \"./types/ConditionCheckboxInput\";\nimport { ConditionLookupInput } from \"./types/ConditionLookupInput\";\nimport { ConditionJSONInput } from \"./types/ConditionJSONInput\";\n\ntype Props = {\n row: RowState;\n fields: FieldSchema[];\n onClearValue: (which: \"value\" | \"value2\") => void;\n dropdownPortalId?: string;\n shortDateFormat?: string;\n};\n\nexport const ConditionValue: React.FC<Props> = ({\n row,\n fields,\n onClearValue,\n dropdownPortalId,\n shortDateFormat\n}) => {\n const { control } = useFormContext();\n const fieldSchema = fields.find((f) => f.name === row.fieldName);\n const fieldType = fieldSchema?.type ?? \"text\";\n\n switch (fieldType) {\n case \"number\":\n return <ConditionNumberInput row={row} control={control} onClear={onClearValue} />;\n case \"date\":\n case \"datetime\":\n return (\n <ConditionDateInput\n row={row}\n control={control}\n onClear={onClearValue}\n shortDateFormat={shortDateFormat}\n />\n );\n case \"datemonth\":\n return <ConditionMonthInput row={row} control={control} onClear={onClearValue} />;\n case \"dropdown\":\n return (\n <ConditionDropdownInput\n row={row}\n control={control}\n fieldSchema={fieldSchema}\n onClear={onClearValue}\n />\n );\n case \"checkbox\":\n return <ConditionCheckboxInput row={row} control={control} onClear={onClearValue} />;\n case \"lookup\":\n return (\n <ConditionLookupInput\n row={row}\n control={control}\n onClear={onClearValue}\n fieldSchema={fieldSchema as LookupFieldSchema}\n dropdownPortalId={dropdownPortalId}\n />\n );\n case \"json\": {\n return (\n <ConditionJSONInput\n row={row}\n control={control}\n onClear={onClearValue}\n fieldSchema={fieldSchema as JSONFieldSchema}\n dropdownPortalId={dropdownPortalId}\n />\n );\n }\n default:\n return <ConditionTextInput row={row} control={control} onClear={onClearValue} />;\n }\n};\n","// AddRemoveButtons.tsx\nimport React from \"react\";\nimport { Plus, Minus } from \"lucide-react\";\nimport { Button } from \"@/components/button\";\n\nexport const AddRemoveButtons: React.FC<{\n isFirst: boolean;\n onAdd: () => void;\n onRemove: () => void;\n disableAdd?: boolean;\n}> = ({ isFirst, onAdd, onRemove, disableAdd }) => (\n <div className=\"flex items-center justify-end gap-2\">\n {isFirst ?\n <Button\n type=\"button\"\n size=\"icon-sm\"\n onClick={onAdd}\n disabled={disableAdd}\n className={`circle-btn border transition-colors ${\n disableAdd ?\n \"cursor-not-allowed border-[#5a5a5a] bg-[#5a5a5a] text-[#e1e1e1]\"\n : \"border-[#379a2a] bg-[#379a2a] text-white\"\n }`}\n aria-label=\"Add row\"\n title={disableAdd ? \"Cannot add more rows\" : \"Add condition\"}\n >\n <Plus className=\"h-3 w-3 stroke-[2]\" />\n </Button>\n : <Button\n type=\"button\"\n size=\"icon-sm\"\n onClick={onRemove}\n className=\"circle-btn border border-[#379a2a] bg-white text-[#379a2a]\"\n aria-label=\"Remove row\"\n title=\"Remove condition\"\n >\n <Minus className=\"h-3 w-3 stroke-[2]\" />\n </Button>\n }\n </div>\n);\n","import React from \"react\";\nimport type { FieldSchema, OperatorValue, RowState, Option } from \"../../types\";\nimport { FieldSelect } from \"./FieldSelect\";\nimport { OperatorSelect } from \"./OperatorSelect\";\nimport { ConditionValue } from \"./ConditionValue\";\nimport { AddRemoveButtons } from \"./AddRemoveButtons\";\n\ninterface Props {\n row: RowState;\n isFirst: boolean;\n fields: FieldSchema[];\n fieldOptions: Option[];\n operators: OperatorValue[];\n operatorError?: string;\n onChangeField: (fieldName: string) => void;\n onChangeOperator: (op: OperatorValue) => void;\n onAdd: () => void;\n onRemove: () => void;\n onClearValue: (which: \"value\" | \"value2\") => void;\n disableAdd?: boolean;\n dropdownPortalId?: string;\n shortDateFormat?: string;\n}\n\nexport const AdvanceSearchRow: React.FC<Props> = ({\n row,\n isFirst,\n fields,\n fieldOptions,\n operators,\n operatorError,\n onChangeField,\n onChangeOperator,\n onAdd,\n onRemove,\n onClearValue,\n disableAdd,\n dropdownPortalId,\n shortDateFormat\n}) => {\n return (\n <div className=\"grid gap-3 rounded-lg bg-white md:grid-cols-[minmax(150px,0.85fr)_minmax(140px,0.75fr)_minmax(260px,1fr)_auto] md:items-start\">\n <FieldSelect row={row} fieldOptions={fieldOptions} onChangeField={onChangeField} />\n\n <OperatorSelect\n row={row}\n operators={operators}\n onChangeOperator={onChangeOperator}\n error={operatorError}\n />\n\n <ConditionValue\n row={row}\n fields={fields}\n onClearValue={onClearValue}\n dropdownPortalId={dropdownPortalId}\n shortDateFormat={shortDateFormat}\n />\n\n <div className=\"flex h-full\">\n <AddRemoveButtons isFirst={isFirst} onAdd={onAdd} onRemove={onRemove} disableAdd={disableAdd} />\n </div>\n </div>\n );\n};\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class CheckboxBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"is\":\n return { [row.fieldName]: row.value };\n case \"isNot\":\n return { [row.fieldName]: { not: row.value } };\n default:\n return {};\n }\n }\n}\n","export const helper = (\n prismaFilter: object,\n options?: { multiTableSearch?: boolean; insensitive?: boolean }\n) => {\n return options?.multiTableSearch ?\n {\n some: {\n value: { ...prismaFilter, ...(options?.insensitive ? { mode: \"insensitive\" } : undefined) }\n }\n }\n : { ...prismaFilter, ...(options?.insensitive ? { mode: \"insensitive\" } : undefined) };\n};\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst normalizeBetween = (startValue?: string, endValue?: string) => {\n if (!startValue || !endValue) return undefined;\n const start = new Date(startValue);\n const end = new Date(endValue);\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) return undefined;\n const [minRaw, maxRaw] = start <= end ? [start, end] : [end, start];\n const min = new Date(minRaw);\n min.setHours(0, 0, 0, 0);\n const max = new Date(maxRaw);\n max.setHours(23, 59, 59, 999);\n return { min, max };\n};\n\nexport class DatetimeBuilder implements ParamsBuilder {\n build(row: RowState): object {\n try {\n const baseDate = new Date(row.value);\n if (Number.isNaN(baseDate.getTime())) return {};\n\n const dayStart = new Date(baseDate);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(baseDate);\n dayEnd.setHours(23, 59, 59, 999);\n\n switch (row.operator) {\n case \"on\":\n return {\n [row.fieldName]: helper(\n { gte: dayStart.toISOString(), lt: dayEnd.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"after\":\n return {\n [row.fieldName]: helper(\n { gte: dayStart.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"before\":\n return {\n [row.fieldName]: helper(\n { lt: dayStart.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"between\": {\n const normalized = normalizeBetween(row.value, row.value2);\n if (!normalized) return {};\n return {\n [row.fieldName]: helper(\n { gte: normalized.min.toISOString(), lt: normalized.max.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n }\n default:\n return {};\n }\n } catch {\n return {};\n }\n }\n}\n","import { parse, isValid, format, compareAsc } from \"date-fns\";\nimport type { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst parseMonth = (value?: string) => {\n if (!value) return undefined;\n const parsed = parse(value, \"yyyy-MM\", new Date());\n if (!isValid(parsed)) return undefined;\n parsed.setDate(1);\n parsed.setHours(0, 0, 0, 0);\n return parsed;\n};\n\nconst toMonthToken = (date: Date) => format(date, \"yyyy-MM\");\n\nexport class DateMonthBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const month = parseMonth(row.value);\n const sharedOptions = { multiTableSearch: row.multiTableSearch } as const;\n\n switch (row.operator) {\n case \"on\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ equals: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"after\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ gt: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"before\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ lt: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"between\": {\n const endMonth = parseMonth(row.value2);\n if (!month || !endMonth) return {};\n const [min, max] = compareAsc(month, endMonth) <= 0 ? [month, endMonth] : [endMonth, month];\n return {\n [row.fieldName]: helper({ gte: toMonthToken(min), lte: toMonthToken(max) }, sharedOptions)\n };\n }\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class DropdownBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"is\":\n return { [row.fieldName]: row.value };\n case \"isNot\":\n return { [row.fieldName]: { not: row.value } };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class JSONBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const isArray = Array.isArray(row.value);\n switch (row.operator) {\n case \"equals\":\n return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };\n\n case \"notEquals\":\n return {\n NOT: { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } }\n };\n case \"containsAny\":\n if (!isArray)\n return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };\n return {\n OR: (row.value as any[]).map((v) => ({ [row.fieldName]: { path: row.jsonPath, equals: v } }))\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class LookupBuilder implements ParamsBuilder {\n build(row: RowState): object {\n if (!Array.isArray(row.value)) {\n return {};\n }\n const lookupField = row.lookupFieldName ?? \"id\";\n switch (row.operator) {\n case \"containsAny\":\n return {\n OR: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }))\n };\n case \"containsOnly\":\n return {\n AND: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }))\n };\n case \"containsAll\": {\n const includes = row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }));\n const excludes = { [row.fieldName]: { none: { [lookupField]: { notIn: row.value } } } };\n return {\n AND: [...includes, excludes]\n };\n }\n case \"notContains\":\n return {\n NOT: { OR: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } })) }\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nexport class NumberBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const value = Number(row.value);\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nexport class TextBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"contains\":\n return {\n [row.fieldName]: helper(\n { contains: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"beginsWith\":\n return {\n [row.fieldName]: helper(\n { startsWith: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"endsWith\":\n return {\n [row.fieldName]: helper(\n { endsWith: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notBeginsWith\":\n return {\n [row.fieldName]: helper(\n { not: { startsWith: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notEndsWith\":\n return {\n [row.fieldName]: helper(\n { not: { endsWith: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notContains\":\n return {\n [row.fieldName]: helper(\n { not: { contains: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport class UUIDBuilder implements ParamsBuilder {\n build(row: RowState): object {\n if (!regex.test(row.value)) {\n return { [row.fieldName]: {} };\n }\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: row.value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { FieldType, ParamsBuilder } from \"../types\";\nimport { CheckboxBuilder } from \"./checkbox\";\nimport { DatetimeBuilder } from \"./datetime\";\nimport { DateMonthBuilder } from \"./datemonth\";\nimport { DropdownBuilder } from \"./dropdown\";\nimport { JSONBuilder } from \"./json\";\nimport { LookupBuilder } from \"./lookup\";\nimport { NumberBuilder } from \"./number\";\nimport { TextBuilder } from \"./text\";\nimport { UUIDBuilder } from \"./uuid\";\n\nexport function getBuilder(fieldType: FieldType): ParamsBuilder {\n switch (fieldType) {\n case \"text\":\n return new TextBuilder();\n case \"number\":\n return new NumberBuilder();\n case \"date\":\n return new DatetimeBuilder();\n case \"datetime\":\n return new DatetimeBuilder();\n case \"datemonth\":\n return new DateMonthBuilder();\n case \"checkbox\":\n return new CheckboxBuilder();\n case \"dropdown\":\n return new DropdownBuilder();\n case \"lookup\":\n return new LookupBuilder();\n case \"uuid\":\n return new UUIDBuilder();\n case \"json\":\n return new JSONBuilder();\n }\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { isAfter, isValid, parseISO } from \"date-fns\";\nimport { Search } from \"lucide-react\";\nimport ExpandCollapse from \"./conditions/ExpandCollapse\";\nimport { useAdvanceSearch } from \"../hooks/useAdvanceSearch\";\nimport type { AdvanceSearchProps } from \"../types\";\nimport { AdvanceSearchRow } from \"./conditions/AdvanceSearchRow\";\nimport { Label } from \"@/components/ui/label\";\nimport { Button } from \"@/components/button\";\nimport { useForm } from \"react-hook-form\";\nimport { Form } from \"@/components/ui/form\";\nimport { getBuilder } from \"../builder\";\n\nconst AdvanceSearch: React.FC<AdvanceSearchProps> = ({\n fields,\n portalId,\n iconColor = \"#ffffff\",\n limitRows = 4,\n onSearch,\n onClear,\n shortDateFormat\n}) => {\n const fieldsData = useMemo(() => {\n if (fields.length === 0) throw new Error(\"fields cannot be an empty array\");\n return fields || [];\n }, [fields]);\n\n const {\n rows,\n addRow,\n removeRow,\n clearAllRow,\n changeField,\n changeOperator,\n operatorsForField,\n fieldOptions\n } = useAdvanceSearch({ fields: fieldsData, limitRows });\n\n const form = useForm<{ [key: string]: string | undefined }>({\n mode: \"onSubmit\",\n reValidateMode: \"onSubmit\",\n defaultValues: {}\n });\n\n const { handleSubmit, unregister, resetField, getValues, clearErrors, setError } = form;\n\n const [operatorErrors, setOperatorErrors] = React.useState<Record<string, string>>({});\n const clearOperatorError = useCallback(\n (rowId: string) => {\n setOperatorErrors((prev) => {\n if (!(rowId in prev)) return prev;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [rowId]: _removed, ...rest } = prev;\n return rest;\n });\n },\n [setOperatorErrors]\n );\n\n const clearValue = useCallback(\n (rowId: string, which: \"value\" | \"value2\") => {\n const fieldName = `${which}_${rowId}` as `value_${string}` | `value2_${string}`;\n resetField(fieldName, { defaultValue: undefined });\n clearErrors(fieldName);\n\n const counterpart =\n which === \"value\" ?\n (`value2_${rowId}` as `value2_${string}`)\n : (`value_${rowId}` as `value_${string}`);\n clearErrors(counterpart);\n },\n [resetField, clearErrors]\n );\n\n const parseRangeValue = useCallback((raw: string, fieldType: string) => {\n if (!raw) return undefined;\n const normalized = fieldType === \"datemonth\" ? `${raw}-01` : raw;\n const parsed = parseISO(normalized);\n return isValid(parsed) ? parsed : undefined;\n }, []);\n\n const onSubmit = useCallback(() => {\n const operatorValidation: Record<string, string> = {};\n\n rows.forEach((r) => {\n const availableOperators = operatorsForField(r.fieldName);\n if (!availableOperators.length || !availableOperators.includes(r.operator)) {\n operatorValidation[r.id] = \"Please select an operator.\";\n }\n });\n\n setOperatorErrors(operatorValidation);\n if (Object.keys(operatorValidation).length > 0) {\n return;\n }\n\n const currentValues = getValues();\n let hasRangeError = false;\n\n const rawRows = rows.map((r) => {\n const startFieldName = `value_${r.id}` as `value_${string}`;\n const startValue = currentValues[startFieldName] ?? \"\";\n\n if (r.operator === \"between\") {\n const endFieldName = `value2_${r.id}` as `value2_${string}`;\n const endValue = currentValues[endFieldName] ?? \"\";\n\n if (startValue && endValue) {\n const startDate = parseRangeValue(startValue, r.fieldType);\n const endDate = parseRangeValue(endValue, r.fieldType);\n\n if (startDate && endDate && isAfter(startDate, endDate)) {\n hasRangeError = true;\n setError(startFieldName, {\n type: \"validate\",\n message: \"Start value must be before end value.\"\n });\n setError(endFieldName, {\n type: \"validate\",\n message: \"End value must be after start value.\"\n });\n } else {\n clearErrors([startFieldName, endFieldName]);\n }\n }\n\n return {\n ...r,\n value: startValue ?? \"\",\n value2: endValue ?? \"\"\n };\n }\n\n return {\n ...r,\n value: startValue ?? \"\"\n };\n });\n\n if (hasRangeError) {\n return;\n }\n\n const param = {\n AND: rawRows\n .map((r) => {\n const builder = getBuilder(r.fieldType);\n return builder.build(r);\n })\n .filter(Boolean) as Record<string, unknown>[]\n };\n\n if (onSearch) {\n onSearch(param);\n }\n }, [\n clearErrors,\n getValues,\n onSearch,\n operatorsForField,\n parseRangeValue,\n rows,\n setError,\n setOperatorErrors\n ]);\n\n return (\n <ExpandCollapse\n title={<Search className=\"w-5 h-5\" style={{ color: iconColor }} />}\n portalId={portalId}\n >\n <Form {...form}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"flex justify-center w-full\">\n <div className=\"w-full max-w-4xl rounded-xl bg-white\">\n <div className=\"flex items-center justify-between\">\n <Label className=\"text-sm font-semibold text-gray-700\">Select Field</Label>\n </div>\n <div className=\"space-y-6\">\n {rows.map((row, idx) => (\n <AdvanceSearchRow\n key={row.id}\n row={row}\n shortDateFormat={shortDateFormat}\n isFirst={idx === 0}\n fields={fieldsData}\n fieldOptions={fieldOptions}\n operators={operatorsForField(row.fieldName)}\n operatorError={operatorErrors[row.id]}\n onChangeField={(f) => {\n changeField(row.id, f);\n clearOperatorError(row.id);\n clearValue(row.id, \"value\");\n clearValue(row.id, \"value2\");\n }}\n onChangeOperator={(op) => {\n changeOperator(row.id, op);\n clearOperatorError(row.id);\n clearValue(row.id, \"value\");\n clearValue(row.id, \"value2\");\n }}\n onAdd={addRow}\n onRemove={() => {\n clearOperatorError(row.id);\n removeRow(row.id);\n unregister(`value_${row.id}`);\n unregister(`value2_${row.id}`);\n }}\n onClearValue={(which) => {\n clearValue(row.id, which);\n }}\n disableAdd={limitRows !== undefined && rows.length >= limitRows}\n />\n ))}\n </div>\n <div className=\"mt-6 flex flex-col-reverse gap-3 pt-4 md:flex-row md:justify-end\">\n <Button\n type=\"button\"\n className=\"w-full bg-[#8b8b8b] text-white md:w-auto md:min-w-[120px]\"\n onClick={() => {\n clearAllRow();\n setOperatorErrors({});\n Object.keys(getValues()).forEach((k) => resetField(k));\n if (onClear) onClear();\n }}\n >\n Clear Search\n </Button>\n <Button\n type=\"submit\"\n className=\"w-full bg-[#379a2a] text-white hover:bg-[#2f7c21] md:w-auto md:min-w-[120px]\"\n >\n Search\n </Button>\n </div>\n </div>\n </form>\n </Form>\n </ExpandCollapse>\n );\n};\n\nexport default AdvanceSearch;\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return <CollapsiblePrimitive.CollapsibleTrigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return <CollapsiblePrimitive.CollapsibleContent data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import { reSplitAlphaNumeric } from \"@tanstack/react-table\";\n\nexport function compareAlphanumeric(aStr: string, bStr: string) {\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n while (a.length && b.length) {\n const aa = a.shift()!;\n const bb = b.shift()!;\n\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n\n const combo = [an, bn].sort();\n\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1;\n }\n\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n\n return a.length - b.length;\n}\n","export function booleanToSelectValue(\n value: boolean | undefined,\n options?: {\n fallbackUndefinedValue?: string;\n }\n): string {\n if (value === true) return \"true\";\n if (value === false) return \"false\";\n return options?.fallbackUndefinedValue ?? \"\";\n}\n\nexport function selectValueToBoolean(value: string): boolean | undefined {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return undefined;\n}\n","import React, { useCallback, useRef, useState } from \"react\";\n\nexport type UseHoverResult = {\n ref: React.RefCallback<HTMLElement>;\n hovering: boolean;\n};\n\nconst useHover = (): UseHoverResult => {\n const [hovering, setHovering] = useState<boolean>(false);\n const prevRef = useRef<HTMLElement>(null);\n\n const onMouseEnter = useCallback(() => setHovering(true), []);\n const onMouseLeave = useCallback(() => setHovering(false), []);\n\n const nodeRefCallback = useCallback<UseHoverResult[\"ref\"]>(\n (node) => {\n if (prevRef.current) {\n prevRef.current.removeEventListener(\"mouseenter\", onMouseEnter);\n prevRef.current.removeEventListener(\"mouseleave\", onMouseLeave);\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", onMouseEnter);\n node.addEventListener(\"mouseleave\", onMouseLeave);\n }\n\n prevRef.current = node;\n },\n [onMouseEnter, onMouseLeave]\n );\n\n return {\n ref: nodeRefCallback,\n hovering\n };\n};\n\nexport default useHover;\n","import { useEffect, useRef, useState } from \"react\";\n\ntype State = {\n isIntersecting: boolean;\n entry?: IntersectionObserverEntry;\n};\n\ntype UseIntersectionObserverOptions = {\n root?: Element | Document | null;\n rootMargin?: string;\n threshold?: number | number[];\n freezeOnceVisible?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n initialIsIntersecting?: boolean;\n};\n\ntype IntersectionReturn = [\n (node?: Element | null) => void,\n boolean,\n IntersectionObserverEntry | undefined\n] & {\n ref: (node?: Element | null) => void;\n isIntersecting: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nconst useIntersectionObserver = ({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n}: UseIntersectionObserverOptions = {}): IntersectionReturn => {\n const [ref, setRef] = useState<Element | null>(null);\n\n const [state, setState] = useState<State>(() => ({\n isIntersecting: initialIsIntersecting,\n entry: undefined\n }));\n\n const callbackRef = useRef<UseIntersectionObserverOptions[\"onChange\"]>(null);\n\n callbackRef.current = onChange;\n\n const frozen = state.entry?.isIntersecting && freezeOnceVisible;\n\n useEffect(() => {\n // Ensure we have a ref to observe\n if (!ref) return;\n\n // Ensure the browser supports the Intersection Observer API\n if (!(\"IntersectionObserver\" in window)) return;\n\n // Skip if frozen\n if (frozen) return;\n\n let unobserve: (() => void) | undefined;\n\n const observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const thresholds =\n Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n\n entries.forEach((entry) => {\n const isIntersecting =\n entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n setState({ isIntersecting, entry });\n\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = undefined;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => {\n observer.disconnect();\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n\n const prevRef = useRef<Element | null>(null);\n\n useEffect(() => {\n if (\n !ref &&\n state.entry?.target &&\n !freezeOnceVisible &&\n !frozen &&\n prevRef.current !== state.entry.target\n ) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: undefined });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n\n const result = [setRef, !!state.isIntersecting, state.entry] as IntersectionReturn;\n\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n\n return result;\n};\n\nexport default useIntersectionObserver;\n","import { useEffect, useState } from \"react\";\n\nexport type UseMediaQueryOptions = {\n query: string;\n};\n\nexport type UseMediaQueryResult = boolean;\n\nconst isValidMediaQueryString = (query: string): boolean => {\n return query !== \"not all\";\n};\n\nconst useMediaQuery = ({ query }: UseMediaQueryOptions): UseMediaQueryResult => {\n const [matches, setMatches] = useState<boolean>(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const mql = window.matchMedia(query);\n\n if (!isValidMediaQueryString(mql.media)) {\n throw new Error(`${query}: invalid media query string.`);\n }\n\n const detectMediaChange = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n setMatches(mql.matches);\n\n mql.addEventListener(\"change\", detectMediaChange);\n return () => {\n mql.removeEventListener(\"change\", detectMediaChange);\n };\n }, [query]);\n\n return matches;\n};\n\nexport default useMediaQuery;\n","import { useMediaQuery } from \"../useMediaQuery\";\n\nexport type UseScreenSizeResult = {\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n};\n\nexport type Breakpoints = {\n mobile?: string;\n tablet?: string;\n desktop?: string;\n};\n\nconst useScreenSize = (breakpoints?: Breakpoints): UseScreenSizeResult => {\n const isMobile = useMediaQuery({ query: breakpoints?.mobile ?? \"(max-width: 767px)\" });\n const isTablet = useMediaQuery({\n query: breakpoints?.tablet ?? \"(min-width: 768px) and (max-width: 1023px)\"\n });\n const isDesktop = useMediaQuery({ query: breakpoints?.desktop ?? \"(min-width: 1024px)\" });\n\n return { isMobile, isTablet, isDesktop };\n};\n\nexport default useScreenSize;\n","import { useEffect, useState } from \"react\";\nimport { debounce } from \"../../utils\";\n\nexport type UseTruncatedOptions<T> = {\n elementRef: React.RefObject<T | null>;\n onChange?: (isTruncated: boolean) => void;\n resizeDetectDelay?: number;\n};\n\nexport type UseTruncatedResult = boolean;\n\nconst useTruncated = <T extends HTMLElement = any>({\n elementRef,\n onChange,\n resizeDetectDelay = 150\n}: UseTruncatedOptions<T>): UseTruncatedResult => {\n const [isTruncated, setIsTruncated] = useState(false);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const checkTruncate = debounce(() => {\n const truncated = element.scrollWidth > element.clientWidth;\n setIsTruncated((prev) => {\n if (prev !== truncated) {\n onChange?.(truncated);\n }\n return truncated;\n });\n }, resizeDetectDelay);\n\n checkTruncate();\n\n const observer = new ResizeObserver(checkTruncate);\n observer.observe(element);\n window.addEventListener(\"resize\", checkTruncate);\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", checkTruncate);\n };\n }, [elementRef, onChange, resizeDetectDelay]);\n\n return isTruncated;\n};\n\nexport default useTruncated;\n","import type { HeaderContext } from \"@tanstack/react-table\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { useHover } from \"../../../hooks\";\nimport { cn } from \"../../../utils\";\n\nexport type SorterProps = {\n show?: boolean;\n};\n\nexport type HeaderCellProps<TData = any, TValue = any> = {\n label: React.ReactNode;\n context: HeaderContext<TData, TValue>;\n rootClassName?: string;\n labelClassName?: string;\n sorterProps?: SorterProps;\n align?: \"left\" | \"center\" | \"right\";\n};\n\nconst HeaderCell = ({\n rootClassName,\n labelClassName,\n context,\n label,\n sorterProps,\n align = \"left\"\n}: HeaderCellProps) => {\n const { ref, hovering } = useHover();\n\n const showSorter = sorterProps?.show ?? context.column.getCanSort();\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between gap-2\",\n {\n \"cursor-pointer\": context?.column?.getCanSort()\n },\n rootClassName\n )}\n onClick={(event) => {\n event.preventDefault();\n if (context?.column?.getCanSort()) {\n context?.column?.toggleSorting();\n }\n }}\n >\n <div\n className={cn(\"flex-1 flex items-center\", {\n \"justify-start\": align === \"left\",\n \"justify-center\": align === \"center\",\n \"justify-end\": align === \"right\"\n })}\n >\n <span className={cn(\"inline-block font-bold\", labelClassName)}>{label}</span>\n </div>\n {showSorter && (\n <div\n className=\"flex flex-col -space-y-2\"\n title={\n context.column.getCanSort() ?\n context.column.getNextSortingOrder() === \"asc\" ?\n \"Sort ascending\"\n : context.column.getNextSortingOrder() === \"desc\" ?\n \"Sort descending\"\n : \"Clear sort\"\n : undefined\n }\n >\n <ChevronUp\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-[#41875c]\": context?.column?.getIsSorted() === \"asc\",\n \"stroke-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"asc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n <ChevronDown\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-[#41875c]\": context?.column?.getIsSorted() === \"desc\",\n \"stroke-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"desc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default HeaderCell;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nfunction TableContainer({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm border-separate border-spacing-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b bg-[#f7f4f4]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody data-slot=\"table-body\" className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"data-[state=selected]:bg-[#dfeae3]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-9 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] hover:bg-gray-200 bg-[#F0F0F0] truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 h-10 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] border-b truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n TableContainer,\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption\n};\n","import type { Header } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ColumnResizerProps = {\n header: Header<any, any>;\n className?: string;\n style?: CSSProperties;\n};\n\nconst ColumnResizer = ({ header, className, style }: ColumnResizerProps) => {\n if (!header.column.getCanResize()) {\n return null;\n }\n\n const resizeHandler = header.getResizeHandler();\n\n return (\n <div\n className={cn(\n \"z-[2] absolute top-0 right-0 h-full w-1 select-none touch-none cursor-col-resize hover:bg-[#41875c]/45 active:bg-[#41875c]\",\n className\n )}\n onDoubleClick={() => header.column.resetSize()}\n onTouchStart={resizeHandler}\n onMouseDown={resizeHandler}\n style={style}\n />\n );\n};\n\nexport default ColumnResizer;\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ColumnSeparatorProps = {\n show?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst ColumnSeparator = ({ show, className, ...props }: ColumnSeparatorProps) => {\n if (!show) return null;\n return (\n <span\n data-slot=\"table-head-separator\"\n className={cn(\"absolute right-0 top-1/2 h-4 w-px -translate-y-1/2 bg-gray-300\", className)}\n {...props}\n />\n );\n};\n\nexport default React.memo(ColumnSeparator);\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ContentSlot = {\n content?: React.ReactNode;\n icon?: React.ReactNode;\n wrapperProps?: React.ComponentProps<\"div\">;\n};\n\nexport type StatusContentSlotProps = ContentSlot & {\n defaultWrapperProps?: React.ComponentProps<\"div\">;\n defaultIcon?: React.ReactNode;\n};\n\nconst StatusContentSlot = ({\n content,\n icon,\n wrapperProps = {},\n defaultWrapperProps,\n defaultIcon\n}: StatusContentSlotProps) => {\n if (!content && !icon && !defaultIcon) return null;\n\n const mergedProps: React.ComponentProps<\"div\"> = {\n ...defaultWrapperProps,\n ...wrapperProps,\n className: cn(defaultWrapperProps?.className, wrapperProps?.className)\n };\n\n return (\n <div {...mergedProps}>\n {icon ?? defaultIcon}\n {content}\n </div>\n );\n};\n\nexport default React.memo(StatusContentSlot);\n","import { type Table } from \"@tanstack/react-table\";\nimport { Bug } from \"lucide-react\";\nimport { useState } from \"react\";\n\ntype StateKey =\n | \"columnFilters\"\n | \"globalFilter\"\n | \"sorting\"\n | \"pagination\"\n | \"columnVisibility\"\n | \"columnOrder\"\n | \"rowSelection\"\n | \"expanded\"\n | \"grouping\"\n | \"columnPinning\"\n | \"columnSizing\"\n | \"columnSizingInfo\"\n | \"rowPinning\";\n\nconst stateOptions: readonly StateKey[] = [\n \"columnFilters\",\n \"globalFilter\",\n \"sorting\",\n \"pagination\",\n \"columnVisibility\",\n \"columnOrder\",\n \"rowSelection\",\n \"expanded\",\n \"grouping\",\n \"columnPinning\",\n \"columnSizing\",\n \"columnSizingInfo\",\n \"rowPinning\"\n];\n\ntype ModelKey = keyof Table<any>;\n\nconst modelOptions: readonly ModelKey[] = [\n \"getRowModel\",\n \"getGroupedRowModel\",\n \"getPaginationRowModel\",\n \"getCoreRowModel\",\n \"getFilteredRowModel\",\n \"getFilteredSelectedRowModel\",\n \"getSortedRowModel\",\n \"getPreExpandedRowModel\",\n \"getGroupedSelectedRowModel\",\n \"getPrePaginationRowModel\",\n \"getPreSelectedRowModel\",\n \"getPreSortedRowModel\",\n \"getSelectedRowModel\",\n \"getExpandedRowModel\",\n \"getIsAllColumnsVisible\",\n \"getIsSomeColumnsPinned\",\n \"getIsSomeColumnsVisible\",\n \"getHeaderGroups\",\n \"getFlatHeaders\",\n \"getLeafHeaders\",\n \"getLeftFlatHeaders\",\n \"getCenterLeafHeaders\",\n \"getRightFlatHeaders\",\n \"getAllColumns\",\n \"getAllFlatColumns\",\n \"getAllLeafColumns\",\n \"getLeftLeafColumns\",\n \"getCenterLeafColumns\",\n \"getRightLeafColumns\",\n \"getVisibleFlatColumns\",\n \"getVisibleLeafColumns\",\n \"getLeftVisibleLeafColumns\",\n \"getRightVisibleLeafColumns\",\n \"getCenterVisibleLeafColumns\"\n];\n\nconst DataTableDevTool = ({ table }: { table: Table<any> }) => {\n const [open, setOpen] = useState(false);\n const [visibleStates, setVisibleStates] = useState<StateKey[]>([]);\n const [visibleModels, setVisibleModels] = useState<ModelKey[]>([]);\n const tableState = table.getState();\n\n const toggleValue = <U extends string>(arr: U[], value: U): U[] =>\n arr.includes(value) ? arr.filter((v) => v !== value) : [...arr, value];\n\n const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (_key: string, value: any) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) return \"[Circular]\";\n seen.add(value);\n }\n return value;\n };\n };\n\n const renderStateValue = (key: StateKey) => {\n const value = tableState[key];\n if (value == null) return null;\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {JSON.stringify(value, null, 2)}\n </pre>\n </div>\n );\n };\n\n const renderModelValue = (key: ModelKey) => {\n let value: unknown;\n try {\n value = (table as any)[key]();\n } catch {\n value = undefined;\n }\n if (value == null) return null;\n let jsonString = \"\";\n try {\n jsonString = JSON.stringify(value, getCircularReplacer(), 2);\n } catch {\n jsonString = \"[Cannot stringify]\";\n }\n\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {jsonString}\n </pre>\n </div>\n );\n };\n\n if (process.env.NODE_ENV === \"production\") return null;\n\n return (\n <div>\n {/* Floating Button */}\n <button\n onClick={() => setOpen(true)}\n className=\"fixed bottom-6 right-6 z-50 rounded-full bg-white border shadow p-3\"\n aria-label=\"Open debug panel\"\n >\n <Bug className=\"w-5 h-5\" />\n </button>\n\n {/* Sidebar Debug Panel */}\n {open && (\n <aside className=\"fixed top-0 right-0 h-full w-[420px] bg-white shadow-lg border-l border-gray-200 z-50 flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h2 className=\"text-lg font-semibold\">Debug Table State &amp; Models</h2>\n <button onClick={() => setOpen(false)} className=\"text-xl font-bold\" aria-label=\"Close\">\n ×\n </button>\n </header>\n\n {/* Main Content */}\n <main className=\"overflow-auto p-4 flex-grow space-y-4\">\n <section className=\"max-h-80 overflow-y-auto overflow-x-hidden\">\n {/* Select Table States */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table State</legend>\n <div className=\"space-y-1\">\n {stateOptions.map((stateKey) => (\n <label\n key={stateKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-blue-500\"\n checked={visibleStates.includes(stateKey)}\n onChange={() => setVisibleStates(toggleValue(visibleStates, stateKey))}\n />\n <span className=\"truncate\">{stateKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Select Table Models */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table Models</legend>\n <div className=\"space-y-1\">\n {modelOptions.map((modelKey) => (\n <label\n key={modelKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-green-500\"\n checked={visibleModels.includes(modelKey)}\n onChange={() => setVisibleModels(toggleValue(visibleModels, modelKey))}\n />\n <span className=\"truncate\">{modelKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n </section>\n\n {/* JSON Outputs */}\n <hr className=\"my-2 border-gray-300\" />\n {visibleStates.map(renderStateValue)}\n {visibleModels.map(renderModelValue)}\n </main>\n </aside>\n )}\n </div>\n );\n};\n\nexport default DataTableDevTool;\n","import type { RowData, Column } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport type { DataTableRowClickHandler } from \"./DataTable\";\nimport { cn } from \"../../utils\";\n\nexport function getColumnPinningInfo(column: Column<any, any>) {\n const isPinned = column.getIsPinned();\n\n const isLastLeftPinnedColumn = isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn = isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n return { isPinned, isLastLeftPinnedColumn, isFirstRightPinnedColumn };\n}\n\nexport function getColumnPinningStyles(column: Column<any, any>): {\n classes: string;\n style: Pick<CSSProperties, \"left\" | \"right\">;\n} {\n const { isPinned, isFirstRightPinnedColumn, isLastLeftPinnedColumn } = getColumnPinningInfo(column);\n\n const classes = cn(\n isPinned ? \"sticky\" : \"relative\",\n isPinned ? \"z-[1]\" : \"z-0\",\n isLastLeftPinnedColumn && \"shadow-[inset_-1px_0_0_0_black]\",\n isFirstRightPinnedColumn && \"shadow-[inset_1px_0_0_0_black]\"\n );\n\n const style: CSSProperties = {\n left: isPinned === \"left\" ? column.getStart(\"left\") : undefined,\n right: isPinned === \"right\" ? column.getAfter(\"right\") : undefined\n };\n\n return { classes, style };\n}\n\ntype RowClickHandlers = {\n onClick: (event: React.MouseEvent<HTMLTableRowElement>) => void;\n};\n\ntype RowClickContext<TData extends RowData> = {\n rowData: Parameters<DataTableRowClickHandler<TData>>[0];\n row: Parameters<DataTableRowClickHandler<TData>>[1][\"row\"];\n table: Parameters<DataTableRowClickHandler<TData>>[1][\"table\"];\n};\n\nexport function getRowClickHandlers<TData extends RowData>(\n handler: DataTableRowClickHandler<TData>,\n { rowData, row, table }: RowClickContext<TData>\n): RowClickHandlers {\n const handleClick = (event: React.MouseEvent<HTMLTableRowElement>) => {\n if (event.detail === 1) {\n handler(rowData, { event, row, table, clickType: \"single\" });\n }\n if (event.detail >= 2) {\n handler(rowData, { event, row, table, clickType: \"double\" });\n }\n };\n return {\n onClick: handleClick\n };\n}\n","import React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getFilteredRowModel,\n getSortedRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n type Table as TanstackTableType,\n type Column,\n type RowData,\n type TableOptions,\n type ColumnFiltersState,\n type TableState,\n type SortingState,\n type OnChangeFn,\n type FilterFnOption,\n type Row,\n type Cell,\n type Header,\n type ColumnDef,\n type HeaderGroup,\n type ColumnOrderState,\n type VisibilityState,\n type ColumnPinningState,\n type RowSelectionState,\n type ExpandedState,\n type GroupingState,\n type GroupingOptions,\n type ColumnResizeMode\n} from \"@tanstack/react-table\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableHeader,\n TableRow\n} from \"../ui/table\";\nimport ColumnResizer, { type ColumnResizerProps } from \"./ColumnResizer\";\nimport ColumnSeparator, { type ColumnSeparatorProps } from \"./ColumnSeparator\";\nimport StatusContentSlot, { type ContentSlot } from \"./StatusContentSlot\";\nimport DataTableDevTool from \"./DataTableDevTool\";\nimport { SuiEmptyDataIcon } from \"../icons\";\nimport { Spinner } from \"../ui/spinner\";\nimport { cn } from \"../../utils\";\nimport { isDefined } from \"../../utils/common\";\nimport { stripNullishObject } from \"../../utils/filters\";\nimport { getColumnPinningInfo, getColumnPinningStyles, getRowClickHandlers } from \"./helpers\";\n\nexport type DataTableColumnFilterProps<TData extends RowData> = {\n column: Column<TData>;\n table: TanstackTableType<TData>;\n};\n\nexport type DataTableFilterConfig = {\n enabled: boolean;\n manual?: boolean;\n maxDepth?: number;\n filterFromLeafRows?: boolean;\n};\n\nexport type DataTableColumnFilter = {\n enabled?: boolean;\n initialState?: ColumnFiltersState;\n state?: ColumnFiltersState;\n onFilterChange?: OnChangeFn<ColumnFiltersState>;\n};\n\nexport type DataTableGlobalFilter<TData extends RowData> = {\n enabled?: boolean;\n initialState?: any;\n state?: any;\n filterFn?: FilterFnOption<TData>;\n onFilterChange?: OnChangeFn<any>;\n canColumnFilterable?: (column: Column<TData, unknown>) => boolean;\n};\n\nexport type DataTableFilters<TData extends RowData> = DataTableFilterConfig & {\n column?: DataTableColumnFilter;\n global?: DataTableGlobalFilter<TData>;\n};\n\nexport type DataTableColumnSorting = {\n enabled: boolean;\n manual?: boolean;\n initialState?: SortingState;\n state?: SortingState;\n sortDescFirst?: boolean;\n onSortingChange?: OnChangeFn<SortingState>;\n};\n\nexport type DataTableRowSelection<TData> = {\n enabled: boolean;\n initialState?: RowSelectionState;\n state?: RowSelectionState;\n canRowSelectable?: boolean | ((row: Row<TData>) => boolean);\n multiSelect?: boolean;\n onSelectionChange?: OnChangeFn<RowSelectionState>;\n};\n\nexport type DataTableColumnPinning = {\n enabled: boolean;\n initialState?: ColumnPinningState;\n state?: ColumnPinningState;\n onPinningChange?: OnChangeFn<ColumnPinningState>;\n};\n\nexport type DataTableColumnOrdering = {\n enabled: boolean;\n initialState?: string[];\n state?: string[];\n onOrderChange?: OnChangeFn<ColumnOrderState>;\n};\n\nexport type DataTableColumnVisibility = {\n enabled: boolean;\n initialState?: VisibilityState;\n state?: VisibilityState;\n onVisibilityChange?: OnChangeFn<VisibilityState>;\n};\n\nexport type DataTableRowExpansion<TData extends RowData> = {\n enabled: boolean;\n manual?: boolean;\n initialState?: ExpandedState;\n state?: ExpandedState;\n onExpandedChange?: OnChangeFn<ExpandedState>;\n isRowExpanded?: (row: Row<TData>) => boolean;\n canRowExpand?: (row: Row<TData>) => boolean;\n};\n\nexport type DataTableColumnGrouping = {\n manual?: boolean;\n enabled: boolean;\n groupedMode?: false | \"reorder\" | \"remove\";\n initialState?: GroupingState;\n state?: GroupingState;\n customAggregationFns?: GroupingOptions[\"aggregationFns\"];\n onGroupingChange?: OnChangeFn<GroupingState>;\n};\n\nexport type RowClickType = \"single\" | \"double\";\n\nexport type DataTableRowClickHandler<TData extends RowData> = (\n rowData: TData,\n info: {\n event: React.MouseEvent<HTMLTableRowElement>;\n row: Row<TData>;\n table: TanstackTableType<TData>;\n clickType: RowClickType;\n }\n) => void;\n\nexport type DataTableRowIdKeyHandler<TData extends RowData> = (\n originalRow: TData,\n index: number,\n parent?: Row<TData>\n) => string;\n\nexport type DataTableHeaderCell<TData extends RowData> = {\n id: string;\n columnId: string;\n content: React.ReactNode;\n originalCell: Header<TData, unknown>;\n};\n\nexport type DataTableRenderHeaderProps<TData extends RowData> = {\n headerGroup: HeaderGroup<TData>;\n table: TanstackTableType<TData>;\n cells: DataTableHeaderCell<TData>[];\n};\n\nexport type DataTableRenderHeaderHandler<TData extends RowData> = (\n props: DataTableRenderHeaderProps<TData>\n) => React.ReactNode;\n\nexport type DataTableRowCell<TData extends RowData> = {\n id: string;\n columnId: string;\n content: React.ReactNode;\n originalCell: Cell<TData, unknown>;\n};\n\nexport type DataTableRenderRowProps<TData extends RowData> = {\n row: Row<TData>;\n cells: DataTableRowCell<TData>[];\n table: TanstackTableType<TData>;\n};\n\nexport type DataTableRenderRowHandler<TData extends RowData> = (\n props: DataTableRenderRowProps<TData>\n) => React.ReactNode;\n\nexport type DataTableChildrenKeyHandler<TData> = (\n originalRow: TData,\n index: number\n) => TData[] | undefined;\n\nexport type DatatableColumnResizing = {\n enabled: boolean;\n resizeMode?: ColumnResizeMode;\n};\n\nexport type DataTableColumnSeparatorProps = {\n headerCell?: ColumnSeparatorProps;\n};\n\nexport type DataTableComponentProps<TData> = {\n containerProps?: React.ComponentProps<typeof TableContainer>;\n tableProps?: React.ComponentProps<typeof Table>;\n tableHeaderProps?: React.ComponentProps<typeof TableHeader>;\n tableHeadCellProps?:\n | React.ComponentProps<typeof TableHead>\n | ((info: {\n header: Header<TData, unknown>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableHead>);\n tableBodyProps?: React.ComponentProps<typeof TableBody>;\n tableDataRowProps?:\n | React.ComponentProps<typeof TableRow>\n | ((info: {\n row: Row<TData>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableRow>);\n tableDataCellProps?:\n | React.ComponentProps<typeof TableCell>\n | ((info: {\n row: Row<TData>;\n cell: Cell<TData, unknown>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableCell>);\n tableFilterCellProps?:\n | React.ComponentProps<typeof TableCell>\n | ((info: {\n column: Column<TData>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableCell>);\n columnResizerProps?: Omit<ColumnResizerProps, \"header\">;\n columnSeparatorProps?: DataTableColumnSeparatorProps;\n};\n\nexport type DataTableStatusContent = {\n initialLoading?: ContentSlot;\n fetchingMore?: ContentSlot;\n noMoreData?: ContentSlot;\n emptyData?: ContentSlot;\n emptyFilteredData?: ContentSlot;\n};\n\nexport type StatusContentKey = keyof DataTableStatusContent;\n\nexport type ScrollInfo = {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n scrollableHeight: number;\n distanceToBottom: number;\n ratioToBottom: number;\n isTopReached: boolean;\n isBottomReached: boolean;\n};\n\nexport type DataTableScrollFetch = {\n enabled: boolean;\n fetchMore?: () => void;\n hasMore?: boolean;\n isFetchingMore?: boolean;\n scrollThreshold?: number | ((info: ScrollInfo) => boolean);\n};\n\nexport type DataTableProps<TData extends RowData> = {\n data: TData[];\n columns: ColumnDef<TData, any>[];\n filters?: DataTableFilters<TData>;\n sorting?: DataTableColumnSorting;\n columnOrder?: DataTableColumnOrdering;\n columnVisibility?: DataTableColumnVisibility;\n columnPinning?: DataTableColumnPinning;\n columnGrouping?: DataTableColumnGrouping;\n columnResizing?: DatatableColumnResizing;\n rowSelection?: DataTableRowSelection<TData>;\n rowExpansion?: DataTableRowExpansion<TData>;\n scrollFetch?: DataTableScrollFetch;\n components?: DataTableComponentProps<TData>;\n activeStatusContent?:\n | (StatusContentKey | null)\n | ((info: { defaultComputedValue: StatusContentKey | null }) => StatusContentKey | null);\n statusContent?: DataTableStatusContent;\n tableRef?: React.RefObject<TanstackTableType<TData> | null>;\n isInitialLoading?: boolean;\n debug?: boolean;\n rowIdKey?: DataTableRowIdKeyHandler<TData>;\n childrenKey?: DataTableChildrenKeyHandler<TData>;\n onRowClick?: DataTableRowClickHandler<TData>;\n};\n\nconst fallbackData: unknown[] = [];\n\nconst DataTable = <TData extends RowData>({\n tableRef,\n isInitialLoading,\n columns,\n data,\n filters,\n sorting,\n columnOrder,\n columnVisibility,\n columnPinning,\n columnGrouping,\n columnResizing,\n rowSelection,\n rowExpansion,\n scrollFetch,\n activeStatusContent,\n statusContent,\n rowIdKey,\n childrenKey,\n onRowClick,\n debug,\n components\n}: DataTableProps<TData>) => {\n const table = useReactTable<TData>({\n // required properties\n columns,\n data: data || fallbackData,\n getCoreRowModel: getCoreRowModel(),\n // optional properties\n ...stripNullishObject<TableOptions<TData>>({\n // state for filters, sorting, pinning, row selection, etc.\n initialState: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.initialState\n : undefined,\n globalFilter: filters?.enabled ? filters?.global?.initialState : undefined,\n sorting: sorting?.enabled ? sorting?.initialState : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.initialState : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.initialState : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.initialState : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.initialState : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.initialState : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.initialState : undefined\n }),\n state: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ? filters?.column?.state : undefined,\n globalFilter: filters?.enabled ? filters?.global?.state : undefined,\n sorting: sorting?.enabled ? sorting?.state : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.state : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.state : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.state : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.state : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.state : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.state : undefined\n }),\n // common\n getRowId: rowIdKey,\n getSubRows: childrenKey,\n // shared configs filters column and global\n enableFilters: filters?.enabled ?? false,\n filterFromLeafRows: filters?.enabled && (filters?.filterFromLeafRows ?? false),\n manualFiltering: filters?.enabled && (filters?.manual ?? false),\n maxLeafRowFilterDepth: filters?.enabled ? filters?.maxDepth : undefined,\n // column filters\n getFilteredRowModel: !filters?.manual && filters?.enabled ? getFilteredRowModel() : undefined,\n enableColumnFilters: filters?.enabled && (filters?.column?.enabled ?? true),\n onColumnFiltersChange:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.onFilterChange\n : undefined,\n // global filters\n enableGlobalFilter: filters?.enabled && (filters?.global?.enabled ?? true),\n globalFilterFn:\n filters?.enabled && (filters?.global?.enabled ?? true) ? filters?.global?.filterFn : undefined,\n onGlobalFilterChange:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n filters?.global?.onFilterChange\n : undefined,\n getColumnCanGlobalFilter:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n (filters?.global?.canColumnFilterable ?? (() => true))\n : undefined,\n // sorting\n getSortedRowModel: !sorting?.manual && sorting?.enabled ? getSortedRowModel() : undefined,\n manualSorting: sorting?.enabled && (sorting?.manual ?? false),\n enableSorting: sorting?.enabled ?? false,\n // default behavior: column with type number is sort by desc and string sort by asc first, we fix force always asc\n sortDescFirst: sorting?.enabled ? (sorting?.sortDescFirst ?? false) : false,\n onSortingChange: sorting?.enabled ? sorting?.onSortingChange : undefined,\n // ordering\n onColumnOrderChange: columnOrder?.enabled ? columnOrder?.onOrderChange : undefined,\n // visibility\n onColumnVisibilityChange:\n columnVisibility?.enabled ? columnVisibility?.onVisibilityChange : undefined,\n // pinning\n enableColumnPinning: columnPinning?.enabled ?? false,\n onColumnPinningChange: columnPinning?.enabled ? columnPinning?.onPinningChange : undefined,\n // row selection\n enableRowSelection: rowSelection?.enabled ? rowSelection?.canRowSelectable : false,\n enableMultiRowSelection: rowSelection?.enabled ? (rowSelection?.multiSelect ?? true) : true,\n onRowSelectionChange: rowSelection?.enabled ? rowSelection?.onSelectionChange : undefined,\n // row expanded\n getExpandedRowModel:\n // when grouping is use then we should open this\n !rowExpansion?.manual && rowExpansion?.enabled ? getExpandedRowModel() : undefined,\n manualExpanding: rowExpansion?.enabled && (rowExpansion?.manual ?? false),\n enableExpanding: rowExpansion?.enabled ?? false,\n getIsRowExpanded: rowExpansion?.enabled ? rowExpansion?.isRowExpanded : undefined,\n getRowCanExpand: rowExpansion?.enabled ? rowExpansion?.canRowExpand : undefined,\n onExpandedChange: rowExpansion?.enabled ? rowExpansion?.onExpandedChange : undefined,\n // grouping\n getGroupedRowModel:\n !columnGrouping?.manual && columnGrouping?.enabled ? getGroupedRowModel() : undefined,\n enableGrouping: columnGrouping?.enabled ?? false,\n manualGrouping: columnGrouping?.enabled && (columnGrouping?.manual ?? false),\n groupedColumnMode: columnGrouping?.enabled ? (columnGrouping?.groupedMode ?? false) : false,\n aggregationFns: columnGrouping?.enabled ? columnGrouping?.customAggregationFns : undefined,\n onGroupingChange: columnGrouping?.enabled ? columnGrouping?.onGroupingChange : undefined,\n // column sizing\n enableColumnResizing: columnResizing?.enabled ?? false,\n columnResizeMode: columnResizing?.enabled ? (columnResizing?.resizeMode ?? \"onChange\") : \"onChange\"\n })\n });\n\n if (isDefined(tableRef) && !isDefined(tableRef?.current)) {\n tableRef!.current = table;\n }\n\n const tableContainerRef = useRef<HTMLDivElement | null>(null);\n\n const isTableEmpty = table.getCoreRowModel().rows.length === 0;\n const isTableEmptyAfterFiltering = table.getRowModel().rows.length === 0;\n const isFiltering = table.getState().columnFilters.length > 0 || !!table.getState().globalFilter;\n\n const leftVisibleLeftColumns = table.getLeftVisibleLeafColumns();\n const centerVisibleLeafColumns = table.getCenterVisibleLeafColumns();\n const rightVisibleLeafColumns = table.getRightVisibleLeafColumns();\n\n const { isSomeColumnsFilterable, filterableColumns } = useMemo(() => {\n const mergedColumns: Column<TData, any>[] = [\n ...leftVisibleLeftColumns,\n ...centerVisibleLeafColumns,\n ...rightVisibleLeafColumns\n ];\n\n const isSomeColumnsFilterable = mergedColumns.some(\n (column) => column.getCanFilter() && column.columnDef.meta?.renderColumnFilter\n );\n\n return { isSomeColumnsFilterable, filterableColumns: mergedColumns };\n }, [centerVisibleLeafColumns, leftVisibleLeftColumns, rightVisibleLeafColumns]);\n\n const autoStatusKey = useMemo<StatusContentKey | null>(() => {\n if (isInitialLoading) return \"initialLoading\";\n if (isTableEmpty) return \"emptyData\";\n if (isTableEmptyAfterFiltering) return \"emptyFilteredData\";\n if (scrollFetch?.enabled && !isFiltering && !isInitialLoading) {\n if (scrollFetch.isFetchingMore) return \"fetchingMore\";\n if (scrollFetch.hasMore === false && !scrollFetch.isFetchingMore) return \"noMoreData\";\n }\n return null;\n }, [\n isInitialLoading,\n isFiltering,\n isTableEmpty,\n isTableEmptyAfterFiltering,\n scrollFetch?.enabled,\n scrollFetch?.hasMore,\n scrollFetch?.isFetchingMore\n ]);\n\n const activeStatusContentComputed = useMemo<StatusContentKey | null>(() => {\n if (!activeStatusContent) return autoStatusKey;\n if (typeof activeStatusContent === \"function\") {\n return activeStatusContent({ defaultComputedValue: autoStatusKey });\n }\n return activeStatusContent;\n }, [activeStatusContent, autoStatusKey]);\n\n const fetchMoreOnScrollReached = useCallback(\n (containerRefElement?: HTMLDivElement | null) => {\n if (\n !scrollFetch?.enabled ||\n !containerRefElement ||\n scrollFetch?.isFetchingMore ||\n !scrollFetch?.hasMore ||\n !scrollFetch?.fetchMore\n ) {\n return;\n }\n\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n\n const scrollableHeight = scrollHeight - clientHeight;\n const distanceToBottom = scrollableHeight - scrollTop;\n const ratioToBottom = scrollableHeight > 0 ? scrollTop / scrollableHeight : 1;\n\n const info: ScrollInfo = {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollableHeight,\n distanceToBottom,\n ratioToBottom,\n isTopReached: scrollTop === 0,\n isBottomReached: distanceToBottom <= 0\n };\n\n let shouldTrigger = false;\n if (typeof scrollFetch.scrollThreshold === \"number\") {\n shouldTrigger = info.ratioToBottom >= scrollFetch.scrollThreshold;\n } else if (typeof scrollFetch.scrollThreshold === \"function\") {\n shouldTrigger = scrollFetch.scrollThreshold(info);\n } else {\n shouldTrigger = info.ratioToBottom >= 0.7; // default 70%\n }\n\n if (shouldTrigger) {\n scrollFetch.fetchMore();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]\n );\n\n useEffect(() => {\n fetchMoreOnScrollReached(tableContainerRef.current);\n }, [fetchMoreOnScrollReached]);\n\n return (\n <TableContainer\n ref={tableContainerRef}\n {...components?.containerProps}\n className={cn(\n \"relative w-full overflow-auto h-full max-h-dvh max-w-full bg-white\",\n components?.containerProps?.className\n )}\n onScroll={(e) => fetchMoreOnScrollReached(e.currentTarget)}\n >\n {activeStatusContentComputed === \"initialLoading\" ?\n <StatusContentSlot\n content={statusContent?.initialLoading?.content ?? \"Loading...\"}\n icon={statusContent?.initialLoading?.icon}\n wrapperProps={statusContent?.initialLoading?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col h-full items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-initial-loading\"\n }}\n defaultIcon={<Spinner size={48} />}\n />\n : activeStatusContentComputed === \"emptyData\" ?\n <StatusContentSlot\n content={statusContent?.emptyData?.content ?? \"There's nothing here yet.\"}\n icon={statusContent?.emptyData?.icon}\n wrapperProps={statusContent?.emptyData?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col h-full items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-empty-data\"\n }}\n defaultIcon={<SuiEmptyDataIcon className=\"text-[128px]\" />}\n />\n : <>\n <Table {...components?.tableProps}>\n {/* header */}\n <TableHeader\n className={cn(\"sticky top-0 z-10\", components?.tableHeaderProps?.className)}\n {...components?.tableHeaderProps}\n >\n {table.getHeaderGroups().map((headerGroup) => {\n return (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const { classes, style } = getColumnPinningStyles(header.column);\n const useColumnSizing =\n header.column.columnDef?.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n false;\n\n const tableHeadCellProps =\n typeof components?.tableHeadCellProps === \"function\" ?\n components?.tableHeadCellProps({ header, table })\n : components?.tableHeadCellProps;\n\n const nextHeader = headerGroup.headers?.[header.index + 1] || header;\n const { isLastLeftPinnedColumn } = getColumnPinningInfo(header.column);\n const { isFirstRightPinnedColumn } = getColumnPinningInfo(nextHeader.column);\n const headerGroupLength = header.headerGroup.headers.length;\n const showSeparator =\n header.index !== headerGroupLength - 1 &&\n !isLastLeftPinnedColumn &&\n !isFirstRightPinnedColumn;\n\n return (\n <TableHead\n data-testid={`table-head-${header.id}`}\n key={header.id}\n colSpan={header.colSpan}\n {...tableHeadCellProps}\n {...header.column.columnDef?.meta?.headerProps}\n className={cn(\n classes,\n tableHeadCellProps?.className,\n header.column.columnDef?.meta?.headerProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? header.column.getSize() : undefined,\n minWidth: useColumnSizing ? header.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? header.column.columnDef.maxSize : undefined,\n ...tableHeadCellProps?.style,\n ...header.column.columnDef?.meta?.headerProps?.style\n }}\n >\n {header.isPlaceholder ? null : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n <ColumnSeparator\n {...components?.columnSeparatorProps?.headerCell}\n {...header.column.columnDef?.meta?.columnSeparatorProps}\n show={\n header.column.columnDef?.meta?.columnSeparatorProps?.show ??\n components?.columnSeparatorProps?.headerCell?.show ??\n showSeparator\n }\n />\n <ColumnResizer header={header} {...components?.columnResizerProps} />\n </TableHead>\n );\n })}\n </TableRow>\n );\n })}\n\n {/* filter row */}\n {isSomeColumnsFilterable && (\n <TableRow data-testid=\"table-filter-row\">\n {filterableColumns.map((column) => {\n const { classes, style } = getColumnPinningStyles(column);\n const useColumnSizing =\n column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;\n\n const tableFilterCellProps =\n typeof components?.tableFilterCellProps === \"function\" ?\n components?.tableFilterCellProps({ column, table })\n : components?.tableFilterCellProps;\n\n return (\n <TableCell\n data-testid={`table-filter-cell-${column.id}`}\n key={column.id}\n {...tableFilterCellProps}\n {...column.columnDef?.meta?.filterCellProps}\n className={cn(\n \"bg-white border-b\",\n classes,\n tableFilterCellProps?.className,\n column.columnDef?.meta?.filterCellProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? column.getSize() : undefined,\n minWidth: useColumnSizing ? column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? column.columnDef.maxSize : undefined,\n ...tableFilterCellProps?.style,\n ...column.columnDef?.meta?.filterCellProps?.style\n }}\n >\n {column.getCanFilter() &&\n column.columnDef.meta?.renderColumnFilter?.({\n column,\n table\n })}\n </TableCell>\n );\n })}\n </TableRow>\n )}\n </TableHeader>\n\n {/* data rows */}\n <TableBody {...components?.tableBodyProps}>\n {table.getRowModel().rows.map((row) => {\n const tableDataRowProps =\n typeof components?.tableDataRowProps === \"function\" ?\n components.tableDataRowProps({ row, table }) || {}\n : components?.tableDataRowProps || {};\n\n return (\n <TableRow\n data-testid={`table-data-row-${row.id}`}\n {...tableDataRowProps}\n key={row.id}\n className={cn(\"group\", tableDataRowProps?.className)}\n data-state={row.getIsSelected() ? \"selected\" : \"non-selected\"}\n {...getRowClickHandlers(onRowClick ?? (() => {}), {\n rowData: row.original,\n row,\n table\n })}\n >\n {row.getVisibleCells().map((cell) => {\n const { classes, style } = getColumnPinningStyles(cell.column);\n const useColumnSizing =\n cell.column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;\n\n const tableDataCellProps =\n typeof components?.tableDataCellProps === \"function\" ?\n components?.tableDataCellProps({ row, cell, table })\n : components?.tableDataCellProps;\n\n return (\n <TableCell\n data-testid={`table-data-cell-${cell.id}`}\n data-row-id={row.id}\n data-column-id={cell.column.id}\n key={cell.id}\n {...tableDataCellProps}\n {...cell.column.columnDef?.meta?.cellProps}\n className={cn(\n {\n \"bg-[#dfeae3]\": row.getIsSelected(),\n \"bg-white group-hover:bg-[#eff5f1]\": !row.getIsSelected()\n },\n classes,\n tableDataCellProps?.className,\n cell.column.columnDef?.meta?.cellProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? cell.column.getSize() : undefined,\n minWidth: useColumnSizing ? cell.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? cell.column.columnDef.maxSize : undefined,\n ...tableDataCellProps?.style,\n ...cell.column.columnDef?.meta?.cellProps?.style\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n\n {activeStatusContentComputed === \"emptyFilteredData\" && (\n <StatusContentSlot\n content={\n statusContent?.emptyFilteredData?.content ??\n \"No records found. Please try a different search.\"\n }\n icon={statusContent?.emptyFilteredData?.icon}\n wrapperProps={statusContent?.emptyFilteredData?.wrapperProps}\n defaultWrapperProps={{\n className:\n \"flex flex-col h-[calc(100%-76px)] items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-empty-filtered-data\"\n }}\n defaultIcon={<SuiEmptyDataIcon className=\"text-[128px]\" />}\n />\n )}\n\n {activeStatusContentComputed === \"fetchingMore\" && (\n <StatusContentSlot\n content={statusContent?.fetchingMore?.content ?? \"Loading more...\"}\n wrapperProps={statusContent?.fetchingMore?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-fetching-more\"\n }}\n />\n )}\n\n {activeStatusContentComputed === \"noMoreData\" && (\n <StatusContentSlot\n content={statusContent?.noMoreData?.content}\n icon={statusContent?.noMoreData?.icon}\n wrapperProps={statusContent?.noMoreData?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-no-more-data\"\n }}\n />\n )}\n </>\n }\n\n {/* devtool */}\n {debug && <DataTableDevTool table={table} />}\n </TableContainer>\n );\n};\n\nexport default DataTable;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\n// ──────────────────────────────\n// Root-level wrappers\n// ──────────────────────────────\nfunction Dialog(props: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger(props: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal(props: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n className\n )}\n {...props}\n />\n );\n}\n\n// ──────────────────────────────\n// Header (optional)\n// ──────────────────────────────\nfunction DialogHeader({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"relative flex items-center justify-between bg-[#82b495] text-white rounded-t-md px-4 py-3\",\n className\n )}\n {...props}\n >\n <div className=\"text-lg font-semibold\">{children}</div>\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute right-4 top-4 rounded-xs opacity-80 hover:opacity-100 transition-opacity focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n );\n}\n\n// ──────────────────────────────\n// Content (flex layout + sticky footer ready)\n// ──────────────────────────────\nexport interface DialogContentProps extends React.ComponentProps<typeof DialogPrimitive.Content> {\n header?: React.ReactNode;\n showOverlay?: boolean;\n}\n\nfunction DialogContent({\n className,\n children,\n header,\n showOverlay = true,\n ...props\n}: DialogContentProps) {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay />}\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex min-h-0 max-h-[90vh] w-full max-w-[80vw] translate-x-[-50%] translate-y-[-50%] flex-col rounded-lg border bg-background shadow-lg duration-200 sm:max-w-7xl\",\n className\n )}\n {...props}\n >\n {/* Header */}\n {header && <DialogHeader>{header}</DialogHeader>}\n\n <div className=\"flex-1 overflow-auto\">{children}</div>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\n// ──────────────────────────────\n// Footer / Title / Description\n// ──────────────────────────────\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end border-t bg-white p-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg font-semibold leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\n// ──────────────────────────────\n// Export\n// ──────────────────────────────\nexport { Dialog, DialogTrigger, DialogContent, DialogFooter, DialogTitle, DialogDescription };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\nexport const preserveNewlines = (s?: string) => (s ? s.replace(/\\r\\n/g, \"\\n\") : undefined);\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-white data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n success: \"bg-sus-primary-1 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n error:\n \"border border-[#BB0B0E] text-[#BB0B0E] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\",\n warning: \"bg-yellow-500 text-black shadow-xs hover:bg-yellow-600 dark:hover:bg-yellow-400\",\n cancel:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n confirm:\n \"border border-[#BB0B0E] text-[#BB0B0E] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\",\n \"confirm-green\":\n \"border border-[#379A2A] text-[#379A2A] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\"\n },\n\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n\n active: {\n true: \"opacity-90 ring-2 ring-offset-1 ring-ring\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, active, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","export const DIALOG_ALERT_I18N_SUBNAMESPACE = \"dialog_alert\";\nexport const i18nPrefix = `translation:${DIALOG_ALERT_I18N_SUBNAMESPACE}.`;\n","import { DIALOG_ALERT_I18N_SUBNAMESPACE } from \"../lib/constants\";\nimport { DialogAlertI18nResource } from \"../types\";\n\nexport const defaultResource: DialogAlertI18nResource = {\n sharedui: {\n translation: {\n [DIALOG_ALERT_I18N_SUBNAMESPACE]: {\n cancel: \"Cancel\",\n close: \"Close\",\n \"success.saved\": {\n title: \"Successfully\",\n description: \"Data has been successfully saved\"\n },\n \"success.deleted\": {\n title: \"Successfully\",\n description: \"Data has been successfully deleted\"\n },\n \"success.removed\": {\n title: \"Successfully\",\n description: \"Data has been successfully removed\"\n },\n \"error.api_db_error\": {\n title: \"API/Database Error\",\n description: \"Failed to connect to the system. Please check API or database connection.\"\n },\n \"error.permission_denied\": {\n title: \"Permission Denied\",\n description: \"You do not have permission to delete this data.\",\n confirm_text: \"Discard\"\n },\n \"error.session_expired\": {\n title: \"Session Expired\",\n description: \"Your session has expired or you have been logged out. Please sign in again.\",\n confirm_text: \"Logout\"\n },\n \"error.user_not_found\": {\n title: \"User Not Found\",\n description: \"The system could not locate the user account.\",\n confirm_text: \"Logout\"\n },\n \"error.data_not_found\": {\n title: \"Data Not Found\",\n description: \"The data has already been deleted or does not exist in the system.\"\n },\n \"error.data_restrict_editing\": {\n title: \"Data Status Restricts Editing\",\n description: \"Data status does not allow editing.\"\n },\n \"error.network_timeout_error\": {\n title: \"Network Error / Timeout\",\n description:\n \"The system could not connect to the network or the request took too long to process.\"\n },\n \"error.queue_full\": {\n title: \"Queue Full\",\n description: \"The notification queue has reached its limit. Please try again later.\"\n },\n \"error.invalid_data_format\": {\n title: \"Invalid Data Format\",\n description: \"Data creation failed due to invalid or incorrectly formatted data.\"\n },\n \"error.data_linked_to_system_data\": {\n title: \"Data Linked to System Data\",\n description: \"Cannot delete data because they are linked to existing system data.\"\n },\n \"error.pending_workflow_conflict\": {\n title: \"Pending Workflow Conflict \",\n description:\n \"The data is currently involved in a pending workflow or approval process and cannot be deactivated.\"\n },\n \"error.invalid_incomplete_data\": {\n title: \"Invalid or Incomplete Data\",\n description: \"Data status cannot be changed due to incomplete or invalid information.\"\n },\n \"error.client_side_error\": {\n title: \"Client-Side Error\",\n description: \"An error occurred on the client side. Please refresh the page or try again.\"\n },\n \"error.system_limitation\": {\n title: \"System Limitation\",\n description:\n \"The search cannot be completed due to system limitations. Please simplify your query.\"\n },\n \"error.timeout\": {\n title: \"Timeout\",\n description: \"Request failed due to a system error or timeout. Please try again.\"\n },\n \"error.duplicate_data\": {\n title: \"Duplicate Data\",\n description: \"The data you entered already exists in the system.\"\n },\n \"error.something_went_wrong\": {\n title: \"Something Went Wrong\",\n description: \"An unknown error occurred.\"\n },\n \"confirm.delete\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to delete this item?\",\n confirm_text: \"Delete\"\n },\n \"confirm.inactive\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to inactive this item?\",\n confirm_text: \"Inactive\"\n },\n \"confirm.active\": {\n variant: \"confirm-green\",\n title: \"Confirmation\",\n description: \"Are you sure you want to active this item?\",\n confirm_text: \"Active\"\n },\n \"confirm.leave_page\": {\n title: \"Confirmation\",\n description: \"Unsaved changes. Do you want to leave this page?\",\n confirm_text: \"Leave\"\n },\n \"confirm.remove\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to remove this item?\",\n confirm_text: \"Remove\"\n },\n \"confirm.logout\": {\n title: \"Confirmation\",\n description: \"Do you want to log out?\",\n confirm_text: \"Logout\"\n }\n }\n }\n }\n};\n","// src/i18n.js\nimport i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport { defaultResource } from \"./default\";\n\ni18n.use(initReactI18next).init({\n resources: defaultResource,\n lng: \"sharedui\",\n fallbackLng: \"sharedui\",\n defaultNS: \"translation\",\n interpolation: {\n escapeValue: false // react already safes from xss\n }\n});\n\nexport default i18n;\n","import { useCallback } from \"react\";\nimport {\n Dialog as BaseDialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription\n} from \"./components/ui/dialog\";\nimport { Button } from \"./components/ui/button\";\nimport { DialogAlertProps, DialogVariant } from \"./types\";\nimport \"./locale/i18n\";\nimport { useTranslation } from \"react-i18next\";\n\nconst titleColorVariant: Record<DialogVariant, string> = {\n default: \"\",\n success: \"text-green-600\",\n error: \"text-red-600\",\n warning: \"text-yellow-600\",\n confirm: \"text-red-600\",\n \"confirm-green\": \"text-red-600\"\n};\n\nexport function DialogAlert({\n open,\n onOpenChange,\n title,\n description,\n variant = \"default\",\n confirmText,\n cancelText = \"cancel\",\n onConfirm,\n onCancel,\n showCancel = true,\n align = \"center\",\n outlet,\n persistent = false\n}: DialogAlertProps) {\n const alignClass =\n align === \"start\" ? \"justify-start\"\n : align === \"end\" ? \"justify-end\"\n : \"justify-center\";\n\n const { t } = useTranslation();\n\n const handleCancel = useCallback(() => {\n onCancel?.();\n onOpenChange(false);\n }, [onCancel, onOpenChange]);\n\n const handleConfirm = useCallback(() => {\n onConfirm?.();\n }, [onConfirm]);\n\n return (\n <BaseDialog open={open} onOpenChange={persistent ? () => {} : onOpenChange}>\n <DialogContent className=\"max-w-md\" showCloseButton={!persistent}>\n <DialogHeader>\n {title && <DialogTitle className={titleColorVariant[variant]}>{t(title)}</DialogTitle>}\n {description && <DialogDescription>{t(description)}</DialogDescription>}\n </DialogHeader>\n\n {outlet && outlet}\n\n <div className={`flex gap-3 mt-3 ${alignClass}`}>\n {showCancel && (\n <Button variant=\"cancel\" onClick={handleCancel}>\n {t(cancelText)}\n </Button>\n )}\n {confirmText && (\n <Button variant={variant} onClick={handleConfirm}>\n {t(confirmText)}\n </Button>\n )}\n </div>\n </DialogContent>\n </BaseDialog>\n );\n}\n","import { DialogAlertTemplates } from \"../types\";\n\ntype GetTemplatesPayload = {\n setOpen?: (data: boolean) => void;\n};\ntype GetTemplatesFunc = (payload: GetTemplatesPayload) => DialogAlertTemplates;\n\nexport const getDialogTemplates: GetTemplatesFunc = ({ setOpen = () => {} }) => ({\n \"success.saved\": {\n variant: \"success\",\n title: \"success.saved.title\",\n description: \"success.saved.description\",\n cancelText: \"close\"\n },\n \"success.deleted\": {\n variant: \"success\",\n title: \"success.deleted.title\",\n description: \"success.deleted.description\",\n cancelText: \"close\"\n },\n \"success.removed\": {\n variant: \"success\",\n title: \"success.removed.title\",\n description: \"success.removed.description\",\n cancelText: \"close\"\n },\n \"error.api_db_error\": {\n variant: \"error\",\n title: \"error.api_db_error.title\",\n description: \"error.api_db_error.description\",\n cancelText: \"close\"\n },\n \"error.permission_denied\": {\n variant: \"error\",\n title: \"error.permission_denied.title\",\n description: \"error.permission_denied.description\",\n confirmText: \"error.permission_denied.confirm_text\",\n showCancel: false,\n onConfirm: () => setOpen(false)\n },\n \"error.session_expired\": {\n variant: \"error\",\n title: \"error.session_expired.title\",\n description: \"error.session_expired.description\",\n confirmText: \"error.session_expired.confirm_text\",\n showCancel: false\n },\n \"error.user_not_found\": {\n variant: \"error\",\n title: \"error.user_not_found.title\",\n description: \"error.user_not_found.description\",\n confirmText: \"error.user_not_found.confirm_text\",\n showCancel: false\n },\n \"error.data_not_found\": {\n variant: \"error\",\n title: \"error.data_not_found.title\",\n description: \"error.data_not_found.description\",\n cancelText: \"close\"\n },\n \"error.data_restrict_editing\": {\n variant: \"error\",\n title: \"error.data_restrict_editing.title\",\n description: \"error.data_restrict_editing.description\",\n cancelText: \"close\"\n },\n \"error.network_timeout_error\": {\n variant: \"error\",\n title: \"error.network_timeout_error.title\",\n description: \"error.network_timeout_error.description\",\n cancelText: \"close\"\n },\n \"error.queue_full\": {\n variant: \"error\",\n title: \"error.queue_full.title\",\n description: \"error.queue_full.description\",\n cancelText: \"close\"\n },\n \"error.invalid_data_format\": {\n variant: \"error\",\n title: \"error.invalid_data_format.title\",\n description: \"error.invalid_data_format.description\",\n cancelText: \"close\"\n },\n \"error.data_linked_to_system_data\": {\n variant: \"error\",\n title: \"error.data_linked_to_system_data.title\",\n description: \"error.data_linked_to_system_data.description\",\n cancelText: \"close\"\n },\n \"error.pending_workflow_conflict\": {\n variant: \"error\",\n title: \"error.pending_workflow_conflict.title\",\n description: \"error.pending_workflow_conflict.description\",\n cancelText: \"close\"\n },\n \"error.invalid_incomplete_data\": {\n variant: \"error\",\n title: \"error.invalid_incomplete_data.title\",\n description: \"error.invalid_incomplete_data.description\",\n cancelText: \"close\"\n },\n \"error.client_side_error\": {\n variant: \"error\",\n title: \"error.client_side_error.title\",\n description: \"error.client_side_error.description\",\n cancelText: \"close\"\n },\n \"error.system_limitation\": {\n variant: \"error\",\n title: \"error.system_limitation.title\",\n description: \"error.system_limitation.description\",\n cancelText: \"close\"\n },\n \"error.timeout\": {\n variant: \"error\",\n title: \"error.timeout.title\",\n description: \"error.timeout.description\",\n cancelText: \"close\"\n },\n \"error.duplicate_data\": {\n variant: \"error\",\n title: \"error.duplicate_data.title\",\n description: \"error.duplicate_data.description\",\n cancelText: \"close\"\n },\n \"error.something_went_wrong\": {\n variant: \"error\",\n title: \"error.something_went_wrong.title\",\n description: \"error.something_went_wrong.description\",\n cancelText: \"close\"\n },\n \"confirm.delete\": {\n variant: \"confirm\",\n title: \"confirm.delete.title\",\n description: \"confirm.delete.description\",\n confirmText: \"confirm.delete.confirm_text\"\n },\n \"confirm.inactive\": {\n variant: \"confirm\",\n title: \"confirm.inactive.title\",\n description: \"confirm.inactive.description\",\n confirmText: \"confirm.inactive.confirm_text\"\n },\n \"confirm.active\": {\n variant: \"confirm-green\",\n title: \"confirm.active.title\",\n description: \"confirm.active.description\",\n confirmText: \"confirm.active.confirm_text\"\n },\n \"confirm.leave_page\": {\n variant: \"confirm\",\n title: \"confirm.leave_page.title\",\n description: \"confirm.leave_page.description\",\n confirmText: \"confirm.leave_page.confirm_text\"\n },\n \"confirm.remove\": {\n variant: \"confirm\",\n title: \"confirm.remove.title\",\n description: \"confirm.remove.description\",\n confirmText: \"confirm.remove.confirm_text\"\n },\n \"confirm.logout\": {\n variant: \"confirm\",\n title: \"confirm.logout.title\",\n description: \"confirm.logout.description\",\n confirmText: \"confirm.logout.confirm_text\"\n }\n});\n","import { DialogAlert } from \"../DialogAlert\";\nimport {\n DialogAlertI18nResource,\n DialogAlertProps,\n DialogAlertTemplateUnit,\n TemplateKeys\n} from \"../types\";\nimport { getDialogTemplates } from \"../templates\";\nimport { create } from \"zustand\";\nimport i18n from \"../locale/i18n\";\nimport { useEffect } from \"react\";\nimport { i18nPrefix } from \"../lib/constants\";\n\ntype OpenDialogAlert = Omit<DialogAlertProps, \"open\" | \"onOpenChange\">;\ntype State = {\n open: boolean;\n setOpen: (data: boolean) => void;\n dialogProps: OpenDialogAlert;\n setDialogProps: (data: OpenDialogAlert) => void;\n openDialogAlert: (payload?: { template?: TemplateKeys; props?: OpenDialogAlert }) => void;\n closeDialogAlert: () => void;\n};\n\nconst useDialogAlertStore = create<State>((set, get) => ({\n open: false,\n dialogProps: {},\n setOpen: (data) => set({ open: data }),\n setDialogProps: (data) => set({ dialogProps: data }),\n\n openDialogAlert: (payload) => {\n let templateVal: DialogAlertTemplateUnit | undefined;\n if (payload?.template) {\n templateVal = getDialogTemplates({ setOpen: get().setOpen })[payload.template];\n // add prefix\n templateVal.title = templateVal.title ? i18nPrefix + templateVal.title : undefined;\n templateVal.description =\n templateVal.description ? i18nPrefix + templateVal.description : undefined;\n templateVal.confirmText =\n templateVal.confirmText ? i18nPrefix + templateVal.confirmText : undefined;\n templateVal.cancelText = templateVal.cancelText ? i18nPrefix + templateVal.cancelText : undefined;\n }\n get().setDialogProps({ ...templateVal, ...payload?.props });\n get().setOpen(true);\n },\n closeDialogAlert: () => {\n set({ open: false });\n }\n}));\n\ninterface DialogAlertProviderProps extends React.PropsWithChildren {\n /**\n * @description i18n resource for dialogAlert to use\n * @example \n * ``` \n * {\n * en: {\n * translation: {\n * dialog_alert: {\n * close: \"Close\",\n * cancel: \"Cancel\",\n * \"success.saved\": {\n title: \"Successfully\",\n description: \"Data has been successfully saved\"\n },\n * ....\n * }\n * }\n * }\n * }\n * ```\n */\n i18nResource?: DialogAlertI18nResource;\n /**\n * @description specify language to use\n */\n i18nLang?: string;\n}\nexport const DialogAlertProvider = ({ children, i18nResource, i18nLang }: DialogAlertProviderProps) => {\n const open = useDialogAlertStore((state) => state.open);\n const setOpen = useDialogAlertStore((state) => state.setOpen);\n const dialogProps = useDialogAlertStore((state) => state.dialogProps);\n\n useEffect(() => {\n if (!i18nResource) {\n i18n.changeLanguage(\"sharedui\");\n return;\n }\n try {\n const langs = Object.keys(i18nResource);\n for (const lang of langs) {\n i18n.addResourceBundle(lang, \"translation\", i18nResource[lang][\"translation\"], false, true);\n }\n i18n.changeLanguage(i18nLang);\n } catch {\n i18n.changeLanguage(\"sharedui\");\n return;\n }\n }, [i18nLang, i18nResource]);\n\n return (\n <>\n {children}\n <DialogAlert open={open} onOpenChange={setOpen} {...dialogProps} />\n </>\n );\n};\n\nconst openDialogAlert = useDialogAlertStore.getState().openDialogAlert;\nconst closeDialogAlert = useDialogAlertStore.getState().closeDialogAlert;\n/**\n * @description open error dialog based on given error, if the error is javascript Error instance\n * it will use error.message as dialog description, if the error is AxiosError it will use error template\n * based on error.response.status\n * @param error - Accept Error or AxiosError\n */\nconst openErrorDialogAlert = (error: unknown) => {\n if (error instanceof Error) {\n openDialogAlert({ template: \"error.something_went_wrong\", props: { description: error.message } });\n } else if ((error as any).isAxiosError) {\n let template: TemplateKeys = \"error.something_went_wrong\";\n switch ((error as any).response?.status) {\n case 400:\n template = \"error.invalid_incomplete_data\";\n break;\n case 401:\n template = \"error.session_expired\";\n break;\n case 403:\n template = \"error.permission_denied\";\n break;\n case 404:\n template = \"error.data_not_found\";\n break;\n case 409:\n template = \"error.duplicate_data\";\n break;\n case 500:\n template = \"error.api_db_error\";\n break;\n }\n openDialogAlert({ template });\n } else {\n openDialogAlert({ template: \"error.something_went_wrong\" });\n }\n};\n\nexport const getDialogAlertControls = () => ({\n openDialogAlert,\n closeDialogAlert,\n openErrorDialogAlert\n});\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport cn from \"../../utils/cn\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipArrow(props: React.ComponentProps<typeof TooltipPrimitive.Arrow>) {\n return <TooltipPrimitive.Arrow {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"relative bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md rounded-tl-none px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider,TooltipArrow }\n","// src/components/gridSettings/SortableRow.tsx\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { CircleMinus, GripVertical, Info } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Control, useWatch } from \"react-hook-form\";\nimport { cn } from \"@/utils\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/tooltip\";\nimport type { GridSettingsValues } from \"./schema\";\nimport type { Column } from \"./types\";\n\ninterface SortableRowProps {\n value: string;\n control: Control<GridSettingsValues>;\n name: `columns.${number}.id`;\n isDragging: boolean;\n availableColumns: Column[];\n onRemove?: () => void;\n}\n\nexport default function SortableRow({\n availableColumns,\n control,\n name,\n value,\n isDragging,\n onRemove\n}: SortableRowProps) {\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: value,\n disabled: name === \"columns.0.id\"\n });\n\n const style = React.useMemo<React.CSSProperties>(\n () => ({\n transform: CSS.Transform.toString(transform),\n transition\n }),\n [transform, transition]\n );\n\n const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n const currentFormColumns = useWatch({\n control,\n name: \"columns\"\n }) as GridSettingsValues[\"columns\"] | undefined;\n\n return (\n <div ref={setNodeRef} style={style} className=\"flex items-center rounded-md bg-white\">\n <FormField\n control={control}\n name={name}\n render={({ field }) => {\n const options = availableColumns\n .filter((col) => col.id === field.value || !currentFormColumns?.some((c) => c.id === col.id))\n .map((col) => ({ id: col.id, label: col?.label ? col.label : capitalize(col.id) }));\n\n return (\n <FormItem className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <GripVertical\n {...attributes}\n {...listeners}\n className={cn(\n \"h-5 w-5 text-[#B9B9B9] focus:outline-none cursor-grab\",\n name === \"columns.0.id\" && \"opacity-0 pointer-events-none\"\n )}\n />\n\n <Select\n value={field.value}\n onValueChange={field.onChange}\n disabled={name === \"columns.0.id\"}\n >\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full border-[#DDDDDD] data-[disabled]:opacity-100 aria-invalid:border-[#BB0B0E]\",\n name === \"columns.0.id\" ?\n \"text-[#8B8B8B] bg-[#EAEAEA] cursor-not-allowed\"\n : \"cursor-pointer\"\n )}\n >\n <SelectValue placeholder=\"Choose column...\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"cursor-pointer overflow-hidden rounded-md [&_[data-radix-select-viewport]]:m-0\">\n {options\n .sort((a, b) =>\n a.id === field.value ? -1\n : b.id === field.value ? 1\n : 0\n )\n .map((opt) => (\n <SelectItem\n key={opt.id}\n value={opt.id}\n className={cn(\n \"cursor-pointer focus:bg-[#e8edea] first:rounded-t-md last:rounded-b-md hover:text-inherit\",\n opt.id === field.value ? \"font-bold bg-[#dae5de] focus:bg-[#dae5de]\" : \"\"\n )}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {name === \"columns.0.id\" ?\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Info className=\"h-5 w-5\" stroke=\"white\" fill=\"#8B8B8B\" />\n </TooltipTrigger>\n <TooltipContent\n align=\"start\"\n alignOffset={10}\n className=\"bg-[#8B8B8B] rounded-none\"\n >\n <p>Column cannot be removed.</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n : <CircleMinus\n onClick={onRemove}\n className=\"h-5 w-5 cursor-pointer\"\n stroke=\"white\"\n fill=\"#C32A2C\"\n />\n }\n </div>\n {!isDragging && <FormMessage className={cn(\"pl-6 text-[#BB0B0E]\")} />}\n </FormItem>\n );\n }}\n />\n </div>\n );\n}\n","import { z } from \"zod\";\n\nexport const ColumnSchema = z.object({\n id: z.string().nonempty(\"This field is required\"),\n label: z.string().optional()\n});\n\nexport const GridSettingsSchema = z.object({\n columns: z.array(ColumnSchema).min(1, \"At least one column is required\")\n});\nexport type GridSettingsValues = z.infer<typeof GridSettingsSchema>;\n","import { useEffect, useState, useRef } from \"react\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport { Form } from \"@/components/ui/form\";\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle\n} from \"@/components/dialog\";\nimport { cn } from \"@/utils\";\nimport SortableRow from \"./SortableRow\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { restrictToParentElement, restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport { Plus, X } from \"lucide-react\";\nimport { Button } from \"@/components/button\";\nimport { GridSettingsSchema } from \"./schema\";\nimport type { GridSettingsValues } from \"./schema\";\nimport type { GridPayload, Column } from \"./types\";\n\nexport type GridSettingsModalProps = {\n isOpen: boolean;\n headerClassname?: string;\n descriptionClassname?: string;\n addButtonClassname?: string;\n saveButtonClassname?: string;\n availableColumns: Column[];\n currentColumns: Column[];\n limit?: number;\n onClose: () => void;\n onSaveColumns?: (payload: GridPayload, currentColumns: Column[]) => void;\n};\n\nconst GridSettingsModal = ({\n isOpen = false,\n headerClassname,\n descriptionClassname,\n addButtonClassname,\n saveButtonClassname,\n availableColumns,\n currentColumns,\n limit = availableColumns.length,\n onClose,\n onSaveColumns\n}: GridSettingsModalProps) => {\n const [isDragging, setIsDragging] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const form = useForm<GridSettingsValues>({\n resolver: zodResolver(GridSettingsSchema),\n defaultValues: { columns: currentColumns },\n mode: \"onChange\"\n });\n const { control, trigger } = form;\n const { fields, append, remove, move } = useFieldArray({\n control,\n name: \"columns\",\n keyName: \"fieldId\"\n });\n\n useEffect(() => {\n if (isOpen) {\n form.reset({ columns: currentColumns });\n }\n }, [isOpen, currentColumns, form]);\n\n const addColumn = async () => {\n const isValid = await trigger(\"columns\");\n\n if (isValid) {\n append({ id: \"\" });\n\n // Auto scroll\n requestAnimationFrame(() => {\n const container = scrollRef.current;\n if (container) {\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"smooth\"\n });\n }\n });\n } else {\n return;\n }\n };\n\n const onSubmit = (data: GridSettingsValues) => {\n const ordering = data.columns.map((i) => i.id);\n const visibility = Object.fromEntries(\n availableColumns.map((col) => [col.id, data.columns.some((c) => c.id === col.id)])\n );\n const pinning = { left: [data.columns[0].id] };\n\n if (onSaveColumns) {\n onSaveColumns({ ordering, visibility, pinning }, data.columns);\n }\n };\n\n // DnD\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n const oldIndex = fields.findIndex((f) => f.fieldId === active.id);\n const newIndex = fields.findIndex((f) => f.fieldId === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n move(oldIndex, newIndex);\n }\n }\n\n return (\n <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>\n <DialogContent className=\"sm:max-w-xl border-0 p-0 rounded-lg\">\n {/* Modal container */}\n <div className=\"flex flex-col min-h-[550px] rounded-lg overflow-hidden\">\n {/* Header */}\n <div className=\"flex-shrink-0\">\n <div\n className={cn(\n \"flex items-center justify-between bg-[#41875C] text-white px-4 py-2\",\n headerClassname\n )}\n >\n <DialogTitle className=\"text-xl\">Grid Settings</DialogTitle>\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className=\"flex items-center justify-center rounded-md hover:bg-white/10 transition cursor-pointer\"\n >\n <X className=\"h-6 w-6 text-white\" />\n </button>\n </div>\n\n <div\n className={cn(\n \"bg-[#818181] text-white px-4 py-2.5 flex items-center\",\n descriptionClassname\n )}\n >\n <DialogDescription className=\"text-white text-sm\">\n Add or remove columns. To change the column order, drag and drop a field.\n </DialogDescription>\n </div>\n </div>\n\n {/* Scrollable */}\n <div className=\"flex flex-col flex-1 px-12 my-10 overflow-hidden\">\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"flex flex-col flex-1\">\n <div\n ref={scrollRef}\n className=\"flex-1 overflow-y-auto overflow-x-hidden max-h-[35vh] [scrollbar-gutter:stable_both-edges]\"\n >\n <div className=\"space-y-3 px-6\">\n <div className=\"[&_button:not([disabled])]:cursor-pointer\">\n <SortableRow\n key={fields[0]?.fieldId}\n value={fields[0]?.fieldId}\n control={control}\n name={`columns.0.id`}\n isDragging={isDragging}\n availableColumns={availableColumns}\n />\n </div>\n\n <div className=\"space-y-3 [&_button:not([disabled])]:cursor-pointer\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToParentElement, restrictToVerticalAxis]}\n onDragStart={() => setIsDragging(true)}\n onDragEnd={(event) => {\n setIsDragging(false);\n handleDragEnd(event);\n }}\n >\n <SortableContext\n items={fields?.slice(1).map((c) => c?.fieldId)}\n strategy={verticalListSortingStrategy}\n >\n {fields?.slice(1).map((col, index) => (\n <SortableRow\n key={col?.fieldId}\n value={col?.fieldId}\n control={control}\n name={`columns.${index + 1}.id`}\n isDragging={isDragging}\n availableColumns={availableColumns}\n onRemove={() => remove(index + 1)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n </div>\n </div>\n\n <div className=\"sticky bottom-0 z-20 flex justify-center bg-white pt-3\">\n <Button\n type=\"button\"\n className={cn(\n \"bg-[#49865d] hover:bg-[#326446] text-white w-[350px] rounded-t-lg transition-colors\",\n addButtonClassname\n )}\n onClick={addColumn}\n disabled={fields.length >= limit}\n >\n <Plus className=\"h-4 w-4 mr-1\" /> Add column\n </Button>\n </div>\n </form>\n </Form>\n </div>\n\n {/* Footer */}\n <DialogFooter className=\"bottom-0 border-t bg-white\">\n <div className=\"flex gap-2 px-4 justify-end w-full\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n className=\"w-18 text-[#8B8B8B] border-[#B9B9B9]\"\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n className={cn(\"w-18 bg-[#379A2A] hover:bg-[#2f8524] text-white\", saveButtonClassname)}\n onClick={form.handleSubmit(onSubmit)}\n >\n Save\n </Button>\n </div>\n </DialogFooter>\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default GridSettingsModal;\n","import { create } from \"zustand\";\nimport type { Column, GridPayload } from \"../types\";\nimport type { RowData, Table } from \"@tanstack/react-table\";\n\ntype KeyOrString<T> = keyof T | (string & {});\n\ntype TanstackTableInstance = {\n getAllColumns(): any[];\n getVisibleLeafColumns(): any[];\n};\n\ntype UseGridSettingsStoreActions = {\n setAvailableColumns: (cols: Column[]) => void;\n setCurrentColumns: (cols: Column[]) => void;\n setPayload: (payload: GridPayload) => void;\n reset: () => void;\n extractColumns: (table: TanstackTableInstance) => {\n availableColumns: Column[];\n currentColumns: Column[];\n };\n syncColumnsState: <TData = RowData>(\n table: Table<TData>,\n options?: {\n excludeColumns: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Record<keyof TData, boolean>;\n }\n ) => void;\n};\n\ntype UseGridSettingsStoreState = {\n availableColumns: Column[];\n currentColumns: Column[];\n payload: GridPayload;\n};\n\nconst useGridSettingsStore = create<UseGridSettingsStoreState & UseGridSettingsStoreActions>(\n (set, get) => ({\n availableColumns: [],\n currentColumns: [],\n payload: {\n ordering: [],\n visibility: {},\n pinning: { left: [] }\n },\n setAvailableColumns: (cols: Column[]) => set({ availableColumns: cols }),\n setCurrentColumns: (cols: Column[]) => set({ currentColumns: cols }),\n setPayload: (payload: GridPayload) => set({ payload }),\n reset: () =>\n set({\n availableColumns: [],\n currentColumns: [],\n payload: { ordering: [], visibility: {}, pinning: { left: [] } }\n }),\n extractColumns: (table: TanstackTableInstance) => {\n const availableColumns = table.getAllColumns().map((col) => ({ id: col.id }));\n const currentColumns = table.getVisibleLeafColumns().map((col) => ({ id: col.id }));\n return { availableColumns, currentColumns };\n },\n syncColumnsState: <TData = RowData>(\n table: Table<TData>,\n options?: {\n excludeColumns?: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Record<keyof TData, boolean>;\n }\n ) => {\n const { availableColumns, currentColumns } = get().extractColumns(table);\n const { excludeColumns = [], labelMap = {}, visibility = {} } = options || {};\n\n const filteredExcludeColumnFn = (column: Column) => !excludeColumns.includes(column.id as any);\n\n const mapLabel = (col: Column) => ({\n id: col.id,\n label: labelMap?.[col.id as keyof typeof labelMap] ?? col.label ?? col.id\n });\n\n set({\n availableColumns: availableColumns.filter(filteredExcludeColumnFn).map(mapLabel),\n currentColumns: currentColumns\n .filter(filteredExcludeColumnFn)\n .filter((column) => {\n for (const [columnId, isVisible] of Object.entries(visibility)) {\n if (column.id === columnId && !isVisible) {\n return false;\n }\n }\n return true;\n })\n .map(mapLabel)\n });\n }\n })\n);\n\nexport default useGridSettingsStore;\n","import { Spinner } from \"@/components/spinner\";\nimport { cn } from \"@/utils\";\n\ntype LoadingOverlayProps = React.ComponentProps<\"div\"> & {\n fullscreen?: boolean;\n spinnerClassName?: string;\n};\n\nexport default function LoadingOverlay({\n className,\n fullscreen = true,\n spinnerClassName,\n ...props\n}: LoadingOverlayProps) {\n return (\n <div\n data-slot=\"loading-overlay\"\n className={cn(\n fullscreen ? \"fixed z-100\" : \"absolute z-10\",\n \"inset-0 flex items-center justify-center transition-opacity duration-300\",\n className\n )}\n {...props}\n >\n <Spinner className={cn(\"size-50\", spinnerClassName)} />\n </div>\n );\n}\n","import * as React from \"react\";\nimport LoadingOverlay from \"@/components/ui/LoadingOverlay\";\nimport { cn } from \"@/utils\";\n\nconst DEVICE_SIZES = [320, 420, 640, 768, 1024, 1280, 1536, 1920];\nconst IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\n\nexport type ImageLoaderProps = {\n src: string;\n width: number;\n quality?: number;\n};\n\nexport type ImageLoader = (props: ImageLoaderProps) => string;\n\nexport interface ImageProps\n extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\" | \"width\" | \"height\"> {\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n fill?: boolean;\n sizes?: string;\n quality?: number;\n priority?: boolean;\n placeholder?: \"empty\" | \"blur\";\n blurDataURL?: string;\n loader?: ImageLoader;\n unoptimized?: boolean;\n wrapperClassName?: string;\n objectFit?: React.CSSProperties[\"objectFit\"];\n objectPosition?: React.CSSProperties[\"objectPosition\"];\n onLoadingComplete?: (img: HTMLImageElement) => void;\n}\n\nconst defaultLoader: ImageLoader = ({ src }) => src;\n\nfunction toNumber(value?: number | string): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === \"string\") {\n const parsed = parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n\n return undefined;\n}\n\nfunction formatDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction matchClosestSize(target: number): number {\n for (const size of IMAGE_SIZES) {\n if (size >= target) {\n return size;\n }\n }\n return DEVICE_SIZES[DEVICE_SIZES.length - 1];\n}\n\nfunction getCandidateWidths({\n width,\n sizes,\n fill\n}: {\n width?: number;\n sizes?: string;\n fill?: boolean;\n}): number[] {\n if (fill || sizes) {\n return DEVICE_SIZES;\n }\n\n if (typeof width === \"number\" && width > 0) {\n const targets = new Set<number>([width, width * 2]);\n return Array.from(targets)\n .map((target) => matchClosestSize(target))\n .sort((a, b) => a - b);\n }\n\n return DEVICE_SIZES;\n}\n\nexport const Image = React.forwardRef<HTMLImageElement, ImageProps>(function Image(\n {\n src,\n alt,\n width,\n height,\n fill = false,\n sizes,\n quality = 75,\n priority = false,\n placeholder = \"empty\",\n blurDataURL,\n loader = defaultLoader,\n unoptimized = false,\n wrapperClassName,\n className,\n objectFit,\n objectPosition,\n onLoadingComplete,\n style,\n ...imgProps\n },\n ref\n) {\n const {\n loading: loadingProp,\n fetchPriority: fetchPriorityProp,\n decoding: decodingProp,\n onLoad: onLoadProp,\n ...restImgProps\n } = imgProps;\n\n const widthNumber = toNumber(width);\n const heightNumber = toNumber(height);\n\n React.useEffect(() => {\n if (!fill && (!widthNumber || !heightNumber)) {\n console.warn(\n \"[Image] When `fill` is false you should provide both `width` and `height` to prevent layout shifts.\"\n );\n }\n }, [fill, heightNumber, widthNumber]);\n\n const candidateWidths = React.useMemo(\n () => getCandidateWidths({ width: widthNumber, sizes, fill }),\n [fill, sizes, widthNumber]\n );\n\n // Keep blurDataURL around to avoid passing it through to the DOM while the API transitions.\n void blurDataURL;\n\n const largestWidth =\n candidateWidths[candidateWidths.length - 1] ?? widthNumber ?? DEVICE_SIZES[DEVICE_SIZES.length - 1];\n\n const computedSrc = React.useMemo(() => {\n if (unoptimized) {\n return src;\n }\n\n return loader({ src, width: largestWidth, quality });\n }, [largestWidth, loader, quality, src, unoptimized]);\n\n const computedSrcSet = React.useMemo(() => {\n if (unoptimized) {\n return undefined;\n }\n\n return candidateWidths\n .map((currentWidth) => `${loader({ src, width: currentWidth, quality })} ${currentWidth}w`)\n .join(\", \");\n }, [candidateWidths, loader, quality, src, unoptimized]);\n\n const sizesValue =\n sizes ??\n (fill ? \"100vw\"\n : widthNumber ? `${widthNumber}px`\n : undefined);\n\n const [isLoaded, setIsLoaded] = React.useState(false);\n const internalRef = React.useRef<HTMLImageElement | null>(null);\n\n const setRefs = React.useCallback(\n (node: HTMLImageElement | null) => {\n internalRef.current = node;\n if (!ref) {\n return;\n }\n if (typeof ref === \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n },\n [ref]\n );\n\n React.useEffect(() => {\n const image = internalRef.current;\n if (!image) {\n return;\n }\n\n if (image.complete && image.naturalWidth > 0) {\n setIsLoaded(true);\n onLoadingComplete?.(image);\n } else {\n setIsLoaded(false);\n }\n }, [onLoadingComplete, src]);\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setIsLoaded(true);\n onLoadProp?.(event);\n onLoadingComplete?.(event.currentTarget);\n },\n [onLoadProp, onLoadingComplete]\n );\n\n const loading = priority ? \"eager\" : (loadingProp ?? \"lazy\");\n const fetchPriority = priority ? \"high\" : fetchPriorityProp;\n const decoding = decodingProp ?? \"async\";\n\n const resolvedObjectFit = objectFit ?? (fill ? \"cover\" : undefined);\n\n const wrapperStyle = React.useMemo<React.CSSProperties>(\n () => ({\n position: \"relative\",\n display: fill ? \"block\" : \"inline-block\",\n overflow: \"hidden\",\n width: fill ? \"100%\" : (formatDimension(width) ?? undefined),\n height: fill ? \"100%\" : (formatDimension(height) ?? undefined)\n }),\n [fill, height, width]\n );\n\n const imageStyle = React.useMemo<React.CSSProperties>(\n () => ({\n width: fill ? \"100%\" : (formatDimension(width) ?? undefined),\n height: fill ? \"100%\" : (formatDimension(height) ?? undefined),\n position: fill ? \"absolute\" : undefined,\n inset: fill ? 0 : undefined,\n objectFit: resolvedObjectFit,\n objectPosition,\n ...style\n }),\n [fill, height, objectPosition, resolvedObjectFit, style, width]\n );\n\n const shouldShowLoadingOverlay = placeholder === \"blur\";\n\n return (\n <span\n data-slot=\"image\"\n className={cn(\"relative overflow-hidden\", fill ? \"block\" : \"inline-block\", wrapperClassName)}\n style={wrapperStyle}\n >\n {shouldShowLoadingOverlay && (\n <LoadingOverlay\n aria-hidden\n fullscreen={false}\n spinnerClassName=\"size-6\"\n className={cn(\n // \"bg-white/75!\",\n isLoaded ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n />\n )}\n <img\n ref={setRefs}\n className={cn(\n \"block transition-opacity duration-300\",\n fill && \"absolute inset-0 size-full\",\n shouldShowLoadingOverlay && !isLoaded ? \"opacity-0\" : \"opacity-100\",\n className\n )}\n src={computedSrc}\n srcSet={computedSrcSet}\n sizes={sizesValue}\n width={fill ? undefined : widthNumber}\n height={fill ? undefined : heightNumber}\n alt={alt}\n loading={loading}\n fetchPriority={fetchPriority}\n decoding={decoding}\n onLoad={handleLoad}\n style={imageStyle}\n {...restImgProps}\n />\n </span>\n );\n});\n\nImage.displayName = \"Image\";\n","import * as React from \"react\";\n\nimport type { GridPayload } from \"../../grid-settings/types\";\n\nexport interface ListTableProps {\n gridSettingPayload?: GridPayload;\n onCreateExample?: () => void;\n onViewExample?: (exampleId: string) => void;\n onEditExample?: (exampleId: string) => void;\n onDeleteExample?: (exampleId: string) => void;\n selectedRowId?: string;\n onTableReady?: (table: unknown) => void;\n children?: React.ReactNode;\n}\n\nconst ListTable: React.FC<ListTableProps> = ({ onTableReady, children }) => {\n React.useEffect(() => {\n if (onTableReady) {\n onTableReady({ ready: true });\n }\n }, [onTableReady]);\n\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n {children ?? \"Provide your table implementation here.\"}\n </div>\n );\n};\n\nexport default ListTable;\n","import * as React from \"react\";\n\nimport { cn } from \"../../../utils\";\n\nexport interface ListContainerProps {\n className?: string;\n isLeftExpanded: boolean;\n children: React.ReactNode;\n}\n\nconst ListContainer: React.FC<ListContainerProps> = ({ className, isLeftExpanded, children }) => {\n return (\n <div\n className={cn(\n \"h-[calc(100vh-140px)] min-w-full overflow-hidden rounded-2xl border border-slate-300 bg-white shadow-lg transition-all duration-300 ease-in-out\",\n {\n \"w-full\": isLeftExpanded,\n \"md:w-full\": isLeftExpanded,\n \"w-full lg:w-1/2\": !isLeftExpanded\n },\n className\n )}\n style={{\n position: \"relative\",\n transitionProperty: \"width, transform\",\n transitionDuration: \"300ms\"\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default ListContainer;\n","import * as React from \"react\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { SuiSettingIcon } from \"../../icons\";\nimport { cn } from \"../../../utils\";\n\nexport interface ListHeaderProps {\n title: string | React.ReactNode;\n isExpanded?: boolean;\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n bgColor?: string;\n textClassName?: string;\n titleIcon?: React.ReactNode;\n rightActions?: React.ReactNode;\n className?: string;\n}\n\nconst ListHeader: React.FC<ListHeaderProps> = ({\n title,\n titleIcon,\n isExpanded = false,\n bgColor = \"bg-[#82B495]\",\n textClassName = \"text-white\",\n onSettingClick,\n onExpandClick,\n rightActions,\n className\n}) => {\n return (\n <div data-testid=\"list-header\" className={cn(\"rounded-t-lg px-4 py-2\", bgColor, className)}>\n <div className=\"flex items-center justify-between\">\n <div className={cn(\"flex items-center gap-2 text-lg\", textClassName)}>\n {titleIcon}\n <p className=\"leading-none\">{title}</p>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {rightActions ?? (\n <>\n {onSettingClick && (\n <button\n onClick={onSettingClick}\n title=\"Settings\"\n className=\"rounded p-1 hover:cursor-pointer hover:bg-white/20\"\n >\n <SuiSettingIcon className=\"text-white\" />\n </button>\n )}\n\n {onSettingClick && onExpandClick && (\n <div className={cn(\"h-8 w-px\", textClassName.replace(\"text-\", \"bg-\"))} />\n )}\n\n {onExpandClick && (\n <button\n data-testid=\"list-expand-button\"\n onClick={onExpandClick}\n title={isExpanded ? \"Collapse\" : \"Expand\"}\n className=\"rounded p-1 hover:cursor-pointer hover:bg-white/20\"\n >\n <span className=\"flex items-center gap-[2px] text-white\">\n {isExpanded ?\n <>\n <ChevronLeft className=\"h-4 w-4\" />\n <ChevronRight className=\"h-4 w-4 -ml-2\" />\n </>\n : <>\n <ChevronRight className=\"h-4 w-4\" />\n <ChevronLeft className=\"h-4 w-4 -ml-2\" />\n </>\n }\n </span>\n </button>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ListHeader;\n","import * as React from \"react\";\nimport { CircleUserRound as UserIcon } from \"lucide-react\";\n\nimport type { GridPayload } from \"../grid-settings/types\";\nimport ListTable from \"./components/table\";\nimport ListContainer from \"./components/container\";\nimport ListHeader from \"./components/header\";\n\nexport type ListProps = {\n gridSettingPayload: GridPayload;\n isLeftExpanded: boolean;\n handleSettingClick: () => void;\n handleExpandClick: () => void;\n onCreateExample: () => void;\n onViewExample: (exampleId: string) => void;\n onEditExample: (exampleId: string) => void;\n onDeleteExample: (exampleId: string) => void;\n selectedRowId?: string;\n onTableReady?: (table: unknown) => void;\n children?: React.ReactNode;\n};\n\nconst List: React.FC<ListProps> = ({\n isLeftExpanded,\n handleSettingClick,\n handleExpandClick,\n onTableReady,\n children\n}) => {\n return (\n <ListContainer className=\"flex flex-col bg-white shadow-lg\" isLeftExpanded={isLeftExpanded}>\n <ListHeader\n title=\"Previous Example\"\n isExpanded={isLeftExpanded}\n onSettingClick={handleSettingClick}\n onExpandClick={handleExpandClick}\n titleIcon={<UserIcon className=\"h-6 w-6 text-white\" />}\n />\n\n <div className=\"flex h-full\">\n <ListTable onTableReady={onTableReady}>{children}</ListTable>\n </div>\n </ListContainer>\n );\n};\n\nexport default List;\n","import React from \"react\";\n\nconst InfoIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\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 {...props}\n >\n <path\n d=\"M10.0013 18.3327C14.6037 18.3327 18.3346 14.6017 18.3346 9.99935C18.3346 5.39698 14.6037 1.66602 10.0013 1.66602C5.39893 1.66602 1.66797 5.39698 1.66797 9.99935C1.66797 14.6017 5.39893 18.3327 10.0013 18.3327Z\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 13.3333V10\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 6.66602H10.0083\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default React.memo(InfoIcon);\n","// core\nimport React, { isValidElement } from \"react\";\n\n// components\nimport { CircleHelp } from \"lucide-react\";\nimport InfoIcon from \"../../assets/icon/InfoIcon\";\nimport { Button } from \"../button\";\n\n// hooks\nimport useScreenSize from \"../../hooks/useScreenSize/useScreenSize\";\n\n// utils\nimport cn from \"../../utils/cn\";\nimport { Tooltip, TooltipArrow, TooltipContent, TooltipTrigger } from \"../tooltip\";\n\ntype RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n\ntype NavbarBaseProps = {\n className?: string;\n title?: React.ReactNode;\n subTitle?: React.ReactNode;\n headImageURL?: string;\n headImageURLClassName?: string;\n tooltipContentClassName?: string;\n tooltipTitle?: string;\n tooltipIcon?: React.ReactNode;\n tooltipdescription?: React.ReactNode;\n tooltipDescriptionWrapperClassName?: string;\n mainButtonText?: React.ReactNode;\n mainButtonClassName?: string;\n mainButtonDisable?: boolean;\n subButtonText?: React.ReactNode;\n subButtonClassName?: string;\n subButtonDisable?: boolean;\n onMainButtonClick?: () => void;\n onSubButtonClick?: () => void;\n searchButton?: React.ReactNode;\n separatorDisable?: boolean;\n};\n\n// 👇 ใช้ utility type เพื่อบังคับว่า ต้องมีอย่างน้อย title หรือ headImageURL\nexport type NavbarProps = RequireAtLeastOne<NavbarBaseProps, \"title\">;\n\nconst Navbar = ({\n className,\n title,\n subTitle,\n headImageURL = \"\",\n headImageURLClassName,\n tooltipContentClassName = \"w-[450px] lg:!w-[630px]\",\n tooltipTitle,\n tooltipIcon,\n tooltipdescription,\n tooltipDescriptionWrapperClassName,\n mainButtonText,\n mainButtonClassName,\n mainButtonDisable = false,\n subButtonText,\n subButtonClassName,\n subButtonDisable = false,\n onMainButtonClick,\n onSubButtonClick,\n separatorDisable = false,\n searchButton\n}: NavbarProps) => {\n const { isMobile, isTablet, isDesktop } = useScreenSize();\n const Icon = CircleHelp;\n const shouldShowSeparator = !separatorDisable && isValidElement(searchButton);\n\n return (\n <nav\n className={cn(\n \"py-3 px-8 w-full h-16 bg-sus-primary-1 flex items-center justify-between\",\n className\n )}\n >\n {/* left content */}\n <div className=\"flex items-center gap-2.5\">\n {headImageURL !== \"\" ?\n <img src={headImageURL} alt=\"\" className={cn(\"w-full h-full\", headImageURLClassName)} />\n : <div className=\"flex flex-col\">\n {isValidElement(title) ? title : <h1 className=\"text-white text-xl font-bold\">{title}</h1>}\n {isValidElement(subTitle) ?\n subTitle\n : <h1 className=\"text-white text-sm font-semibold\">{subTitle}</h1>}\n </div>\n }\n {tooltipTitle && (\n <Tooltip>\n <TooltipTrigger asChild>\n <button className=\"text-white hover:opacity-80 \">\n <InfoIcon className=\"w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent\n forceMount\n side={isDesktop ? \"right\" : \"bottom\"}\n align=\"start\"\n avoidCollisions={false}\n className={cn(\n \"bg-white border border-black p-6\",\n \"transition-all duration-150 ease-out origin-top top-1 left-4\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"data-[state=closed]:scale-95 data-[state=open]:scale-100\",\n { \"mt-5\": isDesktop },\n tooltipContentClassName\n )}\n >\n <div\n role=\"tooltip\"\n aria-label={tooltipTitle}\n className={cn(\n \"flex flex-col gap-4 text-sm text-black text-pretty \",\n tooltipDescriptionWrapperClassName\n )}\n >\n {tooltipTitle && (\n <div className=\"flex items-center gap-3\">\n {isValidElement(tooltipIcon) ? tooltipIcon : <Icon size={32} aria-hidden=\"true\" />}\n <h3 className=\"text-xl font-bold\">{tooltipTitle}</h3>\n </div>\n )}\n {isValidElement(tooltipdescription) && tooltipdescription}\n </div>\n <TooltipArrow className=\"-my-px border-none fill-white\" asChild>\n <svg\n width={isDesktop ? 35 : 33}\n height={35}\n viewBox=\"0 0 40 35\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn({\n \"rotate-90 visible\": isTablet || isMobile,\n \"\": isDesktop\n })}\n >\n <path d=\"M0 0 L40 0 L0 35 Z\" fill=\"white\" />\n {isDesktop ?\n <>\n <line x1=\"0\" y1=\"40\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2.5\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n : <>\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n }\n </svg>\n </TooltipArrow>\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n\n {/* right content */}\n <div className=\"flex items-center gap-3\">\n {mainButtonText && (\n <Button\n disabled={mainButtonDisable}\n className={cn(\"bg-sus-secondary-1 hover:bg-sus-secondary-hover\", mainButtonClassName)}\n size=\"lg\"\n onClick={onMainButtonClick}\n >\n {mainButtonText}\n </Button>\n )}\n {subButtonText && (\n <Button\n disabled={subButtonDisable}\n className={cn(\"bg-sus-primary-2 hover:bg-sus-primary-2-hover\", subButtonClassName)}\n size=\"lg\"\n onClick={onSubButtonClick}\n >\n {subButtonText}\n </Button>\n )}\n {shouldShowSeparator && <div role=\"separator\" className=\"ml-1 w-[1px] h-10 bg-white\" />}\n {isValidElement(searchButton) ? searchButton : \"\"}\n </div>\n </nav>\n );\n};\n\nexport default React.memo(Navbar);\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-1.5 p-4\", className)} {...props} />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription\n};\n","import { create } from \"zustand\";\n\ntype PreventPageLeaveStore = {\n isPreventing: boolean;\n setPreventing: (value: boolean) => void;\n};\n\nexport const usePreventPageLeaveStore = create<PreventPageLeaveStore>((set) => ({\n isPreventing: false,\n setPreventing: (value) => set({ isPreventing: value })\n}));\n\nexport default usePreventPageLeaveStore;\n","import React, { useEffect } from \"react\";\nimport { usePreventPageLeaveStore } from \"./store/usePreventPageLeaveStore\";\n\nconst PreventPageLeave = ({ children }: React.PropsWithChildren) => {\n const { isPreventing } = usePreventPageLeaveStore();\n\n useEffect(() => {\n if (!isPreventing || typeof window === \"undefined\") {\n return;\n }\n\n function beforeUnload(event: BeforeUnloadEvent) {\n event.preventDefault();\n\n // Included for legacy support, e.g. Chrome/Edge < 119\n event.returnValue = true;\n }\n\n window.addEventListener(\"beforeunload\", beforeUnload);\n return () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n };\n }, [isPreventing]);\n\n return children;\n};\n\nexport default PreventPageLeave;\n","import { useEffect } from \"react\";\nimport { usePreventPageLeaveStore } from \"../store\";\n\nexport type UsePreventPageLeaveOptions = {\n isPrevening: boolean;\n};\n\nconst usePreventPageLeave = ({ isPrevening }: UsePreventPageLeaveOptions) => {\n const setPreventing = usePreventPageLeaveStore((state) => state.setPreventing);\n\n useEffect(() => {\n setPreventing(isPrevening);\n }, [isPrevening, setPreventing]);\n};\n\nexport default usePreventPageLeave;\n","import { cn } from \"@/utils\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nexport function RadioGroupRoot({\n children,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <form>\n <RadioGroupPrimitive.Root {...props}>{children}</RadioGroupPrimitive.Root>\n </form>\n );\n}\n\nexport function RadioGroupItem({\n id,\n value,\n children,\n className,\n containerProps,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {\n value: string;\n containerProps?: React.ComponentProps<\"div\">;\n}) {\n return (\n <div className=\"flex items-center\" {...containerProps}>\n <RadioGroupPrimitive.Item\n className={cn(\n \"size-5 cursor-default rounded-full border-2 border-black bg-white outline-none focus:shadow-black data-[state=checked]:border-[#5181B8] data-[state=checked]:scale-90 data-[state=checked]:border-1\",\n className\n )}\n value={value}\n id={id}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"relative flex size-full items-center justify-center after:block after:size-[11px] after:rounded-full after:bg-[#5181B8]\" />\n </RadioGroupPrimitive.Item>\n {children}\n </div>\n );\n}\n\nexport function RadioLabel({ children, htmlFor, className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label className={cn(\"pl-4 leading-none text-black\", className)} htmlFor={htmlFor} {...props}>\n {children}\n </label>\n );\n}\n","import * as React from \"react\";\nimport type { LexicalNode, NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\nimport { cn } from \"@/utils\";\n\nexport type ImagePayload = {\n src: string;\n altText?: string;\n width?: number | \"inherit\";\n height?: number | \"inherit\";\n};\n\nexport type SerializedImageNode = Spread<\n {\n type: \"image\";\n version: 1;\n },\n {\n src: string;\n altText: string;\n width: number | \"inherit\";\n height: number | \"inherit\";\n } & SerializedLexicalNode\n>;\n\nconst defaultDimensions = {\n width: \"inherit\" as const,\n height: \"inherit\" as const\n};\n\nfunction ImageComponent({\n altText,\n src,\n width,\n height\n}: {\n altText: string;\n src: string;\n width: number | \"inherit\";\n height: number | \"inherit\";\n}) {\n const style: React.CSSProperties = {\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : undefined\n };\n\n return (\n <span className=\"block max-w-full\" contentEditable={false}>\n <img\n src={src}\n alt={altText || \"\"}\n draggable={false}\n className={cn(\n \"max-w-full rounded-md border border-border/60 bg-muted object-contain\",\n \"shadow-sm transition-transform hover:shadow\"\n )}\n style={style}\n />\n </span>\n );\n}\n\nexport class ImageNode extends DecoratorNode<React.ReactNode> {\n __src: string;\n __altText: string;\n __width: number | \"inherit\";\n __height: number | \"inherit\";\n\n static getType(): string {\n return \"image\";\n }\n\n static clone(node: ImageNode): ImageNode {\n return new ImageNode(\n node.__src,\n {\n altText: node.__altText,\n width: node.__width,\n height: node.__height\n },\n node.getKey()\n );\n }\n\n constructor(src: string, payload?: Omit<ImagePayload, \"src\">, key?: NodeKey) {\n super(key);\n const {\n altText = \"\",\n width = defaultDimensions.width,\n height = defaultDimensions.height\n } = payload ?? {};\n\n this.__src = src;\n this.__altText = altText;\n this.__width = width;\n this.__height = height;\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { src, altText, width, height } = serializedNode;\n return new ImageNode(src, {\n altText,\n width,\n height\n });\n }\n\n exportJSON(): SerializedImageNode {\n return {\n type: \"image\",\n version: 1,\n src: this.__src,\n altText: this.__altText,\n width: this.__width,\n height: this.__height\n };\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(): false {\n return false;\n }\n\n decorate(): React.ReactNode {\n return (\n <ImageComponent\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n />\n );\n }\n\n isInline(): false {\n return false;\n }\n\n extractWithChild(): boolean {\n return false;\n }\n\n exportDOM(): { element: HTMLElement } {\n const element = document.createElement(\"img\");\n element.setAttribute(\"src\", this.__src);\n if (this.__altText) {\n element.setAttribute(\"alt\", this.__altText);\n }\n\n return { element };\n }\n\n getTextContent(): string {\n return this.__altText;\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable();\n writable.__src = src;\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n setDimensions(width: number | \"inherit\", height: number | \"inherit\"): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n getWidth(): number | \"inherit\" {\n return this.__width;\n }\n\n getHeight(): number | \"inherit\" {\n return this.__height;\n }\n}\n\nexport function $createImageNode({ src, altText, width, height }: ImagePayload): ImageNode {\n return new ImageNode(src, {\n altText,\n width: width ?? defaultDimensions.width,\n height: height ?? defaultDimensions.height\n });\n}\n\nexport function $isImageNode(node?: LexicalNode | null): node is ImageNode {\n return node instanceof ImageNode;\n}\n","import * as React from \"react\";\nimport { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport type {\n EditorState,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditorState,\n SerializedLexicalNode\n} from \"lexical\";\nimport {\n $createParagraphNode,\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_NORMAL,\n FORMAT_ELEMENT_COMMAND,\n FORMAT_TEXT_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n UNDO_COMMAND,\n createCommand\n} from \"lexical\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport {\n HeadingNode,\n QuoteNode,\n $createHeadingNode,\n $createQuoteNode,\n $isHeadingNode\n} from \"@lexical/rich-text\";\nimport {\n ListNode,\n ListItemNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n $isListNode\n} from \"@lexical/list\";\nimport { LinkNode, TOGGLE_LINK_COMMAND, $createLinkNode, $isLinkNode } from \"@lexical/link\";\nimport { CodeNode, $createCodeNode, $isCodeNode } from \"@lexical/code\";\nimport { TRANSFORMERS } from \"@lexical/markdown\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport {\n AlignCenter,\n AlignLeft,\n AlignRight,\n Bold,\n Code as InlineCodeIcon,\n CodeSquare,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n Image as ImageIcon,\n Link as LinkIcon,\n Link2Off,\n List as BulletListIcon,\n ListOrdered,\n Pilcrow,\n Quote as QuoteIcon,\n Redo,\n Strikethrough,\n Underline,\n Undo\n} from \"lucide-react\";\nimport { useForm } from \"react-hook-form\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Dialog, DialogContent, DialogFooter } from \"@/components/ui/dialog\";\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ImageNode, $createImageNode, $isImageNode, type ImagePayload } from \"./ImageNode\";\n\ntype RichTextSerializedState = string;\n\ntype ToolbarBlockType = \"paragraph\" | \"h1\" | \"h2\" | \"h3\" | \"bullet\" | \"number\" | \"quote\" | \"code\";\n\ntype EditorSerializedState = SerializedEditorState<SerializedLexicalNode>;\n\ntype ImageUploadResult = ImagePayload | string;\n\ntype RichTextProps = {\n value?: RichTextSerializedState;\n defaultValue?: RichTextSerializedState;\n onChange?: (serializedState: RichTextSerializedState, editorState: EditorState) => void;\n onHtmlChange?: (html: string, editorState: EditorState) => void;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n editorClassName?: string;\n toolbarClassName?: string;\n autoFocus?: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n acceptImageMimeTypes?: string;\n allowImageUrlInsert?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst theme = {\n paragraph: \"mb-2 leading-6 text-sm text-foreground\",\n placeholder:\n \"pointer-events-none absolute left-0 top-0 px-3 py-2 text-sm text-muted-foreground select-none\",\n quote: \"border-l-2 border-border pl-3 italic text-muted-foreground\",\n heading: {\n h1: \"scroll-m-20 text-2xl font-semibold tracking-tight\",\n h2: \"scroll-m-20 text-xl font-semibold tracking-tight\",\n h3: \"scroll-m-20 text-lg font-semibold tracking-tight\"\n },\n list: {\n listitem: \"ml-4 marker:text-muted-foreground [&:not(:last-child)]:mb-1\",\n nested: {\n listitem: \"ml-4\"\n },\n ol: \"ml-4 list-decimal pl-1\",\n ul: \"ml-4 list-disc pl-1\"\n },\n text: {\n bold: \"font-semibold\",\n italic: \"italic\",\n underline: \"underline underline-offset-4\",\n strikethrough: \"line-through\",\n code: \"rounded bg-muted px-1 py-[2px] font-mono text-[13px]\"\n },\n link: \"text-primary underline underline-offset-4\",\n code: \"relative block overflow-x-auto rounded-md border border-border bg-muted px-3 py-2 font-mono text-sm text-foreground shadow-sm\"\n};\n\nconst nodes = [HeadingNode, QuoteNode, ListNode, ListItemNode, LinkNode, CodeNode, ImageNode];\n\nconst INSERT_IMAGE_COMMAND = createCommand<ImagePayload>(\"INSERT_IMAGE_COMMAND\");\nconst DEFAULT_IMAGE_ACCEPT = \"image/*\";\n\nfunction parseSerializedEditorState(raw?: RichTextSerializedState): EditorSerializedState | undefined {\n if (!raw) {\n return undefined;\n }\n\n try {\n return JSON.parse(raw) as EditorSerializedState;\n } catch (error) {\n console.error(\"[RichText] Failed to parse editor state:\", error);\n return undefined;\n }\n}\n\nfunction Placeholder({ placeholder }: { placeholder: string }) {\n return <div className={theme.placeholder}>{placeholder}</div>;\n}\n\ntype ToolbarToggleState = {\n isBold: boolean;\n isItalic: boolean;\n isUnderline: boolean;\n isStrikethrough: boolean;\n isCode: boolean;\n isLink: boolean;\n blockType: ToolbarBlockType;\n elementFormat: ElementFormatType | null;\n canUndo: boolean;\n canRedo: boolean;\n};\n\nconst initialToolbarState: ToolbarToggleState = {\n isBold: false,\n isItalic: false,\n isUnderline: false,\n isStrikethrough: false,\n isCode: false,\n isLink: false,\n blockType: \"paragraph\",\n elementFormat: null,\n canUndo: false,\n canRedo: false\n};\n\ntype ToolbarButtonProps = {\n label: string;\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n onClick: () => void;\n active?: boolean;\n disabled?: boolean;\n};\n\nfunction ToolbarButton({ label, icon: Icon, onClick, active, disabled }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n title={label}\n onClick={onClick}\n disabled={disabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-sm transition-colors\",\n \"text-muted-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n active ? \"bg-accent text-accent-foreground shadow-sm\" : \"\",\n disabled ? \"pointer-events-none opacity-40\" : \"\"\n )}\n >\n <Icon className=\"h-4 w-4\" aria-hidden />\n <span className=\"sr-only\">{label}</span>\n </button>\n );\n}\n\ntype ToolbarPluginProps = {\n disabled: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n allowImageUrlInsert?: boolean;\n acceptImageMimeTypes?: string;\n};\n\ntype LinkFormValues = {\n url: string;\n label: string;\n};\n\ntype ImageFormValues = {\n url: string;\n alt: string;\n width: string;\n height: string;\n};\n\nfunction placeCaretAfterImage(imageNode: ImageNode) {\n const nextSibling = imageNode.getNextSibling();\n\n if (!nextSibling || $isImageNode(nextSibling)) {\n const paragraph = $createParagraphNode();\n const textNode = $createTextNode(\"\");\n paragraph.append(textNode);\n imageNode.insertAfter(paragraph);\n textNode.select(0, 0);\n return;\n }\n\n imageNode.selectNext(0, 0);\n}\n\nfunction ToolbarPlugin({\n disabled,\n onImageUpload,\n onImageUploadError,\n allowImageUrlInsert = true,\n acceptImageMimeTypes\n}: ToolbarPluginProps) {\n const [editor] = useLexicalComposerContext();\n const [state, setState] = useState<ToolbarToggleState>(initialToolbarState);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [isLinkDialogOpen, setLinkDialogOpen] = useState(false);\n const [editingExistingLink, setEditingExistingLink] = useState(false);\n const [linkNodeKey, setLinkNodeKey] = useState<NodeKey | null>(null);\n const [isImageDialogOpen, setImageDialogOpen] = useState(false);\n const [editingExistingImage, setEditingExistingImage] = useState(false);\n const [imageNodeKey, setImageNodeKey] = useState<NodeKey | null>(null);\n\n const linkForm = useForm<LinkFormValues>({\n defaultValues: { url: \"\", label: \"\" }\n });\n\n const imageForm = useForm<ImageFormValues>({\n defaultValues: { url: \"\", alt: \"\", width: \"\", height: \"\" }\n });\n\n const openImageDialog = useCallback(() => {\n if (disabled || !allowImageUrlInsert) {\n return;\n }\n\n const targetImage = editor.getEditorState().read((): ReturnType<typeof $createImageNode> | null => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return null;\n }\n\n const nodes = selection.getNodes();\n for (const node of nodes) {\n if ($isImageNode(node)) {\n return node;\n }\n }\n\n return null;\n });\n\n const width = targetImage?.getWidth();\n const height = targetImage?.getHeight();\n const initialUrl = targetImage?.getSrc() ?? \"\";\n const initialAlt = targetImage?.getAltText() ?? \"\";\n const initialWidth = typeof width === \"number\" ? String(width) : \"\";\n const initialHeight = typeof height === \"number\" ? String(height) : \"\";\n\n imageForm.clearErrors();\n imageForm.reset({\n url: initialUrl,\n alt: initialAlt,\n width: initialWidth,\n height: initialHeight\n });\n setEditingExistingImage(Boolean(targetImage));\n setImageNodeKey(targetImage?.getKey() ?? null);\n setImageDialogOpen(true);\n }, [allowImageUrlInsert, disabled, editor, imageForm]);\n\n const closeImageDialog = useCallback(() => {\n setImageDialogOpen(false);\n setEditingExistingImage(false);\n setImageNodeKey(null);\n imageForm.reset();\n setTimeout(() => {\n editor.focus();\n }, 0);\n }, [editor, imageForm]);\n\n const openLinkDialog = useCallback(() => {\n if (disabled) {\n return;\n }\n\n const { initialUrl, initialLabel, detectedLink } = editor.getEditorState().read(\n (): {\n initialUrl: string;\n initialLabel: string;\n detectedLink: ReturnType<typeof $createLinkNode> | null;\n } => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return { initialUrl: \"\", initialLabel: \"\", detectedLink: null };\n }\n\n const nodes = selection.getNodes();\n let label = selection.getTextContent().trim();\n let url = \"\";\n let found: ReturnType<typeof $createLinkNode> | null = null;\n\n for (const node of nodes) {\n const linkNode =\n $isLinkNode(node) ? node\n : $isLinkNode(node.getParent()) ? (node.getParent() as LinkNode)\n : null;\n\n if (linkNode) {\n url = linkNode.getURL();\n if (!label) {\n label = linkNode.getTextContent().trim();\n }\n found = linkNode;\n break;\n }\n }\n\n if (!label && url) {\n label = url;\n }\n\n return { initialUrl: url, initialLabel: label, detectedLink: found };\n }\n );\n\n linkForm.clearErrors();\n linkForm.reset({\n url: initialUrl,\n label: initialLabel\n });\n setEditingExistingLink(Boolean(detectedLink));\n setLinkNodeKey(detectedLink?.getKey() ?? null);\n setLinkDialogOpen(true);\n }, [disabled, editor, linkForm]);\n\n const closeLinkDialog = useCallback(() => {\n setLinkDialogOpen(false);\n setEditingExistingLink(false);\n setLinkNodeKey(null);\n linkForm.reset();\n setTimeout(() => {\n editor.focus();\n }, 0);\n }, [editor, linkForm]);\n\n const handleLinkSubmit = linkForm.handleSubmit(({ url, label }) => {\n const trimmedUrl = url.trim();\n const trimmedLabel = label.trim();\n\n if (!trimmedUrl) {\n linkForm.setError(\"url\", { type: \"required\", message: \"Please enter a URL.\" });\n return;\n }\n\n editor.focus();\n\n editor.update(() => {\n const labelToApply = trimmedLabel || trimmedUrl;\n\n if (editingExistingLink && linkNodeKey) {\n const existingNode = $getNodeByKey<LexicalNode>(linkNodeKey);\n if ($isLinkNode(existingNode)) {\n existingNode.setURL(trimmedUrl);\n existingNode.clear();\n existingNode.append($createTextNode(labelToApply));\n existingNode.select();\n return;\n }\n }\n\n const selection = $getSelection();\n const linkNode = $createLinkNode(trimmedUrl);\n linkNode.append($createTextNode(labelToApply));\n\n if ($isRangeSelection(selection)) {\n selection.insertNodes([linkNode]);\n } else {\n $insertNodes([linkNode]);\n }\n\n linkNode.select();\n });\n\n closeLinkDialog();\n });\n\n const handleRemoveLink = useCallback(() => {\n editor.focus();\n editor.update(() => {\n if (linkNodeKey) {\n const node = $getNodeByKey<LexicalNode>(linkNodeKey);\n if ($isLinkNode(node)) {\n node.remove();\n return;\n }\n }\n\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n });\n\n closeLinkDialog();\n }, [closeLinkDialog, editor, linkNodeKey]);\n\n const handleLinkDialogOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n setLinkDialogOpen(true);\n } else {\n closeLinkDialog();\n }\n },\n [closeLinkDialog]\n );\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const anchorNode = selection.anchor.getNode();\n const element = anchorNode.getKey() === \"root\" ? anchorNode : anchorNode.getTopLevelElementOrThrow();\n let blockType: ToolbarBlockType = \"paragraph\";\n\n let parentNode: LexicalNode | null = anchorNode;\n\n while (parentNode) {\n if ($isListNode(parentNode)) {\n blockType = parentNode.getTag() === \"ol\" ? \"number\" : \"bullet\";\n break;\n }\n parentNode = parentNode.getParent();\n }\n\n if (blockType === \"paragraph\") {\n if ($isHeadingNode(element)) {\n blockType = element.getTag() as ToolbarBlockType;\n } else if ($isCodeNode(element)) {\n blockType = \"code\";\n } else if (element.getType() === \"quote\") {\n blockType = \"quote\";\n }\n }\n\n const nodes = selection.getNodes();\n const hasLink = nodes.some((node) => $isLinkNode(node) || $isLinkNode(node.getParent()));\n const elementFormat =\n (element as unknown as { getFormatType?: () => ElementFormatType | null }).getFormatType?.() ??\n null;\n\n setState((current) => ({\n ...current,\n blockType,\n elementFormat,\n isBold: selection.hasFormat(\"bold\"),\n isItalic: selection.hasFormat(\"italic\"),\n isUnderline: selection.hasFormat(\"underline\"),\n isStrikethrough: selection.hasFormat(\"strikethrough\"),\n isCode: selection.hasFormat(\"code\"),\n isLink: hasLink\n }));\n }, []);\n\n React.useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CAN_UNDO_COMMAND,\n (payload) => {\n setState((current) => ({ ...current, canUndo: payload }));\n return false;\n },\n COMMAND_PRIORITY_NORMAL\n ),\n editor.registerCommand(\n CAN_REDO_COMMAND,\n (payload) => {\n setState((current) => ({ ...current, canRedo: payload }));\n return false;\n },\n COMMAND_PRIORITY_NORMAL\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(updateToolbar);\n })\n );\n }, [editor, updateToolbar]);\n\n const applyBlock = useCallback(\n (nextBlock: ToolbarBlockType) => {\n if (disabled) {\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n switch (nextBlock) {\n case \"paragraph\": {\n $setBlocksType(selection, () => $createParagraphNode());\n break;\n }\n case \"h1\":\n case \"h2\":\n case \"h3\": {\n if (state.blockType === nextBlock) {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createHeadingNode(nextBlock));\n }\n break;\n }\n case \"bullet\": {\n if (state.blockType === \"bullet\") {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n break;\n }\n case \"number\": {\n if (state.blockType === \"number\") {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n break;\n }\n case \"quote\": {\n if (state.blockType === \"quote\") {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createQuoteNode());\n }\n break;\n }\n case \"code\": {\n if (state.blockType === \"code\") {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createCodeNode());\n }\n break;\n }\n default:\n break;\n }\n });\n },\n [disabled, editor, state.blockType]\n );\n\n const toggleFormat = useCallback(\n (format: \"bold\" | \"italic\" | \"underline\" | \"strikethrough\" | \"code\") => {\n if (disabled) {\n return;\n }\n\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n const toggleLink = useCallback(() => {\n openLinkDialog();\n }, [openLinkDialog]);\n\n const applyElementFormat = useCallback(\n (format: ElementFormatType) => {\n if (disabled) {\n return;\n }\n\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n const canInsertImage = allowImageUrlInsert || Boolean(onImageUpload);\n const imageAccept = acceptImageMimeTypes ?? DEFAULT_IMAGE_ACCEPT;\n\n const handleInsertImage = useCallback(() => {\n if (disabled || !canInsertImage) {\n return;\n }\n\n editor.focus();\n\n if (onImageUpload) {\n fileInputRef.current?.click();\n return;\n }\n\n openImageDialog();\n }, [canInsertImage, disabled, editor, onImageUpload, openImageDialog]);\n\n const handleFileChange = useCallback(\n async (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!onImageUpload) {\n return;\n }\n\n const file = event.target.files?.[0];\n\n try {\n if (!file) {\n return;\n }\n\n const result = await onImageUpload(file);\n const payload =\n typeof result === \"string\" ?\n { src: result, altText: file.name }\n : {\n src: result.src,\n altText: result.altText ?? file.name,\n width: result.width,\n height: result.height\n };\n\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, payload);\n editor.focus();\n } catch (error) {\n onImageUploadError?.(error);\n console.error(\"[RichText] Failed to upload image:\", error);\n } finally {\n event.target.value = \"\";\n }\n },\n [editor, onImageUpload, onImageUploadError]\n );\n\n const handleImageSubmit = imageForm.handleSubmit(({ url, alt, width, height }) => {\n const trimmedUrl = url.trim();\n const trimmedAlt = alt.trim();\n const trimmedWidth = width.trim();\n const trimmedHeight = height.trim();\n\n if (!trimmedUrl) {\n imageForm.setError(\"url\", { type: \"required\", message: \"Please enter an image URL.\" });\n return;\n }\n\n let parsedWidth: number | undefined;\n if (trimmedWidth) {\n const widthValue = Number(trimmedWidth);\n if (Number.isNaN(widthValue) || widthValue <= 0) {\n imageForm.setError(\"width\", {\n type: \"validate\",\n message: \"Width must be a positive number.\"\n });\n return;\n }\n parsedWidth = widthValue;\n }\n\n let parsedHeight: number | undefined;\n if (trimmedHeight) {\n const heightValue = Number(trimmedHeight);\n if (Number.isNaN(heightValue) || heightValue <= 0) {\n imageForm.setError(\"height\", {\n type: \"validate\",\n message: \"Height must be a positive number.\"\n });\n return;\n }\n parsedHeight = heightValue;\n }\n\n editor.focus();\n\n editor.update(() => {\n const payload: ImagePayload = {\n src: trimmedUrl,\n altText: trimmedAlt || undefined,\n width: parsedWidth ?? undefined,\n height: parsedHeight ?? undefined\n };\n\n if (editingExistingImage && imageNodeKey) {\n const existingNode = $getNodeByKey<LexicalNode>(imageNodeKey);\n if ($isImageNode(existingNode)) {\n existingNode.setSrc(payload.src);\n existingNode.setAltText(payload.altText ?? \"\");\n existingNode.setDimensions(payload.width ?? \"inherit\", payload.height ?? \"inherit\");\n placeCaretAfterImage(existingNode);\n return;\n }\n }\n\n const selection = $getSelection();\n const imageNode = $createImageNode(payload);\n\n if ($isRangeSelection(selection)) {\n selection.insertNodes([imageNode]);\n } else {\n $insertNodes([imageNode]);\n }\n\n placeCaretAfterImage(imageNode);\n });\n\n closeImageDialog();\n });\n\n const handleImageDialogOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n setImageDialogOpen(true);\n } else {\n closeImageDialog();\n }\n },\n [closeImageDialog]\n );\n\n const handleRemoveImage = useCallback(() => {\n if (!imageNodeKey) {\n closeImageDialog();\n return;\n }\n\n editor.focus();\n editor.update(() => {\n const existingNode = $getNodeByKey<LexicalNode>(imageNodeKey);\n if ($isImageNode(existingNode)) {\n existingNode.remove();\n }\n });\n\n closeImageDialog();\n }, [closeImageDialog, editor, imageNodeKey]);\n\n return (\n <>\n <div className=\"flex flex-wrap items-center gap-1\">\n <ToolbarButton\n label=\"Undo\"\n icon={Undo}\n onClick={() => editor.dispatchCommand(UNDO_COMMAND, undefined)}\n disabled={disabled || !state.canUndo}\n />\n <ToolbarButton\n label=\"Redo\"\n icon={Redo}\n onClick={() => editor.dispatchCommand(REDO_COMMAND, undefined)}\n disabled={disabled || !state.canRedo}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Bold\"\n icon={Bold}\n onClick={() => toggleFormat(\"bold\")}\n active={state.isBold}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Italic\"\n icon={Italic}\n onClick={() => toggleFormat(\"italic\")}\n active={state.isItalic}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Underline\"\n icon={Underline}\n onClick={() => toggleFormat(\"underline\")}\n active={state.isUnderline}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Strikethrough\"\n icon={Strikethrough}\n onClick={() => toggleFormat(\"strikethrough\")}\n active={state.isStrikethrough}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Inline code\"\n icon={InlineCodeIcon}\n onClick={() => toggleFormat(\"code\")}\n active={state.isCode}\n disabled={disabled}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Paragraph\"\n icon={Pilcrow}\n onClick={() => applyBlock(\"paragraph\")}\n active={state.blockType === \"paragraph\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 1\"\n icon={Heading1}\n onClick={() => applyBlock(\"h1\")}\n active={state.blockType === \"h1\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 2\"\n icon={Heading2}\n onClick={() => applyBlock(\"h2\")}\n active={state.blockType === \"h2\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 3\"\n icon={Heading3}\n onClick={() => applyBlock(\"h3\")}\n active={state.blockType === \"h3\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Bulleted list\"\n icon={BulletListIcon}\n onClick={() => applyBlock(\"bullet\")}\n active={state.blockType === \"bullet\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Numbered list\"\n icon={ListOrdered}\n onClick={() => applyBlock(\"number\")}\n active={state.blockType === \"number\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Quote\"\n icon={QuoteIcon}\n onClick={() => applyBlock(\"quote\")}\n active={state.blockType === \"quote\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Code block\"\n icon={CodeSquare}\n onClick={() => applyBlock(\"code\")}\n active={state.blockType === \"code\"}\n disabled={disabled}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label={state.isLink ? \"Edit link\" : \"Insert link\"}\n icon={LinkIcon}\n onClick={toggleLink}\n active={state.isLink}\n disabled={disabled}\n />\n {state.isLink ?\n <ToolbarButton\n label=\"Remove link\"\n icon={Link2Off}\n onClick={handleRemoveLink}\n disabled={disabled}\n />\n : null}\n <ToolbarButton\n label=\"Insert image\"\n icon={ImageIcon}\n onClick={handleInsertImage}\n disabled={disabled || !canInsertImage}\n />\n {onImageUpload ?\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={imageAccept}\n className=\"hidden\"\n onChange={handleFileChange}\n />\n : null}\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Align left\"\n icon={AlignLeft}\n onClick={() => applyElementFormat(\"left\")}\n active={state.elementFormat === \"left\" || state.elementFormat === null}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Align center\"\n icon={AlignCenter}\n onClick={() => applyElementFormat(\"center\")}\n active={state.elementFormat === \"center\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Align right\"\n icon={AlignRight}\n onClick={() => applyElementFormat(\"right\")}\n active={state.elementFormat === \"right\"}\n disabled={disabled}\n />\n </div>\n <Dialog open={isLinkDialogOpen} onOpenChange={handleLinkDialogOpenChange}>\n <DialogContent\n className=\"min-w-[70vw] max-w-7xl\"\n header={editingExistingLink ? \"Edit link\" : \"Insert link\"}\n >\n <Form {...linkForm}>\n <form className=\"grid gap-4 p-6\" onSubmit={handleLinkSubmit}>\n <FormField\n control={linkForm.control}\n name=\"url\"\n rules={{ required: \"Please enter a URL.\" }}\n render={({ field }) => (\n <FormItem>\n <FormLabel>URL</FormLabel>\n <FormControl>\n <Input placeholder=\"https://example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={linkForm.control}\n name=\"label\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Link label</FormLabel>\n <FormControl>\n <Input placeholder=\"Display text\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <DialogFooter className=\"pt-2\">\n <Button type=\"button\" variant=\"cancel\" onClick={closeLinkDialog}>\n Cancel\n </Button>\n {editingExistingLink ?\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveLink}\n className=\"text-destructive\"\n >\n Remove link\n </Button>\n : null}\n <Button type=\"submit\">Save link</Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n <Dialog open={isImageDialogOpen} onOpenChange={handleImageDialogOpenChange}>\n <DialogContent header={editingExistingImage ? \"Edit image\" : \"Insert image\"}>\n <Form {...imageForm}>\n <form className=\"grid gap-4 p-6\" onSubmit={handleImageSubmit}>\n <FormField\n control={imageForm.control}\n name=\"url\"\n rules={{ required: \"Please enter an image URL.\" }}\n render={({ field }) => (\n <FormItem>\n <FormLabel>Image URL</FormLabel>\n <FormControl>\n <Input placeholder=\"https://example.com/image.jpg\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={imageForm.control}\n name=\"alt\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Alt text</FormLabel>\n <FormControl>\n <Input placeholder=\"Describe the image\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <FormField\n control={imageForm.control}\n name=\"width\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Width (px)</FormLabel>\n <FormControl>\n <Input placeholder=\"Auto\" inputMode=\"numeric\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={imageForm.control}\n name=\"height\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Height (px)</FormLabel>\n <FormControl>\n <Input placeholder=\"Auto\" inputMode=\"numeric\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n <DialogFooter className=\"pt-2\">\n <Button type=\"button\" variant=\"cancel\" onClick={closeImageDialog}>\n Cancel\n </Button>\n {editingExistingImage ?\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveImage}\n className=\"text-destructive\"\n >\n Remove image\n </Button>\n : null}\n <Button type=\"submit\">{editingExistingImage ? \"Save changes\" : \"Insert image\"}</Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\nfunction ControlledValuePlugin({\n value,\n trackAppliedValue\n}: {\n value?: RichTextSerializedState;\n trackAppliedValue: React.MutableRefObject<RichTextSerializedState | undefined>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n if (value == null || trackAppliedValue.current === value) {\n return;\n }\n\n let parsed: EditorSerializedState | undefined;\n\n try {\n parsed = JSON.parse(value) as EditorSerializedState;\n } catch (error) {\n console.error(\"[RichText] Failed to sync controlled value:\", error);\n return;\n }\n\n editor.update(() => {\n const newState = editor.parseEditorState(parsed!);\n const current = editor.getEditorState();\n\n // Compare serialized versions to avoid redundant updates\n if (JSON.stringify(current.toJSON()) !== JSON.stringify(newState.toJSON())) {\n editor.setEditorState(newState);\n }\n\n // Track the latest applied value so we don't reapply unnecessarily\n trackAppliedValue.current = value;\n });\n }, [editor, trackAppliedValue, value]);\n\n return null;\n}\n\nfunction EditableStatePlugin({ editable }: { editable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n editor.setEditable(editable);\n }, [editor, editable]);\n\n return null;\n}\n\nfunction ImagesPlugin() {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n return editor.registerCommand(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n if (!payload?.src) {\n return false;\n }\n\n editor.update(() => {\n const imageNode = $createImageNode(payload);\n $insertNodes([imageNode]);\n placeCaretAfterImage(imageNode);\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n}\n\nconst RichText = forwardRef<HTMLDivElement, RichTextProps>(function RichText(\n {\n value,\n defaultValue,\n onChange,\n onHtmlChange,\n placeholder,\n readOnly,\n disabled,\n editorClassName,\n toolbarClassName,\n autoFocus,\n onImageUpload,\n onImageUploadError,\n acceptImageMimeTypes = DEFAULT_IMAGE_ACCEPT,\n allowImageUrlInsert = true,\n className,\n id,\n ...rest\n },\n ref\n) {\n const initialSerializedStateRef = useRef<EditorSerializedState | undefined>(undefined);\n\n if (initialSerializedStateRef.current === undefined) {\n initialSerializedStateRef.current = parseSerializedEditorState(value ?? defaultValue);\n }\n\n const initialConfig = useMemo(\n () => ({\n namespace: \"RichTextEditor\",\n editable: !(readOnly || disabled),\n theme,\n onError(error: Error) {\n throw error;\n },\n nodes,\n editorState:\n initialSerializedStateRef.current ? JSON.stringify(initialSerializedStateRef.current) : undefined\n }),\n [disabled, readOnly]\n );\n\n const appliedValueRef = useRef<RichTextSerializedState | undefined>(value ?? defaultValue);\n\n const handleChange = useCallback(\n (editorState: EditorState, editor: LexicalEditor) => {\n const serialized = JSON.stringify(editorState.toJSON());\n appliedValueRef.current = serialized;\n\n if (onChange) {\n onChange(serialized, editorState);\n }\n\n if (onHtmlChange) {\n let html = \"\";\n editorState.read(() => {\n html = $generateHtmlFromNodes(editor, null);\n });\n onHtmlChange(html, editorState);\n }\n },\n [onChange, onHtmlChange]\n );\n\n const editable = !(readOnly || disabled);\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <div\n ref={ref}\n aria-disabled={disabled}\n data-disabled={disabled ? \"true\" : undefined}\n className={cn(\n \"border-input focus-within:border-ring focus-within:ring-ring/50 bg-background text-sm shadow-sm focus-within:ring-[3px]\",\n \"flex min-h-[12rem] flex-col rounded-md border transition-[color,box-shadow]\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-60\",\n className\n )}\n {...rest}\n >\n {editable ?\n <div className={cn(\"border-b border-border bg-muted/40 px-2 py-1.5\", toolbarClassName)}>\n <ToolbarPlugin\n disabled={Boolean(disabled)}\n onImageUpload={onImageUpload}\n onImageUploadError={onImageUploadError}\n allowImageUrlInsert={allowImageUrlInsert}\n acceptImageMimeTypes={acceptImageMimeTypes}\n />\n </div>\n : null}\n <div className=\"relative flex-1 overflow-auto\">\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n id={id}\n className={cn(\n \"h-full min-h-[10rem] whitespace-pre-wrap break-words px-3 py-2 text-sm leading-6 text-foreground outline-none\",\n editorClassName\n )}\n />\n }\n placeholder={<Placeholder placeholder={placeholder || \"\"} />}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <ListPlugin />\n <LinkPlugin />\n <ImagesPlugin />\n <MarkdownShortcutPlugin transformers={TRANSFORMERS} />\n {autoFocus ?\n <AutoFocusPlugin />\n : null}\n <EditableStatePlugin editable={editable} />\n <ControlledValuePlugin value={value} trackAppliedValue={appliedValueRef} />\n <OnChangePlugin onChange={handleChange} ignoreSelectionChange />\n </div>\n </div>\n </LexicalComposer>\n );\n});\n\nRichText.displayName = \"RichText\";\n\nexport { RichText };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"@/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","// /hooks/use-mobile.ts\n\"use client\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Hook ตรวจสอบว่า viewport ปัจจุบันเป็นขนาด “mobile” หรือไม่\n * @param breakpoint จุดตัด (px) — ถ้า width < breakpoint => ถือเป็น mobile\n */\nexport function useIsMobile(breakpoint: number = 768): boolean {\n const [isMobile, setIsMobile] = useState<boolean>(() => {\n if (typeof window === \"undefined\") {\n // ใน SSR, เราต้องกำหนดค่าเริ่มต้น (ใน client มันจะถูกอัปเดตใน useEffect)\n return false;\n }\n return window.innerWidth < breakpoint;\n });\n\n useEffect(() => {\n function onResize() {\n setIsMobile(window.innerWidth < breakpoint);\n }\n\n window.addEventListener(\"resize\", onResize);\n // คุณอาจจะเพิ่ม “orientationchange” ก็ได้\n window.addEventListener(\"orientationchange\", onResize);\n\n // เรียกครั้งแรก\n onResize();\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n window.removeEventListener(\"orientationchange\", onResize);\n };\n }, [breakpoint]);\n\n return isMobile;\n}\n","import { cn } from \"@/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","export * from \"./accordion\";\n\nexport * from \"./button\";\n\nexport * from \"./checkbox\";\n\nexport * from \"./collapsible\";\n\nexport * from \"./ClearButton\";\n\nexport * from \"./datepicker\";\n\nexport * from \"./dialog\";\n\nexport * from \"./form\";\n\nexport * from \"./input\";\n\nexport * from \"./label\";\n\nexport * from \"./monthpicker\";\n\nexport * from \"./popover\";\n\nexport * from \"./radio\";\n\nexport * from \"./richtext\";\n\nexport * from \"./select\";\n\nexport * from \"./separator\";\n\nexport * from \"./sheet\";\n\nexport * from \"./sidebar\";\n\nexport * from \"./skeleton\";\n\nexport * from \"./spinner\";\n\nexport * from \"./switch\";\n\nexport * from \"./table\";\n\nexport * from \"./textarea\";\n\nexport * from \"./tooltip\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"@/utils\";\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer inline-flex h-[1.15rem] w-10 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px]\",\n \"data-[state=checked]:bg-[#379A2A] data-[state=unchecked]:bg-[#EFEFEF]\",\n \"dark:data-[state=unchecked]:bg-input/80\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"disabled:bg-gray-300 disabled:data-[state=checked]:bg-[#A5D6A7] disabled:data-[state=unchecked]:bg-[#E0E0E0]\",\n \"disabled:cursor-not-allowed disabled:opacity-70\",\n \"shadow-inner\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-white block size-3.5 rounded-full ring-0 transition-transform\",\n \"data-[state=checked]:translate-x-5.5 data-[state=unchecked]:translate-x-0.5\",\n \"disabled:bg-gray-100\"\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\n\ntype TextareaProps = React.ComponentProps<\"textarea\"> & {\n autoResize?: boolean;\n};\n\nfunction Textarea({ className, autoResize = true, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n autoResize ? \"field-sizing-content min-h-16\" : \"field-sizing-fixed\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />\n );\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n arrowClassName,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n arrowClassName?: string;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow\n className={cn(\n \"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\",\n arrowClassName\n )}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { cn } from \"@/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"@/components/ui/sheet\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n InputPrimitive,\n Button,\n Separator,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from \"@/components/ui\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\" ?\n \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\" ?\n \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\" ?\n \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof InputPrimitive>) {\n return (\n <InputPrimitive\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\"\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\ntype SidebarLayoutProps = Omit<React.ComponentProps<typeof SidebarProvider>, \"children\"> & {\n sidebar: React.ReactNode;\n children?: React.ReactNode;\n layoutProps?: React.HTMLAttributes<HTMLDivElement>;\n sidebarProps?: Omit<React.ComponentProps<typeof Sidebar>, \"children\">;\n insetProps?: Omit<React.ComponentProps<typeof SidebarInset>, \"children\">;\n};\n\nfunction SidebarLayout({\n sidebar,\n children,\n layoutProps,\n sidebarProps,\n insetProps,\n ...providerProps\n}: SidebarLayoutProps) {\n const { className: layoutClassName, ...restLayoutProps } = layoutProps ?? {};\n\n return (\n <SidebarProvider {...providerProps}>\n <div data-slot=\"sidebar-layout\" {...restLayoutProps} className={cn(\"flex\", layoutClassName)}>\n <Sidebar {...sidebarProps}>{sidebar}</Sidebar>\n <SidebarInset {...insetProps}>{children}</SidebarInset>\n </div>\n </SidebarProvider>\n );\n}\n\nexport {\n Sidebar,\n SidebarLayout,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n};\n","import { DialogContentProps } from \"@radix-ui/react-dialog\";\nimport { Area, CropperProps } from \"react-easy-crop\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nexport interface CroppedImagePayload {\n crop: { x: number; y: number };\n croppedAreaPixels: Area | null;\n}\n\nexport interface CroppedImagePayloadWithBlobUrl extends CroppedImagePayload {\n croppedImageBlobUrl: string;\n}\n\ninterface CropperModalBaseProps {\n open?: boolean;\n onOpenChange: (open: boolean) => void;\n onCancel?: () => void;\n onError?: (e: CropperModalError | unknown) => void;\n imageSrc?: string | null;\n isSVG?: boolean;\n cropSize?: { width: number; height: number };\n /**\n * @property {boolean} outputExactCropSize - Determine whether to ouput image with the exact size given in cropSize attribute\n * @description an original image dimension is 1000x1000px, if cropSize is 500x500px, the output image will be exactly 500x500px\n */\n outputExactCropSize?: boolean;\n targetFileSizeKB?: number;\n title?: string;\n props?: {\n dialogTitleContainer?: React.ComponentProps<\"div\">;\n dialogTitle?: React.ComponentProps<typeof DialogPrimitive.Title>;\n dialogContent?: DialogContentProps;\n cropper?: CropperProps;\n cropperContainer?: React.ComponentProps<\"div\">;\n };\n}\n\ninterface CropperModalWithBlobUrlOutputProps extends CropperModalBaseProps {\n onConfirm?: (payload: CroppedImagePayloadWithBlobUrl) => void;\n generateBlobUrlOutput: true;\n}\n\ninterface CropperModalNormalProps extends CropperModalBaseProps {\n onConfirm?: (payload: CroppedImagePayload) => void;\n generateBlobUrlOutput: undefined | false;\n}\n\nexport type CropperModalProps = CropperModalWithBlobUrlOutputProps | CropperModalNormalProps;\n\nexport type CropperModalErrorType =\n | \"ERROR_GENERATE_BLOB\"\n | \"ERROR_CREATE_CANVAS\"\n | \"ERROR_INVALID_SVG\"\n | \"ERROR_COMPRESSION\"\n | \"ERROR_SVG_EXCEED_SIZE\";\n\nexport class CropperModalError extends Error {\n public readonly error: CropperModalErrorType;\n constructor(errorType: CropperModalErrorType, message: string) {\n super(message);\n this.error = errorType;\n }\n}\n\nexport const ErrorGeneratingBlob = new CropperModalError(\n \"ERROR_GENERATE_BLOB\",\n \"failed to generate a valid Blob\"\n);\n\nexport const ErrorCreateCanvas = new CropperModalError(\"ERROR_CREATE_CANVAS\", \"Failed to create canvas\");\n\nexport const ErrorInvalidSVG = new CropperModalError(\n \"ERROR_INVALID_SVG\",\n \"The file is not a valid SVG document root\"\n);\n\nexport const ErrorCompression = new CropperModalError(\n \"ERROR_COMPRESSION\",\n \"Compression failed to generate a valid Blob\"\n);\n\nexport const ErrorSVGExceedSize = new CropperModalError(\n \"ERROR_SVG_EXCEED_SIZE\",\n \"The SVG file is too large\"\n);\n","import { Area } from \"react-easy-crop\";\nimport { ErrorCompression, ErrorCreateCanvas, ErrorInvalidSVG, ErrorSVGExceedSize } from \"./type\";\n\nexport function readFile(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result as string), false);\n reader.readAsDataURL(file); // read as base64-encoded\n });\n}\n\nexport const createImage = (url: string) =>\n new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction toBlobPromise(canvas: HTMLCanvasElement, quality: number): Promise<Blob | null> {\n return new Promise((resolve) => {\n canvas.toBlob((blob) => resolve(blob), \"image/jpeg\", quality);\n });\n}\n\nasync function resizeImage(canvas: HTMLCanvasElement, targetSizeKB: number): Promise<string> {\n const targetSizeBytes = targetSizeKB * 1024;\n let quality = 1;\n const qualityStep = 0.05;\n let compressedBlob: Blob | null = null;\n let currentSize = Infinity;\n\n while (currentSize > targetSizeBytes && quality > 0.0) {\n compressedBlob = await toBlobPromise(canvas, quality);\n if (compressedBlob === null) {\n throw ErrorCompression;\n }\n currentSize = compressedBlob.size;\n\n if (currentSize > targetSizeBytes) {\n quality = Math.max(0.0, quality - qualityStep);\n }\n }\n\n if (compressedBlob && currentSize <= targetSizeBytes) {\n return URL.createObjectURL(compressedBlob);\n }\n throw ErrorCompression;\n}\n\nexport async function getCroppedImg(\n imageSrc: string,\n pixelCrop: Area,\n desiredDimension?: { width: number; height: number },\n targetSizeKB: number = Infinity\n): Promise<string> {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n if (!ctx) {\n throw ErrorCreateCanvas;\n }\n\n canvas.width = image.width;\n canvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n\n const croppedCanvas = document.createElement(\"canvas\");\n\n const croppedCtx = croppedCanvas.getContext(\"2d\");\n\n if (!croppedCtx) {\n throw ErrorCreateCanvas;\n }\n\n // Set the size of the cropped canvas\n croppedCanvas.width = desiredDimension?.width ?? pixelCrop.width;\n croppedCanvas.height = desiredDimension?.height ?? pixelCrop.height;\n\n // Draw the cropped image onto the new canvas\n croppedCtx.drawImage(\n canvas,\n pixelCrop.x,\n pixelCrop.y,\n pixelCrop.width,\n pixelCrop.height,\n 0,\n 0,\n desiredDimension?.width ?? pixelCrop.width,\n desiredDimension?.height ?? pixelCrop.height\n );\n\n return resizeImage(croppedCanvas, targetSizeKB);\n}\n\nexport async function getCroppedSVG(\n imageSrc: string, // Expects data:image/svg+xml;...\n pixelCrop: Area,\n desiredDimension?: { width: number; height: number },\n targetSizeKB: number = Infinity\n): Promise<string> {\n let svgString: string;\n const parts = imageSrc.split(\",\");\n const meta = parts[0]; // \"data:image/svg+xml;base64\" or \"data:image/svg+xml\"\n const data = parts[1];\n\n if (meta.includes(\"base64\")) {\n svgString = atob(data); // Decode base64\n } else {\n svgString = decodeURIComponent(data); // Decode URL-encoded\n }\n\n // Parse the SVG string into an XML Document\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgString, \"image/svg+xml\");\n const svgElement = svgDoc.documentElement;\n\n if (svgElement.tagName.toLowerCase() !== \"svg\") {\n throw ErrorInvalidSVG;\n }\n\n // Set the new viewBox to the crop area\n const newViewBox = `${pixelCrop.x} ${pixelCrop.y} ${pixelCrop.width} ${pixelCrop.height}`;\n svgElement.setAttribute(\"viewBox\", newViewBox);\n\n // Set the output diensions\n const outputWidth = desiredDimension?.width ?? pixelCrop.width;\n const outputHeight = desiredDimension?.height ?? pixelCrop.height;\n svgElement.setAttribute(\"width\", String(outputWidth));\n svgElement.setAttribute(\"height\", String(outputHeight));\n\n // Serialize the modified SVG back to a string\n const serializer = new XMLSerializer();\n const croppedSvgString = serializer.serializeToString(svgElement);\n\n // Create a Blob and Object URL\n const blob = new Blob([croppedSvgString], { type: \"image/svg+xml\" });\n\n // Throw error if svg is too large\n const targetSizeBytes = targetSizeKB * 1024;\n if (blob.size > targetSizeBytes) {\n throw ErrorSVGExceedSize;\n }\n\n return URL.createObjectURL(blob);\n}\n","import { getCroppedImg, getCroppedSVG } from \"./helper\";\nimport { Dialog, DialogContent, DialogTitle } from \"../dialog\";\nimport { Button } from \"../button\";\nimport { XIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport Cropper, { Area } from \"react-easy-crop\";\nimport { CropperModalProps } from \"./type\";\n\nexport const CropperModal = ({\n open,\n onOpenChange,\n imageSrc,\n isSVG,\n onConfirm,\n onCancel,\n onError,\n cropSize,\n outputExactCropSize,\n targetFileSizeKB,\n generateBlobUrlOutput,\n title,\n props\n}: CropperModalProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [zoom, setZoom] = useState<number | undefined>();\n const [croppedAreaPixels, setCroppedAreaPixels] = useState<Area | null>(null);\n\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n const handleCancel = useCallback(() => {\n if (onCancel) {\n onCancel();\n }\n handleClose();\n }, [handleClose, onCancel]);\n\n const handleCropComplete = useCallback((_: Area, croppedAreaPixels: Area) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const handleConfirm = async () => {\n if (!imageSrc || !onConfirm) {\n handleClose();\n return;\n }\n if (!generateBlobUrlOutput) {\n onConfirm({ crop, croppedAreaPixels });\n return;\n }\n if (!croppedAreaPixels) {\n // return original image\n onConfirm({ crop, croppedAreaPixels, croppedImageBlobUrl: imageSrc });\n return;\n }\n setIsLoading(true);\n try {\n const desiredDimension = outputExactCropSize ? cropSize : undefined;\n const croppedImage =\n isSVG ?\n await getCroppedSVG(imageSrc, croppedAreaPixels, desiredDimension, targetFileSizeKB)\n : await getCroppedImg(imageSrc, croppedAreaPixels, desiredDimension, targetFileSizeKB);\n onConfirm({ crop, croppedAreaPixels, croppedImageBlobUrl: croppedImage });\n } catch (e: unknown) {\n if (onError) {\n onError(e);\n }\n } finally {\n setIsLoading(false);\n handleClose();\n }\n };\n\n return (\n <Dialog\n open={open}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) {\n handleClose();\n } else {\n onOpenChange(true);\n }\n }}\n >\n <DialogContent\n className=\"flex flex-col w-fit !max-w-6xl p-0 overflow-clip gap-0 border-0\"\n {...props?.dialogContent}\n >\n <div\n className=\"flex w-full bg-[#82B495] text-white justify-between items-center p-4\"\n {...props?.dialogTitleContainer}\n >\n <DialogTitle className=\"text-2xl font-semibold\" {...props?.dialogTitle}>\n {title ?? \"Crop Image\"}\n </DialogTitle>\n <button\n type=\"button\"\n className=\"text-white hover:text-gray-100 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed\"\n onClick={handleCancel}\n disabled={isLoading}\n >\n <XIcon className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"w-120 md:w-[50vw] h-[70vh] mx-auto\" {...props?.cropperContainer}>\n <Cropper\n image={imageSrc ?? undefined}\n crop={crop}\n onCropChange={setCrop}\n zoom={zoom}\n onZoomChange={setZoom}\n style={{ containerStyle: { position: \"relative\", width: \"100%\", height: \"100%\" } }}\n onCropComplete={handleCropComplete}\n aspect={cropSize ? cropSize.width / cropSize.height : undefined}\n zoomWithScroll\n showGrid\n restrictPosition\n {...props?.cropper}\n />\n </div>\n\n {/* Footer */}\n <div className=\"w-full py-4 px-8 min-h-10\">\n <div className=\"flex w-full justify-between\">\n <Button type=\"button\" variant=\"cancel\" onClick={handleCancel} disabled={isLoading}>\n Cancel\n </Button>\n <div className=\"ml-auto flex gap-x-2\">\n <Button type=\"button\" variant=\"default\" onClick={handleConfirm} disabled={isLoading}>\n Confirm\n </Button>\n </div>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default CropperModal;\n","import React, { useRef, useState, useEffect, ReactNode, type CSSProperties, useMemo } from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn, debounce } from \"@/utils\";\n\nexport type EllipsisConfig =\n | boolean\n | { content?: ReactNode; lineClamp?: number; side?: \"top\" | \"bottom\" | \"left\" | \"right\" }\n | number; // number = line-clamp-N\n\nexport type TruncatedProps = {\n className?: string;\n ellipsis?: EllipsisConfig;\n children: ReactNode;\n as?: keyof React.JSX.IntrinsicElements;\n style?: CSSProperties;\n};\n\nconst Truncated = ({ children, className, ellipsis = true, as = \"p\", style }: TruncatedProps) => {\n const elementRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState<boolean>(false);\n const [isTruncated, setIsTruncated] = useState<boolean>(false);\n\n const Comp = as as React.ElementType;\n\n const normalizedChildren = typeof children === \"string\" ? children.replace(/>/g, \">\\u200B\") : children;\n\n useEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n\n const checkTruncate = debounce(() => {\n const overflowX = el.scrollWidth > el.clientWidth;\n const overflowY = el.scrollHeight > el.clientHeight;\n setIsTruncated(overflowX || overflowY);\n }, 300);\n\n const resizeObserver = new ResizeObserver(checkTruncate);\n resizeObserver.observe(el);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const lineClampLines =\n typeof ellipsis === \"number\" ? ellipsis\n : typeof ellipsis === \"object\" ? (ellipsis.lineClamp ?? 3)\n : null;\n\n const truncationClass = useMemo(() => {\n if (!ellipsis) return \"\";\n if (typeof ellipsis === \"number\") return `line-clamp-${ellipsis}`;\n if (typeof ellipsis === \"object\") return `line-clamp-${lineClampLines ?? 3}`;\n return \"truncate\";\n }, [ellipsis, lineClampLines]);\n\n const clampedStyle = useMemo(() => {\n if (!lineClampLines) return style;\n return {\n ...style,\n display: \"-webkit-box\",\n WebkitLineClamp: lineClampLines,\n WebkitBoxOrient: \"vertical\",\n overflow: \"hidden\"\n };\n }, [lineClampLines, style]);\n\n const baseContent = (\n <Comp ref={elementRef} className={cn(truncationClass, className)} style={clampedStyle}>\n {normalizedChildren}\n </Comp>\n );\n\n let tooltipContent: ReactNode = normalizedChildren;\n let tooltipSide: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\n if (typeof ellipsis === \"object\") {\n tooltipContent = ellipsis?.content ?? normalizedChildren;\n tooltipSide = ellipsis?.side ?? \"top\";\n }\n\n return (\n <Tooltip\n open={open}\n onOpenChange={(open) => {\n setOpen(isTruncated && open);\n }}\n >\n <TooltipTrigger asChild>{baseContent}</TooltipTrigger>\n <TooltipContent\n side={tooltipSide}\n className={cn(\"text-white bg-[#8B8B8B] max-w-md wrap-break-word shadow-lg\")}\n arrowClassName=\"bg-[#8B8B8B] fill-[#8B8B8B]\"\n >\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default Truncated;\n"]}
1
+ {"version":3,"sources":["../src/utils/common.ts","../src/utils/filters.ts","../src/utils/date.ts","../src/utils/cn.ts","../src/components/icons/arrow.tsx","../src/components/icons/calendar.tsx","../src/components/icons/check.tsx","../src/components/icons/dots-vertical.tsx","../src/components/icons/empty-data.tsx","../src/components/icons/expand.tsx","../src/components/icons/filter.tsx","../src/components/icons/not-found.tsx","../src/components/icons/setting.tsx","../src/components/icons/triangle-down.tsx","../src/components/icons/warning.tsx","../src/components/ui/accordion.tsx","../src/components/advanceSearch/components/conditions/ExpandCollapse.tsx","../src/components/advanceSearch/operatorMap.ts","../src/components/advanceSearch/hooks/useAdvanceSearch.ts","../src/components/ui/select.tsx","../src/components/advanceSearch/components/conditions/FieldSelect.tsx","../src/components/advanceSearch/types.ts","../src/components/advanceSearch/components/conditions/OperatorSelect.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/spinner.tsx","../src/components/ui/input.tsx","../src/components/ui/ClearButton.tsx","../src/components/advanceSearch/components/conditions/types/ConditionTextInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionNumberInput.tsx","../src/components/ui/button.tsx","../src/components/ui/popover.tsx","../src/components/ui/datepicker.tsx","../src/components/datePicker/DatePicker.tsx","../src/components/advanceSearch/components/constants/index.ts","../src/components/advanceSearch/components/conditions/types/ConditionDateInput.tsx","../src/components/ui/monthpicker.tsx","../src/components/monthPicker/MonthPicker.tsx","../src/components/advanceSearch/components/conditions/types/ConditionMonthInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionDropdownInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionCheckboxInput.tsx","../src/components/lookupSelect/LookupSelect.tsx","../src/components/advanceSearch/components/conditions/types/ConditionLookupInput.tsx","../src/components/advanceSearch/components/conditions/types/ConditionJSONInput.tsx","../src/components/advanceSearch/components/conditions/ConditionValue.tsx","../src/components/advanceSearch/components/conditions/AddRemoveButtons.tsx","../src/components/advanceSearch/components/conditions/AdvanceSearchRow.tsx","../src/components/advanceSearch/builder/checkbox.ts","../src/components/advanceSearch/builder/helper.ts","../src/components/advanceSearch/builder/datetime.ts","../src/components/advanceSearch/builder/datemonth.ts","../src/components/advanceSearch/builder/dropdown.ts","../src/components/advanceSearch/builder/json.ts","../src/components/advanceSearch/builder/lookup.ts","../src/components/advanceSearch/builder/number.ts","../src/components/advanceSearch/builder/text.ts","../src/components/advanceSearch/builder/uuid.ts","../src/components/advanceSearch/builder/index.ts","../src/components/advanceSearch/components/AdvanceSearch.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/data-table/sortingFns.ts","../src/components/data-table/utils.tsx","../src/hooks/useHover/useHover.ts","../src/hooks/useIntersectionObserver/useIntersectionObserver.ts","../src/hooks/useMediaQuery/useMediaQuery.ts","../src/hooks/useScreenSize/useScreenSize.ts","../src/hooks/useTruncated/useTruncated.ts","../src/components/data-table/cells/HeaderCell.tsx","../src/components/ui/table.tsx","../src/components/data-table/ColumnResizer.tsx","../src/components/data-table/ColumnSeparator.tsx","../src/components/data-table/StatusContentSlot.tsx","../src/components/data-table/DataTableDevTool.tsx","../src/components/data-table/helpers.ts","../src/components/data-table/DataTable.tsx","../src/components/ui/dialog.tsx","../src/components/dialog-alert/lib/utils.ts","../src/components/dialog-alert/components/ui/dialog.tsx","../src/components/dialog-alert/components/ui/button.tsx","../src/components/dialog-alert/lib/constants.ts","../src/components/dialog-alert/locale/default.ts","../src/components/dialog-alert/locale/i18n.ts","../src/components/dialog-alert/DialogAlert.tsx","../src/components/dialog-alert/templates/index.ts","../src/components/dialog-alert/hooks/DialogAlertStore.tsx","../src/components/formulaEditor/constants/formulaOperation.ts","../src/components/formulaEditor/editor/SuggestionList.tsx","../src/components/formulaEditor/editor/EditorExtension.tsx","../src/components/formulaEditor/utils/parseFormulaToken.ts","../src/components/formulaEditor/FormulaEditor.tsx","../src/components/tooltip/tooltip.tsx","../src/components/grid-settings/SortableRow.tsx","../src/components/grid-settings/schema.tsx","../src/components/grid-settings/GridSettingsModal.tsx","../src/components/grid-settings/store/useGridSettingsStore.ts","../src/components/ui/LoadingOverlay.tsx","../src/components/image/image.tsx","../src/components/list/components/table.tsx","../src/components/list/components/container.tsx","../src/components/list/components/header.tsx","../src/components/list/List.tsx","../src/assets/icon/InfoIcon.tsx","../src/components/navbar/navbar.tsx","../src/components/ui/sheet.tsx","../src/components/prevent-page-leave/store/usePreventPageLeaveStore.ts","../src/components/prevent-page-leave/PreventPageLeave.tsx","../src/components/prevent-page-leave/hooks/usePreventPageLeave.ts","../src/components/ui/radio.tsx","../src/components/ui/ImageNode.tsx","../src/components/ui/richtext.tsx","../src/components/ui/separator.tsx","../src/hooks/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/index.ts","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/cropperModal/type.ts","../src/components/cropperModal/helper.ts","../src/components/cropperModal/cropperModal.tsx","../src/components/truncated/truncated.tsx"],"names":["format","jsx","jsxs","clsx","useState","React","Label","React2","React3","cva","Fragment","CircleX","X","Slot","ChevronRight","DatePicker","placeholder","React6","ChevronLeft","normalizeMonth","isValid","defaultDisplayFormatter","defaultValueFormatter","defaultValueParser","parseISO","MonthPicker","CalendarIcon","useCallback","useMemo","useEffect","createPortal","useFormContext","Search","CheckIcon","CollapsibleTrigger","CollapsibleContent","useRef","threshold","isSomeColumnsFilterable","DialogPrimitive","cn","twMerge","Dialog","DialogPrimitive2","DialogPortal","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogTitle","DialogDescription","buttonVariants","Button","editor","tr","Node","nodes","React17","useForm","Plus","create","Image","React18","React19","UserIcon","Icon","React23","InlineCodeIcon","BulletListIcon","QuoteIcon","LinkIcon","ImageIcon","forwardRef","RichText","Separator","Tooltip","TooltipContent","TooltipProvider","TooltipTrigger","TooltipPrimitive2","React24","open","croppedAreaPixels"],"mappings":"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","file":"index.mjs","sourcesContent":["export function isDefined(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport function isEmptyObject(value: any) {\n return !!value && Object.keys(value).length === 0 && value.constructor === Object;\n}\n\nexport type DebounceOptions = {\n leading?: boolean;\n trailing?: boolean;\n maxWait?: number;\n};\n\nexport type DebouncedFunction<T extends (...args: any[]) => any> = {\n (...args: Parameters<T>): ReturnType<T> | undefined;\n cancel: () => void;\n flush: () => ReturnType<T> | undefined;\n};\n\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number = 150,\n options?: DebounceOptions\n): DebouncedFunction<T> {\n let lastArgs: Parameters<T> | undefined,\n lastThis: any,\n maxWait: number | undefined,\n result: ReturnType<T> | undefined,\n timerId: ReturnType<typeof setTimeout> | undefined,\n lastCallTime: number | undefined,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n\n wait = Number(wait) || 0;\n\n if (options && typeof options === \"object\") {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? Math.max(Number(options.maxWait) || 0, wait) : undefined;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time: number) {\n const args = lastArgs!;\n const thisArg = lastThis!;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time: number) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time: number) {\n const timeSinceLastCall = time - (lastCallTime ?? 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n const remaining = wait - timeSinceLastCall;\n return maxing ? Math.min(remaining, (maxWait ?? 0) - timeSinceLastInvoke) : remaining;\n }\n\n function shouldInvoke(time: number) {\n const timeSinceLastCall = time - (lastCallTime ?? 0);\n const timeSinceLastInvoke = time - lastInvokeTime;\n return (\n lastCallTime === undefined ||\n timeSinceLastCall >= wait ||\n timeSinceLastCall < 0 ||\n (maxing && timeSinceLastInvoke >= (maxWait ?? 0))\n );\n }\n\n function timerExpired() {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time: number) {\n timerId = undefined;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n\n function debounced(this: any, ...args: Parameters<T>): ReturnType<T> | undefined {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n lastArgs = args;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n options?: Pick<DebounceOptions, \"leading\" | \"trailing\">\n): DebouncedFunction<T> {\n let leading = true,\n trailing = true;\n\n if (typeof func !== \"function\") {\n throw new TypeError(\"Expected a function\");\n }\n\n if (options) {\n leading = \"leading\" in options ? !!options.leading : leading;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n leading,\n maxWait: wait,\n trailing\n });\n}\n","import { isDefined } from \"./common\";\n\nexport function stripNullishObject<T extends Record<string, any>>(value: Partial<T>) {\n if (!isDefined(value)) {\n return {};\n }\n\n try {\n return Object.fromEntries(Object.entries(value).filter(([, propValue]) => isDefined(propValue)));\n } catch {\n return {};\n }\n}\n","const pad = (num: number): string => String(num).padStart(2, \"0\");\n/**\n * Formats an ISO date string according to a specified format.\n *\n * @param isoDateString The input ISO 8601 date string (e.g., '2025-09-22T08:47:15.627Z') or javascript Date object\n * @param format The format string (e.g., 'd/m/Y H:i:s')\n * - d / DD: Day (01-31)\n * - m / MM: Month (01-12)\n * - Y / YYYY: Full Year (e.g., 2025)\n * - H: Hour (00-23)\n * - i: Minute (00-59)\n * - s: Second (00-59)\n * @returns A formatted date string.\n */\nexport function formatISODate(isoDate: string | Date, format: string = \"d/m/Y H:i\"): string {\n const date = new Date(isoDate);\n\n if (isNaN(date.getTime())) {\n return \"Invalid Date\";\n }\n // Note: .getMonth() is 0-indexed (0-11), so we add 1.\n const parts = {\n d: pad(date.getDate()),\n m: pad(date.getMonth() + 1),\n Y: String(date.getFullYear()),\n H: pad(date.getHours()),\n i: pad(date.getMinutes()),\n s: pad(date.getSeconds())\n };\n\n const tokenMap: { [key: string]: PartKey } = {\n // Day\n d: \"d\",\n DD: \"d\",\n // Month\n m: \"m\",\n MM: \"m\",\n // Year\n Y: \"Y\", // 'Y' and 'YYYY' will both map to the 4-digit year\n YYYY: \"Y\",\n // Hour\n H: \"H\",\n // Minute\n i: \"i\",\n // Second\n s: \"s\"\n };\n\n // Define the type for our map keys for type safety\n type PartKey = keyof typeof parts;\n\n return format.replace(/YYYY|Y|MM|m|DD|d|H|i|s/g, (match) => {\n const partKey = tokenMap[match];\n return partKey ? parts[partKey] : match;\n });\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to intelligently combine class names using `clsx`\n * and resolve Tailwind CSS class conflicts using `tailwind-merge`.\n *\n * This function is commonly used in React or other frontend frameworks\n * to conditionally merge Tailwind classes and avoid class duplication or conflict,\n * especially when combining utility variants like `bg-red-500` and `bg-blue-500`.\n *\n * @param {...ClassValue[]} args - A variadic list of class values. Each can be:\n * - string: e.g. `\"px-4 py-2\"`\n * - object: e.g. `{ 'text-red-500': isError }`\n * - array: e.g. `['bg-blue-500', conditionalClass]`\n * These will be normalized and merged by `clsx`, then conflict-resolved by `tailwind-merge`.\n *\n * @returns {string} A single string of valid Tailwind class names with conflicts resolved.\n *\n * @example\n * ```tsx\n * <button className={cn(\"px-4 py-2\", isPrimary && \"bg-blue-500\", \"bg-red-500\")} />\n * // Result: \"px-4 py-2 bg-blue-500\" (if isPrimary is true)\n * ```\n *\n * @see https://github.com/lukeed/clsx - `clsx` docs for conditional class logic\n * @see https://github.com/dcastil/tailwind-merge - `tailwind-merge` docs for conflict resolution\n */\nexport default function cn(...args: ClassValue[]): string {\n return twMerge(clsx(args));\n}\n","import * as React from \"react\";\nimport type { SVGProps } from \"react\";\n\nconst ArrowIcon: React.FC<SVGProps<SVGSVGElement>> = ({\n width = \"1em\",\n height = \"1em\",\n fill = \"none\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 14 9\"\n width={width}\n height={height}\n fill={fill}\n {...props}\n >\n <path d=\"M0.293 0.723L6.79 8.723L13.293 0.723H0.293Z\" fill={props.color || \"#127035\"} />\n </svg>\n);\n\nexport default ArrowIcon;\n","import type { SVGProps } from \"react\";\nconst SuiCalendarIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 25 25\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M8.504 11.205H5.837v2.4h2.667zm5.333 0h-2.666v2.4h2.666zm5.334 0h-2.667v2.4h2.667zm2.666-8.4h-1.333v-2.4h-2.667v2.4H7.171v-2.4H4.504v2.4H3.17c-1.48 0-2.654 1.08-2.654 2.4l-.013 16.8c0 1.32 1.187 2.4 2.667 2.4h18.666c1.467 0 2.667-1.08 2.667-2.4v-16.8c0-1.32-1.2-2.4-2.667-2.4m0 19.2H3.171v-13.2h18.666z\"\n />\n </svg>\n);\nexport default SuiCalendarIcon;\n","import type { SVGProps } from \"react\";\nconst SuiCheckIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#check_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M10.976.043c9.629-.793 16.248 9.583 11.392 18.002-4.252 7.37-14.736 8.025-19.907 1.26C-3.276 11.799 1.616.815 10.976.044m5.59 7.791c-.284.048-.555.25-.775.428l-5.159 4.944c-.188.033-2.31-2.268-2.865-2.51-1.413-.619-2.427 1.01-1.22 2.22.73.733 2.573 2.531 3.354 3.044.407.267.853.335 1.295.104 1.429-1.295 2.87-2.6 4.249-3.948.647-.633 1.63-1.47 2.186-2.112.825-.95.12-2.369-1.065-2.169\"\n />\n <path\n fill=\"#fff\"\n d=\"M16.567 7.835c1.186-.2 1.89 1.218 1.065 2.169-.557.64-1.54 1.479-2.187 2.112-1.379 1.348-2.818 2.653-4.248 3.948-.442.23-.889.162-1.295-.105-.782-.512-2.625-2.31-3.355-3.043-1.206-1.21-.192-2.84 1.221-2.221.556.243 2.677 2.544 2.865 2.51l5.16-4.943c.219-.178.489-.38.774-.429z\"\n />\n </g>\n <defs>\n <clipPath id=\"check_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiCheckIcon;\n","import type { SVGProps } from \"react\";\nconst SuiDotsVerticalIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 25 25\"\n {...props}\n >\n <g clipPath=\"url(#dots-vertical_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M12.504 9.03a3.373 3.373 0 0 1 3.375 3.375 3.373 3.373 0 0 1-3.375 3.375 3.373 3.373 0 0 1-3.375-3.375 3.373 3.373 0 0 1 3.375-3.375M9.129 4.155a3.373 3.373 0 0 0 3.375 3.375 3.373 3.373 0 0 0 3.375-3.375A3.373 3.373 0 0 0 12.504.78a3.373 3.373 0 0 0-3.375 3.375m0 16.5a3.373 3.373 0 0 0 3.375 3.375 3.373 3.373 0 0 0 3.375-3.375 3.373 3.373 0 0 0-3.375-3.375 3.373 3.373 0 0 0-3.375 3.375\"\n />\n </g>\n <defs>\n <clipPath id=\"dots-vertical_svg__a\">\n <path fill=\"#fff\" d=\"M.504.405h24v24h-24z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiDotsVerticalIcon;\n","import type { SVGProps } from \"react\";\nconst SuiEmptyDataIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 184 152\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(24 31.67)\">\n <ellipse fillOpacity=\".8\" cx=\"67.797\" cy=\"106.89\" rx=\"67.797\" ry=\"12.668\" fill=\"#B0DFAA\" />\n <path\n d=\"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\"\n fill=\"#CEE5D6\"\n />\n <path\n d=\"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\"\n fill=\"#DDEEE3\"\n transform=\"translate(13.56)\"\n />\n <path\n d=\"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\"\n fill=\"#F9F9F9\"\n />\n <path\n d=\"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\"\n fill=\"#DDEEE3\"\n />\n </g>\n <path\n d=\"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\"\n fill=\"#DDEEE3\"\n />\n <g transform=\"translate(149.65 15.383)\" fill=\"#FFF\">\n <ellipse cx=\"20.654\" cy=\"3.167\" rx=\"2.849\" ry=\"2.815\" />\n <path d=\"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\" />\n </g>\n </g>\n </svg>\n);\nexport default SuiEmptyDataIcon;\n","import type { SVGProps } from \"react\";\nconst SuiExpandIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g fill=\"currentColor\" clipPath=\"url(#expand_svg__a)\">\n <path d=\"M11.674.038c.69-.18 1.498.305 1.69 1.2.283 6.934.043 13.962.122 20.93-.128 2.08-2.27 2.537-2.852.602-.282-6.934-.042-13.962-.122-20.93.072-.855.481-1.623 1.163-1.802M19.93 10.11c.024-.474-.188-2.095.498-1.842L24 11.947l-.2.504-3.37 3.288c-.687.252-.475-1.368-.5-1.843h-4.312c-.187 0-.664-.575-.718-.852-.066-.33-.066-1.751 0-2.083.054-.277.531-.852.718-.852h4.313M4.07 13.898c-.025.473.187 2.095-.5 1.842L0 12.06l.2-.504 3.37-3.288c.687-.253.475 1.367.5 1.842h4.312c.187 0 .664.576.718.852.066.33.066 1.752 0 2.084-.054.276-.531.852-.718.852z\" />\n </g>\n <defs>\n <clipPath id=\"expand_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiExpandIcon;\n","import type { SVGProps } from \"react\";\nconst SuiFilterIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#filter_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M.29.332a.85.85 0 0 0-.258.505c-.057.443-.053 2.439.125 2.752l8.58 8.904c.236 2.44-.221 5.164.023 7.57.049.464.147.525.494.83.675.59 3.539 2.57 4.326 2.94s1.45.15 1.654-.619l.022-10.721 8.585-8.904c.178-.317.187-2.313.13-2.752-.085-.639-.748-.793-1.352-.838H1.379C1.034.027.545.105.29.332\"\n />\n </g>\n <defs>\n <clipPath id=\"filter_svg__a\">\n <path fill=\"#fff\" d=\"M24-.001H0v24h24z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiFilterIcon;\n","import React from \"react\";\n\nconst NotFoundIcon: React.FC<React.SVGProps<SVGSVGElement>> = ({\n width = 24,\n height = 24,\n fill = \"currentColor\",\n className = \"\",\n ...props\n}) => (\n <svg\n viewBox=\"0 0 106 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={width}\n height={height}\n fill={fill}\n className={className}\n {...props}\n >\n <path\n d=\"M44.7381 99.6137C69.3718 99.6137 89.3413 95.8824 89.3413 91.2795C89.3413 86.6767 69.3718 82.9453 44.7381 82.9453C20.1043 82.9453 0.134766 86.6767 0.134766 91.2795C0.134766 95.8824 20.1043 99.6137 44.7381 99.6137Z\"\n fill=\"#B0DFAA\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M80.4202 66.795L64.6801 47.4233C63.9249 46.5114 62.8209 45.9595 61.6584 45.9595H27.8163C26.6545 45.9595 25.5505 46.5114 24.7953 47.4233L9.05579 66.795V76.9154H80.4209V66.795H80.4202Z\"\n fill=\"#CEE5D6\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.3913 20.957H67.0841C67.782 20.957 68.4514 21.2343 68.9449 21.7278C69.4384 22.2213 69.7157 22.8907 69.7157 23.5886V84.9991C69.7157 85.6971 69.4384 86.3664 68.9449 86.8599C68.4514 87.3534 67.782 87.6307 67.0841 87.6307H22.3913C21.6934 87.6307 21.0241 87.3534 20.5305 86.8599C20.037 86.3664 19.7598 85.6971 19.7598 84.9991V23.5886C19.7598 22.8907 20.037 22.2213 20.5305 21.7278C21.0241 21.2343 21.6934 20.957 22.3913 20.957V20.957Z\"\n fill=\"#F9F9F9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.2124 27.5049H61.2631C61.612 27.5049 61.9467 27.6435 62.1935 27.8903C62.4402 28.137 62.5789 28.4717 62.5789 28.8207V45.2398C62.5789 45.5887 62.4402 45.9234 62.1935 46.1702C61.9467 46.4169 61.612 46.5555 61.2631 46.5555H28.2124C27.8634 46.5555 27.5288 46.4169 27.282 46.1702C27.0353 45.9234 26.8966 45.5887 26.8966 45.2398V28.8207C26.8966 28.4717 27.0353 28.137 27.282 27.8903C27.5288 27.6435 27.8634 27.5049 28.2124 27.5049ZM28.3848 53.6983H61.0907C61.4854 53.6983 61.8639 53.8551 62.143 54.1342C62.4221 54.4133 62.5789 54.7918 62.5789 55.1865C62.5789 55.5811 62.4221 55.9597 62.143 56.2387C61.8639 56.5178 61.4854 56.6746 61.0907 56.6746H28.3848C27.9901 56.6746 27.6116 56.5178 27.3325 56.2387C27.0534 55.9597 26.8966 55.5811 26.8966 55.1865C26.8966 54.7918 27.0534 54.4133 27.3325 54.1342C27.6116 53.8551 27.9901 53.6983 28.3848 53.6983ZM28.3848 61.4371H61.0907C61.4855 61.4371 61.8641 61.5939 62.1432 61.8731C62.4224 62.1522 62.5792 62.5308 62.5792 62.9256C62.5792 63.3204 62.4224 63.699 62.1432 63.9781C61.8641 64.2573 61.4855 64.4141 61.0907 64.4141H28.3848C27.99 64.4141 27.6114 64.2573 27.3323 63.9781C27.0531 63.699 26.8963 63.3204 26.8963 62.9256C26.8963 62.5308 27.0531 62.1522 27.3323 61.8731C27.6114 61.5939 27.99 61.4371 28.3848 61.4371ZM80.2749 90.0569C79.7651 92.0772 77.9743 93.5832 75.844 93.5832H13.6315C11.5012 93.5832 9.71044 92.0766 9.20123 90.0569C9.10411 89.6718 9.05505 89.2763 9.05518 88.8792V66.7957H26.3696C28.2822 66.7957 29.8236 68.4062 29.8236 70.3615V70.3878C29.8236 72.3424 31.3828 73.9207 33.2953 73.9207H56.1802C58.0927 73.9207 59.6519 72.3279 59.6519 70.3726V70.3647C59.6519 68.4095 61.1933 66.795 63.1058 66.795H80.4203V88.8799C80.4203 89.2858 80.3697 89.6799 80.2749 90.0569Z\"\n fill=\"#DDEEE3\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M82.4512 22.0242L77.9577 23.7676C77.8423 23.8125 77.7165 23.8239 77.5949 23.8005C77.4733 23.7771 77.3608 23.7198 77.2703 23.6353C77.1797 23.5507 77.1149 23.4424 77.0833 23.3226C77.0516 23.2029 77.0544 23.0767 77.0913 22.9584L78.3656 18.8749C76.6623 16.938 75.6624 14.5762 75.6624 12.0275C75.6624 5.45185 82.3189 0.121582 90.5308 0.121582C98.7406 0.121582 105.398 5.45185 105.398 12.0275C105.398 18.6032 98.7413 23.9334 90.5301 23.9334C87.5512 23.9334 84.7775 23.2321 82.4512 22.0242Z\"\n fill=\"#DDEEE3\"\n />\n <path\n d=\"M96.3874 14.1776C97.4226 14.1776 98.2617 13.3484 98.2617 12.3256C98.2617 11.3028 97.4226 10.4736 96.3874 10.4736C95.3522 10.4736 94.5131 11.3028 94.5131 12.3256C94.5131 13.3484 95.3522 14.1776 96.3874 14.1776Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.5479 13.9459H82.7992L84.7058 10.7051L86.5479 13.9459ZM88.8906 10.7051H92.1702V13.9459H88.8906V10.7051Z\"\n fill=\"white\"\n />\n </svg>\n);\n\nexport default NotFoundIcon;\n","import type { SVGProps } from \"react\";\nconst SuiSettingIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"M16.406 3.26c.052.055 1.256.701 1.331.714.42.067 1.478-.527 2.084-.543.446-.01 1.138.21 1.517.45.454.284 2.42 3.361 2.558 3.907.418 1.629-.495 2.56-1.73 3.405l-.041 1.45c.033.29 1.67 1.242 1.828 2.253.137.86-.036 1.259-.39 1.983-.396.814-1.743 3.053-2.499 3.402-1.53.709-1.898-.129-3.113-.24-.209-.018-1.517.651-1.591.77-.604.952-.065 2.5-1.857 3.028-.658.194-4.207.217-4.888.044-.408-.103-1.001-.517-1.239-.869-.397-.59-.523-2.011-.76-2.262-.044-.047-1.03-.587-1.135-.63-.594-.241-1.633.477-2.412.46-.462-.011-1.187-.283-1.553-.567S.236 16.682.12 16.227c-.384-1.5.199-2.004 1.125-2.958.157-.163.492-.297.567-.419.1-.165.129-1.378.075-1.585-.05-.188-1.661-1.127-1.821-2.146a4.4 4.4 0 0 1 0-1.106c.064-.396 1.772-3.268 2.1-3.662 1.103-1.316 2.62-.889 4.01-.364l1.375-.68C8.103 1.929 8.103.29 9.965.062c.805-.098 3.836-.093 4.535.114.4.116.908.478 1.143.827.394.59.523 2.012.76 2.263zm-3.134-.243h-2.52c-.1.567-.19 1.386-.418 1.9-.36.813-1.217.924-1.932 1.304-.4.212-1.008.788-1.387.858-.934.179-1.845-.32-2.724-.545l-1.125 1.89c0 .134 1.685 1.169 1.808 1.975.083.546-.139 1.006-.144 1.534-.008.649.289 1.264.088 1.908-.181.579-1.752 1.623-1.752 1.748l1.125 1.89c.93-.24 1.95-.812 2.933-.476.28.096.827.605 1.178.791.818.434 1.576.458 1.966 1.41.108.263.369 1.791.459 1.806l2.443-.015c.1-.566.19-1.386.417-1.9.362-.812 1.218-.923 1.932-1.303.4-.213 1.009-.79 1.388-.859.934-.178 1.844.32 2.724.546l1.124-1.89c0-.135-1.684-1.17-1.808-1.976-.082-.545.14-1.006.145-1.533.008-.65-.29-1.264-.088-1.908.18-.58 1.751-1.624 1.751-1.748l-1.124-1.89c-.931.238-1.95.812-2.933.475-.273-.093-.596-.499-.892-.654-1.816-.94-2.471-.89-2.636-3.338z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M11.705 8.245c5.107-.422 5.406 7.472.371 7.555-4.715.077-5.174-7.16-.371-7.555\"\n />\n </svg>\n);\nexport default SuiSettingIcon;\n","import type { SVGProps } from \"react\";\nconst SuiTriangleDownIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 15\"\n {...props}\n >\n <path fill=\"currentColor\" d=\"m0 0 11.994 15L24 0z\" />\n </svg>\n);\nexport default SuiTriangleDownIcon;\n","import type { SVGProps } from \"react\";\nconst SuiWarningIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <g clipPath=\"url(#warning_svg__a)\">\n <path\n fill=\"currentColor\"\n d=\"M10.603.061c8.692-.837 15.37 7.07 12.864 15.498-2.772 9.323-15.222 11.462-21.079 3.694C-3.134 11.93 1.465.942 10.603.061m2.858 15.103.734-9.092c.287-3.574-4.695-3.575-4.408 0l.734 9.092h2.941m-1.92 1.916c-1.858.384-1.743 3.333.079 3.55 3.047.364 2.714-4.13-.079-3.55\"\n />\n <path\n fill=\"#fff\"\n d=\"M13.46 15.163h-2.94l-.735-9.091c-.285-3.576 4.695-3.575 4.409 0zM11.54 17.079c2.794-.58 3.127 3.915.08 3.551-1.822-.217-1.938-3.166-.08-3.551\"\n />\n </g>\n <defs>\n <clipPath id=\"warning_svg__a\">\n <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default SuiWarningIcon;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"@/utils\";\nimport { ArrowIcon } from \"@/components/icons\";\n\nfunction Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return <AccordionPrimitive.Item data-slot=\"accordion-item\" className={cn(\"\", className)} {...props} />;\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-0\",\n className\n )}\n {...props}\n >\n {children}\n <ArrowIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200 w-4 rotate-90\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import { useState, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\ntype ExpandCollapseProps = {\n title: ReactNode;\n children: ReactNode;\n portalId: string;\n};\n\nconst ExpandCollapse: React.FC<ExpandCollapseProps> = ({ title, children, portalId }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const Panel = (\n <div\n className={clsx(\n \"overflow-hidden transition-all duration-500 ease-in-out bg-white border-b shadow-md w-full\",\n isOpen ? \"max-h-[700px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"relative p-6\">\n <button\n onClick={() => setIsOpen(false)}\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n {children}\n </div>\n </div>\n );\n\n return (\n <>\n {/* ปุ่ม trigger อยู่ตรงไหนก็ได้ */}\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"px-4 py-2 text-sm text-gray-700 hover:text-black\"\n >\n {title}\n </button>\n\n {/* Render panel */}\n {portalId && typeof document !== \"undefined\" ?\n document.getElementById(portalId) ?\n createPortal(Panel, document.getElementById(portalId)!)\n : null\n : Panel}\n </>\n );\n};\n\nexport default ExpandCollapse;\n","// advance-search/operatorMap.ts\nimport type { FieldType, OperatorValue } from \"./types\";\n\nexport const OPERATOR_MAP: Record<FieldType, OperatorValue[]> = {\n text: [\n \"contains\",\n \"equals\",\n \"beginsWith\",\n \"endsWith\",\n \"notEquals\",\n \"notBeginsWith\",\n \"notEndsWith\",\n \"notContains\"\n ],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\"],\n date: [\"on\", \"after\", \"before\", \"between\"],\n datetime: [\"on\", \"after\", \"before\", \"between\"],\n datemonth: [\"on\", \"after\", \"before\", \"between\"],\n checkbox: [\"is\", \"isNot\"],\n dropdown: [\"is\", \"isNot\"],\n lookup: [\"containsAny\", \"containsOnly\", \"containsAll\", \"notContains\"],\n uuid: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\"],\n json: [\"equals\", \"notEquals\", \"containsAny\"]\n};\n","// advance-search/hooks/useAdvanceSearch.ts\nimport { useCallback, useMemo, useState } from \"react\";\nimport { OPERATOR_MAP } from \"../operatorMap\";\nimport { FieldSchema, FieldType, OperatorValue, RowState } from \"../types\";\n\nfunction findField(fields: FieldSchema[], name: string): FieldSchema | undefined {\n return fields.find((f) => f.name === name);\n}\n\nfunction getFieldType(fields: FieldSchema[], name: string): FieldType {\n return findField(fields, name)?.type ?? \"text\";\n}\n\nfunction firstOperatorFor(fields: FieldSchema[], fieldName: string): OperatorValue {\n const t = getFieldType(fields, fieldName);\n return OPERATOR_MAP[t][0];\n}\n\nfunction makeNewRow(field: FieldSchema): RowState {\n const op = OPERATOR_MAP[field.type][0];\n if (op === \"between\") {\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: \"between\",\n value: \"\",\n value2: \"\",\n multiTableSearch: field.multiTableSearch,\n lookupFieldName: field.lookupFieldName\n };\n }\n if (field.type === \"json\") {\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: op,\n value: \"\",\n multiTableSearch: field.multiTableSearch,\n jsonPath: field.jsonPath,\n lookupFieldName: field.lookupFieldName\n };\n }\n return {\n id: crypto.randomUUID(),\n fieldName: field.name,\n fieldType: field.type,\n operator: op,\n value: \"\",\n multiTableSearch: field.multiTableSearch,\n lookupFieldName: field.lookupFieldName\n };\n}\n\nexport interface UseAdvanceSearchOptions {\n fields: FieldSchema[];\n limitRows?: number;\n}\n\nexport function useAdvanceSearch({ fields, limitRows }: UseAdvanceSearchOptions) {\n const [rows, setRows] = useState<RowState[]>([makeNewRow(fields[0])]);\n\n const updateRows = useCallback((next: RowState[]) => {\n setRows(next);\n }, []);\n\n const operatorsForField = useCallback(\n (fieldName: string): OperatorValue[] => {\n const t = getFieldType(fields, fieldName);\n return OPERATOR_MAP[t];\n },\n [fields]\n );\n\n const addRow = useCallback(() => {\n if (limitRows && rows.length >= limitRows) return;\n\n const lastRow = rows[rows.length - 1];\n const lastField = fields.find((f) => f.name === lastRow?.fieldName) ?? fields[0];\n updateRows([...rows, makeNewRow(lastField)]);\n }, [rows, fields, updateRows, limitRows]);\n\n const removeRow = useCallback(\n (id: string) => {\n if (rows.length === 1) return;\n updateRows(rows.filter((r) => r.id !== id));\n },\n [rows, updateRows]\n );\n\n const clearRow = useCallback(\n (id: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n const nextOp = firstOperatorFor(fields, r.fieldName);\n return nextOp === \"between\" ?\n {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n operator: \"between\",\n value: \"\",\n value2: \"\",\n multiTableSearch: r.multiTableSearch,\n jsonPath: r.jsonPath,\n lookupFieldName: r.lookupFieldName\n }\n : {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n operator: nextOp,\n value: \"\",\n multiTableSearch: r.multiTableSearch,\n jsonPath: r.jsonPath,\n lookupFieldName: r.lookupFieldName\n };\n })\n );\n },\n [rows, fields, updateRows]\n );\n\n const clearAllRow = useCallback(() => {\n updateRows([makeNewRow(fields[0])]);\n }, [fields, updateRows]);\n\n const changeField = useCallback(\n (id: string, fieldName: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n const newRow = makeNewRow(fields.find((f) => f.name === fieldName) || fields[0]);\n return { ...newRow, id: r.id }; // new row data but same id\n })\n );\n },\n [rows, fields, updateRows]\n );\n\n const changeOperator = useCallback(\n (id: string, operator: OperatorValue) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n if (operator === \"between\") {\n return {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n multiTableSearch: r.multiTableSearch,\n lookupFieldName: r.lookupFieldName,\n jsonPath: r.jsonPath,\n operator,\n value: \"\",\n value2: \"\"\n };\n }\n return {\n id: r.id,\n fieldName: r.fieldName,\n fieldType: r.fieldType,\n multiTableSearch: r.multiTableSearch,\n lookupFieldName: r.lookupFieldName,\n jsonPath: r.jsonPath,\n operator,\n value: \"\"\n };\n })\n );\n },\n [rows, updateRows]\n );\n\n const changeValue = useCallback(\n (id: string, which: \"value\" | \"value2\", val: string) => {\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n if (which === \"value2\" && r.operator !== \"between\") return r;\n return { ...r, [which]: val } as RowState;\n })\n );\n },\n [rows, updateRows]\n );\n\n const fieldOptions = useMemo(\n () =>\n fields.map((f) => ({\n value: f.name,\n label: f.label ?? f.name\n })),\n [fields]\n );\n\n return {\n rows,\n addRow,\n removeRow,\n clearRow,\n clearAllRow,\n changeField,\n changeOperator,\n changeValue,\n operatorsForField,\n fieldOptions\n };\n}\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, Triangle, ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-gray-00 [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[state=open]:border-ring data-[state=open]:[&_svg]:text-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronRight className=\"h-4 w-4 rotate-90 text-gray-300\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"m-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"hover:bg-[#EAF5EE] hover:text-[#379A2A] [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 \",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-2 hover:text-[#379A2A]\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Triangle className=\"size-2 fill-current\" style={{ transform: \"rotate(0deg)\" }} />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Triangle className=\"size-2 fill-current\" style={{ transform: \"rotate(180deg)\" }} />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue\n};\n","import React from \"react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport type { Option, RowState } from \"@/components/advanceSearch/types\";\n\nexport const FieldSelect: React.FC<{\n row: RowState;\n fieldOptions: Option[];\n onChangeField: (fieldName: string) => void;\n}> = ({ row, fieldOptions, onChangeField }) => (\n <div className=\"w-full\">\n <Select value={row.fieldName} onValueChange={(value) => onChangeField(value)}>\n <SelectTrigger className=\"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\">\n <SelectValue placeholder=\"Select field\" />\n </SelectTrigger>\n <SelectContent className=\"w-full min-w-[unset]\">\n {fieldOptions.map((f) => (\n <SelectItem key={f.value} value={f.value}>\n {f.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n);\n","// advance-search/types.ts\nexport type FieldType =\n | \"text\"\n | \"number\"\n | \"date\"\n | \"datetime\"\n | \"datemonth\"\n | \"checkbox\"\n | \"dropdown\"\n | \"lookup\"\n | \"uuid\"\n | \"json\";\n\nexport type Option = { value: string; label: string };\n\nexport interface FieldSchemaBase<T extends FieldType> {\n name: string;\n type: T;\n label?: string;\n multiTableSearch?: boolean;\n lookupFieldName?: string;\n}\n\nexport interface DropdownFieldSchema extends FieldSchemaBase<\"dropdown\"> {\n options: Option[];\n}\nexport type TextFieldSchema = FieldSchemaBase<\"text\">;\nexport type NumberFieldSchema = FieldSchemaBase<\"number\">;\nexport type DateFieldSchema = FieldSchemaBase<\"date\">;\nexport type DateTimeFieldSchema = FieldSchemaBase<\"datetime\">;\nexport type DateMonthFieldSchema = FieldSchemaBase<\"datemonth\">;\nexport type CheckboxFieldSchema = FieldSchemaBase<\"checkbox\">;\nexport interface LookupFieldSchema extends FieldSchemaBase<\"lookup\"> {\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<Option[]>;\n suggestionDebounce?: number;\n placeholder?: string;\n noOptionsMessage?: string;\n loadingMessage?: string;\n}\nexport type UUIDFieldSchema = FieldSchemaBase<\"uuid\">;\nexport interface JSONFieldSchema extends FieldSchemaBase<\"json\"> {\n jsonPath?: string[];\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<Option[]>;\n suggestionDebounce?: number;\n placeholder?: string;\n noOptionsMessage?: string;\n loadingMessage?: string;\n}\n\nexport type FieldSchema =\n | DropdownFieldSchema\n | TextFieldSchema\n | NumberFieldSchema\n | DateFieldSchema\n | DateTimeFieldSchema\n | DateMonthFieldSchema\n | CheckboxFieldSchema\n | LookupFieldSchema\n | UUIDFieldSchema\n | JSONFieldSchema;\n\n// ตัวดำเนินการทั้งหมดที่รองรับ\nexport type OperatorValue =\n | \"contains\"\n | \"equals\"\n | \"beginsWith\"\n | \"endsWith\"\n | \"notEquals\"\n | \"notBeginsWith\"\n | \"notEndsWith\"\n | \"notContains\"\n | \"gt\"\n | \"gte\"\n | \"lt\"\n | \"lte\"\n | \"on\"\n | \"after\"\n | \"before\"\n | \"between\"\n | \"is\"\n | \"isNot\"\n | \"containsAny\"\n | \"containsOnly\"\n | \"containsAll\";\n\n// ใช้เป็น source of truth สำหรับ label\nexport const OPERATOR_LABEL: Record<OperatorValue, string> = {\n contains: \"Contains\",\n equals: \"Equals\",\n beginsWith: \"Begins with\",\n endsWith: \"Ends with\",\n notEquals: \"Not equals\",\n notBeginsWith: \"Not begins with\",\n notEndsWith: \"Not ends with\",\n notContains: \"Not contains\",\n gt: \"Greater than\",\n gte: \"Greater or equal\",\n lt: \"Less than\",\n lte: \"Less or equal\",\n on: \"On\",\n after: \"After\",\n before: \"Before\",\n between: \"Between\",\n is: \"Is\",\n isNot: \"Is not\",\n containsAny: \"Contains at least one of\",\n containsOnly: \"Contains only\",\n containsAll: \"Contains all of\"\n};\n\nexport type RowState =\n | {\n id: string;\n fieldName: string;\n fieldType: FieldType;\n operator: Exclude<OperatorValue, \"between\">;\n value: string | any[];\n value2?: undefined;\n multiTableSearch?: boolean;\n jsonPath?: string[];\n lookupFieldName?: string;\n }\n | {\n id: string;\n fieldName: string;\n fieldType: FieldType;\n operator: \"between\";\n value: string; // ช่องจาก\n value2: string; // ช่องถึง\n multiTableSearch?: boolean;\n jsonPath?: string[];\n lookupFieldName?: string;\n };\n\nexport interface Params {\n AND: Record<string, unknown>[];\n}\n\nexport interface AdvanceSearchProps {\n fields: FieldSchema[];\n portalId: string;\n limitRows?: number;\n iconColor?: string;\n onSearch?: (param: Params) => void;\n onClear?: () => void;\n shortDateFormat?: string;\n}\n\nexport interface ParamsBuilder {\n build(row: RowState): object;\n}\n","import React from \"react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport type { OperatorValue, RowState } from \"@/components/advanceSearch/types\";\nimport { OPERATOR_LABEL } from \"@/components/advanceSearch/types\";\n\nexport const OperatorSelect: React.FC<{\n row: RowState;\n operators: OperatorValue[];\n onChangeOperator: (op: OperatorValue) => void;\n error?: string;\n}> = ({ row, operators, onChangeOperator, error }) => {\n React.useEffect(() => {\n if (!operators.length) return;\n if (!operators.includes(row.operator)) {\n onChangeOperator(operators[0]);\n }\n }, [operators, row.operator, onChangeOperator]);\n\n return (\n <div className=\"w-full\">\n <Select value={row.operator} onValueChange={(value) => onChangeOperator(value as OperatorValue)}>\n <SelectTrigger\n aria-invalid={error ? \"true\" : \"false\"}\n className={`w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0 ${\n error ? \"border border-red-500\" : \"\"\n }`}\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent className=\"w-full min-w-[unset]\">\n {operators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABEL[op] ?? op}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {error && <span className=\"mt-1 block text-xs text-red-600\">{error}</span>}\n </div>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"@/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues\n} from \"react-hook-form\";\n\nimport { CircleX } from \"lucide-react\";\nimport { cn } from \"@/utils\";\nimport { Label } from \"@/components/ui/label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn(\"grid gap-2\", className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) return null;\n\n return (\n <div\n data-slot=\"form-message\"\n className={cn(\"text-xs leading-tight mt-1 flex items-center gap-1.5 text-destructive\", className)}\n id={formMessageId}\n {...props}\n >\n <CircleX className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <p>{body}</p>\n </div>\n );\n}\n\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/utils\";\n\nconst spinnerVariants = cva(\"relative inline-block aspect-square transform-gpu\", {\n variants: {\n variant: {\n primary: \"[&>div]:bg-[#77ab8a]\",\n secondary: \"[&>div]:bg-[#ab9555]\",\n destructive: \"[&>div]:bg-destructive\",\n muted: \"[&>div]:bg-muted-foreground\"\n },\n size: {\n sm: \"size-7\",\n default: \"size-8\",\n lg: \"size-9\",\n xl: \"size-10\",\n \"2xl\": \"size-12\"\n }\n },\n defaultVariants: { variant: \"primary\", size: \"default\" }\n});\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof spinnerVariants>, \"size\"> {\n className?: string;\n size?: VariantProps<typeof spinnerVariants>[\"size\"] | number;\n}\n\nconst Spinner = ({ className, variant, size = \"default\", ...props }: SpinnerProps) => (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\n typeof size === \"string\" ? spinnerVariants({ variant, size }) : spinnerVariants({ variant }),\n className\n )}\n style={typeof size === \"number\" ? { width: size, height: size } : undefined}\n {...props}\n >\n {Array.from({ length: 12 }).map((_, i) => (\n <div\n key={i}\n className=\"animate-sus-spinner absolute left-[46.5%] top-[4.4%] h-[24%] w-[7%] origin-[center_190%] rounded-full opacity-[0.1] will-change-transform\"\n style={{\n transform: `rotate(${i * 30}deg)`,\n animationDelay: `${(i * 0.083).toFixed(3)}s`\n }}\n aria-hidden=\"true\"\n />\n ))}\n <span className=\"sr-only\">Loading...</span>\n </div>\n);\n\nexport { Spinner, spinnerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { CircleX } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\nimport { Spinner } from \"@/components/ui/spinner\";\n\nexport type InputPrimitiveProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst InputPrimitive = React.forwardRef<HTMLInputElement, InputPrimitiveProps>(\n ({ className, type = \"text\", ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"placeholder:text-neutral-400 text-neutral-900 flex h-10 w-full min-w-0 items-center rounded-lg border bg-white px-4 text-sm transition-colors outline-none file:inline-flex file:h-7 file:rounded-md file:border-0 file:bg-transparent file:px-2 file:text-sm file:font-medium hover:border-neutral-500 focus-visible:border-neutral-900 focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-neutral-100 disabled:text-neutral-400 disabled:border-neutral-200 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n\nconst inputVariants = cva(\"\", {\n variants: {\n controlSize: {\n sm: \"h-9 rounded-md px-3 text-sm\",\n md: \"h-10 rounded-lg px-4 text-sm\",\n lg: \"h-12 rounded-xl px-5 text-base\"\n },\n fullWidth: {\n true: \"w-full\",\n false: \"w-auto\"\n },\n appearance: {\n filled: \"border-neutral-200 hover:border-neutral-500 focus-visible:border-neutral-900\",\n unfilled: \"bg-white border-neutral-300 hover:border-neutral-500 focus-visible:border-neutral-900\"\n }\n },\n defaultVariants: {\n controlSize: \"md\",\n fullWidth: true,\n appearance: \"filled\"\n }\n});\n\nexport type InputProps = Omit<InputPrimitiveProps, \"size\"> &\n VariantProps<typeof inputVariants> & {\n prefix?: React.ReactNode;\n prefixProps?: React.HTMLAttributes<HTMLSpanElement>;\n prefixInteractive?: boolean;\n suffix?: React.ReactNode;\n suffixProps?: React.HTMLAttributes<HTMLSpanElement>;\n suffixInteractive?: boolean;\n wrapperClassName?: string;\n invalid?: boolean;\n loading?: boolean;\n loadingIcon?: React.ReactNode;\n validationMessage?: React.ReactNode;\n validationIcon?: React.ReactNode;\n validationMessageProps?: React.HTMLAttributes<HTMLParagraphElement>;\n onValueChange?: (value: string) => void;\n };\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n wrapperClassName,\n controlSize,\n fullWidth,\n appearance,\n prefix,\n prefixProps,\n prefixInteractive,\n suffix,\n suffixProps,\n suffixInteractive,\n invalid,\n loading,\n loadingIcon,\n validationMessage,\n validationIcon,\n validationMessageProps,\n onValueChange,\n type = \"text\",\n ...rest\n },\n ref\n ) => {\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix) || loading;\n const isFullWidth = fullWidth ?? true;\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp,\n ...inputProps\n } = rest;\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n const handleChange = React.useCallback<NonNullable<InputPrimitiveProps[\"onChange\"]>>(\n (event) => {\n onChangeProp?.(event);\n onValueChange?.(event.target.value);\n },\n [onChangeProp, onValueChange]\n );\n\n const resolvedAriaInvalid =\n typeof ariaInvalid === \"string\" ? ariaInvalid\n : ariaInvalid ? true\n : undefined;\n\n const describedBy =\n validationMessage ?\n [ariaDescribedByProp, messageId].filter(Boolean).join(\" \")\n : ariaDescribedByProp;\n\n const controlWrapperClassName = cn(\n \"relative inline-flex items-center\",\n isFullWidth ? \"w-full\" : \"w-fit\",\n !validationMessage && wrapperClassName\n );\n\n const inputElement = (\n <InputPrimitive\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n inputVariants({ controlSize, fullWidth: isFullWidth, appearance }),\n hasPrefix && \"pl-10\",\n hasSuffix && \"pr-10\",\n className\n )}\n aria-invalid={resolvedAriaInvalid}\n aria-describedby={describedBy || undefined}\n onChange={handleChange}\n {...inputProps}\n />\n );\n\n if (!hasPrefix && !hasSuffix && !validationMessage) {\n return inputElement;\n }\n\n const { className: prefixClassName, ...prefixRest } = prefixProps ?? {};\n const { className: suffixClassName, ...suffixRest } = suffixProps ?? {};\n const { className: validationMessageClassName, ...validationMessageRest } =\n validationMessageProps ?? {};\n\n const suffixContent = (\n <>\n {suffix}\n {loading && (loadingIcon ?? <Spinner size={16} variant=\"muted\" />)}\n </>\n );\n\n const inputWithAffixes = (\n <div data-slot=\"input-wrapper\" className={controlWrapperClassName}>\n {hasPrefix && (\n <span\n {...prefixRest}\n className={cn(\n \"absolute left-3 top-1/2 -translate-y-1/2 inline-flex items-center text-muted-foreground\",\n !prefixInteractive && \"pointer-events-none\",\n prefixClassName\n )}\n >\n {prefix}\n </span>\n )}\n {inputElement}\n {hasSuffix && (\n <span\n {...suffixRest}\n className={cn(\n \"absolute right-3 top-1/2 -translate-y-1/2 inline-flex items-center gap-2 text-muted-foreground\",\n !suffixInteractive && \"pointer-events-none\",\n suffixClassName\n )}\n >\n {suffixContent}\n </span>\n )}\n </div>\n );\n\n if (!validationMessage) {\n return inputWithAffixes;\n }\n\n return (\n <div className={cn(\"flex flex-col gap-1\", isFullWidth ? \"w-full\" : \"w-fit\", wrapperClassName)}>\n {hasPrefix || hasSuffix ? inputWithAffixes : inputElement}\n <p\n id={messageId}\n {...validationMessageRest}\n className={cn(\"flex items-center gap-2 text-sm text-destructive\", validationMessageClassName)}\n >\n {validationIcon ?? <CircleX className=\"size-4\" />}\n <span>{validationMessage}</span>\n </p>\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { InputPrimitive, Input, inputVariants };\n","import React from \"react\";\nimport { X } from \"lucide-react\";\nimport \"@/styles/index.css\";\n\ntype ClearButtonProps = {\n onClick?: () => void;\n title?: string;\n ariaLabel?: string;\n className?: string;\n};\n\nexport const ClearButton: React.FC<ClearButtonProps> = ({\n onClick,\n title = \"Clear\",\n ariaLabel = \"Clear value\",\n className = \"\"\n}) => {\n const triggerClear = () => {\n if (onClick) onClick();\n };\n\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n triggerClear();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.stopPropagation();\n triggerClear();\n }\n };\n\n return (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={`clear-button ${className}`.trim()}\n aria-label={ariaLabel}\n title={title}\n >\n <X className=\"icon\" />\n </span>\n );\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionTextInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"text\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\"\n />\n </FormControl>\n\n <span className=\"absolute inset-y-0 right-3 flex items-center\">\n {field.value && <ClearButton onClick={handleClear} />}\n </span>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionNumberInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n type=\"number\"\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 \"\n />\n </FormControl>\n\n <span className=\"absolute inset-y-0 right-3 flex items-center\">\n {field.value && <ClearButton onClick={handleClear} />}\n </span>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/utils\";\n\nconst buttonVariants = cva(\n \"disabled:bg-[#E1E1E1] disabled:text-[#BBBBBB] inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"bg-sus-primary-1 hover:bg-sus-primary-1/50 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n cancel:\n \"border bg-[#8B8B8B] text-accent-foreground shadow-xs hover:bg-accent hover:text-black dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n defaultSelect: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2\",\n defaultOutline:\n \"border bg-background py-2 shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n warning:\n \"border bg-[#f9d629] text-black shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-[#f9d629] dark:hover:bg-[#f9d629]/50\"\n },\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n active: {\n true: \"bg-sus-primary-1 text-white\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className, active }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"@/utils\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverArrow(props: React.ComponentProps<typeof PopoverPrimitive.Arrow>) {\n return <PopoverPrimitive.Arrow {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n children,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow };\n","\"use client\";\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"@/utils\";\n\ntype ButtonVariant =\n | \"default\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"destructive\"\n | \"secondary\"\n | null\n | undefined;\n\ntype DatePickerProps = {\n selectedDate?: Date;\n onDateSelect?: (date: Date) => void;\n onMonthForward?: () => void;\n onMonthBackward?: () => void;\n callbacks?: {\n yearLabel?: (year: number) => string;\n monthLabel?: (year: number, monthIndex: number) => string; // 0-11\n dayLabel?: (date: Date) => string | number; // สำหรับ custom แสดงเลขวัน\n weekdayLabel?: (index0Mon: number) => string; // 0 = Mon ... 6 = Sun\n };\n variant?: {\n day?: {\n main?: ButtonVariant;\n selected?: ButtonVariant;\n outside?: ButtonVariant; // วันที่นอกเดือน (optional)\n today?: ButtonVariant; // วันนี้ (optional)\n };\n chevrons?: ButtonVariant;\n };\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/** ---------- Utils ---------- */\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\nconst startOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n};\n\nconst clampToDay = (d?: Date) => (d ? startOfDay(d) : undefined);\n\nconst addMonths = (date: Date, n: number) => {\n const d = new Date(date);\n d.setMonth(d.getMonth() + n);\n return d;\n};\n\nconst daysInMonth = (year: number, monthIndex: number) => new Date(year, monthIndex + 1, 0).getDate();\n\nconst DEFAULT_MONTH_FORMATTER = new Intl.DateTimeFormat(\"en-US\", { month: \"short\" });\n\n/** คืน array 6 แถว x 7 คอลัมน์ ของวันที่ (รวมวันนอกเดือนเพื่อเติมตาราง) */\nfunction buildCalendarGrid(displayed: Date, weekStartsOnMonday = true) {\n const year = displayed.getFullYear();\n const month = displayed.getMonth();\n\n const firstOfMonth = new Date(year, month, 1);\n const firstWeekday = firstOfMonth.getDay(); // 0 Sun - 6 Sat\n const offset =\n weekStartsOnMonday ?\n firstWeekday === 0 ?\n 6\n : firstWeekday - 1\n : firstWeekday;\n\n const totalDays = daysInMonth(year, month);\n\n const prevMonth = addMonths(firstOfMonth, -1);\n const prevMonthDays = daysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());\n\n const grid: { date: Date; inCurrentMonth: boolean }[] = [];\n\n // เติมวันของเดือนก่อนหน้า\n for (let i = offset - 1; i >= 0; i--) {\n const d = new Date(prevMonth.getFullYear(), prevMonth.getMonth(), prevMonthDays - i);\n grid.push({ date: d, inCurrentMonth: false });\n }\n // เติมวันของเดือนนี้\n for (let d = 1; d <= totalDays; d++) {\n grid.push({ date: new Date(year, month, d), inCurrentMonth: true });\n }\n // เติมวันของเดือนถัดไปให้ครบ 42 ช่อง\n while (grid.length < 42) {\n const last = grid[grid.length - 1].date;\n const next = new Date(last);\n next.setDate(last.getDate() + 1);\n grid.push({ date: next, inCurrentMonth: false });\n }\n\n // แบ่งเป็น 6 แถว\n const rows: (typeof grid)[] = [];\n for (let r = 0; r < 6; r++) rows.push(grid.slice(r * 7, r * 7 + 7));\n return rows;\n}\n\n/** ---------- Component ---------- */\nexport function DatePicker({\n selectedDate,\n onDateSelect,\n callbacks,\n onMonthBackward,\n onMonthForward,\n variant,\n minDate,\n maxDate,\n disabledDates,\n className,\n ...props\n}: DatePickerProps) {\n const today = React.useMemo(() => startOfDay(new Date()), []);\n const [displayed, setDisplayed] = React.useState<Date>(\n selectedDate ? new Date(selectedDate) : new Date()\n );\n\n // sanitize\n minDate = clampToDay(minDate);\n maxDate = clampToDay(maxDate);\n\n const disabledSet = React.useMemo(() => {\n const s = new Set<string>();\n disabledDates?.forEach((d) => s.add(startOfDay(d).toISOString()));\n return s;\n }, [disabledDates]);\n\n const displayYear = displayed.getFullYear();\n const displayMonth = displayed.getMonth();\n\n const weekdays = React.useMemo(() => {\n // จันทร์-อาทิตย์\n const labels: string[] = [];\n for (let i = 0; i < 7; i++) {\n const idx = i; // 0 Mon ... 6 Sun\n const fallback = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"][idx];\n labels.push(callbacks?.weekdayLabel?.(idx) ?? fallback);\n }\n return labels;\n }, [callbacks]);\n\n const grid = React.useMemo(() => buildCalendarGrid(displayed, true), [displayed]);\n\n const isDateDisabled = (date: Date) => {\n const d = startOfDay(date);\n if (minDate && d < minDate) return true;\n if (maxDate && d > maxDate) return true;\n if (disabledSet.has(d.toISOString())) return true;\n return false;\n };\n\n const minYear = minDate?.getFullYear();\n const maxYear = maxDate?.getFullYear();\n\n const getMonthLabel = React.useCallback(\n (year: number, monthIndex: number) => {\n const label = callbacks?.monthLabel?.(year, monthIndex);\n if (label === null || label === undefined) {\n return DEFAULT_MONTH_FORMATTER.format(new Date(year, monthIndex, 1));\n }\n return label;\n },\n [callbacks]\n );\n\n const getYearLabel = React.useCallback(\n (year: number) => {\n const label = callbacks?.yearLabel?.(year);\n if (label === null || label === undefined) return String(year);\n return typeof label === \"string\" ? label : String(label);\n },\n [callbacks]\n );\n\n const clampMonthToBounds = React.useCallback(\n (year: number, monthIndex: number) => {\n let output = monthIndex;\n if (typeof minYear === \"number\" && year === minYear && minDate) {\n const boundary = minDate.getMonth();\n if (output < boundary) output = boundary;\n }\n if (typeof maxYear === \"number\" && year === maxYear && maxDate) {\n const boundary = maxDate.getMonth();\n if (output > boundary) output = boundary;\n }\n return output;\n },\n [maxDate, minDate, maxYear, minYear]\n );\n\n const yearOptions = React.useMemo(() => {\n const fallbackWindow = 50;\n const start = typeof minYear === \"number\" ? minYear : displayYear - fallbackWindow;\n const end = typeof maxYear === \"number\" ? maxYear : displayYear + fallbackWindow;\n\n const years: number[] = [];\n for (let year = start; year <= end; year++) {\n years.push(year);\n }\n\n if (!years.includes(displayYear)) {\n years.push(displayYear);\n years.sort((a, b) => a - b);\n }\n\n if (selectedDate) {\n const selectedYear = selectedDate.getFullYear();\n if (!years.includes(selectedYear)) {\n years.push(selectedYear);\n years.sort((a, b) => a - b);\n }\n }\n\n return years;\n }, [displayYear, maxYear, minYear, selectedDate]);\n\n const monthOptions = React.useMemo(() => {\n const months = Array.from({ length: 12 }, (_, monthIndex) => {\n const disabled =\n (typeof minYear === \"number\" &&\n displayYear === minYear &&\n minDate &&\n monthIndex < minDate.getMonth()) ||\n (typeof maxYear === \"number\" &&\n displayYear === maxYear &&\n maxDate &&\n monthIndex > maxDate.getMonth());\n\n return {\n value: monthIndex,\n disabled,\n label: getMonthLabel(displayYear, monthIndex)\n };\n });\n\n const currentMonthExists = months.some((option) => option.value === displayMonth);\n if (!currentMonthExists) {\n months.push({\n value: displayMonth,\n disabled: false,\n label: getMonthLabel(displayYear, displayMonth)\n });\n }\n\n return months\n .sort((a, b) => a.value - b.value)\n .filter((option, index, arr) => index === 0 || option.value !== arr[index - 1].value);\n }, [displayMonth, displayYear, getMonthLabel, maxDate, maxYear, minDate, minYear]);\n\n const handleMonthSelect = React.useCallback((nextValue: string) => {\n const nextMonth = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextMonth)) return;\n\n setDisplayed((prev) => {\n const next = new Date(prev);\n next.setDate(1);\n next.setMonth(nextMonth);\n return next;\n });\n }, []);\n\n const handleYearSelect = React.useCallback(\n (nextValue: string) => {\n const nextYear = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextYear)) return;\n\n setDisplayed((prev) => {\n const next = new Date(prev);\n next.setFullYear(nextYear);\n const adjustedMonth = clampMonthToBounds(nextYear, next.getMonth());\n next.setMonth(adjustedMonth);\n next.setDate(1);\n return next;\n });\n },\n [clampMonthToBounds]\n );\n\n return (\n <div className={cn(\"min-w-[260px] w-[300px] p-3\", className)} {...props}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-2\">\n <button\n onClick={() => {\n setDisplayed(addMonths(displayed, -1));\n onMonthBackward?.();\n }}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex h-8 w-8 items-center justify-center p-0\"\n )}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4 opacity-70\" />\n </button>\n\n <Select value={String(displayMonth)} onValueChange={handleMonthSelect}>\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select month\"\n className=\"h-8 min-w-[110px] justify-between rounded-md border border-gray-200 bg-white px-3 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={getMonthLabel(displayYear, displayMonth)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {monthOptions.map((option) => (\n <SelectItem\n className=\"text-center w-full\"\n key={option.value}\n value={String(option.value)}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select value={String(displayYear)} onValueChange={handleYearSelect}>\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select year\"\n className=\"h-8 min-w-[90px] justify-between rounded-md border border-gray-200 bg-white px-3 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={getYearLabel(displayYear)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {yearOptions.map((year) => (\n <SelectItem\n key={year}\n value={String(year)}\n disabled={\n (typeof minYear === \"number\" && year < minYear) ||\n (typeof maxYear === \"number\" && year > maxYear)\n }\n >\n {getYearLabel(year)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <button\n onClick={() => {\n setDisplayed(addMonths(displayed, 1));\n onMonthForward?.();\n }}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex h-8 w-8 items-center justify-center p-0\"\n )}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4 opacity-70\" />\n </button>\n </div>\n\n {/* Weekday header */}\n <div className=\"grid grid-cols-7 text-[11px] text-muted-foreground mb-1\">\n {weekdays.map((w, i) => (\n <div key={i} className=\"text-center py-1\">\n {w}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {grid.map((row, r) =>\n row.map(({ date, inCurrentMonth }, c) => {\n const selected = selectedDate && isSameDay(date, selectedDate);\n const isToday = isSameDay(date, today);\n const disabled = isDateDisabled(date);\n\n // เลือก variant ของปุ่มวัน\n let variantName: ButtonVariant = variant?.day?.main ?? \"ghost\";\n if (!inCurrentMonth) variantName = variant?.day?.outside ?? \"ghost\";\n if (isToday && !selected) variantName = variant?.day?.today ?? variantName;\n if (selected) variantName = variant?.day?.selected ?? \"default\";\n\n const label = callbacks?.dayLabel?.(date) ?? date.getDate();\n\n return (\n <button\n key={`${r}-${c}`}\n onClick={() => !disabled && onDateSelect?.(date)}\n disabled={disabled || !inCurrentMonth}\n className={cn(\n buttonVariants({ variant: variantName }),\n \"h-9 w-full p-0 text-sm font-normal rounded-md transition-all duration-150\",\n \"border border-transparent\",\n !inCurrentMonth && \"opacity-50 pointer-events-none\",\n selected ? \"bg-[#379a2a] text-white\" : (\n \"bg-white text-black hover:border-[#379a2a] hover:bg-green-50 active:bg-green-100\"\n )\n )}\n aria-selected={selected}\n aria-label={date.toDateString()}\n >\n {label}\n </button>\n );\n })\n )}\n </div>\n </div>\n );\n}\n\n/* ===== Example usage =====\n<DatePicker\n selectedDate={value}\n onDateSelect={(d) => setValue(d)}\n minDate={new Date(2020,0,1)}\n maxDate={new Date(2030,11,31)}\n disabledDates={[new Date(2025,0,1)]}\n/>\n*/\n","import React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format, isValid, parseISO } from \"date-fns\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { DatePicker as CalendarDatePicker } from \"@/components/ui/datepicker\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\n\ntype CalendarProps = React.ComponentProps<typeof CalendarDatePicker>;\n\nconst defaultDisplayFormatter = (date: Date) => format(date, \"dd/MM/yyyy\");\nconst defaultValueFormatter = (date: Date) => format(date, \"yyyy-MM-dd\");\nconst defaultValueParser = (value: string) => {\n const parsed = parseISO(value);\n return isValid(parsed) ? parsed : undefined;\n};\n\nexport type DatePickerProps = {\n value?: Date | string | null;\n onChange?: (date?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n allowClear?: boolean;\n displayFormatter?: (date: Date) => string;\n valueFormatter?: (date: Date) => string;\n valueParser?: (value: string) => Date | undefined;\n buttonClassName?: string;\n wrapperClassName?: string;\n invalid?: boolean;\n calendarClassName?: string;\n popoverContentClassName?: string;\n disabled?: boolean;\n closeOnSelect?: boolean;\n clearAriaLabel?: string;\n ariaLabel?: string;\n} & Omit<CalendarProps, \"selectedDate\" | \"onDateSelect\" | \"className\">;\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n onChange,\n onValueChange,\n placeholder = \"DD/MM/YYYY\",\n allowClear = true,\n displayFormatter,\n valueFormatter,\n valueParser,\n buttonClassName,\n wrapperClassName,\n invalid = false,\n calendarClassName,\n popoverContentClassName,\n disabled = false,\n closeOnSelect = true,\n clearAriaLabel = \"Clear date\",\n ariaLabel,\n ...calendarProps\n}) => {\n const [open, setOpen] = React.useState(false);\n\n const parser = React.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);\n const outputFormatter = React.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);\n const labelFormatter = React.useMemo(\n () => displayFormatter ?? defaultDisplayFormatter,\n [displayFormatter]\n );\n\n const parsedValue = React.useMemo(() => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return value;\n const parsed = parser(value);\n return parsed && isValid(parsed) ? parsed : undefined;\n }, [parser, value]);\n\n const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder;\n const buttonAriaLabel =\n ariaLabel ??\n (parsedValue ? `Change date, current selection ${labelFormatter(parsedValue)}` : \"Open date picker\");\n\n const shouldShowClear = allowClear && !disabled && !!parsedValue;\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n onChange?.(next);\n onValueChange?.(next ? outputFormatter(next) : undefined);\n },\n [onChange, onValueChange, outputFormatter]\n );\n\n const handleSelect = React.useCallback(\n (next?: Date) => {\n emitChange(next);\n if (closeOnSelect && next) handleClose();\n },\n [closeOnSelect, emitChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n emitChange(undefined);\n handleClose();\n }, [emitChange, handleClose]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n setOpen(nextOpen);\n },\n [disabled]\n );\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"relative !flex w-full items-center justify-between rounded-md bg-white pl-4 text-left text-sm font-medium shadow-none hover:bg-white focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"min-h-[36px]\",\n !parsedValue ? \"text-gray-400\" : \"text-gray-700\",\n invalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/30\",\n shouldShowClear ? \"pr-8\" : \"pr-4\",\n buttonClassName\n )}\n aria-invalid={invalid || undefined}\n aria-label={buttonAriaLabel}\n >\n <span className=\"flex-1 truncate\">{buttonLabel}</span>\n <span className=\"flex items-center gap-2 text-[#9CA3AF] shrink-0\">\n <CalendarIcon className=\"h-4 w-4\" />\n </span>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <CalendarDatePicker\n {...calendarProps}\n className={calendarClassName}\n selectedDate={parsedValue}\n onDateSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearAriaLabel}\n title={clearAriaLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n </div>\n </div>\n );\n};\n","export const fallbackShortDateFormat = \"DD/MM/YYYY\";\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { DatePicker } from \"@/components/datePicker\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\nimport { fallbackShortDateFormat } from \"../../constants\";\nimport { formatISODate } from \"@/utils\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n shortDateFormat?: string;\n}\n\nexport const ConditionDateInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n shortDateFormat = fallbackShortDateFormat\n}) => {\n const isBetween = row.operator === \"between\";\n\n const buildAriaLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Select end date\";\n if (isBetween) return \"Select start date\";\n return \"Select date\";\n };\n\n const buildClearLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Clear end date\";\n if (isBetween) return \"Clear start date\";\n return \"Clear date\";\n };\n\n const renderPicker = (fieldName: string, which: \"value\" | \"value2\", options?: { isEnd?: boolean }) => (\n <FormField\n control={control}\n name={fieldName}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const handleValueChange = (next?: string) => {\n field.onChange(next ?? undefined);\n if (!next) {\n onClear(which);\n }\n };\n\n return (\n <FormItem className=\"relative w-full min-w-0\">\n <FormControl>\n <DatePicker\n {...field}\n value={field.value || undefined}\n onValueChange={handleValueChange}\n placeholder={shortDateFormat}\n ariaLabel={buildAriaLabel(options?.isEnd)}\n clearAriaLabel={buildClearLabel(options?.isEnd)}\n invalid={Boolean(fieldState.error)}\n displayFormatter={(d) => formatISODate(d, shortDateFormat)}\n wrapperClassName=\"min-w-0\"\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n );\n\n if (isBetween) {\n return (\n <div className=\"grid items-center gap-3 md:grid-cols-[1fr_auto_1fr] max-w-full min-w-0\">\n <div className=\"min-w-0\">{renderPicker(`value_${row.id}`, \"value\")}</div>\n <span className=\"text-center font-bold text-inherit whitespace-nowrap\">To</span>\n <div className=\"min-w-0\">{renderPicker(`value2_${row.id}`, \"value2\", { isEnd: true })}</div>\n </div>\n );\n }\n\n return renderPicker(`value_${row.id}`, \"value\");\n};\n","\"use client\";\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"@/utils\";\n\ntype ButtonVariant =\n | \"default\"\n | \"outline\"\n | \"ghost\"\n | \"link\"\n | \"destructive\"\n | \"secondary\"\n | null\n | undefined;\n\ntype MonthCell = {\n number: number;\n name: string;\n};\n\nconst MONTHS: MonthCell[][] = [\n [\n { number: 0, name: \"Jan\" },\n { number: 1, name: \"Feb\" },\n { number: 2, name: \"Mar\" },\n { number: 3, name: \"Apr\" }\n ],\n [\n { number: 4, name: \"May\" },\n { number: 5, name: \"Jun\" },\n { number: 6, name: \"Jul\" },\n { number: 7, name: \"Aug\" }\n ],\n [\n { number: 8, name: \"Sep\" },\n { number: 9, name: \"Oct\" },\n { number: 10, name: \"Nov\" },\n { number: 11, name: \"Dec\" }\n ]\n];\n\ntype MonthPickerCallbacks = {\n yearLabel?: (year: number) => string;\n monthLabel?: (month: MonthCell) => string;\n};\n\ntype MonthPickerVariant = {\n calendar?: {\n main?: ButtonVariant;\n selected?: ButtonVariant;\n };\n chevrons?: ButtonVariant;\n};\n\nexport type MonthPickerProps = {\n selectedDate?: Date;\n onDateSelect?: (date?: Date) => void;\n onYearForward?: () => void;\n onYearBackward?: () => void;\n callbacks?: MonthPickerCallbacks;\n variant?: MonthPickerVariant;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n} & React.HTMLAttributes<HTMLDivElement>;\n\ntype MonthCalProps = Pick<\n MonthPickerProps,\n | \"selectedDate\"\n | \"onDateSelect\"\n | \"onYearForward\"\n | \"onYearBackward\"\n | \"callbacks\"\n | \"variant\"\n | \"minDate\"\n | \"maxDate\"\n | \"disabledDates\"\n>;\n\nconst normalizeMonth = (input?: Date) => {\n if (!input) return undefined;\n const next = new Date(input);\n next.setDate(1);\n next.setHours(0, 0, 0, 0);\n return next;\n};\n\nfunction MonthPicker({\n selectedDate,\n onDateSelect,\n minDate,\n maxDate,\n disabledDates,\n callbacks,\n onYearBackward,\n onYearForward,\n variant,\n className,\n ...props\n}: MonthPickerProps) {\n return (\n <div className={cn(\"min-w-[200px] w-[280px] p-3\", className)} {...props}>\n <div className=\"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\">\n <div className=\"space-y-4 w-full\">\n <MonthCal\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n callbacks={callbacks}\n onYearBackward={onYearBackward}\n onYearForward={onYearForward}\n variant={variant}\n minDate={minDate}\n maxDate={maxDate}\n disabledDates={disabledDates}\n />\n </div>\n </div>\n </div>\n );\n}\n\nfunction MonthCal({\n selectedDate,\n onDateSelect,\n callbacks,\n variant,\n minDate,\n maxDate,\n disabledDates,\n onYearBackward,\n onYearForward\n}: MonthCalProps) {\n const today = React.useMemo(() => {\n const now = new Date();\n now.setDate(1);\n now.setHours(0, 0, 0, 0);\n return now;\n }, []);\n\n const selectedMonthDate = React.useMemo(() => normalizeMonth(selectedDate), [selectedDate]);\n const min = React.useMemo(() => normalizeMonth(minDate), [minDate]);\n const max = React.useMemo(() => normalizeMonth(maxDate), [maxDate]);\n\n let effectiveMin = min;\n if (min && max && min > max) {\n effectiveMin = max;\n }\n\n const minYear = effectiveMin?.getFullYear();\n const minMonth = effectiveMin?.getMonth();\n const maxYear = max?.getFullYear();\n const maxMonth = max?.getMonth();\n\n const [menuYear, setMenuYear] = React.useState(\n () => selectedMonthDate?.getFullYear() ?? today.getFullYear()\n );\n\n React.useEffect(() => {\n if (selectedMonthDate) {\n const year = selectedMonthDate.getFullYear();\n if (year !== menuYear) {\n setMenuYear(year);\n }\n }\n }, [selectedMonthDate, menuYear]);\n\n React.useEffect(() => {\n if (typeof minYear === \"number\" && menuYear < minYear) {\n setMenuYear(minYear);\n return;\n }\n if (typeof maxYear === \"number\" && menuYear > maxYear) {\n setMenuYear(maxYear);\n }\n }, [minYear, maxYear, menuYear]);\n\n const disablePrevYear = typeof minYear === \"number\" ? menuYear <= minYear : false;\n const disableNextYear = typeof maxYear === \"number\" ? menuYear >= maxYear : false;\n\n const yearOptions = React.useMemo(() => {\n const fallbackWindow = 50;\n const start = typeof minYear === \"number\" ? minYear : menuYear - fallbackWindow;\n const end = typeof maxYear === \"number\" ? maxYear : menuYear + fallbackWindow;\n\n const years: number[] = [];\n for (let year = start; year <= end; year++) {\n years.push(year);\n }\n\n if (!years.includes(menuYear)) {\n years.push(menuYear);\n years.sort((a, b) => a - b);\n }\n\n return years;\n }, [maxYear, menuYear, minYear]);\n\n const formatYearLabel = React.useCallback(\n (year: number) => {\n const raw = callbacks?.yearLabel?.(year);\n if (raw === null || raw === undefined) return String(year);\n return typeof raw === \"string\" ? raw : String(raw);\n },\n [callbacks]\n );\n\n const handleYearSelect = React.useCallback(\n (nextValue: string) => {\n const nextYear = Number.parseInt(nextValue, 10);\n if (Number.isNaN(nextYear)) return;\n if (typeof minYear === \"number\" && nextYear < minYear) return;\n if (typeof maxYear === \"number\" && nextYear > maxYear) return;\n setMenuYear(nextYear);\n },\n [maxYear, minYear]\n );\n\n const disabledPairs = React.useMemo(() => {\n if (!disabledDates?.length) return [] as { year: number; month: number }[];\n const pairs: { year: number; month: number }[] = [];\n disabledDates.forEach((date) => {\n const normalized = normalizeMonth(date);\n if (normalized) {\n pairs.push({\n year: normalized.getFullYear(),\n month: normalized.getMonth()\n });\n }\n });\n return pairs;\n }, [disabledDates]);\n\n return (\n <>\n <div className=\"flex items-center justify-between\">\n <button\n onClick={() => {\n if (disablePrevYear) return;\n setMenuYear((prev) => prev - 1);\n onYearBackward?.();\n }}\n disabled={disablePrevYear}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex items-center justify-center h-7 w-7 p-0\"\n )}\n >\n <ChevronLeft className=\"opacity-50 h-4 w-4\" />\n </button>\n\n <Select\n value={String(menuYear)}\n onValueChange={handleYearSelect}\n disabled={disablePrevYear && disableNextYear}\n >\n <SelectTrigger\n size=\"sm\"\n aria-label=\"Select year\"\n className=\"h-7 w-[100px] justify-center rounded-md border border-gray-200 bg-white px-2 text-sm font-medium text-gray-700 shadow-none focus-visible:ring-0\"\n >\n <SelectValue placeholder={formatYearLabel(menuYear)} />\n </SelectTrigger>\n <SelectContent className=\"max-h-64\">\n {yearOptions.map((year) => (\n <SelectItem\n key={year}\n value={String(year)}\n disabled={\n (typeof minYear === \"number\" && year < minYear) ||\n (typeof maxYear === \"number\" && year > maxYear)\n }\n >\n {formatYearLabel(year)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <button\n onClick={() => {\n if (disableNextYear) return;\n setMenuYear((prev) => prev + 1);\n onYearForward?.();\n }}\n disabled={disableNextYear}\n className={cn(\n buttonVariants({ variant: variant?.chevrons ?? \"outline\" }),\n \"inline-flex items-center justify-center h-7 w-7 p-0\"\n )}\n >\n <ChevronRight className=\"opacity-50 h-4 w-4\" />\n </button>\n </div>\n\n <table className=\"w-full border-collapse space-y-1\">\n <tbody>\n {MONTHS.map((row, rowIndex) => (\n <tr key={\"row-\" + rowIndex} className=\"flex w-full mt-2 gap-2\">\n {row.map((m) => {\n const afterMax =\n maxMonth !== undefined && maxYear !== undefined ?\n menuYear > maxYear || (menuYear === maxYear && m.number > maxMonth)\n : false;\n const beforeMin =\n minMonth !== undefined && minYear !== undefined ?\n menuYear < minYear || (menuYear === minYear && m.number < minMonth)\n : false;\n const disabledByList = disabledPairs.some(\n (d) => d.year === menuYear && d.month === m.number\n );\n\n const isDisabled = afterMax || beforeMin || disabledByList;\n const isSelected =\n !isDisabled &&\n !!selectedMonthDate &&\n selectedMonthDate.getFullYear() === menuYear &&\n selectedMonthDate.getMonth() === m.number;\n\n return (\n <td key={m.number} className=\"h-10 w-1/4 text-center text-sm p-0 relative\">\n <button\n onClick={() => {\n if (isDisabled) return;\n if (\n selectedMonthDate &&\n selectedMonthDate.getFullYear() === menuYear &&\n selectedMonthDate.getMonth() === m.number\n ) {\n onDateSelect?.(undefined);\n } else {\n const next = new Date(menuYear, m.number, 1);\n next.setHours(0, 0, 0, 0);\n onDateSelect?.(next);\n }\n }}\n disabled={isDisabled}\n className={cn(\n buttonVariants({\n variant:\n isSelected ?\n (variant?.calendar?.selected ?? \"default\")\n : (variant?.calendar?.main ?? \"ghost\")\n }),\n \"h-9 w-full p-0 text-sm font-normal rounded-md transition-all duration-150\",\n \"border border-transparent\",\n\n isDisabled && \"opacity-50 pointer-events-none\",\n\n isSelected ?\n \"bg-[#379a2a] text-white hover:bg-[#2f8524] active:bg-[#276f1e]\"\n : \"bg-white text-black hover:border-[#379a2a] hover:bg-green-50 active:bg-green-100\"\n )}\n >\n {callbacks?.monthLabel ? callbacks.monthLabel(m) : m.name}\n </button>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </>\n );\n}\n\nMonthPicker.displayName = \"MonthPicker\";\n\nexport { MonthPicker };\n","import React from \"react\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { format, isValid, parseISO } from \"date-fns\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { MonthPicker as CalendarMonthPicker } from \"@/components/ui/monthpicker\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\n\ntype CalendarProps = React.ComponentProps<typeof CalendarMonthPicker>;\n\nconst normalizeMonth = (input?: Date | null) => {\n if (!input || !isValid(input)) return undefined;\n const normalized = new Date(input);\n normalized.setDate(1);\n normalized.setHours(0, 0, 0, 0);\n return normalized;\n};\n\nconst defaultDisplayFormatter = (month: Date) => format(month, \"MMM yyyy\");\nconst defaultValueFormatter = (month: Date) => format(month, \"yyyy-MM\");\nconst defaultValueParser = (value: string) => normalizeMonth(parseISO(value));\n\nexport type MonthPickerProps = {\n value?: Date | string | null;\n onChange?: (month?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n allowClear?: boolean;\n displayFormatter?: (month: Date) => string;\n valueFormatter?: (month: Date) => string;\n valueParser?: (value: string) => Date | undefined;\n buttonClassName?: string;\n wrapperClassName?: string;\n invalid?: boolean;\n calendarClassName?: string;\n popoverContentClassName?: string;\n disabled?: boolean;\n closeOnSelect?: boolean;\n clearAriaLabel?: string;\n ariaLabel?: string;\n} & Omit<CalendarProps, \"selectedDate\" | \"onDateSelect\" | \"className\">;\n\nexport const MonthPicker: React.FC<MonthPickerProps> = ({\n value,\n onChange,\n onValueChange,\n placeholder = \"MM/YYYY\",\n allowClear = true,\n displayFormatter,\n valueFormatter,\n valueParser,\n buttonClassName,\n wrapperClassName,\n invalid = false,\n calendarClassName,\n popoverContentClassName,\n disabled = false,\n closeOnSelect = true,\n clearAriaLabel = \"Clear month\",\n ariaLabel,\n ...calendarProps\n}) => {\n const [open, setOpen] = React.useState(false);\n\n const parser = React.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);\n const outputFormatter = React.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);\n const labelFormatter = React.useMemo(\n () => displayFormatter ?? defaultDisplayFormatter,\n [displayFormatter]\n );\n\n const parsedValue = React.useMemo(() => {\n if (value === null || value === undefined) return undefined;\n if (value instanceof Date) return normalizeMonth(value);\n if (typeof value === \"string\") {\n const parsed = parser(value);\n return parsed ? normalizeMonth(parsed) : undefined;\n }\n return undefined;\n }, [parser, value]);\n\n const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder;\n const buttonAriaLabel =\n ariaLabel ??\n (parsedValue ?\n `Change month, current selection ${labelFormatter(parsedValue)}`\n : \"Open month picker\");\n\n const shouldShowClear = allowClear && !disabled && !!parsedValue;\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n const normalized = next ? normalizeMonth(next) : undefined;\n onChange?.(normalized);\n onValueChange?.(normalized ? outputFormatter(normalized) : undefined);\n },\n [onChange, onValueChange, outputFormatter]\n );\n\n const handleSelect = React.useCallback(\n (next?: Date) => {\n emitChange(next);\n if (closeOnSelect && next) handleClose();\n },\n [closeOnSelect, emitChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n emitChange(undefined);\n handleClose();\n }, [emitChange, handleClose]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled && nextOpen) return;\n setOpen(nextOpen);\n },\n [disabled]\n );\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"relative !flex w-full items-center justify-between rounded-md bg-white pl-4 text-left text-sm font-medium shadow-none hover:bg-white focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"min-h-[36px]\",\n !parsedValue ? \"text-gray-400\" : \"text-gray-700\",\n invalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/30\",\n shouldShowClear ? \"pr-8\" : \"pr-4\",\n buttonClassName\n )}\n aria-invalid={invalid || undefined}\n aria-label={buttonAriaLabel}\n >\n <span className=\"flex-1 truncate\">{buttonLabel}</span>\n <span className=\"flex items-center gap-2 text-[#9CA3AF] shrink-0\">\n <CalendarIcon className=\"h-4 w-4\" />\n </span>\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n <CalendarMonthPicker\n {...calendarProps}\n className={calendarClassName}\n selectedDate={parsedValue}\n onDateSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearAriaLabel}\n title={clearAriaLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { format } from \"date-fns\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { MonthPicker } from \"@/components/monthPicker\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nconst placeholder = \"MM/YYYY\";\n\nexport const ConditionMonthInput: React.FC<Props> = ({ row, control, onClear }) => {\n const isBetween = row.operator === \"between\";\n\n const buildAriaLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Select end month\";\n if (isBetween) return \"Select start month\";\n return \"Select month\";\n };\n\n const buildClearLabel = (isEnd?: boolean) => {\n if (isEnd) return \"Clear end month\";\n if (isBetween) return \"Clear start month\";\n return \"Clear month\";\n };\n\n const renderPicker = (fieldName: string, which: \"value\" | \"value2\", options?: { isEnd?: boolean }) => (\n <FormField\n control={control}\n name={fieldName}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = field.value || undefined;\n\n const handleValueChange = (next?: string) => {\n field.onChange(next ?? undefined);\n if (!next) {\n onClear(which);\n }\n };\n\n return (\n <FormItem className=\"relative w-full min-w-0\">\n <FormControl>\n <MonthPicker\n {...field}\n value={value}\n onValueChange={handleValueChange}\n placeholder={placeholder}\n ariaLabel={buildAriaLabel(options?.isEnd)}\n clearAriaLabel={buildClearLabel(options?.isEnd)}\n displayFormatter={(month) => format(month, \"MM/yyyy\")}\n invalid={Boolean(fieldState.error)}\n wrapperClassName=\"min-w-0\"\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n );\n\n if (isBetween) {\n return (\n <div className=\"grid items-center gap-3 md:grid-cols-[1fr_auto_1fr] max-w-full min-w-0\">\n <div className=\"min-w-0\">{renderPicker(`value_${row.id}`, \"value\")}</div>\n\n <span className=\"text-center font-bold text-inherit whitespace-nowrap\">To</span>\n\n <div className=\"min-w-0\">{renderPicker(`value2_${row.id}`, \"value2\", { isEnd: true })}</div>\n </div>\n );\n }\n\n return renderPicker(`value_${row.id}`, \"value\");\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\nimport type { RowState, FieldSchema } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n fieldSchema?: FieldSchema;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionDropdownInput: React.FC<Props> = ({ row, control, fieldSchema, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n const hasValue = Boolean(field.value);\n const clearLabel = \"Clear selected value\";\n\n return (\n <FormItem className=\"relative\">\n <Select value={field.value ?? \"\"} onValueChange={field.onChange}>\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\",\n hasValue ? \"pr-8\" : \"pr-4\"\n )}\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"w-full min-w-[unset]\">\n {fieldSchema &&\n \"options\" in fieldSchema &&\n fieldSchema.options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {hasValue && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearLabel}\n title={clearLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { cn } from \"@/utils\";\nimport type { RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionCheckboxInput: React.FC<Props> = ({ row, control, onClear }) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field }) => {\n const handleClear = () => {\n field.onChange(\"\");\n onClear(\"value\");\n };\n\n const hasValue = Boolean(field.value);\n const clearLabel = \"Clear selected value\";\n\n return (\n <FormItem className=\"relative w-full\">\n <Select value={field.value ?? \"\"} onValueChange={field.onChange}>\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full justify-between rounded-md bg-white px-4 text-sm font-medium text-gray-700 shadow-none focus:ring-0\",\n hasValue ? \"pr-8\" : \"pr-4\"\n )}\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"w-full min-w-[unset]\">\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n {hasValue && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={clearLabel}\n title={clearLabel}\n className=\"absolute right-3 top-1/2 z-10 -translate-y-1/2\"\n />\n )}\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Search, X } from \"lucide-react\";\nimport { NotFoundIcon } from \"@/components/icons\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\n\nexport interface LookupSelectOption {\n value: string;\n label: string;\n}\n\nexport interface LookupSelectProps {\n value?: string[];\n onChange: (tags: string[]) => void;\n placeholder?: string;\n onClear?: () => void;\n error?: boolean;\n maxTags?: number;\n fetchSuggestions?: (query: string) => Promise<LookupSelectOption[]>;\n suggestionDebounce?: number;\n noOptionsMessage?: string;\n loadingMessage?: string;\n dropdownPortalId?: string;\n}\n\nexport const LookupSelect: React.FC<LookupSelectProps> = ({\n value = [],\n onChange,\n onClear,\n error,\n placeholder,\n maxTags = 10,\n fetchSuggestions,\n suggestionDebounce = 250,\n noOptionsMessage = \"No records found. Please try a different search.\",\n loadingMessage = \"Loading...\",\n dropdownPortalId\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n const [suggestions, setSuggestions] = useState<LookupSelectOption[]>([]);\n const [optionLabels, setOptionLabels] = useState<Record<string, string>>({});\n const [loading, setLoading] = useState(false);\n const [fetchError, setFetchError] = useState<string | null>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const fetchDelayRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const requestIdRef = useRef(0);\n const [dropdownStyles, setDropdownStyles] = useState<React.CSSProperties>();\n const dropdownContentRef = useRef<HTMLDivElement | null>(null);\n const assignDropdownContentRef = useCallback((node: HTMLDivElement | null) => {\n dropdownContentRef.current = node;\n }, []);\n\n const dropdownPortalElement = useMemo(() => {\n if (typeof document === \"undefined\") return null;\n if (dropdownPortalId) {\n const element = document.getElementById(dropdownPortalId);\n if (element) return element;\n }\n\n return document.body;\n }, [dropdownPortalId]);\n\n const limitReached = value.length >= maxTags;\n\n const upsertOptionLabels = useCallback((options: LookupSelectOption[]) => {\n setOptionLabels((prev) => {\n let next: Record<string, string> | null = null;\n options.forEach((opt) => {\n if (prev[opt.value] === opt.label) return;\n if (!next) {\n next = { ...prev };\n }\n next[opt.value] = opt.label;\n });\n return next ?? prev;\n });\n }, []);\n\n const addTag = useCallback(\n (val: string) => {\n const trimmed = val.trim();\n if (!trimmed) return;\n if (value.includes(trimmed)) return;\n if (value.length >= maxTags) return;\n\n onChange([...value, trimmed]);\n setInputValue(\"\");\n setSuggestions([]);\n setIsDropdownOpen(false);\n },\n [value, onChange, maxTags]\n );\n\n const removeTag = useCallback(\n (index: number) => {\n if (index < 0) return;\n const newTags = value.filter((_, i) => i !== index);\n onChange(newTags);\n },\n [value, onChange]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n }\n if (e.key === \"Backspace\" && !inputValue) {\n removeTag(value.length - 1);\n }\n },\n [inputValue, removeTag, value.length]\n );\n\n const handleClear = useCallback(() => {\n setInputValue(\"\");\n setSuggestions([]);\n setIsDropdownOpen(false);\n setFetchError(null);\n if (onClear) onClear();\n }, [onClear]);\n\n const handleSuggestionSelect = useCallback(\n (option: LookupSelectOption) => {\n upsertOptionLabels([option]);\n addTag(option.value);\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n },\n [addTag, upsertOptionLabels]\n );\n\n const updateDropdownPosition = useCallback(() => {\n if (!dropdownPortalElement || !containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n setDropdownStyles({\n position: \"absolute\",\n top: rect.bottom + window.scrollY + 4,\n left: rect.left + window.scrollX,\n width: rect.width,\n zIndex: 50\n });\n }, [dropdownPortalElement]);\n\n useEffect(() => {\n if (!fetchSuggestions) return;\n\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n\n const query = inputValue.trim();\n\n if (!query) {\n setSuggestions([]);\n setIsDropdownOpen(false);\n setLoading(false);\n setFetchError(null);\n return;\n }\n\n setLoading(true);\n setFetchError(null);\n const requestId = ++requestIdRef.current;\n\n fetchDelayRef.current = setTimeout(() => {\n fetchSuggestions(query)\n .then((items) => {\n if (requestIdRef.current !== requestId) return;\n setSuggestions(items);\n upsertOptionLabels(items);\n setIsDropdownOpen(true);\n })\n .catch((err) => {\n if (requestIdRef.current !== requestId) return;\n console.error(\"Failed to fetch lookup options\", err);\n setSuggestions([]);\n setIsDropdownOpen(false);\n setFetchError(\"Failed to load options\");\n })\n .finally(() => {\n if (requestIdRef.current === requestId) {\n setLoading(false);\n }\n });\n }, suggestionDebounce);\n\n return () => {\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n };\n }, [inputValue, fetchSuggestions, suggestionDebounce, upsertOptionLabels]);\n\n useEffect(() => {\n const handleDocumentClick = (event: MouseEvent) => {\n const target = event.target as Node;\n if (containerRef.current?.contains(target)) return;\n if (dropdownContentRef.current?.contains(target)) return;\n setIsDropdownOpen(false);\n };\n\n document.addEventListener(\"mousedown\", handleDocumentClick);\n return () => {\n document.removeEventListener(\"mousedown\", handleDocumentClick);\n };\n }, []);\n\n useEffect(() => {\n if (!limitReached) return;\n setIsDropdownOpen(false);\n }, [limitReached]);\n\n useEffect(() => {\n if (!dropdownPortalElement) return;\n if (!isDropdownOpen) return;\n\n updateDropdownPosition();\n\n const handleReposition = () => updateDropdownPosition();\n\n window.addEventListener(\"resize\", handleReposition);\n window.addEventListener(\"scroll\", handleReposition, true);\n\n return () => {\n window.removeEventListener(\"resize\", handleReposition);\n window.removeEventListener(\"scroll\", handleReposition, true);\n };\n }, [dropdownPortalElement, isDropdownOpen, updateDropdownPosition]);\n\n const resolvedPlaceholder = placeholder ?? \"Select\";\n const showDropdown = isDropdownOpen && !fetchError;\n\n const dropdownContent = (\n <div className=\"overflow-hidden rounded-md border border-gray-200 bg-white shadow-lg\">\n {loading ?\n <div className=\"px-3 py-2 text-sm text-inherit\">{loadingMessage}</div>\n : suggestions.length === 0 ?\n <div className=\"flex flex-col items-center justify-center px-3 py-4 text-sm text-inherit text-center\">\n <NotFoundIcon className=\"w-full max-w-[80px] h-auto\" />\n <span className=\"pt-3\">{noOptionsMessage}</span>\n </div>\n : <ul className=\"max-h-48 overflow-y-auto py-1\">\n {suggestions.map((option) => {\n const disabled = value.includes(option.value) || limitReached;\n return (\n <li key={option.value}>\n <button\n type=\"button\"\n className={`flex w-full items-center justify-between px-3 py-2 text-left text-sm transition hover:bg-gray-100\n ${disabled ? \"cursor-not-allowed text-gray-400\" : \"text-gray-700\"}`}\n onClick={() => handleSuggestionSelect(option)}\n disabled={disabled}\n >\n <span className=\"truncate\">{option.label}</span>\n </button>\n </li>\n );\n })}\n </ul>\n }\n </div>\n );\n\n const renderDropdown = () => {\n if (!showDropdown) return null;\n\n if (dropdownPortalElement && dropdownStyles) {\n return createPortal(\n <div ref={assignDropdownContentRef} style={dropdownStyles}>\n {dropdownContent}\n </div>,\n dropdownPortalElement\n );\n }\n\n return (\n <div ref={assignDropdownContentRef} className=\"absolute left-0 right-0 top-full z-10 mt-1\">\n {dropdownContent}\n </div>\n );\n };\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <div\n className={`flex min-h-[36px] items-center gap-3 rounded-md border bg-white px-3 transition-all \n ${error ? \"border-red-500 focus-within:ring-red-500\" : \"border-gray-300 \"}`}\n >\n <div className=\"flex flex-1 flex-wrap content-start gap-1 overflow-y-auto max-h-[72px] hide-scrollbar pr-4\">\n {value.map((tag, i) => {\n const label = optionLabels[tag] ?? tag;\n return (\n <span\n key={`${tag}-${i}`}\n className=\"flex items-center gap-1 rounded-lg border border-[#f0f0f0] bg-[#f9f9f9] px-2 py-1 my-1 text-sm text-inherit max-w-full break-words\"\n >\n <span className=\"whitespace-pre-wrap break-all\">{label}</span>\n <button\n type=\"button\"\n onClick={() => removeTag(i)}\n className=\"text-inherit transition hover:text-red-500\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n );\n })}\n {!limitReached && (\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n if (suggestions.length > 0 && !fetchError) {\n setIsDropdownOpen(true);\n }\n }}\n placeholder={(value.length === 0 && resolvedPlaceholder) || \"\"}\n className=\"min-w-[120px] flex-1 border-none bg-transparent py-1 text-sm text-gray-600 placeholder:text-gray-400 outline-none\"\n disabled={limitReached}\n />\n )}\n </div>\n\n <div className=\"flex justify-end items-center gap-2 pointer-events-auto h-fit\">\n {value.length === 0 ?\n <span className=\"flex h-7 w-7 items-center justify-center text-inherit\">\n <Search className=\"h-4 w-4\" />\n </span>\n : <ClearButton\n onClick={handleClear}\n className=\"flex h-7 w-7 items-center justify-center rounded-full text-inherit transition hover:text-red-500\"\n aria-label=\"Clear selected values\"\n />\n }\n </div>\n </div>\n\n {renderDropdown()}\n\n {fetchError && <p className=\"mt-1 text-xs text-red-600\">{fetchError}</p>}\n {limitReached && !fetchError && maxTags !== 1 && (\n <p className=\"mt-1 text-xs text-inherit\">Maximum {maxTags} tags reached.</p>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { LookupSelect } from \"@/components/lookupSelect\";\nimport type { LookupFieldSchema, RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n fieldSchema?: LookupFieldSchema;\n dropdownPortalId?: string;\n}\n\nexport const ConditionLookupInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n fieldSchema,\n dropdownPortalId\n}) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (tags: string[]) => {\n field.onChange(tags);\n };\n\n const handleClear = () => {\n field.onChange([]);\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative w-full overflow-x-hidden\">\n <FormControl>\n <LookupSelect\n value={value}\n onChange={handleChange}\n onClear={handleClear}\n error={Boolean(fieldState.error)}\n placeholder={fieldSchema?.placeholder}\n maxTags={fieldSchema?.maxTags}\n fetchSuggestions={fieldSchema?.fetchSuggestions}\n suggestionDebounce={fieldSchema?.suggestionDebounce}\n noOptionsMessage={fieldSchema?.noOptionsMessage}\n loadingMessage={fieldSchema?.loadingMessage}\n dropdownPortalId={dropdownPortalId}\n />\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { LookupSelect } from \"@/components/lookupSelect\";\nimport type { JSONFieldSchema, RowState } from \"@/components/advanceSearch/types\";\nimport { Input } from \"@/components/input\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n fieldSchema?: JSONFieldSchema;\n dropdownPortalId?: string;\n}\n\nexport const ConditionJSONInput: React.FC<Props> = ({\n row,\n control,\n onClear,\n fieldSchema,\n dropdownPortalId\n}) => (\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => {\n const value = Array.isArray(field.value) ? field.value : [];\n\n const handleChange = (tags: string[]) => {\n field.onChange(tags);\n };\n\n const handleClear = () => {\n field.onChange([]);\n onClear(\"value\");\n };\n\n return (\n <FormItem className=\"relative w-full overflow-x-hidden\">\n <FormControl>\n {fieldSchema?.fetchSuggestions ?\n <LookupSelect\n value={value}\n onChange={handleChange}\n onClear={handleClear}\n error={Boolean(fieldState.error)}\n placeholder={fieldSchema?.placeholder}\n maxTags={row.operator === \"containsAny\" ? fieldSchema?.maxTags : 1}\n fetchSuggestions={fieldSchema?.fetchSuggestions}\n suggestionDebounce={fieldSchema?.suggestionDebounce}\n noOptionsMessage={fieldSchema?.noOptionsMessage}\n loadingMessage={fieldSchema?.loadingMessage}\n dropdownPortalId={dropdownPortalId}\n />\n : <Input\n {...field}\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"text\"\n className=\"w-full h-9 rounded-md bg-white pr-8 text-sm text-gray-700 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\"\n />\n }\n </FormControl>\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\n }}\n />\n);\n","import React from \"react\";\nimport type {\n FieldSchema,\n JSONFieldSchema,\n LookupFieldSchema,\n RowState\n} from \"@/components/advanceSearch/types\";\nimport { useFormContext } from \"react-hook-form\";\nimport { ConditionTextInput } from \"./types/ConditionTextInput\";\nimport { ConditionNumberInput } from \"./types/ConditionNumberInput\";\nimport { ConditionDateInput } from \"./types/ConditionDateInput\";\nimport { ConditionMonthInput } from \"./types/ConditionMonthInput\";\nimport { ConditionDropdownInput } from \"./types/ConditionDropdownInput\";\nimport { ConditionCheckboxInput } from \"./types/ConditionCheckboxInput\";\nimport { ConditionLookupInput } from \"./types/ConditionLookupInput\";\nimport { ConditionJSONInput } from \"./types/ConditionJSONInput\";\n\ntype Props = {\n row: RowState;\n fields: FieldSchema[];\n onClearValue: (which: \"value\" | \"value2\") => void;\n dropdownPortalId?: string;\n shortDateFormat?: string;\n};\n\nexport const ConditionValue: React.FC<Props> = ({\n row,\n fields,\n onClearValue,\n dropdownPortalId,\n shortDateFormat\n}) => {\n const { control } = useFormContext();\n const fieldSchema = fields.find((f) => f.name === row.fieldName);\n const fieldType = fieldSchema?.type ?? \"text\";\n\n switch (fieldType) {\n case \"number\":\n return <ConditionNumberInput row={row} control={control} onClear={onClearValue} />;\n case \"date\":\n case \"datetime\":\n return (\n <ConditionDateInput\n row={row}\n control={control}\n onClear={onClearValue}\n shortDateFormat={shortDateFormat}\n />\n );\n case \"datemonth\":\n return <ConditionMonthInput row={row} control={control} onClear={onClearValue} />;\n case \"dropdown\":\n return (\n <ConditionDropdownInput\n row={row}\n control={control}\n fieldSchema={fieldSchema}\n onClear={onClearValue}\n />\n );\n case \"checkbox\":\n return <ConditionCheckboxInput row={row} control={control} onClear={onClearValue} />;\n case \"lookup\":\n return (\n <ConditionLookupInput\n row={row}\n control={control}\n onClear={onClearValue}\n fieldSchema={fieldSchema as LookupFieldSchema}\n dropdownPortalId={dropdownPortalId}\n />\n );\n case \"json\": {\n return (\n <ConditionJSONInput\n row={row}\n control={control}\n onClear={onClearValue}\n fieldSchema={fieldSchema as JSONFieldSchema}\n dropdownPortalId={dropdownPortalId}\n />\n );\n }\n default:\n return <ConditionTextInput row={row} control={control} onClear={onClearValue} />;\n }\n};\n","// AddRemoveButtons.tsx\nimport React from \"react\";\nimport { Plus, Minus } from \"lucide-react\";\nimport { Button } from \"@/components/button\";\n\nexport const AddRemoveButtons: React.FC<{\n isFirst: boolean;\n onAdd: () => void;\n onRemove: () => void;\n disableAdd?: boolean;\n}> = ({ isFirst, onAdd, onRemove, disableAdd }) => (\n <div className=\"flex items-center justify-end gap-2\">\n {isFirst ?\n <Button\n type=\"button\"\n size=\"icon-sm\"\n onClick={onAdd}\n disabled={disableAdd}\n className={`circle-btn border transition-colors ${\n disableAdd ?\n \"cursor-not-allowed border-[#5a5a5a] bg-[#5a5a5a] text-[#e1e1e1]\"\n : \"border-[#379a2a] bg-[#379a2a] text-white\"\n }`}\n aria-label=\"Add row\"\n title={disableAdd ? \"Cannot add more rows\" : \"Add condition\"}\n >\n <Plus className=\"h-3 w-3 stroke-[2]\" />\n </Button>\n : <Button\n type=\"button\"\n size=\"icon-sm\"\n onClick={onRemove}\n className=\"circle-btn border border-[#379a2a] bg-white text-[#379a2a]\"\n aria-label=\"Remove row\"\n title=\"Remove condition\"\n >\n <Minus className=\"h-3 w-3 stroke-[2]\" />\n </Button>\n }\n </div>\n);\n","import React from \"react\";\nimport type { FieldSchema, OperatorValue, RowState, Option } from \"../../types\";\nimport { FieldSelect } from \"./FieldSelect\";\nimport { OperatorSelect } from \"./OperatorSelect\";\nimport { ConditionValue } from \"./ConditionValue\";\nimport { AddRemoveButtons } from \"./AddRemoveButtons\";\n\ninterface Props {\n row: RowState;\n isFirst: boolean;\n fields: FieldSchema[];\n fieldOptions: Option[];\n operators: OperatorValue[];\n operatorError?: string;\n onChangeField: (fieldName: string) => void;\n onChangeOperator: (op: OperatorValue) => void;\n onAdd: () => void;\n onRemove: () => void;\n onClearValue: (which: \"value\" | \"value2\") => void;\n disableAdd?: boolean;\n dropdownPortalId?: string;\n shortDateFormat?: string;\n}\n\nexport const AdvanceSearchRow: React.FC<Props> = ({\n row,\n isFirst,\n fields,\n fieldOptions,\n operators,\n operatorError,\n onChangeField,\n onChangeOperator,\n onAdd,\n onRemove,\n onClearValue,\n disableAdd,\n dropdownPortalId,\n shortDateFormat\n}) => {\n return (\n <div className=\"grid gap-3 rounded-lg bg-white md:grid-cols-[minmax(150px,0.85fr)_minmax(140px,0.75fr)_minmax(260px,1fr)_auto] md:items-start\">\n <FieldSelect row={row} fieldOptions={fieldOptions} onChangeField={onChangeField} />\n\n <OperatorSelect\n row={row}\n operators={operators}\n onChangeOperator={onChangeOperator}\n error={operatorError}\n />\n\n <ConditionValue\n row={row}\n fields={fields}\n onClearValue={onClearValue}\n dropdownPortalId={dropdownPortalId}\n shortDateFormat={shortDateFormat}\n />\n\n <div className=\"flex h-full\">\n <AddRemoveButtons isFirst={isFirst} onAdd={onAdd} onRemove={onRemove} disableAdd={disableAdd} />\n </div>\n </div>\n );\n};\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class CheckboxBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"is\":\n return { [row.fieldName]: row.value };\n case \"isNot\":\n return { [row.fieldName]: { not: row.value } };\n default:\n return {};\n }\n }\n}\n","export const helper = (\n prismaFilter: object,\n options?: { multiTableSearch?: boolean; insensitive?: boolean }\n) => {\n return options?.multiTableSearch ?\n {\n some: {\n value: { ...prismaFilter, ...(options?.insensitive ? { mode: \"insensitive\" } : undefined) }\n }\n }\n : { ...prismaFilter, ...(options?.insensitive ? { mode: \"insensitive\" } : undefined) };\n};\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst normalizeBetween = (startValue?: string, endValue?: string) => {\n if (!startValue || !endValue) return undefined;\n const start = new Date(startValue);\n const end = new Date(endValue);\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) return undefined;\n const [minRaw, maxRaw] = start <= end ? [start, end] : [end, start];\n const min = new Date(minRaw);\n min.setHours(0, 0, 0, 0);\n const max = new Date(maxRaw);\n max.setHours(23, 59, 59, 999);\n return { min, max };\n};\n\nexport class DatetimeBuilder implements ParamsBuilder {\n build(row: RowState): object {\n try {\n const baseDate = new Date(row.value);\n if (Number.isNaN(baseDate.getTime())) return {};\n\n const dayStart = new Date(baseDate);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(baseDate);\n dayEnd.setHours(23, 59, 59, 999);\n\n switch (row.operator) {\n case \"on\":\n return {\n [row.fieldName]: helper(\n { gte: dayStart.toISOString(), lt: dayEnd.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"after\":\n return {\n [row.fieldName]: helper(\n { gte: dayStart.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"before\":\n return {\n [row.fieldName]: helper(\n { lt: dayStart.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n case \"between\": {\n const normalized = normalizeBetween(row.value, row.value2);\n if (!normalized) return {};\n return {\n [row.fieldName]: helper(\n { gte: normalized.min.toISOString(), lt: normalized.max.toISOString() },\n { multiTableSearch: row.multiTableSearch }\n )\n };\n }\n default:\n return {};\n }\n } catch {\n return {};\n }\n }\n}\n","import { parse, isValid, format, compareAsc } from \"date-fns\";\nimport type { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst parseMonth = (value?: string) => {\n if (!value) return undefined;\n const parsed = parse(value, \"yyyy-MM\", new Date());\n if (!isValid(parsed)) return undefined;\n parsed.setDate(1);\n parsed.setHours(0, 0, 0, 0);\n return parsed;\n};\n\nconst toMonthToken = (date: Date) => format(date, \"yyyy-MM\");\n\nexport class DateMonthBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const month = parseMonth(row.value);\n const sharedOptions = { multiTableSearch: row.multiTableSearch } as const;\n\n switch (row.operator) {\n case \"on\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ equals: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"after\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ gt: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"before\": {\n if (!month) return {};\n return {\n [row.fieldName]: helper({ lt: toMonthToken(month) }, sharedOptions)\n };\n }\n case \"between\": {\n const endMonth = parseMonth(row.value2);\n if (!month || !endMonth) return {};\n const [min, max] = compareAsc(month, endMonth) <= 0 ? [month, endMonth] : [endMonth, month];\n return {\n [row.fieldName]: helper({ gte: toMonthToken(min), lte: toMonthToken(max) }, sharedOptions)\n };\n }\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class DropdownBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"is\":\n return { [row.fieldName]: row.value };\n case \"isNot\":\n return { [row.fieldName]: { not: row.value } };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class JSONBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const isArray = Array.isArray(row.value);\n switch (row.operator) {\n case \"equals\":\n return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };\n\n case \"notEquals\":\n return {\n NOT: { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } }\n };\n case \"containsAny\":\n if (!isArray)\n return { [row.fieldName]: { path: row.jsonPath, equals: isArray ? row.value[0] : row.value } };\n return {\n OR: (row.value as any[]).map((v) => ({ [row.fieldName]: { path: row.jsonPath, equals: v } }))\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\n\nexport class LookupBuilder implements ParamsBuilder {\n build(row: RowState): object {\n if (!Array.isArray(row.value)) {\n return {};\n }\n const lookupField = row.lookupFieldName ?? \"id\";\n switch (row.operator) {\n case \"containsAny\":\n return {\n OR: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }))\n };\n case \"containsOnly\":\n return {\n AND: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }))\n };\n case \"containsAll\": {\n const includes = row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } }));\n const excludes = { [row.fieldName]: { none: { [lookupField]: { notIn: row.value } } } };\n return {\n AND: [...includes, excludes]\n };\n }\n case \"notContains\":\n return {\n NOT: { OR: row.value.map((v) => ({ [row.fieldName]: { some: { [lookupField]: v } } })) }\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nexport class NumberBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const value = Number(row.value);\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nexport class TextBuilder implements ParamsBuilder {\n build(row: RowState): object {\n switch (row.operator) {\n case \"contains\":\n return {\n [row.fieldName]: helper(\n { contains: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"beginsWith\":\n return {\n [row.fieldName]: helper(\n { startsWith: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"endsWith\":\n return {\n [row.fieldName]: helper(\n { endsWith: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: row.value },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notBeginsWith\":\n return {\n [row.fieldName]: helper(\n { not: { startsWith: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notEndsWith\":\n return {\n [row.fieldName]: helper(\n { not: { endsWith: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n case \"notContains\":\n return {\n [row.fieldName]: helper(\n { not: { contains: row.value } },\n {\n multiTableSearch: row.multiTableSearch,\n insensitive: true\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { ParamsBuilder, RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nconst regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport class UUIDBuilder implements ParamsBuilder {\n build(row: RowState): object {\n if (!regex.test(row.value)) {\n return { [row.fieldName]: {} };\n }\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: row.value }, { multiTableSearch: row.multiTableSearch })\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n case \"notEquals\":\n return {\n [row.fieldName]: helper(\n { not: row.value },\n {\n multiTableSearch: row.multiTableSearch\n }\n )\n };\n default:\n return {};\n }\n }\n}\n","import { FieldType, ParamsBuilder } from \"../types\";\nimport { CheckboxBuilder } from \"./checkbox\";\nimport { DatetimeBuilder } from \"./datetime\";\nimport { DateMonthBuilder } from \"./datemonth\";\nimport { DropdownBuilder } from \"./dropdown\";\nimport { JSONBuilder } from \"./json\";\nimport { LookupBuilder } from \"./lookup\";\nimport { NumberBuilder } from \"./number\";\nimport { TextBuilder } from \"./text\";\nimport { UUIDBuilder } from \"./uuid\";\n\nexport function getBuilder(fieldType: FieldType): ParamsBuilder {\n switch (fieldType) {\n case \"text\":\n return new TextBuilder();\n case \"number\":\n return new NumberBuilder();\n case \"date\":\n return new DatetimeBuilder();\n case \"datetime\":\n return new DatetimeBuilder();\n case \"datemonth\":\n return new DateMonthBuilder();\n case \"checkbox\":\n return new CheckboxBuilder();\n case \"dropdown\":\n return new DropdownBuilder();\n case \"lookup\":\n return new LookupBuilder();\n case \"uuid\":\n return new UUIDBuilder();\n case \"json\":\n return new JSONBuilder();\n }\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { isAfter, isValid, parseISO } from \"date-fns\";\nimport { Search } from \"lucide-react\";\nimport ExpandCollapse from \"./conditions/ExpandCollapse\";\nimport { useAdvanceSearch } from \"../hooks/useAdvanceSearch\";\nimport type { AdvanceSearchProps } from \"../types\";\nimport { AdvanceSearchRow } from \"./conditions/AdvanceSearchRow\";\nimport { Label } from \"@/components/ui/label\";\nimport { Button } from \"@/components/button\";\nimport { useForm } from \"react-hook-form\";\nimport { Form } from \"@/components/ui/form\";\nimport { getBuilder } from \"../builder\";\n\nconst AdvanceSearch: React.FC<AdvanceSearchProps> = ({\n fields,\n portalId,\n iconColor = \"#ffffff\",\n limitRows = 4,\n onSearch,\n onClear,\n shortDateFormat\n}) => {\n const fieldsData = useMemo(() => {\n if (fields.length === 0) throw new Error(\"fields cannot be an empty array\");\n return fields || [];\n }, [fields]);\n\n const {\n rows,\n addRow,\n removeRow,\n clearAllRow,\n changeField,\n changeOperator,\n operatorsForField,\n fieldOptions\n } = useAdvanceSearch({ fields: fieldsData, limitRows });\n\n const form = useForm<{ [key: string]: string | undefined }>({\n mode: \"onSubmit\",\n reValidateMode: \"onSubmit\",\n defaultValues: {}\n });\n\n const { handleSubmit, unregister, resetField, getValues, clearErrors, setError } = form;\n\n const [operatorErrors, setOperatorErrors] = React.useState<Record<string, string>>({});\n const clearOperatorError = useCallback(\n (rowId: string) => {\n setOperatorErrors((prev) => {\n if (!(rowId in prev)) return prev;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [rowId]: _removed, ...rest } = prev;\n return rest;\n });\n },\n [setOperatorErrors]\n );\n\n const clearValue = useCallback(\n (rowId: string, which: \"value\" | \"value2\") => {\n const fieldName = `${which}_${rowId}` as `value_${string}` | `value2_${string}`;\n resetField(fieldName, { defaultValue: undefined });\n clearErrors(fieldName);\n\n const counterpart =\n which === \"value\" ?\n (`value2_${rowId}` as `value2_${string}`)\n : (`value_${rowId}` as `value_${string}`);\n clearErrors(counterpart);\n },\n [resetField, clearErrors]\n );\n\n const parseRangeValue = useCallback((raw: string, fieldType: string) => {\n if (!raw) return undefined;\n const normalized = fieldType === \"datemonth\" ? `${raw}-01` : raw;\n const parsed = parseISO(normalized);\n return isValid(parsed) ? parsed : undefined;\n }, []);\n\n const onSubmit = useCallback(() => {\n const operatorValidation: Record<string, string> = {};\n\n rows.forEach((r) => {\n const availableOperators = operatorsForField(r.fieldName);\n if (!availableOperators.length || !availableOperators.includes(r.operator)) {\n operatorValidation[r.id] = \"Please select an operator.\";\n }\n });\n\n setOperatorErrors(operatorValidation);\n if (Object.keys(operatorValidation).length > 0) {\n return;\n }\n\n const currentValues = getValues();\n let hasRangeError = false;\n\n const rawRows = rows.map((r) => {\n const startFieldName = `value_${r.id}` as `value_${string}`;\n const startValue = currentValues[startFieldName] ?? \"\";\n\n if (r.operator === \"between\") {\n const endFieldName = `value2_${r.id}` as `value2_${string}`;\n const endValue = currentValues[endFieldName] ?? \"\";\n\n if (startValue && endValue) {\n const startDate = parseRangeValue(startValue, r.fieldType);\n const endDate = parseRangeValue(endValue, r.fieldType);\n\n if (startDate && endDate && isAfter(startDate, endDate)) {\n hasRangeError = true;\n setError(startFieldName, {\n type: \"validate\",\n message: \"Start value must be before end value.\"\n });\n setError(endFieldName, {\n type: \"validate\",\n message: \"End value must be after start value.\"\n });\n } else {\n clearErrors([startFieldName, endFieldName]);\n }\n }\n\n return {\n ...r,\n value: startValue ?? \"\",\n value2: endValue ?? \"\"\n };\n }\n\n return {\n ...r,\n value: startValue ?? \"\"\n };\n });\n\n if (hasRangeError) {\n return;\n }\n\n const param = {\n AND: rawRows\n .map((r) => {\n const builder = getBuilder(r.fieldType);\n return builder.build(r);\n })\n .filter(Boolean) as Record<string, unknown>[]\n };\n\n if (onSearch) {\n onSearch(param);\n }\n }, [\n clearErrors,\n getValues,\n onSearch,\n operatorsForField,\n parseRangeValue,\n rows,\n setError,\n setOperatorErrors\n ]);\n\n return (\n <ExpandCollapse\n title={<Search className=\"w-5 h-5\" style={{ color: iconColor }} />}\n portalId={portalId}\n >\n <Form {...form}>\n <form onSubmit={handleSubmit(onSubmit)} className=\"flex justify-center w-full\">\n <div className=\"w-full max-w-4xl rounded-xl bg-white\">\n <div className=\"flex items-center justify-between\">\n <Label className=\"text-sm font-semibold text-gray-700\">Select Field</Label>\n </div>\n <div className=\"space-y-6\">\n {rows.map((row, idx) => (\n <AdvanceSearchRow\n key={row.id}\n row={row}\n shortDateFormat={shortDateFormat}\n isFirst={idx === 0}\n fields={fieldsData}\n fieldOptions={fieldOptions}\n operators={operatorsForField(row.fieldName)}\n operatorError={operatorErrors[row.id]}\n onChangeField={(f) => {\n changeField(row.id, f);\n clearOperatorError(row.id);\n clearValue(row.id, \"value\");\n clearValue(row.id, \"value2\");\n }}\n onChangeOperator={(op) => {\n changeOperator(row.id, op);\n clearOperatorError(row.id);\n clearValue(row.id, \"value\");\n clearValue(row.id, \"value2\");\n }}\n onAdd={addRow}\n onRemove={() => {\n clearOperatorError(row.id);\n removeRow(row.id);\n unregister(`value_${row.id}`);\n unregister(`value2_${row.id}`);\n }}\n onClearValue={(which) => {\n clearValue(row.id, which);\n }}\n disableAdd={limitRows !== undefined && rows.length >= limitRows}\n />\n ))}\n </div>\n <div className=\"mt-6 flex flex-col-reverse gap-3 pt-4 md:flex-row md:justify-end\">\n <Button\n type=\"button\"\n className=\"w-full bg-[#8b8b8b] text-white md:w-auto md:min-w-[120px]\"\n onClick={() => {\n clearAllRow();\n setOperatorErrors({});\n Object.keys(getValues()).forEach((k) => resetField(k));\n if (onClear) onClear();\n }}\n >\n Clear Search\n </Button>\n <Button\n type=\"submit\"\n className=\"w-full bg-[#379a2a] text-white hover:bg-[#2f7c21] md:w-auto md:min-w-[120px]\"\n >\n Search\n </Button>\n </div>\n </div>\n </form>\n </Form>\n </ExpandCollapse>\n );\n};\n\nexport default AdvanceSearch;\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return <CollapsiblePrimitive.CollapsibleTrigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return <CollapsiblePrimitive.CollapsibleContent data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import { reSplitAlphaNumeric } from \"@tanstack/react-table\";\n\nexport function compareAlphanumeric(aStr: string, bStr: string) {\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n while (a.length && b.length) {\n const aa = a.shift()!;\n const bb = b.shift()!;\n\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n\n const combo = [an, bn].sort();\n\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1;\n }\n\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n\n return a.length - b.length;\n}\n","export function booleanToSelectValue(\n value: boolean | undefined,\n options?: {\n fallbackUndefinedValue?: string;\n }\n): string {\n if (value === true) return \"true\";\n if (value === false) return \"false\";\n return options?.fallbackUndefinedValue ?? \"\";\n}\n\nexport function selectValueToBoolean(value: string): boolean | undefined {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return undefined;\n}\n","import React, { useCallback, useRef, useState } from \"react\";\n\nexport type UseHoverResult = {\n ref: React.RefCallback<HTMLElement>;\n hovering: boolean;\n};\n\nconst useHover = (): UseHoverResult => {\n const [hovering, setHovering] = useState<boolean>(false);\n const prevRef = useRef<HTMLElement>(null);\n\n const onMouseEnter = useCallback(() => setHovering(true), []);\n const onMouseLeave = useCallback(() => setHovering(false), []);\n\n const nodeRefCallback = useCallback<UseHoverResult[\"ref\"]>(\n (node) => {\n if (prevRef.current) {\n prevRef.current.removeEventListener(\"mouseenter\", onMouseEnter);\n prevRef.current.removeEventListener(\"mouseleave\", onMouseLeave);\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", onMouseEnter);\n node.addEventListener(\"mouseleave\", onMouseLeave);\n }\n\n prevRef.current = node;\n },\n [onMouseEnter, onMouseLeave]\n );\n\n return {\n ref: nodeRefCallback,\n hovering\n };\n};\n\nexport default useHover;\n","import { useEffect, useRef, useState } from \"react\";\n\ntype State = {\n isIntersecting: boolean;\n entry?: IntersectionObserverEntry;\n};\n\ntype UseIntersectionObserverOptions = {\n root?: Element | Document | null;\n rootMargin?: string;\n threshold?: number | number[];\n freezeOnceVisible?: boolean;\n onChange?: (isIntersecting: boolean, entry: IntersectionObserverEntry) => void;\n initialIsIntersecting?: boolean;\n};\n\ntype IntersectionReturn = [\n (node?: Element | null) => void,\n boolean,\n IntersectionObserverEntry | undefined\n] & {\n ref: (node?: Element | null) => void;\n isIntersecting: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nconst useIntersectionObserver = ({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n}: UseIntersectionObserverOptions = {}): IntersectionReturn => {\n const [ref, setRef] = useState<Element | null>(null);\n\n const [state, setState] = useState<State>(() => ({\n isIntersecting: initialIsIntersecting,\n entry: undefined\n }));\n\n const callbackRef = useRef<UseIntersectionObserverOptions[\"onChange\"]>(null);\n\n callbackRef.current = onChange;\n\n const frozen = state.entry?.isIntersecting && freezeOnceVisible;\n\n useEffect(() => {\n // Ensure we have a ref to observe\n if (!ref) return;\n\n // Ensure the browser supports the Intersection Observer API\n if (!(\"IntersectionObserver\" in window)) return;\n\n // Skip if frozen\n if (frozen) return;\n\n let unobserve: (() => void) | undefined;\n\n const observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const thresholds =\n Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n\n entries.forEach((entry) => {\n const isIntersecting =\n entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n setState({ isIntersecting, entry });\n\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = undefined;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(ref);\n\n return () => {\n observer.disconnect();\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n\n const prevRef = useRef<Element | null>(null);\n\n useEffect(() => {\n if (\n !ref &&\n state.entry?.target &&\n !freezeOnceVisible &&\n !frozen &&\n prevRef.current !== state.entry.target\n ) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: undefined });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n\n const result = [setRef, !!state.isIntersecting, state.entry] as IntersectionReturn;\n\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n\n return result;\n};\n\nexport default useIntersectionObserver;\n","import { useEffect, useState } from \"react\";\n\nexport type UseMediaQueryOptions = {\n query: string;\n};\n\nexport type UseMediaQueryResult = boolean;\n\nconst isValidMediaQueryString = (query: string): boolean => {\n return query !== \"not all\";\n};\n\nconst useMediaQuery = ({ query }: UseMediaQueryOptions): UseMediaQueryResult => {\n const [matches, setMatches] = useState<boolean>(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const mql = window.matchMedia(query);\n\n if (!isValidMediaQueryString(mql.media)) {\n throw new Error(`${query}: invalid media query string.`);\n }\n\n const detectMediaChange = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n setMatches(mql.matches);\n\n mql.addEventListener(\"change\", detectMediaChange);\n return () => {\n mql.removeEventListener(\"change\", detectMediaChange);\n };\n }, [query]);\n\n return matches;\n};\n\nexport default useMediaQuery;\n","import { useMediaQuery } from \"../useMediaQuery\";\n\nexport type UseScreenSizeResult = {\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n};\n\nexport type Breakpoints = {\n mobile?: string;\n tablet?: string;\n desktop?: string;\n};\n\nconst useScreenSize = (breakpoints?: Breakpoints): UseScreenSizeResult => {\n const isMobile = useMediaQuery({ query: breakpoints?.mobile ?? \"(max-width: 767px)\" });\n const isTablet = useMediaQuery({\n query: breakpoints?.tablet ?? \"(min-width: 768px) and (max-width: 1023px)\"\n });\n const isDesktop = useMediaQuery({ query: breakpoints?.desktop ?? \"(min-width: 1024px)\" });\n\n return { isMobile, isTablet, isDesktop };\n};\n\nexport default useScreenSize;\n","import { useEffect, useState } from \"react\";\nimport { debounce } from \"../../utils\";\n\nexport type UseTruncatedOptions<T> = {\n elementRef: React.RefObject<T | null>;\n onChange?: (isTruncated: boolean) => void;\n resizeDetectDelay?: number;\n};\n\nexport type UseTruncatedResult = boolean;\n\nconst useTruncated = <T extends HTMLElement = any>({\n elementRef,\n onChange,\n resizeDetectDelay = 150\n}: UseTruncatedOptions<T>): UseTruncatedResult => {\n const [isTruncated, setIsTruncated] = useState(false);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n const checkTruncate = debounce(() => {\n const truncated = element.scrollWidth > element.clientWidth;\n setIsTruncated((prev) => {\n if (prev !== truncated) {\n onChange?.(truncated);\n }\n return truncated;\n });\n }, resizeDetectDelay);\n\n checkTruncate();\n\n const observer = new ResizeObserver(checkTruncate);\n observer.observe(element);\n window.addEventListener(\"resize\", checkTruncate);\n return () => {\n observer.disconnect();\n window.removeEventListener(\"resize\", checkTruncate);\n };\n }, [elementRef, onChange, resizeDetectDelay]);\n\n return isTruncated;\n};\n\nexport default useTruncated;\n","import type { HeaderContext } from \"@tanstack/react-table\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { useHover } from \"../../../hooks\";\nimport { cn } from \"../../../utils\";\n\nexport type SorterProps = {\n show?: boolean;\n};\n\nexport type HeaderCellProps<TData = any, TValue = any> = {\n label: React.ReactNode;\n context: HeaderContext<TData, TValue>;\n rootClassName?: string;\n labelClassName?: string;\n sorterProps?: SorterProps;\n align?: \"left\" | \"center\" | \"right\";\n};\n\nconst HeaderCell = ({\n rootClassName,\n labelClassName,\n context,\n label,\n sorterProps,\n align = \"left\"\n}: HeaderCellProps) => {\n const { ref, hovering } = useHover();\n\n const showSorter = sorterProps?.show ?? context.column.getCanSort();\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between gap-2\",\n {\n \"cursor-pointer\": context?.column?.getCanSort()\n },\n rootClassName\n )}\n onClick={(event) => {\n event.preventDefault();\n if (context?.column?.getCanSort()) {\n context?.column?.toggleSorting();\n }\n }}\n >\n <div\n className={cn(\"flex-1 flex items-center\", {\n \"justify-start\": align === \"left\",\n \"justify-center\": align === \"center\",\n \"justify-end\": align === \"right\"\n })}\n >\n <span className={cn(\"inline-block font-bold\", labelClassName)}>{label}</span>\n </div>\n {showSorter && (\n <div\n className=\"flex flex-col -space-y-2\"\n title={\n context.column.getCanSort() ?\n context.column.getNextSortingOrder() === \"asc\" ?\n \"Sort ascending\"\n : context.column.getNextSortingOrder() === \"desc\" ?\n \"Sort descending\"\n : \"Clear sort\"\n : undefined\n }\n >\n <ChevronUp\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-[#41875c]\": context?.column?.getIsSorted() === \"asc\",\n \"stroke-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"asc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n <ChevronDown\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-[#41875c]\": context?.column?.getIsSorted() === \"desc\",\n \"stroke-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"desc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default HeaderCell;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\n\nfunction TableContainer({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm border-separate border-spacing-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b bg-[#f7f4f4]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody data-slot=\"table-body\" className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"data-[state=selected]:bg-[#dfeae3]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-9 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] hover:bg-gray-200 bg-[#F0F0F0] truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 h-10 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] border-b truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n TableContainer,\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption\n};\n","import type { Header } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ColumnResizerProps = {\n header: Header<any, any>;\n className?: string;\n style?: CSSProperties;\n};\n\nconst ColumnResizer = ({ header, className, style }: ColumnResizerProps) => {\n if (!header.column.getCanResize()) {\n return null;\n }\n\n const resizeHandler = header.getResizeHandler();\n\n return (\n <div\n className={cn(\n \"z-[2] absolute top-0 right-0 h-full w-1 select-none touch-none cursor-col-resize hover:bg-[#41875c]/45 active:bg-[#41875c]\",\n className\n )}\n onDoubleClick={() => header.column.resetSize()}\n onTouchStart={resizeHandler}\n onMouseDown={resizeHandler}\n style={style}\n />\n );\n};\n\nexport default ColumnResizer;\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ColumnSeparatorProps = {\n show?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst ColumnSeparator = ({ show, className, ...props }: ColumnSeparatorProps) => {\n if (!show) return null;\n return (\n <span\n data-slot=\"table-head-separator\"\n className={cn(\"absolute right-0 top-1/2 h-4 w-px -translate-y-1/2 bg-gray-300\", className)}\n {...props}\n />\n );\n};\n\nexport default React.memo(ColumnSeparator);\n","import React from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ContentSlot = {\n content?: React.ReactNode;\n icon?: React.ReactNode;\n wrapperProps?: React.ComponentProps<\"div\">;\n};\n\nexport type StatusContentSlotProps = ContentSlot & {\n defaultWrapperProps?: React.ComponentProps<\"div\">;\n defaultIcon?: React.ReactNode;\n};\n\nconst StatusContentSlot = ({\n content,\n icon,\n wrapperProps = {},\n defaultWrapperProps,\n defaultIcon\n}: StatusContentSlotProps) => {\n if (!content && !icon && !defaultIcon) return null;\n\n const mergedProps: React.ComponentProps<\"div\"> = {\n ...defaultWrapperProps,\n ...wrapperProps,\n className: cn(defaultWrapperProps?.className, wrapperProps?.className)\n };\n\n return (\n <div {...mergedProps}>\n {icon ?? defaultIcon}\n {content}\n </div>\n );\n};\n\nexport default React.memo(StatusContentSlot);\n","import { type Table } from \"@tanstack/react-table\";\nimport { Bug } from \"lucide-react\";\nimport { useState } from \"react\";\n\ntype StateKey =\n | \"columnFilters\"\n | \"globalFilter\"\n | \"sorting\"\n | \"pagination\"\n | \"columnVisibility\"\n | \"columnOrder\"\n | \"rowSelection\"\n | \"expanded\"\n | \"grouping\"\n | \"columnPinning\"\n | \"columnSizing\"\n | \"columnSizingInfo\"\n | \"rowPinning\";\n\nconst stateOptions: readonly StateKey[] = [\n \"columnFilters\",\n \"globalFilter\",\n \"sorting\",\n \"pagination\",\n \"columnVisibility\",\n \"columnOrder\",\n \"rowSelection\",\n \"expanded\",\n \"grouping\",\n \"columnPinning\",\n \"columnSizing\",\n \"columnSizingInfo\",\n \"rowPinning\"\n];\n\ntype ModelKey = keyof Table<any>;\n\nconst modelOptions: readonly ModelKey[] = [\n \"getRowModel\",\n \"getGroupedRowModel\",\n \"getPaginationRowModel\",\n \"getCoreRowModel\",\n \"getFilteredRowModel\",\n \"getFilteredSelectedRowModel\",\n \"getSortedRowModel\",\n \"getPreExpandedRowModel\",\n \"getGroupedSelectedRowModel\",\n \"getPrePaginationRowModel\",\n \"getPreSelectedRowModel\",\n \"getPreSortedRowModel\",\n \"getSelectedRowModel\",\n \"getExpandedRowModel\",\n \"getIsAllColumnsVisible\",\n \"getIsSomeColumnsPinned\",\n \"getIsSomeColumnsVisible\",\n \"getHeaderGroups\",\n \"getFlatHeaders\",\n \"getLeafHeaders\",\n \"getLeftFlatHeaders\",\n \"getCenterLeafHeaders\",\n \"getRightFlatHeaders\",\n \"getAllColumns\",\n \"getAllFlatColumns\",\n \"getAllLeafColumns\",\n \"getLeftLeafColumns\",\n \"getCenterLeafColumns\",\n \"getRightLeafColumns\",\n \"getVisibleFlatColumns\",\n \"getVisibleLeafColumns\",\n \"getLeftVisibleLeafColumns\",\n \"getRightVisibleLeafColumns\",\n \"getCenterVisibleLeafColumns\"\n];\n\nconst DataTableDevTool = ({ table }: { table: Table<any> }) => {\n const [open, setOpen] = useState(false);\n const [visibleStates, setVisibleStates] = useState<StateKey[]>([]);\n const [visibleModels, setVisibleModels] = useState<ModelKey[]>([]);\n const tableState = table.getState();\n\n const toggleValue = <U extends string>(arr: U[], value: U): U[] =>\n arr.includes(value) ? arr.filter((v) => v !== value) : [...arr, value];\n\n const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (_key: string, value: any) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) return \"[Circular]\";\n seen.add(value);\n }\n return value;\n };\n };\n\n const renderStateValue = (key: StateKey) => {\n const value = tableState[key];\n if (value == null) return null;\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {JSON.stringify(value, null, 2)}\n </pre>\n </div>\n );\n };\n\n const renderModelValue = (key: ModelKey) => {\n let value: unknown;\n try {\n value = (table as any)[key]();\n } catch {\n value = undefined;\n }\n if (value == null) return null;\n let jsonString = \"\";\n try {\n jsonString = JSON.stringify(value, getCircularReplacer(), 2);\n } catch {\n jsonString = \"[Cannot stringify]\";\n }\n\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {jsonString}\n </pre>\n </div>\n );\n };\n\n if (process.env.NODE_ENV === \"production\") return null;\n\n return (\n <div>\n {/* Floating Button */}\n <button\n onClick={() => setOpen(true)}\n className=\"fixed bottom-6 right-6 z-50 rounded-full bg-white border shadow p-3\"\n aria-label=\"Open debug panel\"\n >\n <Bug className=\"w-5 h-5\" />\n </button>\n\n {/* Sidebar Debug Panel */}\n {open && (\n <aside className=\"fixed top-0 right-0 h-full w-[420px] bg-white shadow-lg border-l border-gray-200 z-50 flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h2 className=\"text-lg font-semibold\">Debug Table State &amp; Models</h2>\n <button onClick={() => setOpen(false)} className=\"text-xl font-bold\" aria-label=\"Close\">\n ×\n </button>\n </header>\n\n {/* Main Content */}\n <main className=\"overflow-auto p-4 flex-grow space-y-4\">\n <section className=\"max-h-80 overflow-y-auto overflow-x-hidden\">\n {/* Select Table States */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table State</legend>\n <div className=\"space-y-1\">\n {stateOptions.map((stateKey) => (\n <label\n key={stateKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-blue-500\"\n checked={visibleStates.includes(stateKey)}\n onChange={() => setVisibleStates(toggleValue(visibleStates, stateKey))}\n />\n <span className=\"truncate\">{stateKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Select Table Models */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table Models</legend>\n <div className=\"space-y-1\">\n {modelOptions.map((modelKey) => (\n <label\n key={modelKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-green-500\"\n checked={visibleModels.includes(modelKey)}\n onChange={() => setVisibleModels(toggleValue(visibleModels, modelKey))}\n />\n <span className=\"truncate\">{modelKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n </section>\n\n {/* JSON Outputs */}\n <hr className=\"my-2 border-gray-300\" />\n {visibleStates.map(renderStateValue)}\n {visibleModels.map(renderModelValue)}\n </main>\n </aside>\n )}\n </div>\n );\n};\n\nexport default DataTableDevTool;\n","import type { RowData, Column } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport type { DataTableRowClickHandler } from \"./DataTable\";\nimport { cn } from \"../../utils\";\n\nexport function getColumnPinningInfo(column: Column<any, any>) {\n const isPinned = column.getIsPinned();\n\n const isLastLeftPinnedColumn = isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn = isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n\n return { isPinned, isLastLeftPinnedColumn, isFirstRightPinnedColumn };\n}\n\nexport function getColumnPinningStyles(column: Column<any, any>): {\n classes: string;\n style: Pick<CSSProperties, \"left\" | \"right\">;\n} {\n const { isPinned, isFirstRightPinnedColumn, isLastLeftPinnedColumn } = getColumnPinningInfo(column);\n\n const classes = cn(\n isPinned ? \"sticky\" : \"relative\",\n isPinned ? \"z-[1]\" : \"z-0\",\n isLastLeftPinnedColumn && \"shadow-[inset_-1px_0_0_0_black]\",\n isFirstRightPinnedColumn && \"shadow-[inset_1px_0_0_0_black]\"\n );\n\n const style: CSSProperties = {\n left: isPinned === \"left\" ? column.getStart(\"left\") : undefined,\n right: isPinned === \"right\" ? column.getAfter(\"right\") : undefined\n };\n\n return { classes, style };\n}\n\ntype RowClickHandlers = {\n onClick: (event: React.MouseEvent<HTMLTableRowElement>) => void;\n};\n\ntype RowClickContext<TData extends RowData> = {\n rowData: Parameters<DataTableRowClickHandler<TData>>[0];\n row: Parameters<DataTableRowClickHandler<TData>>[1][\"row\"];\n table: Parameters<DataTableRowClickHandler<TData>>[1][\"table\"];\n};\n\nexport function getRowClickHandlers<TData extends RowData>(\n handler: DataTableRowClickHandler<TData>,\n { rowData, row, table }: RowClickContext<TData>\n): RowClickHandlers {\n const handleClick = (event: React.MouseEvent<HTMLTableRowElement>) => {\n if (event.detail === 1) {\n handler(rowData, { event, row, table, clickType: \"single\" });\n }\n if (event.detail >= 2) {\n handler(rowData, { event, row, table, clickType: \"double\" });\n }\n };\n return {\n onClick: handleClick\n };\n}\n","import React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getFilteredRowModel,\n getSortedRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n type Table as TanstackTableType,\n type Column,\n type RowData,\n type TableOptions,\n type ColumnFiltersState,\n type TableState,\n type SortingState,\n type OnChangeFn,\n type FilterFnOption,\n type Row,\n type Cell,\n type Header,\n type ColumnDef,\n type HeaderGroup,\n type ColumnOrderState,\n type VisibilityState,\n type ColumnPinningState,\n type RowSelectionState,\n type ExpandedState,\n type GroupingState,\n type GroupingOptions,\n type ColumnResizeMode\n} from \"@tanstack/react-table\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableHeader,\n TableRow\n} from \"../ui/table\";\nimport ColumnResizer, { type ColumnResizerProps } from \"./ColumnResizer\";\nimport ColumnSeparator, { type ColumnSeparatorProps } from \"./ColumnSeparator\";\nimport StatusContentSlot, { type ContentSlot } from \"./StatusContentSlot\";\nimport DataTableDevTool from \"./DataTableDevTool\";\nimport { SuiEmptyDataIcon } from \"../icons\";\nimport { Spinner } from \"../ui/spinner\";\nimport { cn } from \"../../utils\";\nimport { isDefined } from \"../../utils/common\";\nimport { stripNullishObject } from \"../../utils/filters\";\nimport { getColumnPinningInfo, getColumnPinningStyles, getRowClickHandlers } from \"./helpers\";\n\nexport type DataTableColumnFilterProps<TData extends RowData> = {\n column: Column<TData>;\n table: TanstackTableType<TData>;\n};\n\nexport type DataTableFilterConfig = {\n enabled: boolean;\n manual?: boolean;\n maxDepth?: number;\n filterFromLeafRows?: boolean;\n};\n\nexport type DataTableColumnFilter = {\n enabled?: boolean;\n initialState?: ColumnFiltersState;\n state?: ColumnFiltersState;\n onFilterChange?: OnChangeFn<ColumnFiltersState>;\n};\n\nexport type DataTableGlobalFilter<TData extends RowData> = {\n enabled?: boolean;\n initialState?: any;\n state?: any;\n filterFn?: FilterFnOption<TData>;\n onFilterChange?: OnChangeFn<any>;\n canColumnFilterable?: (column: Column<TData, unknown>) => boolean;\n};\n\nexport type DataTableFilters<TData extends RowData> = DataTableFilterConfig & {\n column?: DataTableColumnFilter;\n global?: DataTableGlobalFilter<TData>;\n};\n\nexport type DataTableColumnSorting = {\n enabled: boolean;\n manual?: boolean;\n initialState?: SortingState;\n state?: SortingState;\n sortDescFirst?: boolean;\n onSortingChange?: OnChangeFn<SortingState>;\n};\n\nexport type DataTableRowSelection<TData> = {\n enabled: boolean;\n initialState?: RowSelectionState;\n state?: RowSelectionState;\n canRowSelectable?: boolean | ((row: Row<TData>) => boolean);\n multiSelect?: boolean;\n onSelectionChange?: OnChangeFn<RowSelectionState>;\n};\n\nexport type DataTableColumnPinning = {\n enabled: boolean;\n initialState?: ColumnPinningState;\n state?: ColumnPinningState;\n onPinningChange?: OnChangeFn<ColumnPinningState>;\n};\n\nexport type DataTableColumnOrdering = {\n enabled: boolean;\n initialState?: string[];\n state?: string[];\n onOrderChange?: OnChangeFn<ColumnOrderState>;\n};\n\nexport type DataTableColumnVisibility = {\n enabled: boolean;\n initialState?: VisibilityState;\n state?: VisibilityState;\n onVisibilityChange?: OnChangeFn<VisibilityState>;\n};\n\nexport type DataTableRowExpansion<TData extends RowData> = {\n enabled: boolean;\n manual?: boolean;\n initialState?: ExpandedState;\n state?: ExpandedState;\n onExpandedChange?: OnChangeFn<ExpandedState>;\n isRowExpanded?: (row: Row<TData>) => boolean;\n canRowExpand?: (row: Row<TData>) => boolean;\n};\n\nexport type DataTableColumnGrouping = {\n manual?: boolean;\n enabled: boolean;\n groupedMode?: false | \"reorder\" | \"remove\";\n initialState?: GroupingState;\n state?: GroupingState;\n customAggregationFns?: GroupingOptions[\"aggregationFns\"];\n onGroupingChange?: OnChangeFn<GroupingState>;\n};\n\nexport type RowClickType = \"single\" | \"double\";\n\nexport type DataTableRowClickHandler<TData extends RowData> = (\n rowData: TData,\n info: {\n event: React.MouseEvent<HTMLTableRowElement>;\n row: Row<TData>;\n table: TanstackTableType<TData>;\n clickType: RowClickType;\n }\n) => void;\n\nexport type DataTableRowIdKeyHandler<TData extends RowData> = (\n originalRow: TData,\n index: number,\n parent?: Row<TData>\n) => string;\n\nexport type DataTableHeaderCell<TData extends RowData> = {\n id: string;\n columnId: string;\n content: React.ReactNode;\n originalCell: Header<TData, unknown>;\n};\n\nexport type DataTableRenderHeaderProps<TData extends RowData> = {\n headerGroup: HeaderGroup<TData>;\n table: TanstackTableType<TData>;\n cells: DataTableHeaderCell<TData>[];\n};\n\nexport type DataTableRenderHeaderHandler<TData extends RowData> = (\n props: DataTableRenderHeaderProps<TData>\n) => React.ReactNode;\n\nexport type DataTableRowCell<TData extends RowData> = {\n id: string;\n columnId: string;\n content: React.ReactNode;\n originalCell: Cell<TData, unknown>;\n};\n\nexport type DataTableRenderRowProps<TData extends RowData> = {\n row: Row<TData>;\n cells: DataTableRowCell<TData>[];\n table: TanstackTableType<TData>;\n};\n\nexport type DataTableRenderRowHandler<TData extends RowData> = (\n props: DataTableRenderRowProps<TData>\n) => React.ReactNode;\n\nexport type DataTableChildrenKeyHandler<TData> = (\n originalRow: TData,\n index: number\n) => TData[] | undefined;\n\nexport type DatatableColumnResizing = {\n enabled: boolean;\n resizeMode?: ColumnResizeMode;\n};\n\nexport type DataTableColumnSeparatorProps = {\n headerCell?: ColumnSeparatorProps;\n};\n\nexport type DataTableComponentProps<TData> = {\n containerProps?: React.ComponentProps<typeof TableContainer>;\n tableProps?: React.ComponentProps<typeof Table>;\n tableHeaderProps?: React.ComponentProps<typeof TableHeader>;\n tableHeadCellProps?:\n | React.ComponentProps<typeof TableHead>\n | ((info: {\n header: Header<TData, unknown>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableHead>);\n tableBodyProps?: React.ComponentProps<typeof TableBody>;\n tableDataRowProps?:\n | React.ComponentProps<typeof TableRow>\n | ((info: {\n row: Row<TData>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableRow>);\n tableDataCellProps?:\n | React.ComponentProps<typeof TableCell>\n | ((info: {\n row: Row<TData>;\n cell: Cell<TData, unknown>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableCell>);\n tableFilterCellProps?:\n | React.ComponentProps<typeof TableCell>\n | ((info: {\n column: Column<TData>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableCell>);\n columnResizerProps?: Omit<ColumnResizerProps, \"header\">;\n columnSeparatorProps?: DataTableColumnSeparatorProps;\n};\n\nexport type DataTableStatusContent = {\n initialLoading?: ContentSlot;\n fetchingMore?: ContentSlot;\n noMoreData?: ContentSlot;\n emptyData?: ContentSlot;\n emptyFilteredData?: ContentSlot;\n};\n\nexport type StatusContentKey = keyof DataTableStatusContent;\n\nexport type ScrollInfo = {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n scrollableHeight: number;\n distanceToBottom: number;\n ratioToBottom: number;\n isTopReached: boolean;\n isBottomReached: boolean;\n};\n\nexport type DataTableScrollFetch = {\n enabled: boolean;\n fetchMore?: () => void;\n hasMore?: boolean;\n isFetchingMore?: boolean;\n scrollThreshold?: number | ((info: ScrollInfo) => boolean);\n};\n\nexport type DataTableProps<TData extends RowData> = {\n data: TData[];\n columns: ColumnDef<TData, any>[];\n filters?: DataTableFilters<TData>;\n sorting?: DataTableColumnSorting;\n columnOrder?: DataTableColumnOrdering;\n columnVisibility?: DataTableColumnVisibility;\n columnPinning?: DataTableColumnPinning;\n columnGrouping?: DataTableColumnGrouping;\n columnResizing?: DatatableColumnResizing;\n rowSelection?: DataTableRowSelection<TData>;\n rowExpansion?: DataTableRowExpansion<TData>;\n scrollFetch?: DataTableScrollFetch;\n components?: DataTableComponentProps<TData>;\n activeStatusContent?:\n | (StatusContentKey | null)\n | ((info: { defaultComputedValue: StatusContentKey | null }) => StatusContentKey | null);\n statusContent?: DataTableStatusContent;\n tableRef?: React.RefObject<TanstackTableType<TData> | null>;\n isInitialLoading?: boolean;\n debug?: boolean;\n rowIdKey?: DataTableRowIdKeyHandler<TData>;\n childrenKey?: DataTableChildrenKeyHandler<TData>;\n onRowClick?: DataTableRowClickHandler<TData>;\n};\n\nconst fallbackData: unknown[] = [];\n\nconst DataTable = <TData extends RowData>({\n tableRef,\n isInitialLoading,\n columns,\n data,\n filters,\n sorting,\n columnOrder,\n columnVisibility,\n columnPinning,\n columnGrouping,\n columnResizing,\n rowSelection,\n rowExpansion,\n scrollFetch,\n activeStatusContent,\n statusContent,\n rowIdKey,\n childrenKey,\n onRowClick,\n debug,\n components\n}: DataTableProps<TData>) => {\n const table = useReactTable<TData>({\n // required properties\n columns,\n data: data || fallbackData,\n getCoreRowModel: getCoreRowModel(),\n // optional properties\n ...stripNullishObject<TableOptions<TData>>({\n // state for filters, sorting, pinning, row selection, etc.\n initialState: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.initialState\n : undefined,\n globalFilter: filters?.enabled ? filters?.global?.initialState : undefined,\n sorting: sorting?.enabled ? sorting?.initialState : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.initialState : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.initialState : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.initialState : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.initialState : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.initialState : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.initialState : undefined\n }),\n state: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ? filters?.column?.state : undefined,\n globalFilter: filters?.enabled ? filters?.global?.state : undefined,\n sorting: sorting?.enabled ? sorting?.state : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.state : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.state : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.state : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.state : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.state : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.state : undefined\n }),\n // common\n getRowId: rowIdKey,\n getSubRows: childrenKey,\n // shared configs filters column and global\n enableFilters: filters?.enabled ?? false,\n filterFromLeafRows: filters?.enabled && (filters?.filterFromLeafRows ?? false),\n manualFiltering: filters?.enabled && (filters?.manual ?? false),\n maxLeafRowFilterDepth: filters?.enabled ? filters?.maxDepth : undefined,\n // column filters\n getFilteredRowModel: !filters?.manual && filters?.enabled ? getFilteredRowModel() : undefined,\n enableColumnFilters: filters?.enabled && (filters?.column?.enabled ?? true),\n onColumnFiltersChange:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.onFilterChange\n : undefined,\n // global filters\n enableGlobalFilter: filters?.enabled && (filters?.global?.enabled ?? true),\n globalFilterFn:\n filters?.enabled && (filters?.global?.enabled ?? true) ? filters?.global?.filterFn : undefined,\n onGlobalFilterChange:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n filters?.global?.onFilterChange\n : undefined,\n getColumnCanGlobalFilter:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n (filters?.global?.canColumnFilterable ?? (() => true))\n : undefined,\n // sorting\n getSortedRowModel: !sorting?.manual && sorting?.enabled ? getSortedRowModel() : undefined,\n manualSorting: sorting?.enabled && (sorting?.manual ?? false),\n enableSorting: sorting?.enabled ?? false,\n // default behavior: column with type number is sort by desc and string sort by asc first, we fix force always asc\n sortDescFirst: sorting?.enabled ? (sorting?.sortDescFirst ?? false) : false,\n onSortingChange: sorting?.enabled ? sorting?.onSortingChange : undefined,\n // ordering\n onColumnOrderChange: columnOrder?.enabled ? columnOrder?.onOrderChange : undefined,\n // visibility\n onColumnVisibilityChange:\n columnVisibility?.enabled ? columnVisibility?.onVisibilityChange : undefined,\n // pinning\n enableColumnPinning: columnPinning?.enabled ?? false,\n onColumnPinningChange: columnPinning?.enabled ? columnPinning?.onPinningChange : undefined,\n // row selection\n enableRowSelection: rowSelection?.enabled ? rowSelection?.canRowSelectable : false,\n enableMultiRowSelection: rowSelection?.enabled ? (rowSelection?.multiSelect ?? true) : true,\n onRowSelectionChange: rowSelection?.enabled ? rowSelection?.onSelectionChange : undefined,\n // row expanded\n getExpandedRowModel:\n // when grouping is use then we should open this\n !rowExpansion?.manual && rowExpansion?.enabled ? getExpandedRowModel() : undefined,\n manualExpanding: rowExpansion?.enabled && (rowExpansion?.manual ?? false),\n enableExpanding: rowExpansion?.enabled ?? false,\n getIsRowExpanded: rowExpansion?.enabled ? rowExpansion?.isRowExpanded : undefined,\n getRowCanExpand: rowExpansion?.enabled ? rowExpansion?.canRowExpand : undefined,\n onExpandedChange: rowExpansion?.enabled ? rowExpansion?.onExpandedChange : undefined,\n // grouping\n getGroupedRowModel:\n !columnGrouping?.manual && columnGrouping?.enabled ? getGroupedRowModel() : undefined,\n enableGrouping: columnGrouping?.enabled ?? false,\n manualGrouping: columnGrouping?.enabled && (columnGrouping?.manual ?? false),\n groupedColumnMode: columnGrouping?.enabled ? (columnGrouping?.groupedMode ?? false) : false,\n aggregationFns: columnGrouping?.enabled ? columnGrouping?.customAggregationFns : undefined,\n onGroupingChange: columnGrouping?.enabled ? columnGrouping?.onGroupingChange : undefined,\n // column sizing\n enableColumnResizing: columnResizing?.enabled ?? false,\n columnResizeMode: columnResizing?.enabled ? (columnResizing?.resizeMode ?? \"onChange\") : \"onChange\"\n })\n });\n\n if (isDefined(tableRef) && !isDefined(tableRef?.current)) {\n tableRef!.current = table;\n }\n\n const tableContainerRef = useRef<HTMLDivElement | null>(null);\n\n const isTableEmpty = table.getCoreRowModel().rows.length === 0;\n const isTableEmptyAfterFiltering = table.getRowModel().rows.length === 0;\n const isFiltering = table.getState().columnFilters.length > 0 || !!table.getState().globalFilter;\n\n const leftVisibleLeftColumns = table.getLeftVisibleLeafColumns();\n const centerVisibleLeafColumns = table.getCenterVisibleLeafColumns();\n const rightVisibleLeafColumns = table.getRightVisibleLeafColumns();\n\n const { isSomeColumnsFilterable, filterableColumns } = useMemo(() => {\n const mergedColumns: Column<TData, any>[] = [\n ...leftVisibleLeftColumns,\n ...centerVisibleLeafColumns,\n ...rightVisibleLeafColumns\n ];\n\n const isSomeColumnsFilterable = mergedColumns.some(\n (column) => column.getCanFilter() && column.columnDef.meta?.renderColumnFilter\n );\n\n return { isSomeColumnsFilterable, filterableColumns: mergedColumns };\n }, [centerVisibleLeafColumns, leftVisibleLeftColumns, rightVisibleLeafColumns]);\n\n const autoStatusKey = useMemo<StatusContentKey | null>(() => {\n if (isInitialLoading) return \"initialLoading\";\n if (isTableEmpty) return \"emptyData\";\n if (isTableEmptyAfterFiltering) return \"emptyFilteredData\";\n if (scrollFetch?.enabled && !isFiltering && !isInitialLoading) {\n if (scrollFetch.isFetchingMore) return \"fetchingMore\";\n if (scrollFetch.hasMore === false && !scrollFetch.isFetchingMore) return \"noMoreData\";\n }\n return null;\n }, [\n isInitialLoading,\n isFiltering,\n isTableEmpty,\n isTableEmptyAfterFiltering,\n scrollFetch?.enabled,\n scrollFetch?.hasMore,\n scrollFetch?.isFetchingMore\n ]);\n\n const activeStatusContentComputed = useMemo<StatusContentKey | null>(() => {\n if (!activeStatusContent) return autoStatusKey;\n if (typeof activeStatusContent === \"function\") {\n return activeStatusContent({ defaultComputedValue: autoStatusKey });\n }\n return activeStatusContent;\n }, [activeStatusContent, autoStatusKey]);\n\n const fetchMoreOnScrollReached = useCallback(\n (containerRefElement?: HTMLDivElement | null) => {\n if (\n !scrollFetch?.enabled ||\n !containerRefElement ||\n scrollFetch?.isFetchingMore ||\n !scrollFetch?.hasMore ||\n !scrollFetch?.fetchMore\n ) {\n return;\n }\n\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n\n const scrollableHeight = scrollHeight - clientHeight;\n const distanceToBottom = scrollableHeight - scrollTop;\n const ratioToBottom = scrollableHeight > 0 ? scrollTop / scrollableHeight : 1;\n\n const info: ScrollInfo = {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollableHeight,\n distanceToBottom,\n ratioToBottom,\n isTopReached: scrollTop === 0,\n isBottomReached: distanceToBottom <= 0\n };\n\n let shouldTrigger = false;\n if (typeof scrollFetch.scrollThreshold === \"number\") {\n shouldTrigger = info.ratioToBottom >= scrollFetch.scrollThreshold;\n } else if (typeof scrollFetch.scrollThreshold === \"function\") {\n shouldTrigger = scrollFetch.scrollThreshold(info);\n } else {\n shouldTrigger = info.ratioToBottom >= 0.7; // default 70%\n }\n\n if (shouldTrigger) {\n scrollFetch.fetchMore();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]\n );\n\n useEffect(() => {\n fetchMoreOnScrollReached(tableContainerRef.current);\n }, [fetchMoreOnScrollReached]);\n\n return (\n <TableContainer\n ref={tableContainerRef}\n {...components?.containerProps}\n className={cn(\n \"relative w-full overflow-auto h-full max-h-dvh max-w-full bg-white\",\n components?.containerProps?.className\n )}\n onScroll={(e) => fetchMoreOnScrollReached(e.currentTarget)}\n >\n {activeStatusContentComputed === \"initialLoading\" ?\n <StatusContentSlot\n content={statusContent?.initialLoading?.content ?? \"Loading...\"}\n icon={statusContent?.initialLoading?.icon}\n wrapperProps={statusContent?.initialLoading?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col h-full items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-initial-loading\"\n }}\n defaultIcon={<Spinner size={48} />}\n />\n : activeStatusContentComputed === \"emptyData\" ?\n <StatusContentSlot\n content={statusContent?.emptyData?.content ?? \"There's nothing here yet.\"}\n icon={statusContent?.emptyData?.icon}\n wrapperProps={statusContent?.emptyData?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col h-full items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-empty-data\"\n }}\n defaultIcon={<SuiEmptyDataIcon className=\"text-[128px]\" />}\n />\n : <>\n <Table {...components?.tableProps}>\n {/* header */}\n <TableHeader\n className={cn(\"sticky top-0 z-10\", components?.tableHeaderProps?.className)}\n {...components?.tableHeaderProps}\n >\n {table.getHeaderGroups().map((headerGroup) => {\n return (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const { classes, style } = getColumnPinningStyles(header.column);\n const useColumnSizing =\n header.column.columnDef?.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n false;\n\n const tableHeadCellProps =\n typeof components?.tableHeadCellProps === \"function\" ?\n components?.tableHeadCellProps({ header, table })\n : components?.tableHeadCellProps;\n\n const nextHeader = headerGroup.headers?.[header.index + 1] || header;\n const { isLastLeftPinnedColumn } = getColumnPinningInfo(header.column);\n const { isFirstRightPinnedColumn } = getColumnPinningInfo(nextHeader.column);\n const headerGroupLength = header.headerGroup.headers.length;\n const showSeparator =\n header.index !== headerGroupLength - 1 &&\n !isLastLeftPinnedColumn &&\n !isFirstRightPinnedColumn;\n\n return (\n <TableHead\n data-testid={`table-head-${header.id}`}\n key={header.id}\n colSpan={header.colSpan}\n {...tableHeadCellProps}\n {...header.column.columnDef?.meta?.headerProps}\n className={cn(\n classes,\n tableHeadCellProps?.className,\n header.column.columnDef?.meta?.headerProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? header.column.getSize() : undefined,\n minWidth: useColumnSizing ? header.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? header.column.columnDef.maxSize : undefined,\n ...tableHeadCellProps?.style,\n ...header.column.columnDef?.meta?.headerProps?.style\n }}\n >\n {header.isPlaceholder ? null : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n <ColumnSeparator\n {...components?.columnSeparatorProps?.headerCell}\n {...header.column.columnDef?.meta?.columnSeparatorProps}\n show={\n header.column.columnDef?.meta?.columnSeparatorProps?.show ??\n components?.columnSeparatorProps?.headerCell?.show ??\n showSeparator\n }\n />\n <ColumnResizer header={header} {...components?.columnResizerProps} />\n </TableHead>\n );\n })}\n </TableRow>\n );\n })}\n\n {/* filter row */}\n {isSomeColumnsFilterable && (\n <TableRow data-testid=\"table-filter-row\">\n {filterableColumns.map((column) => {\n const { classes, style } = getColumnPinningStyles(column);\n const useColumnSizing =\n column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;\n\n const tableFilterCellProps =\n typeof components?.tableFilterCellProps === \"function\" ?\n components?.tableFilterCellProps({ column, table })\n : components?.tableFilterCellProps;\n\n return (\n <TableCell\n data-testid={`table-filter-cell-${column.id}`}\n key={column.id}\n {...tableFilterCellProps}\n {...column.columnDef?.meta?.filterCellProps}\n className={cn(\n \"bg-white border-b\",\n classes,\n tableFilterCellProps?.className,\n column.columnDef?.meta?.filterCellProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? column.getSize() : undefined,\n minWidth: useColumnSizing ? column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? column.columnDef.maxSize : undefined,\n ...tableFilterCellProps?.style,\n ...column.columnDef?.meta?.filterCellProps?.style\n }}\n >\n {column.getCanFilter() &&\n column.columnDef.meta?.renderColumnFilter?.({\n column,\n table\n })}\n </TableCell>\n );\n })}\n </TableRow>\n )}\n </TableHeader>\n\n {/* data rows */}\n <TableBody {...components?.tableBodyProps}>\n {table.getRowModel().rows.map((row) => {\n const tableDataRowProps =\n typeof components?.tableDataRowProps === \"function\" ?\n components.tableDataRowProps({ row, table }) || {}\n : components?.tableDataRowProps || {};\n\n return (\n <TableRow\n data-testid={`table-data-row-${row.id}`}\n {...tableDataRowProps}\n key={row.id}\n className={cn(\"group\", tableDataRowProps?.className)}\n data-state={row.getIsSelected() ? \"selected\" : \"non-selected\"}\n {...getRowClickHandlers(onRowClick ?? (() => {}), {\n rowData: row.original,\n row,\n table\n })}\n >\n {row.getVisibleCells().map((cell) => {\n const { classes, style } = getColumnPinningStyles(cell.column);\n const useColumnSizing =\n cell.column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;\n\n const tableDataCellProps =\n typeof components?.tableDataCellProps === \"function\" ?\n components?.tableDataCellProps({ row, cell, table })\n : components?.tableDataCellProps;\n\n return (\n <TableCell\n data-testid={`table-data-cell-${cell.id}`}\n data-row-id={row.id}\n data-column-id={cell.column.id}\n key={cell.id}\n {...tableDataCellProps}\n {...cell.column.columnDef?.meta?.cellProps}\n className={cn(\n {\n \"bg-[#dfeae3]\": row.getIsSelected(),\n \"bg-white group-hover:bg-[#eff5f1]\": !row.getIsSelected()\n },\n classes,\n tableDataCellProps?.className,\n cell.column.columnDef?.meta?.cellProps?.className\n )}\n style={{\n ...style,\n width: useColumnSizing ? cell.column.getSize() : undefined,\n minWidth: useColumnSizing ? cell.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? cell.column.columnDef.maxSize : undefined,\n ...tableDataCellProps?.style,\n ...cell.column.columnDef?.meta?.cellProps?.style\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n\n {activeStatusContentComputed === \"emptyFilteredData\" && (\n <StatusContentSlot\n content={\n statusContent?.emptyFilteredData?.content ??\n \"No records found. Please try a different search.\"\n }\n icon={statusContent?.emptyFilteredData?.icon}\n wrapperProps={statusContent?.emptyFilteredData?.wrapperProps}\n defaultWrapperProps={{\n className:\n \"flex flex-col h-[calc(100%-76px)] items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-empty-filtered-data\"\n }}\n defaultIcon={<SuiEmptyDataIcon className=\"text-[128px]\" />}\n />\n )}\n\n {activeStatusContentComputed === \"fetchingMore\" && (\n <StatusContentSlot\n content={statusContent?.fetchingMore?.content ?? \"Loading more...\"}\n wrapperProps={statusContent?.fetchingMore?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-fetching-more\"\n }}\n />\n )}\n\n {activeStatusContentComputed === \"noMoreData\" && (\n <StatusContentSlot\n content={statusContent?.noMoreData?.content}\n icon={statusContent?.noMoreData?.icon}\n wrapperProps={statusContent?.noMoreData?.wrapperProps}\n defaultWrapperProps={{\n className: \"flex flex-col items-center justify-center text-sm py-4 gap-2\",\n [\"data-testid\" as any]: \"status-content-no-more-data\"\n }}\n />\n )}\n </>\n }\n\n {/* devtool */}\n {debug && <DataTableDevTool table={table} />}\n </TableContainer>\n );\n};\n\nexport default DataTable;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\n// ──────────────────────────────\n// Root-level wrappers\n// ──────────────────────────────\nfunction Dialog(props: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger(props: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal(props: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0\",\n className\n )}\n {...props}\n />\n );\n}\n\n// ──────────────────────────────\n// Header (optional)\n// ──────────────────────────────\nfunction DialogHeader({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"relative flex items-center justify-between bg-[#82b495] text-white rounded-t-md px-4 py-3\",\n className\n )}\n {...props}\n >\n <div className=\"text-lg font-semibold\">{children}</div>\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"absolute right-4 top-4 rounded-xs opacity-80 hover:opacity-100 transition-opacity focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </div>\n );\n}\n\n// ──────────────────────────────\n// Content (flex layout + sticky footer ready)\n// ──────────────────────────────\nexport interface DialogContentProps extends React.ComponentProps<typeof DialogPrimitive.Content> {\n header?: React.ReactNode;\n showOverlay?: boolean;\n}\n\nfunction DialogContent({\n className,\n children,\n header,\n showOverlay = true,\n ...props\n}: DialogContentProps) {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay />}\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 flex min-h-0 max-h-[90vh] w-full max-w-[80vw] translate-x-[-50%] translate-y-[-50%] flex-col rounded-lg border bg-background shadow-lg duration-200 sm:max-w-7xl\",\n className\n )}\n {...props}\n >\n {/* Header */}\n {header && <DialogHeader>{header}</DialogHeader>}\n\n <div className=\"flex-1 overflow-auto\">{children}</div>\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\n// ──────────────────────────────\n// Footer / Title / Description\n// ──────────────────────────────\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end border-t bg-white p-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg font-semibold leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\n// ──────────────────────────────\n// Export\n// ──────────────────────────────\nexport { Dialog, DialogTrigger, DialogContent, DialogFooter, DialogTitle, DialogDescription };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\nexport const preserveNewlines = (s?: string) => (s ? s.replace(/\\r\\n/g, \"\\n\") : undefined);\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-white data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n success: \"bg-sus-primary-1 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n error:\n \"border border-[#BB0B0E] text-[#BB0B0E] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\",\n warning: \"bg-yellow-500 text-black shadow-xs hover:bg-yellow-600 dark:hover:bg-yellow-400\",\n cancel:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n confirm:\n \"border border-[#BB0B0E] text-[#BB0B0E] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\",\n \"confirm-green\":\n \"border border-[#379A2A] text-[#379A2A] bg-white shadow-xs hover:bg-accent hover:text-accent-foreground\"\n },\n\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n\n active: {\n true: \"opacity-90 ring-2 ring-offset-1 ring-ring\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, active, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","export const DIALOG_ALERT_I18N_SUBNAMESPACE = \"dialog_alert\";\nexport const i18nPrefix = `translation:${DIALOG_ALERT_I18N_SUBNAMESPACE}.`;\n","import { DIALOG_ALERT_I18N_SUBNAMESPACE } from \"../lib/constants\";\nimport { DialogAlertI18nResource } from \"../types\";\n\nexport const defaultResource: DialogAlertI18nResource = {\n sharedui: {\n translation: {\n [DIALOG_ALERT_I18N_SUBNAMESPACE]: {\n cancel: \"Cancel\",\n close: \"Close\",\n \"success.saved\": {\n title: \"Successfully\",\n description: \"Data has been successfully saved\"\n },\n \"success.deleted\": {\n title: \"Successfully\",\n description: \"Data has been successfully deleted\"\n },\n \"success.removed\": {\n title: \"Successfully\",\n description: \"Data has been successfully removed\"\n },\n \"error.api_db_error\": {\n title: \"API/Database Error\",\n description: \"Failed to connect to the system. Please check API or database connection.\"\n },\n \"error.permission_denied\": {\n title: \"Permission Denied\",\n description: \"You do not have permission to delete this data.\",\n confirm_text: \"Discard\"\n },\n \"error.session_expired\": {\n title: \"Session Expired\",\n description: \"Your session has expired or you have been logged out. Please sign in again.\",\n confirm_text: \"Logout\"\n },\n \"error.user_not_found\": {\n title: \"User Not Found\",\n description: \"The system could not locate the user account.\",\n confirm_text: \"Logout\"\n },\n \"error.data_not_found\": {\n title: \"Data Not Found\",\n description: \"The data has already been deleted or does not exist in the system.\"\n },\n \"error.data_restrict_editing\": {\n title: \"Data Status Restricts Editing\",\n description: \"Data status does not allow editing.\"\n },\n \"error.network_timeout_error\": {\n title: \"Network Error / Timeout\",\n description:\n \"The system could not connect to the network or the request took too long to process.\"\n },\n \"error.queue_full\": {\n title: \"Queue Full\",\n description: \"The notification queue has reached its limit. Please try again later.\"\n },\n \"error.invalid_data_format\": {\n title: \"Invalid Data Format\",\n description: \"Data creation failed due to invalid or incorrectly formatted data.\"\n },\n \"error.data_linked_to_system_data\": {\n title: \"Data Linked to System Data\",\n description: \"Cannot delete data because they are linked to existing system data.\"\n },\n \"error.pending_workflow_conflict\": {\n title: \"Pending Workflow Conflict \",\n description:\n \"The data is currently involved in a pending workflow or approval process and cannot be deactivated.\"\n },\n \"error.invalid_incomplete_data\": {\n title: \"Invalid or Incomplete Data\",\n description: \"Data status cannot be changed due to incomplete or invalid information.\"\n },\n \"error.client_side_error\": {\n title: \"Client-Side Error\",\n description: \"An error occurred on the client side. Please refresh the page or try again.\"\n },\n \"error.system_limitation\": {\n title: \"System Limitation\",\n description:\n \"The search cannot be completed due to system limitations. Please simplify your query.\"\n },\n \"error.timeout\": {\n title: \"Timeout\",\n description: \"Request failed due to a system error or timeout. Please try again.\"\n },\n \"error.duplicate_data\": {\n title: \"Duplicate Data\",\n description: \"The data you entered already exists in the system.\"\n },\n \"error.something_went_wrong\": {\n title: \"Something Went Wrong\",\n description: \"An unknown error occurred.\"\n },\n \"confirm.delete\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to delete this item?\",\n confirm_text: \"Delete\"\n },\n \"confirm.inactive\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to inactive this item?\",\n confirm_text: \"Inactive\"\n },\n \"confirm.active\": {\n variant: \"confirm-green\",\n title: \"Confirmation\",\n description: \"Are you sure you want to active this item?\",\n confirm_text: \"Active\"\n },\n \"confirm.leave_page\": {\n title: \"Confirmation\",\n description: \"Unsaved changes. Do you want to leave this page?\",\n confirm_text: \"Leave\"\n },\n \"confirm.remove\": {\n title: \"Confirmation\",\n description: \"Are you sure you want to remove this item?\",\n confirm_text: \"Remove\"\n },\n \"confirm.logout\": {\n title: \"Confirmation\",\n description: \"Do you want to log out?\",\n confirm_text: \"Logout\"\n }\n }\n }\n }\n};\n","// src/i18n.js\nimport i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport { defaultResource } from \"./default\";\n\ni18n.use(initReactI18next).init({\n resources: defaultResource,\n lng: \"sharedui\",\n fallbackLng: \"sharedui\",\n defaultNS: \"translation\",\n interpolation: {\n escapeValue: false // react already safes from xss\n }\n});\n\nexport default i18n;\n","import { useCallback } from \"react\";\nimport {\n Dialog as BaseDialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription\n} from \"./components/ui/dialog\";\nimport { Button } from \"./components/ui/button\";\nimport { DialogAlertProps, DialogVariant } from \"./types\";\nimport \"./locale/i18n\";\nimport { useTranslation } from \"react-i18next\";\n\nconst titleColorVariant: Record<DialogVariant, string> = {\n default: \"\",\n success: \"text-green-600\",\n error: \"text-red-600\",\n warning: \"text-yellow-600\",\n confirm: \"text-red-600\",\n \"confirm-green\": \"text-red-600\"\n};\n\nexport function DialogAlert({\n open,\n onOpenChange,\n title,\n description,\n variant = \"default\",\n confirmText,\n cancelText = \"cancel\",\n onConfirm,\n onCancel,\n showCancel = true,\n align = \"center\",\n outlet,\n persistent = false\n}: DialogAlertProps) {\n const alignClass =\n align === \"start\" ? \"justify-start\"\n : align === \"end\" ? \"justify-end\"\n : \"justify-center\";\n\n const { t } = useTranslation();\n\n const handleCancel = useCallback(() => {\n onCancel?.();\n onOpenChange(false);\n }, [onCancel, onOpenChange]);\n\n const handleConfirm = useCallback(() => {\n onConfirm?.();\n }, [onConfirm]);\n\n return (\n <BaseDialog open={open} onOpenChange={persistent ? () => {} : onOpenChange}>\n <DialogContent className=\"max-w-md\" showCloseButton={!persistent}>\n <DialogHeader>\n {title && <DialogTitle className={titleColorVariant[variant]}>{t(title)}</DialogTitle>}\n {description && <DialogDescription>{t(description)}</DialogDescription>}\n </DialogHeader>\n\n {outlet && outlet}\n\n <div className={`flex gap-3 mt-3 ${alignClass}`}>\n {showCancel && (\n <Button variant=\"cancel\" onClick={handleCancel}>\n {t(cancelText)}\n </Button>\n )}\n {confirmText && (\n <Button variant={variant} onClick={handleConfirm}>\n {t(confirmText)}\n </Button>\n )}\n </div>\n </DialogContent>\n </BaseDialog>\n );\n}\n","import { DialogAlertTemplates } from \"../types\";\n\ntype GetTemplatesPayload = {\n setOpen?: (data: boolean) => void;\n};\ntype GetTemplatesFunc = (payload: GetTemplatesPayload) => DialogAlertTemplates;\n\nexport const getDialogTemplates: GetTemplatesFunc = ({ setOpen = () => {} }) => ({\n \"success.saved\": {\n variant: \"success\",\n title: \"success.saved.title\",\n description: \"success.saved.description\",\n cancelText: \"close\"\n },\n \"success.deleted\": {\n variant: \"success\",\n title: \"success.deleted.title\",\n description: \"success.deleted.description\",\n cancelText: \"close\"\n },\n \"success.removed\": {\n variant: \"success\",\n title: \"success.removed.title\",\n description: \"success.removed.description\",\n cancelText: \"close\"\n },\n \"error.api_db_error\": {\n variant: \"error\",\n title: \"error.api_db_error.title\",\n description: \"error.api_db_error.description\",\n cancelText: \"close\"\n },\n \"error.permission_denied\": {\n variant: \"error\",\n title: \"error.permission_denied.title\",\n description: \"error.permission_denied.description\",\n confirmText: \"error.permission_denied.confirm_text\",\n showCancel: false,\n onConfirm: () => setOpen(false)\n },\n \"error.session_expired\": {\n variant: \"error\",\n title: \"error.session_expired.title\",\n description: \"error.session_expired.description\",\n confirmText: \"error.session_expired.confirm_text\",\n showCancel: false\n },\n \"error.user_not_found\": {\n variant: \"error\",\n title: \"error.user_not_found.title\",\n description: \"error.user_not_found.description\",\n confirmText: \"error.user_not_found.confirm_text\",\n showCancel: false\n },\n \"error.data_not_found\": {\n variant: \"error\",\n title: \"error.data_not_found.title\",\n description: \"error.data_not_found.description\",\n cancelText: \"close\"\n },\n \"error.data_restrict_editing\": {\n variant: \"error\",\n title: \"error.data_restrict_editing.title\",\n description: \"error.data_restrict_editing.description\",\n cancelText: \"close\"\n },\n \"error.network_timeout_error\": {\n variant: \"error\",\n title: \"error.network_timeout_error.title\",\n description: \"error.network_timeout_error.description\",\n cancelText: \"close\"\n },\n \"error.queue_full\": {\n variant: \"error\",\n title: \"error.queue_full.title\",\n description: \"error.queue_full.description\",\n cancelText: \"close\"\n },\n \"error.invalid_data_format\": {\n variant: \"error\",\n title: \"error.invalid_data_format.title\",\n description: \"error.invalid_data_format.description\",\n cancelText: \"close\"\n },\n \"error.data_linked_to_system_data\": {\n variant: \"error\",\n title: \"error.data_linked_to_system_data.title\",\n description: \"error.data_linked_to_system_data.description\",\n cancelText: \"close\"\n },\n \"error.pending_workflow_conflict\": {\n variant: \"error\",\n title: \"error.pending_workflow_conflict.title\",\n description: \"error.pending_workflow_conflict.description\",\n cancelText: \"close\"\n },\n \"error.invalid_incomplete_data\": {\n variant: \"error\",\n title: \"error.invalid_incomplete_data.title\",\n description: \"error.invalid_incomplete_data.description\",\n cancelText: \"close\"\n },\n \"error.client_side_error\": {\n variant: \"error\",\n title: \"error.client_side_error.title\",\n description: \"error.client_side_error.description\",\n cancelText: \"close\"\n },\n \"error.system_limitation\": {\n variant: \"error\",\n title: \"error.system_limitation.title\",\n description: \"error.system_limitation.description\",\n cancelText: \"close\"\n },\n \"error.timeout\": {\n variant: \"error\",\n title: \"error.timeout.title\",\n description: \"error.timeout.description\",\n cancelText: \"close\"\n },\n \"error.duplicate_data\": {\n variant: \"error\",\n title: \"error.duplicate_data.title\",\n description: \"error.duplicate_data.description\",\n cancelText: \"close\"\n },\n \"error.something_went_wrong\": {\n variant: \"error\",\n title: \"error.something_went_wrong.title\",\n description: \"error.something_went_wrong.description\",\n cancelText: \"close\"\n },\n \"confirm.delete\": {\n variant: \"confirm\",\n title: \"confirm.delete.title\",\n description: \"confirm.delete.description\",\n confirmText: \"confirm.delete.confirm_text\"\n },\n \"confirm.inactive\": {\n variant: \"confirm\",\n title: \"confirm.inactive.title\",\n description: \"confirm.inactive.description\",\n confirmText: \"confirm.inactive.confirm_text\"\n },\n \"confirm.active\": {\n variant: \"confirm-green\",\n title: \"confirm.active.title\",\n description: \"confirm.active.description\",\n confirmText: \"confirm.active.confirm_text\"\n },\n \"confirm.leave_page\": {\n variant: \"confirm\",\n title: \"confirm.leave_page.title\",\n description: \"confirm.leave_page.description\",\n confirmText: \"confirm.leave_page.confirm_text\"\n },\n \"confirm.remove\": {\n variant: \"confirm\",\n title: \"confirm.remove.title\",\n description: \"confirm.remove.description\",\n confirmText: \"confirm.remove.confirm_text\"\n },\n \"confirm.logout\": {\n variant: \"confirm\",\n title: \"confirm.logout.title\",\n description: \"confirm.logout.description\",\n confirmText: \"confirm.logout.confirm_text\"\n }\n});\n","import { DialogAlert } from \"../DialogAlert\";\nimport {\n DialogAlertI18nResource,\n DialogAlertProps,\n DialogAlertTemplateUnit,\n TemplateKeys\n} from \"../types\";\nimport { getDialogTemplates } from \"../templates\";\nimport { create } from \"zustand\";\nimport i18n from \"../locale/i18n\";\nimport { useEffect } from \"react\";\nimport { i18nPrefix } from \"../lib/constants\";\n\ntype OpenDialogAlert = Omit<DialogAlertProps, \"open\" | \"onOpenChange\">;\ntype State = {\n open: boolean;\n setOpen: (data: boolean) => void;\n dialogProps: OpenDialogAlert;\n setDialogProps: (data: OpenDialogAlert) => void;\n openDialogAlert: (payload?: { template?: TemplateKeys; props?: OpenDialogAlert }) => void;\n closeDialogAlert: () => void;\n};\n\nconst useDialogAlertStore = create<State>((set, get) => ({\n open: false,\n dialogProps: {},\n setOpen: (data) => set({ open: data }),\n setDialogProps: (data) => set({ dialogProps: data }),\n\n openDialogAlert: (payload) => {\n let templateVal: DialogAlertTemplateUnit | undefined;\n if (payload?.template) {\n templateVal = getDialogTemplates({ setOpen: get().setOpen })[payload.template];\n // add prefix\n templateVal.title = templateVal.title ? i18nPrefix + templateVal.title : undefined;\n templateVal.description =\n templateVal.description ? i18nPrefix + templateVal.description : undefined;\n templateVal.confirmText =\n templateVal.confirmText ? i18nPrefix + templateVal.confirmText : undefined;\n templateVal.cancelText = templateVal.cancelText ? i18nPrefix + templateVal.cancelText : undefined;\n }\n get().setDialogProps({ ...templateVal, ...payload?.props });\n get().setOpen(true);\n },\n closeDialogAlert: () => {\n set({ open: false });\n }\n}));\n\ninterface DialogAlertProviderProps extends React.PropsWithChildren {\n /**\n * @description i18n resource for dialogAlert to use\n * @example \n * ``` \n * {\n * en: {\n * translation: {\n * dialog_alert: {\n * close: \"Close\",\n * cancel: \"Cancel\",\n * \"success.saved\": {\n title: \"Successfully\",\n description: \"Data has been successfully saved\"\n },\n * ....\n * }\n * }\n * }\n * }\n * ```\n */\n i18nResource?: DialogAlertI18nResource;\n /**\n * @description specify language to use\n */\n i18nLang?: string;\n}\nexport const DialogAlertProvider = ({ children, i18nResource, i18nLang }: DialogAlertProviderProps) => {\n const open = useDialogAlertStore((state) => state.open);\n const setOpen = useDialogAlertStore((state) => state.setOpen);\n const dialogProps = useDialogAlertStore((state) => state.dialogProps);\n\n useEffect(() => {\n if (!i18nResource) {\n i18n.changeLanguage(\"sharedui\");\n return;\n }\n try {\n const langs = Object.keys(i18nResource);\n for (const lang of langs) {\n i18n.addResourceBundle(lang, \"translation\", i18nResource[lang][\"translation\"], false, true);\n }\n i18n.changeLanguage(i18nLang);\n } catch {\n i18n.changeLanguage(\"sharedui\");\n return;\n }\n }, [i18nLang, i18nResource]);\n\n return (\n <>\n {children}\n <DialogAlert open={open} onOpenChange={setOpen} {...dialogProps} />\n </>\n );\n};\n\nconst openDialogAlert = useDialogAlertStore.getState().openDialogAlert;\nconst closeDialogAlert = useDialogAlertStore.getState().closeDialogAlert;\n/**\n * @description open error dialog based on given error, if the error is javascript Error instance\n * it will use error.message as dialog description, if the error is AxiosError it will use error template\n * based on error.response.status\n * @param error - Accept Error or AxiosError\n */\nconst openErrorDialogAlert = (error: unknown) => {\n if (error instanceof Error) {\n openDialogAlert({ template: \"error.something_went_wrong\", props: { description: error.message } });\n } else if ((error as any).isAxiosError) {\n let template: TemplateKeys = \"error.something_went_wrong\";\n switch ((error as any).response?.status) {\n case 400:\n template = \"error.invalid_incomplete_data\";\n break;\n case 401:\n template = \"error.session_expired\";\n break;\n case 403:\n template = \"error.permission_denied\";\n break;\n case 404:\n template = \"error.data_not_found\";\n break;\n case 409:\n template = \"error.duplicate_data\";\n break;\n case 500:\n template = \"error.api_db_error\";\n break;\n }\n openDialogAlert({ template });\n } else {\n openDialogAlert({ template: \"error.something_went_wrong\" });\n }\n};\n\nexport const getDialogAlertControls = () => ({\n openDialogAlert,\n closeDialogAlert,\n openErrorDialogAlert\n});\n","import type { FormulaOperator } from \"../types\";\n\nexport const defaultOperators: FormulaOperator[] = [\n { value: \"(\", label: \"(\" },\n { value: \")\", label: \")\" },\n { value: \"%\", label: \"%\" },\n { value: \"&\", label: \"&\" },\n { value: \"+\", label: \"+\" },\n { value: \"-\", label: \"-\" },\n { value: \"*\", label: \"×\" },\n { value: \"/\", label: \"÷\" },\n { value: \"=\", label: \"=\" },\n { value: \"≠\", label: \"≠\" },\n { value: \"#NULL\", label: \"#NULL\" }\n];\n\nexport const defaultOperatorShortcuts: Record<string, string> = {\n \"(\": \"(\",\n \")\": \")\",\n \"%\": \"%\",\n \"&\": \"&\",\n \"+\": \"+\",\n \"-\": \"-\",\n \"*\": \"*\",\n \"/\": \"/\",\n \"=\": \"=\",\n \"≠\": \"≠\",\n \"#NULL\": \"#NULL\"\n};\n","import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport type { Editor } from \"@tiptap/react\";\nimport type { SuggestionProps } from \"@tiptap/suggestion\";\n\nimport { cn } from \"@/utils\";\nimport type { FormulaTokenAttributes } from \"../types\";\n\nconst DEFAULT_DEBOUNCE = 200;\n\ninterface SuggestionListProps extends SuggestionProps<FormulaTokenAttributes> {\n editor: Editor;\n fetchItems: (query: string) => Promise<any[]>;\n mapItem: (item: any) => FormulaTokenAttributes;\n normalizeToken: (attrs: Partial<FormulaTokenAttributes>) => FormulaTokenAttributes;\n debounceMs?: number;\n}\n\nfunction useKeyboardNavigation(\n itemsLength: number,\n onSelect: (index: number) => void,\n isLocked: boolean\n) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n useEffect(() => {\n const handler = (event: KeyboardEvent) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setSelectedIndex((prev) => (prev + 1) % Math.max(itemsLength, 1));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setSelectedIndex((prev) => (prev - 1 + Math.max(itemsLength, 1)) % Math.max(itemsLength, 1));\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \"Tab\") {\n event.preventDefault();\n if (!isLocked) onSelect(selectedIndex);\n }\n };\n\n window.addEventListener(\"keydown\", handler);\n return () => window.removeEventListener(\"keydown\", handler);\n }, [itemsLength, onSelect, selectedIndex, isLocked]);\n\n return [selectedIndex, setSelectedIndex] as const;\n}\n\nfunction useDropdownPosition(clientRect?: (() => DOMRect | null) | null, itemsCount?: number) {\n const [rect, setRect] = useState<DOMRect | null>(null);\n const [style, setStyle] = useState<React.CSSProperties>({});\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!clientRect) return;\n\n const update = () => {\n const nextRect = clientRect();\n if (nextRect) setRect(nextRect);\n };\n\n update();\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n const resizeObserver = new ResizeObserver(update);\n resizeObserver.observe(document.body);\n\n return () => {\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n resizeObserver.disconnect();\n };\n }, [clientRect]);\n\n useLayoutEffect(() => {\n if (!rect || !ref.current) return;\n const dropdown = ref.current;\n const dropdownRect = dropdown.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n let top = rect.bottom + window.scrollY + 6;\n let left = rect.left + window.scrollX;\n\n if (top + dropdownRect.height > viewportHeight + window.scrollY) {\n top = rect.top + window.scrollY - dropdownRect.height - 6;\n }\n\n if (left + dropdownRect.width > viewportWidth + window.scrollX) {\n left = Math.max(viewportWidth + window.scrollX - dropdownRect.width - 8, 0);\n }\n\n setStyle({ position: \"absolute\", zIndex: 50, top, left });\n }, [rect, itemsCount]);\n\n return { ref, style, rect };\n}\n\nexport const SuggestionList: React.FC<SuggestionListProps> = ({\n clientRect,\n command,\n fetchItems,\n mapItem,\n normalizeToken,\n debounceMs = DEFAULT_DEBOUNCE,\n query\n}) => {\n const [items, setItems] = useState<FormulaTokenAttributes[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const fetchId = useRef(0);\n const debounceHandle = useRef<number | null>(null);\n const itemRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const { ref, style, rect } = useDropdownPosition(clientRect, items.length);\n const normalizedMap = useMemo(() => mapItem, [mapItem]);\n const normalizeItem = useMemo(() => normalizeToken, [normalizeToken]);\n\n useEffect(() => {\n const runFetch = (input: string) => {\n fetchId.current += 1;\n const currentId = fetchId.current;\n if (debounceHandle.current) clearTimeout(debounceHandle.current);\n\n debounceHandle.current = window.setTimeout(async () => {\n setIsLoading(true);\n try {\n const results = await fetchItems(input);\n if (fetchId.current !== currentId) return;\n const mapped =\n Array.isArray(results) ? results.map((item) => normalizeItem(normalizedMap(item))) : [];\n setItems(mapped);\n } catch {\n if (fetchId.current === currentId) {\n setItems([]);\n }\n } finally {\n if (fetchId.current === currentId) {\n setIsLoading(false);\n }\n }\n }, debounceMs);\n };\n\n runFetch(query ?? \"\");\n\n return () => {\n if (debounceHandle.current) {\n clearTimeout(debounceHandle.current);\n }\n fetchId.current += 1;\n };\n }, [query, fetchItems, normalizedMap, normalizeItem, debounceMs]);\n\n const handleSelect = useMemo(\n () => (item: FormulaTokenAttributes) => {\n if (isLoading) return;\n command(item);\n },\n [command, isLoading]\n );\n\n const [selectedIndex, setSelectedIndex] = useKeyboardNavigation(\n items.length,\n (index) => {\n if (!items.length) return;\n handleSelect(items[index]);\n },\n isLoading\n );\n\n useEffect(() => {\n setSelectedIndex(0);\n }, [items, setSelectedIndex]);\n\n useEffect(() => {\n const element = itemRefs.current[selectedIndex];\n if (element) element.scrollIntoView({ block: \"nearest\" });\n }, [selectedIndex]);\n\n if (!rect) return null;\n\n const showEmptyState = !isLoading && items.length === 0;\n\n return (\n <div\n ref={ref}\n style={style}\n className=\"w-80 max-h-60 overflow-y-auto rounded-lg border bg-white p-1 shadow-lg\"\n >\n {isLoading && <div className=\"px-3 py-2 text-sm text-muted-foreground\">Loading suggestions…</div>}\n {showEmptyState && <div className=\"px-3 py-2 text-sm text-muted-foreground\">No matches</div>}\n {items.map((item, idx) => (\n <button\n key={item.id}\n ref={(el) => {\n itemRefs.current[idx] = el;\n }}\n type=\"button\"\n onClick={() => handleSelect(item)}\n onMouseMove={() => setSelectedIndex(idx)}\n className={cn(\n \"flex w-full items-center justify-between rounded-md px-3 py-2 text-left text-sm\",\n selectedIndex === idx ? \"bg-muted\" : \"hover:bg-muted\",\n isLoading && \"pointer-events-none opacity-60\"\n )}\n disabled={isLoading}\n >\n <span>{item.label ?? item.code}</span>\n <span className=\"text-xs text-muted-foreground\">\n {item.prefix ?? \"\"}\n {item.code ?? \"\"}\n </span>\n </button>\n ))}\n </div>\n );\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { Editor, Node, mergeAttributes } from \"@tiptap/core\";\nimport { NodeViewWrapper, ReactNodeViewRenderer } from \"@tiptap/react\";\nimport Suggestion from \"@tiptap/suggestion\";\nimport type { SuggestionProps } from \"@tiptap/suggestion\";\nimport { Plugin, PluginKey } from \"prosemirror-state\";\n\nimport { cn } from \"@/utils\";\n\nimport { SuggestionList } from \"./SuggestionList\";\nimport type { FormulaTokenAttributes, FormulaTokenConfig } from \"../types\";\n\nconst DISALLOWED_MARKS = [\"bold\", \"italic\", \"link\"];\nconst SUGGESTION_DEBOUNCE = 200;\n\nexport type TokenOptions = {\n configs: FormulaTokenConfig[];\n onSelect?: (token: FormulaTokenAttributes, config: FormulaTokenConfig) => void;\n};\n\nexport type OperatorOptions = {\n shortcuts?: Record<string, string>;\n};\n\ntype SuggestionPluginOptions = {\n config: FormulaTokenConfig;\n onSelect?: (token: FormulaTokenAttributes, config: FormulaTokenConfig) => void;\n nodeName: string;\n editor: Editor;\n register: (entry: SuggestionRegistration) => void;\n};\n\ntype SuggestionRegistration = { key: PluginKey; config: FormulaTokenConfig };\n\nconst DEFAULT_CHIP_CLASS = \"outline-1 outline-muted bg-muted/40 text-foreground\";\n\nconst TokenView: React.FC<any> = ({ node, editor, getPos }) => {\n const [isFocused, setIsFocused] = React.useState(false);\n\n React.useEffect(() => {\n const handler = () => {\n const { from, to } = editor.state.selection;\n const position = getPos();\n if (position >= from && position + node.nodeSize <= to) {\n setIsFocused(true);\n } else {\n setIsFocused(false);\n }\n };\n\n editor.on(\"selectionUpdate\", handler);\n return () => {\n editor.off(\"selectionUpdate\", handler);\n };\n }, [editor, getPos, node.nodeSize]);\n\n const remove = () => {\n const pos = getPos();\n editor\n .chain()\n .focus()\n .deleteRange({ from: pos, to: pos + node.nodeSize })\n .run();\n };\n\n return (\n <NodeViewWrapper\n as=\"span\"\n className={cn(\n \"inline-flex items-center gap-1 rounded-sm px-2 py-0.5 mx-2 text-sm font-medium\",\n DEFAULT_CHIP_CLASS,\n node.attrs.chipClassName,\n isFocused && \"ring-2 ring-offset-1 ring-ring\"\n )}\n >\n <span>{node.attrs.label ?? node.attrs.code ?? node.attrs.rawValue}</span>\n {(node.attrs.code || node.attrs.prefix) && (\n <span className=\"text-xs font-normal opacity-80\">\n ({node.attrs.prefix}\n {node.attrs.code ?? \"\"})\n </span>\n )}\n <button\n type=\"button\"\n onClick={remove}\n className=\"ml-1 cursor-pointer rounded-sm px-1 text-xs leading-none hover:bg-sus-primary-1/30\"\n aria-label={`Remove ${node.attrs.label ?? node.attrs.code ?? \"token\"}`}\n >\n ×\n </button>\n </NodeViewWrapper>\n );\n};\n\nfunction normalizeTokenAttrs(\n attrs: Partial<FormulaTokenAttributes>,\n config: FormulaTokenConfig\n): FormulaTokenAttributes {\n const idSource = attrs.id ?? attrs.code ?? attrs.label ?? Math.random().toString(36).slice(2);\n const prefix = attrs.prefix ?? config.prefix;\n const suffix = attrs.code ?? attrs.label ?? \"\";\n const outputType = attrs.outputType ?? config.outputType ?? config.type;\n return {\n ...attrs,\n id: String(idSource),\n type: config.type,\n prefix,\n chipClassName: attrs.chipClassName ?? config.chipClassName,\n rawValue: attrs.rawValue ?? (suffix ? `${prefix}${suffix}` : prefix),\n outputType\n } as FormulaTokenAttributes;\n}\n\nconst isPlainTextContext = (state: any, range: { from: number; to: number }) => {\n const { doc, schema } = state;\n const $from = doc.resolve(range.from);\n if ($from.parent.type.name !== \"paragraph\") return false;\n const marks = $from.marks();\n if (marks.some((mark: any) => DISALLOWED_MARKS.includes(mark.type.name))) return false;\n const linkMark = schema.marks.link;\n if (linkMark && linkMark.isInSet(marks)) return false;\n const nodeBefore = $from.nodeBefore;\n if (nodeBefore && nodeBefore.type.name === \"token\") return false;\n const nodeAfter = $from.nodeAfter;\n if (nodeAfter && nodeAfter.type.name === \"token\") return false;\n return true;\n};\n\nfunction suggestionPlugin({ config, onSelect, nodeName, editor, register }: SuggestionPluginOptions) {\n const pluginKey = new PluginKey(`formula-token-${config.type}-${config.prefix}`);\n const fetchItems = config.fetchItems ?? (async () => []);\n const mapItem = config.mapItem ?? ((item: any) => item as FormulaTokenAttributes);\n const normalizeForConfig = (attrs: Partial<FormulaTokenAttributes>) =>\n normalizeTokenAttrs(attrs, config);\n register({ key: pluginKey, config });\n\n return Suggestion<FormulaTokenAttributes>({\n editor,\n char: config.prefix,\n pluginKey,\n allowSpaces: true,\n startOfLine: false,\n items: () => [],\n allow: ({ state, range }) => {\n if (editor.view.composing) return false;\n return isPlainTextContext(state, range);\n },\n render: () => {\n let reactRoot: ReactDOM.Root | null = null;\n let container: HTMLDivElement | null = null;\n\n return {\n onStart: (props: SuggestionProps<FormulaTokenAttributes>) => {\n container = document.createElement(\"div\");\n document.body.appendChild(container);\n reactRoot = ReactDOM.createRoot(container);\n reactRoot.render(\n <SuggestionList\n {...props}\n editor={editor as any}\n fetchItems={fetchItems}\n mapItem={mapItem}\n normalizeToken={normalizeForConfig}\n debounceMs={SUGGESTION_DEBOUNCE}\n />\n );\n },\n onUpdate: (props: SuggestionProps<FormulaTokenAttributes>) => {\n reactRoot?.render(\n <SuggestionList\n {...props}\n editor={editor as any}\n fetchItems={fetchItems}\n mapItem={mapItem}\n normalizeToken={normalizeForConfig}\n debounceMs={SUGGESTION_DEBOUNCE}\n />\n );\n },\n onKeyDown: ({ event }) => {\n if (event.key === \"Escape\" || event.key === \"Enter\" || event.key === \"Tab\") {\n event.preventDefault();\n return true;\n }\n return false;\n },\n onExit: () => {\n reactRoot?.unmount();\n reactRoot = null;\n container?.remove();\n container = null;\n }\n };\n },\n command: ({ range, props, editor }) => {\n const attrs = normalizeTokenAttrs(props, config);\n const nextChar = editor.state.doc.textBetween(range.to, range.to + 1, \"\\n\", \"\\n\");\n const shouldInsertSpace = !nextChar || !/\\s/.test(nextChar);\n const content =\n shouldInsertSpace ?\n [\n { type: nodeName, attrs },\n { type: \"text\", text: \" \" }\n ]\n : { type: nodeName, attrs };\n\n editor.chain().focus().insertContentAt(range, content).run();\n onSelect?.(attrs, config);\n }\n }) as any;\n}\n\nconst createSuggestionMonitorPlugin = (registrations: SuggestionRegistration[]) =>\n new Plugin({\n key: new PluginKey(\"formula-token-suggestion-guard\"),\n view(editorView) {\n const ensureValid = () => {\n registrations.forEach(({ key, config }) => {\n const state = key.getState(editorView.state);\n if (!state?.active) return;\n const currentText = editorView.state.doc.textBetween(\n state.range.from,\n state.range.to,\n \"\\n\",\n \"\\n\"\n );\n if (!currentText || !currentText.startsWith(config.prefix)) {\n const tr = editorView.state.tr.setMeta(key, { exit: true });\n editorView.dispatch(tr);\n }\n });\n };\n\n ensureValid();\n return {\n update: () => ensureValid()\n };\n }\n });\n\nconst createTokenSpacingPlugin = (nodeName: string) =>\n new Plugin({\n key: new PluginKey(`formula-token-spacing-${nodeName}`),\n appendTransaction(transactions, oldState, newState) {\n if (!transactions.some((tr) => tr.docChanged)) return null;\n\n const insertions: { pos: number; text: string }[] = [];\n newState.doc.descendants((node: any, pos: number) => {\n if (node.type.name !== nodeName) return;\n\n const beforePos = pos - 1;\n if (beforePos >= 0) {\n const beforeChar = newState.doc.textBetween(beforePos, pos, \"\\n\", \"\\n\");\n if (beforeChar && !/\\s/.test(beforeChar)) {\n insertions.push({ pos, text: \" \" });\n }\n }\n\n const afterPos = pos + node.nodeSize;\n if (afterPos < newState.doc.content.size) {\n const afterChar = newState.doc.textBetween(afterPos, afterPos + 1, \"\\n\", \"\\n\");\n if (afterChar && !/\\s/.test(afterChar)) {\n insertions.push({ pos: afterPos, text: \" \" });\n }\n }\n });\n\n if (!insertions.length) return null;\n const tr = newState.tr;\n insertions\n .sort((a, b) => b.pos - a.pos)\n .forEach(({ pos, text }) => {\n tr.insertText(text, pos);\n });\n return tr;\n }\n });\n\nexport const Token = Node.create<TokenOptions>({\n name: \"token\",\n inline: true,\n group: \"inline\",\n atom: true,\n selectable: false,\n draggable: false,\n\n addAttributes() {\n return {\n type: { default: \"\" },\n id: { default: \"\" },\n code: { default: \"\" },\n label: { default: \"\" },\n prefix: { default: \"\" },\n rawValue: { default: \"\" },\n chipClassName: { default: \"\" },\n outputType: { default: \"\" }\n };\n },\n\n parseHTML() {\n return [{ tag: \"token-chip\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"token-chip\", mergeAttributes(HTMLAttributes), HTMLAttributes.label || \"\"];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(TokenView);\n },\n\n addProseMirrorPlugins() {\n const configs = this.options.configs ?? [];\n const registrations: SuggestionRegistration[] = [];\n const suggestionPlugins = configs.map((config) =>\n suggestionPlugin({\n config,\n onSelect: this.options.onSelect,\n nodeName: this.name,\n editor: this.editor,\n register: (entry) => registrations.push(entry)\n })\n );\n\n return [\n ...suggestionPlugins,\n createTokenSpacingPlugin(this.name),\n createSuggestionMonitorPlugin(registrations)\n ];\n }\n});\n\nexport const Operator = Node.create<OperatorOptions>({\n name: \"operator\",\n inline: true,\n group: \"inline\",\n atom: true,\n selectable: false,\n\n addAttributes() {\n return {\n value: { default: null }\n };\n },\n\n parseHTML() {\n return [{ tag: \"span[operator]\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"span\", mergeAttributes({ operator: HTMLAttributes.value }), HTMLAttributes.value];\n },\n\n addKeyboardShortcuts() {\n const shortcuts = this.options.shortcuts ?? {};\n return Object.fromEntries(\n Object.entries(shortcuts).map(([key, value]) => [\n key,\n ({ editor }) => {\n editor.chain().insertContent({ type: \"operator\", attrs: { value } }).insertContent(\" \").run();\n return true;\n }\n ])\n );\n }\n});\n","import type { FormulaTokenAttributes, FormulaTokenConfig, FormulaTokenType } from \"../types\";\n\nconst DEFAULT_PARENTHESIS_MAP: Record<string, string> = {\n \"(\": \")\",\n \"[\": \"]\",\n \"{\": \"}\"\n};\n\nexport type PrefixMap = Record<string, string>;\nexport type RawFormulaSegment =\n | { kind: \"text\"; value: string }\n | { kind: \"token\"; prefix: string; code: string };\n\nconst createSortedPrefixes = (prefixMap: PrefixMap) =>\n Object.keys(prefixMap).sort((a, b) => b.length - a.length);\n\nconst findPrefixAt = (value: string, start: number, prefixes: string[]) =>\n prefixes.find((prefix) => value.startsWith(prefix, start));\n\nconst pushVariableAndInner = (\n tokens: FormulaTokenType[],\n value: string,\n prefixMap: PrefixMap,\n prefixes: string[]\n) => {\n if (!value) return;\n tokens.push({ type: \"variable\", value });\n\n for (let cursor = 0; cursor < value.length; ) {\n const prefix = findPrefixAt(value, cursor, prefixes);\n if (!prefix) {\n cursor += 1;\n continue;\n }\n\n cursor += prefix.length;\n const rest = value.slice(cursor);\n const codeMatch = rest.match(/^\\w+/);\n if (codeMatch) {\n tokens.push({ type: prefixMap[prefix], code: codeMatch[0] });\n cursor += codeMatch[0].length;\n }\n }\n};\n\nexport const buildPrefixMap = (configs: FormulaTokenConfig[]): PrefixMap => {\n return configs.reduce((acc, config) => {\n const outputType = config.outputType ?? config.type;\n if (!acc[config.prefix]) acc[config.prefix] = outputType;\n return acc;\n }, {} as PrefixMap);\n};\n\nexport const tokenizeFormulaString = (raw: string, prefixMap: PrefixMap): RawFormulaSegment[] => {\n const segments: RawFormulaSegment[] = [];\n if (!raw) return segments;\n\n const prefixes = createSortedPrefixes(prefixMap);\n let buffer = \"\";\n\n const flushBuffer = () => {\n if (buffer) {\n segments.push({ kind: \"text\", value: buffer });\n buffer = \"\";\n }\n };\n\n for (let i = 0; i < raw.length; ) {\n const prefix = findPrefixAt(raw, i, prefixes);\n if (prefix) {\n const rest = raw.slice(i + prefix.length);\n const codeMatch = rest.match(/^\\w+/);\n if (codeMatch) {\n flushBuffer();\n segments.push({ kind: \"token\", prefix, code: codeMatch[0] });\n i += prefix.length + codeMatch[0].length;\n continue;\n }\n }\n\n buffer += raw[i];\n i += 1;\n }\n\n flushBuffer();\n return segments;\n};\n\nexport const parseFormulaToToken = (text: string, prefixMap: PrefixMap): FormulaTokenType[] => {\n const tokens: FormulaTokenType[] = [];\n if (!text) return tokens;\n\n const prefixes = createSortedPrefixes(prefixMap);\n const leadingPrefix = findPrefixAt(text, 0, prefixes);\n\n if (!leadingPrefix) {\n pushVariableAndInner(tokens, text, prefixMap, prefixes);\n return tokens;\n }\n\n const afterPrefix = text.slice(leadingPrefix.length);\n const codeMatch = afterPrefix.match(/^\\w+/);\n\n if (!codeMatch) {\n pushVariableAndInner(tokens, text, prefixMap, prefixes);\n return tokens;\n }\n\n tokens.push({ type: prefixMap[leadingPrefix], code: codeMatch[0] });\n const remaining = afterPrefix.slice(codeMatch[0].length);\n if (remaining) {\n let variablePart = remaining;\n\n if (remaining.startsWith(\":\") && remaining.includes(\"(\")) {\n let depth = 0;\n let endIndex = -1;\n for (let i = 0; i < remaining.length; i++) {\n if (remaining[i] === \"(\") depth += 1;\n else if (remaining[i] === \")\") depth -= 1;\n if (depth === 0 && remaining[i] === \")\") {\n endIndex = i;\n break;\n }\n }\n if (endIndex !== -1) {\n variablePart = remaining.slice(0, endIndex + 1);\n }\n }\n\n pushVariableAndInner(tokens, variablePart, prefixMap, prefixes);\n }\n\n return tokens;\n};\n\nexport const splitOperators = (value: string, allowedOperators: string[]): FormulaTokenType[] => {\n const result: FormulaTokenType[] = [];\n if (!value) return result;\n\n const sortedOperators = [...allowedOperators].sort((a, b) => b.length - a.length);\n let buffer = \"\";\n\n for (let i = 0; i < value.length; i += 1) {\n let matched = false;\n for (const operator of sortedOperators) {\n if (operator && value.startsWith(operator, i)) {\n if (buffer) {\n result.push({ type: \"variable\", value: buffer });\n buffer = \"\";\n }\n result.push({ type: \"operator\", value: operator });\n i += operator.length - 1;\n matched = true;\n break;\n }\n }\n\n if (!matched) buffer += value[i];\n }\n\n if (buffer) result.push({ type: \"variable\", value: buffer });\n return result;\n};\n\nexport const parseFormula = (\n editorJson: any,\n prefixMap: PrefixMap,\n allowedOperators: string[]\n): { raw: string; token: FormulaTokenType[] } => {\n const rawParts: string[] = [];\n const tokens: FormulaTokenType[] = [];\n\n const traverse = (nodes: any[] = []) => {\n nodes.forEach((node) => {\n if (!node) return;\n\n switch (node.type) {\n case \"text\": {\n const text = node.text ?? \"\";\n if (!text) return;\n rawParts.push(text);\n if (text.trim()) {\n tokens.push({ type: \"variable\", value: text });\n }\n break;\n }\n case \"operator\": {\n rawParts.push(node.attrs?.value ?? \"\");\n tokens.push({ type: \"operator\", value: node.attrs?.value ?? \"\" });\n break;\n }\n case \"op-library\": {\n rawParts.push(node.attrs?.value ?? \"\");\n tokens.push(...splitOperators(node.attrs?.value ?? \"\", allowedOperators));\n break;\n }\n case \"token\": {\n const attrs = node.attrs ?? {};\n const rawValue = attrs.rawValue ?? `${attrs.prefix ?? \"\"}${attrs.code ?? \"\"}`;\n rawParts.push(rawValue);\n const outputType = attrs.outputType ?? attrs.type ?? prefixMap[attrs.prefix ?? \"\"];\n tokens.push({ ...attrs, type: outputType });\n break;\n }\n default:\n if (node.content) traverse(node.content);\n }\n });\n };\n\n traverse(editorJson?.content ?? []);\n return { raw: rawParts.join(\"\"), token: tokens };\n};\n\nexport const validateTokenPrefixes = (\n rawFormula: string,\n prefixMap: PrefixMap\n): {\n isValid: boolean;\n message?: string;\n} => {\n const prefixes = Object.keys(prefixMap);\n if (prefixes.length === 0) return { isValid: true };\n\n const missingTypes = new Set<string>();\n for (let i = 0; i < rawFormula.length; i += 1) {\n const prefix = prefixes.find((key) => rawFormula.startsWith(key, i));\n if (prefix) {\n const nextChar = rawFormula[i + prefix.length];\n if (!nextChar || !/\\w/.test(nextChar)) {\n missingTypes.add(prefixMap[prefix]);\n }\n i += prefix.length;\n }\n }\n\n if (missingTypes.size > 0) {\n return {\n isValid: false,\n message: `Invalid token for ${Array.from(missingTypes).join(\" and \")}`\n };\n }\n\n return { isValid: true };\n};\n\nexport const isValidParentheses = (input: string): { valid: boolean; message?: string } => {\n const stack: string[] = [];\n const openers = Object.keys(DEFAULT_PARENTHESIS_MAP);\n const closers = Object.values(DEFAULT_PARENTHESIS_MAP);\n\n for (const char of input) {\n if (openers.includes(char)) {\n stack.push(char);\n } else if (closers.includes(char)) {\n const last = stack.pop();\n if (!last || DEFAULT_PARENTHESIS_MAP[last] !== char) {\n return { valid: false };\n }\n }\n }\n\n if (stack.length > 0) {\n return { valid: false };\n }\n\n return { valid: true };\n};\n\nexport const mapTokensToOutput = (tokens: FormulaTokenType[], configs: FormulaTokenConfig[]): any[] => {\n const prefixLookup = new Map<string, FormulaTokenConfig>();\n const typeLookup = new Map<string, FormulaTokenConfig>();\n\n configs.forEach((config) => {\n prefixLookup.set(config.prefix, config);\n typeLookup.set(config.outputType ?? config.type, config);\n });\n\n return tokens.map((token) => {\n if (!token || typeof token !== \"object\") return token;\n\n const tokenPrefix = \"prefix\" in token ? (token as FormulaTokenAttributes).prefix : undefined;\n const tokenType = \"type\" in token ? (token as FormulaTokenAttributes).type : undefined;\n\n const config =\n (tokenPrefix ? prefixLookup.get(tokenPrefix) : undefined) ??\n (tokenType ? typeLookup.get(String(tokenType)) : undefined);\n\n if (config?.mapOutput) {\n return config.mapOutput(token as FormulaTokenAttributes);\n }\n\n return token;\n });\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport { Maximize2, Minimize2 } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/utils\";\n\nimport { defaultOperators, defaultOperatorShortcuts } from \"./constants/formulaOperation\";\nimport { Operator, Token } from \"./editor/EditorExtension\";\nimport {\n buildPrefixMap,\n mapTokensToOutput,\n parseFormula,\n tokenizeFormulaString\n} from \"./utils/parseFormulaToken\";\nimport type { PrefixMap } from \"./utils/parseFormulaToken\";\nimport type { FormulaEditorProps, FormulaTokenAttributes, FormulaTokenConfig } from \"./types\";\n\nconst DEFAULT_TOKEN_CONFIGS: FormulaTokenConfig[] = [\n {\n type: \"position\",\n prefix: \"$\",\n chipClassName: \"text-black border border-sus-primary-1 outline-sus-primary-1\",\n fetchItems: async () => []\n },\n {\n type: \"impact\",\n prefix: \"#\",\n chipClassName: \"text-black border border-sus-primary-1 outline-sus-primary-1\",\n fetchItems: async () => []\n }\n];\n\nconst defaultMapItem = (item: Record<string, any>) => {\n const id = item?.id ?? item?.code ?? item?.label ?? Math.random().toString(36).slice(2);\n return {\n id: String(id),\n label: item?.label ?? item?.name ?? String(item?.code ?? item?.id ?? \"\"),\n code: item?.code ?? String(item?.id ?? \"\")\n };\n};\n\ntype NormalizedTokenConfig = FormulaTokenConfig & {\n fetchItems: NonNullable<FormulaTokenConfig[\"fetchItems\"]>;\n mapItem: NonNullable<FormulaTokenConfig[\"mapItem\"]>;\n outputType: string;\n mapOutput?: (attrs: FormulaTokenAttributes) => any;\n};\n\ntype JSONContent = {\n type: string;\n text?: string;\n attrs?: Record<string, any>;\n content?: JSONContent[];\n};\n\ntype JSONDoc = {\n type: \"doc\";\n content: JSONContent[];\n};\n\nconst looksLikeHTML = (value: string) => /<\\/?[a-z][\\s\\S]*>/i.test(value.trim());\n\nconst tryParseJSON = (value: string) => {\n try {\n const parsed = JSON.parse(value);\n if (parsed && typeof parsed === \"object\") {\n return parsed;\n }\n } catch {\n // ignore\n }\n return null;\n};\n\nconst buildDocFromRaw = (\n raw: string,\n prefixMap: PrefixMap,\n configLookup: Map<string, NormalizedTokenConfig>\n): JSONDoc => {\n const lines = raw.split(/\\r?\\n/);\n let tokenCounter = 0;\n\n const paragraphs = lines.map((line) => {\n const segments = tokenizeFormulaString(line, prefixMap);\n const content = segments\n .map<JSONContent | null>((segment) => {\n if (segment.kind === \"text\") {\n return segment.value ? { type: \"text\", text: segment.value } : null;\n }\n\n const config = configLookup.get(segment.prefix);\n const fallbackType = prefixMap[segment.prefix];\n const displayType = config?.type ?? fallbackType;\n const outputType = config?.outputType ?? fallbackType;\n\n if (!displayType && !outputType) {\n return { type: \"text\", text: `${segment.prefix}${segment.code}` };\n }\n\n const attrs: FormulaTokenAttributes = {\n id: `token-${tokenCounter++}`,\n type: displayType ?? outputType ?? \"token\",\n code: segment.code,\n prefix: segment.prefix,\n rawValue: `${segment.prefix}${segment.code}`,\n chipClassName: config?.chipClassName,\n label: segment.code,\n outputType: outputType ?? displayType\n };\n\n return { type: \"token\", attrs };\n })\n .filter((node): node is JSONContent => Boolean(node));\n\n return {\n type: \"paragraph\",\n content: content.length > 0 ? content : [{ type: \"text\", text: \"\" }]\n };\n });\n\n return { type: \"doc\", content: paragraphs };\n};\n\nexport const FormulaEditor: React.FC<FormulaEditorProps> = ({\n value,\n disabled,\n className,\n editorClassName,\n errorMessage,\n tokenConfigs,\n operators = defaultOperators,\n operatorShortcuts = defaultOperatorShortcuts,\n onChange,\n onSelectSuggestion,\n field,\n fieldState\n}) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const lastEmittedValueRef = useRef<string | undefined>(null);\n const ignorePropValueRef = useRef(false);\n\n const normalizedConfigs = useMemo<NormalizedTokenConfig[]>(() => {\n const configsToUse = tokenConfigs?.length ? tokenConfigs : DEFAULT_TOKEN_CONFIGS;\n return configsToUse.map((config) => ({\n ...config,\n fetchItems: config.fetchItems ?? (async () => []),\n mapItem: config.mapItem ?? ((item: Record<string, any>) => ({ ...item, ...defaultMapItem(item) })),\n outputType: config.outputType ?? config.type\n })) as NormalizedTokenConfig[];\n }, [tokenConfigs]);\n\n const prefixMap = useMemo(() => buildPrefixMap(normalizedConfigs), [normalizedConfigs]);\n const configLookup = useMemo(() => {\n const lookup = new Map<string, NormalizedTokenConfig>();\n normalizedConfigs.forEach((config) => {\n lookup.set(config.prefix, config);\n });\n return lookup;\n }, [normalizedConfigs]);\n const allowedOperators = useMemo(() => operators.map((operator) => operator.value), [operators]);\n const displayError = errorMessage ?? fieldState?.error?.message;\n const hasError = Boolean(displayError);\n\n const convertValueToContent = useCallback(\n (input?: string): string | JSONDoc => {\n if (!input) return \"\";\n const trimmed = input.trim();\n if (!trimmed) return \"\";\n\n const parsedJSON = tryParseJSON(trimmed);\n if (parsedJSON && parsedJSON.type === \"doc\") {\n return parsedJSON;\n }\n\n if (looksLikeHTML(trimmed)) {\n return input;\n }\n\n return buildDocFromRaw(input, prefixMap, configLookup);\n },\n [configLookup, prefixMap]\n );\n\n const resolvedContent = useMemo(() => convertValueToContent(value), [convertValueToContent, value]);\n\n const extensions = useMemo(\n () => [\n StarterKit.configure({ bold: false, italic: false }),\n Token.configure({ configs: normalizedConfigs, onSelect: onSelectSuggestion }),\n Operator.configure({ shortcuts: operatorShortcuts })\n ],\n [normalizedConfigs, onSelectSuggestion, operatorShortcuts]\n );\n\n const editor = useEditor({\n extensions,\n content: resolvedContent ?? \"\",\n onUpdate: ({ editor: nextEditor }) => {\n const { raw, token } = parseFormula(nextEditor.getJSON(), prefixMap, allowedOperators);\n const mappedTokens = mapTokensToOutput(token, normalizedConfigs);\n lastEmittedValueRef.current = raw;\n ignorePropValueRef.current = true;\n onChange?.(raw, mappedTokens);\n },\n editorProps: {\n attributes: {\n class: cn(\n isExpanded ? \"min-h-[300px] max-h-[300px]\" : \"min-h-[150px] max-h-[150px]\",\n hasError ? \"border border-destructive\" : \"border focus-visible:border-ring\",\n \"w-full rounded-lg bg-white px-4 py-3\",\n \"overflow-y-auto whitespace-pre-wrap wrap-break-word focus:outline-none\",\n disabled && \"pointer-events-none opacity-60\",\n editorClassName\n )\n }\n }\n });\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!disabled);\n }, [disabled, editor]);\n\n useEffect(() => {\n if (!editor || resolvedContent === undefined) return;\n\n if (\n ignorePropValueRef.current &&\n typeof value === \"string\" &&\n value === lastEmittedValueRef.current\n ) {\n ignorePropValueRef.current = false;\n return;\n }\n\n ignorePropValueRef.current = false;\n\n if (typeof resolvedContent === \"string\") {\n const currentHTML = editor.getHTML();\n if (resolvedContent !== currentHTML) {\n editor.commands.setContent(resolvedContent, { emitUpdate: false });\n }\n return;\n }\n\n const currentJSON = JSON.stringify(editor.getJSON());\n const nextJSON = JSON.stringify(resolvedContent);\n if (currentJSON !== nextJSON) {\n editor.commands.setContent(resolvedContent, { emitUpdate: false });\n }\n }, [editor, resolvedContent, value]);\n\n const insertOperator = (operator: string) => {\n editor\n ?.chain()\n .focus()\n .insertContent({ type: \"operator\", attrs: { value: operator } })\n .insertContent(\" \")\n .run();\n };\n\n return (\n <div className={cn(\"w-full space-y-2\", className)}>\n <div\n ref={field?.ref}\n onBlur={field?.onBlur}\n tabIndex={0}\n className=\"relative\"\n onFocus={() => {\n if (editor && !editor.isFocused) {\n editor.chain().focus().run();\n }\n }}\n >\n <EditorContent editor={editor} />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute bottom-2 right-4 h-6 w-6 rounded-full bg-white shadow\"\n onClick={() => setIsExpanded((prev) => !prev)}\n >\n {isExpanded ?\n <Minimize2 className=\"h-4 w-4\" />\n : <Maximize2 className=\"h-4 w-4\" />}\n </Button>\n </div>\n {hasError && (\n <p className=\"text-xs text-destructive\" role=\"alert\">\n {displayError}\n </p>\n )}\n <div className=\"flex flex-wrap justify-end gap-2 py-2\">\n {operators.map((operator) => (\n <Button\n key={operator.value}\n type=\"button\"\n onClick={() => insertOperator(operator.value)}\n className=\"min-w-10 rounded-sm px-3 bg-sus-blue-3\"\n disabled={disabled}\n >\n {operator.label}\n </Button>\n ))}\n </div>\n </div>\n );\n};\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport cn from \"../../utils/cn\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipArrow(props: React.ComponentProps<typeof TooltipPrimitive.Arrow>) {\n return <TooltipPrimitive.Arrow {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"relative bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md rounded-tl-none px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider,TooltipArrow }\n","// src/components/gridSettings/SortableRow.tsx\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { CircleMinus, GripVertical, Info } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Control, useWatch } from \"react-hook-form\";\nimport { cn } from \"@/utils\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/select\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/tooltip\";\nimport type { GridSettingsValues } from \"./schema\";\nimport type { Column } from \"./types\";\n\ninterface SortableRowProps {\n value: string;\n control: Control<GridSettingsValues>;\n name: `columns.${number}.id`;\n isDragging: boolean;\n availableColumns: Column[];\n onRemove?: () => void;\n}\n\nexport default function SortableRow({\n availableColumns,\n control,\n name,\n value,\n isDragging,\n onRemove\n}: SortableRowProps) {\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: value,\n disabled: name === \"columns.0.id\"\n });\n\n const style = React.useMemo<React.CSSProperties>(\n () => ({\n transform: CSS.Transform.toString(transform),\n transition\n }),\n [transform, transition]\n );\n\n const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n const currentFormColumns = useWatch({\n control,\n name: \"columns\"\n }) as GridSettingsValues[\"columns\"] | undefined;\n\n return (\n <div ref={setNodeRef} style={style} className=\"flex items-center rounded-md bg-white\">\n <FormField\n control={control}\n name={name}\n render={({ field }) => {\n const options = availableColumns\n .filter((col) => col.id === field.value || !currentFormColumns?.some((c) => c.id === col.id))\n .map((col) => ({ id: col.id, label: col?.label ? col.label : capitalize(col.id) }));\n\n return (\n <FormItem className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <GripVertical\n {...attributes}\n {...listeners}\n className={cn(\n \"h-5 w-5 text-[#B9B9B9] focus:outline-none cursor-grab\",\n name === \"columns.0.id\" && \"opacity-0 pointer-events-none\"\n )}\n />\n\n <Select\n value={field.value}\n onValueChange={field.onChange}\n disabled={name === \"columns.0.id\"}\n >\n <FormControl>\n <SelectTrigger\n className={cn(\n \"w-full border-[#DDDDDD] data-[disabled]:opacity-100 aria-invalid:border-[#BB0B0E]\",\n name === \"columns.0.id\" ?\n \"text-[#8B8B8B] bg-[#EAEAEA] cursor-not-allowed\"\n : \"cursor-pointer\"\n )}\n >\n <SelectValue placeholder=\"Choose column...\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent className=\"cursor-pointer overflow-hidden rounded-md [&_[data-radix-select-viewport]]:m-0\">\n {options\n .sort((a, b) =>\n a.id === field.value ? -1\n : b.id === field.value ? 1\n : 0\n )\n .map((opt) => (\n <SelectItem\n key={opt.id}\n value={opt.id}\n className={cn(\n \"cursor-pointer focus:bg-[#e8edea] first:rounded-t-md last:rounded-b-md hover:text-inherit\",\n opt.id === field.value ? \"font-bold bg-[#dae5de] focus:bg-[#dae5de]\" : \"\"\n )}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {name === \"columns.0.id\" ?\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Info className=\"h-5 w-5\" stroke=\"white\" fill=\"#8B8B8B\" />\n </TooltipTrigger>\n <TooltipContent\n align=\"start\"\n alignOffset={10}\n className=\"bg-[#8B8B8B] rounded-none\"\n >\n <p>Column cannot be removed.</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n : <CircleMinus\n onClick={onRemove}\n className=\"h-5 w-5 cursor-pointer\"\n stroke=\"white\"\n fill=\"#C32A2C\"\n />\n }\n </div>\n {!isDragging && <FormMessage className={cn(\"pl-6 text-[#BB0B0E]\")} />}\n </FormItem>\n );\n }}\n />\n </div>\n );\n}\n","import { z } from \"zod\";\n\nexport const ColumnSchema = z.object({\n id: z.string().nonempty(\"This field is required\"),\n label: z.string().optional()\n});\n\nexport const GridSettingsSchema = z.object({\n columns: z.array(ColumnSchema).min(1, \"At least one column is required\")\n});\nexport type GridSettingsValues = z.infer<typeof GridSettingsSchema>;\n","import { useEffect, useState, useRef } from \"react\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport { Form } from \"@/components/ui/form\";\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogTitle\n} from \"@/components/dialog\";\nimport { cn } from \"@/utils\";\nimport SortableRow from \"./SortableRow\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { restrictToParentElement, restrictToVerticalAxis } from \"@dnd-kit/modifiers\";\nimport { Plus, X } from \"lucide-react\";\nimport { Button } from \"@/components/button\";\nimport { GridSettingsSchema } from \"./schema\";\nimport type { GridSettingsValues } from \"./schema\";\nimport type { GridPayload, Column } from \"./types\";\n\nexport type GridSettingsModalProps = {\n isOpen: boolean;\n headerClassname?: string;\n descriptionClassname?: string;\n addButtonClassname?: string;\n saveButtonClassname?: string;\n availableColumns: Column[];\n currentColumns: Column[];\n limit?: number;\n onClose: () => void;\n onSaveColumns?: (payload: GridPayload, currentColumns: Column[]) => void;\n};\n\nconst GridSettingsModal = ({\n isOpen = false,\n headerClassname,\n descriptionClassname,\n addButtonClassname,\n saveButtonClassname,\n availableColumns,\n currentColumns,\n limit = availableColumns.length,\n onClose,\n onSaveColumns\n}: GridSettingsModalProps) => {\n const [isDragging, setIsDragging] = useState(false);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const form = useForm<GridSettingsValues>({\n resolver: zodResolver(GridSettingsSchema),\n defaultValues: { columns: currentColumns },\n mode: \"onChange\"\n });\n const { control, trigger } = form;\n const { fields, append, remove, move } = useFieldArray({\n control,\n name: \"columns\",\n keyName: \"fieldId\"\n });\n\n useEffect(() => {\n if (isOpen) {\n form.reset({ columns: currentColumns });\n }\n }, [isOpen, currentColumns, form]);\n\n const addColumn = async () => {\n const isValid = await trigger(\"columns\");\n\n if (isValid) {\n append({ id: \"\" });\n\n // Auto scroll\n requestAnimationFrame(() => {\n const container = scrollRef.current;\n if (container) {\n container.scrollTo({\n top: container.scrollHeight,\n behavior: \"smooth\"\n });\n }\n });\n } else {\n return;\n }\n };\n\n const onSubmit = (data: GridSettingsValues) => {\n const ordering = data.columns.map((i) => i.id);\n const visibility = Object.fromEntries(\n availableColumns.map((col) => [col.id, data.columns.some((c) => c.id === col.id)])\n );\n const pinning = { left: [data.columns[0].id] };\n\n if (onSaveColumns) {\n onSaveColumns({ ordering, visibility, pinning }, data.columns);\n }\n };\n\n // DnD\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n const oldIndex = fields.findIndex((f) => f.fieldId === active.id);\n const newIndex = fields.findIndex((f) => f.fieldId === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n move(oldIndex, newIndex);\n }\n }\n\n return (\n <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>\n <DialogContent className=\"sm:max-w-xl border-0 p-0 rounded-lg\">\n {/* Modal container */}\n <div className=\"flex flex-col min-h-[550px] rounded-lg overflow-hidden\">\n {/* Header */}\n <div className=\"flex-shrink-0\">\n <div\n className={cn(\n \"flex items-center justify-between bg-[#41875C] text-white px-4 py-2\",\n headerClassname\n )}\n >\n <DialogTitle className=\"text-xl\">Grid Settings</DialogTitle>\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className=\"flex items-center justify-center rounded-md hover:bg-white/10 transition cursor-pointer\"\n >\n <X className=\"h-6 w-6 text-white\" />\n </button>\n </div>\n\n <div\n className={cn(\n \"bg-[#818181] text-white px-4 py-2.5 flex items-center\",\n descriptionClassname\n )}\n >\n <DialogDescription className=\"text-white text-sm\">\n Add or remove columns. To change the column order, drag and drop a field.\n </DialogDescription>\n </div>\n </div>\n\n {/* Scrollable */}\n <div className=\"flex flex-col flex-1 px-12 my-10 overflow-hidden\">\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"flex flex-col flex-1\">\n <div\n ref={scrollRef}\n className=\"flex-1 overflow-y-auto overflow-x-hidden max-h-[35vh] [scrollbar-gutter:stable_both-edges]\"\n >\n <div className=\"space-y-3 px-6\">\n <div className=\"[&_button:not([disabled])]:cursor-pointer\">\n <SortableRow\n key={fields[0]?.fieldId}\n value={fields[0]?.fieldId}\n control={control}\n name={`columns.0.id`}\n isDragging={isDragging}\n availableColumns={availableColumns}\n />\n </div>\n\n <div className=\"space-y-3 [&_button:not([disabled])]:cursor-pointer\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToParentElement, restrictToVerticalAxis]}\n onDragStart={() => setIsDragging(true)}\n onDragEnd={(event) => {\n setIsDragging(false);\n handleDragEnd(event);\n }}\n >\n <SortableContext\n items={fields?.slice(1).map((c) => c?.fieldId)}\n strategy={verticalListSortingStrategy}\n >\n {fields?.slice(1).map((col, index) => (\n <SortableRow\n key={col?.fieldId}\n value={col?.fieldId}\n control={control}\n name={`columns.${index + 1}.id`}\n isDragging={isDragging}\n availableColumns={availableColumns}\n onRemove={() => remove(index + 1)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n </div>\n </div>\n\n <div className=\"sticky bottom-0 z-20 flex justify-center bg-white pt-3\">\n <Button\n type=\"button\"\n className={cn(\n \"bg-[#49865d] hover:bg-[#326446] text-white w-[350px] rounded-t-lg transition-colors\",\n addButtonClassname\n )}\n onClick={addColumn}\n disabled={fields.length >= limit}\n >\n <Plus className=\"h-4 w-4 mr-1\" /> Add column\n </Button>\n </div>\n </form>\n </Form>\n </div>\n\n {/* Footer */}\n <DialogFooter className=\"bottom-0 border-t bg-white\">\n <div className=\"flex gap-2 px-4 justify-end w-full\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n className=\"w-18 text-[#8B8B8B] border-[#B9B9B9]\"\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n className={cn(\"w-18 bg-[#379A2A] hover:bg-[#2f8524] text-white\", saveButtonClassname)}\n onClick={form.handleSubmit(onSubmit)}\n >\n Save\n </Button>\n </div>\n </DialogFooter>\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default GridSettingsModal;\n","import { create } from \"zustand\";\nimport type { Column, GridPayload } from \"../types\";\nimport type { RowData, Table } from \"@tanstack/react-table\";\n\ntype KeyOrString<T> = keyof T | (string & {});\n\ntype TanstackTableInstance = {\n getAllColumns(): any[];\n getVisibleLeafColumns(): any[];\n};\n\ntype UseGridSettingsStoreActions = {\n setAvailableColumns: (cols: Column[]) => void;\n setCurrentColumns: (cols: Column[]) => void;\n setPayload: (payload: GridPayload) => void;\n reset: () => void;\n extractColumns: (table: TanstackTableInstance) => {\n availableColumns: Column[];\n currentColumns: Column[];\n };\n syncColumnsState: <TData = RowData>(\n table: Table<TData>,\n options?: {\n excludeColumns: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Record<keyof TData, boolean>;\n }\n ) => void;\n};\n\ntype UseGridSettingsStoreState = {\n availableColumns: Column[];\n currentColumns: Column[];\n payload: GridPayload;\n};\n\nconst useGridSettingsStore = create<UseGridSettingsStoreState & UseGridSettingsStoreActions>(\n (set, get) => ({\n availableColumns: [],\n currentColumns: [],\n payload: {\n ordering: [],\n visibility: {},\n pinning: { left: [] }\n },\n setAvailableColumns: (cols: Column[]) => set({ availableColumns: cols }),\n setCurrentColumns: (cols: Column[]) => set({ currentColumns: cols }),\n setPayload: (payload: GridPayload) => set({ payload }),\n reset: () =>\n set({\n availableColumns: [],\n currentColumns: [],\n payload: { ordering: [], visibility: {}, pinning: { left: [] } }\n }),\n extractColumns: (table: TanstackTableInstance) => {\n const availableColumns = table.getAllColumns().map((col) => ({ id: col.id }));\n const currentColumns = table.getVisibleLeafColumns().map((col) => ({ id: col.id }));\n return { availableColumns, currentColumns };\n },\n syncColumnsState: <TData = RowData>(\n table: Table<TData>,\n options?: {\n excludeColumns?: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Record<keyof TData, boolean>;\n }\n ) => {\n const { availableColumns, currentColumns } = get().extractColumns(table);\n const { excludeColumns = [], labelMap = {}, visibility = {} } = options || {};\n\n const filteredExcludeColumnFn = (column: Column) => !excludeColumns.includes(column.id as any);\n\n const mapLabel = (col: Column) => ({\n id: col.id,\n label: labelMap?.[col.id as keyof typeof labelMap] ?? col.label ?? col.id\n });\n\n set({\n availableColumns: availableColumns.filter(filteredExcludeColumnFn).map(mapLabel),\n currentColumns: currentColumns\n .filter(filteredExcludeColumnFn)\n .filter((column) => {\n for (const [columnId, isVisible] of Object.entries(visibility)) {\n if (column.id === columnId && !isVisible) {\n return false;\n }\n }\n return true;\n })\n .map(mapLabel)\n });\n }\n })\n);\n\nexport default useGridSettingsStore;\n","import { Spinner } from \"@/components/spinner\";\nimport { cn } from \"@/utils\";\n\ntype LoadingOverlayProps = React.ComponentProps<\"div\"> & {\n fullscreen?: boolean;\n spinnerClassName?: string;\n};\n\nexport default function LoadingOverlay({\n className,\n fullscreen = true,\n spinnerClassName,\n ...props\n}: LoadingOverlayProps) {\n return (\n <div\n data-slot=\"loading-overlay\"\n className={cn(\n fullscreen ? \"fixed z-100\" : \"absolute z-10\",\n \"inset-0 flex items-center justify-center transition-opacity duration-300\",\n className\n )}\n {...props}\n >\n <Spinner className={cn(\"size-50\", spinnerClassName)} />\n </div>\n );\n}\n","import * as React from \"react\";\nimport LoadingOverlay from \"@/components/ui/LoadingOverlay\";\nimport { cn } from \"@/utils\";\n\nconst DEVICE_SIZES = [320, 420, 640, 768, 1024, 1280, 1536, 1920];\nconst IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\n\nexport type ImageLoaderProps = {\n src: string;\n width: number;\n quality?: number;\n};\n\nexport type ImageLoader = (props: ImageLoaderProps) => string;\n\nexport interface ImageProps\n extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\" | \"width\" | \"height\"> {\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n fill?: boolean;\n sizes?: string;\n quality?: number;\n priority?: boolean;\n placeholder?: \"empty\" | \"blur\";\n blurDataURL?: string;\n loader?: ImageLoader;\n unoptimized?: boolean;\n wrapperClassName?: string;\n objectFit?: React.CSSProperties[\"objectFit\"];\n objectPosition?: React.CSSProperties[\"objectPosition\"];\n onLoadingComplete?: (img: HTMLImageElement) => void;\n}\n\nconst defaultLoader: ImageLoader = ({ src }) => src;\n\nfunction toNumber(value?: number | string): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value === \"string\") {\n const parsed = parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n\n return undefined;\n}\n\nfunction formatDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction matchClosestSize(target: number): number {\n for (const size of IMAGE_SIZES) {\n if (size >= target) {\n return size;\n }\n }\n return DEVICE_SIZES[DEVICE_SIZES.length - 1];\n}\n\nfunction getCandidateWidths({\n width,\n sizes,\n fill\n}: {\n width?: number;\n sizes?: string;\n fill?: boolean;\n}): number[] {\n if (fill || sizes) {\n return DEVICE_SIZES;\n }\n\n if (typeof width === \"number\" && width > 0) {\n const targets = new Set<number>([width, width * 2]);\n return Array.from(targets)\n .map((target) => matchClosestSize(target))\n .sort((a, b) => a - b);\n }\n\n return DEVICE_SIZES;\n}\n\nexport const Image = React.forwardRef<HTMLImageElement, ImageProps>(function Image(\n {\n src,\n alt,\n width,\n height,\n fill = false,\n sizes,\n quality = 75,\n priority = false,\n placeholder = \"empty\",\n blurDataURL,\n loader = defaultLoader,\n unoptimized = false,\n wrapperClassName,\n className,\n objectFit,\n objectPosition,\n onLoadingComplete,\n style,\n ...imgProps\n },\n ref\n) {\n const {\n loading: loadingProp,\n fetchPriority: fetchPriorityProp,\n decoding: decodingProp,\n onLoad: onLoadProp,\n ...restImgProps\n } = imgProps;\n\n const widthNumber = toNumber(width);\n const heightNumber = toNumber(height);\n\n React.useEffect(() => {\n if (!fill && (!widthNumber || !heightNumber)) {\n console.warn(\n \"[Image] When `fill` is false you should provide both `width` and `height` to prevent layout shifts.\"\n );\n }\n }, [fill, heightNumber, widthNumber]);\n\n const candidateWidths = React.useMemo(\n () => getCandidateWidths({ width: widthNumber, sizes, fill }),\n [fill, sizes, widthNumber]\n );\n\n // Keep blurDataURL around to avoid passing it through to the DOM while the API transitions.\n void blurDataURL;\n\n const largestWidth =\n candidateWidths[candidateWidths.length - 1] ?? widthNumber ?? DEVICE_SIZES[DEVICE_SIZES.length - 1];\n\n const computedSrc = React.useMemo(() => {\n if (unoptimized) {\n return src;\n }\n\n return loader({ src, width: largestWidth, quality });\n }, [largestWidth, loader, quality, src, unoptimized]);\n\n const computedSrcSet = React.useMemo(() => {\n if (unoptimized) {\n return undefined;\n }\n\n return candidateWidths\n .map((currentWidth) => `${loader({ src, width: currentWidth, quality })} ${currentWidth}w`)\n .join(\", \");\n }, [candidateWidths, loader, quality, src, unoptimized]);\n\n const sizesValue =\n sizes ??\n (fill ? \"100vw\"\n : widthNumber ? `${widthNumber}px`\n : undefined);\n\n const [isLoaded, setIsLoaded] = React.useState(false);\n const internalRef = React.useRef<HTMLImageElement | null>(null);\n\n const setRefs = React.useCallback(\n (node: HTMLImageElement | null) => {\n internalRef.current = node;\n if (!ref) {\n return;\n }\n if (typeof ref === \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n },\n [ref]\n );\n\n React.useEffect(() => {\n const image = internalRef.current;\n if (!image) {\n return;\n }\n\n if (image.complete && image.naturalWidth > 0) {\n setIsLoaded(true);\n onLoadingComplete?.(image);\n } else {\n setIsLoaded(false);\n }\n }, [onLoadingComplete, src]);\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setIsLoaded(true);\n onLoadProp?.(event);\n onLoadingComplete?.(event.currentTarget);\n },\n [onLoadProp, onLoadingComplete]\n );\n\n const loading = priority ? \"eager\" : (loadingProp ?? \"lazy\");\n const fetchPriority = priority ? \"high\" : fetchPriorityProp;\n const decoding = decodingProp ?? \"async\";\n\n const resolvedObjectFit = objectFit ?? (fill ? \"cover\" : undefined);\n\n const wrapperStyle = React.useMemo<React.CSSProperties>(\n () => ({\n position: \"relative\",\n display: fill ? \"block\" : \"inline-block\",\n overflow: \"hidden\",\n width: fill ? \"100%\" : (formatDimension(width) ?? undefined),\n height: fill ? \"100%\" : (formatDimension(height) ?? undefined)\n }),\n [fill, height, width]\n );\n\n const imageStyle = React.useMemo<React.CSSProperties>(\n () => ({\n width: fill ? \"100%\" : (formatDimension(width) ?? undefined),\n height: fill ? \"100%\" : (formatDimension(height) ?? undefined),\n position: fill ? \"absolute\" : undefined,\n inset: fill ? 0 : undefined,\n objectFit: resolvedObjectFit,\n objectPosition,\n ...style\n }),\n [fill, height, objectPosition, resolvedObjectFit, style, width]\n );\n\n const shouldShowLoadingOverlay = placeholder === \"blur\";\n\n return (\n <span\n data-slot=\"image\"\n className={cn(\"relative overflow-hidden\", fill ? \"block\" : \"inline-block\", wrapperClassName)}\n style={wrapperStyle}\n >\n {shouldShowLoadingOverlay && (\n <LoadingOverlay\n aria-hidden\n fullscreen={false}\n spinnerClassName=\"size-6\"\n className={cn(\n // \"bg-white/75!\",\n isLoaded ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n />\n )}\n <img\n ref={setRefs}\n className={cn(\n \"block transition-opacity duration-300\",\n fill && \"absolute inset-0 size-full\",\n shouldShowLoadingOverlay && !isLoaded ? \"opacity-0\" : \"opacity-100\",\n className\n )}\n src={computedSrc}\n srcSet={computedSrcSet}\n sizes={sizesValue}\n width={fill ? undefined : widthNumber}\n height={fill ? undefined : heightNumber}\n alt={alt}\n loading={loading}\n fetchPriority={fetchPriority}\n decoding={decoding}\n onLoad={handleLoad}\n style={imageStyle}\n {...restImgProps}\n />\n </span>\n );\n});\n\nImage.displayName = \"Image\";\n","import * as React from \"react\";\n\nimport type { GridPayload } from \"../../grid-settings/types\";\n\nexport interface ListTableProps {\n gridSettingPayload?: GridPayload;\n onCreateExample?: () => void;\n onViewExample?: (exampleId: string) => void;\n onEditExample?: (exampleId: string) => void;\n onDeleteExample?: (exampleId: string) => void;\n selectedRowId?: string;\n onTableReady?: (table: unknown) => void;\n children?: React.ReactNode;\n}\n\nconst ListTable: React.FC<ListTableProps> = ({ onTableReady, children }) => {\n React.useEffect(() => {\n if (onTableReady) {\n onTableReady({ ready: true });\n }\n }, [onTableReady]);\n\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n {children ?? \"Provide your table implementation here.\"}\n </div>\n );\n};\n\nexport default ListTable;\n","import * as React from \"react\";\n\nimport { cn } from \"../../../utils\";\n\nexport interface ListContainerProps {\n className?: string;\n isLeftExpanded: boolean;\n children: React.ReactNode;\n}\n\nconst ListContainer: React.FC<ListContainerProps> = ({ className, isLeftExpanded, children }) => {\n return (\n <div\n className={cn(\n \"h-[calc(100vh-140px)] min-w-full overflow-hidden rounded-2xl border border-slate-300 bg-white shadow-lg transition-all duration-300 ease-in-out\",\n {\n \"w-full\": isLeftExpanded,\n \"md:w-full\": isLeftExpanded,\n \"w-full lg:w-1/2\": !isLeftExpanded\n },\n className\n )}\n style={{\n position: \"relative\",\n transitionProperty: \"width, transform\",\n transitionDuration: \"300ms\"\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default ListContainer;\n","import * as React from \"react\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { SuiSettingIcon } from \"../../icons\";\nimport { cn } from \"../../../utils\";\n\nexport interface ListHeaderProps {\n title: string | React.ReactNode;\n isExpanded?: boolean;\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n bgColor?: string;\n textClassName?: string;\n titleIcon?: React.ReactNode;\n rightActions?: React.ReactNode;\n className?: string;\n}\n\nconst ListHeader: React.FC<ListHeaderProps> = ({\n title,\n titleIcon,\n isExpanded = false,\n bgColor = \"bg-[#82B495]\",\n textClassName = \"text-white\",\n onSettingClick,\n onExpandClick,\n rightActions,\n className\n}) => {\n return (\n <div data-testid=\"list-header\" className={cn(\"rounded-t-lg px-4 py-2\", bgColor, className)}>\n <div className=\"flex items-center justify-between\">\n <div className={cn(\"flex items-center gap-2 text-lg\", textClassName)}>\n {titleIcon}\n <p className=\"leading-none\">{title}</p>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {rightActions ?? (\n <>\n {onSettingClick && (\n <button\n onClick={onSettingClick}\n title=\"Settings\"\n className=\"rounded p-1 hover:cursor-pointer hover:bg-white/20\"\n >\n <SuiSettingIcon className=\"text-white\" />\n </button>\n )}\n\n {onSettingClick && onExpandClick && (\n <div className={cn(\"h-8 w-px\", textClassName.replace(\"text-\", \"bg-\"))} />\n )}\n\n {onExpandClick && (\n <button\n data-testid=\"list-expand-button\"\n onClick={onExpandClick}\n title={isExpanded ? \"Collapse\" : \"Expand\"}\n className=\"rounded p-1 hover:cursor-pointer hover:bg-white/20\"\n >\n <span className=\"flex items-center gap-[2px] text-white\">\n {isExpanded ?\n <>\n <ChevronLeft className=\"h-4 w-4\" />\n <ChevronRight className=\"h-4 w-4 -ml-2\" />\n </>\n : <>\n <ChevronRight className=\"h-4 w-4\" />\n <ChevronLeft className=\"h-4 w-4 -ml-2\" />\n </>\n }\n </span>\n </button>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default ListHeader;\n","import * as React from \"react\";\nimport { CircleUserRound as UserIcon } from \"lucide-react\";\n\nimport type { GridPayload } from \"../grid-settings/types\";\nimport ListTable from \"./components/table\";\nimport ListContainer from \"./components/container\";\nimport ListHeader from \"./components/header\";\n\nexport type ListProps = {\n gridSettingPayload: GridPayload;\n isLeftExpanded: boolean;\n handleSettingClick: () => void;\n handleExpandClick: () => void;\n onCreateExample: () => void;\n onViewExample: (exampleId: string) => void;\n onEditExample: (exampleId: string) => void;\n onDeleteExample: (exampleId: string) => void;\n selectedRowId?: string;\n onTableReady?: (table: unknown) => void;\n children?: React.ReactNode;\n};\n\nconst List: React.FC<ListProps> = ({\n isLeftExpanded,\n handleSettingClick,\n handleExpandClick,\n onTableReady,\n children\n}) => {\n return (\n <ListContainer className=\"flex flex-col bg-white shadow-lg\" isLeftExpanded={isLeftExpanded}>\n <ListHeader\n title=\"Previous Example\"\n isExpanded={isLeftExpanded}\n onSettingClick={handleSettingClick}\n onExpandClick={handleExpandClick}\n titleIcon={<UserIcon className=\"h-6 w-6 text-white\" />}\n />\n\n <div className=\"flex h-full\">\n <ListTable onTableReady={onTableReady}>{children}</ListTable>\n </div>\n </ListContainer>\n );\n};\n\nexport default List;\n","import React from \"react\";\n\nconst InfoIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\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 {...props}\n >\n <path\n d=\"M10.0013 18.3327C14.6037 18.3327 18.3346 14.6017 18.3346 9.99935C18.3346 5.39698 14.6037 1.66602 10.0013 1.66602C5.39893 1.66602 1.66797 5.39698 1.66797 9.99935C1.66797 14.6017 5.39893 18.3327 10.0013 18.3327Z\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 13.3333V10\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 6.66602H10.0083\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default React.memo(InfoIcon);\n","// core\nimport React, { isValidElement } from \"react\";\n\n// components\nimport { CircleHelp } from \"lucide-react\";\nimport InfoIcon from \"../../assets/icon/InfoIcon\";\nimport { Button } from \"../button\";\n\n// hooks\nimport useScreenSize from \"../../hooks/useScreenSize/useScreenSize\";\n\n// utils\nimport cn from \"../../utils/cn\";\nimport { Tooltip, TooltipArrow, TooltipContent, TooltipTrigger } from \"../tooltip\";\n\ntype RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n\ntype NavbarBaseProps = {\n className?: string;\n title?: React.ReactNode;\n subTitle?: React.ReactNode;\n headImageURL?: string;\n headImageURLClassName?: string;\n tooltipContentClassName?: string;\n tooltipTitle?: string;\n tooltipIcon?: React.ReactNode;\n tooltipdescription?: React.ReactNode;\n tooltipDescriptionWrapperClassName?: string;\n mainButtonText?: React.ReactNode;\n mainButtonClassName?: string;\n mainButtonDisable?: boolean;\n subButtonText?: React.ReactNode;\n subButtonClassName?: string;\n subButtonDisable?: boolean;\n onMainButtonClick?: () => void;\n onSubButtonClick?: () => void;\n searchButton?: React.ReactNode;\n separatorDisable?: boolean;\n};\n\n// 👇 ใช้ utility type เพื่อบังคับว่า ต้องมีอย่างน้อย title หรือ headImageURL\nexport type NavbarProps = RequireAtLeastOne<NavbarBaseProps, \"title\">;\n\nconst Navbar = ({\n className,\n title,\n subTitle,\n headImageURL = \"\",\n headImageURLClassName,\n tooltipContentClassName = \"w-[450px] lg:!w-[630px]\",\n tooltipTitle,\n tooltipIcon,\n tooltipdescription,\n tooltipDescriptionWrapperClassName,\n mainButtonText,\n mainButtonClassName,\n mainButtonDisable = false,\n subButtonText,\n subButtonClassName,\n subButtonDisable = false,\n onMainButtonClick,\n onSubButtonClick,\n separatorDisable = false,\n searchButton\n}: NavbarProps) => {\n const { isMobile, isTablet, isDesktop } = useScreenSize();\n const Icon = CircleHelp;\n const shouldShowSeparator = !separatorDisable && isValidElement(searchButton);\n\n return (\n <nav\n className={cn(\n \"py-3 px-8 w-full h-16 bg-sus-primary-1 flex items-center justify-between\",\n className\n )}\n >\n {/* left content */}\n <div className=\"flex items-center gap-2.5\">\n {headImageURL !== \"\" ?\n <img src={headImageURL} alt=\"\" className={cn(\"w-full h-full\", headImageURLClassName)} />\n : <div className=\"flex flex-col\">\n {isValidElement(title) ? title : <h1 className=\"text-white text-xl font-bold\">{title}</h1>}\n {isValidElement(subTitle) ?\n subTitle\n : <h1 className=\"text-white text-sm font-semibold\">{subTitle}</h1>}\n </div>\n }\n {tooltipTitle && (\n <Tooltip>\n <TooltipTrigger asChild>\n <button className=\"text-white hover:opacity-80 \">\n <InfoIcon className=\"w-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent\n forceMount\n side={isDesktop ? \"right\" : \"bottom\"}\n align=\"start\"\n avoidCollisions={false}\n className={cn(\n \"bg-white border border-black p-6\",\n \"transition-all duration-150 ease-out origin-top top-1 left-4\",\n \"data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n \"data-[state=closed]:scale-95 data-[state=open]:scale-100\",\n { \"mt-5\": isDesktop },\n tooltipContentClassName\n )}\n >\n <div\n role=\"tooltip\"\n aria-label={tooltipTitle}\n className={cn(\n \"flex flex-col gap-4 text-sm text-black text-pretty \",\n tooltipDescriptionWrapperClassName\n )}\n >\n {tooltipTitle && (\n <div className=\"flex items-center gap-3\">\n {isValidElement(tooltipIcon) ? tooltipIcon : <Icon size={32} aria-hidden=\"true\" />}\n <h3 className=\"text-xl font-bold\">{tooltipTitle}</h3>\n </div>\n )}\n {isValidElement(tooltipdescription) && tooltipdescription}\n </div>\n <TooltipArrow className=\"-my-px border-none fill-white\" asChild>\n <svg\n width={isDesktop ? 35 : 33}\n height={35}\n viewBox=\"0 0 40 35\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn({\n \"rotate-90 visible\": isTablet || isMobile,\n \"\": isDesktop\n })}\n >\n <path d=\"M0 0 L40 0 L0 35 Z\" fill=\"white\" />\n {isDesktop ?\n <>\n <line x1=\"0\" y1=\"40\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2.5\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n : <>\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n }\n </svg>\n </TooltipArrow>\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n\n {/* right content */}\n <div className=\"flex items-center gap-3\">\n {mainButtonText && (\n <Button\n disabled={mainButtonDisable}\n className={cn(\"bg-sus-secondary-1 hover:bg-sus-secondary-hover\", mainButtonClassName)}\n size=\"lg\"\n onClick={onMainButtonClick}\n >\n {mainButtonText}\n </Button>\n )}\n {subButtonText && (\n <Button\n disabled={subButtonDisable}\n className={cn(\"bg-sus-primary-2 hover:bg-sus-primary-2-hover\", subButtonClassName)}\n size=\"lg\"\n onClick={onSubButtonClick}\n >\n {subButtonText}\n </Button>\n )}\n {shouldShowSeparator && <div role=\"separator\" className=\"ml-1 w-[1px] h-10 bg-white\" />}\n {isValidElement(searchButton) ? searchButton : \"\"}\n </div>\n </nav>\n );\n};\n\nexport default React.memo(Navbar);\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-1.5 p-4\", className)} {...props} />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription\n};\n","import { create } from \"zustand\";\n\ntype PreventPageLeaveStore = {\n isPreventing: boolean;\n setPreventing: (value: boolean) => void;\n};\n\nexport const usePreventPageLeaveStore = create<PreventPageLeaveStore>((set) => ({\n isPreventing: false,\n setPreventing: (value) => set({ isPreventing: value })\n}));\n\nexport default usePreventPageLeaveStore;\n","import React, { useEffect } from \"react\";\nimport { usePreventPageLeaveStore } from \"./store/usePreventPageLeaveStore\";\n\nconst PreventPageLeave = ({ children }: React.PropsWithChildren) => {\n const { isPreventing } = usePreventPageLeaveStore();\n\n useEffect(() => {\n if (!isPreventing || typeof window === \"undefined\") {\n return;\n }\n\n function beforeUnload(event: BeforeUnloadEvent) {\n event.preventDefault();\n\n // Included for legacy support, e.g. Chrome/Edge < 119\n event.returnValue = true;\n }\n\n window.addEventListener(\"beforeunload\", beforeUnload);\n return () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n };\n }, [isPreventing]);\n\n return children;\n};\n\nexport default PreventPageLeave;\n","import { useEffect } from \"react\";\nimport { usePreventPageLeaveStore } from \"../store\";\n\nexport type UsePreventPageLeaveOptions = {\n isPrevening: boolean;\n};\n\nconst usePreventPageLeave = ({ isPrevening }: UsePreventPageLeaveOptions) => {\n const setPreventing = usePreventPageLeaveStore((state) => state.setPreventing);\n\n useEffect(() => {\n setPreventing(isPrevening);\n }, [isPrevening, setPreventing]);\n};\n\nexport default usePreventPageLeave;\n","import { cn } from \"@/utils\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nexport function RadioGroupRoot({\n children,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <form>\n <RadioGroupPrimitive.Root {...props}>{children}</RadioGroupPrimitive.Root>\n </form>\n );\n}\n\nexport function RadioGroupItem({\n id,\n value,\n children,\n className,\n containerProps,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {\n value: string;\n containerProps?: React.ComponentProps<\"div\">;\n}) {\n return (\n <div className=\"flex items-center\" {...containerProps}>\n <RadioGroupPrimitive.Item\n className={cn(\n \"size-5 cursor-default rounded-full border-2 border-black bg-white outline-none focus:shadow-black data-[state=checked]:border-[#5181B8] data-[state=checked]:scale-90 data-[state=checked]:border-1\",\n className\n )}\n value={value}\n id={id}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"relative flex size-full items-center justify-center after:block after:size-[11px] after:rounded-full after:bg-[#5181B8]\" />\n </RadioGroupPrimitive.Item>\n {children}\n </div>\n );\n}\n\nexport function RadioLabel({ children, htmlFor, className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label className={cn(\"pl-4 leading-none text-black\", className)} htmlFor={htmlFor} {...props}>\n {children}\n </label>\n );\n}\n","import * as React from \"react\";\nimport type { LexicalNode, NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\nimport { cn } from \"@/utils\";\n\nexport type ImagePayload = {\n src: string;\n altText?: string;\n width?: number | \"inherit\";\n height?: number | \"inherit\";\n};\n\nexport type SerializedImageNode = Spread<\n {\n type: \"image\";\n version: 1;\n },\n {\n src: string;\n altText: string;\n width: number | \"inherit\";\n height: number | \"inherit\";\n } & SerializedLexicalNode\n>;\n\nconst defaultDimensions = {\n width: \"inherit\" as const,\n height: \"inherit\" as const\n};\n\nfunction ImageComponent({\n altText,\n src,\n width,\n height\n}: {\n altText: string;\n src: string;\n width: number | \"inherit\";\n height: number | \"inherit\";\n}) {\n const style: React.CSSProperties = {\n width: typeof width === \"number\" ? `${width}px` : undefined,\n height: typeof height === \"number\" ? `${height}px` : undefined\n };\n\n return (\n <span className=\"block max-w-full\" contentEditable={false}>\n <img\n src={src}\n alt={altText || \"\"}\n draggable={false}\n className={cn(\n \"max-w-full rounded-md border border-border/60 bg-muted object-contain\",\n \"shadow-sm transition-transform hover:shadow\"\n )}\n style={style}\n />\n </span>\n );\n}\n\nexport class ImageNode extends DecoratorNode<React.ReactNode> {\n __src: string;\n __altText: string;\n __width: number | \"inherit\";\n __height: number | \"inherit\";\n\n static getType(): string {\n return \"image\";\n }\n\n static clone(node: ImageNode): ImageNode {\n return new ImageNode(\n node.__src,\n {\n altText: node.__altText,\n width: node.__width,\n height: node.__height\n },\n node.getKey()\n );\n }\n\n constructor(src: string, payload?: Omit<ImagePayload, \"src\">, key?: NodeKey) {\n super(key);\n const {\n altText = \"\",\n width = defaultDimensions.width,\n height = defaultDimensions.height\n } = payload ?? {};\n\n this.__src = src;\n this.__altText = altText;\n this.__width = width;\n this.__height = height;\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { src, altText, width, height } = serializedNode;\n return new ImageNode(src, {\n altText,\n width,\n height\n });\n }\n\n exportJSON(): SerializedImageNode {\n return {\n type: \"image\",\n version: 1,\n src: this.__src,\n altText: this.__altText,\n width: this.__width,\n height: this.__height\n };\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"span\");\n }\n\n updateDOM(): false {\n return false;\n }\n\n decorate(): React.ReactNode {\n return (\n <ImageComponent\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n />\n );\n }\n\n isInline(): false {\n return false;\n }\n\n extractWithChild(): boolean {\n return false;\n }\n\n exportDOM(): { element: HTMLElement } {\n const element = document.createElement(\"img\");\n element.setAttribute(\"src\", this.__src);\n if (this.__altText) {\n element.setAttribute(\"alt\", this.__altText);\n }\n\n return { element };\n }\n\n getTextContent(): string {\n return this.__altText;\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable();\n writable.__src = src;\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n setDimensions(width: number | \"inherit\", height: number | \"inherit\"): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n getWidth(): number | \"inherit\" {\n return this.__width;\n }\n\n getHeight(): number | \"inherit\" {\n return this.__height;\n }\n}\n\nexport function $createImageNode({ src, altText, width, height }: ImagePayload): ImageNode {\n return new ImageNode(src, {\n altText,\n width: width ?? defaultDimensions.width,\n height: height ?? defaultDimensions.height\n });\n}\n\nexport function $isImageNode(node?: LexicalNode | null): node is ImageNode {\n return node instanceof ImageNode;\n}\n","import * as React from \"react\";\nimport { forwardRef, useCallback, useMemo, useRef, useState } from \"react\";\nimport type {\n EditorState,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditorState,\n SerializedLexicalNode\n} from \"lexical\";\nimport {\n $createParagraphNode,\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_NORMAL,\n FORMAT_ELEMENT_COMMAND,\n FORMAT_TEXT_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n UNDO_COMMAND,\n createCommand\n} from \"lexical\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport {\n HeadingNode,\n QuoteNode,\n $createHeadingNode,\n $createQuoteNode,\n $isHeadingNode\n} from \"@lexical/rich-text\";\nimport {\n ListNode,\n ListItemNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n $isListNode\n} from \"@lexical/list\";\nimport { LinkNode, TOGGLE_LINK_COMMAND, $createLinkNode, $isLinkNode } from \"@lexical/link\";\nimport { CodeNode, $createCodeNode, $isCodeNode } from \"@lexical/code\";\nimport { TRANSFORMERS } from \"@lexical/markdown\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport {\n AlignCenter,\n AlignLeft,\n AlignRight,\n Bold,\n Code as InlineCodeIcon,\n CodeSquare,\n Heading1,\n Heading2,\n Heading3,\n Italic,\n Image as ImageIcon,\n Link as LinkIcon,\n Link2Off,\n List as BulletListIcon,\n ListOrdered,\n Pilcrow,\n Quote as QuoteIcon,\n Redo,\n Strikethrough,\n Underline,\n Undo\n} from \"lucide-react\";\nimport { useForm } from \"react-hook-form\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Dialog, DialogContent, DialogFooter } from \"@/components/ui/dialog\";\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/input\";\nimport { ImageNode, $createImageNode, $isImageNode, type ImagePayload } from \"./ImageNode\";\n\ntype RichTextSerializedState = string;\n\ntype ToolbarBlockType = \"paragraph\" | \"h1\" | \"h2\" | \"h3\" | \"bullet\" | \"number\" | \"quote\" | \"code\";\n\ntype EditorSerializedState = SerializedEditorState<SerializedLexicalNode>;\n\ntype ImageUploadResult = ImagePayload | string;\n\ntype RichTextProps = {\n value?: RichTextSerializedState;\n defaultValue?: RichTextSerializedState;\n onChange?: (serializedState: RichTextSerializedState, editorState: EditorState) => void;\n onHtmlChange?: (html: string, editorState: EditorState) => void;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n editorClassName?: string;\n toolbarClassName?: string;\n autoFocus?: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n acceptImageMimeTypes?: string;\n allowImageUrlInsert?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst theme = {\n paragraph: \"mb-2 leading-6 text-sm text-foreground\",\n placeholder:\n \"pointer-events-none absolute left-0 top-0 px-3 py-2 text-sm text-muted-foreground select-none\",\n quote: \"border-l-2 border-border pl-3 italic text-muted-foreground\",\n heading: {\n h1: \"scroll-m-20 text-2xl font-semibold tracking-tight\",\n h2: \"scroll-m-20 text-xl font-semibold tracking-tight\",\n h3: \"scroll-m-20 text-lg font-semibold tracking-tight\"\n },\n list: {\n listitem: \"ml-4 marker:text-muted-foreground [&:not(:last-child)]:mb-1\",\n nested: {\n listitem: \"ml-4\"\n },\n ol: \"ml-4 list-decimal pl-1\",\n ul: \"ml-4 list-disc pl-1\"\n },\n text: {\n bold: \"font-semibold\",\n italic: \"italic\",\n underline: \"underline underline-offset-4\",\n strikethrough: \"line-through\",\n code: \"rounded bg-muted px-1 py-[2px] font-mono text-[13px]\"\n },\n link: \"text-primary underline underline-offset-4\",\n code: \"relative block overflow-x-auto rounded-md border border-border bg-muted px-3 py-2 font-mono text-sm text-foreground shadow-sm\"\n};\n\nconst nodes = [HeadingNode, QuoteNode, ListNode, ListItemNode, LinkNode, CodeNode, ImageNode];\n\nconst INSERT_IMAGE_COMMAND = createCommand<ImagePayload>(\"INSERT_IMAGE_COMMAND\");\nconst DEFAULT_IMAGE_ACCEPT = \"image/*\";\n\nfunction parseSerializedEditorState(raw?: RichTextSerializedState): EditorSerializedState | undefined {\n if (!raw) {\n return undefined;\n }\n\n try {\n return JSON.parse(raw) as EditorSerializedState;\n } catch (error) {\n console.error(\"[RichText] Failed to parse editor state:\", error);\n return undefined;\n }\n}\n\nfunction Placeholder({ placeholder }: { placeholder: string }) {\n return <div className={theme.placeholder}>{placeholder}</div>;\n}\n\ntype ToolbarToggleState = {\n isBold: boolean;\n isItalic: boolean;\n isUnderline: boolean;\n isStrikethrough: boolean;\n isCode: boolean;\n isLink: boolean;\n blockType: ToolbarBlockType;\n elementFormat: ElementFormatType | null;\n canUndo: boolean;\n canRedo: boolean;\n};\n\nconst initialToolbarState: ToolbarToggleState = {\n isBold: false,\n isItalic: false,\n isUnderline: false,\n isStrikethrough: false,\n isCode: false,\n isLink: false,\n blockType: \"paragraph\",\n elementFormat: null,\n canUndo: false,\n canRedo: false\n};\n\ntype ToolbarButtonProps = {\n label: string;\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n onClick: () => void;\n active?: boolean;\n disabled?: boolean;\n};\n\nfunction ToolbarButton({ label, icon: Icon, onClick, active, disabled }: ToolbarButtonProps) {\n return (\n <button\n type=\"button\"\n title={label}\n onClick={onClick}\n disabled={disabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-sm transition-colors\",\n \"text-muted-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n active ? \"bg-accent text-accent-foreground shadow-sm\" : \"\",\n disabled ? \"pointer-events-none opacity-40\" : \"\"\n )}\n >\n <Icon className=\"h-4 w-4\" aria-hidden />\n <span className=\"sr-only\">{label}</span>\n </button>\n );\n}\n\ntype ToolbarPluginProps = {\n disabled: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n allowImageUrlInsert?: boolean;\n acceptImageMimeTypes?: string;\n};\n\ntype LinkFormValues = {\n url: string;\n label: string;\n};\n\ntype ImageFormValues = {\n url: string;\n alt: string;\n width: string;\n height: string;\n};\n\nfunction placeCaretAfterImage(imageNode: ImageNode) {\n const nextSibling = imageNode.getNextSibling();\n\n if (!nextSibling || $isImageNode(nextSibling)) {\n const paragraph = $createParagraphNode();\n const textNode = $createTextNode(\"\");\n paragraph.append(textNode);\n imageNode.insertAfter(paragraph);\n textNode.select(0, 0);\n return;\n }\n\n imageNode.selectNext(0, 0);\n}\n\nfunction ToolbarPlugin({\n disabled,\n onImageUpload,\n onImageUploadError,\n allowImageUrlInsert = true,\n acceptImageMimeTypes\n}: ToolbarPluginProps) {\n const [editor] = useLexicalComposerContext();\n const [state, setState] = useState<ToolbarToggleState>(initialToolbarState);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [isLinkDialogOpen, setLinkDialogOpen] = useState(false);\n const [editingExistingLink, setEditingExistingLink] = useState(false);\n const [linkNodeKey, setLinkNodeKey] = useState<NodeKey | null>(null);\n const [isImageDialogOpen, setImageDialogOpen] = useState(false);\n const [editingExistingImage, setEditingExistingImage] = useState(false);\n const [imageNodeKey, setImageNodeKey] = useState<NodeKey | null>(null);\n\n const linkForm = useForm<LinkFormValues>({\n defaultValues: { url: \"\", label: \"\" }\n });\n\n const imageForm = useForm<ImageFormValues>({\n defaultValues: { url: \"\", alt: \"\", width: \"\", height: \"\" }\n });\n\n const openImageDialog = useCallback(() => {\n if (disabled || !allowImageUrlInsert) {\n return;\n }\n\n const targetImage = editor.getEditorState().read((): ReturnType<typeof $createImageNode> | null => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return null;\n }\n\n const nodes = selection.getNodes();\n for (const node of nodes) {\n if ($isImageNode(node)) {\n return node;\n }\n }\n\n return null;\n });\n\n const width = targetImage?.getWidth();\n const height = targetImage?.getHeight();\n const initialUrl = targetImage?.getSrc() ?? \"\";\n const initialAlt = targetImage?.getAltText() ?? \"\";\n const initialWidth = typeof width === \"number\" ? String(width) : \"\";\n const initialHeight = typeof height === \"number\" ? String(height) : \"\";\n\n imageForm.clearErrors();\n imageForm.reset({\n url: initialUrl,\n alt: initialAlt,\n width: initialWidth,\n height: initialHeight\n });\n setEditingExistingImage(Boolean(targetImage));\n setImageNodeKey(targetImage?.getKey() ?? null);\n setImageDialogOpen(true);\n }, [allowImageUrlInsert, disabled, editor, imageForm]);\n\n const closeImageDialog = useCallback(() => {\n setImageDialogOpen(false);\n setEditingExistingImage(false);\n setImageNodeKey(null);\n imageForm.reset();\n setTimeout(() => {\n editor.focus();\n }, 0);\n }, [editor, imageForm]);\n\n const openLinkDialog = useCallback(() => {\n if (disabled) {\n return;\n }\n\n const { initialUrl, initialLabel, detectedLink } = editor.getEditorState().read(\n (): {\n initialUrl: string;\n initialLabel: string;\n detectedLink: ReturnType<typeof $createLinkNode> | null;\n } => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return { initialUrl: \"\", initialLabel: \"\", detectedLink: null };\n }\n\n const nodes = selection.getNodes();\n let label = selection.getTextContent().trim();\n let url = \"\";\n let found: ReturnType<typeof $createLinkNode> | null = null;\n\n for (const node of nodes) {\n const linkNode =\n $isLinkNode(node) ? node\n : $isLinkNode(node.getParent()) ? (node.getParent() as LinkNode)\n : null;\n\n if (linkNode) {\n url = linkNode.getURL();\n if (!label) {\n label = linkNode.getTextContent().trim();\n }\n found = linkNode;\n break;\n }\n }\n\n if (!label && url) {\n label = url;\n }\n\n return { initialUrl: url, initialLabel: label, detectedLink: found };\n }\n );\n\n linkForm.clearErrors();\n linkForm.reset({\n url: initialUrl,\n label: initialLabel\n });\n setEditingExistingLink(Boolean(detectedLink));\n setLinkNodeKey(detectedLink?.getKey() ?? null);\n setLinkDialogOpen(true);\n }, [disabled, editor, linkForm]);\n\n const closeLinkDialog = useCallback(() => {\n setLinkDialogOpen(false);\n setEditingExistingLink(false);\n setLinkNodeKey(null);\n linkForm.reset();\n setTimeout(() => {\n editor.focus();\n }, 0);\n }, [editor, linkForm]);\n\n const handleLinkSubmit = linkForm.handleSubmit(({ url, label }) => {\n const trimmedUrl = url.trim();\n const trimmedLabel = label.trim();\n\n if (!trimmedUrl) {\n linkForm.setError(\"url\", { type: \"required\", message: \"Please enter a URL.\" });\n return;\n }\n\n editor.focus();\n\n editor.update(() => {\n const labelToApply = trimmedLabel || trimmedUrl;\n\n if (editingExistingLink && linkNodeKey) {\n const existingNode = $getNodeByKey<LexicalNode>(linkNodeKey);\n if ($isLinkNode(existingNode)) {\n existingNode.setURL(trimmedUrl);\n existingNode.clear();\n existingNode.append($createTextNode(labelToApply));\n existingNode.select();\n return;\n }\n }\n\n const selection = $getSelection();\n const linkNode = $createLinkNode(trimmedUrl);\n linkNode.append($createTextNode(labelToApply));\n\n if ($isRangeSelection(selection)) {\n selection.insertNodes([linkNode]);\n } else {\n $insertNodes([linkNode]);\n }\n\n linkNode.select();\n });\n\n closeLinkDialog();\n });\n\n const handleRemoveLink = useCallback(() => {\n editor.focus();\n editor.update(() => {\n if (linkNodeKey) {\n const node = $getNodeByKey<LexicalNode>(linkNodeKey);\n if ($isLinkNode(node)) {\n node.remove();\n return;\n }\n }\n\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n });\n\n closeLinkDialog();\n }, [closeLinkDialog, editor, linkNodeKey]);\n\n const handleLinkDialogOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n setLinkDialogOpen(true);\n } else {\n closeLinkDialog();\n }\n },\n [closeLinkDialog]\n );\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const anchorNode = selection.anchor.getNode();\n const element = anchorNode.getKey() === \"root\" ? anchorNode : anchorNode.getTopLevelElementOrThrow();\n let blockType: ToolbarBlockType = \"paragraph\";\n\n let parentNode: LexicalNode | null = anchorNode;\n\n while (parentNode) {\n if ($isListNode(parentNode)) {\n blockType = parentNode.getTag() === \"ol\" ? \"number\" : \"bullet\";\n break;\n }\n parentNode = parentNode.getParent();\n }\n\n if (blockType === \"paragraph\") {\n if ($isHeadingNode(element)) {\n blockType = element.getTag() as ToolbarBlockType;\n } else if ($isCodeNode(element)) {\n blockType = \"code\";\n } else if (element.getType() === \"quote\") {\n blockType = \"quote\";\n }\n }\n\n const nodes = selection.getNodes();\n const hasLink = nodes.some((node) => $isLinkNode(node) || $isLinkNode(node.getParent()));\n const elementFormat =\n (element as unknown as { getFormatType?: () => ElementFormatType | null }).getFormatType?.() ??\n null;\n\n setState((current) => ({\n ...current,\n blockType,\n elementFormat,\n isBold: selection.hasFormat(\"bold\"),\n isItalic: selection.hasFormat(\"italic\"),\n isUnderline: selection.hasFormat(\"underline\"),\n isStrikethrough: selection.hasFormat(\"strikethrough\"),\n isCode: selection.hasFormat(\"code\"),\n isLink: hasLink\n }));\n }, []);\n\n React.useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CAN_UNDO_COMMAND,\n (payload) => {\n setState((current) => ({ ...current, canUndo: payload }));\n return false;\n },\n COMMAND_PRIORITY_NORMAL\n ),\n editor.registerCommand(\n CAN_REDO_COMMAND,\n (payload) => {\n setState((current) => ({ ...current, canRedo: payload }));\n return false;\n },\n COMMAND_PRIORITY_NORMAL\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(updateToolbar);\n })\n );\n }, [editor, updateToolbar]);\n\n const applyBlock = useCallback(\n (nextBlock: ToolbarBlockType) => {\n if (disabled) {\n return;\n }\n\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n switch (nextBlock) {\n case \"paragraph\": {\n $setBlocksType(selection, () => $createParagraphNode());\n break;\n }\n case \"h1\":\n case \"h2\":\n case \"h3\": {\n if (state.blockType === nextBlock) {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createHeadingNode(nextBlock));\n }\n break;\n }\n case \"bullet\": {\n if (state.blockType === \"bullet\") {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n break;\n }\n case \"number\": {\n if (state.blockType === \"number\") {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n break;\n }\n case \"quote\": {\n if (state.blockType === \"quote\") {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createQuoteNode());\n }\n break;\n }\n case \"code\": {\n if (state.blockType === \"code\") {\n $setBlocksType(selection, () => $createParagraphNode());\n } else {\n $setBlocksType(selection, () => $createCodeNode());\n }\n break;\n }\n default:\n break;\n }\n });\n },\n [disabled, editor, state.blockType]\n );\n\n const toggleFormat = useCallback(\n (format: \"bold\" | \"italic\" | \"underline\" | \"strikethrough\" | \"code\") => {\n if (disabled) {\n return;\n }\n\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n const toggleLink = useCallback(() => {\n openLinkDialog();\n }, [openLinkDialog]);\n\n const applyElementFormat = useCallback(\n (format: ElementFormatType) => {\n if (disabled) {\n return;\n }\n\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n const canInsertImage = allowImageUrlInsert || Boolean(onImageUpload);\n const imageAccept = acceptImageMimeTypes ?? DEFAULT_IMAGE_ACCEPT;\n\n const handleInsertImage = useCallback(() => {\n if (disabled || !canInsertImage) {\n return;\n }\n\n editor.focus();\n\n if (onImageUpload) {\n fileInputRef.current?.click();\n return;\n }\n\n openImageDialog();\n }, [canInsertImage, disabled, editor, onImageUpload, openImageDialog]);\n\n const handleFileChange = useCallback(\n async (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!onImageUpload) {\n return;\n }\n\n const file = event.target.files?.[0];\n\n try {\n if (!file) {\n return;\n }\n\n const result = await onImageUpload(file);\n const payload =\n typeof result === \"string\" ?\n { src: result, altText: file.name }\n : {\n src: result.src,\n altText: result.altText ?? file.name,\n width: result.width,\n height: result.height\n };\n\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, payload);\n editor.focus();\n } catch (error) {\n onImageUploadError?.(error);\n console.error(\"[RichText] Failed to upload image:\", error);\n } finally {\n event.target.value = \"\";\n }\n },\n [editor, onImageUpload, onImageUploadError]\n );\n\n const handleImageSubmit = imageForm.handleSubmit(({ url, alt, width, height }) => {\n const trimmedUrl = url.trim();\n const trimmedAlt = alt.trim();\n const trimmedWidth = width.trim();\n const trimmedHeight = height.trim();\n\n if (!trimmedUrl) {\n imageForm.setError(\"url\", { type: \"required\", message: \"Please enter an image URL.\" });\n return;\n }\n\n let parsedWidth: number | undefined;\n if (trimmedWidth) {\n const widthValue = Number(trimmedWidth);\n if (Number.isNaN(widthValue) || widthValue <= 0) {\n imageForm.setError(\"width\", {\n type: \"validate\",\n message: \"Width must be a positive number.\"\n });\n return;\n }\n parsedWidth = widthValue;\n }\n\n let parsedHeight: number | undefined;\n if (trimmedHeight) {\n const heightValue = Number(trimmedHeight);\n if (Number.isNaN(heightValue) || heightValue <= 0) {\n imageForm.setError(\"height\", {\n type: \"validate\",\n message: \"Height must be a positive number.\"\n });\n return;\n }\n parsedHeight = heightValue;\n }\n\n editor.focus();\n\n editor.update(() => {\n const payload: ImagePayload = {\n src: trimmedUrl,\n altText: trimmedAlt || undefined,\n width: parsedWidth ?? undefined,\n height: parsedHeight ?? undefined\n };\n\n if (editingExistingImage && imageNodeKey) {\n const existingNode = $getNodeByKey<LexicalNode>(imageNodeKey);\n if ($isImageNode(existingNode)) {\n existingNode.setSrc(payload.src);\n existingNode.setAltText(payload.altText ?? \"\");\n existingNode.setDimensions(payload.width ?? \"inherit\", payload.height ?? \"inherit\");\n placeCaretAfterImage(existingNode);\n return;\n }\n }\n\n const selection = $getSelection();\n const imageNode = $createImageNode(payload);\n\n if ($isRangeSelection(selection)) {\n selection.insertNodes([imageNode]);\n } else {\n $insertNodes([imageNode]);\n }\n\n placeCaretAfterImage(imageNode);\n });\n\n closeImageDialog();\n });\n\n const handleImageDialogOpenChange = useCallback(\n (open: boolean) => {\n if (open) {\n setImageDialogOpen(true);\n } else {\n closeImageDialog();\n }\n },\n [closeImageDialog]\n );\n\n const handleRemoveImage = useCallback(() => {\n if (!imageNodeKey) {\n closeImageDialog();\n return;\n }\n\n editor.focus();\n editor.update(() => {\n const existingNode = $getNodeByKey<LexicalNode>(imageNodeKey);\n if ($isImageNode(existingNode)) {\n existingNode.remove();\n }\n });\n\n closeImageDialog();\n }, [closeImageDialog, editor, imageNodeKey]);\n\n return (\n <>\n <div className=\"flex flex-wrap items-center gap-1\">\n <ToolbarButton\n label=\"Undo\"\n icon={Undo}\n onClick={() => editor.dispatchCommand(UNDO_COMMAND, undefined)}\n disabled={disabled || !state.canUndo}\n />\n <ToolbarButton\n label=\"Redo\"\n icon={Redo}\n onClick={() => editor.dispatchCommand(REDO_COMMAND, undefined)}\n disabled={disabled || !state.canRedo}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Bold\"\n icon={Bold}\n onClick={() => toggleFormat(\"bold\")}\n active={state.isBold}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Italic\"\n icon={Italic}\n onClick={() => toggleFormat(\"italic\")}\n active={state.isItalic}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Underline\"\n icon={Underline}\n onClick={() => toggleFormat(\"underline\")}\n active={state.isUnderline}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Strikethrough\"\n icon={Strikethrough}\n onClick={() => toggleFormat(\"strikethrough\")}\n active={state.isStrikethrough}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Inline code\"\n icon={InlineCodeIcon}\n onClick={() => toggleFormat(\"code\")}\n active={state.isCode}\n disabled={disabled}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Paragraph\"\n icon={Pilcrow}\n onClick={() => applyBlock(\"paragraph\")}\n active={state.blockType === \"paragraph\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 1\"\n icon={Heading1}\n onClick={() => applyBlock(\"h1\")}\n active={state.blockType === \"h1\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 2\"\n icon={Heading2}\n onClick={() => applyBlock(\"h2\")}\n active={state.blockType === \"h2\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Heading 3\"\n icon={Heading3}\n onClick={() => applyBlock(\"h3\")}\n active={state.blockType === \"h3\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Bulleted list\"\n icon={BulletListIcon}\n onClick={() => applyBlock(\"bullet\")}\n active={state.blockType === \"bullet\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Numbered list\"\n icon={ListOrdered}\n onClick={() => applyBlock(\"number\")}\n active={state.blockType === \"number\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Quote\"\n icon={QuoteIcon}\n onClick={() => applyBlock(\"quote\")}\n active={state.blockType === \"quote\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Code block\"\n icon={CodeSquare}\n onClick={() => applyBlock(\"code\")}\n active={state.blockType === \"code\"}\n disabled={disabled}\n />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label={state.isLink ? \"Edit link\" : \"Insert link\"}\n icon={LinkIcon}\n onClick={toggleLink}\n active={state.isLink}\n disabled={disabled}\n />\n {state.isLink ?\n <ToolbarButton\n label=\"Remove link\"\n icon={Link2Off}\n onClick={handleRemoveLink}\n disabled={disabled}\n />\n : null}\n <ToolbarButton\n label=\"Insert image\"\n icon={ImageIcon}\n onClick={handleInsertImage}\n disabled={disabled || !canInsertImage}\n />\n {onImageUpload ?\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={imageAccept}\n className=\"hidden\"\n onChange={handleFileChange}\n />\n : null}\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <ToolbarButton\n label=\"Align left\"\n icon={AlignLeft}\n onClick={() => applyElementFormat(\"left\")}\n active={state.elementFormat === \"left\" || state.elementFormat === null}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Align center\"\n icon={AlignCenter}\n onClick={() => applyElementFormat(\"center\")}\n active={state.elementFormat === \"center\"}\n disabled={disabled}\n />\n <ToolbarButton\n label=\"Align right\"\n icon={AlignRight}\n onClick={() => applyElementFormat(\"right\")}\n active={state.elementFormat === \"right\"}\n disabled={disabled}\n />\n </div>\n <Dialog open={isLinkDialogOpen} onOpenChange={handleLinkDialogOpenChange}>\n <DialogContent\n className=\"min-w-[70vw] max-w-7xl\"\n header={editingExistingLink ? \"Edit link\" : \"Insert link\"}\n >\n <Form {...linkForm}>\n <form className=\"grid gap-4 p-6\" onSubmit={handleLinkSubmit}>\n <FormField\n control={linkForm.control}\n name=\"url\"\n rules={{ required: \"Please enter a URL.\" }}\n render={({ field }) => (\n <FormItem>\n <FormLabel>URL</FormLabel>\n <FormControl>\n <Input placeholder=\"https://example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={linkForm.control}\n name=\"label\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Link label</FormLabel>\n <FormControl>\n <Input placeholder=\"Display text\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <DialogFooter className=\"pt-2\">\n <Button type=\"button\" variant=\"cancel\" onClick={closeLinkDialog}>\n Cancel\n </Button>\n {editingExistingLink ?\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveLink}\n className=\"text-destructive\"\n >\n Remove link\n </Button>\n : null}\n <Button type=\"submit\">Save link</Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n <Dialog open={isImageDialogOpen} onOpenChange={handleImageDialogOpenChange}>\n <DialogContent header={editingExistingImage ? \"Edit image\" : \"Insert image\"}>\n <Form {...imageForm}>\n <form className=\"grid gap-4 p-6\" onSubmit={handleImageSubmit}>\n <FormField\n control={imageForm.control}\n name=\"url\"\n rules={{ required: \"Please enter an image URL.\" }}\n render={({ field }) => (\n <FormItem>\n <FormLabel>Image URL</FormLabel>\n <FormControl>\n <Input placeholder=\"https://example.com/image.jpg\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={imageForm.control}\n name=\"alt\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Alt text</FormLabel>\n <FormControl>\n <Input placeholder=\"Describe the image\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <FormField\n control={imageForm.control}\n name=\"width\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Width (px)</FormLabel>\n <FormControl>\n <Input placeholder=\"Auto\" inputMode=\"numeric\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={imageForm.control}\n name=\"height\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Height (px)</FormLabel>\n <FormControl>\n <Input placeholder=\"Auto\" inputMode=\"numeric\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </div>\n <DialogFooter className=\"pt-2\">\n <Button type=\"button\" variant=\"cancel\" onClick={closeImageDialog}>\n Cancel\n </Button>\n {editingExistingImage ?\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={handleRemoveImage}\n className=\"text-destructive\"\n >\n Remove image\n </Button>\n : null}\n <Button type=\"submit\">{editingExistingImage ? \"Save changes\" : \"Insert image\"}</Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\nfunction ControlledValuePlugin({\n value,\n trackAppliedValue\n}: {\n value?: RichTextSerializedState;\n trackAppliedValue: React.MutableRefObject<RichTextSerializedState | undefined>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n if (value == null || trackAppliedValue.current === value) {\n return;\n }\n\n let parsed: EditorSerializedState | undefined;\n\n try {\n parsed = JSON.parse(value) as EditorSerializedState;\n } catch (error) {\n console.error(\"[RichText] Failed to sync controlled value:\", error);\n return;\n }\n\n editor.update(() => {\n const newState = editor.parseEditorState(parsed!);\n const current = editor.getEditorState();\n\n // Compare serialized versions to avoid redundant updates\n if (JSON.stringify(current.toJSON()) !== JSON.stringify(newState.toJSON())) {\n editor.setEditorState(newState);\n }\n\n // Track the latest applied value so we don't reapply unnecessarily\n trackAppliedValue.current = value;\n });\n }, [editor, trackAppliedValue, value]);\n\n return null;\n}\n\nfunction EditableStatePlugin({ editable }: { editable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n editor.setEditable(editable);\n }, [editor, editable]);\n\n return null;\n}\n\nfunction ImagesPlugin() {\n const [editor] = useLexicalComposerContext();\n\n React.useEffect(() => {\n return editor.registerCommand(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n if (!payload?.src) {\n return false;\n }\n\n editor.update(() => {\n const imageNode = $createImageNode(payload);\n $insertNodes([imageNode]);\n placeCaretAfterImage(imageNode);\n });\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n}\n\nconst RichText = forwardRef<HTMLDivElement, RichTextProps>(function RichText(\n {\n value,\n defaultValue,\n onChange,\n onHtmlChange,\n placeholder,\n readOnly,\n disabled,\n editorClassName,\n toolbarClassName,\n autoFocus,\n onImageUpload,\n onImageUploadError,\n acceptImageMimeTypes = DEFAULT_IMAGE_ACCEPT,\n allowImageUrlInsert = true,\n className,\n id,\n ...rest\n },\n ref\n) {\n const initialSerializedStateRef = useRef<EditorSerializedState | undefined>(undefined);\n\n if (initialSerializedStateRef.current === undefined) {\n initialSerializedStateRef.current = parseSerializedEditorState(value ?? defaultValue);\n }\n\n const initialConfig = useMemo(\n () => ({\n namespace: \"RichTextEditor\",\n editable: !(readOnly || disabled),\n theme,\n onError(error: Error) {\n throw error;\n },\n nodes,\n editorState:\n initialSerializedStateRef.current ? JSON.stringify(initialSerializedStateRef.current) : undefined\n }),\n [disabled, readOnly]\n );\n\n const appliedValueRef = useRef<RichTextSerializedState | undefined>(value ?? defaultValue);\n\n const handleChange = useCallback(\n (editorState: EditorState, editor: LexicalEditor) => {\n const serialized = JSON.stringify(editorState.toJSON());\n appliedValueRef.current = serialized;\n\n if (onChange) {\n onChange(serialized, editorState);\n }\n\n if (onHtmlChange) {\n let html = \"\";\n editorState.read(() => {\n html = $generateHtmlFromNodes(editor, null);\n });\n onHtmlChange(html, editorState);\n }\n },\n [onChange, onHtmlChange]\n );\n\n const editable = !(readOnly || disabled);\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <div\n ref={ref}\n aria-disabled={disabled}\n data-disabled={disabled ? \"true\" : undefined}\n className={cn(\n \"border-input focus-within:border-ring focus-within:ring-ring/50 bg-background text-sm shadow-sm focus-within:ring-[3px]\",\n \"flex min-h-[12rem] flex-col rounded-md border transition-[color,box-shadow]\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-60\",\n className\n )}\n {...rest}\n >\n {editable ?\n <div className={cn(\"border-b border-border bg-muted/40 px-2 py-1.5\", toolbarClassName)}>\n <ToolbarPlugin\n disabled={Boolean(disabled)}\n onImageUpload={onImageUpload}\n onImageUploadError={onImageUploadError}\n allowImageUrlInsert={allowImageUrlInsert}\n acceptImageMimeTypes={acceptImageMimeTypes}\n />\n </div>\n : null}\n <div className=\"relative flex-1 overflow-auto\">\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n id={id}\n className={cn(\n \"h-full min-h-[10rem] whitespace-pre-wrap break-words px-3 py-2 text-sm leading-6 text-foreground outline-none\",\n editorClassName\n )}\n />\n }\n placeholder={<Placeholder placeholder={placeholder || \"\"} />}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <ListPlugin />\n <LinkPlugin />\n <ImagesPlugin />\n <MarkdownShortcutPlugin transformers={TRANSFORMERS} />\n {autoFocus ?\n <AutoFocusPlugin />\n : null}\n <EditableStatePlugin editable={editable} />\n <ControlledValuePlugin value={value} trackAppliedValue={appliedValueRef} />\n <OnChangePlugin onChange={handleChange} ignoreSelectionChange />\n </div>\n </div>\n </LexicalComposer>\n );\n});\n\nRichText.displayName = \"RichText\";\n\nexport { RichText };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"@/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","// /hooks/use-mobile.ts\n\"use client\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Hook ตรวจสอบว่า viewport ปัจจุบันเป็นขนาด “mobile” หรือไม่\n * @param breakpoint จุดตัด (px) — ถ้า width < breakpoint => ถือเป็น mobile\n */\nexport function useIsMobile(breakpoint: number = 768): boolean {\n const [isMobile, setIsMobile] = useState<boolean>(() => {\n if (typeof window === \"undefined\") {\n // ใน SSR, เราต้องกำหนดค่าเริ่มต้น (ใน client มันจะถูกอัปเดตใน useEffect)\n return false;\n }\n return window.innerWidth < breakpoint;\n });\n\n useEffect(() => {\n function onResize() {\n setIsMobile(window.innerWidth < breakpoint);\n }\n\n window.addEventListener(\"resize\", onResize);\n // คุณอาจจะเพิ่ม “orientationchange” ก็ได้\n window.addEventListener(\"orientationchange\", onResize);\n\n // เรียกครั้งแรก\n onResize();\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n window.removeEventListener(\"orientationchange\", onResize);\n };\n }, [breakpoint]);\n\n return isMobile;\n}\n","import { cn } from \"@/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","export * from \"./accordion\";\n\nexport * from \"./button\";\n\nexport * from \"./checkbox\";\n\nexport * from \"./collapsible\";\n\nexport * from \"./ClearButton\";\n\nexport * from \"./datepicker\";\n\nexport * from \"./dialog\";\n\nexport * from \"./form\";\n\nexport * from \"./input\";\n\nexport * from \"./label\";\n\nexport * from \"./monthpicker\";\n\nexport * from \"./popover\";\n\nexport * from \"./radio\";\n\nexport * from \"./richtext\";\n\nexport * from \"./select\";\n\nexport * from \"./separator\";\n\nexport * from \"./sheet\";\n\nexport * from \"./sidebar\";\n\nexport * from \"./skeleton\";\n\nexport * from \"./spinner\";\n\nexport * from \"./switch\";\n\nexport * from \"./table\";\n\nexport * from \"./textarea\";\n\nexport * from \"./tooltip\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"@/utils\";\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer inline-flex h-[1.15rem] w-10 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px]\",\n \"data-[state=checked]:bg-[#379A2A] data-[state=unchecked]:bg-[#EFEFEF]\",\n \"dark:data-[state=unchecked]:bg-input/80\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"disabled:bg-gray-300 disabled:data-[state=checked]:bg-[#A5D6A7] disabled:data-[state=unchecked]:bg-[#E0E0E0]\",\n \"disabled:cursor-not-allowed disabled:opacity-70\",\n \"shadow-inner\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-white block size-3.5 rounded-full ring-0 transition-transform\",\n \"data-[state=checked]:translate-x-5.5 data-[state=unchecked]:translate-x-0.5\",\n \"disabled:bg-gray-100\"\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\n\ntype TextareaProps = React.ComponentProps<\"textarea\"> & {\n autoResize?: boolean;\n};\n\nfunction Textarea({ className, autoResize = true, ...props }: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n autoResize ? \"field-sizing-content min-h-16\" : \"field-sizing-fixed\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />\n );\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n arrowClassName,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n arrowClassName?: string;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow\n className={cn(\n \"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\",\n arrowClassName\n )}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"@/hooks/use-mobile\";\nimport { cn } from \"@/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"@/components/ui/sheet\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n InputPrimitive,\n Button,\n Separator,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from \"@/components/ui\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\" ?\n \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\" ?\n \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\" ?\n \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof InputPrimitive>) {\n return (\n <InputPrimitive\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\"\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\ntype SidebarLayoutProps = Omit<React.ComponentProps<typeof SidebarProvider>, \"children\"> & {\n sidebar: React.ReactNode;\n children?: React.ReactNode;\n layoutProps?: React.HTMLAttributes<HTMLDivElement>;\n sidebarProps?: Omit<React.ComponentProps<typeof Sidebar>, \"children\">;\n insetProps?: Omit<React.ComponentProps<typeof SidebarInset>, \"children\">;\n};\n\nfunction SidebarLayout({\n sidebar,\n children,\n layoutProps,\n sidebarProps,\n insetProps,\n ...providerProps\n}: SidebarLayoutProps) {\n const { className: layoutClassName, ...restLayoutProps } = layoutProps ?? {};\n\n return (\n <SidebarProvider {...providerProps}>\n <div data-slot=\"sidebar-layout\" {...restLayoutProps} className={cn(\"flex\", layoutClassName)}>\n <Sidebar {...sidebarProps}>{sidebar}</Sidebar>\n <SidebarInset {...insetProps}>{children}</SidebarInset>\n </div>\n </SidebarProvider>\n );\n}\n\nexport {\n Sidebar,\n SidebarLayout,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n};\n","import { DialogContentProps } from \"@radix-ui/react-dialog\";\nimport { Area, CropperProps } from \"react-easy-crop\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\n\nexport interface CroppedImagePayload {\n crop: { x: number; y: number };\n croppedAreaPixels: Area | null;\n}\n\nexport interface CroppedImagePayloadWithBlobUrl extends CroppedImagePayload {\n croppedImageBlobUrl: string;\n}\n\ninterface CropperModalBaseProps {\n open?: boolean;\n onOpenChange: (open: boolean) => void;\n onCancel?: () => void;\n onError?: (e: CropperModalError | unknown) => void;\n imageSrc?: string | null;\n isSVG?: boolean;\n cropSize?: { width: number; height: number };\n /**\n * @property {boolean} outputExactCropSize - Determine whether to ouput image with the exact size given in cropSize attribute\n * @description an original image dimension is 1000x1000px, if cropSize is 500x500px, the output image will be exactly 500x500px\n */\n outputExactCropSize?: boolean;\n targetFileSizeKB?: number;\n title?: string;\n props?: {\n dialogTitleContainer?: React.ComponentProps<\"div\">;\n dialogTitle?: React.ComponentProps<typeof DialogPrimitive.Title>;\n dialogContent?: DialogContentProps;\n cropper?: CropperProps;\n cropperContainer?: React.ComponentProps<\"div\">;\n };\n}\n\ninterface CropperModalWithBlobUrlOutputProps extends CropperModalBaseProps {\n onConfirm?: (payload: CroppedImagePayloadWithBlobUrl) => void;\n generateBlobUrlOutput: true;\n}\n\ninterface CropperModalNormalProps extends CropperModalBaseProps {\n onConfirm?: (payload: CroppedImagePayload) => void;\n generateBlobUrlOutput: undefined | false;\n}\n\nexport type CropperModalProps = CropperModalWithBlobUrlOutputProps | CropperModalNormalProps;\n\nexport type CropperModalErrorType =\n | \"ERROR_GENERATE_BLOB\"\n | \"ERROR_CREATE_CANVAS\"\n | \"ERROR_INVALID_SVG\"\n | \"ERROR_COMPRESSION\"\n | \"ERROR_SVG_EXCEED_SIZE\";\n\nexport class CropperModalError extends Error {\n public readonly error: CropperModalErrorType;\n constructor(errorType: CropperModalErrorType, message: string) {\n super(message);\n this.error = errorType;\n }\n}\n\nexport const ErrorGeneratingBlob = new CropperModalError(\n \"ERROR_GENERATE_BLOB\",\n \"failed to generate a valid Blob\"\n);\n\nexport const ErrorCreateCanvas = new CropperModalError(\"ERROR_CREATE_CANVAS\", \"Failed to create canvas\");\n\nexport const ErrorInvalidSVG = new CropperModalError(\n \"ERROR_INVALID_SVG\",\n \"The file is not a valid SVG document root\"\n);\n\nexport const ErrorCompression = new CropperModalError(\n \"ERROR_COMPRESSION\",\n \"Compression failed to generate a valid Blob\"\n);\n\nexport const ErrorSVGExceedSize = new CropperModalError(\n \"ERROR_SVG_EXCEED_SIZE\",\n \"The SVG file is too large\"\n);\n","import { Area } from \"react-easy-crop\";\nimport { ErrorCompression, ErrorCreateCanvas, ErrorInvalidSVG, ErrorSVGExceedSize } from \"./type\";\n\nexport function readFile(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result as string), false);\n reader.readAsDataURL(file); // read as base64-encoded\n });\n}\n\nexport const createImage = (url: string) =>\n new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction toBlobPromise(canvas: HTMLCanvasElement, quality: number): Promise<Blob | null> {\n return new Promise((resolve) => {\n canvas.toBlob((blob) => resolve(blob), \"image/jpeg\", quality);\n });\n}\n\nasync function resizeImage(canvas: HTMLCanvasElement, targetSizeKB: number): Promise<string> {\n const targetSizeBytes = targetSizeKB * 1024;\n let quality = 1;\n const qualityStep = 0.05;\n let compressedBlob: Blob | null = null;\n let currentSize = Infinity;\n\n while (currentSize > targetSizeBytes && quality > 0.0) {\n compressedBlob = await toBlobPromise(canvas, quality);\n if (compressedBlob === null) {\n throw ErrorCompression;\n }\n currentSize = compressedBlob.size;\n\n if (currentSize > targetSizeBytes) {\n quality = Math.max(0.0, quality - qualityStep);\n }\n }\n\n if (compressedBlob && currentSize <= targetSizeBytes) {\n return URL.createObjectURL(compressedBlob);\n }\n throw ErrorCompression;\n}\n\nexport async function getCroppedImg(\n imageSrc: string,\n pixelCrop: Area,\n desiredDimension?: { width: number; height: number },\n targetSizeKB: number = Infinity\n): Promise<string> {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n if (!ctx) {\n throw ErrorCreateCanvas;\n }\n\n canvas.width = image.width;\n canvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n\n const croppedCanvas = document.createElement(\"canvas\");\n\n const croppedCtx = croppedCanvas.getContext(\"2d\");\n\n if (!croppedCtx) {\n throw ErrorCreateCanvas;\n }\n\n // Set the size of the cropped canvas\n croppedCanvas.width = desiredDimension?.width ?? pixelCrop.width;\n croppedCanvas.height = desiredDimension?.height ?? pixelCrop.height;\n\n // Draw the cropped image onto the new canvas\n croppedCtx.drawImage(\n canvas,\n pixelCrop.x,\n pixelCrop.y,\n pixelCrop.width,\n pixelCrop.height,\n 0,\n 0,\n desiredDimension?.width ?? pixelCrop.width,\n desiredDimension?.height ?? pixelCrop.height\n );\n\n return resizeImage(croppedCanvas, targetSizeKB);\n}\n\nexport async function getCroppedSVG(\n imageSrc: string, // Expects data:image/svg+xml;...\n pixelCrop: Area,\n desiredDimension?: { width: number; height: number },\n targetSizeKB: number = Infinity\n): Promise<string> {\n let svgString: string;\n const parts = imageSrc.split(\",\");\n const meta = parts[0]; // \"data:image/svg+xml;base64\" or \"data:image/svg+xml\"\n const data = parts[1];\n\n if (meta.includes(\"base64\")) {\n svgString = atob(data); // Decode base64\n } else {\n svgString = decodeURIComponent(data); // Decode URL-encoded\n }\n\n // Parse the SVG string into an XML Document\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgString, \"image/svg+xml\");\n const svgElement = svgDoc.documentElement;\n\n if (svgElement.tagName.toLowerCase() !== \"svg\") {\n throw ErrorInvalidSVG;\n }\n\n // Set the new viewBox to the crop area\n const newViewBox = `${pixelCrop.x} ${pixelCrop.y} ${pixelCrop.width} ${pixelCrop.height}`;\n svgElement.setAttribute(\"viewBox\", newViewBox);\n\n // Set the output diensions\n const outputWidth = desiredDimension?.width ?? pixelCrop.width;\n const outputHeight = desiredDimension?.height ?? pixelCrop.height;\n svgElement.setAttribute(\"width\", String(outputWidth));\n svgElement.setAttribute(\"height\", String(outputHeight));\n\n // Serialize the modified SVG back to a string\n const serializer = new XMLSerializer();\n const croppedSvgString = serializer.serializeToString(svgElement);\n\n // Create a Blob and Object URL\n const blob = new Blob([croppedSvgString], { type: \"image/svg+xml\" });\n\n // Throw error if svg is too large\n const targetSizeBytes = targetSizeKB * 1024;\n if (blob.size > targetSizeBytes) {\n throw ErrorSVGExceedSize;\n }\n\n return URL.createObjectURL(blob);\n}\n","import { getCroppedImg, getCroppedSVG } from \"./helper\";\nimport { Dialog, DialogContent, DialogTitle } from \"../dialog\";\nimport { Button } from \"../button\";\nimport { XIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport Cropper, { Area } from \"react-easy-crop\";\nimport { CropperModalProps } from \"./type\";\n\nexport const CropperModal = ({\n open,\n onOpenChange,\n imageSrc,\n isSVG,\n onConfirm,\n onCancel,\n onError,\n cropSize,\n outputExactCropSize,\n targetFileSizeKB,\n generateBlobUrlOutput,\n title,\n props\n}: CropperModalProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [zoom, setZoom] = useState<number | undefined>();\n const [croppedAreaPixels, setCroppedAreaPixels] = useState<Area | null>(null);\n\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n const handleCancel = useCallback(() => {\n if (onCancel) {\n onCancel();\n }\n handleClose();\n }, [handleClose, onCancel]);\n\n const handleCropComplete = useCallback((_: Area, croppedAreaPixels: Area) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const handleConfirm = async () => {\n if (!imageSrc || !onConfirm) {\n handleClose();\n return;\n }\n if (!generateBlobUrlOutput) {\n onConfirm({ crop, croppedAreaPixels });\n return;\n }\n if (!croppedAreaPixels) {\n // return original image\n onConfirm({ crop, croppedAreaPixels, croppedImageBlobUrl: imageSrc });\n return;\n }\n setIsLoading(true);\n try {\n const desiredDimension = outputExactCropSize ? cropSize : undefined;\n const croppedImage =\n isSVG ?\n await getCroppedSVG(imageSrc, croppedAreaPixels, desiredDimension, targetFileSizeKB)\n : await getCroppedImg(imageSrc, croppedAreaPixels, desiredDimension, targetFileSizeKB);\n onConfirm({ crop, croppedAreaPixels, croppedImageBlobUrl: croppedImage });\n } catch (e: unknown) {\n if (onError) {\n onError(e);\n }\n } finally {\n setIsLoading(false);\n handleClose();\n }\n };\n\n return (\n <Dialog\n open={open}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) {\n handleClose();\n } else {\n onOpenChange(true);\n }\n }}\n >\n <DialogContent\n className=\"flex flex-col w-fit !max-w-6xl p-0 overflow-clip gap-0 border-0\"\n {...props?.dialogContent}\n >\n <div\n className=\"flex w-full bg-[#82B495] text-white justify-between items-center p-4\"\n {...props?.dialogTitleContainer}\n >\n <DialogTitle className=\"text-2xl font-semibold\" {...props?.dialogTitle}>\n {title ?? \"Crop Image\"}\n </DialogTitle>\n <button\n type=\"button\"\n className=\"text-white hover:text-gray-100 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed\"\n onClick={handleCancel}\n disabled={isLoading}\n >\n <XIcon className=\"w-4 h-4\" />\n </button>\n </div>\n <div className=\"w-120 md:w-[50vw] h-[70vh] mx-auto\" {...props?.cropperContainer}>\n <Cropper\n image={imageSrc ?? undefined}\n crop={crop}\n onCropChange={setCrop}\n zoom={zoom}\n onZoomChange={setZoom}\n style={{ containerStyle: { position: \"relative\", width: \"100%\", height: \"100%\" } }}\n onCropComplete={handleCropComplete}\n aspect={cropSize ? cropSize.width / cropSize.height : undefined}\n zoomWithScroll\n showGrid\n restrictPosition\n {...props?.cropper}\n />\n </div>\n\n {/* Footer */}\n <div className=\"w-full py-4 px-8 min-h-10\">\n <div className=\"flex w-full justify-between\">\n <Button type=\"button\" variant=\"cancel\" onClick={handleCancel} disabled={isLoading}>\n Cancel\n </Button>\n <div className=\"ml-auto flex gap-x-2\">\n <Button type=\"button\" variant=\"default\" onClick={handleConfirm} disabled={isLoading}>\n Confirm\n </Button>\n </div>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default CropperModal;\n","import React, { useRef, useState, useEffect, ReactNode, type CSSProperties, useMemo } from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn, debounce } from \"@/utils\";\n\nexport type EllipsisConfig =\n | boolean\n | { content?: ReactNode; lineClamp?: number; side?: \"top\" | \"bottom\" | \"left\" | \"right\" }\n | number; // number = line-clamp-N\n\nexport type TruncatedProps = {\n className?: string;\n ellipsis?: EllipsisConfig;\n children: ReactNode;\n as?: keyof React.JSX.IntrinsicElements;\n style?: CSSProperties;\n};\n\nconst Truncated = ({ children, className, ellipsis = true, as = \"p\", style }: TruncatedProps) => {\n const elementRef = useRef<HTMLButtonElement>(null);\n const [open, setOpen] = useState<boolean>(false);\n const [isTruncated, setIsTruncated] = useState<boolean>(false);\n\n const Comp = as as React.ElementType;\n\n const normalizedChildren = typeof children === \"string\" ? children.replace(/>/g, \">\\u200B\") : children;\n\n useEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n\n const checkTruncate = debounce(() => {\n const overflowX = el.scrollWidth > el.clientWidth;\n const overflowY = el.scrollHeight > el.clientHeight;\n setIsTruncated(overflowX || overflowY);\n }, 300);\n\n const resizeObserver = new ResizeObserver(checkTruncate);\n resizeObserver.observe(el);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const lineClampLines =\n typeof ellipsis === \"number\" ? ellipsis\n : typeof ellipsis === \"object\" ? (ellipsis.lineClamp ?? 3)\n : null;\n\n const truncationClass = useMemo(() => {\n if (!ellipsis) return \"\";\n if (typeof ellipsis === \"number\") return `line-clamp-${ellipsis}`;\n if (typeof ellipsis === \"object\") return `line-clamp-${lineClampLines ?? 3}`;\n return \"truncate\";\n }, [ellipsis, lineClampLines]);\n\n const clampedStyle = useMemo(() => {\n if (!lineClampLines) return style;\n return {\n ...style,\n display: \"-webkit-box\",\n WebkitLineClamp: lineClampLines,\n WebkitBoxOrient: \"vertical\",\n overflow: \"hidden\"\n };\n }, [lineClampLines, style]);\n\n const baseContent = (\n <Comp ref={elementRef} className={cn(truncationClass, className)} style={clampedStyle}>\n {normalizedChildren}\n </Comp>\n );\n\n let tooltipContent: ReactNode = normalizedChildren;\n let tooltipSide: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\n if (typeof ellipsis === \"object\") {\n tooltipContent = ellipsis?.content ?? normalizedChildren;\n tooltipSide = ellipsis?.side ?? \"top\";\n }\n\n return (\n <Tooltip\n open={open}\n onOpenChange={(open) => {\n setOpen(isTruncated && open);\n }}\n >\n <TooltipTrigger asChild>{baseContent}</TooltipTrigger>\n <TooltipContent\n side={tooltipSide}\n className={cn(\"text-white bg-[#8B8B8B] max-w-md wrap-break-word shadow-lg\")}\n arrowClassName=\"bg-[#8B8B8B] fill-[#8B8B8B]\"\n >\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default Truncated;\n"]}