@sustaina/shared-ui 1.37.1 → 1.39.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.
- package/dist/index.d.mts +59 -28
- package/dist/index.d.ts +59 -28
- package/dist/index.js +1358 -521
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1343 -522
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/common.ts","../src/utils/filters.ts","../src/utils/date.ts","../src/utils/useSafeBlocker.ts","../src/utils/useDraftGuardStore.ts","../src/utils/cn.ts","../src/components/icons/arrow.tsx","../src/components/icons/decrease.tsx","../src/components/icons/filters.tsx","../src/components/icons/information.tsx","../src/components/icons/not-found.tsx","../src/components/icons/plus.tsx","../src/components/icons/custom-field.tsx","../src/components/icons/calendar.tsx","../src/components/icons/calendar2.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/setting.tsx","../src/components/icons/triangle-down.tsx","../src/components/icons/warning.tsx","../src/components/icons/trash.tsx","../src/components/icons/role.tsx","../src/components/icons/user.tsx","../src/components/icons/user-friend.tsx","../src/components/icons/user-alone.tsx","../src/components/auditFooter/AuditFooter.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/lib/utils.ts","../src/components/advanceSearch/utils/advanceSearchUtils.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/hooks/useControllableState/useControllableState.ts","../src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.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/lib/constants.ts","../src/components/dialog-alert/DialogAlert.tsx","../src/components/dialog-alert/templates/index.ts","../src/components/dialog-alert/locale/default.ts","../src/components/dialog-alert/locale/i18n.ts","../src/components/dialog-alert/hooks/DialogAlertStore.tsx","../src/components/ui/LoadingOverlay.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/ui/index.ts","../src/components/ui/container.tsx","../src/components/ui/header.tsx","../src/components/ui/radio.tsx","../src/components/ui/ImageNode.tsx","../src/components/ui/richtext.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/hooks/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/tooltip.tsx","../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/image/image.tsx","../src/components/main-list-container/MainListContainer.tsx","../src/assets/icon/InfoIcon.tsx","../src/components/navbar/navbar.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/right-panel-container/RightPanelContainer.tsx","../src/components/cropperModal/type.ts","../src/components/cropperModal/helper.ts","../src/components/cropperModal/cropperModal.tsx","../src/components/truncated/EllipsisMeasure.tsx","../src/components/truncated/truncated.tsx","../src/components/inputNumber/BaseInput.tsx","../src/components/inputNumber/InputNumber.tsx","../src/components/actionMenu/actionButton.tsx","../src/components/actionMenu/actionMenu.tsx","../src/components/command/BaseDialog.tsx","../src/components/command/Command.tsx","../src/components/command/hooks/useFieldNames.ts","../src/components/command/VirtualizedCommand.tsx","../src/components/combobox/Combobox.tsx","../src/components/truncatedMouseEnterDiv/truncatedMouseEnterDiv.tsx"],"names":["format","useRouter","useState","useEffect","create","twMerge","clsx","jsx","jsxs","PlusIcon","AccordionPrimitive","X","Fragment","createPortal","useCallback","useMemo","SelectPrimitive","ChevronRight","CheckIcon","Triangle","React","Label","LabelPrimitive","FormProvider","React2","Controller","useFormContext","useFormState","Slot","CircleX","cva","React3","PopoverPrimitive","React4","ChevronLeft","parseISO","isValid","DatePicker","placeholder","React6","normalizeMonth","defaultDisplayFormatter","defaultValueFormatter","defaultValueParser","MonthPicker","CalendarIcon","useRef","Search","Plus","Minus","parse","compareAsc","useForm","isAfter","CheckboxPrimitive","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","reSplitAlphaNumeric","threshold","React11","useLayoutEffect","ChevronUp","ChevronDown","Bug","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getGroupedRowModel","isSomeColumnsFilterable","flexRender","createElement","DialogPrimitive","XIcon","cn","Dialog","DialogPrimitive2","DialogPortal","DialogOverlay","DialogContent","DialogHeader","DialogTitle","DialogDescription","useTranslation","i18n","initReactI18next","I18nextProvider","NodeViewWrapper","PluginKey","Suggestion","ReactDOM","editor","Plugin","tr","Node","mergeAttributes","ReactNodeViewRenderer","nodes","Separator","RadioGroupPrimitive","DecoratorNode","HeadingNode","QuoteNode","ListNode","ListItemNode","LinkNode","CodeNode","createCommand","Icon","$createParagraphNode","$createTextNode","useLexicalComposerContext","$getSelection","$isRangeSelection","$isLinkNode","$getNodeByKey","$createLinkNode","$insertNodes","TOGGLE_LINK_COMMAND","$isListNode","$isHeadingNode","$isCodeNode","React17","mergeRegister","CAN_UNDO_COMMAND","COMMAND_PRIORITY_NORMAL","CAN_REDO_COMMAND","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_CRITICAL","selection","$setBlocksType","$createHeadingNode","REMOVE_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$createQuoteNode","$createCodeNode","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","Undo","UNDO_COMMAND","Redo","REDO_COMMAND","Bold","Italic","Underline","Strikethrough","InlineCodeIcon","Pilcrow","Heading1","Heading2","Heading3","BulletListIcon","ListOrdered","QuoteIcon","CodeSquare","LinkIcon","Link2Off","ImageIcon","AlignLeft","AlignCenter","AlignRight","COMMAND_PRIORITY_EDITOR","forwardRef","RichText","html","$generateHtmlFromNodes","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","ListPlugin","LinkPlugin","MarkdownShortcutPlugin","TRANSFORMERS","AutoFocusPlugin","OnChangePlugin","SeparatorPrimitive","SheetPrimitive","React18","open","PanelLeftIcon","SwitchPrimitive","TooltipPrimitive","StarterKit","useEditor","EditorContent","Minimize2","Maximize2","TooltipProvider","TooltipPrimitive2","Tooltip","TooltipTrigger","TooltipContent","useSortable","React20","CSS","useWatch","GripVertical","Info","CircleMinus","z","zodResolver","useFieldArray","useSensors","useSensor","PointerSensor","DndContext","closestCenter","restrictToParentElement","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","Image","React21","Header","CircleHelp","isValidElement","croppedAreaPixels","Cropper","React25","React26","InputPrimitive","React27","inputVariants","Input","NumericFormat","MoreVertical","DialogPrimitive3","CommandPrimitive","SearchIcon","React29","useVirtualizer","option","Check","React30"],"mappings":"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","file":"index.js","sourcesContent":["export function isDefined<T>(value: T | null | undefined): value is NonNullable<T> {\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 { useEffect, useState } from \"react\";\nimport { useRouter } from \"@tanstack/react-router\";\n\ntype UseSafeBlockerOpts = {\n shouldBlockFn: () => boolean | Promise<boolean>;\n enableBeforeUnload?: boolean | (() => boolean);\n disabled?: boolean;\n withResolver?: boolean;\n};\n\ntype SafeBlockerResolver =\n | {\n status: \"blocked\";\n proceed: () => void;\n reset: () => void;\n }\n | {\n status: \"idle\";\n proceed: undefined;\n reset: undefined;\n };\n\nexport function useSafeBlocker({\n shouldBlockFn,\n enableBeforeUnload = true,\n disabled = false,\n withResolver = false\n}: UseSafeBlockerOpts): SafeBlockerResolver {\n const router = useRouter({ warn: false });\n const [resolver, setResolver] = useState<SafeBlockerResolver>({\n status: \"idle\",\n proceed: undefined,\n reset: undefined\n });\n\n useEffect(() => {\n if (disabled || !router?.history?.block) {\n return;\n }\n\n return router.history.block({\n enableBeforeUnload,\n blockerFn: async () => {\n const shouldBlock = await shouldBlockFn();\n if (!withResolver) {\n return shouldBlock;\n }\n\n if (!shouldBlock) {\n return false;\n }\n\n const canNavigate = await new Promise<boolean>((resolve) => {\n setResolver({\n status: \"blocked\",\n proceed: () => resolve(false),\n reset: () => resolve(true)\n });\n });\n\n setResolver({\n status: \"idle\",\n proceed: undefined,\n reset: undefined\n });\n\n return canNavigate;\n }\n });\n }, [disabled, enableBeforeUnload, router, shouldBlockFn, withResolver]);\n\n useEffect(() => {\n if (disabled || router?.history || typeof window === \"undefined\") {\n return;\n }\n\n const shouldEnable = enableBeforeUnload;\n if (!shouldEnable) {\n return;\n }\n\n const handler = (event: BeforeUnloadEvent) => {\n const shouldBlock = typeof shouldEnable === \"function\" ? shouldEnable() : shouldEnable;\n if (!shouldBlock) {\n return;\n }\n\n event.preventDefault();\n event.returnValue = \"\";\n };\n\n window.addEventListener(\"beforeunload\", handler, { capture: true });\n return () => window.removeEventListener(\"beforeunload\", handler, { capture: true });\n }, [disabled, enableBeforeUnload, router]);\n\n return resolver;\n}\n","import { create } from \"zustand\";\n\nexport type DraftSource = \"create\" | \"edit\" | null;\n\nexport interface DraftGuardState {\n isDirty: boolean;\n source: DraftSource;\n isInitialized: boolean;\n markDirty: (source: DraftSource) => void;\n clearDraft: () => void;\n markInitialized: () => void;\n}\n\nexport const useDraftGuardStore = create<DraftGuardState>((set) => ({\n isDirty: false,\n source: null,\n isInitialized: false,\n markDirty: (source) =>\n set((state) => {\n if (!state.isInitialized || !source) {\n return state;\n }\n return { ...state, isDirty: true, source };\n }),\n clearDraft: () => set({ isDirty: false, source: null }),\n markInitialized: () => set({ isInitialized: true })\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 { IconProps } from \"./type\";\n\nconst ArrowIcon: React.FC<IconProps> = ({\n size = \"1em\",\n width,\n height,\n fill = \"none\",\n color = \"#127035\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 14 9\"\n width={width ?? size}\n height={height ?? size}\n fill={fill}\n {...props}\n >\n <path d=\"M0.293 0.723L6.79 8.723L13.293 0.723H0.293Z\" fill={color} />\n </svg>\n);\n\nexport default ArrowIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst DecreaseIcon: React.FC<IconProps> = ({\n size = 16,\n color = \"currentColor\",\n className,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 9 4\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <rect x=\"0.572754\" y=\"0.441406\" width=\"7.57659\" height=\"2.75347\" fill={color} />\n </svg>\n);\n\nexport default DecreaseIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst FiltersIcon: React.FC<IconProps> = ({\n size = 24,\n color = \"#379A2A\",\n strokeWidth = 1.5,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M10 18H14\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M11 6H3\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 6H21\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 9V3\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7 12H15\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default FiltersIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst InformationIcon: React.FC<IconProps> = ({\n size = 16,\n color = \"currentColor\",\n className,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 34 34\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <g clipPath=\"url(#clip0_789_42722)\">\n <path\n d=\"M16.7158 33.4883C7.61916 33.4883 0.21582 26.0849 0.21582 16.9883C0.21582 7.89162 7.61916 0.488281 16.7158 0.488281C25.8125 0.488281 33.2158 7.89162 33.2158 16.9883C33.2158 26.0849 25.8125 33.4883 16.7158 33.4883ZM16.7158 1.80093C8.34112 1.80093 1.52847 8.61358 1.52847 16.9883C1.52847 25.363 8.34112 32.1756 16.7158 32.1756C25.0905 32.1756 31.9032 25.363 31.9032 16.9883C31.9032 8.61358 25.0905 1.80093 16.7158 1.80093Z\"\n fill={color}\n />\n <path\n d=\"M18.9999 21.0838H13.5393V20.5325C13.5393 19.6005 13.6443 18.8523 13.8543 18.2747C14.0643 17.6972 14.3794 17.1721 14.7994 16.6864C15.2195 16.2139 16.1514 15.3606 17.6085 14.153C18.3829 13.5229 18.7767 12.9454 18.7767 12.4203C18.7767 11.8952 18.6192 11.4883 18.3042 11.1864C17.9892 10.8845 17.5166 10.7532 16.8865 10.7532C16.204 10.7532 15.6395 10.9764 15.1932 11.4227C14.7469 11.869 14.4581 12.6566 14.34 13.7723L8.76123 13.0766C8.95813 11.0289 9.69321 9.37496 10.9927 8.12794C12.2923 6.88093 14.2744 6.25085 16.9653 6.25085C19.0524 6.25085 20.7457 6.68403 22.019 7.5635C23.7648 8.74489 24.6312 10.3069 24.6312 12.2759C24.6312 13.0898 24.408 13.8773 23.9617 14.6256C23.5154 15.3869 22.5966 16.3057 21.2051 17.3952C20.2338 18.1566 19.63 18.7735 19.3674 19.2461C19.118 19.7055 18.9868 20.3225 18.9868 21.0575L18.9999 21.0838ZM13.3555 22.5408H19.2099V27.6995H13.3555V22.5408Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_789_42722\">\n <rect width=\"33\" height=\"33\" fill=\"white\" transform=\"translate(0.21582 0.488281)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default InformationIcon;\n","import React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst NotFoundIcon: React.FC<IconProps> = ({\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 * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst PlusIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 9 9\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <path\n d=\"M3.12305 8.23047L3.12305 0.653882L5.87652 0.653882L5.87652 8.23047L3.12305 8.23047Z\"\n fill={color}\n />\n <path\n d=\"M3.12305 8.23047L3.12305 0.653882L5.87652 0.653882L5.87652 8.23047L3.12305 8.23047Z\"\n fill={color}\n />\n <path\n d=\"M0.710938 3.06641L8.28752 3.06641V5.81988L0.710937 5.81988L0.710938 3.06641Z\"\n fill={color}\n />\n <path\n d=\"M0.710938 3.06641L8.28752 3.06641V5.81988L0.710937 5.81988L0.710938 3.06641Z\"\n fill={color}\n />\n </svg>\n);\n\nexport default PlusIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst CustomFieldIcon: React.FC<IconProps> = ({\n size = 16,\n color = \"currentColor\",\n className,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n {...props}\n >\n <g clipPath=\"url(#clip0_14170_63977)\">\n <path\n d=\"M9.16987 12.9149C11.2388 12.9149 12.9159 11.2378 12.9159 9.1689C12.9159 7.10001 11.2388 5.42285 9.16987 5.42285C7.10099 5.42285 5.42383 7.10001 5.42383 9.1689C5.42383 11.2378 7.10099 12.9149 9.16987 12.9149Z\"\n fill={color}\n />\n <path\n d=\"M16.4128 13.2318C16.8305 13.6494 17.5139 13.6494 17.9315 13.2318L19.7877 11.3757L21.6438 13.2318C22.0614 13.6494 22.7448 13.6494 23.1625 13.2318C23.5801 12.8142 23.5801 12.1308 23.1625 11.7131L21.3063 9.85699L23.1625 8.00084C23.5801 7.5832 23.5801 6.8998 23.1625 6.48217C22.7448 6.06454 22.0614 6.06454 21.6438 6.48217L19.7877 8.33832L17.9315 6.48217C17.5139 6.06454 16.8305 6.06454 16.4128 6.48217C15.9952 6.8998 15.9952 7.5832 16.4128 8.00084L18.269 9.85699L16.4128 11.7131C15.9952 12.1308 15.9952 12.8142 16.4128 13.2318Z\"\n fill={color}\n />\n <path\n d=\"M12.375 17.0664H5.96284C5.49688 17.0664 5.11914 17.4441 5.11914 17.9101V24.3223C5.11914 24.7882 5.49688 25.166 5.11914 25.166H12.375C12.841 25.166 13.2187 24.7882 13.2187 24.3223V17.9101C13.2187 17.4441 12.841 17.0664 12.375 17.0664Z\"\n fill={color}\n />\n <path d=\"M16.1816 24.6089H25.8315L21.0055 17.623L16.1816 24.6089Z\" fill={color} />\n <path\n d=\"M28.1017 0H1.89833C0.852141 0 0 0.852141 0 1.89833V28.1017C0 29.1479 0.852141 30 1.89833 30H28.1017C29.1479 30 30 29.1479 30 28.1017V1.89833C30 0.852141 29.1479 0 28.1017 0ZM27.8907 27.8907H2.10926V2.10926H27.8907V27.8907Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_14170_63977\">\n <rect width=\"30\" height=\"30\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default CustomFieldIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst SuiCalendarIcon: React.FC<IconProps> = ({\n size = \"1em\",\n width,\n height,\n color = \"currentColor\",\n fill = \"none\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 25 25\"\n width={width ?? size}\n height={height ?? size}\n fill={fill}\n {...props}\n >\n <path\n fill={color}\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);\n\nexport default SuiCalendarIcon;\n","import type { IconProps } from \"./type\";\nconst SuiCalendarIcon2 = (props: IconProps) => (\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=\"M6.66666 1.66675V5.00008\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 1.66675V5.00008\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15.8333 3.33325H4.16667C3.24619 3.33325 2.5 4.07944 2.5 4.99992V16.6666C2.5 17.5871 3.24619 18.3333 4.16667 18.3333H15.8333C16.7538 18.3333 17.5 17.5871 17.5 16.6666V4.99992C17.5 4.07944 16.7538 3.33325 15.8333 3.33325Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.5 8.33325H17.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66666 11.6667H6.67499\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 11.6667H10.0083\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 11.6667H13.3417\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66666 15H6.67499\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 15H10.0083\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 15H13.3417\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\nexport default SuiCalendarIcon2;\n","import type { IconProps } from \"./type\";\nconst SuiCheckIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiDotsVerticalIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiEmptyDataIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiExpandIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiFilterIcon = (props: IconProps) => (\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 type { IconProps } from \"./type\";\nconst SuiSettingIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiTriangleDownIcon = (props: IconProps) => (\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 { IconProps } from \"./type\";\nconst SuiWarningIcon = (props: IconProps) => (\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","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst TrashIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n viewBox=\"0 0 17 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n fill=\"none\"\n className={className}\n {...props}\n >\n <g clipPath=\"url(#clip0_336_302483)\">\n <path\n d=\"M3.49371 2.12043C3.38318 1.44249 3.66212 0.708651 4.43068 0.529533C4.94459 0.409578 7.77168 0.42749 8.38456 0.492081C9.25207 0.583811 9.64966 1.36813 9.5125 2.12097C10.3748 2.22627 11.9484 1.85067 12.6087 2.44664C13.1053 2.89498 13.1452 3.75638 12.64 4.21232C12.2707 4.54558 12.1422 4.28179 12.0664 4.92282C11.7412 7.68938 11.6509 10.4907 11.3494 13.2605C11.2452 13.9135 10.7718 14.3401 10.0646 14.3895C7.73175 14.5534 5.1836 14.2619 2.8276 14.3873C2.09203 14.2587 1.75116 13.8364 1.64178 13.1655L0.878435 4.54558C0.710025 4.38221 0.481427 4.33281 0.310702 4.15532C-0.221151 3.60006 -0.0434807 2.66593 0.639999 2.29358C0.702502 2.25938 0.998811 2.12043 1.03411 2.12043H3.49371ZM4.30394 2.12043H8.70228C8.71964 1.8333 8.70691 1.36813 8.32321 1.30951C7.19122 1.38116 5.90586 1.20367 4.79238 1.30246C4.28831 1.34696 4.29815 1.71931 4.30394 2.12043ZM12.0415 3.0589C12.0172 3.03068 11.8812 2.9574 11.8419 2.94926L1.26329 2.93243C0.749379 2.95794 0.749379 3.72598 1.26329 3.75149H11.7429C12.1029 3.75312 12.2429 3.29338 12.0415 3.0589ZM11.2487 4.56295H1.75753L2.51508 13.1612C2.5608 13.4597 2.68754 13.5498 2.9989 13.5759C5.22817 13.762 7.7468 13.4293 10.0073 13.5759L10.3823 13.4391L11.2487 4.56295Z\"\n fill={color}\n />\n <path\n d=\"M4.22952 5.50209C4.41761 5.72137 4.34006 6.27067 4.36263 6.54477C4.51599 8.36961 4.73649 10.3719 4.77121 12.1892C4.78568 12.9404 3.98125 12.8953 3.90254 12.4047C3.84698 10.417 3.54836 8.42443 3.49164 6.43947C3.48586 6.23159 3.45576 5.67469 3.54894 5.52542C3.66411 5.34088 4.08426 5.33274 4.22952 5.50263V5.50209Z\"\n fill={color}\n />\n <path\n d=\"M9.43711 5.50146C9.55575 5.63933 9.52045 6.22879 9.51466 6.43776C9.45852 8.42272 9.15932 10.4153 9.10376 12.4029C9.02447 12.8936 8.21946 12.9381 8.23509 12.1875C8.27213 10.3681 8.48973 8.37007 8.64367 6.54306C8.67492 6.17234 8.50941 5.28598 9.18941 5.37771C9.24497 5.38531 9.40412 5.46238 9.43711 5.50092V5.50146Z\"\n fill={color}\n />\n <path\n d=\"M6.83313 5.50252C6.90547 5.58611 6.90142 5.68218 6.91068 5.78314C7.10224 7.89891 6.76253 10.266 6.90837 12.4083C6.88985 12.8822 6.11551 12.8806 6.09814 12.4083L6.15312 5.52478C6.31575 5.34783 6.6734 5.31689 6.83313 5.50252Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3678_200811\">\n <rect width=\"17\" height=\"15\" fill=\"white\" transform=\"translate(0.728516 0.726562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default TrashIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst RoleIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n viewBox=\"0 0 30 31\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <g clipPath=\"url(#clip0_8249_21508)\">\n <path\n d=\"M28.1017 30.1367H1.89833C0.852141 30.1367 0 29.2846 0 28.2384V2.03505C0 0.98886 0.852141 0.136719 1.89833 0.136719H28.1017C29.1479 0.136719 30 0.98886 30 2.03505V28.2384C30 29.2846 29.1479 30.1367 28.1017 30.1367ZM2.10926 28.0275H27.8907V2.24598H2.10926V28.0275Z\"\n fill={color}\n />\n <path\n d=\"M8.63326 12.0173C8.90535 12.1649 9.20276 12.167 9.49172 12.0552L13.1471 8.87026C13.493 8.38092 13.0058 7.70595 12.3624 7.72704C12.2612 7.73126 12.1325 7.77345 12.0292 7.79454L9.1226 10.2582C8.97074 10.2814 8.11438 9.29844 7.75791 9.21618C6.88679 9.0158 6.22237 9.77303 6.78976 10.4164C6.98381 10.6357 8.416 11.9013 8.63536 12.0194L8.63326 12.0173Z\"\n fill={color}\n />\n <path\n d=\"M8.63326 22.4313C8.90535 22.579 9.20276 22.5811 9.49172 22.4693L13.1471 19.2843C13.493 18.795 13.0058 18.12 12.3624 18.1411C12.2612 18.1453 12.1325 18.1875 12.0292 18.2086L9.1226 20.6722C8.97074 20.6954 8.11438 19.7125 7.75791 19.6302C6.88679 19.4299 6.22237 20.1871 6.78976 20.8304C6.98381 21.0498 8.416 22.3153 8.63536 22.4335L8.63326 22.4313Z\"\n fill={color}\n />\n <path\n d=\"M22.5775 9.00586H15.3322C14.8663 9.00586 14.4885 9.3836 14.4885 9.84956V10.5688C14.4885 11.0348 14.8663 11.4125 15.3322 11.4125H22.5775C23.0435 11.4125 23.4212 11.0348 23.4212 10.5688V9.84956C23.4212 9.3836 23.0435 9.00586 22.5775 9.00586Z\"\n fill={color}\n />\n <path\n d=\"M22.5775 19.2715H15.3322C14.8663 19.2715 14.4885 19.6492 14.4885 20.1152V20.8344C14.4885 21.3004 14.8663 21.6781 15.3322 21.6781H22.5775C23.0435 21.6781 23.4212 21.3004 23.4212 20.8344V20.1152C23.4212 19.6492 23.0435 19.2715 22.5775 19.2715Z\"\n fill={color}\n />\n <path\n d=\"M22.5775 14.1387H15.3322C14.8663 14.1387 14.4885 14.5164 14.4885 14.9824V15.7016C14.4885 16.1676 14.8663 16.5453 15.3322 16.5453H22.5775C23.0435 16.5453 23.4212 16.1676 23.4212 15.7016V14.9824C23.4212 14.5164 23.0435 14.1387 22.5775 14.1387Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_8249_21508\">\n <rect width=\"30\" height=\"30\" fill={color} transform=\"translate(0 0.136719)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default RoleIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst UserIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n viewBox=\"0 0 31 31\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <g clipPath=\"url(#clip0_6640_79285)\">\n <path\n d=\"M15.5 0.832031C7.22905 0.832031 0.5 7.56108 0.5 15.832C0.5 24.103 7.22905 30.832 15.5 30.832C23.7709 30.832 30.5 24.103 30.5 15.832C30.5 7.56108 23.7709 0.832031 15.5 0.832031ZM15.5 28.7053C8.40089 28.7053 2.62675 22.9311 2.62675 15.832C2.62675 8.73292 8.40089 2.95879 15.5 2.95879C22.5991 2.95879 28.3732 8.73292 28.3732 15.832C28.3732 22.9311 22.5991 28.7053 15.5 28.7053Z\"\n fill={color}\n />\n <path\n d=\"M19.5281 15.6953C20.483 14.7489 21.0742 13.4389 21.0742 11.9905C21.0742 9.11304 18.7327 6.77148 15.8552 6.77148C12.9777 6.77148 10.6361 9.11304 10.6361 11.9905C10.6361 13.5154 11.2933 14.8893 12.3397 15.8442C9.37922 17.2543 7.3269 20.2764 7.3269 23.7685C7.3269 24.3555 7.8033 24.8319 8.39028 24.8319C8.97727 24.8319 9.45366 24.3555 9.45366 23.7685C9.45366 20.3848 11.9973 17.586 15.2725 17.1756C15.4639 17.1968 15.6595 17.2096 15.8552 17.2096C16.1274 17.2096 16.3954 17.1883 16.657 17.1479C20.0619 17.4329 22.7459 20.2913 22.7459 23.7685C22.7459 24.3555 23.2223 24.8319 23.8093 24.8319C24.3962 24.8319 24.8726 24.3555 24.8726 23.7685C24.8726 20.1466 22.6672 17.0331 19.5302 15.6953H19.5281ZM12.7629 11.9905C12.7629 10.2849 14.1495 8.89824 15.8552 8.89824C17.5608 8.89824 18.9475 10.2849 18.9475 11.9905C18.9475 13.4644 17.9096 14.6979 16.5272 15.0063C16.3848 14.9999 16.2423 14.9956 16.0976 14.9956C15.8339 14.9956 15.5723 15.0084 15.315 15.0318C13.8667 14.7766 12.7608 13.5112 12.7608 11.9884L12.7629 11.9905Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6640_79285\">\n <rect width=\"30\" height=\"30\" fill={color} transform=\"translate(0.5 0.832031)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default UserIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst PlusIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n viewBox=\"0 0 17 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${className} w-[${size}px] h-[${size}px]`}\n fill={color}\n preserveAspectRatio=\"xMidYMid meet\"\n {...props}\n >\n <g clipPath=\"url(#clip0_3678_200811)\">\n <path\n d=\"M7.4394 7.51422C8.61928 7.38916 10.0254 7.55139 11.2183 7.54802C12.2462 7.76433 13.0834 8.73098 13.161 9.83283C13.2839 11.5938 13.064 13.5135 13.161 15.2947C13.1384 15.4874 12.9962 15.6395 12.8313 15.7105L5.74231 15.7274C5.50956 15.7172 5.30591 15.5009 5.29621 15.2609C5.39319 13.4933 5.17338 11.587 5.29621 9.83283C5.37703 8.67014 6.32417 7.63251 7.4394 7.51084V7.51422Z\"\n fill={color}\n />\n <path\n d=\"M8.92617 0.740824C11.315 0.507611 12.9895 3.18111 11.7547 5.35777C10.6071 7.37557 7.79155 7.35867 6.67955 5.31383C5.63867 3.40081 6.83148 0.946998 8.92617 0.740824Z\"\n fill={color}\n />\n <path\n d=\"M2.04411 15.7226C1.31355 15.6314 0.815737 14.9588 0.770481 14.2219C0.71876 13.3668 0.715527 12.0656 0.770481 11.2138C0.831899 10.2844 1.41053 9.40896 2.22513 9.04055C2.94276 8.71608 3.74443 8.83776 4.50408 8.8141C4.41357 9.20955 4.32629 9.59485 4.30366 10.0038C4.21638 11.7039 4.37155 13.4817 4.30366 15.1886L4.40387 15.7226H2.04087H2.04411Z\"\n fill={color}\n />\n <path\n d=\"M14.0531 15.7236L14.1533 15.1895C14.0854 13.4827 14.2406 11.7049 14.1533 10.0048C14.1339 9.5958 14.0434 9.21049 13.9529 8.81504C14.7125 8.8387 15.5142 8.71365 16.2318 9.0415C17.0497 9.41329 17.6283 10.2887 17.6865 11.2148C17.7414 12.0665 17.7414 13.3678 17.6865 14.2229C17.6445 14.8887 17.1079 15.7236 16.4129 15.7236H14.0499H14.0531Z\"\n fill={color}\n />\n <path\n d=\"M3.77045 3.60682C6.00737 3.34318 7.16139 6.2161 5.44491 7.67284C3.89975 8.98424 1.64019 7.61876 1.8988 5.55364C2.0184 4.58361 2.833 3.71835 3.77045 3.60682Z\"\n fill={color}\n />\n <path\n d=\"M14.0789 3.60555C16.5033 3.31826 17.528 6.61366 15.5044 7.86085C13.788 8.91875 11.7321 7.22542 12.2848 5.22114C12.5111 4.39983 13.2546 3.70357 14.0789 3.60555Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3678_200811\">\n <rect width=\"17\" height=\"15\" fill=\"white\" transform=\"translate(0.728516 0.726562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default PlusIcon;\n","import * as React from \"react\";\nimport type { IconProps } from \"./type\";\n\nconst PlusIcon: React.FC<IconProps> = ({ size = 16, color = \"currentColor\", className, ...props }) => (\n <svg\n viewBox=\"0 0 16 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n fill={color}\n {...props}\n >\n <g clipPath=\"url(#clip0_2001_145027)\">\n <path\n d=\"M15.6777 17.4958C15.5882 17.5711 15.3981 17.6249 15.2751 17.6249H0.545811C0.310948 17.5819 0.143189 17.3128 0.109638 17.0976C0.0201661 16.3551 0.0649018 14.5473 0.255029 13.8263C0.691202 12.1368 2.31287 10.8132 4.13585 10.6948C6.66342 10.5334 9.35875 10.8239 11.8975 10.6948C15.3869 11.136 16.2145 14.063 15.8566 17.0438C15.8454 17.173 15.7671 17.4097 15.6665 17.4958H15.6777Z\"\n fill={color}\n />\n <path\n d=\"M7.40161 0.396418C11.1147 0.0305414 13.6982 3.70007 11.7969 6.82078C9.89563 9.94149 5.26548 9.50029 3.87867 6.27196C2.79383 3.74311 4.52734 0.686967 7.40161 0.396418Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2001_145027\">\n <rect width=\"15.87\" height=\"17.25\" fill=\"white\" transform=\"translate(0.0649414 0.375)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default PlusIcon;\n","import React from \"react\";\nimport { cn, formatISODate } from \"@/utils\";\nimport { TrashIcon } from \"@/components/icons\";\n\nexport type AuditFooterProps = {\n createdAt?: string | Date | null;\n createdBy?: string | null;\n updatedAt?: string | Date | null;\n updatedBy?: string | null;\n onDelete?: () => void;\n canDelete?: boolean;\n emptyValue?: React.ReactNode;\n labels?: {\n createdOn?: string;\n createdAtTime?: string;\n createdBy?: string;\n updatedOn?: string;\n updatedAtTime?: string;\n updatedBy?: string;\n };\n classNames?: {\n root?: string;\n grid?: string;\n label?: string;\n value?: string;\n deleteButton?: string;\n deleteButtonDisabled?: string;\n };\n formatters?: {\n date?: (value: string | Date) => React.ReactNode;\n time?: (value: string | Date) => React.ReactNode;\n user?: (value?: string | null) => React.ReactNode;\n };\n deleteAriaLabel?: string;\n deleteIcon?: React.ReactNode;\n};\n\nexport const AuditFooter: React.FC<AuditFooterProps> = ({\n createdAt,\n createdBy,\n updatedAt,\n updatedBy,\n onDelete,\n canDelete = true,\n emptyValue = \"-\",\n labels,\n classNames,\n formatters,\n deleteAriaLabel = \"Delete\",\n deleteIcon\n}) => {\n const resolvedLabels = {\n createdOn: \"Created on :\",\n createdAtTime: \"at Time :\",\n createdBy: \"by :\",\n updatedOn: \"Last Update :\",\n updatedAtTime: \"at Time :\",\n updatedBy: \"by :\",\n ...labels\n };\n const dateFormatter =\n formatters?.date ?? ((value: string | Date) => formatISODate(value, \"DD/MM/YYYY\"));\n const timeFormatter = formatters?.time ?? ((value: string | Date) => formatISODate(value, \"H:i\"));\n const userFormatter = formatters?.user ?? ((value?: string | null) => value ?? emptyValue);\n const resolvedDeleteIcon = deleteIcon ?? <TrashIcon className=\"w-5 h-5\" />;\n\n return (\n <div className={cn(\"flex w-full h-14 mt-12 justify-between items-end px-3\", classNames?.root)}>\n <div\n className={cn(\n \"grid grid-cols-[auto_1fr_auto_1fr] gap-x-3 gap-y-1 text-[10px]\",\n classNames?.grid\n )}\n >\n {/* Created */}\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdOn}\n </p>\n <p className={classNames?.value}>{createdAt ? dateFormatter(createdAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdAtTime}\n </p>\n <p className={classNames?.value}>{createdAt ? timeFormatter(createdAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdBy}\n </p>\n <p className={cn(\"col-span-3\", classNames?.value)}>{userFormatter(createdBy)}</p>\n\n {/* Updated */}\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedOn}\n </p>\n <p className={classNames?.value}>{updatedAt ? dateFormatter(updatedAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedAtTime}\n </p>\n <p className={classNames?.value}>{updatedAt ? timeFormatter(updatedAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedBy}\n </p>\n <p className={cn(\"col-span-3\", classNames?.value)}>{userFormatter(updatedBy)}</p>\n </div>\n\n {onDelete && (\n <div\n className={\n canDelete ?\n cn(\"w-5 h-5 cursor-pointer text-red-500\", classNames?.deleteButton)\n : cn(\"w-5 h-5 text-gray-300 cursor-not-allowed\", classNames?.deleteButtonDisabled)\n }\n onClick={canDelete ? onDelete : undefined}\n aria-label={deleteAriaLabel}\n role=\"button\"\n >\n {resolvedDeleteIcon}\n </div>\n )}\n </div>\n );\n};\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 data-testid=\"advsearch-icon-close\"\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 data-testid=\"advsearch-icon-search\"\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\"] // removed containsAny from json\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 allowRegex: field.type === \"text\" ? field.allowRegex : undefined\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 allowRegex: r.allowRegex\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 allowRegex: r.allowRegex\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 allowRegex: r.allowRegex\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\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 data-testid=\"advsearch-dropdown-selectfield\"\n >\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","import { ClassValue } from \"clsx\";\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 = {\n decorator?: React.ReactNode;\n labelStyle?: ClassValue;\n value: string;\n label: string;\n};\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 interface TextFieldSchema extends FieldSchemaBase<\"text\"> {\n allowRegex?: RegExp;\n}\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 allowRegex?: RegExp;\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 allowRegex?: RegExp;\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 filterFieldMap?: Record<string, 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 data-testid=\"advsearch-dropdown-cond\"\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\";\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\" | \"prefix\"> &\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 inputProps = rest;\n\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix) || loading;\n const isFullWidth = fullWidth ?? true;\n\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp\n } = rest;\n\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\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\n {inputElement}\n\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 {inputWithAffixes}\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 const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n if (val !== \"\" && row.allowRegex && !row.allowRegex.test(val)) {\n return;\n }\n field.onChange(val);\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n onChange={handleChange}\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 data-testid=\"advsearch-input-value\"\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 cotton = \"hover:ring-2 active:ring-0 focus-visible:ring-2 text-primary-foreground \";\nconst buttonVariants = cva(\n \"disabled:bg-sus-secondary-gray-5 disabled:text-sus-secondary-gray-8 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 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 cotton +\n \"bg-sus-primary-green-9 hover:bg-sus-primary-green-8 hover:ring-sus-primary-green-8/20 focus-visible:ring-2 focus-visible:bg-sus-primary-green-8 active:bg-sus-primary-green-10 focus-visible:ring-sus-primary-green-10\",\n destructive:\n cotton +\n \"bg-sus-button-red-2 hover:bg-sus-button-red-1 hover:ring-sus-button-red-1/20 focus-visible:ring-2 active:bg-sus-button-red-3 focus-visible:bg-sus-button-red-1 focus-visible:ring-sus-button-red-3\",\n cancel:\n cotton +\n \"bg-sus-button-accent-2 hover:bg-sus-button-accent-1 hover:ring-sus-button-accent-1/20 focus-visible:ring-2 active:bg-sus-button-accent-3 focus-visible:bg-sus-button-accent-1 focus-visible:ring-sus-button-accent-3\",\n warning:\n cotton +\n \"bg-sus-button-yellow-2 hover:bg-sus-button-yellow-1 hover:ring-sus-button-yellow-1/20 focus-visible:ring-2 active:bg-sus-button-yellow-3 focus-visible:bg-sus-button-yellow-1 focus-visible:ring-sus-button-yellow-3\",\n cottonYellowDark:\n cotton +\n \"bg-sus-button-yellowdark-2 hover:bg-sus-button-yellowdark-1 hover:ring-sus-button-yellowdark-1/20 focus-visible:ring-2 active:bg-sus-button-yellowdark-3 focus-visible:bg-sus-button-yellowdark-1 focus-visible:ring-sus-button-yellowdark-3\",\n cottonGreen:\n cotton +\n \"bg-sus-button-green-2 hover:bg-sus-button-green-1 hover:ring-sus-button-green-1/20 focus-visible:ring-2 active:bg-sus-button-green-3 focus-visible:bg-sus-button-green-1 focus-visible:ring-sus-button-green-3\",\n cottonBlue:\n cotton +\n \"bg-sus-button-blue-2 hover:bg-sus-button-blue-1 hover:ring-sus-button-blue-1/20 focus-visible:ring-2 active:bg-sus-button-blue-3 focus-visible:bg-sus-button-blue-1 focus-visible:ring-sus-button-blue-3\",\n cottonRed:\n cotton +\n \"bg-sus-button-red-2 hover:bg-sus-button-red-1 hover:ring-sus-button-red-1/20 focus-visible:ring-2 active:bg-sus-button-red-3 focus-visible:bg-sus-button-red-1 focus-visible:ring-sus-button-red-3\",\n cottonAccent:\n cotton +\n \"bg-sus-button-accent-2 hover:bg-sus-button-accent-1 hover:ring-sus-button-accent-1/20 focus-visible:ring-2 active:bg-sus-button-accent-3 focus-visible:bg-sus-button-accent-1 focus-visible:ring-sus-button-accent-3\",\n cottonYellow:\n cotton +\n \"bg-sus-button-yellow-2 hover:bg-sus-button-yellow-1 hover:ring-sus-button-yellow-1/20 focus-visible:ring-2 active:bg-sus-button-yellow-3 focus-visible:bg-sus-button-yellow-1 focus-visible:ring-sus-button-yellow-3\",\n cottonBlack:\n cotton +\n \"bg-sus-button-black-2 hover:bg-sus-button-black-1 hover:ring-sus-button-black-1/20 focus-visible:ring-2 active:bg-sus-button-black-3 focus-visible:bg-sus-button-black-1 focus-visible:ring-sus-button-black-3\",\n defaultOutline:\n \"border border-sus-primary-green-9 text-black hover:border-sus-primary-green-8 hover:text-sus-primary-green-8 active:border-sus-primary-green-9 active:text-black focus-visible:border-sus-primary-green-10 focus-visible:text-sus-primary-green-10\",\n destructiveOutline:\n \"border border-sus-button-red-2 text-black hover:border-sus-button-red-1 hover:text-sus-button-red-1 active:border-sus-button-red-2 active:text-black focus-visible:border-sus-button-red-3 focus-visible:text-sus-button-red-3\",\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 defaultSelect: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2\"\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: \"\",\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 { 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\";\nimport { SuiCalendarIcon2 } from \"../icons\";\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 = \"Select date\",\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 \"group relative flex! w-full items-center justify-between rounded-md bg-white! pl-4 text-left text-sm font-medium shadow-none border border-sus-secondary-gray-8 focus-visible:ring-0 focus-visible:ring-offset-0 data-[state=open]:border-black disabled:bg-sus-secondary-gray-3!\",\n \"min-h-9\",\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\n className={cn(\n \"flex-1 truncate font-light\",\n disabled && parsedValue && \"text-foreground\"\n )}\n >\n {buttonLabel}\n </span>\n <span className=\"flex items-center gap-2 text-black group-disabled:text-sus-secondary-gray-8 shrink-0\">\n <SuiCalendarIcon2 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 data-testid=\"advsearch-date-value\"\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 data-testid=\"advsearch-dropdown-value\"\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} className={cn(opt.labelStyle)}>\n {opt.decorator}\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 multiple?: boolean;\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 multiple = false\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputFocused, setInputFocused] = useState(false);\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 const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(-1);\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 = multiple && value.length >= maxTags;\n const selectedValue = !multiple && value.length > 0 ? value[0] : undefined;\n const selectedLabel = selectedValue ? (optionLabels[selectedValue] ?? selectedValue) : undefined;\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 (multiple) {\n if (value.length >= maxTags) return;\n onChange([...value, trimmed]);\n } else {\n onChange([trimmed]);\n }\n setInputValue(\"\");\n // setSuggestions([]);\n // setIsDropdownOpen(false);\n },\n [value, onChange, maxTags, multiple]\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 setIsDropdownOpen(false);\n setInputFocused(false);\n },\n [value, onChange]\n );\n\n const handleClear = useCallback(() => {\n setInputValue(\"\");\n setSuggestions([]);\n setInputFocused(false);\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 if (multiple) {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n } else {\n inputRef.current?.blur();\n setInputFocused(false);\n setIsDropdownOpen(false);\n }\n inputRef.current!.value = \"\";\n },\n [addTag, multiple, upsertOptionLabels]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\" && suggestions.length > 0) {\n e.preventDefault();\n setIsDropdownOpen(true);\n setActiveSuggestionIndex((prev) => Math.min(prev + 1, suggestions.length - 1));\n return;\n }\n\n if (e.key === \"ArrowUp\" && suggestions.length > 0) {\n e.preventDefault();\n setActiveSuggestionIndex((prev) => Math.max(prev - 1, 0));\n return;\n }\n\n if (e.key === \"Enter\" && activeSuggestionIndex >= 0 && suggestions[activeSuggestionIndex]) {\n e.preventDefault();\n handleSuggestionSelect(suggestions[activeSuggestionIndex]);\n return;\n }\n\n if (e.key === \",\" || e.key === \"Enter\") {\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" && !inputValue) {\n removeTag(value.length - 1);\n }\n },\n [suggestions, activeSuggestionIndex, handleSuggestionSelect, inputValue, removeTag, value.length]\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 || !inputFocused) return;\n\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n\n const query = inputValue.trim();\n\n setLoading(true);\n setFetchError(null);\n setIsDropdownOpen(true);\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, inputFocused]);\n\n useEffect(() => {\n if (!fetchSuggestions) return;\n if (value.length === 0) return;\n\n const unresolvedValues = value.filter((v) => !optionLabels[v]);\n if (unresolvedValues.length === 0) return;\n\n fetchSuggestions(\"\")\n .then((options) => {\n upsertOptionLabels(options);\n })\n .catch(() => {});\n }, [value, fetchSuggestions, optionLabels, 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 setInputFocused(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, value]);\n\n useEffect(() => {\n if (suggestions.length === 0) {\n setActiveSuggestionIndex(-1);\n return;\n }\n setActiveSuggestionIndex((prev) => {\n if (prev === -1) return 0;\n if (prev >= suggestions.length) return suggestions.length - 1;\n return prev;\n });\n }, [suggestions]);\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-20 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, index) => {\n const disabled = value.includes(option.value) || (multiple && 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\n ${\n disabled ? \"cursor-not-allowed text-gray-400\"\n : index === activeSuggestionIndex ? \"bg-gray-100 text-gray-900\"\n : \"hover:bg-gray-100 text-gray-700\"\n }`}\n onClick={() => handleSuggestionSelect(option)}\n disabled={disabled}\n aria-selected={index === activeSuggestionIndex}\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 truncate\" ref={containerRef}>\n <div\n className={`flex min-h-9 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 {multiple &&\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-sus-secondary-gray-3 bg-sus-secondary-gray-2 px-2 py-1 my-1 text-sm text-inherit max-w-full wrap-break-word\"\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 aria-label={`Remove ${label}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n );\n })}\n {!multiple && selectedLabel && (\n <span className=\"truncate text-sm text-gray-700 max-w-full\">{selectedLabel}</span>\n )}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setInputFocused(true);\n }}\n hidden={!multiple && selectedLabel !== undefined} // single select --> hide input\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={multiple && limitReached}\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 data-testid=\"advsearch-lookup-list\"\n multiple\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 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 data-testid=\"advsearch-btn-add\"\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 data-testid=\"advsearch-btn-remove\"\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 if (Array.isArray(row.value)) {\n return {};\n }\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: dayEnd.toISOString() }, // use end of the day time\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 if (Array.isArray(row.value)) {\n return {};\n }\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: false\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: false\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 (Array.isArray(row.value)) {\n return {};\n }\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 { 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\nexport const FILTER_FIELD_MAP: Record<string, string> = {\n timezone: \"timezoneId\",\n decimalSeparator: \"decimalSeparatorId\",\n country: \"countryId\",\n currency: \"currencyId\"\n};\n\nexport function transformFilterKeys(obj: any, fieldMap: Record<string, string> = FILTER_FIELD_MAP): any {\n if (Array.isArray(obj)) {\n return obj.map((item) => transformFilterKeys(item, fieldMap));\n }\n\n if (obj && typeof obj === \"object\") {\n const newObj: any = {};\n\n for (const key in obj) {\n const mappedKey = fieldMap[key] ?? key;\n newObj[mappedKey] = transformFilterKeys(obj[key], fieldMap);\n }\n\n return newObj;\n }\n\n return obj;\n}\n","import { isValid, parseISO } from \"date-fns\";\n\nexport interface ValidationResult {\n valid: boolean;\n message?: string;\n}\n\nexport const sanitizeInput = (val: string | any[] | undefined): string | any[] | undefined => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map((v) => sanitizeInput(v) as string | undefined); // sanitize each elements in array\n }\n if (val.includes(\"\\n\") || val.includes(\"\\r\") || /[\\u2028\\u2029]/u.test(val))\n return \"__INVALID_NEWLINE__\";\n if (/\\\\\\\\/.test(val)) return \"__INVALID_ESCAPE__\";\n if (/\\\\(n|t|r|b|f|u[0-9a-fA-F]{4})/.test(val)) return \"__INVALID_ESCAPE__\";\n if (/\\p{Cf}/u.test(val)) return \"__INVALID_UNICODE_WHITESPACE__\";\n if (/[\\u00A0\\u1680\\u180E\\u202F\\u205F\\u3000]/u.test(val)) return \"__INVALID_UNICODE_WHITESPACE__\";\n const trimmed = val.trim();\n if (/^\\{.*\\}$/s.test(trimmed) || /^\\[.*\\]$/s.test(trimmed)) return \"__INVALID_JSON_LITERAL__\";\n if (/\\\\\\{/.test(val) || /\\\\\\}/.test(val)) return \"__INVALID_JSON_ESCAPE__\";\n if (/[%*~^]/.test(trimmed)) return \"__INVALID_WILDCARD__\";\n if (/[%><={}\\\\[\\]\"']/u.test(trimmed)) return \"__INVALID_CHAR__\";\n if (/\\p{Cc}/u.test(val)) return \"__INVALID_CONTROL_CHAR__\";\n return trimmed.replace(/\\s+/g, \" \");\n};\n\nconst numericTypes = [\"number\", \"integer\", \"decimal\"];\nconst dateTypes = [\"date\", \"datemonth\"];\n\nexport const validateByFieldType = (\n value: string | any[] | undefined,\n fieldType: string\n): ValidationResult => {\n if (!value) return { valid: true };\n if (Array.isArray(value)) {\n return { valid: true }; // skip checking if it is array\n }\n if (numericTypes.includes(fieldType)) {\n if (!/^\\d+(\\.\\d+)?$/.test(value)) {\n return { valid: false, message: \"Please enter a valid number.\" };\n }\n }\n\n if (fieldType === \"boolean\") {\n if (![\"true\", \"false\"].includes(value.toLowerCase())) {\n return { valid: false, message: \"Please enter a boolean value (true/false).\" };\n }\n }\n\n if (dateTypes.includes(fieldType)) {\n const normalized = fieldType === \"datemonth\" ? `${value}-01` : value;\n const parsed = parseISO(normalized);\n if (!isValid(parsed)) {\n return { valid: false, message: \"Invalid date format.\" };\n }\n }\n\n return { valid: true };\n};\n\nexport const parseRangeValue = (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","import React, { useMemo, useCallback } from \"react\";\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\";\nimport { FILTER_FIELD_MAP, transformFilterKeys } from \"../lib/utils\";\nimport { sanitizeInput, validateByFieldType } from \"../utils/advanceSearchUtils\";\nimport { parseISO, isValid, isAfter } from \"date-fns\";\n\nconst AdvanceSearch: React.FC<AdvanceSearchProps> = ({\n fields,\n portalId,\n iconColor = \"#ffffff\",\n limitRows = 4,\n onSearch,\n onClear,\n shortDateFormat,\n filterFieldMap = FILTER_FIELD_MAP\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\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 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 | any[], fieldType: string) => {\n if (!raw) return undefined;\n if (Array.isArray(raw)) return undefined; // skip if it's an array (array is not possible for datetime)\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 rows.forEach((r) => {\n const ops = operatorsForField(r.fieldName);\n if (!ops.length || !ops.includes(r.operator))\n operatorValidation[r.id] = \"Please select an operator.\";\n });\n setOperatorErrors(operatorValidation);\n if (Object.keys(operatorValidation).length > 0) return;\n\n const currentValues = getValues();\n let hasError = false;\n\n const processedRows = rows.map((r) => {\n const startField = `value_${r.id}` as `value_${string}`;\n const endField = `value2_${r.id}` as `value2_${string}`;\n let v1: string | any[] | undefined = currentValues[startField];\n let v2: string | any[] | undefined = currentValues[endField];\n\n const s1 = sanitizeInput(v1);\n if (\n (Array.isArray(s1) && s1.some((v) => v?.startsWith(\"__INVALID\"))) ||\n (typeof s1 === \"string\" && s1?.startsWith(\"__INVALID\"))\n ) {\n hasError = true;\n setError(startField, { type: \"validate\", message: \"Invalid input.\" });\n return null;\n }\n v1 = s1 || \"\";\n\n const valid1 = validateByFieldType(v1, r.fieldType);\n if (!valid1.valid) {\n hasError = true;\n setError(startField, { type: \"validate\", message: valid1.message });\n return null;\n }\n\n if (r.operator === \"between\") {\n const s2 = sanitizeInput(v2);\n if (\n (Array.isArray(s2) && s2.some((v) => v?.startsWith(\"__INVALID\"))) ||\n (typeof s2 === \"string\" && s2?.startsWith(\"__INVALID\"))\n ) {\n hasError = true;\n setError(endField, { type: \"validate\", message: \"Invalid input.\" });\n return null;\n }\n v2 = s2 || \"\";\n\n const valid2 = validateByFieldType(v2, r.fieldType);\n if (!valid2.valid) {\n hasError = true;\n setError(endField, { type: \"validate\", message: valid2.message });\n return null;\n }\n\n if (v1 && v2 && [\"date\", \"datemonth\"].includes(r.fieldType)) {\n const d1 = parseRangeValue(v1, r.fieldType);\n const d2 = parseRangeValue(v2, r.fieldType);\n if (d1 && d2 && isAfter(d1, d2)) {\n hasError = true;\n setError(startField, { type: \"validate\", message: \"Start value must be before end value.\" });\n setError(endField, { type: \"validate\", message: \"End value must be after start value.\" });\n return null;\n }\n }\n\n return { ...r, value: v1, value2: v2 };\n }\n\n return { ...r, value: v1 };\n });\n\n if (hasError) return;\n\n const cleanedRows = processedRows.filter(Boolean) as typeof rows;\n const param = {\n AND: cleanedRows.map((r) => getBuilder(r.fieldType).build(r)).filter(Boolean) as Record<\n string,\n unknown\n >[]\n };\n\n if (onSearch) onSearch(transformFilterKeys(param, filterFieldMap));\n }, [\n rows,\n operatorsForField,\n getValues,\n parseRangeValue,\n setError,\n setOperatorErrors,\n filterFieldMap,\n onSearch\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\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) => clearValue(row.id, which)}\n disableAdd={limitRows !== undefined && rows.length >= limitRows}\n />\n ))}\n </div>\n\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 data-testid=\"advsearch-btn-clear\"\n >\n Clear Search\n </Button>\n\n <Button\n type=\"submit\"\n className=\"w-full bg-sus-green-2 text-white hover:bg-[#2f7c21] md:w-auto md:min-w-[120px]\"\n data-testid=\"advsearch-btn-search\"\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 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none\",\n \"focus-visible:border-sus-primary-green-12\",\n \"disabled:cursor-not-allowed disabled:bg-sus-secondary-gray-3! disabled:border-sus-secondary-gray-5! disabled:text-sus-secondary-gray-8!\",\n \"aria-invalid:ring-sus-alert-negative-6! aria-invalid:border-sus-alert-negative-6! aria-invalid:bg-sus-alert-negative-1!\",\n \"bg-sus-primary-green-2 border-sus-primary-green-7 hover:border-sus-primary-green-9\",\n \"data-[state=checked]:bg-sus-primary-green-9 data-[state=checked]:border-sus-primary-green-9 data-[state=checked]:text-sus-primary-green-2 data-[state=checked]:hover:bg-sus-primary-green-10\",\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","import type { Table } from \"@tanstack/react-table\";\n\nexport 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\nexport function resetVisibleTableState(payload: {\n table: Table<any> | null;\n visibility: Record<string, boolean>;\n}) {\n const { table, visibility } = payload;\n if (!table) return;\n\n table.setColumnVisibility(visibility);\n const isVisible = (id: string) => payload.visibility?.[id] === true;\n const prevState = table.getState();\n table.setColumnFilters(prevState.columnFilters.filter((f) => isVisible(f.id)));\n table.setSorting(prevState.sorting.filter((s) => isVisible(s.id)));\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 * as React from \"react\";\n\nexport type UseControllableStateOptions<T = any> = {\n defaultValue: T;\n value?: T;\n};\n\nexport type UseControllableStateResult<T = any> = {\n value: T;\n setValue: (nextValue: T | ((prev: T) => T)) => void;\n isControlled: boolean;\n};\n\nconst useControllableState = <T = any>({\n defaultValue,\n value\n}: UseControllableStateOptions<T>): UseControllableStateResult<T> => {\n const isControlled = typeof value !== \"undefined\";\n\n const [internalValue, setInternalValue] = React.useState<T>(() => {\n return isControlled ? value : defaultValue;\n });\n\n React.useEffect(() => {\n if (!isControlled) return;\n setInternalValue(value);\n }, [isControlled, value]);\n\n const setValue = React.useCallback(\n (nextValue: T | ((prev: T) => T)) => {\n if (isControlled) return;\n setInternalValue(nextValue);\n },\n [isControlled]\n );\n\n return {\n value: isControlled ? value : internalValue,\n setValue,\n isControlled\n };\n};\n\nexport default useControllableState;\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\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 if (!showSorter) return;\n event.preventDefault();\n\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-sus-gray-5\": context?.column?.getIsSorted() === \"asc\",\n \"stroke-sus-gray-5/45\": context?.column?.getNextSortingOrder() === \"asc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n <ChevronDown\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-sus-gray-5\": context?.column?.getIsSorted() === \"desc\",\n \"stroke-sus-gray-5/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-sus-gray-2\", 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-0.5 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-0.5 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 & 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 { 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 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 if (!tableRef) return;\n tableRef.current = table;\n return () => {\n tableRef.current = null;\n };\n }, [tableRef, table]);\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 \"w-full sm:max-w-[360px] max-w-[calc(100%-2rem)] 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 translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-4 shadow-lg duration-200\",\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 className=\"text-sus-secondary-gray-8 size-5\" />\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-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"dialog-footer\" className={cn(\"flex flex-col-reverse gap-2\", className)} {...props} />\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","export const DIALOG_ALERT_I18N_SUBNAMESPACE = \"dialog_alert\";\nexport const i18nPrefix = `translation:${DIALOG_ALERT_I18N_SUBNAMESPACE}.`;\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, buttonVariants } from \"../button\";\nimport { DialogAlertProps, DialogVariant } from \"./types\";\nimport { i18nPrefix } from \"./lib/constants\";\nimport { VariantProps } from \"class-variance-authority\";\nimport { useTranslation } from \"react-i18next\";\n\ntype ButtonVariants = VariantProps<typeof buttonVariants>[\"variant\"];\n\nconst titleColorVariant: Record<DialogVariant, string> = {\n default: \"\",\n success: \"text-sus-button-green-3\",\n error: \"text-sus-button-red-3\",\n warning: \"text-sus-button-yellow-3\",\n confirm: \"text-sus-button-red-3\",\n \"confirm-green\": \"text-sus-button-red-3\"\n};\n\nconst dialogButtonVariantMap: Record<DialogVariant, ButtonVariants> = {\n default: \"default\",\n success: \"cottonGreen\",\n error: \"destructive\",\n warning: \"warning\",\n confirm: \"destructive\",\n \"confirm-green\": \"cottonGreen\"\n};\n\nexport function DialogAlert({\n open,\n onOpenChange,\n title,\n description,\n variant = \"default\",\n confirmText,\n cancelText = i18nPrefix + \"cancel\",\n onConfirm,\n onCancel,\n showCancel = true,\n align = \"end\",\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 let func = onConfirm;\n if (variant === \"success\" && showCancel === false) {\n func = onConfirm ?? onCancel;\n }\n func?.();\n onOpenChange(false);\n }, [onCancel, onConfirm, onOpenChange, showCancel, variant]);\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-2 ${alignClass}`}>\n {showCancel && (\n <Button variant=\"cancel\" onClick={handleCancel}>\n {t(cancelText)}\n </Button>\n )}\n {confirmText && (\n <Button variant={dialogButtonVariantMap[variant]} onClick={handleConfirm}>\n {t(confirmText)}\n </Button>\n )}\n </div>\n </DialogContent>\n </BaseDialog>\n );\n}\n","import { DialogAlertTemplates } from \"../types\";\n\nexport const DIALOG_ALERT_TEMPLATES: DialogAlertTemplates = {\n \"success.saved\": {\n variant: \"success\",\n title: \"success.saved.title\",\n description: \"success.saved.description\",\n confirmText: \"ok\",\n showCancel: false\n },\n \"success.deleted\": {\n variant: \"success\",\n title: \"success.deleted.title\",\n description: \"success.deleted.description\",\n confirmText: \"ok\",\n showCancel: false\n },\n \"success.removed\": {\n variant: \"success\",\n title: \"success.removed.title\",\n description: \"success.removed.description\",\n confirmText: \"ok\",\n showCancel: false\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 },\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 persistent: true\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.reset_form\": {\n variant: \"confirm\",\n title: \"confirm.reset_form.title\",\n description: \"confirm.reset_form.description\",\n confirmText: \"confirm.reset_form.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 { 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 ok: \"OK\",\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 perform this action.\",\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.reset_form\": {\n title: \"Confirmation\",\n description: \"Unsaved changes. If you continue, all changes will be lost.\",\n confirm_text: \"Reset\"\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","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport { defaultResource } from \"./default\";\n\nconst instance = i18n\n .createInstance({\n resources: defaultResource,\n lng: \"sharedui\",\n fallbackLng: \"sharedui\",\n defaultNS: \"translation\",\n interpolation: {\n escapeValue: false\n }\n })\n .use(initReactI18next);\n\ninstance.init();\n\nexport default instance;\n","import { DialogAlert } from \"../DialogAlert\";\nimport {\n DialogAlertI18nResource,\n DialogAlertProps,\n DialogAlertTemplateUnit,\n TemplateKeys\n} from \"../types\";\nimport { DIALOG_ALERT_TEMPLATES } from \"../templates\";\nimport { create } from \"zustand\";\nimport i18n from \"../locale/i18n\";\nimport { useEffect } from \"react\";\nimport { i18nPrefix } from \"../lib/constants\";\nimport { I18nextProvider } from \"react-i18next\";\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?: {\n template?: TemplateKeys;\n props?: OpenDialogAlert;\n isExclusive?: boolean;\n }) => void;\n closeDialogAlert: () => void;\n isExclusive: boolean;\n setIsExclusive: (val: boolean) => void;\n};\n\nconst useDialogAlertStore = create<State>((set, get) => ({\n open: false,\n dialogProps: {},\n setOpen: (open) => {\n if (!open && get().isExclusive) {\n // on closing dialog\n get().setIsExclusive(false);\n }\n set({ open });\n },\n setDialogProps: (data) => set({ dialogProps: data }),\n\n openDialogAlert: (payload) => {\n // if there is another dialog already open with isExclusive: true, do nothing\n if (get().isExclusive) {\n return;\n }\n let templateVal: DialogAlertTemplateUnit | undefined;\n if (payload?.template) {\n templateVal = { ...DIALOG_ALERT_TEMPLATES[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 get().setIsExclusive(payload?.isExclusive ?? false);\n },\n closeDialogAlert: () => {\n set({ open: false });\n },\n\n isExclusive: false,\n setIsExclusive: (isExclusive) => set({ isExclusive })\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 <I18nextProvider i18n={i18n}>\n {children}\n <DialogAlert open={open} onOpenChange={setOpen} {...dialogProps} />\n </I18nextProvider>\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 as any).isAxiosError) {\n let template: TemplateKeys = \"error.something_went_wrong\";\n let props = undefined;\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 props = { confirmText: undefined };\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, props });\n } else if (error instanceof Error) {\n openDialogAlert({ template: \"error.something_went_wrong\", props: { description: error.message } });\n } else {\n openDialogAlert({ template: \"error.something_went_wrong\" });\n }\n};\n\nexport const getDialogAlertControls = () => ({\n openDialogAlert,\n closeDialogAlert,\n openErrorDialogAlert\n});\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 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","export * from \"./accordion\";\nexport * from \"./button\";\nexport * from \"./checkbox\";\nexport * from \"./ClearButton\";\nexport * from \"./collapsible\";\nexport { default as ListContainer } from \"./container\";\nexport * from \"./container\";\nexport * from \"./datepicker\";\nexport * from \"./dialog\";\nexport * from \"./form\";\nexport { default as ListHeader } from \"./header\";\nexport * from \"./header\";\nexport * from \"./input\";\nexport * from \"./label\";\nexport * from \"./monthpicker\";\nexport * from \"./popover\";\nexport * from \"./radio\";\nexport * from \"./richtext\";\nexport * from \"./select\";\nexport * from \"./separator\";\nexport * from \"./sheet\";\nexport * from \"./sidebar\";\nexport * from \"./skeleton\";\nexport * from \"./spinner\";\nexport * from \"./switch\";\nexport * from \"./table\";\nexport * from \"./textarea\";\nexport * from \"./tooltip\";\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 \"@/components/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 {title}\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-0.5 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 { 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 \"group size-4 cursor-default rounded-full border border-black bg-white outline-none focus:shadow-black hover:ring-accent hover:ring-4 disabled:border-sus-secondary-gray-8 disabled:bg-sus-secondary-gray-3 disabled:pointer-events-none\",\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-2 after:rounded-full after:bg-black group-disabled:after:bg-sus-secondary-gray-8\" />\n </RadioGroupPrimitive.Item>\n {children}\n </div>\n );\n}\n\nexport function RadioLabel({\n children,\n htmlFor,\n className,\n disabled,\n ...props\n}: React.ComponentProps<\"label\"> & { disabled?: boolean }) {\n return (\n <label\n className={cn(\"pl-2 leading-none text-black\", className, disabled && \"text-sus-secondary-gray-8\")}\n htmlFor={htmlFor}\n {...props}\n >\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","\"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","// /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","\"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","\"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","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\";\nimport { Button } from \"@/components/ui/button\";\nimport LoadingOverlay from \"@/components/ui/LoadingOverlay\";\nimport { cn } from \"@/utils\";\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\";\nimport { FormMessage } from \"../ui\";\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 /* empty */\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 loading = false,\n className,\n editorClassName,\n errorMessage,\n tokenConfigs,\n operators = defaultOperators,\n operatorShortcuts = defaultOperatorShortcuts,\n onChange,\n onSelectSuggestion,\n field,\n fieldState,\n mode = \"edit\"\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) => lookup.set(config.prefix, config));\n return lookup;\n }, [normalizedConfigs]);\n\n const allowedOperators = useMemo(() => operators.map((operator) => operator.value), [operators]);\n const displayError = errorMessage ?? fieldState?.error?.message;\n const hasError = Boolean(displayError);\n const isEditorReadOnly = mode === \"display\";\n const isEditorDisabled = disabled || loading || isEditorReadOnly;\n\n const convertValueToContent = useCallback(\n (input?: string): string | JSONDoc => {\n if (!input) return \"\";\n const trimmed = input.trim();\n if (!trimmed) return \"\";\n const parsedJSON = tryParseJSON(trimmed);\n if (parsedJSON && parsedJSON.type === \"doc\") return parsedJSON;\n if (looksLikeHTML(trimmed)) return input;\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 isEditorDisabled && \"pointer-events-none\",\n editorClassName\n ),\n ...(loading ? { \"aria-busy\": \"true\" } : {})\n }\n }\n });\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!isEditorDisabled);\n }, [editor, isEditorDisabled]);\n\n useEffect(() => {\n if (!editor || resolvedContent === undefined) return;\n if (\n ignorePropValueRef.current &&\n typeof value === \"string\" &&\n value === lastEmittedValueRef.current\n ) {\n ignorePropValueRef.current = false;\n return;\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 aria-busy={loading}\n onFocus={() => {\n if (editor && !editor.isFocused) editor.chain().focus().run();\n }}\n >\n <EditorContent editor={editor} />\n {loading && (\n <LoadingOverlay\n fullscreen={false}\n className=\"rounded-lg bg-white/80 backdrop-blur-sm\"\n spinnerClassName=\"size-6 text-sus-blue-3\"\n />\n )}\n {!isEditorReadOnly && (\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 disabled={isEditorDisabled}\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 )}\n </div>\n\n {hasError && (\n <FormMessage className=\"text-xs text-destructive\" role=\"alert\">\n {displayError}\n </FormMessage>\n )}\n\n {mode === \"edit\" && (\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={isEditorDisabled}\n >\n {operator.label}\n </Button>\n ))}\n </div>\n )}\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 SyncColumnsStateOptions<TData> = {\n excludeColumns?: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Partial<Record<KeyOrString<TData>, boolean>>;\n ordering?: KeyOrString<TData>[];\n pinning?: {\n left?: KeyOrString<TData>[];\n };\n};\n\ntype SyncColumnsStateFn = <TData = RowData>(\n table: Table<TData>,\n options?: SyncColumnsStateOptions<TData>\n) => void;\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: SyncColumnsStateFn;\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?: SyncColumnsStateOptions<TData>\n ) => {\n const {\n excludeColumns = [],\n labelMap = {},\n visibility = {},\n ordering = [],\n pinning\n } = options || {};\n\n const { availableColumns, currentColumns } = get().extractColumns(table);\n const orderMap = new Map(ordering.map((columnId, index) => [columnId, index]));\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 .sort((a, b) => {\n const columnIdA = a.id as keyof TData;\n const columnIdB = b.id as keyof TData;\n\n const aOrder = orderMap.get(columnIdA) ?? Infinity;\n const bOrder = orderMap.get(columnIdB) ?? Infinity;\n\n return aOrder - bOrder;\n }),\n payload: {\n ordering: ordering as string[],\n pinning: {\n left: (pinning?.left || []) as string[]\n },\n visibility\n }\n });\n }\n })\n);\n\nexport default useGridSettingsStore;\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\";\nimport { cn } from \"@/utils\";\n\nimport DefaultContainer from \"@/components/ui/container\";\nimport DefaultHeader from \"@/components/ui/header\";\n\nexport type MainListContainerSlots = {\n Container?: React.ElementType<any>;\n Header?: React.ElementType<any>;\n};\n\nexport type MainListContainerClassNames = {\n root?: string;\n content?: string;\n};\n\nexport type MainListContainerProps = {\n title?: React.ReactNode;\n titleIcon?: React.ReactNode;\n\n isExpanded?: boolean;\n\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n\n children?: React.ReactNode;\n\n /** advanced */\n slots?: MainListContainerSlots;\n classNames?: MainListContainerClassNames;\n\n /** render prop for full control */\n renderHeader?: (props: {\n title?: React.ReactNode;\n titleIcon?: React.ReactNode;\n isExpanded?: boolean;\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n }) => React.ReactNode;\n};\n\nconst MainListContainer: React.FC<MainListContainerProps> = ({\n title,\n titleIcon,\n isExpanded = true,\n onSettingClick,\n onExpandClick,\n children,\n slots,\n classNames,\n renderHeader\n}) => {\n const Container = slots?.Container ?? DefaultContainer;\n const Header = slots?.Header ?? DefaultHeader;\n\n return (\n <Container\n isLeftExpanded={isExpanded}\n className={cn(\"flex flex-col bg-white shadow-lg\", classNames?.root)}\n >\n {renderHeader ?\n renderHeader({\n title,\n titleIcon,\n isExpanded,\n onSettingClick,\n onExpandClick\n })\n : Header ?\n <Header\n title={title}\n titleIcon={titleIcon}\n isExpanded={isExpanded}\n onSettingClick={onSettingClick}\n onExpandClick={onExpandClick}\n />\n : null}\n\n <div className={cn(\"flex-1 flex flex-col relative min-h-0\", classNames?.content)}>{children}</div>\n </Container>\n );\n};\n\nexport default MainListContainer;\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 variant=\"cottonYellowDark\"\n disabled={mainButtonDisable}\n className={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","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 * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport DefaultContainer from \"@/components/ui/container\";\n\nexport type RightPanelContainerSlots = {\n Container?: React.ElementType<any>;\n Header?: React.ElementType<RightPanelContainerHeaderProps>;\n};\n\nexport type RightPanelContainerClassNames = {\n root?: string;\n body?: string;\n content?: string;\n header?: string;\n iconWrapper?: string;\n title?: string;\n subtitle?: string;\n};\n\nexport type RightPanelContainerHeaderProps = {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n icon?: React.ReactNode;\n classNames?: RightPanelContainerClassNames;\n rightActions?: React.ReactNode;\n};\n\nexport type RightPanelContainerProps = {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n icon?: React.ReactNode;\n rightActions?: React.ReactNode;\n children?: React.ReactNode;\n isExpanded?: boolean;\n className?: string;\n classNames?: RightPanelContainerClassNames;\n slots?: RightPanelContainerSlots;\n renderHeader?: (props: RightPanelContainerHeaderProps) => React.ReactNode;\n};\n\nconst DefaultHeader: React.FC<RightPanelContainerHeaderProps> = ({\n title,\n subtitle,\n icon,\n classNames,\n rightActions\n}) => (\n <div className={cn(\"flex items-start justify-between gap-3\", classNames?.header)}>\n <div className=\"flex items-center gap-3\">\n {icon ?\n <div\n className={cn(\n \"w-10 h-10 rounded-full bg-sus-green-50 flex items-center justify-center\",\n classNames?.iconWrapper\n )}\n >\n {icon}\n </div>\n : null}\n\n <div className=\"flex flex-col\">\n {subtitle ?\n <span className={cn(\"text-xs text-gray-500\", classNames?.subtitle)}>{subtitle}</span>\n : null}\n {title ?\n <span className={cn(\"text-lg font-semibold text-sus-green-1\", classNames?.title)}>\n {title}\n </span>\n : null}\n </div>\n </div>\n {rightActions ?\n <div className=\"flex items-center gap-2\">{rightActions}</div>\n : null}\n </div>\n);\n\nconst RightPanelContainer: React.FC<RightPanelContainerProps> = ({\n title,\n subtitle,\n icon,\n rightActions,\n children,\n isExpanded = false,\n className,\n classNames,\n slots,\n renderHeader\n}) => {\n const Container = slots?.Container ?? DefaultContainer;\n const Header = slots?.Header ?? DefaultHeader;\n\n return (\n <Container\n isLeftExpanded={isExpanded}\n className={cn(\n \"flex flex-col bg-white border border-slate-300 min-w-full\",\n className,\n classNames?.root\n )}\n >\n <div className={cn(\"flex-1 flex min-h-0 px-4 py-6 justify-center\", classNames?.body)}>\n <div className={cn(\"w-full max-w-3xl overflow-auto\", classNames?.content)}>\n {renderHeader ?\n renderHeader({ title, subtitle, icon, rightActions, classNames })\n : Header ?\n <Header\n title={title}\n subtitle={subtitle}\n icon={icon}\n rightActions={rightActions}\n classNames={classNames}\n />\n : null}\n\n {children}\n </div>\n </div>\n </Container>\n );\n};\n\nexport default RightPanelContainer;\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 * as React from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\n\ninterface MeasureTextProps {\n style?: React.CSSProperties;\n children: React.ReactNode;\n}\n\ninterface MeasureTextRef {\n isExceed: () => boolean;\n getHeight: () => number;\n}\n\ninterface Option {\n keepEmpty?: boolean;\n}\n\nconst REACT_ELEMENT_TYPE_18 = Symbol.for(\"react.element\");\nconst REACT_ELEMENT_TYPE_19 = Symbol.for(\"react.transitional.element\");\nconst REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n\nfunction isFragment(object: any) {\n return (\n // Base object type\n object &&\n typeof object === \"object\" &&\n // React Element type\n (object.$$typeof === REACT_ELEMENT_TYPE_18 || object.$$typeof === REACT_ELEMENT_TYPE_19) &&\n // React Fragment type\n object.type === REACT_FRAGMENT_TYPE\n );\n}\n\nconst isValidText = (val: any): val is string | number => [\"string\", \"number\"].includes(typeof val);\n\nfunction toArray(children: React.ReactNode, option: Option = {}): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nconst MeasureText = React.forwardRef<MeasureTextRef, MeasureTextProps>(({ style, children }, ref) => {\n const spanRef = React.useRef<HTMLSpanElement>(null);\n\n React.useImperativeHandle(ref, () => ({\n isExceed: () => {\n const span = spanRef.current!;\n return span.scrollHeight > span.clientHeight;\n },\n getHeight: () => spanRef.current!.clientHeight\n }));\n\n return (\n <span\n aria-hidden\n ref={spanRef}\n style={{\n position: \"fixed\",\n display: \"block\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n ...style\n }}\n >\n {children}\n </span>\n );\n});\n\nconst getNodesLen = (nodeList: React.ReactElement[]) =>\n nodeList.reduce((totalLen, node) => totalLen + (isValidText(node) ? String(node).length : 1), 0);\n\nfunction sliceNodes(nodeList: React.ReactElement[], len: number) {\n let currLen = 0;\n const currentNodeList: React.ReactNode[] = [];\n\n for (let i = 0; i < nodeList.length; i += 1) {\n // Match to return\n if (currLen === len) {\n return currentNodeList;\n }\n\n const node = nodeList[i];\n const canCut = isValidText(node);\n const nodeLen = canCut ? String(node).length : 1;\n const nextLen = currLen + nodeLen;\n\n // Exceed but current not which means we need cut this\n // This will not happen on validate ReactElement\n if (nextLen > len) {\n const restLen = len - currLen;\n currentNodeList.push(String(node).slice(0, restLen));\n return currentNodeList;\n }\n\n currentNodeList.push(node);\n currLen = nextLen;\n }\n\n return nodeList;\n}\n\nexport interface EllipsisProps {\n enableMeasure?: boolean;\n text?: React.ReactNode;\n width: number;\n rows: number;\n children: (\n cutChildren: React.ReactNode[],\n /** Tell current `text` is exceed the `rows` which can be ellipsis */\n canEllipsis: boolean\n ) => React.ReactNode;\n onEllipsis: (isEllipsis: boolean) => void;\n expanded: boolean;\n /**\n * Mark for misc update. Which will not affect ellipsis content length.\n * e.g. tooltip content update.\n */\n miscDeps: any[];\n}\n\n// Measure for the `text` is exceed the `rows` or not\nconst STATUS_MEASURE_NONE = 0;\nconst STATUS_MEASURE_PREPARE = 1;\nconst STATUS_MEASURE_START = 2;\nconst STATUS_MEASURE_NEED_ELLIPSIS = 3;\nconst STATUS_MEASURE_NO_NEED_ELLIPSIS = 4;\n\nconst lineClipStyle: React.CSSProperties = {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitBoxOrient: \"vertical\"\n};\n\nexport default function EllipsisMeasure(props: EllipsisProps) {\n const { enableMeasure, width, text, children, rows, expanded, miscDeps, onEllipsis } = props;\n\n const nodeList = React.useMemo(() => toArray(text), [text]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const nodeLen = React.useMemo(() => getNodesLen(nodeList), [text]);\n\n // ========================= Full Content =========================\n // Used for measure only, which means it's always render as no need ellipsis\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const fullContent = React.useMemo(() => children(nodeList, false), [text]);\n\n // ========================= Cut Content ==========================\n const [ellipsisCutIndex, setEllipsisCutIndex] = React.useState<[number, number] | null>(null);\n const cutMidRef = React.useRef<MeasureTextRef>(null);\n\n // ========================= NeedEllipsis =========================\n const measureWhiteSpaceRef = React.useRef<HTMLElement>(null);\n const needEllipsisRef = React.useRef<MeasureTextRef>(null);\n // Measure for `rows-1` height, to avoid operation exceed the line height\n const descRowsEllipsisRef = React.useRef<MeasureTextRef>(null);\n const symbolRowEllipsisRef = React.useRef<MeasureTextRef>(null);\n\n const [canEllipsis, setCanEllipsis] = React.useState(false);\n const [needEllipsis, setNeedEllipsis] = React.useState(STATUS_MEASURE_NONE);\n const [ellipsisHeight, setEllipsisHeight] = React.useState(0);\n const [parentWhiteSpace, setParentWhiteSpace] = React.useState<\n React.CSSProperties[\"whiteSpace\"] | null\n >(null);\n\n // Trigger start measure\n useIsomorphicLayoutEffect(() => {\n if (enableMeasure && width && nodeLen) {\n setNeedEllipsis(STATUS_MEASURE_PREPARE);\n } else {\n setNeedEllipsis(STATUS_MEASURE_NONE);\n }\n }, [width, text, rows, enableMeasure, nodeList]);\n\n // Measure process\n useIsomorphicLayoutEffect(() => {\n if (needEllipsis === STATUS_MEASURE_PREPARE) {\n setNeedEllipsis(STATUS_MEASURE_START);\n\n // Parent ref `white-space`\n const nextWhiteSpace =\n measureWhiteSpaceRef.current && getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;\n setParentWhiteSpace(nextWhiteSpace);\n } else if (needEllipsis === STATUS_MEASURE_START) {\n const isOverflow = !!needEllipsisRef.current?.isExceed();\n\n setNeedEllipsis(isOverflow ? STATUS_MEASURE_NEED_ELLIPSIS : STATUS_MEASURE_NO_NEED_ELLIPSIS);\n setEllipsisCutIndex(isOverflow ? [0, nodeLen] : null);\n setCanEllipsis(isOverflow);\n\n // Get the basic height of ellipsis rows\n const baseRowsEllipsisHeight = needEllipsisRef.current?.getHeight() || 0;\n\n // Get the height of `rows - 1` + symbol height\n const descRowsEllipsisHeight = rows === 1 ? 0 : descRowsEllipsisRef.current?.getHeight() || 0;\n const symbolRowEllipsisHeight = symbolRowEllipsisRef.current?.getHeight() || 0;\n const maxRowsHeight = Math.max(\n baseRowsEllipsisHeight,\n // height of rows with ellipsis\n descRowsEllipsisHeight + symbolRowEllipsisHeight\n );\n\n setEllipsisHeight(maxRowsHeight + 1);\n\n onEllipsis(isOverflow);\n }\n }, [needEllipsis]);\n\n // ========================= Cut Measure ==========================\n const cutMidIndex = ellipsisCutIndex ? Math.ceil((ellipsisCutIndex[0] + ellipsisCutIndex[1]) / 2) : 0;\n\n useIsomorphicLayoutEffect(() => {\n const [minIndex, maxIndex] = ellipsisCutIndex || [0, 0];\n if (minIndex !== maxIndex) {\n const midHeight = cutMidRef.current?.getHeight() || 0;\n\n const isOverflow = midHeight > ellipsisHeight;\n let targetMidIndex = cutMidIndex;\n if (maxIndex - minIndex === 1) {\n targetMidIndex = isOverflow ? minIndex : maxIndex;\n }\n setEllipsisCutIndex(isOverflow ? [minIndex, targetMidIndex] : [targetMidIndex, maxIndex]);\n }\n }, [ellipsisCutIndex, cutMidIndex]);\n\n // ========================= Text Content =========================\n const finalContent = React.useMemo(() => {\n // Skip everything if `enableMeasure` is disabled\n if (!enableMeasure) {\n return children(nodeList, false);\n }\n\n if (\n needEllipsis !== STATUS_MEASURE_NEED_ELLIPSIS ||\n !ellipsisCutIndex ||\n ellipsisCutIndex[0] !== ellipsisCutIndex[1]\n ) {\n const content = children(nodeList, false);\n // Limit the max line count to avoid scrollbar blink unless no need ellipsis\n // https://github.com/ant-design/ant-design/issues/42958\n if ([STATUS_MEASURE_NO_NEED_ELLIPSIS, STATUS_MEASURE_NONE].includes(needEllipsis)) {\n return content;\n }\n return (\n <span\n style={{\n ...lineClipStyle,\n WebkitLineClamp: rows\n }}\n >\n {content}\n </span>\n );\n }\n\n return children(expanded ? nodeList : sliceNodes(nodeList, ellipsisCutIndex[0]), canEllipsis);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [expanded, needEllipsis, ellipsisCutIndex, nodeList, ...miscDeps]);\n\n // ============================ Render ============================\n const measureStyle: React.CSSProperties = {\n width,\n margin: 0,\n padding: 0,\n whiteSpace: parentWhiteSpace === \"nowrap\" ? \"normal\" : \"inherit\"\n };\n\n return (\n <>\n {/* Final show content */}\n {finalContent}\n\n {/* Measure if current content is exceed the rows */}\n {needEllipsis === STATUS_MEASURE_START && (\n <>\n {/** With `rows` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: rows\n }}\n ref={needEllipsisRef}\n >\n {fullContent}\n </MeasureText>\n\n {/** With `rows - 1` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: rows - 1\n }}\n ref={descRowsEllipsisRef}\n >\n {fullContent}\n </MeasureText>\n\n {/** With `rows - 1` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: 1\n }}\n ref={symbolRowEllipsisRef}\n >\n {children([], true)}\n </MeasureText>\n </>\n )}\n\n {/* Real size overflow measure */}\n {needEllipsis === STATUS_MEASURE_NEED_ELLIPSIS &&\n ellipsisCutIndex &&\n ellipsisCutIndex[0] !== ellipsisCutIndex[1] && (\n <MeasureText\n style={{\n ...measureStyle,\n top: 400\n }}\n ref={cutMidRef}\n >\n {children(sliceNodes(nodeList, cutMidIndex), true)}\n </MeasureText>\n )}\n\n {/* Measure white-space */}\n {needEllipsis === STATUS_MEASURE_PREPARE && (\n <span style={{ whiteSpace: \"inherit\" }} ref={measureWhiteSpaceRef} />\n )}\n </>\n );\n}\n","import * as React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn } from \"@/utils\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport EllipsisMeasure from \"./EllipsisMeasure\";\n\nexport type EllipsisConfig =\n | boolean\n | {\n content?: React.ReactNode;\n lineClamp?: number;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n }\n | number; // number = line-clamp-N\n\nexport type TruncatedProps = {\n className?: string;\n ellipsis?: EllipsisConfig;\n children: React.ReactNode;\n as?: keyof React.JSX.IntrinsicElements;\n style?: React.CSSProperties;\n tooltipProps?: Omit<React.ComponentProps<typeof Tooltip>, \"open\" | \"onOpenChange\"> & {\n disabled?: boolean;\n };\n tooltipContentProps?: Omit<React.ComponentProps<typeof TooltipContent>, \"children\">;\n};\n\nconst Truncated = ({\n children,\n className,\n ellipsis = true,\n as = \"p\",\n style,\n tooltipProps,\n tooltipContentProps\n}: TruncatedProps) => {\n const elementRef = React.useRef<HTMLElement | null>(null);\n const [open, setOpen] = React.useState(false);\n const [isTruncated, setIsTruncated] = React.useState(false);\n const [measureWidth, setMeasureWidth] = React.useState(0);\n\n const Comp = as as React.ElementType;\n const normalizedChildren = typeof children === \"string\" ? children.replace(/>/g, \">\\u200B\") : children;\n\n const lineClampLines =\n typeof ellipsis === \"number\" ? ellipsis\n : typeof ellipsis === \"object\" ? (ellipsis?.lineClamp ?? 3)\n : null;\n\n const enableMeasure = Boolean(ellipsis) && !tooltipProps?.disabled;\n\n useIsomorphicLayoutEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n\n const updateWidth = () => {\n const rect = el.getBoundingClientRect();\n const width = el.clientWidth || el.offsetWidth || rect.width || 0;\n setMeasureWidth(width);\n };\n\n updateWidth();\n\n const resizeObserver = new ResizeObserver(() => requestAnimationFrame(updateWidth));\n resizeObserver.observe(el);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (!enableMeasure) {\n setIsTruncated(false);\n }\n }, [enableMeasure]);\n\n const truncationClass = React.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 = React.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 <EllipsisMeasure\n enableMeasure={enableMeasure}\n text={normalizedChildren}\n width={measureWidth}\n rows={lineClampLines ?? 1}\n expanded={false}\n miscDeps={[truncationClass]}\n onEllipsis={setIsTruncated}\n >\n {() => normalizedChildren}\n </EllipsisMeasure>\n </Comp>\n );\n\n let tooltipContent: React.ReactNode = normalizedChildren;\n\n if (typeof ellipsis === \"object\") {\n tooltipContent = ellipsis?.content ?? normalizedChildren;\n }\n\n const {\n className: tooltipContentClassName,\n arrowClassName: tooltipArrowClassName,\n side: tooltipContentSide,\n ...tooltipContentRest\n } = tooltipContentProps ?? {};\n\n const tooltipSide: \"top\" | \"bottom\" | \"left\" | \"right\" =\n (typeof ellipsis === \"object\" ? ellipsis?.side : undefined) ?? tooltipContentSide ?? \"top\";\n\n return (\n <Tooltip\n {...tooltipProps}\n open={tooltipProps?.disabled ? false : open}\n onOpenChange={(open) => {\n setOpen(isTruncated && open);\n }}\n >\n <TooltipTrigger asChild>{baseContent}</TooltipTrigger>\n <TooltipContent\n side={tooltipSide}\n className={cn(\n \"text-white bg-sus-secondary-gray-10 max-w-xs sm:max-w-md wrap-break-word shadow-lg\",\n tooltipContentClassName\n )}\n arrowClassName={cn(\"bg-sus-secondary-gray-10 fill-sus-secondary-gray-10\", tooltipArrowClassName)}\n {...tooltipContentRest}\n >\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default Truncated;\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\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: \"sm\",\n fullWidth: true,\n appearance: \"filled\"\n }\n});\n\nexport type InputProps = Omit<InputPrimitiveProps, \"size\" | \"prefix\"> &\n VariantProps<typeof inputVariants> & {\n addonPrefix?: React.ReactNode;\n addonPrefixProps?: React.HTMLAttributes<HTMLSpanElement>;\n prefixInteractive?: boolean;\n addonSuffix?: React.ReactNode;\n addonSuffixProps?: 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 addonPrefix,\n addonPrefixProps,\n prefixInteractive,\n addonSuffix,\n addonSuffixProps,\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 inputProps = rest;\n\n const hasPrefix = Boolean(addonPrefix);\n const hasSuffix = Boolean(addonSuffix) || loading;\n const isFullWidth = fullWidth ?? true;\n\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp\n } = rest;\n\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\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 } = addonPrefixProps ?? {};\n const { className: suffixClassName, ...suffixRest } = addonSuffixProps ?? {};\n const { className: validationMessageClassName, ...validationMessageRest } =\n validationMessageProps ?? {};\n\n const suffixContent = (\n <>\n {addonSuffix}\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 {addonPrefix}\n </span>\n )}\n\n {inputElement}\n\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 {inputWithAffixes}\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 { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport { Input, type InputProps } from \"./BaseInput\";\n\nexport type InputCustomInputProps = Omit<\n InputProps,\n \"type\" | \"value\" | \"defaultValue\" | \"onValueChange\" | \"prefix\" | \"suffix\"\n> & {\n type?: NumericFormatProps<InputProps>[\"type\"];\n value?: NumericFormatProps<InputProps>[\"value\"];\n defaultValue?: NumericFormatProps<InputProps>[\"defaultValue\"];\n};\n\nexport type InputNumberProps = NumericFormatProps<InputProps> & {\n customInputProps?: InputCustomInputProps;\n};\n\nconst InputNumber = ({ customInputProps, ...props }: InputNumberProps) => {\n return <NumericFormat customInput={Input} {...props} {...customInputProps} />;\n};\n\nexport default InputNumber;\n","import { cn } from \"@/utils\";\nimport { ActionButtonProps } from \"./types\";\n\nexport const ActionButton: React.FC<\n Omit<ActionButtonProps, \"requiredPermission\"> & { className?: string }\n> = ({ label, onPress, className }) => {\n const disabled = onPress === undefined;\n return (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n if (disabled) {\n return;\n }\n onPress();\n }}\n className={cn(\n \"action-menu-btn flex w-full items-center justify-start px-4 py-3 text-left\",\n \"hover:bg-sus-secondary-green-3 hover:not-disabled:text-sus-primary-green-9 text-gray-800\",\n disabled && \"cursor-not-allowed opacity-50 hover:bg-transparent text-gray-400\",\n className\n )}\n >\n {label}\n </button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { Popover, PopoverContent, PopoverTrigger, Button, PopoverArrow } from \"@/components\";\nimport { MoreVertical } from \"lucide-react\";\nimport { ActionMenuProps, PermissionString } from \"./types\";\nimport { ActionButton } from \"./actionButton\";\nimport { cn } from \"@/utils\";\n\nexport const ActionMenu: React.FC<ActionMenuProps> = ({\n id,\n buttons,\n checkPermissionFunc,\n triggerButtonIcon,\n triggerButtonClassName,\n actionMenuClassName,\n actionButtonClassName,\n separatorClassName\n}) => {\n const [open, setOpen] = useState(false);\n\n const isAllowed = useCallback(\n (requiredPermission?: PermissionString | string) => {\n if (!checkPermissionFunc || requiredPermission === undefined) {\n return true;\n }\n return checkPermissionFunc(requiredPermission as PermissionString);\n },\n [checkPermissionFunc]\n );\n\n const filteredButtons = useMemo(() => {\n return buttons.filter((btn) => isAllowed(btn.requiredPermission));\n }, [buttons, isAllowed]);\n\n if (buttons.length === 0) {\n return null;\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"p-1\", triggerButtonClassName)}\n onClick={(e) => {\n e.stopPropagation();\n setOpen((prev) => !prev);\n }}\n >\n {triggerButtonIcon ? triggerButtonIcon : <MoreVertical className=\"w-5 h-5 text-gray-600\" />}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className={cn(\n \"w-48 p-0 space-y-1 bg-sus-secondary-gray-2 border-none rounded-md overflow-hidden drop-shadow-[2px_0px_4px_rgba(0,0,0,0.1)]\",\n actionMenuClassName\n )}\n align=\"end\"\n >\n <PopoverArrow className=\"fill-sus-secondary-gray-2\" width={20} height={12} />\n {filteredButtons.map((btn, idx) => (\n <div key={btn.label} className=\"p-0 m-0\">\n <ActionButton\n className={actionButtonClassName}\n label={btn.label}\n onPress={\n btn.onPress ?\n () => {\n btn.onPress?.(id);\n setOpen(false);\n }\n : undefined\n }\n />\n {idx < filteredButtons.length - 1 && (\n <div className={cn(\"border-t border-sus-secondary-gray-3\", separatorClassName)} />\n )}\n </div>\n ))}\n </PopoverContent>\n </Popover>\n );\n};\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\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-background 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 outline-none 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","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"./BaseDialog\";\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn(\"overflow-hidden p-0\", className)} showCloseButton={showCloseButton}>\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-sus-gray-1 flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"hover:bg-[#EAF5EE] hover:text-sus-green-2 bg-white text-black relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\"text-muted-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator\n};\n","import React from \"react\";\nimport type { OptionData, VirtualizedCommandOption } from \"../VirtualizedCommand\";\n\nexport type VirtualizedCommandFieldNames<TData extends OptionData> = {\n label?: keyof TData;\n value?: keyof TData;\n};\n\nexport type UseFieldNamesOptions<TData extends OptionData> = {\n fieldNames?: VirtualizedCommandFieldNames<TData>;\n};\n\nexport type UseFieldNamesResult<TData extends OptionData> = {\n getLabelField: (\n option: VirtualizedCommandOption<TData>\n ) => VirtualizedCommandOption<TData>[\"label\" | keyof TData];\n getValueField: (\n option: VirtualizedCommandOption<TData>\n ) => VirtualizedCommandOption<TData>[\"value\" | keyof TData];\n};\n\nconst useFieldNames = <TData extends OptionData>({\n fieldNames\n}: UseFieldNamesOptions<TData>): UseFieldNamesResult<TData> => {\n const { label: labelFieldKey = \"label\", value: valueFieldKey = \"value\" } = fieldNames || {};\n\n const getLabelField = React.useCallback(\n (option: VirtualizedCommandOption<TData>) => {\n return option?.[labelFieldKey];\n },\n [labelFieldKey]\n );\n\n const getValueField = React.useCallback(\n (option: VirtualizedCommandOption<TData>) => {\n return option?.[valueFieldKey];\n },\n [valueFieldKey]\n );\n\n return {\n getLabelField,\n getValueField\n };\n};\n\nexport default useFieldNames;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./Command\";\nimport { Check } from \"lucide-react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Truncated } from \"@/components/truncated\";\nimport useFieldNames from \"./hooks/useFieldNames\";\n\nexport type OptionData = Record<string, any>;\n\nexport type VirtualizedCommandOption<TData extends OptionData> = TData & {\n [key: string]: any;\n};\n\nexport type VirtualizedCommandFieldNames<TData extends OptionData> = {\n label?: keyof TData;\n value?: keyof TData;\n};\n\nexport type VirtualizedCommandProps<TData extends OptionData> = {\n name?: string;\n options?: VirtualizedCommandOption<TData>[];\n height?: number;\n searchPlaceholder?: string;\n fieldNames?: VirtualizedCommandFieldNames<TData>;\n emptyContent?: React.ReactNode;\n notFoundContent?: React.ReactNode;\n value?: string;\n showSearch?: boolean;\n disabledOption?: (option: VirtualizedCommandOption<TData>) => boolean;\n filterOption?: (search: string, option: VirtualizedCommandOption<TData>) => boolean;\n labelRender?: (option: VirtualizedCommandOption<TData>) => React.ReactNode;\n onSelect?: (selected: string, option: VirtualizedCommandOption<TData>) => void;\n onBlur?: (event: React.FocusEvent<HTMLDivElement, Element>) => void;\n onFocus?: (event: React.FocusEvent<HTMLDivElement, Element>) => void;\n};\n\nconst ROW_HEIGHT = 32;\nconst MIN_HEIGHT_EMPTY = 76;\n\nconst VirtualizedCommand = <TData extends OptionData>({\n name,\n height = 292,\n options,\n emptyContent = \"No data.\",\n searchPlaceholder,\n value,\n notFoundContent = \"No item found.\",\n showSearch = true,\n fieldNames,\n disabledOption,\n filterOption,\n onSelect,\n labelRender,\n onBlur,\n onFocus\n}: VirtualizedCommandProps<TData>) => {\n const { getLabelField, getValueField } = useFieldNames({ fieldNames });\n\n const internalOptions = React.useMemo(() => options ?? [], [options]);\n\n const [filteredOptions, setFilteredOptions] =\n React.useState<VirtualizedCommandOption<TData>[]>(internalOptions);\n const [focusedIndex, setFocusedIndex] = React.useState(0);\n const [isKeyboardNavActive, setIsKeyboardNavActive] = React.useState(false);\n\n const parentRef = React.useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: 2\n });\n\n const virtualOptions = virtualizer.getVirtualItems();\n\n const dynamicHeight = React.useMemo(() => {\n const contentHeight = filteredOptions.length * ROW_HEIGHT;\n if (contentHeight <= 0) {\n return MIN_HEIGHT_EMPTY;\n }\n return Math.max(ROW_HEIGHT, Math.min(height, contentHeight));\n }, [filteredOptions.length, height]);\n\n const scrollToIndex = React.useCallback(\n (index: number) => {\n virtualizer.scrollToIndex(index, {\n align: \"center\"\n });\n },\n [virtualizer]\n );\n\n const handleSearch = React.useCallback(\n (search: string) => {\n setIsKeyboardNavActive(false);\n setFilteredOptions(\n internalOptions.filter((option) => {\n if (typeof filterOption === \"function\") {\n return filterOption(search, option);\n }\n\n const labelValue = getLabelField(option);\n return labelValue?.toString()?.toLowerCase()?.includes?.(search.toLowerCase());\n })\n );\n },\n [filterOption, getLabelField, internalOptions]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setIsKeyboardNavActive(true);\n setFocusedIndex((prev) => {\n const newIndex = prev === -1 ? 0 : Math.min(prev + 1, filteredOptions.length - 1);\n scrollToIndex(newIndex);\n return newIndex;\n });\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setIsKeyboardNavActive(true);\n setFocusedIndex((prev) => {\n const newIndex = prev === -1 ? filteredOptions.length - 1 : Math.max(prev - 1, 0);\n scrollToIndex(newIndex);\n return newIndex;\n });\n break;\n }\n case \"Enter\": {\n event.preventDefault();\n const option = filteredOptions?.[focusedIndex];\n if (option) {\n onSelect?.(getValueField(option), option);\n }\n break;\n }\n default:\n break;\n }\n },\n [filteredOptions, focusedIndex, getValueField, onSelect, scrollToIndex]\n );\n\n React.useEffect(() => {\n if (value) {\n const option = filteredOptions.find((option) => {\n const optionValue = getValueField(option);\n return optionValue === value;\n });\n if (option) {\n const index = filteredOptions.indexOf(option);\n setFocusedIndex(index);\n virtualizer.scrollToIndex(index, { align: \"center\" });\n }\n }\n }, [value, filteredOptions, virtualizer, getValueField]);\n\n return (\n <Command shouldFilter={false} onKeyDown={handleKeyDown} onFocus={onFocus} onBlur={onBlur}>\n {showSearch && (\n <CommandInput\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n data-testid={`command-input-${name}`}\n />\n )}\n <CommandList\n ref={parentRef}\n className=\"max-h-none\"\n style={{\n height: dynamicHeight,\n width: \"100%\",\n overflow: \"auto\"\n }}\n onMouseDown={() => setIsKeyboardNavActive(false)}\n onMouseMove={() => setIsKeyboardNavActive(false)}\n >\n <CommandEmpty data-testid={`command-item-empty-${name}`}>\n {internalOptions.length === 0 ? emptyContent : notFoundContent}\n </CommandEmpty>\n <CommandGroup\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\"\n }}\n >\n {virtualOptions.map((virtualOption, index) => {\n const option = filteredOptions[virtualOption.index];\n\n const optionLabel = getLabelField(option);\n const optionValue = getValueField(option);\n\n const labelRendered =\n labelRender ? labelRender(filteredOptions[virtualOption.index]) : optionLabel;\n\n return (\n <CommandItem\n key={optionValue}\n className={cn(\"absolute left-0 top-0 w-full flex items-center justify-between\", {\n \"bg-sus-secondary-green-3 text-sus-green-2\": focusedIndex === virtualOption.index,\n \"aria-selected:bg-white aria-selected:text-black pointer-events-none\":\n isKeyboardNavActive && focusedIndex !== virtualOption.index\n })}\n style={{\n height: `${virtualOption.size}px`,\n transform: `translateY(${virtualOption.start}px)`\n }}\n value={optionValue}\n onMouseEnter={() => !isKeyboardNavActive && setFocusedIndex(virtualOption.index)}\n onMouseLeave={() => !isKeyboardNavActive && setFocusedIndex(-1)}\n onSelect={(selectedValue) => onSelect?.(selectedValue, option)}\n disabled={disabledOption?.(option)}\n data-testid={`command-item-${index}-${optionValue}`}\n >\n {typeof labelRendered === \"string\" ?\n <Truncated tooltipProps={{ disabled: true }}>{labelRendered}</Truncated>\n : labelRendered}\n <Check\n className={cn(\n \"mr-2 size-2 hover:text-sus-green-2\",\n value === optionValue ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n );\n};\n\nexport default VirtualizedCommand;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport VirtualizedCommand, {\n VirtualizedCommandOption,\n type OptionData,\n type VirtualizedCommandProps\n} from \"@/components/command/VirtualizedCommand\";\nimport useFieldNames from \"../command/hooks/useFieldNames\";\nimport { useControllableState } from \"@/hooks\";\nimport { Truncated } from \"../truncated\";\n\nexport type ComboboxProps<TData extends OptionData> = React.AriaAttributes &\n Omit<VirtualizedCommandProps<TData>, \"onFocus\" | \"onBlur\"> & {\n name?: string;\n dropdownName?: string;\n defaultValue?: string;\n className?: string;\n disabled?: boolean;\n placeholder?: string;\n showClear?: boolean;\n onBlur?: (event: React.FocusEvent<HTMLButtonElement, Element>) => void;\n onFocus?: (event: React.FocusEvent<HTMLButtonElement, Element>) => void;\n onClear?: (selected: string, option: VirtualizedCommandOption<TData>) => void;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n showValueWhenNoMatch?: boolean;\n // TODO: add loading state\n // isLoading?: boolean;\n // loadingOptionContent?: React.ReactNode;\n };\n\nconst ComboboxInner = <TData extends OptionData>(\n {\n name,\n dropdownName,\n defaultValue,\n className,\n options,\n value,\n disabled,\n placeholder,\n fieldNames,\n showClear = false,\n onSelect,\n onFocus,\n onBlur,\n disabledOption,\n emptyContent,\n filterOption,\n height,\n labelRender,\n notFoundContent,\n searchPlaceholder,\n showSearch,\n open,\n showValueWhenNoMatch,\n onOpenChange,\n onClear,\n ...props\n }: ComboboxProps<TData>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) => {\n const { getLabelField, getValueField } = useFieldNames({ fieldNames });\n\n const { value: openPopover, setValue: setOpenPopover } = useControllableState({\n defaultValue: false,\n value: open\n });\n\n const { value: selectedValue, setValue: setSelectedValue } = useControllableState({\n defaultValue,\n value\n });\n\n const currentSelectedOption = React.useMemo(() => {\n return options?.find((option) => {\n const optionValue = getValueField(option);\n return optionValue === selectedValue;\n });\n }, [getValueField, options, selectedValue]);\n\n const renderValue = React.useMemo<React.ReactNode>(() => {\n if (!selectedValue) return placeholder;\n\n if (currentSelectedOption) {\n return getLabelField(currentSelectedOption);\n }\n\n if (showValueWhenNoMatch) {\n return selectedValue;\n }\n\n // TODO: if added loading state update else case to display null\n\n return null;\n }, [currentSelectedOption, getLabelField, placeholder, selectedValue, showValueWhenNoMatch]);\n\n const handleSelect = React.useCallback<NonNullable<ComboboxProps<TData>[\"onSelect\"]>>(\n (selected, option) => {\n setSelectedValue(selected);\n setOpenPopover(false);\n\n if (typeof onSelect === \"function\") {\n onSelect(selected, option);\n }\n\n if (typeof onOpenChange === \"function\") {\n onOpenChange(false);\n }\n },\n [onOpenChange, onSelect, setOpenPopover, setSelectedValue]\n );\n\n const handleOpenPopover = React.useCallback(\n (isOpen: boolean) => {\n if (disabled) return;\n\n setOpenPopover(isOpen);\n\n if (typeof onOpenChange === \"function\") {\n onOpenChange(isOpen);\n }\n },\n [disabled, onOpenChange, setOpenPopover]\n );\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n event.stopPropagation();\n setSelectedValue(undefined);\n if (typeof onClear === \"function\") {\n onClear(selectedValue!, currentSelectedOption!);\n }\n },\n [currentSelectedOption, onClear, selectedValue, setSelectedValue]\n );\n\n return (\n <Popover open={openPopover} onOpenChange={handleOpenPopover}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n name={name}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={openPopover}\n className={cn(\n \"flex items-center justify-between gap-2 rounded-md border bg-white px-3 h-9 text-sm whitespace-nowrap shadow-xs outline-none border-input\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n \"data-[state=open]:border-ring\",\n \"transition-all\",\n className\n )}\n data-state={openPopover ? \"open\" : \"closed\"}\n disabled={disabled}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={`combobox-trigger-${name}`}\n {...props}\n >\n <Truncated\n className={cn(!selectedValue && \"text-sus-gray-1\")}\n tooltipProps={{ disabled: true }}\n >\n {renderValue}\n </Truncated>\n <div className=\"flex items-center gap-1\">\n <ChevronDown className=\"size-4 opacity-50\" />\n {showClear && selectedValue && (\n <span\n role=\"button\"\n className={cn(\n \"inline-flex items-center justify-center p-0 cursor-pointer transition-all size-[15px]\"\n )}\n onClick={handleClear}\n data-testid={`combobox-clear-button-${name}`}\n >\n <X className=\"size-[15px] bg-black text-white border border-black hover:bg-[#333] rounded-full\" />\n </span>\n )}\n </div>\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-(--radix-popper-anchor-width) min-w-(--radix-popper-anchor-width) max-w-(--radix-popper-available-width)\"\n align=\"start\"\n sideOffset={4}\n >\n <VirtualizedCommand\n name={dropdownName}\n emptyContent={emptyContent}\n height={height}\n notFoundContent={notFoundContent}\n searchPlaceholder={searchPlaceholder}\n showSearch={showSearch}\n fieldNames={fieldNames}\n options={options}\n value={selectedValue}\n disabledOption={disabledOption}\n filterOption={filterOption}\n labelRender={labelRender}\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = React.forwardRef(ComboboxInner) as <TData extends OptionData>(\n props: ComboboxProps<TData> & React.RefAttributes<HTMLButtonElement>\n) => React.ReactElement | null;\n\nexport default Combobox;\n","import { Tooltip, TooltipArrow, TooltipContent, TooltipTrigger } from \"@/components\";\nimport { cn } from \"@/utils\";\nimport { ComponentProps, useRef, useState } from \"react\";\n\nexport interface TruncatedMouseEnterDivProps {\n className?: string;\n tooltipProps?: Omit<ComponentProps<typeof Tooltip>, \"open\" | \"onOpenChange\"> & {\n disabled?: boolean;\n };\n tooltipContentProps?: Omit<ComponentProps<typeof TooltipContent>, \"children\">;\n arrowClassName?: string;\n value: string;\n}\n\nconst TruncatedMouseEnterDiv = ({\n value,\n className,\n tooltipProps,\n tooltipContentProps,\n arrowClassName\n}: TruncatedMouseEnterDivProps) => {\n const textRef = useRef<HTMLDivElement>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n\n const checkTruncation = () => {\n if (textRef.current) {\n const { scrollWidth, clientWidth } = textRef.current;\n setIsTruncated(scrollWidth > clientWidth);\n }\n };\n\n const {\n className: tooltipContentClassName,\n side: tooltipContentSide,\n sideOffset: tooltipContentSideOffset,\n ...tooltipContentRest\n } = tooltipContentProps ?? {};\n return (\n <Tooltip open={isTruncated} {...tooltipProps}>\n <TooltipTrigger asChild>\n <div\n ref={textRef}\n onMouseEnter={checkTruncation}\n onMouseLeave={() => setIsTruncated(false)}\n className={cn(\"truncate\", className)}\n >\n {value}\n </div>\n </TooltipTrigger>\n <TooltipContent\n side={tooltipContentSide ?? \"bottom\"}\n className={cn(\n \"text-white bg-sus-secondary-gray-10 max-w-xs sm:max-w-md wrap-break-word shadow-lg\",\n tooltipContentClassName\n )}\n sideOffset={tooltipContentSideOffset ?? 10}\n {...tooltipContentRest}\n >\n <TooltipArrow\n className={cn(\n \"bg-sus-secondary-gray-10 fill-sus-secondary-gray-10 z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px]\",\n arrowClassName\n )}\n />\n {value}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default TruncatedMouseEnterDiv;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/common.ts","../src/utils/filters.ts","../src/utils/date.ts","../src/utils/useSafeBlocker.ts","../src/utils/useDraftGuardStore.ts","../src/utils/cn.ts","../src/components/icons/administration.tsx","../src/components/icons/analytics.tsx","../src/components/icons/application-log.tsx","../src/components/icons/arrow.tsx","../src/components/icons/calendar.tsx","../src/components/icons/calendar2.tsx","../src/components/icons/check.tsx","../src/components/icons/custom-action-status.tsx","../src/components/icons/custom-field.tsx","../src/components/icons/dashboard.tsx","../src/components/icons/data-entry.tsx","../src/components/icons/decrease.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/filters.tsx","../src/components/icons/hamburger-menu.tsx","../src/components/icons/handy-man.tsx","../src/components/icons/information.tsx","../src/components/icons/mail.tsx","../src/components/icons/man.tsx","../src/components/icons/management.tsx","../src/components/icons/menu.tsx","../src/components/icons/not-found.tsx","../src/components/icons/plus.tsx","../src/components/icons/power.tsx","../src/components/icons/question.tsx","../src/components/icons/role.tsx","../src/components/icons/setting.tsx","../src/components/icons/setup.tsx","../src/components/icons/toolbox.tsx","../src/components/icons/trash.tsx","../src/components/icons/triangle-down.tsx","../src/components/icons/user-alone.tsx","../src/components/icons/user-friend.tsx","../src/components/icons/user.tsx","../src/components/icons/warning.tsx","../src/components/auditFooter/AuditFooter.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/lib/utils.ts","../src/components/advanceSearch/utils/advanceSearchUtils.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/hooks/useControllableState/useControllableState.ts","../src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.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/lib/constants.ts","../src/components/dialog-alert/DialogAlert.tsx","../src/components/dialog-alert/templates/index.ts","../src/components/dialog-alert/locale/default.ts","../src/components/dialog-alert/locale/i18n.ts","../src/components/dialog-alert/hooks/DialogAlertStore.tsx","../src/components/ui/LoadingOverlay.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/ui/index.ts","../src/components/ui/container.tsx","../src/components/ui/header.tsx","../src/components/ui/radio.tsx","../src/components/ui/ImageNode.tsx","../src/components/ui/richtext.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/hooks/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/switch.tsx","../src/components/ui/textarea.tsx","../src/components/ui/tooltip.tsx","../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/image/image.tsx","../src/components/main-list-container/MainListContainer.tsx","../src/assets/icon/InfoIcon.tsx","../src/components/navbar/navbar.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/right-panel-container/RightPanelContainer.tsx","../src/components/cropperModal/type.ts","../src/components/cropperModal/helper.ts","../src/components/cropperModal/cropperModal.tsx","../src/components/truncated/EllipsisMeasure.tsx","../src/components/truncated/truncated.tsx","../src/components/inputNumber/BaseInput.tsx","../src/components/inputNumber/InputNumber.tsx","../src/components/actionMenu/actionButton.tsx","../src/components/actionMenu/actionMenu.tsx","../src/components/command/BaseDialog.tsx","../src/components/command/Command.tsx","../src/components/command/hooks/useFieldNames.ts","../src/components/command/VirtualizedCommand.tsx","../src/components/combobox/Combobox.tsx","../src/components/truncatedMouseEnterDiv/truncatedMouseEnterDiv.tsx"],"names":["format","useRouter","useState","useEffect","create","twMerge","clsx","jsxs","jsx","AccordionPrimitive","X","Fragment","createPortal","useCallback","useMemo","SelectPrimitive","ChevronRight","CheckIcon","Triangle","React","Label","LabelPrimitive","FormProvider","React2","Controller","useFormContext","useFormState","Slot","CircleX","cva","React3","PopoverPrimitive","React4","ChevronLeft","parseISO","isValid","DatePicker","placeholder","React6","normalizeMonth","defaultDisplayFormatter","defaultValueFormatter","defaultValueParser","MonthPicker","CalendarIcon","useRef","Search","Plus","Minus","parse","compareAsc","useForm","isAfter","CheckboxPrimitive","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","reSplitAlphaNumeric","threshold","React11","useLayoutEffect","ChevronUp","ChevronDown","Bug","useReactTable","getCoreRowModel","getFilteredRowModel","getSortedRowModel","getExpandedRowModel","getGroupedRowModel","isSomeColumnsFilterable","flexRender","createElement","DialogPrimitive","XIcon","cn","Dialog","DialogPrimitive2","DialogPortal","DialogOverlay","DialogContent","DialogHeader","DialogTitle","DialogDescription","useTranslation","i18n","initReactI18next","I18nextProvider","NodeViewWrapper","PluginKey","Suggestion","ReactDOM","editor","Plugin","tr","Node","mergeAttributes","ReactNodeViewRenderer","nodes","Separator","RadioGroupPrimitive","DecoratorNode","HeadingNode","QuoteNode","ListNode","ListItemNode","LinkNode","CodeNode","createCommand","Icon","$createParagraphNode","$createTextNode","useLexicalComposerContext","$getSelection","$isRangeSelection","$isLinkNode","$getNodeByKey","$createLinkNode","$insertNodes","TOGGLE_LINK_COMMAND","$isListNode","$isHeadingNode","$isCodeNode","React17","mergeRegister","CAN_UNDO_COMMAND","COMMAND_PRIORITY_NORMAL","CAN_REDO_COMMAND","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_CRITICAL","selection","$setBlocksType","$createHeadingNode","REMOVE_LIST_COMMAND","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$createQuoteNode","$createCodeNode","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","Undo","UNDO_COMMAND","Redo","REDO_COMMAND","Bold","Italic","Underline","Strikethrough","InlineCodeIcon","Pilcrow","Heading1","Heading2","Heading3","BulletListIcon","ListOrdered","QuoteIcon","CodeSquare","LinkIcon","Link2Off","ImageIcon","AlignLeft","AlignCenter","AlignRight","COMMAND_PRIORITY_EDITOR","forwardRef","RichText","html","$generateHtmlFromNodes","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","ListPlugin","LinkPlugin","MarkdownShortcutPlugin","TRANSFORMERS","AutoFocusPlugin","OnChangePlugin","SeparatorPrimitive","SheetPrimitive","React18","open","PanelLeftIcon","SwitchPrimitive","TooltipPrimitive","StarterKit","useEditor","EditorContent","Minimize2","Maximize2","TooltipProvider","TooltipPrimitive2","Tooltip","TooltipTrigger","TooltipContent","useSortable","React20","CSS","useWatch","GripVertical","Info","CircleMinus","z","zodResolver","useFieldArray","useSensors","useSensor","PointerSensor","DndContext","closestCenter","restrictToParentElement","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","Image","React21","Header","CircleHelp","isValidElement","croppedAreaPixels","Cropper","React25","React26","InputPrimitive","React27","inputVariants","Input","NumericFormat","MoreVertical","DialogPrimitive3","CommandPrimitive","SearchIcon","React29","useVirtualizer","option","Check","React30"],"mappings":"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","file":"index.js","sourcesContent":["export function isDefined<T>(value: T | null | undefined): value is NonNullable<T> {\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 { useEffect, useState } from \"react\";\nimport { useRouter } from \"@tanstack/react-router\";\n\ntype UseSafeBlockerOpts = {\n shouldBlockFn: () => boolean | Promise<boolean>;\n enableBeforeUnload?: boolean | (() => boolean);\n disabled?: boolean;\n withResolver?: boolean;\n};\n\ntype SafeBlockerResolver =\n | {\n status: \"blocked\";\n proceed: () => void;\n reset: () => void;\n }\n | {\n status: \"idle\";\n proceed: undefined;\n reset: undefined;\n };\n\nexport function useSafeBlocker({\n shouldBlockFn,\n enableBeforeUnload = true,\n disabled = false,\n withResolver = false\n}: UseSafeBlockerOpts): SafeBlockerResolver {\n const router = useRouter({ warn: false });\n const [resolver, setResolver] = useState<SafeBlockerResolver>({\n status: \"idle\",\n proceed: undefined,\n reset: undefined\n });\n\n useEffect(() => {\n if (disabled || !router?.history?.block) {\n return;\n }\n\n return router.history.block({\n enableBeforeUnload,\n blockerFn: async () => {\n const shouldBlock = await shouldBlockFn();\n if (!withResolver) {\n return shouldBlock;\n }\n\n if (!shouldBlock) {\n return false;\n }\n\n const canNavigate = await new Promise<boolean>((resolve) => {\n setResolver({\n status: \"blocked\",\n proceed: () => resolve(false),\n reset: () => resolve(true)\n });\n });\n\n setResolver({\n status: \"idle\",\n proceed: undefined,\n reset: undefined\n });\n\n return canNavigate;\n }\n });\n }, [disabled, enableBeforeUnload, router, shouldBlockFn, withResolver]);\n\n useEffect(() => {\n if (disabled || router?.history || typeof window === \"undefined\") {\n return;\n }\n\n const shouldEnable = enableBeforeUnload;\n if (!shouldEnable) {\n return;\n }\n\n const handler = (event: BeforeUnloadEvent) => {\n const shouldBlock = typeof shouldEnable === \"function\" ? shouldEnable() : shouldEnable;\n if (!shouldBlock) {\n return;\n }\n\n event.preventDefault();\n event.returnValue = \"\";\n };\n\n window.addEventListener(\"beforeunload\", handler, { capture: true });\n return () => window.removeEventListener(\"beforeunload\", handler, { capture: true });\n }, [disabled, enableBeforeUnload, router]);\n\n return resolver;\n}\n","import { create } from \"zustand\";\n\nexport type DraftSource = \"create\" | \"edit\" | null;\n\nexport interface DraftGuardState {\n isDirty: boolean;\n source: DraftSource;\n isInitialized: boolean;\n markDirty: (source: DraftSource) => void;\n clearDraft: () => void;\n markInitialized: () => void;\n}\n\nexport const useDraftGuardStore = create<DraftGuardState>((set) => ({\n isDirty: false,\n source: null,\n isInitialized: false,\n markDirty: (source) =>\n set((state) => {\n if (!state.isInitialized || !source) {\n return state;\n }\n return { ...state, isDirty: true, source };\n }),\n clearDraft: () => set({ isDirty: false, source: null }),\n markInitialized: () => set({ isInitialized: true })\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 React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const AdministrationIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 19 19\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_299_1800)\">\n <path\n d=\"M11.5623 3.29387C11.9248 3.18131 11.4585 2.59296 11.5381 2.32327C11.5557 2.2648 12.1959 1.60628 12.258 1.57778C12.5979 1.42064 12.7792 1.71299 13.0774 1.67352C13.1344 1.66621 13.6752 1.47107 13.7001 1.44914C13.8097 1.35267 13.7929 0.903178 14.0611 0.822782C14.2387 0.770159 15.1925 0.780391 15.3087 0.898793C15.4359 1.02743 15.3467 1.30443 15.6383 1.48276C15.7005 1.52077 16.1127 1.68156 16.1719 1.68595C16.4642 1.70495 16.587 1.36217 17.0109 1.64575C17.1125 1.71372 17.6804 2.3123 17.7023 2.40878C17.7447 2.59442 17.505 2.82026 17.5189 3.03222C17.5233 3.09434 17.706 3.55698 17.7455 3.61472C17.896 3.83179 18.1942 3.78648 18.3046 3.89538C18.4734 4.06202 18.3762 4.87694 18.3806 5.14371C18.0225 5.47261 17.5576 5.5932 17.5182 6.18667C17.5043 6.39863 17.744 6.62447 17.7016 6.81011C17.6534 7.02133 17.3391 7.12511 17.3004 7.35169C17.1622 9.32797 17.4801 11.5403 17.2974 13.4881C17.2514 13.9829 17.0913 14.2716 16.8048 14.6597C17.4407 15.2685 17.934 15.9015 18.1949 16.7595C18.2812 17.0438 18.5648 17.8317 18.1394 17.9114H14.667C14.6765 18.1175 14.724 18.7884 14.4112 18.7884H3.08411C2.78299 18.7884 2.88897 17.4531 3.01029 17.1798C3.15428 16.8567 3.76894 16.4496 4.10734 16.4496H5.89798V15.061H1.54927C1.50469 15.061 0.980654 14.8081 0.903913 14.7562C0.51728 14.4923 0.308981 14.0253 0.267321 13.5656C0.00859112 10.7159 0.462464 7.47009 0.276822 4.57875C0.276822 4.15265 1.01793 3.29314 1.4031 3.29314H11.5623V3.29387ZM14.8768 1.40529C14.8293 1.37605 14.3571 1.37532 14.3133 1.4031C14.2241 2.01118 13.9149 1.98049 13.4274 2.16101C13.2542 2.22533 13.2038 2.37955 12.9707 2.33204C12.7624 2.28892 12.7273 2.09743 12.4371 2.26626C11.9628 2.5418 12.3618 2.78226 12.3304 3.10311C12.3209 3.20105 11.9021 4.12341 11.8488 4.16361C11.7428 4.24328 11.3993 4.27032 11.3773 4.3646L11.3905 4.89156C11.544 4.96611 11.8188 4.98073 11.9255 5.12398C11.9854 5.20365 12.3414 6.15159 12.3304 6.24733C12.3056 6.4666 12.1009 6.50606 12.2522 6.76772C12.5234 7.23767 12.7923 6.85835 13.0927 6.87662C13.1431 6.87954 13.9712 7.21721 14.0333 7.25375C14.2599 7.38677 14.2767 7.80994 14.3476 7.82895C15.0792 7.98901 14.83 7.54171 15.1815 7.27787C15.2232 7.24717 16.0623 6.89416 16.112 6.88612C16.4467 6.82911 16.7398 7.29175 17.0555 6.69317C17.0394 6.50314 16.845 6.31677 16.8735 6.12455C16.8816 6.06973 17.2631 5.14225 17.2945 5.09621C17.3881 4.95734 17.7075 4.99242 17.8149 4.85283C17.9852 4.12195 17.5401 4.36533 17.2974 4.06275C17.2645 4.02182 16.8816 3.14477 16.8735 3.09215C16.8399 2.86631 17.1344 2.63754 17.0146 2.45044C16.6462 1.87597 16.522 2.3642 16.1726 2.34154C16.0725 2.33496 15.1377 1.90448 15.0726 1.8292C14.9915 1.73418 14.9045 1.4221 14.876 1.40456L14.8768 1.40529ZM10.941 3.80548H1.84162C1.38848 3.80548 0.891488 4.25351 0.853482 4.71761C1.0552 7.5366 0.591098 10.7166 0.85202 13.4925C0.90976 14.1035 1.22623 14.4214 1.8387 14.4792C4.84698 14.762 8.29159 14.2585 11.3466 14.4799C11.8444 14.458 12.1703 13.9624 12.6951 13.9639C12.7704 13.8806 12.3209 13.5612 12.2274 13.4465C12.0987 13.2893 12.0307 13.1007 11.916 12.9385L1.69253 12.9451C1.43307 12.948 1.30662 12.6973 1.29274 12.4678C1.46449 10.0705 1.07055 7.36923 1.29128 5.0085C1.31393 4.76585 1.34682 4.55024 1.54489 4.38507L10.7539 4.32148L10.9417 3.80548H10.941ZM10.7948 4.90179H1.87817V12.2471L1.9878 12.3567H11.745C11.3642 10.1392 13.8689 8.75423 15.6186 10.1641V7.75221C15.3774 7.81872 15.4344 8.24189 15.278 8.34348C15.1384 8.43411 14.3849 8.43996 14.1898 8.41365C13.7271 8.35225 13.8667 7.93419 13.7015 7.76902C13.6774 7.7449 13.1 7.50078 13.0657 7.49421C12.8683 7.45547 12.6944 7.80629 12.2749 7.62357C12.1411 7.5651 11.5966 7.01475 11.5549 6.87735C11.4548 6.54772 11.7179 6.36281 11.7172 6.18009C11.7172 6.14501 11.4789 5.56177 11.4585 5.53327C11.392 5.44337 11.0477 5.43168 10.9067 5.26431C10.7985 5.13567 10.8087 4.91349 10.7948 4.90106V4.90179ZM16.7054 7.68935L16.204 7.53367C16.2713 8.61245 16.1134 9.79573 16.2004 10.8621C16.2209 11.1128 16.3276 11.2889 16.3502 11.5162C16.4343 12.3553 16.2698 12.9619 15.7209 13.5919C15.6106 13.7191 15.2232 13.8492 15.5009 13.9712C15.7502 14.0808 16.0023 14.1773 16.2406 14.3103C16.5285 14.1203 16.6769 13.8316 16.7149 13.4903L16.7047 7.68935H16.7054ZM12.7945 13.2075C14.4163 14.8329 16.9766 12.3019 15.2561 10.6362C13.6489 9.0802 11.1318 11.5411 12.7945 13.2075ZM17.7381 17.3267C17.2682 14.9769 14.8373 13.6833 12.603 14.5669C11.4746 15.0127 10.5251 16.1149 10.3563 17.3267H17.7381ZM10.8679 15.061H6.48268V16.4496H9.95433C10.2474 15.9702 10.4696 15.4688 10.8679 15.061ZM3.48609 18.2037H14.0838V17.9114H9.88125C9.55674 17.9114 9.82204 17.0855 9.77161 17.0343L4.39676 17.0314C3.5643 17.103 3.41081 17.3749 3.48609 18.2037Z\"\n fill=\"black\"\n />\n <path\n d=\"M10.795 4.90186C10.8096 4.91428 10.7986 5.13647 10.9068 5.2651C11.0486 5.43247 11.3921 5.44416 11.4586 5.53406C11.4791 5.56184 11.7173 6.1458 11.7173 6.18089C11.7181 6.3636 11.4549 6.54852 11.5551 6.87814C11.5967 7.01554 12.1405 7.56589 12.275 7.62436C12.6945 7.80708 12.8685 7.45626 13.0658 7.495C13.0994 7.50158 13.6768 7.74496 13.7017 7.76981C13.8668 7.93498 13.7272 8.35378 14.1899 8.41444C14.3858 8.44002 15.1386 8.43417 15.2781 8.34427C15.4346 8.24341 15.3768 7.81951 15.6187 7.753V10.1649C13.869 8.75503 11.3643 10.14 11.7451 12.3575H1.98793L1.8783 12.2479V4.90186H10.795ZM9.77174 11.4432V5.81545C9.77174 5.51944 8.20913 5.63565 7.94455 5.66927C7.91166 5.68901 7.79838 5.86807 7.79838 5.88854V11.0412H7.21368V7.20411C6.78758 6.91615 5.74681 6.91395 5.31341 7.20411V11.0412H4.72871V8.66586C4.72871 8.63736 4.64392 8.50141 4.60592 8.47802C4.41955 8.36182 2.93733 8.35085 2.82259 8.53211C2.71807 8.69729 2.72392 10.8095 2.75242 11.1545C2.76265 11.2773 2.76338 11.487 2.8774 11.5594L9.62483 11.5894C9.65845 11.5733 9.76516 11.4688 9.77247 11.4446L9.77174 11.4432Z\"\n fill=\"white\"\n />\n <path\n d=\"M10.9411 3.80566L10.7532 4.32166L1.5442 4.38525C1.34613 4.55043 1.31324 4.76676 1.29059 5.00868C1.06913 7.36941 1.46307 10.0707 1.29205 12.468C1.30594 12.6975 1.43311 12.9474 1.69184 12.9453L11.9153 12.9387C12.0301 13.1009 12.098 13.2895 12.2267 13.4466C12.3202 13.5614 12.7697 13.8815 12.6944 13.9641C12.1697 13.9626 11.8444 14.4574 11.346 14.4801C8.2909 14.2586 4.84702 14.7622 1.83801 14.4794C1.22554 14.4216 0.909071 14.1037 0.851332 13.4927C0.589679 10.7168 1.05378 7.53678 0.852794 4.7178C0.89153 4.25369 1.38852 3.80566 1.84094 3.80566H10.9403H10.9411Z\"\n fill=\"white\"\n />\n <path\n d=\"M17.7383 17.327H10.3564C10.5253 16.1152 11.4747 15.0131 12.6032 14.5672C14.8374 13.6836 17.2683 14.9773 17.7383 17.327Z\"\n fill=\"white\"\n />\n <path\n d=\"M14.8769 1.40533C14.9046 1.42287 14.9923 1.73495 15.0735 1.82996C15.1378 1.90598 16.0733 2.33646 16.1734 2.34231C16.5228 2.36496 16.6463 1.87674 17.0154 2.45121C17.1353 2.63831 16.8415 2.86708 16.8744 3.09292C16.8824 3.14554 17.2646 4.02186 17.2983 4.06352C17.5409 4.3661 17.986 4.12272 17.8157 4.85359C17.7083 4.99319 17.3889 4.95811 17.2953 5.09697C17.2639 5.14302 16.8824 6.06977 16.8744 6.12531C16.8458 6.31753 17.0403 6.50391 17.0563 6.69394C16.7406 7.29252 16.4483 6.82988 16.1128 6.88689C16.0631 6.89566 15.2233 7.24794 15.1824 7.27864C14.8308 7.54248 15.0801 7.98978 14.3484 7.82971C14.2776 7.81071 14.2607 7.38681 14.0342 7.25452C13.972 7.21797 13.144 6.88031 13.0935 6.87739C12.7931 6.85838 12.5242 7.23844 12.253 6.76848C12.1017 6.50683 12.3064 6.46736 12.3312 6.2481C12.3422 6.15236 11.9863 5.20441 11.9263 5.12475C11.8196 4.98223 11.5448 4.96761 11.3913 4.89233L11.3782 4.36537C11.4001 4.27109 11.7443 4.24404 11.8496 4.16438C11.9022 4.12418 12.321 3.20182 12.3312 3.10388C12.3627 2.78229 11.9636 2.54184 12.4379 2.26703C12.7281 2.0982 12.7632 2.29042 12.9715 2.33281C13.2054 2.38104 13.2551 2.2261 13.4283 2.16178C13.9158 1.98126 14.2249 2.01122 14.3141 1.40386C14.3579 1.37609 14.8294 1.37609 14.8776 1.40606L14.8769 1.40533ZM14.5085 2.6522C11.9468 2.78741 12.082 6.90735 14.9909 6.50318C17.2449 6.19036 16.9504 2.52283 14.5085 2.6522Z\"\n fill=\"white\"\n />\n <path\n d=\"M12.7946 13.2074C11.1319 11.541 13.6483 9.08016 15.2562 10.6362C16.9774 12.3019 14.4172 14.8329 12.7946 13.2074Z\"\n fill=\"white\"\n />\n <path\n d=\"M3.4862 18.2041C3.41165 17.3753 3.5644 17.1034 4.39687 17.0317L9.77172 17.0347C9.82142 17.0851 9.55684 17.9117 9.88135 17.9117H14.0839V18.2041H3.4862Z\"\n fill=\"white\"\n />\n <path\n d=\"M10.868 15.061C10.4697 15.4689 10.2475 15.9702 9.95444 16.4497H6.48279V15.061H10.868Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.7055 7.68937L16.7158 13.4903C16.6777 13.8309 16.5294 14.1203 16.2414 14.3104C16.0031 14.1781 15.751 14.0816 15.5018 13.9712C15.224 13.8492 15.6107 13.7191 15.7218 13.5919C16.2707 12.9619 16.4351 12.3553 16.351 11.5162C16.3284 11.2889 16.2217 11.1128 16.2012 10.8621C16.1142 9.79575 16.2721 8.61246 16.2049 7.53369L16.7063 7.68937H16.7055Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.77171 11.4433C9.76513 11.4675 9.65842 11.5727 9.62407 11.5881L2.87664 11.5581C2.76335 11.4865 2.76189 11.276 2.75166 11.1532C2.72315 10.8089 2.71731 8.69598 2.82182 8.53081C2.93657 8.34955 4.41805 8.36124 4.60516 8.47672C4.64316 8.50011 4.72794 8.63605 4.72794 8.66456V11.0399H5.31264V7.20281C5.74605 6.91265 6.78682 6.91484 7.21292 7.20281V11.0399H7.79762V5.88723C7.79762 5.86677 7.9109 5.6877 7.94379 5.66797C8.20837 5.63435 9.77098 5.51814 9.77098 5.81415V11.4419L9.77171 11.4433ZM9.18701 6.21759H8.38305V11.0414H9.18701V6.21759ZM6.62895 7.60625H5.89807V11.0414H6.62895V7.60625ZM4.14397 8.99491H3.34001V11.0414H4.14397V8.99491Z\"\n fill=\"black\"\n />\n <path\n d=\"M14.5085 2.65227C16.9504 2.5229 17.2456 6.19043 14.9909 6.50325C12.082 6.90742 11.9461 2.78748 14.5085 2.65227ZM14.5071 3.23624C12.7807 3.37218 12.9116 6.00552 14.6211 5.97117C16.5053 5.93316 16.3145 3.09372 14.5071 3.23624Z\"\n fill=\"black\"\n />\n <path d=\"M9.18702 6.21729H8.38306V11.0411H9.18702V6.21729Z\" fill=\"white\" />\n <path d=\"M6.62895 7.60596H5.89807V11.0411H6.62895V7.60596Z\" fill=\"white\" />\n <path d=\"M4.14393 8.99463H3.33997V11.0411H4.14393V8.99463Z\" fill=\"white\" />\n <path\n d=\"M14.507 3.2361C16.3144 3.09431 16.5052 5.93375 14.621 5.97103C12.9115 6.00538 12.7807 3.37204 14.507 3.2361Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_299_1800\">\n <rect width=\"18.2207\" height=\"17.9956\" fill=\"white\" transform=\"translate(0.185547 0.792969)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const AnalyticsIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 18 17\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_299_1720)\">\n <path\n d=\"M0.712536 5.34459L0.415865 5.40561L0.230531 5.16508C0.325273 3.79997 0.0984471 2.24754 0.224999 0.906546C0.277556 0.350992 0.61572 0.0494463 1.15927 0.020356L14.1513 0.0884699C14.2764 0.169355 14.2792 0.44323 14.1513 0.526244L0.82664 0.656086C0.797596 0.677371 0.712536 0.88597 0.712536 0.910094V2.29366H17.4478V0.910094C17.4478 0.898032 17.3704 0.69369 17.36 0.681629C17.1297 0.420525 15.2384 0.766061 15.0212 0.491477C14.9133 0.355249 14.9251 0.201993 15.0682 0.0998223C15.2273 -0.0137009 16.8462 -0.0101533 17.1311 0.0295798C17.5474 0.0877604 17.8337 0.353121 17.9278 0.773157L17.8994 15.4226C17.7424 15.8611 17.4409 16.0222 17.0011 16.0619C13.7419 16.3578 10.0642 15.832 6.76007 16.0619C6.2746 16.1151 6.10241 15.5581 6.62176 15.4879C10.0006 15.2999 13.654 15.749 17.0011 15.4943C17.2106 15.4787 17.4478 15.4439 17.4478 15.1722V2.86127H0.712536V5.34459Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.9073 10.0982C8.52834 10.0151 8.55047 9.10128 8.60026 8.7898C8.67771 8.30165 9.17908 8.32293 9.56496 8.32506C9.63066 7.52614 9.47506 6.58461 9.56289 5.80414C9.65486 4.98677 10.6776 5.49904 11.2288 5.31386C11.3879 5.19963 11.1396 4.59583 11.5663 4.45392C11.8249 4.36807 12.9058 4.4745 12.9535 4.4227C12.9501 4.1545 12.9597 3.65004 13.2778 3.58831C13.5268 3.54006 14.84 3.53226 14.9977 3.63656C15.1782 3.75646 15.219 4.03743 15.2377 4.24178C15.3559 5.53381 15.1443 7.01245 15.2349 8.32435C15.4348 8.31158 16.0011 8.33287 16.1007 8.53579C16.1927 8.72452 16.2695 10.2003 15.7577 10.1017C14.5275 9.97186 13.0019 10.2613 11.809 10.1017C11.363 10.0421 11.5372 9.60149 11.5704 9.60149H15.6505V8.89197H9.15004V9.60149H10.6368C10.8381 9.60149 10.8381 10.0982 10.6368 10.0982C10.1998 10.0982 9.26967 10.1776 8.908 10.0982H8.9073ZM14.6817 4.06723H13.5061V8.32435H14.6817V4.06723ZM12.9528 4.98961H11.7772V8.32435H12.9528V4.98961ZM11.2931 5.84103H10.1175V8.32435H11.2931V5.84103Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.35133 7.11817C7.70263 9.44894 4.97519 10.9914 3.13915 9.55962C1.03063 7.91638 2.26158 4.48514 4.88529 4.63201C5.03674 4.6682 5.04158 6.09859 4.98694 6.28803C4.91157 6.547 4.30923 6.42922 4.03262 6.86984C3.35836 7.94121 5.0561 8.91609 5.55816 7.65456C5.63215 7.46867 5.5789 7.24801 5.72759 7.11888H7.35271L7.35133 7.11817ZM4.5167 5.20175C3.49183 5.17976 2.71454 6.13477 2.58038 7.11746L3.40262 7.10965C3.50428 6.50869 3.9199 6.07943 4.5084 5.97513L4.5167 5.20246V5.20175ZM3.40193 7.62264L2.57969 7.61483C2.71385 8.61667 3.50428 9.50428 4.516 9.53054L4.50701 8.75929C3.93649 8.62732 3.50843 8.22076 3.40262 7.62264H3.40193ZM6.86794 7.61483L6.10448 7.64676C5.92952 8.19735 5.57061 8.61809 5.00977 8.75858L5.00077 9.52982C5.94265 9.51634 6.82783 8.56914 6.86794 7.61412V7.61483Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M15.972 12.344C15.6339 12.6945 15.2141 12.4738 15.0613 12.5746C14.9831 12.6256 14.1208 13.5055 14.0973 13.5714C14.0682 13.653 14.1436 13.834 14.1339 13.9638C14.0855 14.5931 13.2847 14.9053 12.8477 14.3576C12.5344 13.9645 12.7771 13.7658 12.708 13.5714C12.6831 13.5012 11.7377 12.5398 11.6658 12.527C11.5897 12.5135 11.4874 12.5845 11.3975 12.5817C11.264 12.5774 11.1568 12.4823 11.0192 12.5433C10.9604 12.5696 10.1596 13.3905 10.1119 13.4664C9.9985 13.6459 10.206 13.973 9.94179 14.3526C9.43213 15.0856 8.29454 14.3611 8.68181 13.5558C8.96741 12.962 9.42867 13.2713 9.77098 13.1124C9.82423 13.0875 10.5752 12.3206 10.6057 12.2659C10.7958 11.9254 10.4902 11.5294 10.9501 11.2009C11.4099 10.8724 12.0614 11.1286 12.1222 11.7019C12.1395 11.865 12.0427 12.0453 12.0863 12.1545C12.1125 12.2198 13.0046 13.1152 13.071 13.1351C13.2446 13.1876 13.663 13.1762 13.8213 13.0826C13.878 13.0492 14.6948 12.2148 14.719 12.1545C14.7902 11.9757 14.5405 11.5699 14.9223 11.2314C15.6477 10.5879 16.5889 11.7061 15.9727 12.3447L15.972 12.344ZM11.2661 11.5947C11.0005 11.682 11.2045 12.1985 11.5047 11.9828C11.6748 11.8608 11.5648 11.4968 11.2661 11.5947ZM15.3462 11.5947C15.0806 11.682 15.2846 12.1985 15.5848 11.9828C15.7549 11.8608 15.6449 11.4968 15.3462 11.5947ZM9.56006 13.7219C9.51027 13.6495 9.04279 13.5842 9.16312 13.9496C9.30765 14.3867 9.69353 13.9156 9.56006 13.7219ZM13.3469 13.6537C13.0517 13.7289 13.1478 14.171 13.4431 14.11C13.7999 14.0362 13.6125 13.5863 13.3469 13.6537Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M0.712512 15.1713C0.742249 15.3778 0.834915 15.4573 1.02855 15.4835C2.32104 15.6581 3.94478 15.3338 5.24349 15.4892C5.77598 15.553 5.74002 16.0029 5.24349 16.0582C4.27603 16.1654 2.14262 16.1505 1.15925 16.0611C0.61293 16.0114 0.279607 15.7553 0.224976 15.1749L0.26301 6.26685C0.362592 6.05683 0.712512 6.10934 0.712512 6.23138V15.1713Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M5.5533 3.67721C6.09824 3.36999 6.99309 3.76306 7.45366 4.13981C7.91423 4.51657 8.7095 5.80931 8.4232 6.40886C8.2925 6.68344 7.09337 6.50322 6.77249 6.54083L6.69089 6.48265C6.63557 6.04984 6.53253 5.62839 6.08787 5.46945C5.89008 5.3985 5.68124 5.46378 5.55261 5.3091V3.67721H5.5533ZM7.32711 4.73084C6.97926 4.37396 6.50348 4.19729 6.03807 4.06744L6.04706 4.90893C6.62174 5.02813 6.97719 5.49996 7.15491 6.04204L7.90454 6.05339C7.92252 5.59433 7.63415 5.04516 7.32642 4.73013L7.32711 4.73084Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M9.34784 11.5082C9.3181 11.5571 9.05947 11.5855 8.97994 11.5912C7.45855 11.704 5.80715 11.4975 4.27123 11.5912C3.83003 11.5302 3.85769 11.0739 4.34246 11.02C5.35211 10.9079 7.97513 10.9015 8.97786 11.0186C9.20815 11.0456 9.51658 11.2286 9.34784 11.5075V11.5082Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M4.13565 14.1426H7.80082C7.96956 14.1426 7.96956 14.6392 7.80082 14.6392H4.13565C3.97452 14.6392 3.88808 14.2291 4.13565 14.1426Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.76354 12.5815C6.96339 12.6461 6.94334 12.9874 6.71236 13.0966C6.5049 13.1945 4.81547 13.1782 4.47938 13.1513C3.72974 13.091 3.98354 12.5808 4.13568 12.5808H6.76354V12.5815Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M2.10531 11.508C1.72773 10.8858 3.55686 10.8013 3.23875 11.447C3.12603 11.6755 2.16824 11.6116 2.10531 11.508Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M2.1053 12.6616C2.16823 12.5581 3.12532 12.4942 3.23804 12.7227C3.54716 13.3492 1.72356 13.291 2.1053 12.6616Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M2.20972 14.1523H3.15714L3.2664 14.2566C3.3238 14.8377 2.57832 14.6029 2.20972 14.6284L2.12605 14.5724C2.09424 14.5156 2.09009 14.4539 2.09009 14.39C2.09009 14.2815 2.10184 14.1842 2.20972 14.1516V14.1523Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.84171 1.6372C3.68542 1.47542 3.8016 1.14479 4.0547 1.17672C4.60448 1.24625 4.15498 1.96145 3.84171 1.6372Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M1.87155 1.24618C2.11221 1.49309 1.73255 1.88404 1.49051 1.63712C1.24847 1.39021 1.62951 0.999266 1.87155 1.24618Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.04709 1.24618C3.28775 1.49309 2.90809 1.88404 2.66605 1.63712C2.42401 1.39021 2.80505 0.999266 3.04709 1.24618Z\"\n fill=\"currentColor\"\n />\n <path d=\"M14.6816 4.06738H13.506V8.3245H14.6816V4.06738Z\" />\n <path d=\"M12.9528 4.98975H11.7772V8.32449H12.9528V4.98975Z\" />\n <path d=\"M11.2931 5.84106H10.1174V8.32438H11.2931V5.84106Z\" />\n <path d=\"M4.51664 5.20177L4.50834 5.97443C3.91984 6.07944 3.50422 6.50799 3.40257 7.10895L2.58032 7.11676C2.71448 6.13407 3.49108 5.17906 4.51664 5.20106V5.20177Z\" />\n <path d=\"M3.40191 7.62279C3.50772 8.22092 3.93578 8.62748 4.50631 8.75945L4.5153 9.53069C3.50357 9.50515 2.71383 8.61683 2.57898 7.61499L3.40122 7.62279H3.40191Z\" />\n <path d=\"M6.86789 7.61499C6.82778 8.57 5.94261 9.51721 5.00073 9.53069L5.00972 8.75945C5.57056 8.61896 5.92947 8.19751 6.10443 7.64763L6.86789 7.6157V7.61499Z\" />\n <path d=\"M13.347 13.6536C13.6126 13.5862 13.7993 14.036 13.4431 14.1098C13.1479 14.1708 13.0517 13.7288 13.347 13.6536Z\" />\n <path d=\"M11.2661 11.5947C11.5649 11.4967 11.6748 11.8607 11.5047 11.9828C11.2046 12.1985 11.0006 11.6819 11.2661 11.5947Z\" />\n <path d=\"M15.3463 11.5947C15.6451 11.4967 15.755 11.8607 15.5849 11.9828C15.2848 12.1985 15.0808 11.6819 15.3463 11.5947Z\" />\n <path d=\"M9.56013 13.7219C9.69428 13.9156 9.30771 14.3867 9.16318 13.9496C9.04285 13.5842 9.50964 13.6495 9.56013 13.7219Z\" />\n <path d=\"M7.32704 4.73081C7.63408 5.04583 7.92315 5.595 7.90517 6.05406L7.15554 6.04271C6.97712 5.50064 6.62167 5.02881 6.04769 4.90961L6.0387 4.06812C6.5041 4.19796 6.97988 4.37534 7.32773 4.73152L7.32704 4.73081Z\" />\n </g>\n <defs>\n <clipPath id=\"clip0_299_1720\">\n <rect width=\"17.7422\" height=\"16.1501\" transform=\"translate(0.185547 0.00390625)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst ApplicationLogIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M15 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V7L15 2Z\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 2V6C14 6.53043 14.2107 7.03914 14.5858 7.41421C14.9609 7.78929 15.4696 8 16 8H20\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M8 13H10\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" />\n <path d=\"M14 13H16\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" />\n <path d=\"M8 17H10\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" />\n <path d=\"M14 17H16\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" />\n </svg>\n);\n\nexport default ApplicationLogIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst ArrowIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 14 9\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path d=\"M0.293 0.723L6.79 8.723L13.293 0.723H0.293Z\" fill=\"currentColor\" />\n </svg>\n);\n\nexport default ArrowIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiCalendarIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 25 25\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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);\n\nexport default SuiCalendarIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiCalendarIcon2: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M6.66666 1.66675V5.00008\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 1.66675V5.00008\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15.8333 3.33325H4.16667C3.24619 3.33325 2.5 4.07944 2.5 4.99992V16.6666C2.5 17.5871 3.24619 18.3333 4.16667 18.3333H15.8333C16.7538 18.3333 17.5 17.5871 17.5 16.6666V4.99992C17.5 4.07944 16.7538 3.33325 15.8333 3.33325Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2.5 8.33325H17.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66666 11.6667H6.67499\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 11.6667H10.0083\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 11.6667H13.3417\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.66666 15H6.67499\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 15H10.0083\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.3333 15H13.3417\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default SuiCalendarIcon2;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiCheckIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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=\"currentColor\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default SuiCheckIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst CustomActionStatusIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 23 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clip-path=\"url(#clip0_14821_55543)\">\n <path\n fill=\"currentColor\"\n d=\"M13.548 0.255589C13.8411 0.606143 13.8315 1.80253 14.037 2.26404L15.7429 2.96836C16.3115 2.76897 17.1254 1.77037 17.737 1.96655C18.3088 2.14987 19.8809 4.27249 20.5243 4.69219C21.0165 5.44154 19.9557 6.23913 19.6977 6.90004C19.8554 7.18949 20.2743 8.62226 20.4479 8.70105C20.8365 8.87633 22.2796 8.85382 22.4516 9.27513V13.6088C22.2939 13.9947 20.7871 14.0575 20.3858 14.2102L19.6993 15.9244C19.884 16.5821 20.8556 17.3009 20.6342 18.0342C20.0975 18.4748 18.1639 20.8354 17.6685 20.9399C17.4837 20.9785 17.3946 20.9512 17.2273 20.8852C17.0378 20.8113 15.324 19.6133 15.2507 19.4862C15.1902 19.3801 15.179 19.3399 15.1631 19.2177C15.0166 18.1001 15.265 16.6352 15.187 15.4806C18.965 11.446 15.6091 4.86586 10.1077 5.97541C5.79922 6.84376 4.34662 12.3578 7.36491 15.4806L7.38084 19.3013C7.34261 19.5023 7.16582 19.6213 7.02087 19.7419C6.79311 19.9333 5.30387 20.9351 5.11911 20.956C5.00762 20.9688 4.91842 20.9512 4.8133 20.9174C4.25902 20.7389 2.51494 18.4989 1.91606 18.0342C1.70582 17.3379 2.60891 16.5837 2.85261 15.9839L2.20913 14.2536C1.78386 14.0124 0.426827 14.0285 0.154464 13.694L0.0604909 13.4802C0.101903 12.2468 -0.0653376 10.8671 0.0365994 9.65141C0.119423 8.65924 1.43823 8.9712 2.16453 8.67372L2.85102 6.95954C2.66625 6.30185 1.69467 5.58305 1.91606 4.84978C2.51494 4.38505 4.25902 2.14504 4.8133 1.96655C5.42492 1.77037 6.23883 2.76897 6.80744 2.96836L8.47507 2.29298C8.78088 1.78002 8.63594 0.228252 9.30649 0.0770955C10.4835 0.143025 11.9505 -0.0949655 13.0925 0.0497587C13.2295 0.0674472 13.4636 0.15589 13.5496 0.258805L13.548 0.255589ZM12.5032 1.39891H10.0439C9.87511 1.85881 9.88944 2.95711 9.55178 3.26907C9.32242 3.47972 8.16289 3.79168 7.7631 3.96375C7.2789 4.17279 7.04954 4.59732 6.43314 4.35772C6.20219 4.26767 5.19716 3.43148 5.08089 3.48455L3.41326 5.20033L4.36733 6.88396C4.20646 7.3712 3.90702 7.79894 3.7127 8.2701C3.52953 8.70909 3.40211 9.66588 2.98003 9.85241C2.66785 9.99071 1.36337 10.0727 1.29011 10.2898L1.31718 12.652C1.44938 12.8369 2.87013 12.8241 3.18868 13.1746C3.4037 13.4126 3.56457 14.252 3.71429 14.609C3.84809 14.9322 4.32432 15.6768 4.36096 15.9276C4.42626 16.3602 3.36389 17.4135 3.41645 17.6804L5.12708 19.4203L6.04292 18.7513L6.06203 16.082C2.79368 12.0072 4.70022 5.65059 9.94678 4.65038C16.4755 3.40575 20.5594 10.999 16.4915 16.082L16.5106 18.7513L17.4694 19.3978L19.137 17.682L18.183 15.9984C18.3438 15.5111 18.6433 15.0834 18.8376 14.6122C19.0208 14.1732 19.1482 13.2164 19.5703 13.0299C19.8825 12.8916 21.1869 12.8096 21.2602 12.5925L21.2331 10.2303C21.1009 10.0454 19.6802 10.0582 19.3616 9.70769C19.1466 9.4697 18.9857 8.6303 18.836 8.27331C18.7022 7.95009 18.226 7.20557 18.1893 6.95471C18.1209 6.49481 19.2533 5.44154 19.1084 5.14727L17.4232 3.46203C16.9772 3.70485 16.2366 4.45742 15.7429 4.43651C15.453 4.42365 15.0325 4.06988 14.7203 3.94123C14.2154 3.73219 13.0017 3.47329 12.8201 3.00213C12.7246 2.7561 12.5717 1.46002 12.5032 1.40213V1.39891Z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M10.4772 10.7707H12.07C12.1847 10.0149 12.1703 8.82975 12.4252 8.13668C12.8282 7.04482 14.131 8.2396 14.5436 8.76221C16.0933 10.7208 15.6378 13.7536 13.4828 15.0304L13.486 22.2489C13.4796 22.5448 13.2709 22.8326 12.9779 22.8986C12.5638 22.9918 10.0982 22.9838 9.63944 22.913C9.35911 22.8696 9.15524 22.6815 9.07878 22.4081L9.06126 15.032C6.62274 13.6169 6.40612 9.87659 8.62485 8.14311C10.5887 6.60743 10.2351 9.54694 10.4756 10.7707H10.4772ZM10.388 14.4772V21.5783H12.1576V14.4772C12.1576 14.2135 12.9189 13.8388 13.1228 13.6651C14.2585 12.7051 14.5515 10.7996 13.4844 9.69809C13.3283 10.3879 13.5449 12.0008 12.6466 12.1134C12.1942 12.1697 10.0567 12.1713 9.68244 12.0571C9.10586 11.8834 9.16001 10.2416 9.05967 9.69649C7.98137 10.7835 8.29355 12.7084 9.42123 13.6635C9.67289 13.8758 10.318 14.1476 10.3864 14.4756L10.388 14.4772Z\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_14821_55543\">\n <rect width=\"22.4516\" height=\"22.9677\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default CustomActionStatusIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst CustomFieldIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_14170_63977)\">\n <path\n d=\"M9.16987 12.9149C11.2388 12.9149 12.9159 11.2378 12.9159 9.1689C12.9159 7.10001 11.2388 5.42285 9.16987 5.42285C7.10099 5.42285 5.42383 7.10001 5.42383 9.1689C5.42383 11.2378 7.10099 12.9149 9.16987 12.9149Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16.4128 13.2318C16.8305 13.6494 17.5139 13.6494 17.9315 13.2318L19.7877 11.3757L21.6438 13.2318C22.0614 13.6494 22.7448 13.6494 23.1625 13.2318C23.5801 12.8142 23.5801 12.1308 23.1625 11.7131L21.3063 9.85699L23.1625 8.00084C23.5801 7.5832 23.5801 6.8998 23.1625 6.48217C22.7448 6.06454 22.0614 6.06454 21.6438 6.48217L19.7877 8.33832L17.9315 6.48217C17.5139 6.06454 16.8305 6.06454 16.4128 6.48217C15.9952 6.8998 15.9952 7.5832 16.4128 8.00084L18.269 9.85699L16.4128 11.7131C15.9952 12.1308 15.9952 12.8142 16.4128 13.2318Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12.375 17.0664H5.96284C5.49688 17.0664 5.11914 17.4441 5.11914 17.9101V24.3223C5.11914 24.7882 5.49688 25.166 5.11914 25.166H12.375C12.841 25.166 13.2187 24.7882 13.2187 24.3223V17.9101C13.2187 17.4441 12.841 17.0664 12.375 17.0664Z\"\n fill=\"currentColor\"\n />\n <path d=\"M16.1816 24.6089H25.8315L21.0055 17.623L16.1816 24.6089Z\" fill=\"currentColor\" />\n <path\n d=\"M28.1017 0H1.89833C0.852141 0 0 0.852141 0 1.89833V28.1017C0 29.1479 0.852141 30 1.89833 30H28.1017C29.1479 30 30 29.1479 30 28.1017V1.89833C30 0.852141 29.1479 0 28.1017 0ZM27.8907 27.8907H2.10926V2.10926H27.8907V27.8907Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_14170_63977\">\n <rect width=\"30\" height=\"30\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default CustomFieldIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const DashboardIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 17\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_299_1698)\">\n <path\n d=\"M15.6565 1.31863C15.9038 1.56527 15.9634 1.84696 15.9886 2.18586C16.1559 4.42711 15.8576 6.87564 15.9862 9.13904C15.9161 9.66798 15.5181 10.1114 14.9744 10.157C13.3113 10.0339 11.4397 10.3101 9.80243 10.1563C9.25442 10.1047 8.83926 9.69382 8.78759 9.1415C8.57417 6.86273 8.95366 4.25551 8.78821 1.94168C8.88846 1.39305 9.3147 1.03632 9.86332 0.987118C11.4674 0.844425 13.2818 1.09844 14.9086 0.990193C15.1854 1.01787 15.4591 1.12181 15.6559 1.31925L15.6565 1.31863ZM9.77414 9.16918H14.9098L15.0021 9.07692V2.06531L14.9098 1.97305H9.8664L9.77414 2.06531V9.16918Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M0.569834 16.4047C0.322582 16.1581 0.262922 15.8764 0.237705 15.5375C0.0704101 13.2962 0.368711 10.8477 0.240165 8.5843C0.310281 8.05535 0.708221 7.6119 1.25193 7.56638C2.91503 7.68939 4.78664 7.41324 6.42391 7.567C6.97193 7.61866 7.38709 8.02952 7.43875 8.58184C7.65218 10.8606 7.27269 13.4678 7.43814 15.7817C7.33788 16.3303 6.91165 16.687 6.36302 16.7362C4.75896 16.8789 2.94456 16.6249 1.31774 16.7331C1.04096 16.7055 0.767266 16.6015 0.570449 16.4041L0.569834 16.4047ZM6.45282 8.55416H1.31712L1.22487 8.64642V15.658L1.31712 15.7503H6.36056L6.45282 15.658V8.55416Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M0.569817 1.31896C0.790622 1.09816 1.06924 1.01328 1.37615 0.986832C2.9673 0.84906 4.75034 1.09631 6.36301 0.986832C6.87658 1.01266 7.37477 1.42229 7.43812 1.9414C7.52177 2.6278 7.51562 4.57075 7.43689 5.26453C7.38338 5.73566 6.95592 6.16435 6.48356 6.21786C4.84444 6.40422 2.86827 6.07702 1.19225 6.21909C0.643624 6.11884 0.286893 5.69261 0.237688 5.14398C0.170648 4.38377 0.165112 2.81969 0.241379 2.06625C0.269056 1.78948 0.373 1.51578 0.570432 1.31896H0.569817ZM6.45281 5.23316V2.06564L6.36055 1.97338H1.31711L1.22485 2.06564V5.1409L1.31711 5.23316H6.45281Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M15.6565 16.4046C15.4357 16.6254 15.1571 16.7097 14.8502 16.7361C13.259 16.8739 11.476 16.6267 9.86333 16.7361C9.34976 16.7103 8.85156 16.3007 8.78821 15.7816C8.70456 15.0952 8.71072 13.1522 8.78944 12.4584C8.84295 11.9873 9.27041 11.5586 9.74278 11.5051C11.3819 11.3187 13.3581 11.6459 15.0341 11.5039C15.5827 11.6041 15.9394 12.0304 15.9886 12.579C16.0563 13.3386 16.0618 14.9027 15.9856 15.6561C15.9579 15.9329 15.8539 16.2066 15.6565 16.4034V16.4046ZM9.77414 12.4904V15.6579L9.8664 15.7502H14.9098L15.0021 15.6579V12.5827L14.9098 12.4904H9.77414Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_299_1698\">\n <rect width=\"15.8555\" height=\"15.8401\" fill=\"white\" transform=\"translate(0.185425 0.94165)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const DataEntryIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 17 16\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M1.53951 2.28617V14.6382H13.0515V6.70508C13.0515 6.67198 13.1786 6.49545 13.2227 6.46786C13.4106 6.36304 13.6702 6.42924 13.7696 6.62233V15.1898C13.6978 15.3112 13.5873 15.3995 13.4437 15.3884H1.1473C0.99263 15.3995 0.871102 15.2947 0.810339 15.1623L0.793766 1.88896C0.782718 1.72346 0.887674 1.62416 1.0313 1.56347L11.1292 1.53589C11.4274 1.55796 11.5766 1.87793 11.4219 2.1317C11.3998 2.17031 11.2673 2.28617 11.2396 2.28617H1.53951Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.50619 8.27946C8.39018 8.16361 8.40676 7.99259 8.43438 7.84364C8.56695 7.13749 9.04754 6.26585 9.24088 5.54867L14.6047 0.191906C14.7207 0.125705 14.9251 0.136739 15.0355 0.213973L16.5878 1.76418C16.6651 1.87451 16.6596 2.01795 16.6265 2.13932L11.2792 7.51263C11.0914 7.65055 9.22431 8.30153 8.94811 8.3567C8.79896 8.38428 8.62772 8.40635 8.51171 8.28498L8.50619 8.27946ZM14.798 1.05804C14.7096 1.15182 14.1296 1.67591 14.1407 1.74211L15.0853 2.65789L15.7426 2.00692L14.798 1.05804ZM9.39003 7.39678L10.8649 6.87269L14.5439 3.19853L13.5938 2.28275L9.9148 5.92381L9.39003 7.39678Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M11.2225 8.49784C11.2943 8.17786 11.8633 8.12821 11.9517 8.51439C11.9903 8.67989 11.9959 9.51292 11.9572 9.68394C11.9241 9.84392 11.797 9.93771 11.6479 9.97081H2.90891C2.699 9.92667 2.64376 9.77772 2.62718 9.58464C2.57194 8.97228 2.67138 8.26613 2.62718 7.64274C2.66033 7.4331 2.89786 7.32829 3.0912 7.32277C4.38934 7.4331 5.93053 7.17933 7.20105 7.32829C7.83078 7.40552 7.67059 8.10615 7.20105 8.10615H3.37292V9.22605H11.2225C11.2557 9.01641 11.1783 8.69092 11.2225 8.49784Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.37375 4.52249V5.68101H7.83714C7.88133 5.68101 8.03048 5.82445 8.05258 5.87961C8.15753 6.14442 8.036 6.37061 7.7598 6.42577L2.88212 6.40922C2.72192 6.33751 2.63906 6.25475 2.62249 6.0727C2.57278 5.65343 2.57278 4.55008 2.62249 4.13081C2.64459 3.94875 2.72192 3.85497 2.89317 3.7998L9.06899 3.77222C9.38938 3.77773 9.58824 4.16391 9.36728 4.40664C9.34519 4.42871 9.19052 4.52249 9.18499 4.52249H3.37375Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.5488 10.9841C4.65349 11.0392 5.89075 10.8792 6.97887 10.973C8.34869 11.0889 8.38183 13.2296 7.05068 13.4337C5.95703 13.3675 4.73082 13.5386 3.65375 13.4393C2.31154 13.3179 2.26183 11.2379 3.55432 10.9841H3.5488ZM3.65927 11.7344C3.2671 11.8227 3.25053 12.573 3.65927 12.6889L6.94021 12.6999C7.38209 12.6613 7.39313 11.8117 6.96782 11.7344H3.65927Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst DecreaseIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 9 4\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <rect x=\"0.572754\" y=\"0.441406\" width=\"7.57659\" height=\"2.75347\" fill=\"currentColor\" />\n </svg>\n);\n\nexport default DecreaseIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiDotsVerticalIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 25 25\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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=\"currentColor\" d=\"M.504.405h24v24h-24z\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default SuiDotsVerticalIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiEmptyDataIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 184 152\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\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);\n\nexport default SuiEmptyDataIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiExpandIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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=\"currentColor\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default SuiExpandIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiFilterIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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=\"currentColor\" d=\"M24-.001H0v24h24z\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default SuiFilterIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst FiltersIcon: React.FC<IconProps> = ({ size = \"1em\", className, strokeWidth = 1.5, ...props }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M10 18H14\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M11 6H3\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 6H21\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 9V3\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7 12H15\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport default FiltersIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const HamburgerMenuIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n fill=\"currentColor\"\n viewBox=\"0 0 15 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11H13.5C13.7761 11 14 11.2239 14 11.5C14 11.7761 13.7761 12 13.5 12H1.5C1.22386 12 1 11.7761 1 11.5Z\"\n fill=\"currentColor\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const HandymanIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 128 128\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_10094_215884)\">\n <path\n d=\"M115.573 96.9068L87.3067 68.6401H82.0266L68.48 82.1868V87.4668L96.7466 115.733C98.8266 117.813 102.187 117.813 104.267 115.733L115.573 104.427C117.653 102.4 117.653 98.9868 115.573 96.9068Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M92.48 54.3468L100 46.8268L111.307 58.1335C117.547 51.8935 117.547 41.7602 111.307 35.5202L92.4266 16.6402L84.9066 24.1602V9.12016L81.1733 5.3335L62.2933 24.2135L66.08 28.0002H81.1733L73.6533 35.5202L79.3066 41.1735L63.8933 56.5868L41.8666 34.5602V26.9868L25.76 10.8802L10.6666 25.9735L26.8266 42.1335H34.3466L56.3733 64.1602L51.84 68.6935H40.5333L12.2666 96.9602C10.1866 99.0402 10.1866 102.4 12.2666 104.48L23.5733 115.787C25.6533 117.867 29.0133 117.867 31.0933 115.787L59.36 87.5202V76.2135L86.8266 48.7468L92.48 54.3468Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10094_215884\">\n <rect width=\"128\" height=\"128\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst InformationIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 34 34\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_789_42722)\">\n <path\n d=\"M16.7158 33.4883C7.61916 33.4883 0.21582 26.0849 0.21582 16.9883C0.21582 7.89162 7.61916 0.488281 16.7158 0.488281C25.8125 0.488281 33.2158 7.89162 33.2158 16.9883C33.2158 26.0849 25.8125 33.4883 16.7158 33.4883ZM16.7158 1.80093C8.34112 1.80093 1.52847 8.61358 1.52847 16.9883C1.52847 25.363 8.34112 32.1756 16.7158 32.1756C25.0905 32.1756 31.9032 25.363 31.9032 16.9883C31.9032 8.61358 25.0905 1.80093 16.7158 1.80093Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M18.9999 21.0838H13.5393V20.5325C13.5393 19.6005 13.6443 18.8523 13.8543 18.2747C14.0643 17.6972 14.3794 17.1721 14.7994 16.6864C15.2195 16.2139 16.1514 15.3606 17.6085 14.153C18.3829 13.5229 18.7767 12.9454 18.7767 12.4203C18.7767 11.8952 18.6192 11.4883 18.3042 11.1864C17.9892 10.8845 17.5166 10.7532 16.8865 10.7532C16.204 10.7532 15.6395 10.9764 15.1932 11.4227C14.7469 11.869 14.4581 12.6566 14.34 13.7723L8.76123 13.0766C8.95813 11.0289 9.69321 9.37496 10.9927 8.12794C12.2923 6.88093 14.2744 6.25085 16.9653 6.25085C19.0524 6.25085 20.7457 6.68403 22.019 7.5635C23.7648 8.74489 24.6312 10.3069 24.6312 12.2759C24.6312 13.0898 24.408 13.8773 23.9617 14.6256C23.5154 15.3869 22.5966 16.3057 21.2051 17.3952C20.2338 18.1566 19.63 18.7735 19.3674 19.2461C19.118 19.7055 18.9868 20.3225 18.9868 21.0575L18.9999 21.0838ZM13.3555 22.5408H19.2099V27.6995H13.3555V22.5408Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_789_42722\">\n <rect width=\"33\" height=\"33\" fill=\"white\" transform=\"translate(0.21582 0.488281)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default InformationIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const MailIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 28 23\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_654_8264)\">\n <path\n d=\"M24.4 0.789062H3.07C1.38 0.789062 0 2.16906 0 3.85906V19.3791C0 21.0691 1.38 22.4491 3.07 22.4491H24.4C26.09 22.4491 27.47 21.0691 27.47 19.3791V3.85906C27.47 2.16906 26.09 0.789062 24.4 0.789062ZM24.4 2.45906C24.64 2.45906 24.87 2.51906 25.07 2.62906L14.13 13.5691L3.01 2.46906C3.01 2.46906 3.05 2.46906 3.07 2.46906H24.4V2.45906ZM24.4 20.7791H3.07C2.3 20.7791 1.67 20.1491 1.67 19.3791V3.85906C1.67 3.74906 1.68 3.63906 1.71 3.53906L14.12 15.9491L25.79 4.26906V19.3791C25.79 20.1491 25.16 20.7791 24.39 20.7791H24.4Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_654_8264\">\n <rect width=\"27.47\" height=\"21.66\" fill=\"white\" transform=\"translate(0 0.789062)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const ManIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 128 128\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_10094_215893)\">\n <path\n d=\"M64 31.9998C58.1334 31.9998 53.3334 27.1998 53.3334 21.3332C53.3334 15.4665 58.1334 10.6665 64 10.6665C69.8667 10.6665 74.6667 15.4665 74.6667 21.3332C74.6667 27.1998 69.8667 31.9998 64 31.9998ZM90.6667 10.6665H101.333V12.7998C100.8 24.5332 97.0667 33.5998 89.0667 39.9998C86.4 42.1332 83.2 43.7332 80 44.7998V117.333H69.3334V85.3332H58.6667V117.333H48V53.8665C46.4 54.3998 45.3334 54.9332 44.8 55.4665C40 59.1998 37.3867 63.9998 37.3334 71.9998V74.6665H26.6667V71.9998C26.6667 61.3332 30.4534 52.8532 37.92 46.4532C43.7867 41.6532 53.3334 37.3332 64 37.3332C74.6667 37.3332 78.2934 34.8798 82.56 31.6798C87.8934 27.4132 90.6667 21.3332 90.6667 13.3332V10.6665ZM21.3334 85.3332H37.3334V117.333H21.3334V85.3332Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10094_215893\">\n <rect width=\"128\" height=\"128\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const ManagementIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M6.20251 3.20437H6.68705V1.86063C6.68705 1.86063 6.76697 1.66082 6.78695 1.63085C6.92183 1.41106 7.13662 1.29117 7.39638 1.27119C8.36546 1.19626 9.43945 1.32614 10.4185 1.27119C10.6533 1.27119 11.0429 1.64084 11.0429 1.86063V3.20437H12.042C12.2218 2.07044 13.5755 1.62086 14.4397 2.35517L14.9892 1.84065L15.3089 2.16035L14.7394 2.76478C15.6636 4.80286 12.5365 5.86186 12.042 3.68891H11.0429V5.03264C11.0429 5.22746 10.6533 5.62208 10.4535 5.62208H9.10976V7.0907C10.0739 7.43038 10.0739 8.65922 9.10976 8.9939V11.1868H10.0788V9.35856C10.0788 9.13877 10.4685 8.77411 10.7033 8.77411C11.997 8.85903 13.4507 8.65422 14.7245 8.77411C15.1091 8.80908 15.3739 9.1038 15.4038 9.48344C15.5037 10.7572 15.3289 12.1559 15.4038 13.4447C15.3539 13.7944 15.0791 14.0641 14.7245 14.0941C13.4557 14.209 12.017 14.0042 10.7332 14.0941C10.4885 14.1041 10.0838 13.7294 10.0838 13.5046V11.6764H8.63521V8.9989C7.67112 8.65922 7.67112 7.43038 8.63521 7.09569V5.62708H7.29148C7.09167 5.62708 6.70203 5.23245 6.70203 5.03764V3.6939H6.21749L6.20251 4.1185C6.03766 4.21341 5.56311 4.20342 5.52315 4.41323C5.49317 4.56308 5.85783 4.93773 5.80788 5.05262L4.92871 5.93179C4.90373 5.96176 4.88375 5.95677 4.85378 5.94678C4.68394 5.90682 4.28931 5.4972 4.14445 5.74697C4.09449 5.83688 4.02456 6.30144 3.9796 6.33641L3.555 6.3514V10.2227H5.62805C5.62805 10.2227 5.83785 10.3027 5.86782 10.3177C6.02767 10.4126 6.19251 10.6623 6.21749 10.8472C6.13257 12.1409 6.33738 13.5946 6.21749 14.8684C6.18252 15.253 5.8878 15.5177 5.50816 15.5477C4.07951 15.6576 2.50599 15.4628 1.06236 15.5477C0.712686 15.4978 0.44294 15.223 0.412968 14.8684C0.298077 13.5996 0.502883 12.1609 0.412968 10.8771C0.402978 10.6324 0.777624 10.2277 1.00241 10.2277H3.07546V6.35639L2.65086 6.34141C2.55595 6.17656 2.56594 5.70201 2.35613 5.66205C2.20628 5.63208 1.83163 5.99673 1.71674 5.94678L0.812591 5.03264C0.79261 4.94273 1.1173 4.55309 1.11231 4.4382C1.10232 4.17345 0.457926 4.21341 0.417964 4.09852C0.447935 3.71389 0.368011 3.23434 0.412968 2.85969C0.412968 2.82472 0.412968 2.79475 0.44294 2.76978C0.507879 2.71982 0.887521 2.67986 0.997417 2.62491C1.30213 2.48505 0.857549 2.09042 0.812591 1.91558C0.802601 1.88062 0.812591 1.85564 0.837568 1.83066L1.73672 0.941503C1.93653 0.961484 2.35114 1.43104 2.496 1.12633C2.54096 1.03142 2.6009 0.571851 2.67583 0.546875H3.96961C4.05453 0.576847 4.09449 1.10135 4.18441 1.18128C4.37923 1.35611 4.69892 0.966479 4.90373 0.941503L5.80288 1.83066C5.82786 1.85564 5.83785 1.88062 5.82786 1.91558C5.7829 2.08542 5.3633 2.47006 5.62305 2.61492C5.71297 2.66488 6.17753 2.73481 6.2125 2.77977L6.22748 3.20437H6.20251ZM3.59996 1.03142H3.00552L2.86565 1.54094L2.31617 1.77571C2.16631 1.78571 1.89157 1.49598 1.76669 1.55093C1.74171 1.56092 1.41203 1.8956 1.40703 1.92058C1.38205 2.02548 1.63182 2.30022 1.64181 2.4301L1.41702 2.98957L0.887521 3.15941V3.73886L1.40203 3.87873L1.63681 4.42821C1.6468 4.57807 1.35708 4.85281 1.41203 4.97769C1.42202 5.00267 1.7567 5.33236 1.78168 5.33735C1.88658 5.36233 2.16132 5.11257 2.2912 5.10257L2.85067 5.32736L3.02051 5.85686H3.59996L3.73983 5.34235L4.28931 5.10757C4.43917 5.09758 4.71391 5.38731 4.83879 5.33236C4.86377 5.32237 5.19346 4.98768 5.19845 4.96271C5.22343 4.85781 4.97366 4.58307 4.96367 4.45319L5.18846 3.89372L5.71796 3.72388V3.14442L5.20345 3.00456L4.96867 2.45507C4.95868 2.30522 5.24841 2.03047 5.19346 1.90559C5.18347 1.88062 4.84878 1.55093 4.82381 1.54593C4.71891 1.52096 4.44416 1.77072 4.31429 1.78071L3.75481 1.55592L3.59996 1.03142ZM10.5584 2.24028C10.5584 2.04546 10.6034 1.80569 10.3586 1.76073C9.41448 1.82067 8.35547 1.67081 7.42635 1.76073C7.12164 1.7907 7.16659 2.0005 7.17159 2.24527H10.5584V2.24028ZM13.3308 2.49004C12.3217 2.60993 12.1919 4.06356 13.1559 4.36827C13.9002 4.60305 14.6595 3.88373 14.3498 3.14442L13.5056 3.99362C13.4806 4.02359 13.4657 4.02859 13.4307 4.00861C13.3957 3.98863 12.8862 3.47911 12.8562 3.43415C12.7763 3.30927 13.051 3.12444 13.146 3.05451L13.4756 3.32425L14.0701 2.70983C13.8853 2.53 13.5955 2.46007 13.3408 2.49004H13.3308ZM10.5584 2.71982H7.17159V4.9727C7.17159 5.02765 7.32145 5.15752 7.39638 5.13754C8.3305 5.0726 9.37951 5.22246 10.2986 5.13754C10.3836 5.12755 10.5534 5.06761 10.5534 4.9677V2.71483L10.5584 2.71982ZM8.76509 7.56525C8.18563 7.67015 8.28554 8.62925 8.9649 8.51935C9.55434 8.42444 9.43446 7.44536 8.76509 7.56525ZM14.9093 9.7332C14.9093 9.53839 14.9542 9.29861 14.7095 9.25366L10.6833 9.27364C10.5034 9.36855 10.5634 9.56836 10.5534 9.7332H14.9043H14.9093ZM14.9093 10.2177H10.5584V13.4397C10.5584 13.4947 10.7083 13.6245 10.7832 13.6046C12.032 13.5196 13.4257 13.7144 14.6545 13.6046C14.7395 13.5946 14.9093 13.5346 14.9093 13.4347V10.2128V10.2177ZM5.71796 11.1868C5.71796 10.992 5.76292 10.7522 5.51815 10.7073L1.00741 10.7273C0.827577 10.8222 0.887521 11.022 0.87753 11.1868H5.71297H5.71796ZM5.71796 11.6714H0.882525V14.8933C0.882525 14.9483 1.03238 15.0782 1.10731 15.0582H5.4632C5.54313 15.0882 5.71796 14.9583 5.71796 14.8933V11.6714Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.30109 12.156H1.36791V13.6046H3.30109V12.156ZM5.23426 12.156H3.78563V12.6405H5.23426V12.156ZM5.23426 13.1201H3.78563V13.6046H5.23426V13.1201ZM5.23426 14.0892H1.36292V14.5737H5.23426V14.0892Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12.4916 10.7012H11.043V12.1498H12.4916V10.7012ZM14.4248 10.7012H12.9761V11.1857H14.4248V10.7012ZM14.4248 11.6703H12.9761V12.1548H14.4248V11.6703ZM14.4248 12.6343H11.038V13.1189H14.4248V12.6343Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.1364 3.20459H7.65186V3.68913H8.1364V3.20459ZM10.0746 3.20459H8.62594V3.68913H10.0746V3.20459ZM10.0746 4.17368H7.65685V4.65822H10.0746V4.17368Z\"\n fill=\"currentColor\"\n />\n <path d=\"M3.29914 12.156V13.6046H1.36597V12.156H3.29914Z\" fill=\"currentColor\" />\n <path d=\"M5.23306 12.156H3.78442V12.6405H5.23306V12.156Z\" fill=\"currentColor\" />\n <path d=\"M5.23306 13.1206H3.78442V13.6051H5.23306V13.1206Z\" fill=\"currentColor\" />\n <path d=\"M12.4906 10.7012V12.1498H11.042V10.7012H12.4906Z\" fill=\"currentColor\" />\n <path d=\"M14.4248 12.6304H11.038V13.1149H14.4248V12.6304Z\" fill=\"currentColor\" />\n <path d=\"M14.4248 10.7012H12.9762V11.1857H14.4248V10.7012Z\" fill=\"currentColor\" />\n <path d=\"M14.4248 11.6697H12.9762V12.1542H14.4248V11.6697Z\" fill=\"currentColor\" />\n <path\n d=\"M3.1095 2.0025C4.88283 1.7877 5.39235 4.35029 3.70894 4.83483C1.69584 5.41428 1.10639 2.24227 3.1095 2.0025ZM3.17444 2.48704C1.97557 2.62691 2.11044 4.49015 3.37925 4.41023C4.64805 4.3303 4.51817 2.32719 3.17444 2.48704Z\"\n fill=\"currentColor\"\n />\n <path d=\"M10.0746 4.17114H7.65686V4.65569H10.0746V4.17114Z\" fill=\"currentColor\" />\n <path d=\"M10.068 3.20459H8.61938V3.68913H10.068V3.20459Z\" fill=\"currentColor\" />\n <path d=\"M8.1414 3.20459H7.65686V3.68913H8.1414V3.20459Z\" fill=\"currentColor\" />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const MenuIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 35 41\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M8.24469 6.74825H8.18469L7.52469 8.10425L5.68869 11.4522L3.85269 8.10425L3.19269 6.74825H3.13269V13.1562H1.83669V4.78025H3.44469L5.68869 9.04025H5.76069L8.00469 4.78025H9.54069V13.1562H8.24469V6.74825ZM11.6101 13.1562V4.78025H16.9741V5.98025H12.9661V8.30825H16.6021V9.50825H12.9661V11.9562H16.9741V13.1562H11.6101ZM20.9794 8.52425L20.0554 6.74825H20.0194V13.1562H18.7234V4.78025H20.2354L22.9714 9.41225L23.8954 11.1882H23.9314V4.78025H25.2274V13.1562H23.7154L20.9794 8.52425ZM28.5738 4.78025V9.94025C28.5738 10.6522 28.7098 11.1882 28.9818 11.5482C29.2538 11.9082 29.7178 12.0882 30.3738 12.0882C31.0298 12.0882 31.4938 11.9082 31.7658 11.5482C32.0378 11.1882 32.1738 10.6522 32.1738 9.94025V4.78025H33.5058V9.72425C33.5058 10.3402 33.4498 10.8722 33.3378 11.3202C33.2258 11.7682 33.0458 12.1402 32.7978 12.4362C32.5498 12.7242 32.2258 12.9402 31.8258 13.0842C31.4338 13.2283 30.9498 13.3003 30.3738 13.3003C29.7978 13.3003 29.3098 13.2283 28.9098 13.0842C28.5178 12.9402 28.1978 12.7242 27.9498 12.4362C27.7018 12.1402 27.5218 11.7682 27.4098 11.3202C27.2978 10.8722 27.2418 10.3402 27.2418 9.72425V4.78025H28.5738Z\"\n fill=\"currentColor\"\n />\n <rect x=\"1.125\" y=\"20.4902\" width=\"33.6797\" height=\"4.5\" fill=\"currentColor\" />\n <rect x=\"1.125\" y=\"28.3242\" width=\"33.6797\" height=\"4.5\" fill=\"currentColor\" />\n <rect x=\"1.125\" y=\"36.1582\" width=\"33.6797\" height=\"4.5\" fill=\"currentColor\" />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst NotFoundIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 106 100\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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 React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst PlusIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 9 9\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M3.12305 8.23047L3.12305 0.653882L5.87652 0.653882L5.87652 8.23047L3.12305 8.23047Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.12305 8.23047L3.12305 0.653882L5.87652 0.653882L5.87652 8.23047L3.12305 8.23047Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M0.710938 3.06641L8.28752 3.06641V5.81988L0.710937 5.81988L0.710938 3.06641Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M0.710938 3.06641L8.28752 3.06641V5.81988L0.710937 5.81988L0.710938 3.06641Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default PlusIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const PowerIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 31 30\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_654_8292)\">\n <path\n d=\"M15.5039 30.0076C24.0665 30.0076 31.0078 23.2901 31.0078 15.0038C31.0078 6.71742 24.0665 0 15.5039 0C6.94134 0 0 6.71742 0 15.0038C0 23.2901 6.94134 30.0076 15.5039 30.0076Z\"\n fill=\"#40875D\"\n />\n <path\n d=\"M15.59 5.06201H15.418C15.0596 5.06201 14.769 5.34317 14.769 5.69001V14.9737C14.769 15.3206 15.0596 15.6017 15.418 15.6017H15.59C15.9484 15.6017 16.2389 15.3206 16.2389 14.9737V5.69001C16.2389 5.34317 15.9484 5.06201 15.59 5.06201Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M19.2176 7.18043C18.8501 7.02911 18.4201 7.19556 18.2637 7.55118C18.1073 7.90679 18.2793 8.32293 18.6468 8.47425C21.6491 9.70754 23.5959 12.5373 23.5959 15.6924C23.5959 20.0127 19.9603 23.531 15.496 23.531C11.0317 23.531 7.39612 20.0127 7.39612 15.6924C7.39612 12.56 9.31163 9.73781 12.2826 8.49695C12.6501 8.34563 12.8221 7.92949 12.6579 7.57387C12.5015 7.21826 12.0715 7.05181 11.7041 7.2107C8.20142 8.67854 5.94189 12.0077 5.94189 15.7C5.94189 20.7996 10.2264 24.9459 15.496 24.9459C20.7656 24.9459 25.0501 20.7996 25.0501 15.7C25.0501 11.9774 22.7593 8.63314 19.2176 7.18043Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_654_8292\">\n <rect width=\"31\" height=\"30\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const QuestionIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 10 14\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M6.14532 9.06808H2.87018V8.73491C2.87018 8.16272 2.93412 7.70642 3.062 7.35152C3.18988 6.99662 3.3746 6.67069 3.62325 6.38098C3.87191 6.09126 4.43316 5.56977 5.307 4.831C5.77589 4.44713 6.00323 4.09223 6.00323 3.7663C6.00323 3.44037 5.91087 3.19411 5.72616 3.01304C5.54144 2.83197 5.25727 2.74505 4.87363 2.74505C4.46868 2.74505 4.12766 2.88267 3.8577 3.1579C3.58773 3.43312 3.41722 3.91115 3.34618 4.59923L0 4.17914C0.113671 2.92612 0.561248 1.91212 1.34273 1.15162C2.12422 0.383873 3.31776 0 4.93046 0C6.18084 0 7.19677 0.267987 7.96405 0.796717C9.0084 1.521 9.53412 2.47706 9.53412 3.67938C9.53412 4.17914 9.39914 4.65717 9.12917 5.12072C8.85921 5.58426 8.30506 6.1492 7.47384 6.81555C6.89128 7.28634 6.52896 7.66297 6.37266 7.94544C6.22347 8.22791 6.14532 8.5973 6.14532 9.06084V9.06808ZM2.75651 9.95896H6.26609V13.1169H2.75651V9.95896Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst RoleIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 30 31\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_8249_21508)\">\n <path\n d=\"M28.1017 30.1367H1.89833C0.852141 30.1367 0 29.2846 0 28.2384V2.03505C0 0.98886 0.852141 0.136719 1.89833 0.136719H28.1017C29.1479 0.136719 30 0.98886 30 2.03505V28.2384C30 29.2846 29.1479 30.1367 28.1017 30.1367ZM2.10926 28.0275H27.8907V2.24598H2.10926V28.0275Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.63326 12.0173C8.90535 12.1649 9.20276 12.167 9.49172 12.0552L13.1471 8.87026C13.493 8.38092 13.0058 7.70595 12.3624 7.72704C12.2612 7.73126 12.1325 7.77345 12.0292 7.79454L9.1226 10.2582C8.97074 10.2814 8.11438 9.29844 7.75791 9.21618C6.88679 9.0158 6.22237 9.77303 6.78976 10.4164C6.98381 10.6357 8.416 11.9013 8.63536 12.0194L8.63326 12.0173Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.63326 22.4313C8.90535 22.579 9.20276 22.5811 9.49172 22.4693L13.1471 19.2843C13.493 18.795 13.0058 18.12 12.3624 18.1411C12.2612 18.1453 12.1325 18.1875 12.0292 18.2086L9.1226 20.6722C8.97074 20.6954 8.11438 19.7125 7.75791 19.6302C6.88679 19.4299 6.22237 20.1871 6.78976 20.8304C6.98381 21.0498 8.416 22.3153 8.63536 22.4335L8.63326 22.4313Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M22.5775 9.00586H15.3322C14.8663 9.00586 14.4885 9.3836 14.4885 9.84956V10.5688C14.4885 11.0348 14.8663 11.4125 15.3322 11.4125H22.5775C23.0435 11.4125 23.4212 11.0348 23.4212 10.5688V9.84956C23.4212 9.3836 23.0435 9.00586 22.5775 9.00586Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M22.5775 19.2715H15.3322C14.8663 19.2715 14.4885 19.6492 14.4885 20.1152V20.8344C14.4885 21.3004 14.8663 21.6781 15.3322 21.6781H22.5775C23.0435 21.6781 23.4212 21.3004 23.4212 20.8344V20.1152C23.4212 19.6492 23.0435 19.2715 22.5775 19.2715Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M22.5775 14.1387H15.3322C14.8663 14.1387 14.4885 14.5164 14.4885 14.9824V15.7016C14.4885 16.1676 14.8663 16.5453 15.3322 16.5453H22.5775C23.0435 16.5453 23.4212 16.1676 23.4212 15.7016V14.9824C23.4212 14.5164 23.0435 14.1387 22.5775 14.1387Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_8249_21508\">\n <rect width=\"30\" height=\"30\" fill=\"currentColor\" transform=\"translate(0 0.136719)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default RoleIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiSettingIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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);\n\nexport default SuiSettingIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const SetupIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 19 19\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_299_1775)\">\n <path\n d=\"M16.1936 8.73725H16.7593V1.32331C16.7593 1.29268 16.4991 0.859674 16.4411 0.801198C16.2714 0.629946 15.9066 0.478882 15.6634 0.453125L1.3584 0.501159C0.938418 0.608365 0.522675 1.09845 0.496515 1.53215L0.545301 13.8762C0.574289 14.1999 1.24598 14.7241 1.52244 14.7241H7.95656C8.1213 14.5849 8.1213 14.2368 7.95656 14.0976H1.45173C1.19861 14.0976 1.07417 13.4307 1.06003 13.2302C0.789939 9.56288 1.27073 5.57815 1.06003 1.87744C1.07346 1.50848 1.21912 1.06852 1.6589 1.07478L15.5955 1.07618C15.8281 0.992638 16.1929 1.36438 16.1929 1.53215V8.73725H16.1936Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M9.74963 12.3481C9.43924 12.4275 8.71169 12.1755 8.62967 12.6029C8.58654 12.8306 8.60563 14.4728 8.6926 14.6085C8.82694 14.818 9.51206 14.6774 9.74751 14.7359C9.77155 14.7505 9.9568 15.2128 9.9575 15.2601C9.96033 15.5024 9.24622 15.7899 9.34449 16.1365C9.37207 16.234 10.7006 17.5379 10.7989 17.5664C11.1871 17.6806 11.4105 17.1432 11.7018 16.9719L12.2236 17.1703L12.3494 18.2111C12.4767 18.3002 14.3362 18.3169 14.496 18.2403C14.5823 18.1992 14.6184 18.1171 14.6353 18.0294C14.747 17.4404 14.3638 17.187 15.2391 16.9719C15.5425 17.1501 15.7758 17.7328 16.1915 17.5428C16.2827 17.501 17.5696 16.2312 17.5971 16.1365C17.694 15.7947 17.0414 15.5379 16.9799 15.3019C16.9622 15.2336 17.1057 14.8431 17.1475 14.7944C17.3461 14.5577 18.1642 15.0011 18.2992 14.3969C18.3516 14.1651 18.3459 12.6899 18.2625 12.5138C18.1182 12.2089 17.4833 12.4289 17.1948 12.3467C16.6766 11.5872 17.3886 11.6095 17.6028 11.0011C17.6028 10.7386 16.3718 9.6262 16.0713 9.44381C15.4513 9.67354 15.4718 10.3732 14.6502 9.84131L14.629 8.9224C14.537 8.65577 12.6719 8.68153 12.4251 8.82215C12.0914 9.0115 12.3134 9.5531 12.2024 9.85593C12.1847 9.88099 11.805 10.0453 11.7569 10.0515C11.3709 10.1045 11.209 9.20503 10.6829 9.54405C10.5486 9.63038 9.3756 10.7881 9.34803 10.8779C9.23066 11.2628 9.78852 11.4856 9.96104 11.778L9.75034 12.3502L9.74963 12.3481ZM12.8705 9.36375H14.0725C14.1171 9.6979 13.9297 10.1149 14.2592 10.3286C14.3214 10.369 15.2533 10.7505 15.3105 10.7512C15.6103 10.7519 15.9158 10.1762 16.0784 10.204L16.8328 10.9997L16.2665 11.6938C16.4369 11.9339 16.6327 12.8278 16.8795 12.9002L17.6792 12.9134V14.0968C17.344 14.1268 16.8823 13.9715 16.6737 14.3252C16.6306 14.3983 16.2707 15.2622 16.2707 15.3158C16.27 15.5755 16.6907 15.8142 16.8265 16.021L16.0183 16.88C15.8373 16.754 15.5821 16.351 15.3777 16.3224C15.3014 16.312 14.3002 16.6552 14.2182 16.7109C13.9516 16.8919 14.1149 17.3639 14.0732 17.6472H12.8712C12.8444 17.407 12.9554 16.9002 12.7503 16.738C12.6655 16.6712 11.6629 16.3085 11.5667 16.3224C11.3624 16.351 11.1079 16.754 10.9262 16.88L10.118 16.021L10.6518 15.3151C10.234 14.5549 10.4291 13.8915 9.2646 14.0968V12.9134C10.393 13.1229 10.3054 12.4908 10.6511 11.6938L10.0438 10.999L10.9163 10.2033C11.1263 10.3363 11.3688 10.7512 11.6325 10.7505C11.7492 10.7505 12.8168 10.2792 12.8564 10.1504L12.8698 9.36306L12.8705 9.36375Z\"\n fill=\"currentColor\"\n />\n <path d=\"M1.69927 2.82007H15.5574V3.4466H1.69927V2.82007Z\" fill=\"currentColor\" />\n <path\n d=\"M1.78769 7.81547C1.92769 7.87116 2.07617 7.89274 2.22748 7.90458C3.06391 7.96793 4.5876 7.97976 5.41484 7.90458C5.8221 7.86768 5.90836 7.77718 5.94512 7.38247C6.0031 6.75942 6.01512 5.34276 5.943 4.73294C5.93028 4.62364 5.91684 4.506 5.83482 4.42176C5.64746 4.23102 4.50841 4.24703 4.2164 4.2881C3.71652 4.35772 3.60268 4.81926 3.34673 4.89375C2.81574 5.04899 1.76578 4.5777 1.69578 5.28707C1.64063 5.84677 1.65477 6.88124 1.69719 7.45208C1.70639 7.57809 1.70851 7.70896 1.7884 7.81547H1.78769ZM2.33566 5.5349H3.43158C3.68258 5.5349 4.1563 4.90837 4.20933 4.90837H5.30525V7.27526H2.33566V5.5349Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M1.78701 9.72855C1.70711 9.83715 1.70782 9.96455 1.69651 10.0919C1.64914 10.6461 1.64984 11.6318 1.69651 12.1866C1.72903 12.5758 1.76438 12.6064 2.15609 12.6391C3.02858 12.7108 4.61236 12.7101 5.48557 12.6391C5.88081 12.6071 5.91192 12.5723 5.94515 12.1866C6.00312 11.5002 6.00737 10.2179 5.94515 9.53502C5.93101 9.38048 5.92888 9.2315 5.80091 9.12012L4.06935 9.0874C3.81623 9.13474 3.61897 9.56914 3.41675 9.62831C3.06959 9.72994 1.997 9.5211 1.7863 9.72855H1.78701ZM2.33568 10.2688H3.57301L4.28005 9.64223H5.30527V12.0091H2.33568V10.2688Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.59485 4.9948C6.51495 5.1034 6.51566 5.2308 6.50434 5.35819C6.47536 5.69861 6.46263 7.46821 6.55949 7.67635C6.65636 7.8845 6.83807 7.88729 7.03392 7.90539C7.86046 7.97987 9.38485 7.96804 10.2213 7.90539C10.3337 7.89703 10.6243 7.87197 10.6844 7.78843C10.7367 7.68262 10.7431 7.56915 10.7516 7.45289C10.8004 6.78947 10.8371 5.28649 10.7516 4.66205C10.6802 4.14063 9.52131 4.22904 9.09284 4.28891C8.59296 4.35853 8.47912 4.82007 8.22317 4.89456C7.87601 4.9962 6.80342 4.78735 6.59272 4.9948H6.59485ZM7.14351 5.53501H8.31014C8.56114 5.53501 9.03486 4.90848 9.08789 4.90848H10.1838V7.27537H7.14351V5.53501Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M15.5574 4.45596C15.481 4.21927 14.0924 4.25338 13.8421 4.29863C13.4157 4.37451 13.2687 4.82561 13.0332 4.89453C12.6981 4.99268 11.5647 4.75808 11.4212 5.04768C11.3596 5.17229 11.3504 7.3199 11.3823 7.59279C11.4162 7.88238 11.5894 7.88308 11.8426 7.90536C12.662 7.97706 14.2847 7.97915 15.1013 7.90536C15.2845 7.88865 15.4301 7.8796 15.5574 7.72784V4.45596ZM11.9514 5.53498H13.1181C13.3691 5.53498 13.8428 4.90845 13.8958 4.90845H14.9917V7.27535H11.9514V5.53498Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.80513 9.08541C8.69483 9.11604 8.39434 9.57828 8.22535 9.62841C7.81597 9.74814 6.76035 9.43836 6.55955 9.86788C6.46693 10.067 6.47188 11.9313 6.50723 12.2543C6.52279 12.3935 6.57864 12.6358 6.7547 12.6358H8.06273L7.99627 12.0399L7.14357 12.0092V10.2689H8.3809C8.54918 10.2689 8.92674 9.70777 9.1028 9.65625C9.25835 9.611 9.80277 9.67018 9.83105 9.64233V9.08472H8.80513V9.08541Z\"\n fill=\"currentColor\"\n />\n <path d=\"M14.9918 1.63647H15.5581V2.2637H14.9918V1.63647Z\" fill=\"white\" />\n <path d=\"M13.7897 1.63647H14.3561V2.2637H13.7897V1.63647Z\" fill=\"white\" />\n <path d=\"M12.5878 1.63647H13.1542V2.2637H12.5878V1.63647Z\" fill=\"white\" />\n <path\n d=\"M12.8706 9.36377L12.8572 10.1511C12.8176 10.2799 11.7499 10.7512 11.6333 10.7512C11.3695 10.7519 11.127 10.3377 10.917 10.204L10.0445 10.9997L10.6519 11.6945C10.3061 12.4915 10.3945 13.1237 9.26538 12.9141V14.0976C10.4299 13.8922 10.2347 14.5556 10.6526 15.3158L10.1188 16.0217L10.9269 16.8807C11.1086 16.7547 11.3632 16.3517 11.5675 16.3231C11.6637 16.3099 12.6663 16.6719 12.7511 16.7387C12.9562 16.9002 12.8452 17.4077 12.872 17.6479H14.074C14.1157 17.3639 13.9524 16.8919 14.2189 16.7116C14.301 16.6559 15.3014 16.3127 15.3785 16.3231C15.5828 16.3517 15.8374 16.7547 16.0191 16.8807L16.8272 16.0217C16.6922 15.8149 16.2708 15.5762 16.2715 15.3165C16.2715 15.2629 16.6314 14.399 16.6745 14.3259C16.8838 13.9729 17.3448 14.1275 17.6799 14.0976V12.9141L16.8803 12.9009C16.6328 12.8278 16.4377 11.9346 16.2673 11.6945L16.8336 11.0004L16.0792 10.2047C15.9166 10.1769 15.6111 10.7526 15.3113 10.7519C15.2548 10.7519 14.3222 10.3697 14.2599 10.3293C13.9305 10.1156 14.1178 9.69862 14.0733 9.36447H12.8713L12.8706 9.36377ZM11.9762 12.0342C13.9863 10.1024 16.9114 13.1271 14.9592 15.006C12.9519 16.9378 10.0064 13.9277 11.9762 12.0342Z\"\n fill=\"white\"\n />\n <path\n d=\"M2.33558 5.53498V7.27534H5.30518V4.90845H4.20925C4.15623 4.90845 3.68251 5.53498 3.4315 5.53498H2.33558Z\"\n fill=\"white\"\n />\n <path d=\"M2.33558 10.2689V12.0092H5.30518V9.64233H4.27996L3.57291 10.2689H2.33558Z\" fill=\"white\" />\n <path\n d=\"M7.14354 5.53498V7.27534H10.1838V4.90845H9.08792C9.03489 4.90845 8.56117 5.53498 8.31017 5.53498H7.14354Z\"\n fill=\"white\"\n />\n <path\n d=\"M11.9514 5.53498V7.27534H14.9917V4.90845H13.8958C13.8427 4.90845 13.369 5.53498 13.118 5.53498H11.9514Z\"\n fill=\"white\"\n />\n <path\n d=\"M11.9762 12.0343C10.0063 13.9271 12.9519 16.9379 14.9592 15.0061C16.9114 13.1272 13.987 10.1025 11.9762 12.0343ZM13.5239 12.028C15.4626 12.0976 15.4195 15.0771 13.4002 15.0075C11.4169 14.9386 11.5654 11.9577 13.5239 12.028Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.524 12.0278C11.5654 11.9575 11.417 14.9384 13.4002 15.0073C15.4196 15.0776 15.4627 12.0975 13.524 12.0278Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_299_1775\">\n <rect\n width=\"17.8359\"\n height=\"17.8359\"\n fill=\"white\"\n transform=\"matrix(-1 0 0 1 18.3333 0.453125)\"\n />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const ToolBoxIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 128 128\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_10094_215896)\">\n <path\n d=\"M96 85.3333H85.3333V80H42.6666V85.3333H32V80H10.6666V106.667H117.333V80H96V85.3333Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M106.667 42.6668H90.6666V32.0002C90.6666 26.1335 85.8666 21.3335 80 21.3335H48C42.1333 21.3335 37.3333 26.1335 37.3333 32.0002V42.6668H21.3333C15.4666 42.6668 10.6666 47.4668 10.6666 53.3335V74.6668H32V64.0002H42.6666V74.6668H85.3333V64.0002H96V74.6668H117.333V53.3335C117.333 47.4668 112.533 42.6668 106.667 42.6668ZM80 42.6668H48V32.0002H80V42.6668Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_10094_215896\">\n <rect width=\"128\" height=\"128\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst TrashIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 17 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_336_302483)\">\n <path\n d=\"M3.49371 2.12043C3.38318 1.44249 3.66212 0.708651 4.43068 0.529533C4.94459 0.409578 7.77168 0.42749 8.38456 0.492081C9.25207 0.583811 9.64966 1.36813 9.5125 2.12097C10.3748 2.22627 11.9484 1.85067 12.6087 2.44664C13.1053 2.89498 13.1452 3.75638 12.64 4.21232C12.2707 4.54558 12.1422 4.28179 12.0664 4.92282C11.7412 7.68938 11.6509 10.4907 11.3494 13.2605C11.2452 13.9135 10.7718 14.3401 10.0646 14.3895C7.73175 14.5534 5.1836 14.2619 2.8276 14.3873C2.09203 14.2587 1.75116 13.8364 1.64178 13.1655L0.878435 4.54558C0.710025 4.38221 0.481427 4.33281 0.310702 4.15532C-0.221151 3.60006 -0.0434807 2.66593 0.639999 2.29358C0.702502 2.25938 0.998811 2.12043 1.03411 2.12043H3.49371ZM4.30394 2.12043H8.70228C8.71964 1.8333 8.70691 1.36813 8.32321 1.30951C7.19122 1.38116 5.90586 1.20367 4.79238 1.30246C4.28831 1.34696 4.29815 1.71931 4.30394 2.12043ZM12.0415 3.0589C12.0172 3.03068 11.8812 2.9574 11.8419 2.94926L1.26329 2.93243C0.749379 2.95794 0.749379 3.72598 1.26329 3.75149H11.7429C12.1029 3.75312 12.2429 3.29338 12.0415 3.0589ZM11.2487 4.56295H1.75753L2.51508 13.1612C2.5608 13.4597 2.68754 13.5498 2.9989 13.5759C5.22817 13.762 7.7468 13.4293 10.0073 13.5759L10.3823 13.4391L11.2487 4.56295Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M4.22952 5.50209C4.41761 5.72137 4.34006 6.27067 4.36263 6.54477C4.51599 8.36961 4.73649 10.3719 4.77121 12.1892C4.78568 12.9404 3.98125 12.8953 3.90254 12.4047C3.84698 10.417 3.54836 8.42443 3.49164 6.43947C3.48586 6.23159 3.45576 5.67469 3.54894 5.52542C3.66411 5.34088 4.08426 5.33274 4.22952 5.50263V5.50209Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M9.43711 5.50146C9.55575 5.63933 9.52045 6.22879 9.51466 6.43776C9.45852 8.42272 9.15932 10.4153 9.10376 12.4029C9.02447 12.8936 8.21946 12.9381 8.23509 12.1875C8.27213 10.3681 8.48973 8.37007 8.64367 6.54306C8.67492 6.17234 8.50941 5.28598 9.18941 5.37771C9.24497 5.38531 9.40412 5.46238 9.43711 5.50092V5.50146Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.83313 5.50252C6.90547 5.58611 6.90142 5.68218 6.91068 5.78314C7.10224 7.89891 6.76253 10.266 6.90837 12.4083C6.88985 12.8822 6.11551 12.8806 6.09814 12.4083L6.15312 5.52478C6.31575 5.34783 6.6734 5.31689 6.83313 5.50252Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3678_200811\">\n <rect width=\"17\" height=\"15\" fill=\"white\" transform=\"translate(0.728516 0.726562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default TrashIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiTriangleDownIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 15\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path fill=\"currentColor\" d=\"m0 0 11.994 15L24 0z\" />\n </svg>\n);\n\nexport default SuiTriangleDownIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst UserAloneIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 16 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_2001_145027)\">\n <path\n d=\"M15.6777 17.4958C15.5882 17.5711 15.3981 17.6249 15.2751 17.6249H0.545811C0.310948 17.5819 0.143189 17.3128 0.109638 17.0976C0.0201661 16.3551 0.0649018 14.5473 0.255029 13.8263C0.691202 12.1368 2.31287 10.8132 4.13585 10.6948C6.66342 10.5334 9.35875 10.8239 11.8975 10.6948C15.3869 11.136 16.2145 14.063 15.8566 17.0438C15.8454 17.173 15.7671 17.4097 15.6665 17.4958H15.6777Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.40161 0.396418C11.1147 0.0305414 13.6982 3.70007 11.7969 6.82078C9.89563 9.94149 5.26548 9.50029 3.87867 6.27196C2.79383 3.74311 4.52734 0.686967 7.40161 0.396418Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2001_145027\">\n <rect width=\"15.87\" height=\"17.25\" fill=\"white\" transform=\"translate(0.0649414 0.375)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default UserAloneIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst UserFriendIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 17 15\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n preserveAspectRatio=\"xMidYMid meet\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_3678_200811)\">\n <path\n d=\"M7.4394 7.51422C8.61928 7.38916 10.0254 7.55139 11.2183 7.54802C12.2462 7.76433 13.0834 8.73098 13.161 9.83283C13.2839 11.5938 13.064 13.5135 13.161 15.2947C13.1384 15.4874 12.9962 15.6395 12.8313 15.7105L5.74231 15.7274C5.50956 15.7172 5.30591 15.5009 5.29621 15.2609C5.39319 13.4933 5.17338 11.587 5.29621 9.83283C5.37703 8.67014 6.32417 7.63251 7.4394 7.51084V7.51422Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.92617 0.740824C11.315 0.507611 12.9895 3.18111 11.7547 5.35777C10.6071 7.37557 7.79155 7.35867 6.67955 5.31383C5.63867 3.40081 6.83148 0.946998 8.92617 0.740824Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M2.04411 15.7226C1.31355 15.6314 0.815737 14.9588 0.770481 14.2219C0.71876 13.3668 0.715527 12.0656 0.770481 11.2138C0.831899 10.2844 1.41053 9.40896 2.22513 9.04055C2.94276 8.71608 3.74443 8.83776 4.50408 8.8141C4.41357 9.20955 4.32629 9.59485 4.30366 10.0038C4.21638 11.7039 4.37155 13.4817 4.30366 15.1886L4.40387 15.7226H2.04087H2.04411Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14.0531 15.7236L14.1533 15.1895C14.0854 13.4827 14.2406 11.7049 14.1533 10.0048C14.1339 9.5958 14.0434 9.21049 13.9529 8.81504C14.7125 8.8387 15.5142 8.71365 16.2318 9.0415C17.0497 9.41329 17.6283 10.2887 17.6865 11.2148C17.7414 12.0665 17.7414 13.3678 17.6865 14.2229C17.6445 14.8887 17.1079 15.7236 16.4129 15.7236H14.0499H14.0531Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M3.77045 3.60682C6.00737 3.34318 7.16139 6.2161 5.44491 7.67284C3.89975 8.98424 1.64019 7.61876 1.8988 5.55364C2.0184 4.58361 2.833 3.71835 3.77045 3.60682Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M14.0789 3.60555C16.5033 3.31826 17.528 6.61366 15.5044 7.86085C13.788 8.91875 11.7321 7.22542 12.2848 5.22114C12.5111 4.39983 13.2546 3.70357 14.0789 3.60555Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3678_200811\">\n <rect width=\"17\" height=\"15\" fill=\"white\" transform=\"translate(0.728516 0.726562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default UserFriendIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst UserIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 31 31\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <g clipPath=\"url(#clip0_6640_79285)\">\n <path\n d=\"M15.5 0.832031C7.22905 0.832031 0.5 7.56108 0.5 15.832C0.5 24.103 7.22905 30.832 15.5 30.832C23.7709 30.832 30.5 24.103 30.5 15.832C30.5 7.56108 23.7709 0.832031 15.5 0.832031ZM15.5 28.7053C8.40089 28.7053 2.62675 22.9311 2.62675 15.832C2.62675 8.73292 8.40089 2.95879 15.5 2.95879C22.5991 2.95879 28.3732 8.73292 28.3732 15.832C28.3732 22.9311 22.5991 28.7053 15.5 28.7053Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M19.5281 15.6953C20.483 14.7489 21.0742 13.4389 21.0742 11.9905C21.0742 9.11304 18.7327 6.77148 15.8552 6.77148C12.9777 6.77148 10.6361 9.11304 10.6361 11.9905C10.6361 13.5154 11.2933 14.8893 12.3397 15.8442C9.37922 17.2543 7.3269 20.2764 7.3269 23.7685C7.3269 24.3555 7.8033 24.8319 8.39028 24.8319C8.97727 24.8319 9.45366 24.3555 9.45366 23.7685C9.45366 20.3848 11.9973 17.586 15.2725 17.1756C15.4639 17.1968 15.6595 17.2096 15.8552 17.2096C16.1274 17.2096 16.3954 17.1883 16.657 17.1479C20.0619 17.4329 22.7459 20.2913 22.7459 23.7685C22.7459 24.3555 23.2223 24.8319 23.8093 24.8319C24.3962 24.8319 24.8726 24.3555 24.8726 23.7685C24.8726 20.1466 22.6672 17.0331 19.5302 15.6953H19.5281ZM12.7629 11.9905C12.7629 10.2849 14.1495 8.89824 15.8552 8.89824C17.5608 8.89824 18.9475 10.2849 18.9475 11.9905C18.9475 13.4644 17.9096 14.6979 16.5272 15.0063C16.3848 14.9999 16.2423 14.9956 16.0976 14.9956C15.8339 14.9956 15.5723 15.0084 15.315 15.0318C13.8667 14.7766 12.7608 13.5112 12.7608 11.9884L12.7629 11.9905Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6640_79285\">\n <rect width=\"30\" height=\"30\" fill=\"currentColor\" transform=\"translate(0.5 0.832031)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default UserIcon;\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nconst SuiWarningIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n className={className}\n aria-hidden\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=\"currentColor\" d=\"M0 0h24v24H0z\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport default SuiWarningIcon;\n","import React from \"react\";\nimport { cn, formatISODate } from \"@/utils\";\nimport { TrashIcon } from \"@/components/icons\";\n\nexport type AuditFooterProps = {\n createdAt?: string | Date | null;\n createdBy?: string | null;\n updatedAt?: string | Date | null;\n updatedBy?: string | null;\n onDelete?: () => void;\n canDelete?: boolean;\n emptyValue?: React.ReactNode;\n labels?: {\n createdOn?: string;\n createdAtTime?: string;\n createdBy?: string;\n updatedOn?: string;\n updatedAtTime?: string;\n updatedBy?: string;\n };\n classNames?: {\n root?: string;\n grid?: string;\n label?: string;\n value?: string;\n deleteButton?: string;\n deleteButtonDisabled?: string;\n };\n formatters?: {\n date?: (value: string | Date) => React.ReactNode;\n time?: (value: string | Date) => React.ReactNode;\n user?: (value?: string | null) => React.ReactNode;\n };\n deleteAriaLabel?: string;\n deleteIcon?: React.ReactNode;\n};\n\nexport const AuditFooter: React.FC<AuditFooterProps> = ({\n createdAt,\n createdBy,\n updatedAt,\n updatedBy,\n onDelete,\n canDelete = true,\n emptyValue = \"-\",\n labels,\n classNames,\n formatters,\n deleteAriaLabel = \"Delete\",\n deleteIcon\n}) => {\n const resolvedLabels = {\n createdOn: \"Created on :\",\n createdAtTime: \"at Time :\",\n createdBy: \"by :\",\n updatedOn: \"Last Update :\",\n updatedAtTime: \"at Time :\",\n updatedBy: \"by :\",\n ...labels\n };\n const dateFormatter =\n formatters?.date ?? ((value: string | Date) => formatISODate(value, \"DD/MM/YYYY\"));\n const timeFormatter = formatters?.time ?? ((value: string | Date) => formatISODate(value, \"H:i\"));\n const userFormatter = formatters?.user ?? ((value?: string | null) => value ?? emptyValue);\n const resolvedDeleteIcon = deleteIcon ?? <TrashIcon className=\"w-5 h-5\" />;\n\n return (\n <div className={cn(\"flex w-full h-14 mt-12 justify-between items-end px-3\", classNames?.root)}>\n <div\n className={cn(\n \"grid grid-cols-[auto_1fr_auto_1fr] gap-x-3 gap-y-1 text-[10px]\",\n classNames?.grid\n )}\n >\n {/* Created */}\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdOn}\n </p>\n <p className={classNames?.value}>{createdAt ? dateFormatter(createdAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdAtTime}\n </p>\n <p className={classNames?.value}>{createdAt ? timeFormatter(createdAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.createdBy}\n </p>\n <p className={cn(\"col-span-3\", classNames?.value)}>{userFormatter(createdBy)}</p>\n\n {/* Updated */}\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedOn}\n </p>\n <p className={classNames?.value}>{updatedAt ? dateFormatter(updatedAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedAtTime}\n </p>\n <p className={classNames?.value}>{updatedAt ? timeFormatter(updatedAt) : emptyValue}</p>\n\n <p className={cn(\"font-bold italic text-[#3B4256]\", classNames?.label)}>\n {resolvedLabels.updatedBy}\n </p>\n <p className={cn(\"col-span-3\", classNames?.value)}>{userFormatter(updatedBy)}</p>\n </div>\n\n {onDelete && (\n <div\n className={\n canDelete ?\n cn(\"w-5 h-5 cursor-pointer text-red-500\", classNames?.deleteButton)\n : cn(\"w-5 h-5 text-gray-300 cursor-not-allowed\", classNames?.deleteButtonDisabled)\n }\n onClick={canDelete ? onDelete : undefined}\n aria-label={deleteAriaLabel}\n role=\"button\"\n >\n {resolvedDeleteIcon}\n </div>\n )}\n </div>\n );\n};\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 data-testid=\"advsearch-icon-close\"\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 data-testid=\"advsearch-icon-search\"\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\"] // removed containsAny from json\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 allowRegex: field.type === \"text\" ? field.allowRegex : undefined\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 allowRegex: r.allowRegex\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 allowRegex: r.allowRegex\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 allowRegex: r.allowRegex\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:bg-[#F0F0F0] 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\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 data-testid=\"advsearch-dropdown-selectfield\"\n >\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","import { ClassValue } from \"clsx\";\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 = {\n decorator?: React.ReactNode;\n labelStyle?: ClassValue;\n value: string;\n label: string;\n};\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 interface TextFieldSchema extends FieldSchemaBase<\"text\"> {\n allowRegex?: RegExp;\n}\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 allowRegex?: RegExp;\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 allowRegex?: RegExp;\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 filterFieldMap?: Record<string, 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 data-testid=\"advsearch-dropdown-cond\"\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\";\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\" | \"prefix\"> &\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 inputProps = rest;\n\n const hasPrefix = Boolean(prefix);\n const hasSuffix = Boolean(suffix) || loading;\n const isFullWidth = fullWidth ?? true;\n\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp\n } = rest;\n\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\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\n {inputElement}\n\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 {inputWithAffixes}\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 const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n if (val !== \"\" && row.allowRegex && !row.allowRegex.test(val)) {\n return;\n }\n field.onChange(val);\n };\n\n return (\n <FormItem className=\"relative\">\n <FormControl>\n <Input\n {...field}\n onChange={handleChange}\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 data-testid=\"advsearch-input-value\"\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 cotton = \"hover:ring-2 active:ring-0 focus-visible:ring-2 text-primary-foreground \";\nconst buttonVariants = cva(\n \"disabled:bg-sus-secondary-gray-5 disabled:text-sus-secondary-gray-8 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 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 cotton +\n \"bg-sus-primary-green-9 hover:bg-sus-primary-green-8 hover:ring-sus-primary-green-8/20 focus-visible:ring-2 focus-visible:bg-sus-primary-green-8 active:bg-sus-primary-green-10 focus-visible:ring-sus-primary-green-10\",\n destructive:\n cotton +\n \"bg-sus-button-red-2 hover:bg-sus-button-red-1 hover:ring-sus-button-red-1/20 focus-visible:ring-2 active:bg-sus-button-red-3 focus-visible:bg-sus-button-red-1 focus-visible:ring-sus-button-red-3\",\n cancel:\n cotton +\n \"bg-sus-button-accent-2 hover:bg-sus-button-accent-1 hover:ring-sus-button-accent-1/20 focus-visible:ring-2 active:bg-sus-button-accent-3 focus-visible:bg-sus-button-accent-1 focus-visible:ring-sus-button-accent-3\",\n warning:\n cotton +\n \"bg-sus-button-yellow-2 hover:bg-sus-button-yellow-1 hover:ring-sus-button-yellow-1/20 focus-visible:ring-2 active:bg-sus-button-yellow-3 focus-visible:bg-sus-button-yellow-1 focus-visible:ring-sus-button-yellow-3\",\n cottonYellowDark:\n cotton +\n \"bg-sus-button-yellowdark-2 hover:bg-sus-button-yellowdark-1 hover:ring-sus-button-yellowdark-1/20 focus-visible:ring-2 active:bg-sus-button-yellowdark-3 focus-visible:bg-sus-button-yellowdark-1 focus-visible:ring-sus-button-yellowdark-3\",\n cottonGreen:\n cotton +\n \"bg-sus-button-green-2 hover:bg-sus-button-green-1 hover:ring-sus-button-green-1/20 focus-visible:ring-2 active:bg-sus-button-green-3 focus-visible:bg-sus-button-green-1 focus-visible:ring-sus-button-green-3\",\n cottonBlue:\n cotton +\n \"bg-sus-button-blue-2 hover:bg-sus-button-blue-1 hover:ring-sus-button-blue-1/20 focus-visible:ring-2 active:bg-sus-button-blue-3 focus-visible:bg-sus-button-blue-1 focus-visible:ring-sus-button-blue-3\",\n cottonRed:\n cotton +\n \"bg-sus-button-red-2 hover:bg-sus-button-red-1 hover:ring-sus-button-red-1/20 focus-visible:ring-2 active:bg-sus-button-red-3 focus-visible:bg-sus-button-red-1 focus-visible:ring-sus-button-red-3\",\n cottonAccent:\n cotton +\n \"bg-sus-button-accent-2 hover:bg-sus-button-accent-1 hover:ring-sus-button-accent-1/20 focus-visible:ring-2 active:bg-sus-button-accent-3 focus-visible:bg-sus-button-accent-1 focus-visible:ring-sus-button-accent-3\",\n cottonYellow:\n cotton +\n \"bg-sus-button-yellow-2 hover:bg-sus-button-yellow-1 hover:ring-sus-button-yellow-1/20 focus-visible:ring-2 active:bg-sus-button-yellow-3 focus-visible:bg-sus-button-yellow-1 focus-visible:ring-sus-button-yellow-3\",\n cottonBlack:\n cotton +\n \"bg-sus-button-black-2 hover:bg-sus-button-black-1 hover:ring-sus-button-black-1/20 focus-visible:ring-2 active:bg-sus-button-black-3 focus-visible:bg-sus-button-black-1 focus-visible:ring-sus-button-black-3\",\n defaultOutline:\n \"border border-sus-primary-green-9 text-black hover:border-sus-primary-green-8 hover:text-sus-primary-green-8 active:border-sus-primary-green-9 active:text-black focus-visible:border-sus-primary-green-10 focus-visible:text-sus-primary-green-10\",\n destructiveOutline:\n \"border border-sus-button-red-2 text-black hover:border-sus-button-red-1 hover:text-sus-button-red-1 active:border-sus-button-red-2 active:text-black focus-visible:border-sus-button-red-3 focus-visible:text-sus-button-red-3\",\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 defaultSelect: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2\"\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: \"\",\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 { 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\";\nimport { SuiCalendarIcon2 } from \"../icons\";\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 = \"Select date\",\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 \"group relative flex! w-full items-center justify-between rounded-md bg-white! pl-4 text-left text-sm font-medium shadow-none border border-sus-secondary-gray-8 focus-visible:ring-0 focus-visible:ring-offset-0 data-[state=open]:border-black disabled:bg-sus-secondary-gray-3!\",\n \"min-h-9\",\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\n className={cn(\n \"flex-1 truncate font-light\",\n disabled && parsedValue && \"text-foreground\"\n )}\n >\n {buttonLabel}\n </span>\n <span className=\"flex items-center gap-2 text-black group-disabled:text-sus-secondary-gray-8 shrink-0\">\n <SuiCalendarIcon2 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 data-testid=\"advsearch-date-value\"\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 data-testid=\"advsearch-dropdown-value\"\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} className={cn(opt.labelStyle)}>\n {opt.decorator}\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 multiple?: boolean;\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 multiple = false\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n const [inputFocused, setInputFocused] = useState(false);\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 const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(-1);\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 = multiple && value.length >= maxTags;\n const selectedValue = !multiple && value.length > 0 ? value[0] : undefined;\n const selectedLabel = selectedValue ? (optionLabels[selectedValue] ?? selectedValue) : undefined;\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 (multiple) {\n if (value.length >= maxTags) return;\n onChange([...value, trimmed]);\n } else {\n onChange([trimmed]);\n }\n setInputValue(\"\");\n // setSuggestions([]);\n // setIsDropdownOpen(false);\n },\n [value, onChange, maxTags, multiple]\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 setIsDropdownOpen(false);\n setInputFocused(false);\n },\n [value, onChange]\n );\n\n const handleClear = useCallback(() => {\n setInputValue(\"\");\n setSuggestions([]);\n setInputFocused(false);\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 if (multiple) {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, 100);\n } else {\n inputRef.current?.blur();\n setInputFocused(false);\n setIsDropdownOpen(false);\n }\n inputRef.current!.value = \"\";\n },\n [addTag, multiple, upsertOptionLabels]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\" && suggestions.length > 0) {\n e.preventDefault();\n setIsDropdownOpen(true);\n setActiveSuggestionIndex((prev) => Math.min(prev + 1, suggestions.length - 1));\n return;\n }\n\n if (e.key === \"ArrowUp\" && suggestions.length > 0) {\n e.preventDefault();\n setActiveSuggestionIndex((prev) => Math.max(prev - 1, 0));\n return;\n }\n\n if (e.key === \"Enter\" && activeSuggestionIndex >= 0 && suggestions[activeSuggestionIndex]) {\n e.preventDefault();\n handleSuggestionSelect(suggestions[activeSuggestionIndex]);\n return;\n }\n\n if (e.key === \",\" || e.key === \"Enter\") {\n e.preventDefault();\n }\n\n if (e.key === \"Backspace\" && !inputValue) {\n removeTag(value.length - 1);\n }\n },\n [suggestions, activeSuggestionIndex, handleSuggestionSelect, inputValue, removeTag, value.length]\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 || !inputFocused) return;\n\n if (fetchDelayRef.current) {\n clearTimeout(fetchDelayRef.current);\n }\n\n const query = inputValue.trim();\n\n setLoading(true);\n setFetchError(null);\n setIsDropdownOpen(true);\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, inputFocused]);\n\n useEffect(() => {\n if (!fetchSuggestions) return;\n if (value.length === 0) return;\n\n const unresolvedValues = value.filter((v) => !optionLabels[v]);\n if (unresolvedValues.length === 0) return;\n\n fetchSuggestions(\"\")\n .then((options) => {\n upsertOptionLabels(options);\n })\n .catch(() => {});\n }, [value, fetchSuggestions, optionLabels, 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 setInputFocused(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, value]);\n\n useEffect(() => {\n if (suggestions.length === 0) {\n setActiveSuggestionIndex(-1);\n return;\n }\n setActiveSuggestionIndex((prev) => {\n if (prev === -1) return 0;\n if (prev >= suggestions.length) return suggestions.length - 1;\n return prev;\n });\n }, [suggestions]);\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-20 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, index) => {\n const disabled = value.includes(option.value) || (multiple && 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\n ${\n disabled ? \"cursor-not-allowed text-gray-400\"\n : index === activeSuggestionIndex ? \"bg-gray-100 text-gray-900\"\n : \"hover:bg-gray-100 text-gray-700\"\n }`}\n onClick={() => handleSuggestionSelect(option)}\n disabled={disabled}\n aria-selected={index === activeSuggestionIndex}\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 truncate\" ref={containerRef}>\n <div\n className={`flex min-h-9 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 {multiple &&\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-sus-secondary-gray-3 bg-sus-secondary-gray-2 px-2 py-1 my-1 text-sm text-inherit max-w-full wrap-break-word\"\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 aria-label={`Remove ${label}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n );\n })}\n {!multiple && selectedLabel && (\n <span className=\"truncate text-sm text-gray-700 max-w-full\">{selectedLabel}</span>\n )}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n setInputFocused(true);\n }}\n hidden={!multiple && selectedLabel !== undefined} // single select --> hide input\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={multiple && limitReached}\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 data-testid=\"advsearch-lookup-list\"\n multiple\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 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 data-testid=\"advsearch-btn-add\"\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 data-testid=\"advsearch-btn-remove\"\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; lookupFieldName?: string }\n) => {\n const lookup = options?.lookupFieldName ? options.lookupFieldName : \"value\";\n return options?.multiTableSearch ?\n {\n some: {\n [lookup]: { ...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 if (Array.isArray(row.value)) {\n return {};\n }\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 const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } as const;\n\n switch (row.operator) {\n case \"on\":\n return {\n [row.fieldName]: helper(\n { gte: dayStart.toISOString(), lt: dayEnd.toISOString() },\n sharedOptions\n )\n };\n case \"after\":\n return {\n [row.fieldName]: helper(\n { gte: dayEnd.toISOString() }, // use end of the day time\n sharedOptions\n )\n };\n case \"before\":\n return {\n [row.fieldName]: helper({ lt: dayStart.toISOString() }, sharedOptions)\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 sharedOptions\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 if (Array.isArray(row.value)) {\n return {};\n }\n const month = parseMonth(row.value);\n const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } 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 const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } as const;\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: value }, sharedOptions)\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: value }, sharedOptions)\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: value }, sharedOptions)\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: value }, sharedOptions)\n };\n case \"equals\":\n return {\n [row.fieldName]: helper({ equals: value }, sharedOptions)\n };\n case \"notEquals\":\n return {\n NOT: {\n [row.fieldName]: helper({ equals: value }, sharedOptions)\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 const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } as const;\n switch (row.operator) {\n case \"contains\":\n return {\n [row.fieldName]: helper(\n { contains: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\n )\n };\n case \"equals\":\n return {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n ...sharedOptions,\n insensitive: false\n }\n )\n };\n case \"beginsWith\":\n return {\n [row.fieldName]: helper(\n { startsWith: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\n )\n };\n case \"endsWith\":\n return {\n [row.fieldName]: helper(\n { endsWith: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\n )\n };\n case \"notEquals\":\n return {\n NOT: {\n [row.fieldName]: helper(\n { equals: row.value },\n {\n ...sharedOptions,\n insensitive: false\n }\n )\n }\n };\n case \"notBeginsWith\":\n return {\n NOT: {\n [row.fieldName]: helper(\n { startsWith: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\n )\n }\n };\n case \"notEndsWith\":\n return {\n NOT: {\n [row.fieldName]: helper(\n { endsWith: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\n )\n }\n };\n case \"notContains\":\n return {\n NOT: {\n [row.fieldName]: helper(\n { contains: row.value },\n {\n ...sharedOptions,\n insensitive: true\n }\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 (Array.isArray(row.value)) {\n return {};\n }\n if (!regex.test(row.value)) {\n return { [row.fieldName]: {} };\n }\n const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } as const;\n switch (row.operator) {\n case \"gt\":\n return {\n [row.fieldName]: helper({ gt: row.value }, sharedOptions)\n };\n case \"gte\":\n return {\n [row.fieldName]: helper({ gte: row.value }, sharedOptions)\n };\n case \"lt\":\n return {\n [row.fieldName]: helper({ lt: row.value }, sharedOptions)\n };\n case \"lte\":\n return {\n [row.fieldName]: helper({ lte: row.value }, sharedOptions)\n };\n case \"equals\":\n return {\n [row.fieldName]: helper({ equals: row.value }, sharedOptions)\n };\n case \"notEquals\":\n return {\n NOT: {\n [row.fieldName]: helper({ equals: row.value }, sharedOptions)\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 { 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\nexport const FILTER_FIELD_MAP: Record<string, string> = {\n timezone: \"timezoneId\",\n decimalSeparator: \"decimalSeparatorId\",\n country: \"countryId\",\n currency: \"currencyId\"\n};\n\nexport function transformFilterKeys(obj: any, fieldMap: Record<string, string> = FILTER_FIELD_MAP): any {\n if (Array.isArray(obj)) {\n return obj.map((item) => transformFilterKeys(item, fieldMap));\n }\n\n if (obj && typeof obj === \"object\") {\n const newObj: any = {};\n\n for (const key in obj) {\n const mappedKey = fieldMap[key] ?? key;\n newObj[mappedKey] = transformFilterKeys(obj[key], fieldMap);\n }\n\n return newObj;\n }\n\n return obj;\n}\n","import { isValid, parseISO } from \"date-fns\";\n\nexport interface ValidationResult {\n valid: boolean;\n message?: string;\n}\n\nexport const sanitizeInput = (val: string | any[] | undefined): string | any[] | undefined => {\n if (!val) return val;\n if (Array.isArray(val)) {\n return val.map((v) => sanitizeInput(v) as string | undefined); // sanitize each elements in array\n }\n if (val.includes(\"\\n\") || val.includes(\"\\r\") || /[\\u2028\\u2029]/u.test(val))\n return \"__INVALID_NEWLINE__\";\n if (/\\\\\\\\/.test(val)) return \"__INVALID_ESCAPE__\";\n if (/\\\\(n|t|r|b|f|u[0-9a-fA-F]{4})/.test(val)) return \"__INVALID_ESCAPE__\";\n if (/\\p{Cf}/u.test(val)) return \"__INVALID_UNICODE_WHITESPACE__\";\n if (/[\\u00A0\\u1680\\u180E\\u202F\\u205F\\u3000]/u.test(val)) return \"__INVALID_UNICODE_WHITESPACE__\";\n const trimmed = val.trim();\n if (/^\\{.*\\}$/s.test(trimmed) || /^\\[.*\\]$/s.test(trimmed)) return \"__INVALID_JSON_LITERAL__\";\n if (/\\\\\\{/.test(val) || /\\\\\\}/.test(val)) return \"__INVALID_JSON_ESCAPE__\";\n if (/[%*~^]/.test(trimmed)) return \"__INVALID_WILDCARD__\";\n if (/[%><={}\\\\[\\]\"']/u.test(trimmed)) return \"__INVALID_CHAR__\";\n if (/\\p{Cc}/u.test(val)) return \"__INVALID_CONTROL_CHAR__\";\n return trimmed.replace(/\\s+/g, \" \");\n};\n\nconst numericTypes = [\"number\", \"integer\", \"decimal\"];\nconst dateTypes = [\"date\", \"datemonth\"];\n\nexport const validateByFieldType = (\n value: string | any[] | undefined,\n fieldType: string\n): ValidationResult => {\n if (!value) return { valid: true };\n if (Array.isArray(value)) {\n return { valid: true }; // skip checking if it is array\n }\n if (numericTypes.includes(fieldType)) {\n if (!/^\\d+(\\.\\d+)?$/.test(value)) {\n return { valid: false, message: \"Please enter a valid number.\" };\n }\n }\n\n if (fieldType === \"boolean\") {\n if (![\"true\", \"false\"].includes(value.toLowerCase())) {\n return { valid: false, message: \"Please enter a boolean value (true/false).\" };\n }\n }\n\n if (dateTypes.includes(fieldType)) {\n const normalized = fieldType === \"datemonth\" ? `${value}-01` : value;\n const parsed = parseISO(normalized);\n if (!isValid(parsed)) {\n return { valid: false, message: \"Invalid date format.\" };\n }\n }\n\n return { valid: true };\n};\n\nexport const parseRangeValue = (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","import React, { useMemo, useCallback } from \"react\";\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\";\nimport { FILTER_FIELD_MAP, transformFilterKeys } from \"../lib/utils\";\nimport { sanitizeInput, validateByFieldType } from \"../utils/advanceSearchUtils\";\nimport { parseISO, isValid, isAfter } from \"date-fns\";\n\nconst AdvanceSearch: React.FC<AdvanceSearchProps> = ({\n fields,\n portalId,\n iconColor = \"#ffffff\",\n limitRows = 4,\n onSearch,\n onClear,\n shortDateFormat,\n filterFieldMap = FILTER_FIELD_MAP\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\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 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 | any[], fieldType: string) => {\n if (!raw) return undefined;\n if (Array.isArray(raw)) return undefined; // skip if it's an array (array is not possible for datetime)\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 rows.forEach((r) => {\n const ops = operatorsForField(r.fieldName);\n if (!ops.length || !ops.includes(r.operator))\n operatorValidation[r.id] = \"Please select an operator.\";\n });\n setOperatorErrors(operatorValidation);\n if (Object.keys(operatorValidation).length > 0) return;\n\n const currentValues = getValues();\n let hasError = false;\n\n const processedRows = rows.map((r) => {\n const startField = `value_${r.id}` as `value_${string}`;\n const endField = `value2_${r.id}` as `value2_${string}`;\n let v1: string | any[] | undefined = currentValues[startField];\n let v2: string | any[] | undefined = currentValues[endField];\n\n const s1 = sanitizeInput(v1);\n if (\n (Array.isArray(s1) && s1.some((v) => v?.startsWith(\"__INVALID\"))) ||\n (typeof s1 === \"string\" && s1?.startsWith(\"__INVALID\"))\n ) {\n hasError = true;\n setError(startField, { type: \"validate\", message: \"Invalid input.\" });\n return null;\n }\n v1 = s1 || \"\";\n\n const valid1 = validateByFieldType(v1, r.fieldType);\n if (!valid1.valid) {\n hasError = true;\n setError(startField, { type: \"validate\", message: valid1.message });\n return null;\n }\n\n if (r.operator === \"between\") {\n const s2 = sanitizeInput(v2);\n if (\n (Array.isArray(s2) && s2.some((v) => v?.startsWith(\"__INVALID\"))) ||\n (typeof s2 === \"string\" && s2?.startsWith(\"__INVALID\"))\n ) {\n hasError = true;\n setError(endField, { type: \"validate\", message: \"Invalid input.\" });\n return null;\n }\n v2 = s2 || \"\";\n\n const valid2 = validateByFieldType(v2, r.fieldType);\n if (!valid2.valid) {\n hasError = true;\n setError(endField, { type: \"validate\", message: valid2.message });\n return null;\n }\n\n if (v1 && v2 && [\"date\", \"datemonth\"].includes(r.fieldType)) {\n const d1 = parseRangeValue(v1, r.fieldType);\n const d2 = parseRangeValue(v2, r.fieldType);\n if (d1 && d2 && isAfter(d1, d2)) {\n hasError = true;\n setError(startField, { type: \"validate\", message: \"Start value must be before end value.\" });\n setError(endField, { type: \"validate\", message: \"End value must be after start value.\" });\n return null;\n }\n }\n\n return { ...r, value: v1, value2: v2 };\n }\n\n return { ...r, value: v1 };\n });\n\n if (hasError) return;\n\n const cleanedRows = processedRows.filter(Boolean) as typeof rows;\n const param = {\n AND: cleanedRows.map((r) => getBuilder(r.fieldType).build(r)).filter(Boolean) as Record<\n string,\n unknown\n >[]\n };\n\n if (onSearch) onSearch(transformFilterKeys(param, filterFieldMap));\n }, [\n rows,\n operatorsForField,\n getValues,\n parseRangeValue,\n setError,\n setOperatorErrors,\n filterFieldMap,\n onSearch\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\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) => clearValue(row.id, which)}\n disableAdd={limitRows !== undefined && rows.length >= limitRows}\n />\n ))}\n </div>\n\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 data-testid=\"advsearch-btn-clear\"\n >\n Clear Search\n </Button>\n\n <Button\n type=\"submit\"\n className=\"w-full bg-sus-green-2 text-white hover:bg-[#2f7c21] md:w-auto md:min-w-[120px]\"\n data-testid=\"advsearch-btn-search\"\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 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none\",\n \"focus-visible:border-sus-primary-green-12\",\n \"disabled:cursor-not-allowed disabled:bg-sus-secondary-gray-3! disabled:border-sus-secondary-gray-5! disabled:text-sus-secondary-gray-8!\",\n \"aria-invalid:ring-sus-alert-negative-6! aria-invalid:border-sus-alert-negative-6! aria-invalid:bg-sus-alert-negative-1!\",\n \"bg-sus-primary-green-2 border-sus-primary-green-7 hover:border-sus-primary-green-9\",\n \"data-[state=checked]:bg-sus-primary-green-9 data-[state=checked]:border-sus-primary-green-9 data-[state=checked]:text-sus-primary-green-2 data-[state=checked]:hover:bg-sus-primary-green-10\",\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","import type { Table } from \"@tanstack/react-table\";\n\nexport 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\nexport function resetVisibleTableState(payload: {\n table: Table<any> | null;\n visibility: Record<string, boolean>;\n}) {\n const { table, visibility } = payload;\n if (!table) return;\n\n table.setColumnVisibility(visibility);\n const isVisible = (id: string) => payload.visibility?.[id] === true;\n const prevState = table.getState();\n table.setColumnFilters(prevState.columnFilters.filter((f) => isVisible(f.id)));\n table.setSorting(prevState.sorting.filter((s) => isVisible(s.id)));\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 * as React from \"react\";\n\nexport type UseControllableStateOptions<T = any> = {\n defaultValue: T;\n value?: T;\n};\n\nexport type UseControllableStateResult<T = any> = {\n value: T;\n setValue: (nextValue: T | ((prev: T) => T)) => void;\n isControlled: boolean;\n};\n\nconst useControllableState = <T = any>({\n defaultValue,\n value\n}: UseControllableStateOptions<T>): UseControllableStateResult<T> => {\n const isControlled = typeof value !== \"undefined\";\n\n const [internalValue, setInternalValue] = React.useState<T>(() => {\n return isControlled ? value : defaultValue;\n });\n\n React.useEffect(() => {\n if (!isControlled) return;\n setInternalValue(value);\n }, [isControlled, value]);\n\n const setValue = React.useCallback(\n (nextValue: T | ((prev: T) => T)) => {\n if (isControlled) return;\n setInternalValue(nextValue);\n },\n [isControlled]\n );\n\n return {\n value: isControlled ? value : internalValue,\n setValue,\n isControlled\n };\n};\n\nexport default useControllableState;\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\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 if (!showSorter) return;\n event.preventDefault();\n\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-sus-gray-5\": context?.column?.getIsSorted() === \"asc\",\n \"stroke-sus-gray-5/45\": context?.column?.getNextSortingOrder() === \"asc\" && hovering\n })}\n size={16}\n strokeWidth={3}\n />\n <ChevronDown\n className={cn(\"stroke-[#BBBBBB]\", {\n \"stroke-sus-gray-5\": context?.column?.getIsSorted() === \"desc\",\n \"stroke-sus-gray-5/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-sus-gray-2\", 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-0.5 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-0.5 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 & 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 { 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 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 if (!tableRef) return;\n tableRef.current = table;\n return () => {\n tableRef.current = null;\n };\n }, [tableRef, table]);\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 size={128} />}\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 size={128} />}\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 \"w-full sm:max-w-[360px] max-w-[calc(100%-2rem)] 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 translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-4 shadow-lg duration-200\",\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 className=\"text-sus-secondary-gray-8 size-5\" />\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-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"dialog-footer\" className={cn(\"flex flex-col-reverse gap-2\", className)} {...props} />\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","export const DIALOG_ALERT_I18N_SUBNAMESPACE = \"dialog_alert\";\nexport const i18nPrefix = `translation:${DIALOG_ALERT_I18N_SUBNAMESPACE}.`;\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, buttonVariants } from \"../button\";\nimport { DialogAlertProps, DialogVariant } from \"./types\";\nimport { i18nPrefix } from \"./lib/constants\";\nimport { VariantProps } from \"class-variance-authority\";\nimport { useTranslation } from \"react-i18next\";\n\ntype ButtonVariants = VariantProps<typeof buttonVariants>[\"variant\"];\n\nconst titleColorVariant: Record<DialogVariant, string> = {\n default: \"\",\n success: \"text-sus-button-green-3\",\n error: \"text-sus-button-red-3\",\n warning: \"text-sus-button-yellow-3\",\n confirm: \"text-sus-button-red-3\",\n \"confirm-green\": \"text-sus-button-red-3\"\n};\n\nconst dialogButtonVariantMap: Record<DialogVariant, ButtonVariants> = {\n default: \"default\",\n success: \"cottonGreen\",\n error: \"destructive\",\n warning: \"warning\",\n confirm: \"destructive\",\n \"confirm-green\": \"cottonGreen\"\n};\n\nexport function DialogAlert({\n open,\n onOpenChange,\n title,\n description,\n variant = \"default\",\n confirmText,\n cancelText = i18nPrefix + \"cancel\",\n onConfirm,\n onCancel,\n showCancel = true,\n align = \"end\",\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 let func = onConfirm;\n if (variant === \"success\" && showCancel === false) {\n func = onConfirm ?? onCancel;\n }\n func?.();\n onOpenChange(false);\n }, [onCancel, onConfirm, onOpenChange, showCancel, variant]);\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-2 ${alignClass}`}>\n {showCancel && (\n <Button variant=\"cancel\" onClick={handleCancel}>\n {t(cancelText)}\n </Button>\n )}\n {confirmText && (\n <Button variant={dialogButtonVariantMap[variant]} onClick={handleConfirm}>\n {t(confirmText)}\n </Button>\n )}\n </div>\n </DialogContent>\n </BaseDialog>\n );\n}\n","import { DialogAlertTemplates } from \"../types\";\n\nexport const DIALOG_ALERT_TEMPLATES: DialogAlertTemplates = {\n \"success.saved\": {\n variant: \"success\",\n title: \"success.saved.title\",\n description: \"success.saved.description\",\n confirmText: \"ok\",\n showCancel: false\n },\n \"success.deleted\": {\n variant: \"success\",\n title: \"success.deleted.title\",\n description: \"success.deleted.description\",\n confirmText: \"ok\",\n showCancel: false\n },\n \"success.removed\": {\n variant: \"success\",\n title: \"success.removed.title\",\n description: \"success.removed.description\",\n confirmText: \"ok\",\n showCancel: false\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 },\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 persistent: true\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.reset_form\": {\n variant: \"confirm\",\n title: \"confirm.reset_form.title\",\n description: \"confirm.reset_form.description\",\n confirmText: \"confirm.reset_form.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 { 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 ok: \"OK\",\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 perform this action.\",\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.reset_form\": {\n title: \"Confirmation\",\n description: \"Unsaved changes. If you continue, all changes will be lost.\",\n confirm_text: \"Reset\"\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","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport { defaultResource } from \"./default\";\n\nconst instance = i18n\n .createInstance({\n resources: defaultResource,\n lng: \"sharedui\",\n fallbackLng: \"sharedui\",\n defaultNS: \"translation\",\n interpolation: {\n escapeValue: false\n }\n })\n .use(initReactI18next);\n\ninstance.init();\n\nexport default instance;\n","import { DialogAlert } from \"../DialogAlert\";\nimport {\n DialogAlertI18nResource,\n DialogAlertProps,\n DialogAlertTemplateUnit,\n TemplateKeys\n} from \"../types\";\nimport { DIALOG_ALERT_TEMPLATES } from \"../templates\";\nimport { create } from \"zustand\";\nimport i18n from \"../locale/i18n\";\nimport { useEffect } from \"react\";\nimport { i18nPrefix } from \"../lib/constants\";\nimport { I18nextProvider } from \"react-i18next\";\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?: {\n template?: TemplateKeys;\n props?: OpenDialogAlert;\n isExclusive?: boolean;\n }) => void;\n closeDialogAlert: () => void;\n isExclusive: boolean;\n setIsExclusive: (val: boolean) => void;\n};\n\nconst useDialogAlertStore = create<State>((set, get) => ({\n open: false,\n dialogProps: {},\n setOpen: (open) => {\n if (!open && get().isExclusive) {\n // on closing dialog\n get().setIsExclusive(false);\n }\n set({ open });\n },\n setDialogProps: (data) => set({ dialogProps: data }),\n\n openDialogAlert: (payload) => {\n // if there is another dialog already open with isExclusive: true, do nothing\n if (get().isExclusive) {\n return;\n }\n let templateVal: DialogAlertTemplateUnit | undefined;\n if (payload?.template) {\n templateVal = { ...DIALOG_ALERT_TEMPLATES[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 get().setIsExclusive(payload?.isExclusive ?? false);\n },\n closeDialogAlert: () => {\n set({ open: false });\n },\n\n isExclusive: false,\n setIsExclusive: (isExclusive) => set({ isExclusive })\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 <I18nextProvider i18n={i18n}>\n {children}\n <DialogAlert open={open} onOpenChange={setOpen} {...dialogProps} />\n </I18nextProvider>\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 as any).isAxiosError) {\n let template: TemplateKeys = \"error.something_went_wrong\";\n let props = undefined;\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 props = { confirmText: undefined };\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, props });\n } else if (error instanceof Error) {\n openDialogAlert({ template: \"error.something_went_wrong\", props: { description: error.message } });\n } else {\n openDialogAlert({ template: \"error.something_went_wrong\" });\n }\n};\n\nexport const getDialogAlertControls = () => ({\n openDialogAlert,\n closeDialogAlert,\n openErrorDialogAlert\n});\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 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","export * from \"./accordion\";\nexport * from \"./button\";\nexport * from \"./checkbox\";\nexport * from \"./ClearButton\";\nexport * from \"./collapsible\";\nexport { default as ListContainer } from \"./container\";\nexport * from \"./container\";\nexport * from \"./datepicker\";\nexport * from \"./dialog\";\nexport * from \"./form\";\nexport { default as ListHeader } from \"./header\";\nexport * from \"./header\";\nexport * from \"./input\";\nexport * from \"./label\";\nexport * from \"./monthpicker\";\nexport * from \"./popover\";\nexport * from \"./radio\";\nexport * from \"./richtext\";\nexport * from \"./select\";\nexport * from \"./separator\";\nexport * from \"./sheet\";\nexport * from \"./sidebar\";\nexport * from \"./skeleton\";\nexport * from \"./spinner\";\nexport * from \"./switch\";\nexport * from \"./table\";\nexport * from \"./textarea\";\nexport * from \"./tooltip\";\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 \"@/components/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 {title}\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-0.5 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 { 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 \"group size-4 cursor-default rounded-full border border-black bg-white outline-none focus:shadow-black hover:ring-accent hover:ring-4 disabled:border-sus-secondary-gray-8 disabled:bg-sus-secondary-gray-3 disabled:pointer-events-none\",\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-2 after:rounded-full after:bg-black group-disabled:after:bg-sus-secondary-gray-8\" />\n </RadioGroupPrimitive.Item>\n {children}\n </div>\n );\n}\n\nexport function RadioLabel({\n children,\n htmlFor,\n className,\n disabled,\n ...props\n}: React.ComponentProps<\"label\"> & { disabled?: boolean }) {\n return (\n <label\n className={cn(\"pl-2 leading-none text-black\", className, disabled && \"text-sus-secondary-gray-8\")}\n htmlFor={htmlFor}\n {...props}\n >\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","\"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","// /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","\"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","\"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","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\";\nimport { Button } from \"@/components/ui/button\";\nimport LoadingOverlay from \"@/components/ui/LoadingOverlay\";\nimport { cn } from \"@/utils\";\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\";\nimport { FormMessage } from \"../ui\";\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 /* empty */\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 loading = false,\n className,\n editorClassName,\n errorMessage,\n tokenConfigs,\n operators = defaultOperators,\n operatorShortcuts = defaultOperatorShortcuts,\n onChange,\n onSelectSuggestion,\n field,\n fieldState,\n mode = \"edit\"\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) => lookup.set(config.prefix, config));\n return lookup;\n }, [normalizedConfigs]);\n\n const allowedOperators = useMemo(() => operators.map((operator) => operator.value), [operators]);\n const displayError = errorMessage ?? fieldState?.error?.message;\n const hasError = Boolean(displayError);\n const isEditorReadOnly = mode === \"display\";\n const isEditorDisabled = disabled || loading || isEditorReadOnly;\n\n const convertValueToContent = useCallback(\n (input?: string): string | JSONDoc => {\n if (!input) return \"\";\n const trimmed = input.trim();\n if (!trimmed) return \"\";\n const parsedJSON = tryParseJSON(trimmed);\n if (parsedJSON && parsedJSON.type === \"doc\") return parsedJSON;\n if (looksLikeHTML(trimmed)) return input;\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 isEditorDisabled && \"pointer-events-none\",\n editorClassName\n ),\n ...(loading ? { \"aria-busy\": \"true\" } : {})\n }\n }\n });\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!isEditorDisabled);\n }, [editor, isEditorDisabled]);\n\n useEffect(() => {\n if (!editor || resolvedContent === undefined) return;\n if (\n ignorePropValueRef.current &&\n typeof value === \"string\" &&\n value === lastEmittedValueRef.current\n ) {\n ignorePropValueRef.current = false;\n return;\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 aria-busy={loading}\n onFocus={() => {\n if (editor && !editor.isFocused) editor.chain().focus().run();\n }}\n >\n <EditorContent editor={editor} />\n {loading && (\n <LoadingOverlay\n fullscreen={false}\n className=\"rounded-lg bg-white/80 backdrop-blur-sm\"\n spinnerClassName=\"size-6 text-sus-blue-3\"\n />\n )}\n {!isEditorReadOnly && (\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 disabled={isEditorDisabled}\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 )}\n </div>\n\n {hasError && (\n <FormMessage className=\"text-xs text-destructive\" role=\"alert\">\n {displayError}\n </FormMessage>\n )}\n\n {mode === \"edit\" && (\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={isEditorDisabled}\n >\n {operator.label}\n </Button>\n ))}\n </div>\n )}\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 SyncColumnsStateOptions<TData> = {\n excludeColumns?: KeyOrString<TData>[];\n labelMap?: Partial<Record<KeyOrString<TData>, string>>;\n visibility?: Partial<Record<KeyOrString<TData>, boolean>>;\n ordering?: KeyOrString<TData>[];\n pinning?: {\n left?: KeyOrString<TData>[];\n };\n};\n\ntype SyncColumnsStateFn = <TData = RowData>(\n table: Table<TData>,\n options?: SyncColumnsStateOptions<TData>\n) => void;\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: SyncColumnsStateFn;\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?: SyncColumnsStateOptions<TData>\n ) => {\n const {\n excludeColumns = [],\n labelMap = {},\n visibility = {},\n ordering = [],\n pinning\n } = options || {};\n\n const { availableColumns, currentColumns } = get().extractColumns(table);\n const orderMap = new Map(ordering.map((columnId, index) => [columnId, index]));\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 .sort((a, b) => {\n const columnIdA = a.id as keyof TData;\n const columnIdB = b.id as keyof TData;\n\n const aOrder = orderMap.get(columnIdA) ?? Infinity;\n const bOrder = orderMap.get(columnIdB) ?? Infinity;\n\n return aOrder - bOrder;\n }),\n payload: {\n ordering: ordering as string[],\n pinning: {\n left: (pinning?.left || []) as string[]\n },\n visibility\n }\n });\n }\n })\n);\n\nexport default useGridSettingsStore;\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\";\nimport { cn } from \"@/utils\";\n\nimport DefaultContainer from \"@/components/ui/container\";\nimport DefaultHeader from \"@/components/ui/header\";\n\nexport type MainListContainerSlots = {\n Container?: React.ElementType<any>;\n Header?: React.ElementType<any>;\n};\n\nexport type MainListContainerClassNames = {\n root?: string;\n content?: string;\n};\n\nexport type MainListContainerProps = {\n title?: React.ReactNode;\n titleIcon?: React.ReactNode;\n\n isExpanded?: boolean;\n\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n\n children?: React.ReactNode;\n\n /** advanced */\n slots?: MainListContainerSlots;\n classNames?: MainListContainerClassNames;\n\n /** render prop for full control */\n renderHeader?: (props: {\n title?: React.ReactNode;\n titleIcon?: React.ReactNode;\n isExpanded?: boolean;\n onSettingClick?: () => void;\n onExpandClick?: () => void;\n }) => React.ReactNode;\n};\n\nconst MainListContainer: React.FC<MainListContainerProps> = ({\n title,\n titleIcon,\n isExpanded = true,\n onSettingClick,\n onExpandClick,\n children,\n slots,\n classNames,\n renderHeader\n}) => {\n const Container = slots?.Container ?? DefaultContainer;\n const Header = slots?.Header ?? DefaultHeader;\n\n return (\n <Container\n isLeftExpanded={isExpanded}\n className={cn(\"flex flex-col bg-white shadow-lg\", classNames?.root)}\n >\n {renderHeader ?\n renderHeader({\n title,\n titleIcon,\n isExpanded,\n onSettingClick,\n onExpandClick\n })\n : Header ?\n <Header\n title={title}\n titleIcon={titleIcon}\n isExpanded={isExpanded}\n onSettingClick={onSettingClick}\n onExpandClick={onExpandClick}\n />\n : null}\n\n <div className={cn(\"flex-1 flex flex-col relative min-h-0\", classNames?.content)}>{children}</div>\n </Container>\n );\n};\n\nexport default MainListContainer;\n","import React from \"react\";\nimport { IconProps } from \"../../components/icons/types\";\n\nconst InfoIcon = ({ size = \"1em\", className, ...props }: IconProps) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden\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=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 13.3333V10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 6.66602H10.0083\"\n stroke=\"currentColor\"\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 variant=\"cottonYellowDark\"\n disabled={mainButtonDisable}\n className={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","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 * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport DefaultContainer from \"@/components/ui/container\";\n\nexport type RightPanelContainerSlots = {\n Container?: React.ElementType<any>;\n Header?: React.ElementType<RightPanelContainerHeaderProps>;\n};\n\nexport type RightPanelContainerClassNames = {\n root?: string;\n body?: string;\n content?: string;\n header?: string;\n iconWrapper?: string;\n title?: string;\n subtitle?: string;\n};\n\nexport type RightPanelContainerHeaderProps = {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n icon?: React.ReactNode;\n classNames?: RightPanelContainerClassNames;\n rightActions?: React.ReactNode;\n};\n\nexport type RightPanelContainerProps = {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n icon?: React.ReactNode;\n rightActions?: React.ReactNode;\n children?: React.ReactNode;\n isExpanded?: boolean;\n className?: string;\n classNames?: RightPanelContainerClassNames;\n slots?: RightPanelContainerSlots;\n renderHeader?: (props: RightPanelContainerHeaderProps) => React.ReactNode;\n};\n\nconst DefaultHeader: React.FC<RightPanelContainerHeaderProps> = ({\n title,\n subtitle,\n icon,\n classNames,\n rightActions\n}) => (\n <div className={cn(\"flex items-start justify-between gap-3\", classNames?.header)}>\n <div className=\"flex items-center gap-3\">\n {icon ?\n <div\n className={cn(\n \"w-10 h-10 rounded-full bg-sus-green-50 flex items-center justify-center\",\n classNames?.iconWrapper\n )}\n >\n {icon}\n </div>\n : null}\n\n <div className=\"flex flex-col\">\n {subtitle ?\n <span className={cn(\"text-xs text-gray-500\", classNames?.subtitle)}>{subtitle}</span>\n : null}\n {title ?\n <span className={cn(\"text-lg font-semibold text-sus-green-1\", classNames?.title)}>\n {title}\n </span>\n : null}\n </div>\n </div>\n {rightActions ?\n <div className=\"flex items-center gap-2\">{rightActions}</div>\n : null}\n </div>\n);\n\nconst RightPanelContainer: React.FC<RightPanelContainerProps> = ({\n title,\n subtitle,\n icon,\n rightActions,\n children,\n isExpanded = false,\n className,\n classNames,\n slots,\n renderHeader\n}) => {\n const Container = slots?.Container ?? DefaultContainer;\n const Header = slots?.Header ?? DefaultHeader;\n\n return (\n <Container\n isLeftExpanded={isExpanded}\n className={cn(\n \"flex flex-col bg-white border border-slate-300 min-w-full\",\n className,\n classNames?.root\n )}\n >\n <div className={cn(\"flex-1 flex min-h-0 px-4 py-6 justify-center\", classNames?.body)}>\n <div className={cn(\"w-full max-w-3xl overflow-auto\", classNames?.content)}>\n {renderHeader ?\n renderHeader({ title, subtitle, icon, rightActions, classNames })\n : Header ?\n <Header\n title={title}\n subtitle={subtitle}\n icon={icon}\n rightActions={rightActions}\n classNames={classNames}\n />\n : null}\n\n {children}\n </div>\n </div>\n </Container>\n );\n};\n\nexport default RightPanelContainer;\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 * as React from \"react\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\n\ninterface MeasureTextProps {\n style?: React.CSSProperties;\n children: React.ReactNode;\n}\n\ninterface MeasureTextRef {\n isExceed: () => boolean;\n getHeight: () => number;\n}\n\ninterface Option {\n keepEmpty?: boolean;\n}\n\nconst REACT_ELEMENT_TYPE_18 = Symbol.for(\"react.element\");\nconst REACT_ELEMENT_TYPE_19 = Symbol.for(\"react.transitional.element\");\nconst REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n\nfunction isFragment(object: any) {\n return (\n // Base object type\n object &&\n typeof object === \"object\" &&\n // React Element type\n (object.$$typeof === REACT_ELEMENT_TYPE_18 || object.$$typeof === REACT_ELEMENT_TYPE_19) &&\n // React Fragment type\n object.type === REACT_FRAGMENT_TYPE\n );\n}\n\nconst isValidText = (val: any): val is string | number => [\"string\", \"number\"].includes(typeof val);\n\nfunction toArray(children: React.ReactNode, option: Option = {}): React.ReactElement[] {\n let ret: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child: any | any[]) => {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n\n return ret;\n}\n\nconst MeasureText = React.forwardRef<MeasureTextRef, MeasureTextProps>(({ style, children }, ref) => {\n const spanRef = React.useRef<HTMLSpanElement>(null);\n\n React.useImperativeHandle(ref, () => ({\n isExceed: () => {\n const span = spanRef.current!;\n return span.scrollHeight > span.clientHeight;\n },\n getHeight: () => spanRef.current!.clientHeight\n }));\n\n return (\n <span\n aria-hidden\n ref={spanRef}\n style={{\n position: \"fixed\",\n display: \"block\",\n left: 0,\n top: 0,\n pointerEvents: \"none\",\n ...style\n }}\n >\n {children}\n </span>\n );\n});\n\nconst getNodesLen = (nodeList: React.ReactElement[]) =>\n nodeList.reduce((totalLen, node) => totalLen + (isValidText(node) ? String(node).length : 1), 0);\n\nfunction sliceNodes(nodeList: React.ReactElement[], len: number) {\n let currLen = 0;\n const currentNodeList: React.ReactNode[] = [];\n\n for (let i = 0; i < nodeList.length; i += 1) {\n // Match to return\n if (currLen === len) {\n return currentNodeList;\n }\n\n const node = nodeList[i];\n const canCut = isValidText(node);\n const nodeLen = canCut ? String(node).length : 1;\n const nextLen = currLen + nodeLen;\n\n // Exceed but current not which means we need cut this\n // This will not happen on validate ReactElement\n if (nextLen > len) {\n const restLen = len - currLen;\n currentNodeList.push(String(node).slice(0, restLen));\n return currentNodeList;\n }\n\n currentNodeList.push(node);\n currLen = nextLen;\n }\n\n return nodeList;\n}\n\nexport interface EllipsisProps {\n enableMeasure?: boolean;\n text?: React.ReactNode;\n width: number;\n rows: number;\n children: (\n cutChildren: React.ReactNode[],\n /** Tell current `text` is exceed the `rows` which can be ellipsis */\n canEllipsis: boolean\n ) => React.ReactNode;\n onEllipsis: (isEllipsis: boolean) => void;\n expanded: boolean;\n /**\n * Mark for misc update. Which will not affect ellipsis content length.\n * e.g. tooltip content update.\n */\n miscDeps: any[];\n}\n\n// Measure for the `text` is exceed the `rows` or not\nconst STATUS_MEASURE_NONE = 0;\nconst STATUS_MEASURE_PREPARE = 1;\nconst STATUS_MEASURE_START = 2;\nconst STATUS_MEASURE_NEED_ELLIPSIS = 3;\nconst STATUS_MEASURE_NO_NEED_ELLIPSIS = 4;\n\nconst lineClipStyle: React.CSSProperties = {\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitBoxOrient: \"vertical\"\n};\n\nexport default function EllipsisMeasure(props: EllipsisProps) {\n const { enableMeasure, width, text, children, rows, expanded, miscDeps, onEllipsis } = props;\n\n const nodeList = React.useMemo(() => toArray(text), [text]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const nodeLen = React.useMemo(() => getNodesLen(nodeList), [text]);\n\n // ========================= Full Content =========================\n // Used for measure only, which means it's always render as no need ellipsis\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const fullContent = React.useMemo(() => children(nodeList, false), [text]);\n\n // ========================= Cut Content ==========================\n const [ellipsisCutIndex, setEllipsisCutIndex] = React.useState<[number, number] | null>(null);\n const cutMidRef = React.useRef<MeasureTextRef>(null);\n\n // ========================= NeedEllipsis =========================\n const measureWhiteSpaceRef = React.useRef<HTMLElement>(null);\n const needEllipsisRef = React.useRef<MeasureTextRef>(null);\n // Measure for `rows-1` height, to avoid operation exceed the line height\n const descRowsEllipsisRef = React.useRef<MeasureTextRef>(null);\n const symbolRowEllipsisRef = React.useRef<MeasureTextRef>(null);\n\n const [canEllipsis, setCanEllipsis] = React.useState(false);\n const [needEllipsis, setNeedEllipsis] = React.useState(STATUS_MEASURE_NONE);\n const [ellipsisHeight, setEllipsisHeight] = React.useState(0);\n const [parentWhiteSpace, setParentWhiteSpace] = React.useState<\n React.CSSProperties[\"whiteSpace\"] | null\n >(null);\n\n // Trigger start measure\n useIsomorphicLayoutEffect(() => {\n if (enableMeasure && width && nodeLen) {\n setNeedEllipsis(STATUS_MEASURE_PREPARE);\n } else {\n setNeedEllipsis(STATUS_MEASURE_NONE);\n }\n }, [width, text, rows, enableMeasure, nodeList]);\n\n // Measure process\n useIsomorphicLayoutEffect(() => {\n if (needEllipsis === STATUS_MEASURE_PREPARE) {\n setNeedEllipsis(STATUS_MEASURE_START);\n\n // Parent ref `white-space`\n const nextWhiteSpace =\n measureWhiteSpaceRef.current && getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;\n setParentWhiteSpace(nextWhiteSpace);\n } else if (needEllipsis === STATUS_MEASURE_START) {\n const isOverflow = !!needEllipsisRef.current?.isExceed();\n\n setNeedEllipsis(isOverflow ? STATUS_MEASURE_NEED_ELLIPSIS : STATUS_MEASURE_NO_NEED_ELLIPSIS);\n setEllipsisCutIndex(isOverflow ? [0, nodeLen] : null);\n setCanEllipsis(isOverflow);\n\n // Get the basic height of ellipsis rows\n const baseRowsEllipsisHeight = needEllipsisRef.current?.getHeight() || 0;\n\n // Get the height of `rows - 1` + symbol height\n const descRowsEllipsisHeight = rows === 1 ? 0 : descRowsEllipsisRef.current?.getHeight() || 0;\n const symbolRowEllipsisHeight = symbolRowEllipsisRef.current?.getHeight() || 0;\n const maxRowsHeight = Math.max(\n baseRowsEllipsisHeight,\n // height of rows with ellipsis\n descRowsEllipsisHeight + symbolRowEllipsisHeight\n );\n\n setEllipsisHeight(maxRowsHeight + 1);\n\n onEllipsis(isOverflow);\n }\n }, [needEllipsis]);\n\n // ========================= Cut Measure ==========================\n const cutMidIndex = ellipsisCutIndex ? Math.ceil((ellipsisCutIndex[0] + ellipsisCutIndex[1]) / 2) : 0;\n\n useIsomorphicLayoutEffect(() => {\n const [minIndex, maxIndex] = ellipsisCutIndex || [0, 0];\n if (minIndex !== maxIndex) {\n const midHeight = cutMidRef.current?.getHeight() || 0;\n\n const isOverflow = midHeight > ellipsisHeight;\n let targetMidIndex = cutMidIndex;\n if (maxIndex - minIndex === 1) {\n targetMidIndex = isOverflow ? minIndex : maxIndex;\n }\n setEllipsisCutIndex(isOverflow ? [minIndex, targetMidIndex] : [targetMidIndex, maxIndex]);\n }\n }, [ellipsisCutIndex, cutMidIndex]);\n\n // ========================= Text Content =========================\n const finalContent = React.useMemo(() => {\n // Skip everything if `enableMeasure` is disabled\n if (!enableMeasure) {\n return children(nodeList, false);\n }\n\n if (\n needEllipsis !== STATUS_MEASURE_NEED_ELLIPSIS ||\n !ellipsisCutIndex ||\n ellipsisCutIndex[0] !== ellipsisCutIndex[1]\n ) {\n const content = children(nodeList, false);\n // Limit the max line count to avoid scrollbar blink unless no need ellipsis\n // https://github.com/ant-design/ant-design/issues/42958\n if ([STATUS_MEASURE_NO_NEED_ELLIPSIS, STATUS_MEASURE_NONE].includes(needEllipsis)) {\n return content;\n }\n return (\n <span\n style={{\n ...lineClipStyle,\n WebkitLineClamp: rows\n }}\n >\n {content}\n </span>\n );\n }\n\n return children(expanded ? nodeList : sliceNodes(nodeList, ellipsisCutIndex[0]), canEllipsis);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [expanded, needEllipsis, ellipsisCutIndex, nodeList, ...miscDeps]);\n\n // ============================ Render ============================\n const measureStyle: React.CSSProperties = {\n width,\n margin: 0,\n padding: 0,\n whiteSpace: parentWhiteSpace === \"nowrap\" ? \"normal\" : \"inherit\"\n };\n\n return (\n <>\n {/* Final show content */}\n {finalContent}\n\n {/* Measure if current content is exceed the rows */}\n {needEllipsis === STATUS_MEASURE_START && (\n <>\n {/** With `rows` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: rows\n }}\n ref={needEllipsisRef}\n >\n {fullContent}\n </MeasureText>\n\n {/** With `rows - 1` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: rows - 1\n }}\n ref={descRowsEllipsisRef}\n >\n {fullContent}\n </MeasureText>\n\n {/** With `rows - 1` */}\n <MeasureText\n style={{\n ...measureStyle,\n ...lineClipStyle,\n WebkitLineClamp: 1\n }}\n ref={symbolRowEllipsisRef}\n >\n {children([], true)}\n </MeasureText>\n </>\n )}\n\n {/* Real size overflow measure */}\n {needEllipsis === STATUS_MEASURE_NEED_ELLIPSIS &&\n ellipsisCutIndex &&\n ellipsisCutIndex[0] !== ellipsisCutIndex[1] && (\n <MeasureText\n style={{\n ...measureStyle,\n top: 400\n }}\n ref={cutMidRef}\n >\n {children(sliceNodes(nodeList, cutMidIndex), true)}\n </MeasureText>\n )}\n\n {/* Measure white-space */}\n {needEllipsis === STATUS_MEASURE_PREPARE && (\n <span style={{ whiteSpace: \"inherit\" }} ref={measureWhiteSpaceRef} />\n )}\n </>\n );\n}\n","import * as React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn } from \"@/utils\";\nimport { useIsomorphicLayoutEffect } from \"@/hooks\";\nimport EllipsisMeasure from \"./EllipsisMeasure\";\n\nexport type EllipsisConfig =\n | boolean\n | {\n content?: React.ReactNode;\n lineClamp?: number;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n }\n | number; // number = line-clamp-N\n\nexport type TruncatedProps = {\n className?: string;\n ellipsis?: EllipsisConfig;\n children: React.ReactNode;\n as?: keyof React.JSX.IntrinsicElements;\n style?: React.CSSProperties;\n tooltipProps?: Omit<React.ComponentProps<typeof Tooltip>, \"open\" | \"onOpenChange\"> & {\n disabled?: boolean;\n };\n tooltipContentProps?: Omit<React.ComponentProps<typeof TooltipContent>, \"children\">;\n};\n\nconst Truncated = ({\n children,\n className,\n ellipsis = true,\n as = \"p\",\n style,\n tooltipProps,\n tooltipContentProps\n}: TruncatedProps) => {\n const elementRef = React.useRef<HTMLElement | null>(null);\n const [open, setOpen] = React.useState(false);\n const [isTruncated, setIsTruncated] = React.useState(false);\n const [measureWidth, setMeasureWidth] = React.useState(0);\n\n const Comp = as as React.ElementType;\n const normalizedChildren = typeof children === \"string\" ? children.replace(/>/g, \">\\u200B\") : children;\n\n const lineClampLines =\n typeof ellipsis === \"number\" ? ellipsis\n : typeof ellipsis === \"object\" ? (ellipsis?.lineClamp ?? 3)\n : null;\n\n const enableMeasure = Boolean(ellipsis) && !tooltipProps?.disabled;\n\n useIsomorphicLayoutEffect(() => {\n const el = elementRef.current;\n if (!el) return;\n\n const updateWidth = () => {\n const rect = el.getBoundingClientRect();\n const width = el.clientWidth || el.offsetWidth || rect.width || 0;\n setMeasureWidth(width);\n };\n\n updateWidth();\n\n const resizeObserver = new ResizeObserver(() => requestAnimationFrame(updateWidth));\n resizeObserver.observe(el);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (!enableMeasure) {\n setIsTruncated(false);\n }\n }, [enableMeasure]);\n\n const truncationClass = React.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 = React.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 <EllipsisMeasure\n enableMeasure={enableMeasure}\n text={normalizedChildren}\n width={measureWidth}\n rows={lineClampLines ?? 1}\n expanded={false}\n miscDeps={[truncationClass]}\n onEllipsis={setIsTruncated}\n >\n {() => normalizedChildren}\n </EllipsisMeasure>\n </Comp>\n );\n\n let tooltipContent: React.ReactNode = normalizedChildren;\n\n if (typeof ellipsis === \"object\") {\n tooltipContent = ellipsis?.content ?? normalizedChildren;\n }\n\n const {\n className: tooltipContentClassName,\n arrowClassName: tooltipArrowClassName,\n side: tooltipContentSide,\n ...tooltipContentRest\n } = tooltipContentProps ?? {};\n\n const tooltipSide: \"top\" | \"bottom\" | \"left\" | \"right\" =\n (typeof ellipsis === \"object\" ? ellipsis?.side : undefined) ?? tooltipContentSide ?? \"top\";\n\n return (\n <Tooltip\n {...tooltipProps}\n open={tooltipProps?.disabled ? false : open}\n onOpenChange={(open) => {\n setOpen(isTruncated && open);\n }}\n >\n <TooltipTrigger asChild>{baseContent}</TooltipTrigger>\n <TooltipContent\n side={tooltipSide}\n className={cn(\n \"text-white bg-sus-secondary-gray-10 max-w-xs sm:max-w-md wrap-break-word shadow-lg\",\n tooltipContentClassName\n )}\n arrowClassName={cn(\"bg-sus-secondary-gray-10 fill-sus-secondary-gray-10\", tooltipArrowClassName)}\n {...tooltipContentRest}\n >\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default Truncated;\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\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: \"sm\",\n fullWidth: true,\n appearance: \"filled\"\n }\n});\n\nexport type InputProps = Omit<InputPrimitiveProps, \"size\" | \"prefix\"> &\n VariantProps<typeof inputVariants> & {\n addonPrefix?: React.ReactNode;\n addonPrefixProps?: React.HTMLAttributes<HTMLSpanElement>;\n prefixInteractive?: boolean;\n addonSuffix?: React.ReactNode;\n addonSuffixProps?: 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 addonPrefix,\n addonPrefixProps,\n prefixInteractive,\n addonSuffix,\n addonSuffixProps,\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 inputProps = rest;\n\n const hasPrefix = Boolean(addonPrefix);\n const hasSuffix = Boolean(addonSuffix) || loading;\n const isFullWidth = fullWidth ?? true;\n\n const {\n \"aria-invalid\": ariaInvalidProp,\n \"aria-describedby\": ariaDescribedByProp,\n onChange: onChangeProp\n } = rest;\n\n const ariaInvalid = invalid ?? ariaInvalidProp;\n const messageId = React.useId();\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLInputElement>>(\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 } = addonPrefixProps ?? {};\n const { className: suffixClassName, ...suffixRest } = addonSuffixProps ?? {};\n const { className: validationMessageClassName, ...validationMessageRest } =\n validationMessageProps ?? {};\n\n const suffixContent = (\n <>\n {addonSuffix}\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 {addonPrefix}\n </span>\n )}\n\n {inputElement}\n\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 {inputWithAffixes}\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 { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport { Input, type InputProps } from \"./BaseInput\";\n\nexport type InputCustomInputProps = Omit<\n InputProps,\n \"type\" | \"value\" | \"defaultValue\" | \"onValueChange\" | \"prefix\" | \"suffix\"\n> & {\n type?: NumericFormatProps<InputProps>[\"type\"];\n value?: NumericFormatProps<InputProps>[\"value\"];\n defaultValue?: NumericFormatProps<InputProps>[\"defaultValue\"];\n};\n\nexport type InputNumberProps = NumericFormatProps<InputProps> & {\n customInputProps?: InputCustomInputProps;\n};\n\nconst InputNumber = ({ customInputProps, ...props }: InputNumberProps) => {\n return <NumericFormat customInput={Input} {...props} {...customInputProps} />;\n};\n\nexport default InputNumber;\n","import { cn } from \"@/utils\";\nimport { ActionButtonProps } from \"./types\";\n\nexport const ActionButton: React.FC<\n Omit<ActionButtonProps, \"requiredPermission\"> & { className?: string }\n> = ({ label, onPress, className }) => {\n const disabled = onPress === undefined;\n return (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n if (disabled) {\n return;\n }\n onPress();\n }}\n className={cn(\n \"action-menu-btn flex w-full items-center justify-start px-4 py-3 text-left\",\n \"hover:bg-sus-secondary-green-3 hover:not-disabled:text-sus-primary-green-9 text-gray-800\",\n disabled && \"cursor-not-allowed opacity-50 hover:bg-transparent text-gray-400\",\n className\n )}\n >\n {label}\n </button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { Popover, PopoverContent, PopoverTrigger, Button, PopoverArrow } from \"@/components\";\nimport { MoreVertical } from \"lucide-react\";\nimport { ActionMenuProps, PermissionString } from \"./types\";\nimport { ActionButton } from \"./actionButton\";\nimport { cn } from \"@/utils\";\n\nexport const ActionMenu: React.FC<ActionMenuProps> = ({\n id,\n buttons,\n checkPermissionFunc,\n triggerButtonIcon,\n triggerButtonClassName,\n actionMenuClassName,\n actionButtonClassName,\n separatorClassName\n}) => {\n const [open, setOpen] = useState(false);\n\n const isAllowed = useCallback(\n (requiredPermission?: PermissionString | string) => {\n if (!checkPermissionFunc || requiredPermission === undefined) {\n return true;\n }\n return checkPermissionFunc(requiredPermission as PermissionString);\n },\n [checkPermissionFunc]\n );\n\n const filteredButtons = useMemo(() => {\n return buttons.filter((btn) => isAllowed(btn.requiredPermission));\n }, [buttons, isAllowed]);\n\n if (buttons.length === 0) {\n return null;\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"p-1\", triggerButtonClassName)}\n onClick={(e) => {\n e.stopPropagation();\n setOpen((prev) => !prev);\n }}\n >\n {triggerButtonIcon ? triggerButtonIcon : <MoreVertical className=\"w-5 h-5 text-gray-600\" />}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className={cn(\n \"w-48 p-0 space-y-1 bg-sus-secondary-gray-2 border-none rounded-md overflow-hidden drop-shadow-[2px_0px_4px_rgba(0,0,0,0.1)]\",\n actionMenuClassName\n )}\n align=\"end\"\n >\n <PopoverArrow className=\"fill-sus-secondary-gray-2\" width={20} height={12} />\n {filteredButtons.map((btn, idx) => (\n <div key={btn.label} className=\"p-0 m-0\">\n <ActionButton\n className={actionButtonClassName}\n label={btn.label}\n onPress={\n btn.onPress ?\n () => {\n btn.onPress?.(id);\n setOpen(false);\n }\n : undefined\n }\n />\n {idx < filteredButtons.length - 1 && (\n <div className={cn(\"border-t border-sus-secondary-gray-3\", separatorClassName)} />\n )}\n </div>\n ))}\n </PopoverContent>\n </Popover>\n );\n};\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\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-background 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 outline-none 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","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"./BaseDialog\";\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className={cn(\"overflow-hidden p-0\", className)} showCloseButton={showCloseButton}>\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-sus-gray-1 flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn(\"py-6 text-center text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"hover:bg-[#EAF5EE] hover:text-sus-green-2 bg-white text-black relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\"text-muted-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator\n};\n","import React from \"react\";\nimport type { OptionData, VirtualizedCommandOption } from \"../VirtualizedCommand\";\n\nexport type VirtualizedCommandFieldNames<TData extends OptionData> = {\n label?: keyof TData;\n value?: keyof TData;\n};\n\nexport type UseFieldNamesOptions<TData extends OptionData> = {\n fieldNames?: VirtualizedCommandFieldNames<TData>;\n};\n\nexport type UseFieldNamesResult<TData extends OptionData> = {\n getLabelField: (\n option: VirtualizedCommandOption<TData>\n ) => VirtualizedCommandOption<TData>[\"label\" | keyof TData];\n getValueField: (\n option: VirtualizedCommandOption<TData>\n ) => VirtualizedCommandOption<TData>[\"value\" | keyof TData];\n};\n\nconst useFieldNames = <TData extends OptionData>({\n fieldNames\n}: UseFieldNamesOptions<TData>): UseFieldNamesResult<TData> => {\n const { label: labelFieldKey = \"label\", value: valueFieldKey = \"value\" } = fieldNames || {};\n\n const getLabelField = React.useCallback(\n (option: VirtualizedCommandOption<TData>) => {\n return option?.[labelFieldKey];\n },\n [labelFieldKey]\n );\n\n const getValueField = React.useCallback(\n (option: VirtualizedCommandOption<TData>) => {\n return option?.[valueFieldKey];\n },\n [valueFieldKey]\n );\n\n return {\n getLabelField,\n getValueField\n };\n};\n\nexport default useFieldNames;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"./Command\";\nimport { Check } from \"lucide-react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Truncated } from \"@/components/truncated\";\nimport useFieldNames from \"./hooks/useFieldNames\";\n\nexport type OptionData = Record<string, any>;\n\nexport type VirtualizedCommandOption<TData extends OptionData> = TData & {\n [key: string]: any;\n};\n\nexport type VirtualizedCommandFieldNames<TData extends OptionData> = {\n label?: keyof TData;\n value?: keyof TData;\n};\n\nexport type VirtualizedCommandProps<TData extends OptionData> = {\n name?: string;\n options?: VirtualizedCommandOption<TData>[];\n height?: number;\n searchPlaceholder?: string;\n fieldNames?: VirtualizedCommandFieldNames<TData>;\n emptyContent?: React.ReactNode;\n notFoundContent?: React.ReactNode;\n value?: string;\n showSearch?: boolean;\n disabledOption?: (option: VirtualizedCommandOption<TData>) => boolean;\n filterOption?: (search: string, option: VirtualizedCommandOption<TData>) => boolean;\n labelRender?: (option: VirtualizedCommandOption<TData>) => React.ReactNode;\n onSelect?: (selected: string, option: VirtualizedCommandOption<TData>) => void;\n onBlur?: (event: React.FocusEvent<HTMLDivElement, Element>) => void;\n onFocus?: (event: React.FocusEvent<HTMLDivElement, Element>) => void;\n};\n\nconst ROW_HEIGHT = 32;\nconst MIN_HEIGHT_EMPTY = 76;\n\nconst VirtualizedCommand = <TData extends OptionData>({\n name,\n height = 292,\n options,\n emptyContent = \"No data.\",\n searchPlaceholder,\n value,\n notFoundContent = \"No item found.\",\n showSearch = true,\n fieldNames,\n disabledOption,\n filterOption,\n onSelect,\n labelRender,\n onBlur,\n onFocus\n}: VirtualizedCommandProps<TData>) => {\n const { getLabelField, getValueField } = useFieldNames({ fieldNames });\n\n const internalOptions = React.useMemo(() => options ?? [], [options]);\n\n const [filteredOptions, setFilteredOptions] =\n React.useState<VirtualizedCommandOption<TData>[]>(internalOptions);\n const [focusedIndex, setFocusedIndex] = React.useState(0);\n const [isKeyboardNavActive, setIsKeyboardNavActive] = React.useState(false);\n\n const parentRef = React.useRef<HTMLDivElement | null>(null);\n\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => ROW_HEIGHT,\n overscan: 2\n });\n\n const virtualOptions = virtualizer.getVirtualItems();\n\n const dynamicHeight = React.useMemo(() => {\n const contentHeight = filteredOptions.length * ROW_HEIGHT;\n if (contentHeight <= 0) {\n return MIN_HEIGHT_EMPTY;\n }\n return Math.max(ROW_HEIGHT, Math.min(height, contentHeight));\n }, [filteredOptions.length, height]);\n\n const scrollToIndex = React.useCallback(\n (index: number) => {\n virtualizer.scrollToIndex(index, {\n align: \"center\"\n });\n },\n [virtualizer]\n );\n\n const handleSearch = React.useCallback(\n (search: string) => {\n setIsKeyboardNavActive(false);\n setFilteredOptions(\n internalOptions.filter((option) => {\n if (typeof filterOption === \"function\") {\n return filterOption(search, option);\n }\n\n const labelValue = getLabelField(option);\n return labelValue?.toString()?.toLowerCase()?.includes?.(search.toLowerCase());\n })\n );\n },\n [filterOption, getLabelField, internalOptions]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setIsKeyboardNavActive(true);\n setFocusedIndex((prev) => {\n const newIndex = prev === -1 ? 0 : Math.min(prev + 1, filteredOptions.length - 1);\n scrollToIndex(newIndex);\n return newIndex;\n });\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setIsKeyboardNavActive(true);\n setFocusedIndex((prev) => {\n const newIndex = prev === -1 ? filteredOptions.length - 1 : Math.max(prev - 1, 0);\n scrollToIndex(newIndex);\n return newIndex;\n });\n break;\n }\n case \"Enter\": {\n event.preventDefault();\n const option = filteredOptions?.[focusedIndex];\n if (option) {\n onSelect?.(getValueField(option), option);\n }\n break;\n }\n default:\n break;\n }\n },\n [filteredOptions, focusedIndex, getValueField, onSelect, scrollToIndex]\n );\n\n React.useEffect(() => {\n if (value) {\n const option = filteredOptions.find((option) => {\n const optionValue = getValueField(option);\n return optionValue === value;\n });\n if (option) {\n const index = filteredOptions.indexOf(option);\n setFocusedIndex(index);\n virtualizer.scrollToIndex(index, { align: \"center\" });\n }\n }\n }, [value, filteredOptions, virtualizer, getValueField]);\n\n return (\n <Command shouldFilter={false} onKeyDown={handleKeyDown} onFocus={onFocus} onBlur={onBlur}>\n {showSearch && (\n <CommandInput\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n data-testid={`command-input-${name}`}\n />\n )}\n <CommandList\n ref={parentRef}\n className=\"max-h-none\"\n style={{\n height: dynamicHeight,\n width: \"100%\",\n overflow: \"auto\"\n }}\n onMouseDown={() => setIsKeyboardNavActive(false)}\n onMouseMove={() => setIsKeyboardNavActive(false)}\n >\n <CommandEmpty data-testid={`command-item-empty-${name}`}>\n {internalOptions.length === 0 ? emptyContent : notFoundContent}\n </CommandEmpty>\n <CommandGroup\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\"\n }}\n >\n {virtualOptions.map((virtualOption, index) => {\n const option = filteredOptions[virtualOption.index];\n\n const optionLabel = getLabelField(option);\n const optionValue = getValueField(option);\n\n const labelRendered =\n labelRender ? labelRender(filteredOptions[virtualOption.index]) : optionLabel;\n\n return (\n <CommandItem\n key={optionValue}\n className={cn(\"absolute left-0 top-0 w-full flex items-center justify-between\", {\n \"bg-sus-secondary-green-3 text-sus-green-2\": focusedIndex === virtualOption.index,\n \"aria-selected:bg-white aria-selected:text-black pointer-events-none\":\n isKeyboardNavActive && focusedIndex !== virtualOption.index\n })}\n style={{\n height: `${virtualOption.size}px`,\n transform: `translateY(${virtualOption.start}px)`\n }}\n value={optionValue}\n onMouseEnter={() => !isKeyboardNavActive && setFocusedIndex(virtualOption.index)}\n onMouseLeave={() => !isKeyboardNavActive && setFocusedIndex(-1)}\n onSelect={(selectedValue) => onSelect?.(selectedValue, option)}\n disabled={disabledOption?.(option)}\n data-testid={`command-item-${index}-${optionValue}`}\n >\n {typeof labelRendered === \"string\" ?\n <Truncated tooltipProps={{ disabled: true }}>{labelRendered}</Truncated>\n : labelRendered}\n <Check\n className={cn(\n \"mr-2 size-2 hover:text-sus-green-2\",\n value === optionValue ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n );\n};\n\nexport default VirtualizedCommand;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { ChevronDown, X } from \"lucide-react\";\nimport VirtualizedCommand, {\n VirtualizedCommandOption,\n type OptionData,\n type VirtualizedCommandProps\n} from \"@/components/command/VirtualizedCommand\";\nimport useFieldNames from \"../command/hooks/useFieldNames\";\nimport { useControllableState } from \"@/hooks\";\nimport { Truncated } from \"../truncated\";\n\nexport type ComboboxProps<TData extends OptionData> = React.AriaAttributes &\n Omit<VirtualizedCommandProps<TData>, \"onFocus\" | \"onBlur\"> & {\n name?: string;\n dropdownName?: string;\n defaultValue?: string;\n className?: string;\n disabled?: boolean;\n placeholder?: string;\n showClear?: boolean;\n onBlur?: (event: React.FocusEvent<HTMLButtonElement, Element>) => void;\n onFocus?: (event: React.FocusEvent<HTMLButtonElement, Element>) => void;\n onClear?: (selected: string, option: VirtualizedCommandOption<TData>) => void;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n showValueWhenNoMatch?: boolean;\n // TODO: add loading state\n // isLoading?: boolean;\n // loadingOptionContent?: React.ReactNode;\n };\n\nconst ComboboxInner = <TData extends OptionData>(\n {\n name,\n dropdownName,\n defaultValue,\n className,\n options,\n value,\n disabled,\n placeholder,\n fieldNames,\n showClear = false,\n onSelect,\n onFocus,\n onBlur,\n disabledOption,\n emptyContent,\n filterOption,\n height,\n labelRender,\n notFoundContent,\n searchPlaceholder,\n showSearch,\n open,\n showValueWhenNoMatch,\n onOpenChange,\n onClear,\n ...props\n }: ComboboxProps<TData>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) => {\n const { getLabelField, getValueField } = useFieldNames({ fieldNames });\n\n const { value: openPopover, setValue: setOpenPopover } = useControllableState({\n defaultValue: false,\n value: open\n });\n\n const { value: selectedValue, setValue: setSelectedValue } = useControllableState({\n defaultValue,\n value\n });\n\n const currentSelectedOption = React.useMemo(() => {\n return options?.find((option) => {\n const optionValue = getValueField(option);\n return optionValue === selectedValue;\n });\n }, [getValueField, options, selectedValue]);\n\n const renderValue = React.useMemo<React.ReactNode>(() => {\n if (!selectedValue) return placeholder;\n\n if (currentSelectedOption) {\n return getLabelField(currentSelectedOption);\n }\n\n if (showValueWhenNoMatch) {\n return selectedValue;\n }\n\n // TODO: if added loading state update else case to display null\n\n return null;\n }, [currentSelectedOption, getLabelField, placeholder, selectedValue, showValueWhenNoMatch]);\n\n const handleSelect = React.useCallback<NonNullable<ComboboxProps<TData>[\"onSelect\"]>>(\n (selected, option) => {\n setSelectedValue(selected);\n setOpenPopover(false);\n\n if (typeof onSelect === \"function\") {\n onSelect(selected, option);\n }\n\n if (typeof onOpenChange === \"function\") {\n onOpenChange(false);\n }\n },\n [onOpenChange, onSelect, setOpenPopover, setSelectedValue]\n );\n\n const handleOpenPopover = React.useCallback(\n (isOpen: boolean) => {\n if (disabled) return;\n\n setOpenPopover(isOpen);\n\n if (typeof onOpenChange === \"function\") {\n onOpenChange(isOpen);\n }\n },\n [disabled, onOpenChange, setOpenPopover]\n );\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\n event.stopPropagation();\n setSelectedValue(undefined);\n if (typeof onClear === \"function\") {\n onClear(selectedValue!, currentSelectedOption!);\n }\n },\n [currentSelectedOption, onClear, selectedValue, setSelectedValue]\n );\n\n return (\n <Popover open={openPopover} onOpenChange={handleOpenPopover}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n name={name}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={openPopover}\n className={cn(\n \"flex items-center justify-between gap-2 rounded-md border bg-white px-3 h-9 text-sm whitespace-nowrap shadow-xs outline-none border-input\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\",\n \"data-[state=open]:border-ring\",\n \"transition-all\",\n className\n )}\n data-state={openPopover ? \"open\" : \"closed\"}\n disabled={disabled}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={`combobox-trigger-${name}`}\n {...props}\n >\n <Truncated\n className={cn(!selectedValue && \"text-sus-gray-1\")}\n tooltipProps={{ disabled: true }}\n >\n {renderValue}\n </Truncated>\n <div className=\"flex items-center gap-1\">\n <ChevronDown className=\"size-4 opacity-50\" />\n {showClear && selectedValue && (\n <span\n role=\"button\"\n className={cn(\n \"inline-flex items-center justify-center p-0 cursor-pointer transition-all size-[15px]\"\n )}\n onClick={handleClear}\n data-testid={`combobox-clear-button-${name}`}\n >\n <X className=\"size-[15px] bg-black text-white border border-black hover:bg-[#333] rounded-full\" />\n </span>\n )}\n </div>\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-(--radix-popper-anchor-width) min-w-(--radix-popper-anchor-width) max-w-(--radix-popper-available-width)\"\n align=\"start\"\n sideOffset={4}\n >\n <VirtualizedCommand\n name={dropdownName}\n emptyContent={emptyContent}\n height={height}\n notFoundContent={notFoundContent}\n searchPlaceholder={searchPlaceholder}\n showSearch={showSearch}\n fieldNames={fieldNames}\n options={options}\n value={selectedValue}\n disabledOption={disabledOption}\n filterOption={filterOption}\n labelRender={labelRender}\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Combobox = React.forwardRef(ComboboxInner) as <TData extends OptionData>(\n props: ComboboxProps<TData> & React.RefAttributes<HTMLButtonElement>\n) => React.ReactElement | null;\n\nexport default Combobox;\n","import { Tooltip, TooltipArrow, TooltipContent, TooltipTrigger } from \"@/components\";\nimport { cn } from \"@/utils\";\nimport { ComponentProps, useRef, useState } from \"react\";\n\nexport interface TruncatedMouseEnterDivProps {\n className?: string;\n tooltipProps?: Omit<ComponentProps<typeof Tooltip>, \"open\" | \"onOpenChange\"> & {\n disabled?: boolean;\n };\n tooltipContentProps?: Omit<ComponentProps<typeof TooltipContent>, \"children\">;\n arrowClassName?: string;\n value: string;\n}\n\nconst TruncatedMouseEnterDiv = ({\n value,\n className,\n tooltipProps,\n tooltipContentProps,\n arrowClassName\n}: TruncatedMouseEnterDivProps) => {\n const textRef = useRef<HTMLDivElement>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n\n const checkTruncation = () => {\n if (textRef.current) {\n const { scrollWidth, clientWidth } = textRef.current;\n setIsTruncated(scrollWidth > clientWidth);\n }\n };\n\n const {\n className: tooltipContentClassName,\n side: tooltipContentSide,\n sideOffset: tooltipContentSideOffset,\n ...tooltipContentRest\n } = tooltipContentProps ?? {};\n return (\n <Tooltip open={isTruncated} {...tooltipProps}>\n <TooltipTrigger asChild>\n <div\n ref={textRef}\n onMouseEnter={checkTruncation}\n onMouseLeave={() => setIsTruncated(false)}\n className={cn(\"truncate\", className)}\n >\n {value}\n </div>\n </TooltipTrigger>\n <TooltipContent\n side={tooltipContentSide ?? \"bottom\"}\n className={cn(\n \"text-white bg-sus-secondary-gray-10 max-w-xs sm:max-w-md wrap-break-word shadow-lg\",\n tooltipContentClassName\n )}\n sideOffset={tooltipContentSideOffset ?? 10}\n {...tooltipContentRest}\n >\n <TooltipArrow\n className={cn(\n \"bg-sus-secondary-gray-10 fill-sus-secondary-gray-10 z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px]\",\n arrowClassName\n )}\n />\n {value}\n </TooltipContent>\n </Tooltip>\n );\n};\n\nexport default TruncatedMouseEnterDiv;\n"]}
|